From dbf29eaf77af012e21bda055afd37ac757b91bc6 Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Wed, 15 Jul 2015 20:51:24 -0700 Subject: [PATCH 01/21] initial addition of sharpdx --- FFXIVAPP.Client/FFXIVAPP.Client.csproj | 28 ++++++++++++++++++ FFXIVAPP.Client/packages.config | 6 ++++ .../sharpdx_direct3d11_effects_x64.dll | Bin 0 -> 345600 bytes .../sharpdx_direct3d11_effects_x86.dll | Bin 0 -> 286208 bytes 4 files changed, 34 insertions(+) create mode 100644 FFXIVAPP.Client/sharpdx_direct3d11_effects_x64.dll create mode 100644 FFXIVAPP.Client/sharpdx_direct3d11_effects_x86.dll diff --git a/FFXIVAPP.Client/FFXIVAPP.Client.csproj b/FFXIVAPP.Client/FFXIVAPP.Client.csproj index e22d17f6..4130d9b3 100644 --- a/FFXIVAPP.Client/FFXIVAPP.Client.csproj +++ b/FFXIVAPP.Client/FFXIVAPP.Client.csproj @@ -31,6 +31,7 @@ 1.0.0.%2a false true + 8dc488e9 x86 @@ -93,6 +94,24 @@ False ..\..\ffxivapp-aio\packages\NLog.3.2.0.0\lib\net45\NLog.dll + + $(SharpDXPackageBinDir)\SharpDX.dll + + + $(SharpDXPackageBinDir)\SharpDX.D3DCompiler.dll + + + $(SharpDXPackageBinDir)\SharpDX.Direct3D11.dll + + + $(SharpDXPackageBinDir)\SharpDX.Direct3D11.Effects.dll + + + $(SharpDXPackageBinDir)\SharpDX.Direct3D9.dll + + + $(SharpDXPackageBinDir)\SharpDX.DXGI.dll + @@ -289,6 +308,8 @@ Code + + @@ -406,6 +427,13 @@ + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + 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 ~uH!G5);7OsT3t=s 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 literal 0 HcmV?d00001 diff --git a/distribution/EasyHook32Svc.exe b/distribution/EasyHook32Svc.exe new file mode 100644 index 0000000000000000000000000000000000000000..f60e6b6ec2f2bf9f61b8a4ca5b991049b5ce3e28 GIT binary patch literal 8192 zcmeHMdvugVmcP}nBn@flgz%8pM?h>I>AZOjk%T0KRvs}44ERu`@W8e z44SC;I1Ue$*+GW&jE?RZK|JCMAM1jS9N(ievpb+GQD!|3zE(%hs^iY+{;Ik=Gz2{U zw|n+Xb-r6ww{G3Kb?erxTa_iNcaoEcT=>5Gj_66`B2`QH{h$}kz6nqJ=&_vFCqBs* zzdo_0Q?rz~X>^!sObM&HZrDm2SImU2Xu49jtXYW}5gyFV^-fN)ZmcI-%$%eS&0U@z z?LBg^A#4cI2w<|4*zFa_6@1nB1W=GUl5(RYH-vdrZzUQg|IXy8s-Q)h z2foWhp_=G(wP zM4cBALHm@G98EM+qXNK0>HCv@`jIbgxO-pj&KYwG;!jyizA$^}mv{bWjcdUx#d8`; zU*7!8nhCpk+3eLtr~fje`RBz=BdRCfc5SWa58uxG=goodHjL`Kp=Z^}mdmRD*x2~y zvbyZkQ?7XO<2NpP)&2T=H~qTiz}jPvK5_D|Bi`~%eqBGbx$kd2b=Tun2Om6 zqo=Rxyz|HxLze#Pjh`tS{_DZkXQ(&S+PwOn{cGKer~Ur$Z@f2m|NGE;E@2OzHt%em z^2$To{xmi6*1J2L2fl2-bMK84c06=hL+d;D^&ZzZEdJol%5NUMzT=w{IsQ4DhOOVX zW%|jhyV>r)s6V=?@SB(a`snR>zw&gdVdSG^LW6N<0Bi0YX%vX2CdaoPn4QOht$Uq;k$_XCLB(TA+;lf` zbnrWEz%gFWh&@BhiC~Z=83bSj-k}pN&JB!4p~x{ZH;;`PxeZ3j^0WL|BXaKcX9du4 zdcMo7I@4VDVA zRrxNz3!KY7%rQ!Ua*W#J7`Z1_mM*)M!IpB%z#@1&-_-*e-o@NxASz5Qv~nc}9pbe1cp|2v0tI=p#STCfujUF|Sna zq2)9mwN11E)X&j=lxx_f%u7+W8t?`Qe<9&v36D$oX9-jm||CfYXog^ zt#Wy3yQ|ujM~}D!{$-b-KOy0_t_|Q{;udf&ppO>1_X9S%4`HkgfL^-Wz02*T!)VQ; z58Q%7zUOOq9!>Fl1U;uUBi55)B`&7v(3dFpvSBm}wH)X%2ldzJQfizidfYUsoAQC- zverk}qUNBERP9#OoYX68FVG!06kN1B*^lL?VJr`AleIp2 z7j0RzSJrN)(^Mi?m(kbg$;iXbz+tjnAmKO(hp~wyB%CT?sf2SRtdTGz;gu3zC7~*z z1~?ryA^P@6*eBtwfHUbXzCBDb1Qp`m}?i{y{_Giu@laHfN!}DvK)2_@I(6CHJ<#8xgTeKmLnh)x}Rb>G~GRk zCbDC4M4_LlOpIH~R=I!2N?Eu2IGe+624xNVrMsVn*irX?0RO7{6yV$FdnNnS{TUlB zr5#Qed;W&H^i`6tlvH8P(cSq_nI}u%%$w zHcYDHZHbOXI6j*e8y)qg3EVQh*;Y*(d3`qzCu}Y;Mm#-Mtr3eGI@fIo&Z88nHFR6m zbZ$~O-C|LlX2lJR9?~^iQ={57e4raG0W}&@LM~Nff@}%oRy#PUCVX&6Z&VQpQ$%us zTTYMNl+bN0#)B)kX+blhr3F2>y%6O5YQx-EW5bWP38_=6Y2xkCq#mipvUsd5+S8)h zQGSLnjjrQX*wo@e<%1hB%XY0JVX7Buj>T2IXK+6(NhA@r2RGCj@g7s_=sZtTi>XF< zOwF83TE^N$)J~Wg!l!4MQcOs#miqXTWO=)z!Zks(VJ#kJeP0i-AnijXE z)8uMI*xE`}vuo98v`r0fq$Il0Frsv2f+zTLi<>K9fgx;2S^^8~re$%CO{76T=$zi) z)WlZ}C zQpsDey#PK~+lkvHk6OV{JWTk6!nm2jo?)N#5@OW^Q7sf;^CT%P;?elPnn`L1`D*!0pX0K=+YadbQfAi zjjG*AV3lrKso9-I!mjUz{K5gjQ`zNZAT#0XK$jY0K~E@>o)FgG7V^P+z-zyd0{tY?xunDQMVP*cmuW zCaj@)oJ|&@gGFTEw~?Bui^8;)=8}SoK?7o6gW5n7rB+%(39^af^j$Zotseb2>1apW zmCI35(Ju;|0-OPOH82{=3bmtdBJV_QNsQoXQVi{)pN-r=DJXxrhy|(gd>q4)zY59( z#lf!u=W%UjFHG^|b49mrox5|<%|Gp}O3ZwC6Jp z^SJ@W`9yK7Qz7Q`y`wh1+lt$yK_W6HuY zM_;_Wd``#qC!T*kbX(SEi#8Q){iLbycPINg_xFE%YS`Q%ky9Jq-db~0@yx??$BonP zng7*}`vQ|bRa@Tuuwe6!>#do5_Ob)3){iN1HTDx#EH9qE2C~vu&96q1Vqd1t)zt)Xx>?jX89C_+k z2h>R{PxED8vFf5%M!)&+QH1S|p~ILnFEPyL?-}RcSaT)}}aJTU&??xepTPLF-8604ij3x|34a)NmC}kz36-t^!Y2k>N z5P{R=^2%A^NLd9hDhrpF7FCqbEGe2(URGJurmEpcMSIDdl5jiGMU1>89qo z=5VC0>G+3{x*ezXezRlCw)eziMtE*3G$cY$t2I5}R;x>IO>3dG%~bVpC%0PhG6y7P z5uDYUo+VV-YP4-=?VdfeRp)klcSR8*1wocc5{yUMgmC{yQzZ3vD8#!~loe4LoYHTM z$(D7shKYz=M$a;+=R6pRink2BKwm;iwJiM|{BLN$A>W7;qF(XDJRAAhQizR&x8Mul zJI{j`{d)yCD<${bPT+n~jpu6lK9VA+Bl;-WED`IS!mw80{9gxHkJqtg3gN|mDe57> zg~``@de-&Xx8j(~lAHgDf^?p|^(ODV8EhqQ422#maI%}=qsdb{gi~9@0U}K%7hnro z#aV8l{Y(rX3Fu+h5jYG6nQTyrD52v#oc2nZ61=S>e-(&8;HYRZ9@rQn0|OC8T#kVV z33&`rhe)_Z${0w*BO(S0A_6if0(@M`+MU9{UDA5|cY+O!T?ZNq)Iz5CK-?mDoc#H&;#-ebz}30oMF!G8s4O^lF?hXmg;$TACGrTooCNz9O_8WzQ{ zQX&EqeMB4;&6wr+D*Bitg6ti(46?+hmdhuif1y`iw@{gNSs`ebGamA(lfHo#(!TJc84ifDFOZ488f|* z?(uXYb$fQdb2WTn{fc#|!CF|DQB20RJ(%$i?f=;`hv&`jjztyRp2SU{s<1RzQmAkp zhZ^oLRfWr278cDeR1m1^5jBbjld8fVZWYeIEY~|vO+7>?V4z!7g$YxiYvIg`sa8=; z3!8>zwA)390_Lh#EZ9|AsKiuVYv-1o4pro6V5KMn%t8^wE4VG5B@rIJA(f7RrK)gA zPfa`?)o|^Fyg@Y{FDy=Su+4;JhxB&i2g*}cDEnb-D|JIn)qyejrUc~V5!`jU5Jz=z z>j!czPjgj}&hSY-LP6riyo*PbsDM?4suj|^jE&qZR1#WESiE{w6}GEUi>D?fnG~N# rnzZP}XURUVct8mtm{*)$AylNP4+hw#LxJ6yah4Az`a9w6#`iZN1f^wbfR|fQl0$Ng!N8yalluwADS1m*6ENfb9S8U3+E{)b{K5J?H$N zbI$+p=#W&t~lj6SST6cNmM)!3$x&xP8?!MusCD%@JI0kr9 zRX;bWr{bH-e(g^GfBl!G?r#ydMd!NP`S(iqo&0;1`vlK-zk4OV_JT?7@9=%|{G&Yo zFCGoLKS%r*k6x9E&rf|9@b5R5390zi{QHyZ%9c@^=@FI&1!2jZ{e%VCjydVHPGP)z zpn0GmY{NkFX_f?``waXzd9V_xM%XL}{diLES8&^mNkzI@ScI%bq4ej6aU*5rKg@!^ zzaW&pV-}WBot;);5vmeet-_nbDIxvOCRDlvVbPl=p&*^~W8bZ2VP)U+R+G?S45e>s zCOk>Gc8!AA>{nA=rm+)p^!evTvy;k~ELIi^!gFH)N1ei{_%>Hr3go7M$9+QAb(!^-Yj!FFWoDAq*9&BQk(0g+ zyZOHqG>f2se4R=*fb@&H+*DUC%_^^y0%11O8D_{qkJO!9T@*1ZA0BUMjQYb7fYxNM;qwWOm!iFjF`3cGv^_ z^UFv0=b=sf^Z0Z8^CzNiVfK8Se_n3JM}NMS|5oBxW>>GlQ0))vOFW%xu9!RoY5&nb znY}*iCsL_23xoHIg9Dy?ad6n<76;GvIK{!EJ$z1Lwmp1yg-%%)WVProhzS=(M#(YT z3mJeNv3n3pMA5Jub3Dc&_jxK24achaS9dL;)SCE3krBwg`lQ0M5KCT$GnR50!}_b_G_k8A$~cA0J|S_0}-! z4zWE*%crza$D?89*e=;W%b|$kk;rt}lty_-G^Vq|zCDau6)9{+M+v&qvkWWTc zk-?b)CZo~P5L@66u^UU}I{l3h+o!*UNeOuDs6nXYHJ}0koyK$^nI=c?py8wu`loW$ zXDdOnWM=z0$QI2g5py7TK9!_WlV#TJjc;)x`Rk{fsy(F$&_A{4&PzdX#F~An0>ki? zV_{Fe?uvn|*2Kl?KO#xJ-Qzba1LqPOv%C3Z=&tiHKyN&0 zGb%wc;fa=wGh42DeI>#RiB@Llty;A4A**1DTm{U!7a>_K5F!ql`r3r{(Bk>J>&dMq zfi-LIASyG*GRjtHiVOhud8n&NJB27SFNgK>MD4uw6_i)~Nvdh&XJE|2TLAB_4q}VF5n`~eI#wySeot&htpv=s_NM@Bz)FP{KCua41 zWJpieE`;wgC8iL88Kf3%Mbs3rB_<%gg=S87jc_b>GOu4Pn5%$72Yafaul>RjIEIqMh^F!%YQ1f&#-+#->z*%kB@rWWOhJ~ zm9z(9({r_7O+epk^oUE#La0d~PD*RXuiC69XUa7Pm5;-*l6>TE4SM4;d#5SbjsdJ| z3Tnh6$kF*7_`g;A=SU2wq@A^|=`XXA)<%$ZDR-$uJ+e^r#U3ez-$M!hFMDjebQoGFdMT>qzz%d5!&J-}KZWIb8PXkU5Z71rL zZIRV_4D)KctnX7W2HVxhn*5l?JkOJlZn+m?44>s{A50X4%A%D(AVINdi)sFtV-mIT zAb4F_oiGkz8b@vecH4_!R~!77(^&YlJDxy->^o5I2Qc>_h1*wyP`)A8{po4`?@T#w zzkK9Vx&Ej{X1nD2#5CEmORaZmSDg-;xpjGtNS(PFm4iE=kgQLb21LdlO1JZ_+B0nJ zP%1O=`(-Z4lo@E00X-VbyR@tP0(9wD?^2hVSLcaaZ$?XbyZZF&Na6>bO8hyO#)_HK zC;Sa4xO+D>?GU$?=ZI)OaSwrGXjGr@OAZEp&hucW0K54DV^X|2Cb?#(_^UWpEk|27 zK7)s)SaslG;$^Ir_7Zroja|h#ezB$!aU5=%^IRPMWpODco5L~3(Mzm?+GAREYKXOl zShHN;V^cpID=%-G8?p@BiIv{+ce9WjfWUJI$ZUVt^n!H}j}-Hp)o#-&7s`ZKT(0l7 zsfSQ(CyHg)cS!}6%24goahXoNJQSVUr(@5I(P!G%43e2e+zf6oE=Mh>9o?F84iLVZ zLcd3!SrcJUfq_B2YjmJd$^o9Xi8bqKboBuYDO&85*~U1HE;>|ZwZxUl(V2GH=bHad zv!D!TmCZ=1v9)|`79w`7vVh<~6WhffU_^z*cI6bA6+2li&*pf7vh~+yP33iCH_UXh zDgtdXM~17-<|vOe7U!6fS)$YYwYU!40qs;mFWQ50bcHA9il0ier7I*_E`OMPh>4@K z+8tzvOIWvd7N|i+`N}>Y;B=LY$=kGLqe>Q#Avm-Wjk2%>7!MsR615RBUlkSq3?yXl(OhAnQMkXS6zG9cQ z4L~Ky$r~(Z&E50?#qAXLNZXwB&6d;?&d6}e8*v(WBIrQ{#DNBL3EN2h^R@wDr6XMd z)=XUuqOX@otXVx|Rr>qIZF|*3esYvl)nP$i<*eAnzo*2hBUfA0gj=oODf#wR3|IHq zC0|eZ_=wfFYt?9Vj}<)zJFK_(yLQ+kBM}RU!S}p+@=8g3_JpM;H3|1_Bf^Y4*2ozA znj#mn9cqVJu~$KTAylr$ghfvGomh36HX5>DlYo6DP(H;5bWS?_8+LfiUG1mnM?SEe z;Byp;js@JTn2&r=dAp}TP_pTu%2yvH6#6cVmGiTv5W6}*#Fm4X{770TEs*9dTtIZP zz#9*;<}lk{Xj>n$3Y=AA`y>6a`;LBuZD_{9@Zfjgsp-5+EW~Vpeudf2pt#u-((AD) zUsJnBuC_{Q+%0Y%AnV&>5>K(H_3j{+-WKrHEBga^^%9G7{sFXEEpnkPA#ygzNo15Z z<GwV{a0dJ|4vtFK*Y&ujmYd6${unTuTtqJlI1bw9YLe|M$^Q6tSUiLMv$ zb12N}abkTl1Lta+?t1TU#BgIQSs07V+I83Uf91T@2*g2KR3ZkPKjZWuH81=yQ+qmA z-~Jj65|zthum{yXjB082-P%KFc?(uR&}qL8c7+_+8=yC9FJXIAcmb8o zUhUCA2H)^DkU~O+jg&YK128Z_TCi}z)oET5yV*fx%wB>;8y%=MX*1B+%d|+*9Bl+z zOCRJQswH{N(gvZp)(X-ZuLkXu^<9zAQ9LrJcCa>x3esVa+=0d1mD=m>IsDw8!%u!l z5LKU5A`4iJ$6GNCUTmIVXVCkP5bF%HufnWHV($f_*8|uh&O2BmO*FMH5aps8Chd@rk?1tu&!aorCjLZPF6|1jCR!%{dN`-?~ zPmnhBlWMJFCGn+xA+^!GloSR9RGZ!)``#~qH<5>kc0Ssa)fPQ50x?N_m9rR;TZw$1 z6(V%qyEIVf2CuKi&9c5Ta+vx)gwi57=sH7rUGn}Dvfe1M5~~~w#sh3GZIgm9HeP-S zYxK576;E!McBJl_@@LSovUZTHy8?yR#v@h1f+b^hvF1?>0w;IkL44B{QKx!q3b2;% zSEfBfm35=Cp;VbzLs|tnwop&}1OX$d2qE3I?N25_?Y>p4nM65gs=NrK8C}auL zo=50r36DFM7~ImZuPH3fXbM$<@ayYVpA`nD1)|VOXWq(zUw)Q?Z2O550NEzqju@OpvWgjo_yP3MjzP`=oHQ4P3>x&d zf$q=X3j^aj%GihNBp!xpR^oNNto$~FB*D3=Jhb~)9? zhw&Up*Nc1|xL64^A#odw$S`dZGNq`nj+GqPl)Si0%2AaIwFd~JSPPEhi}^9wqHRNE z&?~(J>RS`Pg)_zw#AfEwNCs$ipi;70mMf@bIf8MnadDaySgA8Q+$-0j4=0_q!J3j2(GS1UPhFfNBs;aYzr;~R>rEOX;{aXQ3Ek1#C&`aowZr+i5NlVDnj&kp zoj&RQBK>2E^6nZdmAZnom%t)cr;yErTqbb zysQPAVz{?W zbDdA)zU@h9MZw3;wCl;?+PB}phVTZ^RXu9KjP2C2r$92mtbw#}PPcb2b40@a<=dBL z+NPb3DFNdOZ4J(X-tB>s3lkR9L1!oNm2=(1!+^CUb|%HeK;z!Y-i0*)s!JTwrF9s% zSUBdl7hsa;uxvwWtXPLCVl_6H?YB>3xiF9c>Ixi z(*FYGGti5^27+}{A@!IkG8xkcCKM+Yl^hRPCh}*J!I*7Qy0tVwZw2wNsmCml3o?~f zA@7m)Q+A%VkM)plQ5lVr-w;}%pU!kP^p-aa{5AvsK{spBGt6!&F)-LEeg7?8DvqrN z7#VzyP&3pOgXQ{q=h7qfx*joq-5}TRbS7?|g_$L~!!?@F7HXhzR3p(FW4^)1FT-T7 z%%MetShT1ac_;l1Z|iawrT% zbtRgq1A?vN@*gyHVYWkNZ;Lb9p#M~5QPjY$GU&d2c__DuG+Np<(3f7*)>OUV|)HMpEuwX+2GK*0U>GV7en=Ksst%rsHWkF7eRk%a!HWxhb^@Cow9mJu{{k8Gu}DOp?4abeFH5~mVdM_2_?IGVJ} zFs>~WL&4m{eo)lj^;-r(ZKWG~pVJUhMn-S5chx(^YHk39l21K!0=mEG%p6vn1DM+J zC291EbDqjZEs=AybqN|%JRfMQ4AO2kVv7)q38|@#?Z($A&5Gx32X{R!s z7|fy!>Vpf$UM=CuIIg>O1b+(behX>c)_B4?qT1Q8~0pia=MW9D3*#tFO2}@v4E()+t zd}aq&2R=lS=HdTR?OjdRwOh~u3C)6$1O*~4L97mAuaE%%y8Z=wvG_Ij5^ey2?T}!B za0hmnVGd}PVj(k0^rw{&`whjvEg!ihwF9WwV=Gx6pBuJRH$S%o<{b+Zlv0nm|Sbj>BX~xUZfU%mVCPz+ghC6lCJ5c@ddfeq6n z_EiAZI6wUaB-R#=&Z!Jm1O5=;GMoR1^s+!x201CZ_5lcQwd;8&W^_!Q3kgWv)-+w* zcDLRA7G%6bV$vdkj+AYe%P^#2%>dmuzz)k(0_`cAR>JDia8{X^=z zIQ5;C`VLEd&o%Pb48vCvx9wAVmWcOW#|gm_bWQD%#OiYpReOrXYGV6h(#uZ)Q89=d zo_x7-gW5A!tR_>w+H;jMLhV@$u8haZV8%z0!~~oKAr=%u>JB?m>vLo_7lDJyMDaDW zy7l9M6+<4xiOOx~dE57QC%yzTMYC3#_$NX#8*@?IEF|_KEFEdg$0S8;DEGy{5SuRq zeH{{eoo_=iP)}_jj}v*s>VD`3+DTU}i-9rUy+%r$mc$3>*!Sw{EvcLiy?qJ1D(1A( zK^G`t4VrKbOalT$-%EnjD?`cu-ZW4^@d`*46tU5#$VwlsP{(j2`YJ%Nc8 zw4#_FX$!Wyz-D{oI-wFvU(=}!C`n;V@|AFfvg@YfBOb!WJaRb9;<4%ZYIors z7Rj=s)&k{Ea(@^VtpsyLwd6HGO@(O<1Z%z)tNSAbHT19a<%`wF(E;Sw0c^D7Cq73s zGDxb_e-^nY)w}akJ(H@AKMv>}6Q$TIp83?bvVGbXP;d~-O4?)aLu+S8lKrGtC?D-U za8lYXGhZC+bX_j%Lf%Ip7d}MnT*;;Y+ec(NABu-H;N=kn&s_2dOw*)GaqB?f6IGv7 zqBi9eOju+%Dts0d>aJP5hB=$CuaJwnI|}?D!SCYmbNj+8eP>7Pd=W@n2jX2Zk8doR zkwD>W&pff_3XF%ZLLed4`W52|W-7f};gse{y`L(?)+;i_zt8uH?l~rytzK zDC)N|?4%Jd#nz^ylo{9on^d#*=|A}nrBg{}YahV0`LP4%8ix|u(;Iairx-u660{`f zM&hy_9Ho_dNSTb^WlAo7S11nru8zDxt2!{byK>r!2n=@6-EI9MJNYX1w=?+?e%;Bx zZpflUaq9Vz!IkSwlOqFVwaLtrlE0ej<%#EI61&7?paAx0syk-ROcKi;vff z>z9H6((y1C6nc{+Zr;bw3atv$0Ms8RV;GoR%!agKpLQ>}TMPpo;v>nTMLH?NjmUtx zNstl?135D?GRUsw`-Ic$9wY}@M}j!h88Ocj*gQ?a*bkzo#kZ;x|tjkKePE zq4>=gYa&J+_QZ-*Wr;E)U`kv?0ZeLEqSQz-CuSf(GqQ$$=F!h=`jLa|D-48!r3sSC zH1fMkae4pzigS6GhoqS`1`6iHxi+*eqYaG_Ge`2=<zN9w}K4tZNTffcQ5g4AITMVUOOT9R}yGP6O9lb8y`!DV53!V&{R4DNdftY`I#) zX=o3p6->ysKW%|ch9+(uhJrr$5)p_G#w; zt;mNWfT@A5wNT#&BE$=eIZT(7n zwPRYSKG82C8IdeREXv@eOP6lkC`Si_S+Iv-0QrW_vH`V&!4-t`<_Of+4GkIn3}wcD zp{gDMa%@FDm5a`T-enf%q~4D&jEJ*3P!B#D{_n*9-I4a>-KZjfnHL)dC1s-ND3W5c5!8+QA-$hs<>6)sG=%YGk@LgrX( zBp%k9I|$WnvnZ~5It6%|{5)l!wSZmWjy?Xg(3!t5ZJRR`&jSd3uTH#zHRm{nxwV0U zCfyLV1wT$v7oC135H~@KkCF)9eoCCH%&1&iACk7WGbzX01xd z=G_A2%N=KHR+3vGwFhvLHEXv{69ivVM1*djI)00&c658e%!*Uv)Y7*@5(D31C39uw`YW$v*ilq_2ddQ@607iQER=)D6KWL$Cyezfr6JEH zL-ZmnP`*LBQgUrdT~h}4$fEFzAQP5@vO4txC?&P0Fhmd^drTgzeG7gT`1L{Wq`|%I zm7fE5FnZwWNp$ZuQapj|9Dl(qurFoiB_+Tq>TPxtA;4bnUsMn(m8;(;ea&gWv<9cF z?}@yLLi35nDx>^7&%VejY&02Cr@k*JS#@;cCg*L*#YZEFhs^qz1W`M9REHT37)QPZ zKF+*rFJsX*!r_t^jtt)VhzK6Y6+~}C(W&nz`)RlSoo8_T0xjsS>Wy#_eK^&Bco)%b zA+LZ`-_v*xq>qh>KW`RdcX(*hBID&UQZB7^TLm3~>`MHiC6+>ICmA|N=NNm z(pVYOaeAR`?0BoNYAo1a*B?+-jA@uopQArg*#SwM@xJ7HKLTc#_826A)agd}2zE6! z@PFApn^Hdxt~%JXybI8HYAfF(y3|fa_3|QeiorJMn4XX8l(T?J-wqJh}7QE!{zATjUF`q zNBY2(z%+8hfVvajp^IT3O`AH;1x;rS3DPkTarsEQeKIyX7Y#5o*}AI(-KmL#Qs{=Q zlJBl19ych$PMupiXy&#fmt3Zy$Y9-d!`1lYb0JSe8{jz1Jwh*{Yj+UU|ScFVj z?DSmDf$Ofdys5}3x+~A9VHx**8K_miYi#S}b5iEOSdms!WBmF7z+b{}$3w;kFjqpotK6TE`p9AGj4iw%Hn6j9=qPO;u@X^D(Q z&i+JYV`Byo#rL%+*;;EmE%%tiL?rqijG6g;4SsDnZO$4?l0%%6P$^bw(jEtqgpGl0 z3eant62CO!edb>+`gA$^#||htP=$Yhu=W_tvsg+yE!bX4cH)Gnf37#ni|&r(!?5AJp_j-X~jhz9r!e^CB8X0VK!Q^um;RaEyBqcM>z zA3M=!v+kOXbkfrHasU9*a1w8#Rb$MAiPsR$!LJ&QZ7*?O!4_@W$AlCu+UcAq^nNc$ z#lM_Q%Svp}*>Kg~4R?@=v-?a2d9EG!v2OS2OK*1SBQJnjMqn~vnCA#<*7v6e40BQM zD0c7Wx~ar?kc@QrM9<0mWB>wK4*55y*&07Q>e#yhmf&TzkFkq4szn!%2KOyilkC`J zTSXDfOrUnkas;87u6dV85OdgZ-xBk=f#wP9FWDwY|3$n5pdVgGP!ET8bFvX;9}`!L zJ7GMIGw@3sK)1tr)OVtM70vki z>jn_L_}n!ctljKZmwjjucTYapIP3mtQe!bb}c<%_v4 zGLp`rr1R;ZCzoo`n4_mLzubws$#%*q#?%;qp93J_xEco=Cce7MkG_D=&x0-uOxPM= zhCd@Zk{ra>I>YC?A?siR!&18f!f8rQE&2!S_f||l7~)N;SlxrU-GnOvhv`d~#hTqw zDJStEqH41VLBkxDr5!H9kF1689lz~7l*I}q>O z2x!-gob_}KX`e<%3`q|-x%X+m;gJ&xjAZ+?7$W$}u_?EW0=+3~m+Oz&wAGXa_6FD* zWQ+BEGJDy4e>Mvn{C3a!sp}&)aqCSvj;eJY(*J|AosnZ#oJVHl2-vHUtfm!EtNssgF+^ZT7YC0KISxxv%I3+ znlz3yo)<%#bqwNA2{uT;1GCx1xgpD&u;Al{W$Mswy%XqMjNE!7zorE*j6a}%A$GG{ zVz?)y=TRn*|16YHCL~9IQ^hc(=*4n?3jNho zVtHNCTlFS3)OS=|zY-@q=gYbKeaiX10Cqut+5w-u()zCNN+A3i_%|)|Yi#J(Ab|?(oj~lSX4nW&K{2B5VN-Sj_u4Jj_t?Clx%|9pi*MTxf(qjJNqZ7 zR`Tgr!Ai?g|!!yVEajj2%^aj;-wl6R&%5^5p?x~}RLF}4>I z6fQdwV((KEvSrM(E-a(b2t23Y9!p(xirb3q;#MsS4JL>_HWu5fVl%i)kXrvOImh8v zlo)8%UF*;ZIs!pWWirJEfJ(aSW~5?J7syesxH+zNny;a1rl$M7m@enelNmF5zEc^l7LvN;9@xf_N;PO-a8a3c@ZM)~ ztmu=Y9S#Y|O_gf1`=rY}jF%9MNt!{8O-DvzzvQaK3Ciy=@;j0AS|w%7+ow5=v>eKY zsL6;@HQKkkdBs(`#F8pb(npysFz{(;X6t>z!z``_M+P4CLPb;z&xigBcm3e zV?1#wGUANJt;p(MqfwGMI|HWveJ}xd1@xEer#us{J)rm8h-x}5{_CIM|W_g zM>|AE0(*d>$-FJ3Inp+KM*5%_qcmvoZUYi)6M4AZ$S~^*%p<%c?Xj6|trB}Vb2%~1 zE2d=HqlDnaG|v~wY^3aaS2>r|(`=V^KfkYakZeLN+Mhx2RG$zThBX{RTLzv{n8FtA zIOR(FEA|l}h?i1}qy@y44ckI)4_ZAmJ59DcBmpT%Y$9%o%Se9g6r5VH1#3C5oT(FP zhM=5!>_lV;WCnz(fbP2c4#;XQ_1JfjVNJG$ndBRgjN4%&)MLjZL%7#qlTAuN*<9<7 z+yle00REZF{VBfrywz6yb~L&W65?6TlF6JW5@0piE6ge5H?r~YdJ^C9ksc*)vMAnSWwQ# zgX@4RJX{!`@l+Z=_}LVqlZfU2E2wgqNuiI@_nqp1LEfCCUJ9f(&1~V7{uxu1KBIxxIgG?UiF2n zZZ~f*SH~movKdzH8%fHQmBiA>v6___I{XMZFX@HRA^`jAU9d$XqhCM)nf;n(2kB6| z1XmIR!MP!_tF8>N2JcQJxwY9a+5Tvenw1#9$)zNIdp%X~6ch}j;&3cRIm3BPFdF6>;`CZxHjcET*YO83Ll39)X3!i~{8Y^4}B0H1Q zVCF>)&_DbhwA6-Q{S>T4cARt zIm31HHaAX9ayv8DnD0N$23`wFB<7e5ijvysX85fgR8HyC2f}qAX1o1ypb2zd05`+EwWx`e0hcvju~n@88q>ce7mK9@s4)oRXc0);fpnSOZ}hKOX4~a~^=gM0Sr(gN z4aEGni@9d;43n69iBmiy

wKyTvmkH{$t-=OgY%+>dxE;-!c$LVQuk(u|~)Na_q( zT4kKzFP&VG%%;2LsN{x^L>=$dr9duXlHQPDS-1|J3NTzJ5^G$%fA>)TpzF`U{B`R6 z;d9M+QpmR#Q{A=$BZ~4-cj}g|JDZW&EY{diw98hy$qY?MO*hiE(Q=~t?N9=3WX0B~ ztecfe3@dQ#V6eRkt2(OQ>Wwo7~|Ff)6p6s?xyOQ9Rt zp8Sx#L-4AjM77oqMV1YLkvY?At4*EVFdA%69wO}s?lTj3IDB3e#mo0PaUiStr9WCL>Z`*W##^FZC@52olI5fr!sH$fHU z?V@F&*G*cq3t&@81TbUa*o1Ys8^^vdRM{c+dSLbZO}2ZDafyrcBi!Gd)Z3?}5izd-R!R0{nCDYl)==-k(yzxr(2U{X%2x z(=qn=YEKYqQOQ8hiV={#f)+@)fl)bh3I#3iAkV6f^c2KHu&b9?j)d~Qj68#hrfye# z$%lW2`lS^{z%Lz&L*ECJ7Mn8X7Gva70u;c=r+6uVkxvg6M=mZHc+VDaBy;a0f_kH5Jl3;0zYo*%W1iXZt4>qhpBB2U9{!T z#4M7_dIH=px`Xb!U-~K>yJwh+Xv3|>MhbSwtd={9zhu27c?&xN51fwr6Lxy*Kr@{W z9swCi$Q$CXjTHE6*A_MgFBIS-fk%T7D`*TBf)s&|40d3n=i~gNYkN3f-6?;w4&xv` z0c{*M#;}55HwiVtPW2HYL*KzBlLJ>jw{%)#<=Sq6`>1qgd{kcW)Y59JuP?$?6P!|< ze?EgY1I`(KpWn?D&Y=S06>XXpC)$m7(|GJ%BR1EF?KWb|jMz3Kw$g|_XT;VRvB!9f zRZ`QuqMsWHk5EF)_V`^uTz-b#g7nuo(S+U*n-8ZT<0l2V-BHoeM2ttE%sOCX=J4yM z`B88qP9Q(jcm`{HsZsppIB!%pbdh_Y$B}(S=YfPlG>O>?5x{jnWso`z&w!A&awwSS zjYbXMd`M$&(f;uoeS04$G4%bICgvCiPK_>?jHknNkoIv7$h{+**f*SaZQ56eQw{fH zr_srJby^mHH#TL#fe6-Jc4|9tKx9~V&Z~01L3ar^gXwi_C1TgD-NmcprDlM_@Y`P6 zQr=5SRL*0LjmU}1UfLR?WhBxyuSsZ5cijgjieK`=D=b;sAdJd;kjUQ)Xd`w0b9*P( zjR76fS2MUpA!hpynkG3~^$6-x7dwR}X*3~n6MrCuLUqOXSsJZcf(Sm>)5#XIz4IG% zC|Xqqn5;g^Ur{tzkiUGumsceSm=hzh3X5h;{=FO=O)p;rwj0}Rzo)v?IMu}%eYAGE z5onYMqO2h)rg#`*owWIwTkfZV$yfj(y+5QB%{l_7zwH_z5h<-_@TuHFqtJ%)YWRHS zGl!p}S*wfEw4g;q&JWZnhRAUPsY1Rmo5s)|7Y^=|r*8uhirP47w+Q@WK0VuV#mF z3zZEG)JB}3a)TR#Lj-t?VbXH6=U{x~b8lQV2H4pc9E|$rbifVTPg9Erww!D_1ddR}L!>1h zVu5`;r&ryh&d#Q#?5)NQf43}HET_St|)uMNY1A%{5E(V4JE zV(;*~(Xik^G$Jzrm_e#Ss-qf~MyH%>A+`V8y6bn#O}HJj?h{PRNK}x83dn}AH)T&3 zYlzFB_|IWqCmdC~r>=qlZLd~I39*t_P|8Hj#ROaY>|Kf#+(2IaC&xi@rfaYz>QX8BLv5A!Kw60Ja!1T5pHol6q!hK;w z@6AhIgI3!JZRhtBD}F3-!H*?|`X(ARo=-`*pP`(`ugV{po?}>4-=#atyR_fGjbo!M zM~7}eE%N}I$?dMpNodW_HsTM6ET;YE;8ODhI1!kM>sqy=f>Y8>ObQQ)Xo&?vB zVmE&cE^4X6Bnr`D53XM(U8%IDVs0RADz;P6s+l?F!Kq8^#+7SQsz5H~`i>v^)a82* z#%7wdfgnU1y*dfhzM@qj(3lvp*mBts?8OC$r(I~TA>Yi%9Qd3Hl^8-eHsd?B+qv2q zyUeNm0+rC-yoX9M*Xg|2u&;3Fu7nQ~DxwFus3Pv)2}SdMfDQnZgv@s!d6nLjxD6<} z1$0x;dT^kS&9RIMz9*w#G`pMlVlTZgn6htuvy710_9}tlH%buQHO)xe#1lt%)AJ0Z zOd5kVraqIeYifP@LgN94nWIw zThM#3@aV-l@c{E zNVyPAoFq^A~4qX+r`sgAQo>I3k0(0~7Z!Ll}?qWOL5(=pk;gGx3Nk6#)90Nv6(N#J80i${FVdgi>xatXy@6G@I z0}H+P32@G~Tfv=q<0W7$=tdX4B$BJeZ$tm9UMCo_ANZH@*9Wr+{GaW~2_T;{)Ku@b z{c>c|p31YaH*+;+z$i>SMG2Fj-r7ZvI+3W$X`sO^WZs5h;N-AXc1r3;-BOoe4YU2Y z=)(N=lCn}==OLN$Z zrgn0=o!A0p1>d(h)c4f08*Vs1lMyCI+YB?H>K3$9p%5|d-6yKh!w3E8mzYkuR+E>c}XiA=j}AeeXm3~NMO z?v1w)fUhSqrpvzwY@9Y9*|z|zfS2uBDV6m#D5s*H0ENjC z|H)!f6q2LCT7+PCGLx{ZtpR7nUvb-)dOQ_;$P+-t5V=X?9o5FbU_1QXlx&Qu78XkA z*Ln{e^qv@4gC`|&4+5`@N5D>JZpf+K3bGG^d<4=MxKVi1;<;0tYA2t$C)=>_yhV?; z3sNx1ZJG_N#mMkV>LYx7y9x^-!^PIeDTW7Up=c@pEFFgjiWP7RAqZJgFGa~PljzAb zv06d|H)d=RM>ra?!%}iQk#8iKB5+C26XSV1f7(PfN1vyUdW+RA)_jG~)_h83>Lc_~ zw?j4!o4e(zqjAJ<|D>uA$6=hk{2XEtu}P(`ivJUj;-{)`BY^4TDoWnKlYdUh*+y>K zQpr_Sg}>~RRzqpmR29bhq^+m4OREa+?UQyVrCnH62$z{mebhp7VpSnLTr+8?M@SB- zDunYZFu`b-j&b%&>M!@;gWpkRY(4o2k5z>K%|M4%i!@MZ^02l|HjI`!xdM` zWnnm9L#tJBDQ?jpmVNungTxW8Z6!7U+(w*yxvX$qN!QCaM5@+2njc8*=*d*{gq}Le z#}}-h1t>#vQEFT-F{HWg`PlJ01?i`B-DEUaRKgD7T@wi;KFobvr6y9%V~A}^Ryb-7 z!F|O0d8KcBWUx10^SOWXcsyMRt1Q!!7f5sI>Vw}0eus-u773>~K{?1$biOsrV_KKejB45qn%1ka^4BoFiS zMx@izuvww#H0qnATRmLM;@t^`PH)ibD}D16)GQ(|%`zwCT#$@n3S}CY5 z>;G#@(3r6wUc0FZu2M-q)6SAphZ=~Hb$FrzjSBauX-u!i8FLqjkmaGazv ztsa)paLadd=hS%y?s8rbM(y<5G-}Zq7a0ir_6LMIV;VjOB5=FoXd)jkVydPVDP}zG z0BU&;{N>Oa+0ssU)Ygr64+sNaLv;$O!<;MVO^bFJii44X zp;(zDmwmyfoFu~;R5Y4JW#&UNl-XM#@7jSs6H^{p!kv$BTgK8(yX7TRIu?~ueP2F> za_R&TQP8i`;n6U^2$D0pZ0u-1u@$Mw;HV4*!`0}Vw%I6nDLv4TaM9Gl_U(ofeC8>g zSD=w29)ZrVw7SlXV{647knYuM!I-~%-eVt}{UEjyj-|*=kd1R7U*irtG&mp-LHJcQ zUxh;{E}u(b>(zk7O5ExA3gl!#w_M-hMzT}(BJ2&~Tc6(PsQ5HQyuGc+co+iHOAj2- zQp@rYP%+zw6ve3p|1Sou!;jqk@#`)Jn!`(e25CsUa<{`LF<-&m(*`p_-bhy_^qJvq zm)B0;e0l#dNXdAN5b_po1Rx2Iv48^Vu6{Hsx^sf(0I`m^^A8k&(kre=yaryJis7y- z-6rUB)1(EHgVlvqWUqGmCh)Zky@R5AIXrU6js^f?^AR)F5(u<{F1&%-5MnRGkp1+I zAFU6OVn5DlykE&nzuXNJAOXJ=)RfmVfzr{f^Jt+9&;Ve>!_Jkt(E_1Gc>R?kx!#?0 zv6rgVU0pOjOf_$f>$UusU(wrI69+#}tzpZcy+yn|+=hFRAZV|!x4lK2XU?>@vTu8M z`H{DGCyMD!s&2mhuQWb-D3x%K*&=x2PWIZqxDA?T5R4Ao_PXRsx)cN0VguIJ2X^t? z6s*L6ZSDg*FI}$Cfc>TqY!ZhVybrVaqqw_s5IVqf(8?RgjZWsH7t5%`U>Z(7-ac-{ z!=0dwikUS;Z4MLxTk`t`?$(pBr9jZBzzXQD3FsJPj)~9kVj&0evC^y_G}5 z26Tr3y)y${!l9E4Xp;e5mVsW%p-zH&ZL=sj=Gsn~_!<>(=vQ<2cvJ13l_@)(L*F!@ zdyJX~WuVy{y4irH+U;DEo{g^aX`UZ2pgWDSZ5e0>hu&&H8w}_R8E6}a&NHAd8qoVQ z&}TUGA_MwI1G**y{T+w84d{ag^r{TBmP5@3lo`;e8E83&{$nh$Xqy(K! z!9hRiD$Y<-zMmerHfp$M4dbDT99 zihzmykuBGzkEze~eIK!7*6rf9fE~~6`SJez8_+lyqQ3S7q+6Vs+%7`v=S=A!GWp${adZQ@>;V3V1Aq6lz8|tfxj0sHp%3EITFmCc zgJ5Bn4Ap;Ulhl8V#nS;AJ@Qmqviu)&r434Uf#2NaZ#@yaSf6TI-5;)6M_M`s-JKT&Vq}e^~GufmK6xtGyD>ry*IJ2>u?Iz`>=! z(Y-c~DMij0a>|7d765Ij573Zgi}y9?t}&MzE?CP^5}Fd|XYeNX0z`DzQ9Ry_u|t{k zJ~V3cg7i|H4-m>yQ;mu?Ksu`I835r3@BkXg<=q*kN$TyxN(F^{KZk{D!=A-b9m)xK zfoqYZE&+(MP)WQPw^NG`;Tv^w2)tNcL&(xdcQ?d)HqrhETUxCL_Kp&;@y8n zr}5?%q{C#yK%7&>mn=c==S$V@0ZTCyza-wbgLwP^P%V(O(Ys&)Bj+^nC7P;Tb6_v@ zA*Wb#3su}?4%U3GjOVYvux4I|_GE9KImn|oQJZ`etU=0agezag#Kf0CNJzFZ*I5{f z-h^>{D%A$E!@$ZI^{CF??unc-(3J0dbQPoZW~<_*VFNp7z+TD7w}1aD?OsANa7j)#hCDt z*h~BYLNl#tWYE&+a4e@xFVo|tJo%UF^_-yLz5Z{8_w$Z_H@pU@8Pmf9!|^YN z2Z`Ya!@G!v=Ldi<)6XaeM8&f*ET^J(LoZ*muUDvF~wBPF%0!1W!()DrAsPH*Xlt1dUQk;K@|&w3vqeT|XKl_L(|>&tPOmwMKlacA30ebUiH8tQWA5hnX=$zX`~dJP z1Ek7}Mv2u|Acyt|@;1@iM}oEjLDelJ79%|mq=_7YV|2uk_1pUgst&JS<1B<>g^t9` zC1?D#fd7Oy$TsTN6y7AcT_vE+CEj3_uZZP=H@NX6-atUFe~dSP1g{MXpTrvs$?yia z=Y*l+%8BO4G^73E1wJzRvkE9%P)b>FFle_L>Dq_*rWl^*pTsy*TF)Qh55NJY-*CZU zkEg2fiV9}D{!&zlQwKM#?$6Xk)g(&@A#v$-AAe{BMv8Z5az%%Tdv-Dqq*-&JKoU%N z3)yRN7xnL0tJGg>16xLK3|B6(+rOi=gzk##rF;Jnkii@4Hs`yv!Uqha`(0Zx2KuXO zKuZT6N3y3Z>&c;rz%8}djRcSu@R`U2I~2Dh!*l_5hS>kYrIsbQW;XViWkG_SwiYkireG7N<-S$O^ zzHi~;t>x@E_b|e9xSQ|mUkPaar&bs(=c-5TV)ay1@&E02aVK8)f6=?R|6B${{hz#x zs|~8lEs8Dwm@)~~ZUEG^Ed}Lqv58lPS8rT6uA-3y( z*Som>XE0I!>RsG>Av6G6fBaqCekciP>c8 z_yPaFco+B5Kk?m&L38X7$$Zv!4^R7-@8W)V6MS@1@8a$!7M;v}#b5>TR_p&G-^Ill zL3}q{r2D>$yBb~Z^DZuV!JnJ~3QU^4|MT9(g}Hf*dNfPP(Y}VcGo^}p{UKmD=fVD~ z2XfDQkap2;|J4Jz(5_{^mKO0OG#(jdoA9PlE%x*K4=5Yy;y^c_~RL+Tpd zlxc9X2u`nftk)}T7{njseM{e~l|lZ*n<03RH!?)^or%YF=+SxKBCVFHTNp>#iC z5c$cP$H7e`@hg&75VPRfosjYO#Ua{t)-aANlZ5TtIB*?k`PA{lByZApzW$NtP8 zu3aa-RLw8crT;45s#1FJaR_-+IJjM!OwhAYuhs%t(74~C#SvsVSlhX&wJl9u&tnaA z4Fz4l+G+d=ppOmjcP!Ff&-%EAVI+>CHE_6G0(7P-%~6Z@U}70!cz@wSND%ZF6K8PX55`lC z{%gk|!@oQpy};knZ22{G1ZN>Lznj6EhuZ$yv{`{bepk@v*4YgCVjFv zsOzKt6$63;>jP2So0KQ+-N`dl9h-6OjgiRWs-xH4cx@bV@9vX{^wd?mL>vXVHp@+Z>zhQ!0D0$zNzHTe39YVg`x#oE4FkSRxZ_tk=s zzoua!`6)CRgM1l(O|p>WA?bpP=)i-X;Z}|`U_f)5=i6HY91$Dk@f{XDSu9` z6&XJbQe^|2{ol#}v?qVXPX}7w@B4A~(Sy)Cru<2}0pxP_G^iT>nlN^7mbQSx^YAw| zJ60FNiuF_csS`sN&;M=*Zb-okBuo!Pz6JC(JVhcm724LlX-Rnq9fk)9$UvT~9_v{3 zDp~qIK#F!A?;<_7VmO23lOG6hm=I8N0mwZG)?C2#D-#gM?a8;aFpecEI~%Q)`H=6wL83Z<;)ge9(s%d7y-*Q-d>;&F6`QHML&u0o<>XGtFJQja{SI8p1m}lCvb<^ zA#ER6_>EYTVw8tpFzO7$BZ)ckc>D%xgSCgCm|y=8h75awPH&Yht+KDRd@$vSq3P4v3BdOcX%9d{82~OE(54?;Cob~CUQXreqEeNQHV)_ za6+??cIo5y?6f3Nae7wqNV|@so$j;&vvV=(9q+*W;#y5rqc>K)H3=I!#<-E-+Rz4? z{n}QV2;jd}-w$xxRDg~0F~?g#0^N0v(X}75D+H8l=%<8!=Bl4sl*`pm zt$26g(|*cueU~yt8}WPEr2HbHwh`3F5102Z-zMd#L&GP*Pz{nkGm`#^Px3az-~3;^ zy$g6$)wRGs$z;fo2PZs6!b6D?G>DHVViQ7i1|~3piGqMq5v8ILAHAh8BUlh7P9hnP zW3krOUTdp;U2JV@Z(E)%Bm@#3A^~6cXa)7^8K)|03&98T|E;~xOcKD}`~AP~|Ie2* zXP^DvYwx}G+H0@9mj2!=-*;LUZ4*F<;96J-O)mmQ-NMn!a=|LJ8iHoF*jS?UD& zb83n_Cl-C;S39jMq1m4UTez|7cOHmnjqfi-@H3;I=Pw=WGk*RC8feY?*GkW^wJr-p ze#j+cdQnAVwNM&TO(S{^ zE}@+vZd83qWi%DyiQmGQs$k-T3}8n2B8HdNWiMJC1XpQMRasPfs`e~VQV4I^>+2Bf zXFryy$RgMGiS#0;t~(>W#!~xZDp*xLbRc)bqKZ;9j|I(CZEK3_5f_>}SZ?3tdc@H= z(@g)DTuKU-D~W{LInLB%r}2Xp1_t)%DTOkA$xDy8q^!x`8OwZ8Nss!=Ghz!b5`s{I ztiv8_iAq85IjkQ?z2pXl)kE@%y!yE|$Q0oqjTUMn{52x^l~aEug|(kiUK^V0M{;sm<~ z0o0qk{Z+0b{RL77_`uXjooQhwzd|!;m3B(@oU*cZNP1Ro!x8ZXN zT6One%cJvOsq&YJnfQ_9YaWveP|I+x<;ZgpZxIjQ|G=zEDtwzcA$MdS=={vsvb%Zq zd~Rb6!jMP4*`~xEej9!JM4fp&d5iu1#QvnO>UEzn@pV>K^C@m=Dv9^-Fe^`$DXXjX z-T##4!8vy%Mo<=J4n=@n!ScSo@m#@>Q6#Nt=Iv`X(rJA3tIzp*UHrDJn)tVm`J0K)KI+zVIO!`% zADYFoJ>Az_P?`=PQEh5FX}Tm$Wdtj|<>@dIjh93tNHnZxBAwzmX(iEkA3UG;UsvSQ zDvm9kG;FH*U_!d;DBTnZ-Odr_CEPc+Ql2X=;UKieVo8`4xp#hcm`en%1M^bge=hOA zK{88{)tWD&AWWr_>y;_b*GR@p@E}ioks`IG!Xu!~iM0?qX3ZP%L5|q$HU4a^e`70MF*S9P0eIs-it-I+48GL%YsbLm6 zOSPn8_MFg2jGU))f1qX#?dhAGQd{+AxL-O-IH!4F@-hatE$n z1pH8wZ8ZKt*2vVJqs~YeCQn=9cYs3zu_qY)EN9hV>biIU5mMWXb=u}aT%qi?@ujv1PGhJ`- z^oQ}O_Lu$bRtK=;fpc+KkZk_HM^X7gF6?zyWlcjX*0VP8a zl)Hr~&s`Ua?9UNB>IaWeqkh&8^r)B1oKNVQ z{ZK0gPrrpLG_Bdmv)P`U2y!2+SU&50m3_l~h~Q4<)YrtyC0Y=D%zsH1rok3rEz7PO zLy<>n_n)9nR92c?SM^26UCR>n+hwwhpTM@n-!VaPobF3craZF$ce81}noSEyVb3OG zeNL&=T&puywJ)ldGiGk%%d{z!@nY7@XJY$!hOm$$fJ=>mFPwCmz4?Vr36)tJ|0TGy6Mq^y^ihELXPM%*?Y9`cI&OR9O!iXCC zK+VB)Su(>OsCl)=XJs0U&9lnKCxbHiiZbcLSb-dv{2Ie5(6LR{SQZzjwd>99`PV?{ zs-!czC*U{5k8%YnOu_laecNRUvJmJ+RV}F9Q?P*H08}*;8K+FdM5Pqwd9Y0QKQ7k1 zGrpf*$F0XXlGS0 zbGjuw=BD*d3C}|*ACUc`SzC;O^Oo!3jkv6Db6AerDK$J~J+NTVkXS7e9_Cfn$ z;m@>BmG-H?=P~UwTKjnMc}V*V);4G2Qxa?U-XdtsV2NC$(dt^+WBb zupZKmMOKq`EVEW9hXSd!NV^4+)-BpC0JP?4_haG?YWI`k_Gyt7HT()AM8tMw^!WLwL2hgzjjX-cZGH@ z6!!(%y-3_8+PzHNgS0y$Znt(fi~Ebks_kpUeMGzGi~Akzep1{AwR^3&pVRJV#oeOa z8^rx5?QRkGTJ7E`?jLLSW8z+;-JRlY)b4}gUZ&lL#C?}`TjHLt-ABYdOS`+o9nfwE z_}iMG-EMK0Yj=^jOSQXL+{M~mBJKk1R@y)v+FdUG|NORsg9ukzmUer^{f2f2#NDag zqQAx3uHAFQy+OO@i~AYvMr_1kJ*nM`#QlBkUMB8l?T(0hg?2ZKdy#gp5%(?H{g}At zX!n!i4r=#WaeKA=% zJ|}BMwt3KRhL@Sg#Nr9U1X+G_QO>a^B1{oQ32h&Sl;-nL>t)fmV6_SLzb)mtsT7XI zf-Z=mTn=c2TBzM{gw=>Yqp4-(H#GmW_Si8_39=VoGc{gtZxJ~nYwKWxw-jv?J_FV3 zOS#GpFYnM1>-o`yB4Zz4K{MejJl&D|+;dQn1Fcz$q<_^#=DZHa-yjOO28w`ND%7Ma zs7Ouf=$A^`6v5V!dQX9vC#1x!j8sgikc~3XLd)++bB+-xrR8%G=n6~A zYpZrH9hYu(ULXT3)%g8ocH@P+C%Z{G@#=8e0GP?~Je*2l+x1HWpsh$T8rcYbvuAze zLZV}dv0c+l*>8b?=pkrqHksfiP2+_IORZzh)v2k9On;p&K7I&1IUAz`|8Z? z>8X<$Hz`k3iOigk2OW0vl{7ROm$6H8m5c{8ZuJ-s%kQGUI8Cnu3GKBC@A>!Le^UR? zm(yO={azo2Vd?%q-KM%|{c(GZi`uR$T+0z`&Y7QbN zL(9OX^VQL$eeBVFUXDFl&Qj2rQDofzv=lmK{}Q7XTeQv=n7PJ-lOemXQ`_9aRjwri zuS1>e@mlkfS}fK6;>MfAlI+pe+|cDmTTzzsKu#W3D3liYqpjH-zMFVNt+dek(bk+$ zq4vsAV(d9$wYD|k!uAk|MSnQCeoY*)<%E`9v0i(mHhL(RqwugxN?U_=hddO^B%O68 zwp!)TBhTl}|`n0u~**!u{6_ySnZnim9 zCC96G7Unh1bS}QwH7o;^YG&8=C`jj3YZoJV1?z!GkM{c!tZl*-fk-EjE=A>&+ zp2T%gvZ`b38U`V1QG;K%rd7km9ELHQ7xaCMI0w_awX2E#<#LR z^%<*Fow~A=2^9CAPBYdM6{2$m5kr*4id=>&r8PQ^{ankrYJ|S(;%|w+t{9vze2<84SNPYp*yo@G z#4zM#L?KvG+Olz(u5NdIm3?JwEU!V^d-q%kq;{pJi<&EeXd=7Ed{J`+znsi`vFA#7 za`!xmCfou|1+uK}c~U67ktx5H8zF*W2IVF8vKnCPIb-j+ME8e3kK22*@{UlPbOm972Sm?O-583vc~7+g)iV*6u1n(@P{_Q!y`l<$I#&rlFF9$#{rIbvEFtt)wTvymL2*U zq+_6p9Ohz@jx8`?3GZ?W`0qo(f61tP zW*)Nuo7+1B#x96QUAldaj9ecIxa8~-!Jz}8zJfQ;gul|?azwl3ggV(fLIEiX8$}oW zLw(5^GZVYRAB)&RADCzTlY1FCa9bQGSIx<)i+i){X+Fwec83!ZsYoJOzrN2Fs7bDc znetlztk1Kl$LT7uT%yYf2&YEVdQ^fs*V&~_`ijz|4HGh@ZKbsBa@KCFFM@wY-42BR z85q+lYBy6mGANv%vzM0TKw?YDm%&Kn=%b9c<{X;#&5Z zX*i|V$>XW;@VYSv6=bNZGYy%GYXvgNGVHTYf=5*h3MFi=f*P}EcgQ7u{f?BFL)fr7 zQQ!yVn5so-Q8>RocEgMlzWBuH$u&}oYor$E0H_2^4(Q3#>oF<8aNpR}mbZz=q3Wd* zG18lJg>S=bz60i7o2Lq|@P&Z$K&?6GWlJQm=*5BexZ+DvNoRa{R@I4>d*F46b`iAL zv|zfv9i-A*_Y-IA0U0c!a#Ejz1Hf~vdTNIF?U2A@f$DcCa*4q)#|K;jBpZ^8#FmtiZZ>-eeEN zXVyGv>)EHP6aCz>D%L~*E443r{1)T82FwJbu?$E@v6Y?#9jbZ_IWq>UcGJ~TCY{2N+FarF2Cqj4CKw_Zpbk=Hb^a2MvDLx# z%{de#_crC$rj>lyZ)`2|(>HUH_oMGAcbrHg?y-!Qv`D*YCD=Bke8<|$fk)U`lmBUD zsMKF;4lmt+|0=_eRE1q|P2;CV;}mkIV7fhE_|M#MnPm4V@|q8o5ZzyKhS4}!V6zS_ zU$fU(ju%xi)EHGe?Y`6we*IM+t#~={F{^9OQt5l$#&io*Tk9FJw@_~AYt4u_FdWzT zn`f2Y9$XN4kw$W+0acF(I}@POdM17E=$?M$u}Gl6X-*6c;qiH$zQ4+MVmYOD)Cl{} zQD5WyeA8_>lnEwmxwCbh*U9-5!i?9^g}%RvB&A>OcPE4w6+M2d@n99{RidihD?6gc zZ`YcoqsRZlXxvEb=<#nEjUo&cJ-#S(ZS?pOqw#m7h#n6cjc+RNWk%C622XrqOR@$q zrW-4;453w7?p7A0_OY}UVQ_|dgAmIRZtb%=(V2U;Al86yeY9l;OE|;H7oYKo!1CtgBA-&^N1S`ERVn=WN0T#Z%?aHD%zEuc zyVs1y3jqSsCEl9&_2m00_$!v1%#P)9alo5~a^eTf69J$;vLO8LtJ4Ka!CpnGREZEt4VSt~0j!OS_UIKriwhtbB9pxC7pmbk$ImuI|W% zAfkKRwZ~XfH+|@)3dMi)ibLPb`miRjzdUoZICHcTe(#AlXb0#MLDw zpzEi9Qf>5)Uk-DNLEB`~*I!X(H0BEqPa)B>!{1z$`111<*IeuURiA~gvCvh# z-(P$1`zgCe&tmav!z0vqhqQlBEk12%%NvGfZNN@uZ zT4$jRCNopJuPwEtJlhQxGMOo~v)rs}=0Yv5GQ3(~YOu!37%xe6`pgpz@6lI|&@faL zU~*#s-L{H+YM7$me1tKOs!R2P~KAyiO6WID^54J`ev(z2-g(Zz9>Eb3|v zZ<^9YXF;&!vBKsWO{2)!Uol(J1a(iQ1^BlG%(##va?8CAs!m;UVZGv(yO1qu?&VF~ za+kF|+Ep96GTOB;bm_*ss2r99^6(k;zUZ>-%T%fyNo6D|iA2~~JM7X-*ij>KrV6v>aHQV0bP$5* zMfbt2qrM2DYqbKhQr@L{P-`;5idGs&ThoZz1Ad8iP&?(P&JUOR%pUktCb6s{zbD*0 z0c+5o_yx}RgslRE_$n(tVVT59JcO^${7lO9C&U(p&h2cUjVKkSW6Waq!iarCB1fM` z9dfciXz+%3K}2Pj!!pq+krKko6E7MUVrM!sG=8H@F2G#2Q3wwlXQ**r)oL^i(Al{Y zeeHY`4(-TF$O0v>%uReCE|iZeR*FA1yIHEbNPcdRpFj;a_*DbtYffSd(XIXL&TLBZ zXLQ`Dl%(07*g-^lpLO&!cb?9$+<2vst zN6goZ^$Cc37~IDCy{SFcqx5<7N_2ZRy}s(blQ$^rO%!wU)utP+A5gBMc-sFRK zV1YJM-zj0*Ont4GsfTB`;{h)Qx+i2Cjap;aKI=Cs13R~$^vvzy-nrfPmAN74C^BDC zgLyr3o8B|GNxgHsj8D^w{tp7CA7J(Rg1;ZFK@<;lp|eU$1;>}LrFvc~akp-HPNY~t ze7R7u(1D99In!BrMKB&JElpkRUdFm*h@ot_nYqR~7N{1KrY8HbZuSGETQ%GhGSR4? z3bmx#xc*i}>J=RrmP?KfESMsM*@@T`H(OY)hvwGD$^+5dYzbw<^a_=*E-|ESEVqIf zFZ+goSR`_}94GvAlx-@VSzoa?N7LrfS}`5~gP*%02SWNfmmeE?=L!QN2a@g**#N4& z>0Lq=ha_`uILR(mG`@mbjCFk=<2DQCQ?f#eTF3aB zHDf2t1MvoO*Q*Bj&6rTy{;EAIFZNX>R-7*?pP?GSZ;!UbXTs@g2lu2;4P&{oXQps? zA_D>o8YF3;%356Quee*(r2j}fApcYbY{JQd3^uV-vp4Htc*P*t=hafNJ3j1?~Yegm>pCR_lc4s!Pi#^YP)Rpqji z7zH|_?-*28|MS1la$_Dbnm(1*#|!_&hD=N>iUe)SbCCj(97cxAQl6q5kv+Q3XnGx} z6StYTDbG-R^?{|)xJ?CkRudrfm*+z`F^Uv?S_0%M#2Xy0qTeH|V+3NZB~&2g*&z`n z{4YBE)=cX~_>Xn?yiE8c72cE%Um@W!S2eyuN|aF6jC5`0rz2gbBNeHn6Zs(K znW9p;FS2nd&wPNySzqYf4Uh$n#7F$dCuB+Cj$cV_N03C>Zb-Z!P%{hL@eW{pbU~nU z+&0{y>(Q5{;8OTU2@-v$@AEBJQrHJikg9zx^@6-O9A^mnl+iF*#Zg5Fc3=wx2?rDC zWuoLBWlxh8?qh8Fz?1Y++!VXG%di_Kr4VN{n$7jG`3NFhWJeg7@+`3)Cj?e`}KRd7hyw)m;b?EwEJ<3vY z7#zF{3EiA+qF?8PnQx6?aMRmP>LDwfpeEX=*VZ(iTcmk-f#`gT{=>}P$AS2C?tH)m zd)4X(*+2tb!cv@QA5sQEU0%=x7)FjUo2eWKR`3m95%u*vUnN$J$RP+qz`VgIa2^~< zjUBr=cZ&ZA!>U#2T+EgL<=3F>$^_e~@xfUw?5tY$Dc=HI)V>17oZu585JTDj=}B*R z$9}+FZQTyx0gD{RKP0LwMS^@wr;0c|MffTgy2ArSazLy%ai@A9Q$S>V<+7^_R2m*? zJ$`2f58cH8QM?yr2Eg}+96`^iJ#bDYHwLqYgf3(>g!>!oa?QPXIEIAh8tXfgQ@j-y zgch_OZWRiZk{YE zmK%c1w2uX1@xVbK1o$j=$EmR&$oOuYtPmQbvhwy`;Q9jng$ZuV^aR&kcVxg-eM1^t zMZ^JIFbGjgC-ACi47!JeZkC1&p^;cT_lpnM7T^Q4#1`HHw?2>#JCbz*I3EV{NLugD zZ(*0~D_Go5Uj3Hl*882lqU31#8nE~rc@0`ROgzs>4ubM)IqG*0DPr4itZQ@+p(Yye z6qq+eY{hB7Pwxr%NjBgG>iM1ZRWk|}7x3F}X`g!MjG|;I?g5L>;&;%}Vtmd>4uEg0 zi*cjeNR`4)rZYT{EgKvMfnt-~|M`E>X*QkdR`MmX1Q+|%l}|0DaD*>a0@v2_2s5nFJ{aqsRupjVv+Xm@f&feTs|s|yhd8-Fa~pC^*yeDupgoF7 z;0?fw37k>T1uf%c268t~&JEJzC~cd2eu;fY2dfda(YtM@ zMl)XGM`VlFSgD%N{K60Sv=nOi?KLzb+@$&JXqh(-G=7Zijq)U7$lv|Xb-21ujr7T-*hQj_ckKS70Rn%)Uxi*p*< z>wop7sOjQzQ-S_|i0|Y?YE?(AB;Muiga%_{rj4Oi8-8wHw8{FJc~Rh4QV7D<6FFSE z4YXQU2AoICj@Cmi=MgrTCD;d!w#^}zTyjZNu)FY8{mW>2km{y7=*`kZK7N~oMIE2I z(>hy(T@>BMxVa;+;1%qQy&QG<(4PkCDtMU_aozaVCB^j}Ubh2lA1oI03!r@GsD#Ob zt?#*nQiDZhFAnyq06(g|9euc2(DuS7Z)!m#{!81<#U!cOqsz;7Hs?%KuNkb9_5Alb)o@_AsZW&bCBoHsX6-xj?@e1 zKO{BZ)=oNNMKU>AGp>`BNeP%^_ffA&=+x8mRo|00U!$~J zs|xRy(&llk4>)}im(q?!FEkkbGt<(bR1N&tK` z5F5^72Xx+Ln`A@hPMp1d-n$vTzz%;P>t?VS?=gsiP-5%D&z$Q}|ti?tL1AgF;JT17^-3+crecPR{WI{hNu zqmYf6qF1o>y-}!CF(0!lfuJlKi+ZRfwtfGgO@)7wt+#Y`f%V%$L0g4C(>|%Nz1tk6 zbzus7E+E@eZ(7xCe;P+^UKQT9AUGj0PWtO1Uw|fvU~EunQ2M!U?CU{tDh`h6tTQIQ zaBI*UK1vw>byY7cfeF^|mg7iW{BbM`r+n>B@eLnA2m`H}0!Nf8P|!wLc#gzWroN(u z%Agj*L#%TaWLDBoXZ09e5TUf}5WU5Ld~|ymT{G>tbd4J8)^%;fr73wE$`4Fk37^emZ&{`g3Hp5quacpLhC9OdJdT<4~;Yg2rQH# z$5213Mt{v0BaZn{aC?8Q7a8Gd|M|CAxSNCy36^}7y*Vae&MX>pXAxJ7xM1TnCzT?~ zhFvRI$wQz)NdE!pu?#jly1RrbBqlJ%;*+zZU0HXZ1%W6Sp8I+aXhK`aZXvdv1>2Ij zpbpoW*^Z+=R96p%(fhnoUA^fyQdv>lEZbmd9xQ_Lm4lbWy0-D`ebsdfK))Mt`K&T}{6!TSd|>i%=oN95mlYe~>lo34sJ!CgO!}Fg#M8 zhyEo+dZutvs&=1O$hQ){#XyM=_p1bbdabv9EXVNe=1Wa25c6xPD3|?1)qZv^Px8SA zXcn{VmeTpc83+>PS$rYb10}ri;{1gV!F*~#DoMSN9F=d&wkmxvL5?{<5TtxkrzpYh zDV6CV!g?nntV>w%mX{&Qs$~>Zo0)dr;y^6m?xoRu;YLp5*N_*M8P`XAGB#i9sQIWE zAAfvlR_xw4G39(4qUFbG8ux|Vv3pa#KNTf&{jo60!QSJzmR(_rYh!yIv3-} zs_0m|!<&nIaAnP#A!kkAd*<`n9IWivS~l?$@r~RSn#u(`DDeZIoLhV46zP4l?pyxYH@Et>%8-dB zib5C4&q(u?6B`VFrwXTm-q2vU z*B=xK{BokZa;Oriq;+yOxTKFSzmtq`7cRjjqcwy;Qepmzk73C?+(jV?7*2q-3KAja z6ir)aTdUcaX~2JgtHU8ZZ@q=nbR?o`;?-QuU1&O??xqfb0T+2YI5GN&aaeBF>_cK+ zMx@Nb66+^&G8n6QPtDsV*}`w+VGFurWGg&xzgn=ojYmS`$t0a?IwND#zeY$_k~z7m z9HoI)phvFZDmLz1%l~JStp2S%Y!=j-{v8grb7#JOOf`2}dv1Vre}=TBBJl&@uIBCm zI9SlqL7mSt|2Ch=Dj#-q4des_-b;BN!Ha#*T5Ahl9S+t?NAhu$nuq)NBF}k~eWP8@ za1KuRD6`*#hcMbT@j@@14i=N22`$B$^x}J`wv8C=dG!cl1 z4a_|yLQ~1Rqvn+qc_rBNITWaY#ED-5308^c(xCZ3JOGW+_(&SSuV~Y))_-h)kd%;n z2w|{51nl1U2rjRG*-@@KAc;g$EhOS8>p3<3;oH zL!TK|09Zr$TV_B)T%RGnCLFqtD=V~_L& z`ThsOx9R!ni@du^vE3N*={Z{w@q@uD0t*KA-apiu!5s{O$SwUVR<&A1Er)X5{{9u- zihK8j&sJD}*jLP#pxa$yqn_=Lay*r^vv(w){FbMR7(#M8`J#X>CjgbB9{835I`-D+=i9NOmqZ4d5cW1f>| zb|i)#XPL+tms5uY*7b1O(qwcG`gzQLk>Ay8WzwcK|bSH%m8FdbJrvbDCU zEwoRRHVtcm%E=PC9^q*zzpBPqhZyHJ)Msy1LV~_%E6NY^0;z4bj}s3iASmbUE`Qao z&~yGVoG-Mtk)fuyqt$iy0om~7LbMOHzR5n&KDD@_)@FYRk&gPj1EIsVioc}?#Y>5S z0x;!fCOA%}>x9kYt(Eg8;mA^BqfxZH*gQJx#&OIg2K*{vR_4j^ktxx}ic!K_bK4Ve>mbl{tPed1+wGF=Y3y5Q4PC8oxrM#1Q=CgH>Y;pYXu~ zsl6dL?EIXngP|A39L#LkSU_z#LEN$=Y0Wym0N6oKKA1CDfMJ&#;D8+#zXVu6D?6k_ONNbsBm&Z3es~ zV7@;V9)ce;j!?ygPiajmg8irCmo22ab?iw!D?-R}{|!wF!gG44l_Igf1?L!QtO)kZ zbu5QFmC=)FQUf}MCHNBSJF^Ac@VOnDE9uVFuTv(xmg?yKDg?Vk891-T- z^Hx84gVQLKhtyX6EnvP>W7NqGWZGj25y6FeOxI-Pu;lC3FWCV`D_r4xD_<2SOLic- z4-VVQq-j%C{eW7jzTGJ-li$D3qCWecdCFSfOGFxAH_~V%uM{4KKcv-i4)sr>9y=Hq zhJLL#11YS9APhCi`WewQZD5@z`%gL7`OJclMBRbNSoR|qG8gMb&s%@~sfM7@c#JUx z!(CpCU$vJVY+bAJQXA6qCNnL>mCQ3;4?W0S12US5$WUO^(4w~IQls90`<@!r2WY2pqJFFW zwaoSsjw?GF8W|XnSgD8ZU42#;N*CuJrOHQjxr7>lat; z9kGobDplC6?Tv?)^SDL=!~gjdfAU7JTb6)}c57GszOcSU0mQV7iU-w0A5{PZqRoyIA^)_$Tb=<7$xLMV4v#R4} zRmaV$j&awKNz&q|G|Y6p%|}e-OwGjWn735O_wa~@&CR@@a8Q?l4Jsey&ZQtJHei~| z2xr61srBYVL<_`BbxH**D`tlYQ=4h2SWCS+#8}rLt%T76WH{t$X*1T%03r%{Hefg$ zOAI34UJ31w48H{aA2w*!QmFYRTVzz$T-ris)Hl7X^~?OVM5-6BzT5-h5f2}!U&CQS zApXNnC%Xe<(-AOnftSlZy92RDq;~=fCc3%Zf^4(umqKH89S-xs)!RW;F!xi3rPJmN zmVRt$wfdx5eiVJn>5u1R`&zrQ6Czd>*(^f1UQ8vmB;;(ySoetZ5+@{4vGQZAGbOzB zeP{HoENjb9gqB(J?HpW*zf)ggN)%$&ks#XT4QD4ys&<5jm^+$w`HY(OUMZd-1)>EU zg4XQl74V2Oo!b5ygaGa6P28vRj*$0+?67E8u8&qAR`>Gi-Yg03Awg*_ z6>dphBj304-C{XyuPY;JfNc-=lP1ljhQ1anH(3VclOxk%dFimETU^&mECA$-976U) z%>$pYu2XfEnhMfkO(N?hV)u zvHo1Y=Erp2uXwhA#EW=7;_>lZ!gCS+Gk8+Cm+%b0{XL$2xKB6!^gWr#M(H6hLoGBT zde1UP_!4zz3BresQEf?}YFhDX;<6 z$kDFmdDf*Zr7aVf5SQ*st}@n5VnXa`j><%~rZGfpuo~-jHY-?$Rli(9i1Lz70Ln72 zm{fh~IGKBMnOTnrFLJz|6Rh@#B$tNOnur$-3J5mnlPOulKZ7qgrz{)A7$x$V(woFo!t4T9L38zhR)oKb4-Hn(v-8MGKVoK>2Yy(@1g9`EO5?~1&Y z)oSIIX65a~bGNTV+NaHK>)pL9P4^vhw#D z&)xKpUEM(ZVOj2xx^A*%X=DZ|hQ_Fk}DYLj2Vja%( z@z_9r^Q5w9*LY*~^}^4K7fyhg5qJ#ogsip4WKZy5!v(y9&RsrP%ax+yArSng(_V2h zYN16+^IL3z1uut7L2J(|YG0)|4+ie3DMS)e$Kj%uThgcCj-48>eYNx!cou!!=>l@w zR|musWgFeaw4641uPD`hPgep`H>f%w{~Pm87u?}|3P79Aj!DJRC8uk77`5qYMe0#8 z-?P+NxBsguX0vm2tf!a-r?y_IHTbl-yX@R|(Q~J!quE-_)s8jkw7GM*Vuy?F>{D}* z(tkvMclWCA*>t%xPG7Fb*Qz+_ULAeO09dJ(=8Of4{E2vy;D$Y*jQ(xQOX=SXc<@uIKxFT^8kR5CmHvo0M~Eftj{hG`++5 zBoR-IBvmS=9nt}4%7Io(WC>SLpvMGAL+{qp&oGGv;L@?KJZ-G>@NS<}e9Ek*E!T9n zWja}%zAfG32s-ez%>Yrv2CAuJZj)vDrnWV2eBy9?i_?SadA`T&l!V@hYTGy{LEg9n!UeD<5!M6 z6^raus|{4emPD{rBLbET!;|rbz4O^fL}Ir1HZlw#AYb+y{#~sWB0PKiBX?SNg0Z?& zR?C)i<8mTyGWn^GP08uVm0@l8cl(^X#|2zVXRZ>h~pDNEZ5fp z`pDbqjeO}05237GJc1=fHp%*e>Lxy?6O8q*bU0p(qa!B-DJg zWgKXL%n&5@#aFtM7vjzi=WZ<_LbAl$_(8Z>;+5u3aE1GIOmaVtzYauS%L%HK3#Ff9 zG<};wt#5*hGu5742EIdk1L!V)XS8)(Y#I`OS0U|kzcdSR%+`dn^-y;7aBjY?1{bL+ z!w56D{jntl{^lh`QEU9uaN$#l*C|xe5~j2jwI=!ycHphZTPIY6=9xu_^~9M_Vl>Gj zs9QEF-Ll-R^sXa$ZqKF-k*4*h?r;hz&waW!Dfs;e^d@De3s$94pt0^+X^Rlevi+wy zwB@bb{LbjMQL&i?fI)(cbti#g6kv#cHkz$fx{=4v4_~R^oT-KqvwfZ;9^qRgFIK(t zu4+Rjm%{)6SGnmWF9{77k&6EiDj-`mU~N$*C+us@}`DXVsNk@H;~B#`;;M+(Ou2w_vBWi_R3z z_;J_Le3~w)iOqDguFT|yBg@g6L6mw9 zkDq5M&vc#(c+w5w=xe5ok@IAX43#lbC}ZSGCTj%CP50x|1Ut)gD}5)9T3n39SsDzoCRzJqxMz6P6A-QF`bR zoc8cyIOOk%T{S%E-%y^88S0LCd)nE;P|QDQeZ9wb5#O~sr`AKo`E9Yu!)1_Mo{qv9 znhxzfjK8|i8#c-gx{*N|PIH}^z&_kX6H&%6(dO~&xIp+qoiVlFHq~#n?ApVFYykFR zs8lbO{N|bsvSqFo(jt6SbmJO6JmLP8YC|6G8{OC<9@vIb5iZmbMuki52*Y)RQQ?7X zf%Qgz4hi&rURPVb!$Tt*g`40A_1A0#hmO0NDx8L;z@~JY&+JU?HX0j9gkqgA&ka1_ z5@(2OZ7pq^yo9Jutaw=V0ET}X_#nf~ps>&=o8}6`U2IVFmhgXs9|T)>ZI%*#3SYh< zLPo+~l0gEKrH{%K58?7F&o;$wvCEQJl-0|=P@2E02pvJZ#a1o5&0dICu$^!>8wBm@ zkMwkSE?v)jf~B7Do!Tyy17-U!9o{b;-jy9alqH$jjghZ(WZt?y1PkGN=>clgi^VGF zk7E##ijI%#{Nh9^x*UsZ>pnA@Rsl$~TNiP5ja4Lb5=`Mq#YS|Yc&8?n8|wyfYIfv&Wp2t{+9}47+=2Wq%h%JV zNPI5t=~FB|XZG|d5uf~?K4s!_oJwiZjGW8G=RM^E0R*PPuOg6-tXz*xXQs6$*Y|hn zth%h9r=4mQ>#`o{@m)k2(H>>UQuY-ksP#4jkE_y|bXk*nrFVZ-`h<|uJ?blK+o||W z&a4EvUY|a;0z=uyR#P;F$;m=u2-FjZO)Jq8#q=o*m8%c2O2BQsP}2|_HIYQ2=iZZ# zV_D_fqh{Kv@oTz1qVErk*&>%3?E0K9$7njSI!eovqcr`kYtonFwEugNfexS0AQ`5( zvA$K7r%b*0ZnfOq-_jrI1}6B5O@z*6c~A#0NDN<4vi42( z=W);D^%%ZFblvj+4(n0&x%N3bY2D#5oc0Ua44ng7veUXJl!U55b{tB3ZY2?8)S5>+ zq6$_GiT^y?zefAZ0RxsuJOlAZgp#Qok2)qQu~ytl5Wr}>U#3&s^Dq*U67*O0y2Rd~ zCz)&_^j;(p5+7L{sfw_>RaIWFQ>`YImNF1hND@2DV}}1ox_Zq{hvQxZPz!&8p`L&_ z0f80I74!P95$6BRe=W*Ckp43q+3dlsc zK}Y%9EgF9J>L>z&Oq5C;Ws@D{dL2bNM53r3IYXjkfZaV>HGb0LRaDu+Q#$VAk`ltD zE@Sn}(o#jR#K)EX^91K2X5;;TDinI4J$1-$PAsOmKU^R+Q_F0oGhbor8(c8aO>l(Z ztIWpsIX7Uz>!fJU5-p-6WiWk;`rDjn%aNx)qVzD={ygJJX~l_RtXnPA26WUg;NL>f zSXJh}biUSYlF{=1Y)-llLzV~_7I2>gy*}KG&=rV#96G6W8A+nc3moh+m%FLiKC=DC z%~=kV)5ksU;jjh}Be-CaRAn>Y>B3|?aZK$dClyhpfdv1BU{y1M-XKVF4ChJiwsdIR z^8`_(kdq+rJ7SYTRLc9AxYb#}$+0Tf;#vb$FgbLd9GoCTL9eSMlppOX4-fa7Q->#A zkn&T9^P{?{REoG#<xfC89;R_&M4`g3z=hu>PlXFt;;>?}@z*j(3Kw1+QK(R*P2<7>7;}yH zG0JUxIGcnr!|F)OoR#sz6~CL%r$?WS?IE#rUJr?-^zizpPJFdJYAiRIL=;ZdXvuA7 zeuS-LWV7H@ja0klQ*AE!c-|C8B(hoWyZYkuKjKpqQCL=I@;W|J!{5l(RHNCkDUF5D z0oT}G;?3b&hhVU{XP+H+6>)t^U0bD+xzZ~9iLgmWFppU`5T(0$;d;{)T+wj+r&7t; z4ac97H+L;VwZ{7BUkIwNj6TRKT-k73?K3ZnZf@Z_J3PizxZm|T$1TyWOP3A{JjT|) zv5%uaIw;u~bQNKrQ8orX^O(H=s8f(VRt4!b{twNga%bzxAqH=4;Q*!^;Nc5<*CBLf zHIt%S{@bH>eT>g$i#q%w_O& zEB}EX(oiV;c|?NI^e@>wNUW$5c*6=a`Go9z29Xaj1zjtgg1iMW1&4Zj@#B;vDQ7vK zqS@^z4`$D8%jcLsmoNLT+m-gwZ^uc~tebu~6(1ia!!$nrK9|@OJ`N6~;ewBCg!^-7 z;%;2kYpy4*WM?dw;9b@Z$tv#IO=Ll6=Mr!#ntfJ>rgO6##5xU1y~NJsFh>If7f?VT zXg;Vgu0pPH*BwL&#$C5c%(!R1P7pL|TC8VCgaA_-mDUlIMx_rEq_Fxq3Zdo;LJhm* zY_dggROfYQ4guf>kMJ z8``5z&hTCG>V^>TNQR1^gpP8z)Z3iZQ<2lM>(1 z>HB~Cbp3A;{yz@y!$66Ar|crse}^$Kpcra0lF^ODox}0y(d%-DbA!f~iN(nr&_^*0 zm1s=H$hw_^X{B3lky-Tum&$gDamtY`iO(fmO%8WxE@mx46J?s5kJzc&SX@SYrYP|f z`-vIUMB-Waiq{srY`QVu_WF%@k)ce6V@w8#_Cw{jPWioU`$h5VIq+?_-7K0|i>TU0 zFR{k#l={`aV9~tL1yaSqQblbod?IGd8gSTV z=u4U@Q?Jb2c#v}0=LOAeV>TXA?pP-;x!gWI;55YxVg3c&sTzcQ(SlC2q7ABgWmQoi z>k$c4A^~MLDZxXP6=t<#(Ow~TUAor?p{N9l%Z-#*We+@4)Hs#PnV8zKqI3z*D^Tc< zW;3+8VwHtue=uNi^JHyvT zzXP_OZmgTwe*#B2Y*j~2@TyJS0PtPs?BS7`3k~@*zU{H`k$itozU_hWckvM2 zk19WR$U~la2=fJl3#Jw)3xdX0UM@!R)M6TW&w$!v*qZk|ODc}p69E#gWN~-BeVr)S zI>1WwIxb@Tgc!06B}NfN5wNCjST+_!M(D5S!r+#Nd8lQi7+XnKOx)uRP{kMnlzpFV>4OogP1Ctvm61I@12`nICy& z^~ffMfdw)SQb0FIdc^Nf=;?|l-D%@z{a@nivy<-hf!M<`$}=8-JUlWG$36&XXoMGa zM=hbx5pI;(#wmzQo(K=nd{|AunDWXb=YCSdd{&Q)2l0A+H&iMrxCrYKsh!cTNlW`E zOxS(EmFWrX;80}g5TnM|6DRk+u861(DCnL%GfBG>WLgAQNRCr}^u}Kg8I*&1V#_m0L_> zG)|zN_{>0bvs9BCEnHub2DB@BDD{Z=%Fco4nu&N)8EXHl=rPe|xJ(f$uUhpZxQN9G zhpHI2V5G_Vnobn5%F6#7QcUC-;!zpbFtTPNz#fP#r(>5hyO)=Eo0l`amzT$uFS8GK z0p0tyXZl$OE#Z~Pv`)0soCpKLS<57GMVK%0N3fftAs4!f2t;)NGnD>@xt{v-8` zxdw|L6T6Opkt*P?I-s8&a2X58*aKsCr998*fWOUlVlVSNO1N_nKkr^l!Jfzdo8wT| z0fOYH?A~-=n}u8PN_igs1BHRFZ?XPsJZZiMAFc9CKP9MTYWa6jNJ#-NkO|eu!9V3W zi_)yyNAMFG$j?vDCCn_Gud+K|YGM}7RUf1D$BpWvm=A?TPBUT<#23|q@xp=goZ6gq zVl;y$GpaJ-pWYx!W)cNG1Bs=^n;;3z#H&TL8Q`m1s)1W(|fI+VB`{Xt@uPoBcyVmV=vk|9Tn@M*Hostjb+l3DT#CO?DpI6G1mwLb|=Zc z2$25Q_S4{=?eDJJM7wUEJbP06Ba*^yKVj+i+tJ%}^d9Y>nQ4EmZhv>8zsK$N+hwHN z&k;$w{U{F7C^pmh(Y*lj?;210z1L>cyrHb#hjNgQ5v)O13F=p+JC_!3a;vT!t7|1> zc7R$b_S&1*=<0p+dsrh4C#2zb_up_tL%U4hkrhR`lkJfquoO%=UvzGlOpcez;DQ0U>R5`+onLhoAjSOe$xC(X`Nnfr;8Rw(NdZ6H2)Tyk9xRZd>!nXNU%!mU&eoj zoX@JD5tNUryI2m4tN9)KIUSpW2Z4HaN;NqbpU?vksJP!`wqu>M*S6lKbZlqVvo<7Ym62fFsgz7vdBufEI47ND)hd=B0I z7v6I{wuLGkq3YUbOO7wqT36Mv!eUtcVV3Ukr)U9siOEEbj6IcEXg-Rz=A^dOR_$BC zwTl&{)03mbTn(D}CRg54Rvd1f*x@fL7EF-b5m@k90JV9w&M(!;)^F@wr%5L?t%VsG zjNOKfm)p=B#a&Dje*I-TxpuE2_nED$a2ApMmFFtI^KHL8@r#{XS9z{Ne+z8yPo=Tu zWOuFkMQw~*@KH9TKJ&RsXQ)tyBX-ED-dyo9ssk4sx2xr^yscQ}ylA>E?OBz@4W)CW zj}`{vO$(`|blQA>?6zX*fQ*WvQ-~7g?<}9t3+48Bn_g#PFYYaodX(<7h8;nl38L?x z03FoLPInkh?}@WIF^B#&8ebDs$*5fzq*KdMp0;1hw^Sxxy>B7wDBkliyAZ#ymHre# z$r5%f^vMP3KG{p3#4r3g*&)RnfE3)x$%hpAz6>7*;Pm9+z=GF^vx+#rEz(Va*0&j; ze@l60QJkQ#ea46g{thxO>XC8cR}y)_HtFiX$F+mpswEsVl?c`*NKulFYXP8G_|xV=E^v z+$3Jyu(#%N=oW}oi9*?NK}14%imZCL=7Kp?9|Er+9a$m+bzzWhloM*vxOl^jZB)a& zU+Sy}9|ZJ-o#y?|;88gx2X$6cFu3%!q$_%*BmA>~`Ovcx6U}Lyilf!CjCKU#4{gAc zD;b}_wv6QpoWtz7^`Kr=WW5gKSrH3~Z{n?J7Q5^;%IfvD=f5o8-~d7Rv($>3@=T;> zY+QWZYCTYM@ltA^tr|KJ9>f$;M^O&-F|H2!Hdf5;&UN1`g*W&tyseV)qwq({W3H97 zg$0cHnCoWZY$z188Y`TbiPWoN_D45#0z&oh}pw1 z;N&Jkz%6oCIBJVJTx&=ye*u#%Ed+l+wgs{;W3L>D<&pf1pyXS4U8atiruJ&zd7A|$ z*sWG|s@8S7M%QT=X;D39L-R~&;VznX!EJbVQuUFyN*f)RG`bX(dTM;PtoV4dv?Ar{ zr!xGlHF~ka zjbxzPV|T;BUrH(Kh%NBdrF_3fDLtB3L6^#x=%ynmw5Hs zOze~Bnwb7Wcl35U`rSHuH!*EAiHLBTpf*;o;Y$(Kq3*;nJ8`8-j3Lj>dQ)**AU;JA zs!Jzr%8^_|r~ZWQbTjO9S&}Y3ZMylg^&doI{$FiRjCkRN0q~OOZM`(*`O(iMUg3WN z-k565w87a;=0Y60@6*j}=~UneL5~w=8;m`QaFuufq1}oAL}GGt{d4 z&B7vb8oSHfFB*={2*y2bzRhhll{xo?Dp8G8wSV!)=0I4ELj&ah0eg zr)u}&kE6?T9HGgkYu8oj!QeOZb&inzlia9b=A1Ld4KzqMGCWc_EhltFW#NyAkIF)I zCkb*orASoO z9%foEIk_}g8eLhYc^Io!Y6uy4){I5LeVL-&;!lVUC7+pMz42FK z1IpaDsRZcxA&UgvIQLrP?gp#D4Q$J4(B#=G{>qhQ3hX!AnQj86Qfh1^!tkd*7DpZK zi^NL9M&1g)DE^o}xM2L#2#jq7<58&J#qBg!&!*3sEbDmG7Jm*v6=qek6)%R)$ z?xm6)Qxy2Hc^h9ZRaN81XZ8_hE1E40|EDNj5i+)Gl1}s(iLi_lZO>`=Ts7eU(ZZu8 za}}@H&U_K^Kvv}M;4kHQl5bGZr z|KJd*W3_PNys#0whg)LQlHS8OQ!72+3umX(Sf4LeRhT90ymCtIa8(i}^UgY?gDO?+ zegij!tq43*2 zq4F>@Oj*<+R=D;;8Yoz%2Lqr7s}Qp-usFa|0f`^|%zO9wDbFuB{vfY$YH3?eUYZ>g zE1XMavcJ{xn$Xl~cHu~B5FhlCy)qlC_Yf_;I?LQFXPxa% z^E*4ujVetLJ19BZSJ|*w-;n5rdoH8tql|*c}&0gQ|%xItMol$)=EqT!Fb^)6@8f0ELP|s zW|~RW8+)CC|GW89B`D5j&-WR0#9w7}Y2NMcac(N%M-e|)(wR1aHtQbU8##E%W!*IY zjH-{mQfA9o0{oTZ{Cp_>h^QM<{BKoj&!4VvGPuqmR22pla<-aJ0h5c+Rj)42HzyX! z&Z_F*-B$(70dl1E4teh-nLjq}LtZJ*PRUA4NI)%7-_N# z7>&>4?K3}AwhYnW8OZNIBT)FZ4Rou+D9aASw?=RU;@^{(F?veGD4V**7=85`qio`n zd_T$evwT0xcMIPwe0TEQ$@d|?5Al73?;{8`gnvhl#^_wUitsAJz}W^Hg4PurwE~oj zslGzC^-DESw*04*UieY9YF&|P-TT@vS&al!Y@D}7b?vD0#SV9SvT6&qAsLZ1KavqS zQUakb*o7yHw;WMpb&Lw>t3%Eugz@~|Xb3<~-PD*yty7tYcqSbUf_qqBWxBi*&^E}8SI=A=a*jS+(_>YCUpgsZPQ;jb z&fghF*hFO{y&tXq4bgNTycO1kkJlBvlYkCaOoI7Kc^2TEToJAQPA0)0>;!#vg7GTB zoJ@jC@#Y)}nG>4(#6+3K(Me3mk#tLPz8t71w#pT%QMIC@(RwV?s4wlje~Xt{cxM%j zGCEvWl3xDE@Qo^J+ajBWsk(&Cs)Vzp1a+*@jZo-UFWBId^8g4qJHz75^sP8pZ{RQ% zhAD}C2&G1=*WlLu^4*XI%?SJzr@h0qh(PI>l;^+?v^>fpu;#m*X2B&ZA(}Mk7$5+x z&aQOT5M7P*6?RrH>RP+-ANxVt7Q(_5&HW^J5q8;3MVvDIqYXV0Rbh;L&P1MQLb` z7qOc~m>zPbJhLS&7l>nx+TaznAGdk1nn-UwDnS$$b8TjYXP%W&LuS*D&Q%+106xFF zc6KpOz{DDRAU>SxGrNS9S^>3!K2YqZ3EY%|QKRuF2uMV^ zWg5T63oGGWL98P(vMLzA4AZ^aVR^TvJXxxtXHXm8#$w8;Guu<1%jkM3k5Ps&-;Z?# zOi-HC4}u}(c?||E_U`y4Ueg(P*O~|mT$T#7z6*KzuRv@vc7Z0l1M!uEVv}KlvFPoy zG4L%m28Qn$Q%#FME-z!W4-7nQjWN0w3_J-8>;nT&dzNo7@FXzs|3lroz(-kJ5C0pI zg@}n8kkzOli^dwo3yPP-2=2-*JPR9)0*XZ>7_Q1C!Y%{_OxQ&8_^?V_ZK=gdTiaS| zf8|$iAYQ^nE~0{XgL+G~+9$4;cqt+(`~RMqXDHIkLtv)C9sum=3xa|&>AQZ@$1&O+RrQyJ^HiO3l%-0y|jGb z3}kA9zv7IF*gv6bL;uE$E3SzikrL~)MPDRK5`jFUZW}i*8s;6PKnbL_2CEjA)z3eX z#%dUqD591!iGHDJlMqD6Y?wzSkCj-%JS!WTEKot#BZ|KQsm;NvDYVhDSy)LJ){}~^ zq9qpPsf{8n<^3FrR-Rdanol;Y{7O(BWW!$u(L0EXSnjJxxYhj@e<|BltpuZ0JOID2 zjj0oj#G8)l?nKSeQT=nGk|?qy*BDi7f|#H=hJ4PqVV?h<1es@kiKBYo zZyc1q`3d~MzB?JsGe`3m{WPFt{&OK6`pjDx)aW!*PNvg5n;hwMu9hDQ7ZuL|n(4kq zk|f;cFyb+%Vs&7;&nJ1x`wXzFTRz4h&?+8A(rW8jLG=NGg`1>@As(2&s;;Q+<(2(D zkrrKqotAgyP_Caqap?6KIxGQqHQi=DepugNn*a9`E3~;>>V4OIT87TxyH_w=|#JnDs)+`vw$oM!3$oy0upmB$r8J zj>j{lZA>=vc(y}cgz}}lzX1SCrMIk-$J*6(L$zp669% zEXTpzJTj-nid-8EDv-S1Eq4Q;ZFg z;?If;w|iPfv(>QvbCv2hDpiwC^|Yii1rwfhg#LLu7<~6 zB7vTXk5`*)G~^)tSnQ$9Bm6@bFO)TGt)4Ic75hC+;N4WqK@`J?K3POha}eE2*(^H# zI+(&C<7j1G8BlLS!|TXImQFr^xKg{2q^-Z=OVtbESp5EAsn>3)wvQ7;(G;!XX# zfK7Sdy+fruS*2VjDLWx0g#CHfl$u!oDSf`Ae22}Cn5|J=Cn#C&2hZ(FA5mib8~Oy< z=4U_VT%pggV3(oKffKt_1jsWqWJRC*FVTetb)nS~l}n$G5~|iOkj!*%Vnj~U=Qmx! zro0<<$|F_EpG!)IK8w1h)bvp*lpLu<$g!@+{ z?>IpTCGV?}Ri=t}>5P9G)HUO5m2s5LDCKm#D|JqIH%r1q@e;UEy2+w+Nf)aO$LkFL zkPQE=iS!dPpkHcM`Ml%ECj=@X>+uefc`EBW3|Syq#QZwB2xgfe87$`6Jq1IncocqS zjVRU=Bi*SnwK)LVEUD!$HGqKvfT5_kx5^M$+j_L*r`2qxY;!0E~u4o5otIK(Nb3qO`iU>dulofKK@K0C|7H|4!Djom*b z%yfUCot@%zE!HV-s>CF`b7)xJHNIUjn<-&18|E*?=j-@uRlHxv-{{2mTziuUEP+eP z6LiY4D&;Xct8u2_}py0Q(k_u8z}p zu}Obc_;Wbsxr3?3i#mA6?9x20x#9l*{9RV@R*^c1OVM}lq8)oUxdv}7co!Q;&ox7(I}< zDvy0;5Ot*d$k6C`~CkpSN?Xud<7ll;qRI{E!7dD>v?dP!cWlE0Yp zuE{2U)=3^CC{j5zT87@8erCE0nNHBH-ybTX%Kbqp;#uY;9XA1q$&rsoRN7hSI0t2A zO6A=DJ+WOZcN;F^h7-i=sEY8wZAQGqEj#08HJ7Pui(dT9dewD@C4Ed z25ae_uML!Ga62^$Ru1_Lk6I0MPSG@KB;0b}{&yJycM&P{MC851r#UQ`YGbiyx^Eyl zEUzuUURe<>(K~ic2O3E_?~`ONYZz9e&q&6AS-Kfn3?@?jWgR8#AA@@8C1cevL#aggs7{>5?T; zypm`TUZ=qSgs`pZ{xmT*HOz;_T;DKHB*B|9dL@b%oh}Dbw5p0ay7YdXUR7Y+#i~N|?rM@>mhMj2NzxKdUwWWU^T~LE zvI~N@p`X+BSawXwCST+vKTVQz(c@{a%Mx{u!30}|_Gh$OWJj}*<_~IEb&Fi?5cYXO z?JJ?rh>q9n>uG(2V8BEY56iZ_J?hAG#4jYm{G)8P8*4vZaPm(p9zQU1>##ye<~$RD z0lVB~ZD3PH$O1M${SYLI8+4j@U$TAw6BtA`nZv}vK*S77__#f_1T`s&<=<5jKmdU5*p?m z+mA&VR7>&_}O4c#lQ4+D@5@`&4E^%oQg$uhYSRF@0Fa*wt@fBEd|{=jQpRdqDJNk0_K^gNh-{Y z62+TN<b*Lz{g`*1eXHYZbq%7oSLT5Z5lDi0^+!?$YEEqG(< zC7ZpBomo#;wDovhd_K}gVQ1fbmGD(@Gn)!J;CdY}4DFxVkh8DW0p}7RqcG}#{veWD zf3-=bwp!Flzi}BO*~CL-emPmu^idmYb_Q51HBqZa2L3G~y?SrBZZoIhBUSB65@O7t zhW{0`gEA$S!A001XkKEE`S@UJOAD(#SIO3v`*Gs=i~{CU=>FVy+`jO6WC2wl3Qi?`tQ*|z|!Uu2( z^4ooWPG4iVTIw|_W2-^e3U#WY{H=ph<5qhfyITrEdl5-oTxBE@;%nX=^>Xpn#S^03 zXo#Xsw&>fM+hU)X=U;vXv+XwM{!y8n^j=ja^ntNY>6OnYHUXJAADMYGk25H_8JHNj zX5uE46Ahcgb#0ALx_=T}+S>^Djr%;5ILZZ_&Z!!8*sn>wtMH!OHhULBhj z9{7p|7VXFSZmCqL_*#|;ruz{FQe_U=aUG?Etrvm=zlk0b9{3h-JYqkO30+tV%WW~{ zi7hUg?ozYQS^9O(t?nDiF29Zw$er>o)1dQ3OX$8@K+D>wqX&^)yQcCfd6MZ*9GbWw)4sJb)QdX54|KZ2aQXj17Bs-}se{&WMM%%58J znJ3aUO6VG;%9d81>Z!KoGsk!@JFjr$ahgyZYt1FmQ9QlLxw7W66%@jd`()WlKDIWO zNhcA3Vy|HcH4@Ebg#@U)2C@60mZF%>$OxhYi0mt}XTc~$*F}g3IKIii-Y};fgrG{d zoGVTw$ZtP;mqUj0jLIj=R+C(AI9je?`CBVBIqp&svYcI2rg~h{W+BR?P1=@ga4lCo7!5>#!w)Hs{J&KFIjvwfwtjWXYYw_D_3EJpH*@e=EwbfPMdg5`2 zk+z@nJl3B{{Z)Bz8vpHGM5FsI;&Ay@c~48%;i9cNKHc(pRG{(Q&OqaV zMo;qw5(XOI!}m?Sr&&ZF-FWJ>t@*}U7C7-uJ&pXWEIXMZ>PNQlWvosdjR9vo-|=K5OPB&y$c{5~AYM!Tm&)IYY0Z?4G<8 zi9~8eq0DX+wFmipd3ug}L6%~^!{kb$KO`F2GZ?%480IHCm;mtN^wxm&Qe@z!?0b@2 z5mP`{Qv$_EJs0~loWD1m|MlRHlZ8)#I(J!a4bue6nx*@rE^P=5d<#MK=!r-ZWqzK| zuq;0Y54)%AX2|4C&si8WCS5ym0()`?7s-_C%~Ke`6Yig*Yh@1f1gVvjOR_S3OC?yZ z6BMFkCc)1$2_9tsOC`8RCpZ;OAwfeXfyuj)$>x;zrz%xcr}~iwb45B;N3C=T?>v>J zMyDy(Y0k=|xtJumjO@t6v^|>Yd2G@<{W~!eV`omt>@})7Jh#3C8DPt$;~ysQ079WTJ>C&~xjkNj{PxQ$Xuvv|LDWPlA1PZ+ zHtF(?_z)=-WG11zJV%*$4%2g+ToGyveB0WTmWNvY9s0t!5(mjQzHj`{_6*P1@W|kO z+~{;~UtxjbX*elwJuOjr{xZJR^s8x{)Bg!JtbX%Q?{0P1607(yQGAZ%WzB!H!S>_% zqr_*rBc$S-r^>=*tX7^;IjlUkid6vfbSCj?QByf+sn3xg>yD%1DewCYQih6*Z~aH* zpj-Z74fBT+MYpn0ugr^eGtcRwSopz0hSMO_FwcJ()m_T_CzW5Q48Nm|M5Zc*(P35q z{&CEBeN=hAsQhS&ij=p3%<&;60lMO?V|B$#70~mKW8*>1s9A)$r${z=vUneO>xrQV z@T@(Mh1taghPA#{O^LKYwdb~{U06q8)mUCnlpO4)(h>Ez#YexLz<)3k%q*t`9KLLBNn?UXx5mwVrFQliAi zhdjZzZq9Yisi-jF81cIAB}TDuWtBFiQm>&R^lGwzr#gVW0yy_@?*r11DM~3EL3{Igc}{ zHc0b{C-w#Bx9DP~J0`J~`$cIex|vzLnXk$rkD-=R4fOHlx`9GcR-$+T;pUK){6+q% zAou)I8feINwZ{dSf%%7mbSveaf5bl9ew;O&{c9dkjt?0F3{B?Sog&_isv?di!dV`c zQ$kvXr`xyR81`B0p+S{)F5fL}h9}5{NiWG@HR0dBM_D=!c`s}%8_bNv_425$Eab3j znNJ&Ygfzl7p{&}1iDCJ~4&IHYT=pBmmSm#^M|JD7XoT39F%bVNRI3gX2po+Mti8nL zA*nS_5_Af+5f#shkMm4wU9bvSxAr6^@6da3zBGUaBJ;D=f?m^R!E)lJz}i%vhv-*T zNz4jWNvA2u`+@9fc~GG>osc1AEFYp}&W6c2LQMBy3Zf7BDV28VMNu6xosb&V%AfJ_ zr$+uT0lfx|h7d*e%PYi+UU)sQPB38iSt0Qv!D2Kh??(6}I^}J?QK~7(#0EHJ?y{cZ7z!nV#Ru4cvfeh;7c=dt$yO;XV)U!5q+@V%e=c&N->Y%vanX;?m&Wgppbxj>+DZ=h5f=8)%t->6qX&#Ryv+&xpC@@~~( z+cIHDr-yae=1dq|bDs`t%Y^yiD;@S^Cd^2A7wWLJnXnq{@d$&X%@N}bYedPk%2K(S z%-=1wNgfl8eF@4xC%I~ol=oTzU=@4%$lhJz3|>k-Z+1`GmplJb-pPto!pWZIXN4!k zI%1oBdq^r)JO(I1;g8o+-eUnXkPVokYq1)eO;UiqW^cGuwRMm6a7<@%UIcUq&VM7? zKgh!y{hKA7JnRCrEApxn{=C*pl>+f2p#SqMp(LO;&vk&%1v-;wT6an|`?X6XbWxA> zFlA@**!V5Aq~00rVNWDB>9#+Bm1Komd_IagWh;~N-UE_Jw?f9SE}Nlt2H|7ii?WV6 zK-$(*@Bb-P*x@#ThP8PNmMde`xsaxhM7zXtS_nSg$3G@5<4fpL%quu*bgTl-?Eqf{ zt#5+Xd(zn|tP%C}G(WA=AYG2<`x-%-uNu)c^kPuw{LCByE2NM90KVFEhEM~RzLoF@ z;R)~BbkKYiw7;6Q%u;!`yjFyn-~M|L2z=EBQm-)~mE|7dS3^3XL&`f7 z2=vLL)*q9O8-t#A*ji z@xwFNslyc-@xcUzt>;tTCkO&-h8qemUJu)Kc5D`MwzT;@cWv=EGo6riaD>(LHVIF7 z&!)Fh%6=&Ytcl_QiT^BsX$A-K07)z<)TV7|PS#Y-4DgHcYJ9U!K=b(`iQ>@!pzP^5YD`GI2CSaz zQR#Pf*lOg+1;~S27E3wxOZNw9Lcj6yfobt~J=5X`dd}}YExvJ3vVgxAuBGu@fq`w) z%(1~*4u7B_<9hdb&rdVcc83}0M&d5LE7mh z0G0~%Twf%p4#`C|X9xX|+SWo_KrO;KthNV$*p+;$wk!UR*Dqh!uPCQ}$cdw{xwbSJWUZ|C61=4)Lijw4)M~A*ELA7 zmk#Qcx}v1ImOUt+N?p=h7L854njK^EAr}c&pl-qLQG`c>8aE)HB+0gx9w{1_f!3z+2j4Mb48U1- zA9p6bLGj!8*9A||d4YzJU_PJY6Rg0D8c<8YUL&2y^@i1nQQHKG3cBgfH&I}Gb4@N6 zq|YlAk1CQe9JM#|jNi|crrtw?dYbnF?g@b@WA}?gpiG;Luk3~yScb_ZSf=bR%W`{| z4}0brq?AyG9=S~T?~+g?_>nq-J)^d05D0G&5wUjYi3IiFcC77D6p!A&5|Q%0IbFdi zk>s3I9p$4Ei0lS7xST`zP8O~JnW4}fMVT1uU}vhl#WyjgupL73u6T;wt6=&Z2w@{yBs1NwEp`t22k|9}-{#^a?7wV{0kYB6jnHH~Pe zCuJ4{uS;ikq-t{Sgsb54pWQY_MZzG_8=5n z19&SJmyL~;tzWrPc%&cDO!qf5Gfdl{d1UVw06LbGgLlLDN&fXZ|2Ccf=aT<*w?<^VV$Y#uh191z-2Qu&t3~H}SLdpeT)!fh=BHrgl(H$Y zp(*bK(gsoB*UDYOXR%rv`9ti-6e`mFutgOqeTpg|dJ?!r5w)@|mLyOD1Yq|UfC2)4 zNV>PM2Fa6KdCD9!&*K#``)NH$@Tf-Swa-DOkE+5rhP0hqTN^Ay&;Td-NxxNlUx_+|OsH z{$vzyvGr#=pQ4f@TPL6Ub*Rm!p+mX3>Mk8vNMNB3Ea9_6f0puz{z?G&_!ON6pXGcq z7|Z7%K1C72X9b@X`qR&+Uw;}Y@7J}&Tg4w1P$M(cNZbrXDQ}IceW;a?dI>Q@D^lJa zI`xy1I^i9nldNU^ufy-x;pgk{2U6Z&5RN8F4l~FYyB#PiY2V4xW!hg6TGH9e~pbUOPq6GG8opl_P{zZYmzexO&eY8hlDJ7l+@>^$dvaw;DHe~&&Q(rN_qb> zNf>1XLoR&w!YPaoa{vQp*BI8sc4Ockqbccv_J(<{w5ENNvQmoC2POxd|XSFh9ChYVjQVPSoP}0`mc2vhPhT=ygN7rhZzbUZqoSm(({&YDsxB zDdW$Hm4Ng}=+#qY+?{tQgX}>?!Ob3K4Ye9a0Fk`7b*MU;awQ9E7VB zoZ~c{eFEnzh-t)^tZ~sax~yYWntvXlDs>X9*zvNYvF>evjh*d?9d^fH0UV8_yq}_O zq5ap$T^DHApi3^9`sZ=K?{kdfp-mq|;i!TUE*_ zI^_TmN`|mQ9IO4G<%u2QJIQk$?5|ddFVvCeolN3VC*~3r(@)2Ic#@g{eDiTP)DM4; z_EzOiC58Hk@*zj5ScGBqHw|AS1DDGYrZ3`GtyZnlBT$19!Zj0;0Pp#DWmTX@99C~K z^k#0O!+tTdRP)KkW8Hz4-Al*G?2C2L)g{~y!sN7*d!HZ}U;9(uzpJk!(I@Jl(vaTLn{mNHjf?w`bcv8<%1)bli1Z-OAiE?_8k~4*nvbkTKHJO@3@KJck9HO3s z_{7ySL<(mY6ao;Tn(T}tPHL1FZFClD>?#64>jVp>ITIz)@ z*2%yG*M;+6Rr}H@?+=`eHxSYElq9MNVFJ-IL2@SUmH=qbSSTechuK-g3Fpmi&g{<= zg@P+VV_7KAt#8>uuCM# zxQ8OF3D|6`hl~`&qFou|GGkNAGWyHaN~Um$#ZLR)-vfYEykY-DeeJL9oS@xt%s>RX>23lYV7{H~g&|C9y75wPN9y^3K&IupPhCu5#cGc1jwbT&1%=5@C!R zU!A{Q=YRvCN1bL&co0QHq} z>iaY-Q450z!^^BFod1?Rbu-MKP`#1CS-8hye0)B8gwDHuydwG8Ve2Xu-n+5E;ys6H zD=^z@yttby_7%N=np_ z&a<%mIv+-sIkFjA%PpVMqe^fCn3~EYpkoE994IKq*0$N}Hqj=$cYeon($0x%OV;VV zxzFf0QYZ0|j#YoBogl3fz5B4}{q~$}^uvcn=i4IPM({d4-s=;qyOJd$DWD1&(irA@~NISM7iz3#+u=S-!?&B4k zocc@y4!6qSGMUtqTU08j*?;s|PJUn$5j zsRjwds!{FDC7Xw}cb{~7U-=t#32Mtz!jq~B)z+s@@nNf)$85LyQ=8Nts;(giT^j8| z`eUSO>Nd|ZVMo5&JhxpbjRzMwBZ07@y={Z83t^f$)r2&+E+;y5>E`5i1`Cz@c5(|u z>XqhrdjVmd$8;%ejbEP??Vr}Cw=Q?rl3NT}Wi%4@{`#y~2W|!{dfJv|m5O9}yjL~= zjeI75vsX$|_P1i^p4x~3?uT2Ny^{$=3cGJ$q9LFt=T}m=KMAgPjy>dVpvEx8{p3nS=q9ZDs@`6_quOHasxkXv<~KE}XZMtnP0b#EY)R}%My z8CEpDECxZ{9S5LebOzZKeq7=Zwhne2fe@3+4H^R0ErU=L45oEwlUhipn|-<d3fM$k|s>gj*C7d!!O^%few8>e@WA4gQm}&sOqE$d)ZI_|IjBQV4%;%0wqfy zRN@(a{omuid;yrHPqV@f`aG`d3yqG0MnOxBph{LXO7CUmeEDS%jjr851-W0}Ng_?p zEz(OGmDJROS0J^;8G?gV%%zsywx1=96b z6QuFy_X+Kkx?9c^-N(+S{lj0v&QJUkVsq0LYAq69TcW2&tS&en*-7pMDP?x}6aWZf zyS^=Yic^+DFPU)lj)?7;cdnEAPL*0+pr;bc`Y_YKCB4|vUFRgePJ=EN&?9wo1VN@t z`g2Ktg_HhVot_7r+M+zLB+YkN`q9ZDU|UG8Gn`!CQd@#b3HrmwfTvC!I;e!86P;AA z=^!6LaVOO#f-sEs8>tsPEpk*tvd)oFKsMFvf>rv?ef;Kft+}2unrTFvQo)Pz`k(vR7dS*8|1Oq8ayI!t(#K;T5;Xm# zW=)A{6pkAc0L2GvbTzD?T{1B<8`>jg?Vh0Z+ZyIp5wm_5vqT;;qX+my)+gd3Zx05V zzU47X*MhS3|5PfhB@t1XOc3l6?$Q&a%eX7wLc6-XrvQDVtU`cWj~W1#(H9?4cdB+0UZ% z2)zsO&Ms?Pj7@ok$0RGMN* zlOTGv6LLvCdNTJSObmn&?b0@2Hl1s}nA4#a(iGbX&B~nlHq)ZX0{f7Y3Hio|= z2a6KyegTHeUSl7_<^y?mkCaiow2+lW$nn$H%OnyytblL(qEm&6O@V2njlJ{nrW5QYuLsY+cDs&_=0LC zQ7%cNh!CWqA|N1D%G?)~o4$`qzqX1@0c+Pw9|o~OnUxrMaGDvcW}Q>~Gjwp=@iWc5 zCbVW)qM%zKv8t?966dot4CHUf-(zipQNU&jD@oMfFA70~LqaP={Pom#gY7?&P&s7n zXqaol(gtVA7GJ_WP}*P?y@M|2Qw>;Lj^cuuPbHFx?IE_j>!PR z^3L4I8e5i-V&KPa1r;)HYnDc78N_$IJjTWkReO4FM8oix=9;Wa;Lp`#%X z*r8CItM&576K1;iv;73s#?h}kE&!s{B62Fo3WV#3*f9%Y?iDc-_q75C2#wgt@Pgx8 zIE7(O9hj3!!ufCFH1Gf#3zRA5h^S%qM~^u|pajci4SZ+oZH;7>Um$;vIikL5Qgp$o z>zP3}vMwi?%sK02^lmWSGc`It5OjV|5-xQf3kO`rkaV}O|AM0rJ%GG3_A!Yfl86y$ z+?oYGnO`b(& zb3)8mS`}?%&Nn`U2(VsbBBbV(DeuWpPNpj(>7tQJ4jy}2F5$E52GIw@g}kMuaJK{$jPaB?)H$oOwADu5i7P*RZpq$P+9G) zrk>_PpHs^rV5Mpa&~z>N{7P{@6f6;Y5$iQi^D}s?gzoTS5BW;FJ}~ELov!dfS)8}bP;yC*g_rVz4iP5Qu_8_vlLoU=6 zI{4EKY`=%`AHd9jtjeT8I9M-Rf2dz~swNRlzAxn+20}tCze2y1)Xva(kt(EA7ZNI> zkSi&~!Jwat{N_`I!JcD@tjtEbROH(_@<>jOb@a_fzBf#8-=HIh3hpU}1F56m)68KK z_1T%(&U!>8|FKR!Nnq_Fjpwlq^7^CKbDJ96uOh$uMAg2h$eJpNe4h@| z@gB0&A=3U!rK+##WGBnGg7J5nf^VqEbvkmIM9Th}lk;g6xk^W_lSttWC-PS+@)jNW ztwcVRjcitt*XhXq%*Z-cXCtSp$dHcgEv*(OGQK}AV@4lRDNfcYYWkrani4cmIa>SI zd>{kho5{-^L`qfSeGJNof|D__PhRN691MuuP!jod9bF*Nr4HraA=-35rDJ}0w3>1K zVs|&aOgjmvj+uV(@7~9{Nmr|0XmWgiM zu?~Bgva%a=&*G!UH*J>5bztIziJMp>O-SUqrt)v^zxlU}xcm4wfPX{(O}c+9&vO+J z|0Mr%w#_o1YU@my-l(lJ-X~5xRJKdjmrWlHV&Z_UVwlH=o^|t?NDL^@N=w-@+tT90 zM}j@lT@Cv$53%k^RI3|tRD7t!W#6j;6TR|s^OfLp*~^@$Ze61Ax$NmWY5;}GirFa* zpUaL&6egg>2*0Myg5e~HCM$?qzU7QxXhkqF+MmAgN9}Li>DPj6F9@givsQRop2N$2 z*7MAXOY$MV+RqXVnCwBTj8{4tSCg{oDM_UFvsOsX#N84ARkV~=j^58w;m&?mVtBVM z{6{}wyQC$-X*7pYSN@(HpK=OTVA0xY+|*Ov<<&(Zn^Adsi27d z-%~@TGgH#LS`!nVrlGb>C!w|!4Y`S6HJp%%z zGp@Q_?Nrf76I+ccZkhEg<2WC8IZSNy+-AsEqPj$>k@&WUs$w9^y^6?*P)WKNlxT{) zcd24xSXV(gw5>c*=7~QlaHQ59a^8`mrAKCfcBoCtM2XWeT~g4ign1sTF0o#d-3jJ{ zTO4|@KOvcA8J61Uc`V{CQTr2#OSw{~y2Rifv~B*@M^qYr#W~Sa(GL^TBEZ#rGT6#% z?s7Q@bJo-r0TW__qQj`$!enx%SWIf{)ZPT!9KFcsvJdjux0==1%b}NiRoKg%uR(SL zUsj?<*pAF(kPfb@{IXrdDL%(41Y>UQvv|A@S9(;96|y`5Xa%+E_2@#+;~RA&58iEE z+@y-I`ZgK)a_Iq$Eb@@u2g6?P?34QKybLN|nHs4<_Q&cg!w2L_H&9x{e8K9nMa}{q zL^+?l*k14Ct+4+)1LgPXYg6(>UFVg`yTe|QNpLG)2t-C6k%BpbF(c>GA2Q40e$%Fp zlx3H7zt1A`O^cW~HSzAE5p?D5DY=TK@D z4~!KJ!Sb>dQccxC3|X=%20G(M0z~ZRS*|{Qo6twD1i;{01MUL#Hbs-z@6=AouP=f( zsoScuMj?9BX2E38bacm zD+1SYx6Fi1>*S2MT;yFZ7v2oA=d+NJ{oNPDBpt1ey&GL0#-{<5P^~7|@ZoN#Su$%q z6I?`IJ}fL$H{oLGeYMgajS|qbiRCr3S~_3A`i^zxv|!bo?(;*U55>OwY$l9vvQnnH z_NrS||L<#!DGDYG3Vt?Q$hJx)Dyuw?5AUuX+bOTwzxZkE)>g`Zmi@ztJ_Uhw<@mZ} z`;pF8z_s$lOt$T-q5fL%p*#>0eRHkMjp}7>h8{daku(XrxT1sc1rd*>YSJK=TNOgw z88mbdkg`=}h$}5$BOlI{xy#Ge;IU_8nE>feC)U4@=_%*^DujdF_kXBFx1as=KcKDZ zkTpk#WRX>bp;k|_(-sWU;EfWD_-c^uP;c+WD+>me&3@OCg5;9q%_Mq2hr(~oWve9v zNy^0|h6oy-1*_r_kU~NchyV=Q`# zxIHn0B8|lIvPN9{;UYpxRY;_4ynVlT>7o>}yv!iA{W&2H>1#eyq_;0nq(7}g)x8GN zpG9RlzJfP8KIcy+zlc)%FFE-?SNR{%`OSQ8CL7Cs)i(PR5_UW;`TxQnDSD7(J(U(s z7yYTqI$LM`Wj5=>l6A3UUC1A4>v}mk=b~4t9oIB4&UKP^i0n!)5H_mO0Q+iy_htcJ zCjimsyVUE@fwesu2t?WlM4?)zP^}-8lD1W|ciP-1!c1al;&s5%MH5zn(6PUXYcUIM z)66_XRwF5;6;yYc#;J)mJb?34c6?ib2)yyqMHn)4GwI9V@F*;ZsgRB`h+M+L<$U|( zTWdW8TPZhG!g&SI zx%o_8+Qj9cRtKtL-VT3@;Iv^T_rL=jK_+VcS9)tTf3u*#IoLh2sPn$az=VF|Ji;Ku z0PKn7llwCXH{IX9)6IFt(=2|IqnOEAqO|6;JXfOVt}gx>`J*mu@{0z$LjEuxeF0^} z6R8vu88OXfr_7$@zz^rD95G>@{|gE*)Dx2D?_r4J)*Z8WJ_X5!INW+oSuGcouw8tE zk4u{L$rtXw8mv&syZua%Uiu){&s zhjvXVh7g4=$xQV=KS%L++Jtr(FiiIVGP9_^07yv>XX6s?hhHPS-w_fnIz)GJqnxRU zky3F!K{Hd@$bP-0}al($k9s0eq4qkmXRon*8fWV)}CY@A;`KnU+2 zC}0|ls{I+d#B}XLWaRxHoyYY}ruL7%Dz!gS!d2}*-XQ2MOcw(Q6lRAo2VOP*6Yefm zhs=bO!X^i-&tM$h>XJ^m4^~NxDFAZHtMO4?GT_mS@)@NB<^2YSQ3j||)yc3B^GJl5 zFbWo^t$e~L9aPnHPhtm4F-pgu0nh%Oj_gaFIR7G%!W$hwCX)U>?iHbu_m{L6_mrrl zV?hs_VESany!uokOt+iNP;?n-lYJ}Yg!&G%U*{X$ zB4kZ73cXhbU&XSooUL$vRiX7qfM^a;{G-yD#Z3Uv$qy&5x)0iV$tqs{vXruvQoxrZ zL5nrqr}hiRV+8K|y3-8S(A0(N@4SpCcArD6{FwBb#eLGzPFbqs=XCna`N`xnf)yrl z@x=k5hd(d&Wuk9LKpAxy9MvhV+{SeC#E4b=6sg&niVWPwhC!br)CF9Zb9=$I*r#1N z$8!JfuibLQykWVU$eY0c0-pxf%%`~%gp^@V2(;Z3bJOIKiC3L_aD(QbAjcO1#95Ds zypp58F9p^zk|}xgW0J^46qlYQ40V%8o(uVep;n^h=Pr6mTYIu5;wMj2i6gcck>zYG&y5fO>vS-WWv@5a64H;aD{7+w#{5eNEy zZ!T%Eihuo5H&!*;v~wSb@IJ|z8Z(;rUOs_#kOiyhjsh)>*;v6$iS9(Pi?X)5uOK$l zyyvH*(==kdGL8gF1QY&znHex~q10tU1Ub8|Adnsuj7;lf z`g{8RFz00HUh4DLUDSuY6zc#_mxQb~h~_;D*qnVp=0|_XA%aV}xZJQ_Fb2M!v;Ty7 z*DZOi!HY06*&gd8Ro^hitpj(Y_lF9O!;Cbql|erBqTCNzd?N)3@Vyxnb#Iy_9XiwX z90I8Ov0#wRBu>*L*VR*D4mHXQ(Qh$Q`W00kBE9Zuz0Xihak6TPj@N05V$CGmpUgHz zY?m~}R$}F+dfJ2O=-lF-Pxr6AoWrDu_|48kpJR{E!tn2uwslxJJga0v?onO^N9T_( zDu+M!DlvM6lk-8rlf7sW)KvHjyj@Dxo^<(t6&vTC!iYQUZBp335b<5gQ&%Cq%i2@M z_ltCSAS+c)7dz#UV$x+(8>1Et8~-@Pc49kF|Muy!Ak-JzGdIF}0B z{S>O1N`3&Cu9aj*o#V%P5m_oGp*~^z!mR~mf@QMMDkw{}nFVFUlvfs%&BsQa=q-W` zF4jRRd2$a3mFBR0rV#p5dFD#0Q!LoYN17D(p zD18;z74pD)_Wn~P#4@El|NP*#X}oRf&GZ-2c1yKQi&t`Y&7o-}TWIhb+yxM_HihI) z89#I6jocq;yu5!Jry-`r_p1vu+SCOaZ5OWdK$Czx#XN9(0ILSGU?jIW`sY12EolDG z_kGoW9_89`gWH1Eu2AzE(KCbj7}vJVKdoxxyxu&Q8)!Np@@%0u)Os9u(~|aTEQB|t z+DIIGjlpD7V2hkl$~n4=`i_Y*M#iPOzhATw(~T~d`>JeKn}f~ZwhAFfEl6>{*VFm8}dNpMIZSX$ZMXh*<8S4+X zZF3uNgq8FRQC-(!z!C463d9RjRQB{p-GmaX0tTd$h=p41Us#*G{@N2dB&g*$@ArG}NzQ*l{V^ zTv;K-TK(;)c&#yvVwiwO_*2g)Es@M6R)~&N)(cEC_{V}0y%~lWT;@c@?9=+7PB>5H zUtZQIIiM7bC0avW0CzYGiZxp~B}jC9vtONlgU2GK;fr9SXJDjfV5KMbb<`qkm%Os`Zyg!n^;)z{1h|rEeN(L(ud*`V>}B6aMx$z_k5cC!W&cQg zR;&1u-NZnBRH3~@!c3JSI|_A~$JswrK-Nk&p298ZJeaaaC`c+7H>y;9!^M8q1ngGd zh<$E<$|DkbLPk?e+GL-g(sIj%sY`y3zJ(mO^HsQRc1J|3@Z?`4f1^@RJK>o+*)OWd z6{-qH7?sD%eQQ@x@b1{>vP(gUtl-*``<~B^_4YlI$6TrSOC`vOTdL!n!sMxB-S0Df zUcaf5c%Xu<1{CdUM1y0wUmlKvcQ68?MK%-Ju_+`xB6nDOXK+k}+lWP5G>8pE;;{z3R_@cZ%C;;+G9 zAI{%JP%XCe=~Hlz%d5CN!3!V^;ME(pD`5;d3U`xR`rgq>g1YZ!?j$2@4W`DO;H};? zlYm;Iu4O*~B2e(oAl@YvWfhFZi`_HNV=YQ|#Zt2#vy@hDMD<6^SffNTB8PTyllBUq z`zOaqfRFq181UIKQ^Xnkyghaa{F~suBY>h*L78&+LmI+!P~BO}(pAy#@0Vk#Oe$*Z z*VYJAjDd+(NITkFl>f>Kr*GPi>G+Bu=K*D?;4+v*mjHkByBlDlLeOwgSF0rIOsayf9!`fk860t}yCq z3J}xufQ^QAd4*isY=z5HyH_Op+4&zIOs&}GDiJmfl=G^JK<7}JdIn50cb2zzdqIbN zGMAVvFNBG3tFEjzQQ@5WR0xUbGNtYww*cL{o1-I9i-8 z<67<@4Z)r)TdkO;13s?i1Q2$>38O@vKv#0MKXwEWORN56GvonMqf)A-Mn@?@NWFL1 ziwbF-zFe_s)Qx7;XZwA_?aRwhurb_kZWYrdK&+LlOcN@sUTS{^F-|K(AAMZhZXkd9 z)s;bL;NS-RasanZsj*pjMZeCVCK^sBomKX=bWw%Z#Odl$hOe<23#*BCwe>YGAq88f zj^N+p_PE}{|JCm>0mizL^VJMZL%xz4I)3|^Uecw-SJk<+KO3O$@C2g$DxvBr#B{P< z1SER`z`lbos}rsAVt3X2g2it8{SObOnl2Fz^0eH{dM|!UX@RHZLipDjk>MoIZJZ>> zd~Et4PYV_`E<5=rI!op1PO9N)K8kAF*OL>?XSD*H6# z(-UN;Np{-HsT}Jkw_TUPAa#DyfE$%8u${nM70UPo${pB*a=HA@-Gg zhvmw}oe^`j3b~8E%;xTlko9e-@&}$fu&|+Te`)(LQ3}_ME->=91S_ZH6+}<4i?cyS z-8Fdy_P1h#p1&!XA7+x3@Vfsj3;u0(2(+8qJS_=8aqP#4Z|M`N8oKzQjs*l@jCWO< zm}lYF#4O`0r%ImNjwT>jSy$w_bu@Sftf^Ktm9+9t!NQ>bkO9cRdAC^eeatwEjk<`UiL8( zN|ow{`4EZ{$xRzF zSo`epK(;qMsQQU8Bh!*a|BybiO1*Btc7_OnE{CRJi3QJ7mASEcArW+whs1;;Pzl-z zNx+Wr$014t2+4cw0C1oG3$wSK_Pf$%3HK#v6EW2sfkgNR%{9XQkcAxK$Et8|+W;|h zP*MM|#~>1(x4+|riIUle%Pel`YN~`Fjff|COU8PaAP(nVfbU zS9G$h{)6orgyuMM^sD$0PzN(v2Y=rWPt8HF>;3UAG+~t19SaOo0$OAI{Y+AVibz zcJlEFkBibQK1D1uSWqzhq0yH1xEl6$$S2F#t$j>A>MB|;TdR&Mt)d^n7cFhDfd+rT5t7;zRCpK5@{OOYLvEOnE*q>t$Ivdi&uvb+8DyUYajvWRsdy%PHdrE-u7&7pYf`AqyHdMXRn zJxs`GHd@PSCfwTu+26Iz%pNs4lmwddi68X)YsF zf_P`n31MfKVZXXOj5;N8WuZL|?&NZX4ko3p<`bjU4uAuS4Lr^70aXLAosgFZiPR16 z6Sl^&E_l)2w*O!%zO+xFr{yVP!j(h03Q9h#qmsX@Tv|%)Ui-|c-Eau5YX`5jY!@_Q z751G9aCEUQrb+we7{2CDmD@G!nbi=<}j|B_$@u*mCp=F%s1I!rFI%E|Mpg zG(odPI(87zKDT!-E7-T^gzaDL&EH{tEt&zE`@?pc8xycX+x0iTkWjMx7nQ(xX?j^~ z4ALD}=Cgi%i?eQaZnvSnY@l%JTwPfd9Pp$X10n<9nFt;c=l15`$n5L^nFNX;sj(j> zfOWIX5)F(O+QqdN)`&H&65iGbLrEaRn&js`R3*d5N34bAvV~r2M<{Dl_GFHGW1aZy6u$kNw0hk_*?^r>QKhO0$CK5_Gi%nVLb0 zLCevs5~Pob7&OH0nk31aWm`l6uzw8?tgdB6N-B+hT+_f69Uz18i}pCh;##n>PVogT zf2mbdU==2dBZ<*?hnHGc7Fb8IkIIrrP7C>@3H)LlMLXys)%!B)&S+*|c6Ta8|B0R3 zG*qqnPLD5T#$09%&&<^qqOe93%qAh6(oR1N>9cqL3aThe zJlE1A?ala7twL~^OO}%MUnG9DZi3t2Rx(r0e;%S=%2_ZWV9;BNZo=ZN`>*Y(pMV`r zf}tAMvN4?Rw0}$+U@mu+6xJx9XqlbElcpvOafw7K28XxE<=H-p^&HJ z`mR+S0dtmA|G?VQ5Zi%uKajsqN?(apG*tc^J69Pn@c@N@}`?>MNttwAy|22 z^cc%?@^ejJpCq&Pp26nnWuBH>$Z8EMcwm~R`NvYkEd?z4u9xP0Qjvps&^6*~_eF;S zB34;#-73;Rt8s1FytMY9HD;wdLK^;?H>B<;!dX~x8_`yK84|WbW_I)wpI~+ZZve*C z(s-d{c#aI*DOS!>EU9lvLO=YX{cs1_-c=Ye`#j6)aq>pB+VCuUK?V9;(WC6AlfpHZ zv8dSK%>6vg|3$PWL~J%R$e%a8>1LnQc)_*kss_ay3SH6O_A1FK&wSQhUKo)jNoery zYIHXjc^=cIgjf!-ET9XhX|wcE&TmPV7{t7-Re5(v2a)N8FOb@uyjUi5l1}GT0x^^H zHOY9pW29*9V0or9+7}~00xW$INVPKknIQv1J-p%<`_)No0w2EjAWY)3ZY&u5hGG-B z*_Tz;QL_B{6DE#m&b!M%zk`9$)4UFhWIMp9TUcPfv*<;YlL{DjhksAvkrGxnjtTo{6lNPy-0!kw89}p)iE8DV zZp|TGy64GfUi3IV3*@sPdQ_mfd$gdrM^s;GZEZ@rof(#F=|dY@LbjFZ zjs^tMPa=t|tVXILFRPi7Sp|9V{Rd-5MyzgO>p6Rww3A3gN6)J^mzhS{6W^EG7BbK2 zD-&+N6)Y?em`ZORuB#DvL9?iv-aAmc>j5T@jCl0UJ@$!*WUpFWSg^Ff zNOXVzV{q4bxHMl_HXo#e(@3nXp4~$ys2f&l-Q35>A6`hv!-Ndp&K&OC2wOOjx>2R0 z5`93JOTOBSDtmEHwXIcHwR2t)wOes&J3B|)E|q#D^VzD?cw~vDF=B$z<(IR6H}Iu> z8+t_hun%}qL9f_lY!|W_7$Pk8QFwi$^9w(bI;els69v6aNwM4=vY$T-w?QwXij2=x zCyKfmU+psD8w$fGZwR++ioP^KETCk#OIJjwho(T?W96{`BYLrL;rzr;ffhKDkg9{XZo0mOu%u z&8!4W_a3&N-!=W|q?h(L^CXvjf-p*U^B;gmNCGpj<1J$JSm9WC9FS~P&qW8=8;NSX zr36uE$aQJf4tp#iSi@K&3b~gI7eYwyQO&RTFkRO_ewb6&o5+=^>z}Urp1O*e!r1KM z#KGh0pHLC`P|0me*L+N&wuLAJ$!zyKim2IRDarhexyG;`Rvf282-HxE!me} zB4)JI!q{(ESHqs;Y*aucB5rv`lyj~}3Ie+fGgQJqmFWZ)QR`g(pCj_j>h@%j6>67N zT5y9IYDX=(#~QcUs%}FG)}Hdd!eUA&)IgnUc~wl&2I;qV-BGlWeRqReJJPaH_Yy2O z&gej4%Du(n$btiL!u|tK&0!VCy;tU?g?51UOtRR0Dft#7UZH)Cw6Bm>gFO8v@opZZ zL|>*$I`7L_AKD9QB)$zCcCAC4yX>nk7aV93K~FzJC%4OUUE-%C{l1tQ`_+FDqd0S7 z$74k2z=|*N^W0Z_$lK>(qY~|I?_BwPaLsBz4Plj-<7kEI3Ugd}d`UxI?C6Nq(g>bn zl3!hKA6cs?Hm*Wedm=jyN3gEihhQ-*@9%|*R-flooexW=YOm_uv5#iR!PhGOPHqbl zl3?-E!HOmu8GlNU!O&Wr$FZMO4R{Fg*1#=(=pgjII$ynH-n> ztB4D_Mo6>jiuLOfVaa_|RH|c6F<0GW+M1@;!BRWVNPJ1q6)k5wvQdz&L$qx$Htcu9`+|Q4#jBhoS+0e5e{pWB=6x z@^t+fiQDUe*>PTo-r{`k4`#pn5}upGux|HD`U1ig?WCscPx#do6ZF-LlVMM)tfrfM z`yy7NkzAN0!HW09Y|k7Vv}&;LHCrz?{L6TjCl9 zxnlk8uYY_nwY5=JIRe&!zBMG9^5~=akZPb-Omo#3kw2g%@~6VS406Pm_*^mWRJ~Ua zb=Cm`SqBuvPO*k%m+z&rva9#*`1A_$(Cq6(bUnf z?i$B!bKKV)_d~}mz|>xTCpzxwjyu$GuW;O2$BjB}tKg=$j(gB?d%vU0EpyzVjyu|M zuXWt0<1TaDI~?~O$9>Row>a*Lj{AY*9(3Fir#;IZ_sYNP@((yh@EGBJjV?>Zmr|CI_^&$_aVo9+HqfT+;<)KbH{bP ztKs){+%m^K%W*Gq+~JNp-f^cm?o!8H>9~J!+~*y)-Ej{%?osdQ@=kYL!*Rzu?)8ql z)Nz08xT_uaFOK`PuH&Y||CPJ=SXZM6>w>Y` zo$^!duDD0Lhvo}T*5UWRuiZYS-=FT#eB!^hsCb;XLaBxPtAC=KtNtNPw{)CLhD!Kn z6K4}wGjHaC@ciJcSz{K>shcrx?wpx7O^(i-JI9zhYYNF+qoZS{M#n6gADucoJZIY6 zd9zil%asWoK6BR8VUz1-OdT`xrl~I199Pse#Wjon&T?FV;&R>Kn(CTI>{Ma~yUsl% zR;Q7_<#S@QW}Svh+L(fahhKO3A3~P6^1HjbcPl9fg+gxmoj=G`BMHiV6*c2~6uK@P zH0UZh0O<2E?R2>cYiHE*bGaJo8~7EHf-6W03vmkhPrT|kZ0@{J!^~*Syt#E#=g)V! zcDh`EN(o9P-eIVy2eCNE-7daia!GhYHoH%EVIfaIB{BJh$| z<&hX*#O67^k(1}RhEKiDRXus0D^NcVcadu(Wsi)_as^`3X~TNgWpz>4=(!7A!Krl$ zFnMB=dAgl^^VA2S}$erNcq`T68y5kCob8OBAkXI~^OrGI1KmN|S@ zLw9k<;uj>Z;;%6BSlTCsI~*>Yi93e&6O?tnDfl#8oj>c>aOML;r_k_(kF#Nbap2E8 zBs5)KI(NF<7+7S(B>za@3*N(ld>w8zexYH&Rj*v}3x*?|dWtJ;5x|{}JBEDqxR<%= zRJ}$+hXwe9giFh6_%Q`l;OKJZkz2~qbtl*n{JVw+z*2rSjw|2Q{C74qox)U z5`W;*VZqSw5k`3As7Uqb%W5vaV$4_`^ca8j4<}qR@!CnXldr3rGIiSY88ffHVb<(9 zbL(%MH$NI%u&`m#O*b!Ivh)@u;{~I(H?%xT%Q4@Z+JA(DZlmLu1)luc9lwkL@*DJ) zPLDN?`mJ#My&Zq2<3HN*``^~-OCA4e$A6sTFL_7DWA3khwT@rZdGg!k`1@+F%ipfk zpXm5kIR5^Qf0yI;IsVmu)9D8|{*rgK|0Kun`n&cwIQ|)qKh2@7j$br<@_WGXbEs1N zHaq^53H0^{+XDfOOCB-M0rLoK{ zH(lQOneytPw6vPf;k77!;Sb?+sjIZfOjS~rbFvWA@ct+KB4gDQ1>48pISTKYs_dD} z>vRv78fHsN^XIv)EdTuH^b+1#_&+SKD?gn0d^Qo*9daBvgOeH-8 zD`_i{9a5S|l*#KcR$RCG-)QA^m89f{=wJ@zP(vkMI9a(BDUGgiAEm(*Dv5eX6Bot*CKN z^NH|=jHn`sg)^q{H$8f!Yo@s-O{X&zoo3VaGI!Ooyd2q7hi{%5j}DhAS$Yab9Zo5c zr%`gpfFkl%_)GuI<_rRV7Ogdza_7Li={}e4FIo92@j`!rDpU||meE^tepY_UcsX4` zJ5!~QQE372rA^cQKReEFe)SZ<7NhyRbgH-VF* zs@jKdRdsbH`%D%x*`N~$1jsrGAuK|65)5HT0)%~*?#WCtOQ*YMGC|a8HiLqMfEZ;9 zpcs`UvKdyRqJ~9`fEvYRRMfafMU9I3J$} z-CBZg0JdXz2KrzLzOe*vD8VV}0wgR3jId=9>}v+)S!I zms*x;t4}v~WK#3Hxj=#oi7ao1UvgQlzH#*#Sc<4`&mlh(-gu=uI$D>vwCS~mLing7 z(mB7rCAXj>QxaireQRq2(#@*5tsU7^i7)dn&4=mGy(k~+$neGK6nqx6c4nJpRq1?4 zAT_76sVS8yOfV_L#VrjPtht=uoNBj>Elpt=ryZdn+_{~ZOsd^3O?70JbVk-!;J>(I zCFLrabYzOw=|sNk+8R1qTN)R)w68V-MmgrCn(8}Sb6ESE*OEb{bYxmm1-|CDcea^j zzr`I$Je9Te)zOx&&!m>+GA->Z;fDO@p#mXdtPC1#B9IG%Sw&I*bF-<8!0UkO;!;=l2j_nE(9_wr~VR(22cceUF0uQ+^Og@2AZw7+NySE}&O z#rn#j{Mq=4|EufX6n@`&ZT{cZ04HDga}M#cHAs4;6aKl*q5awT`rPazUJEZt-tR5AGrR858k-prj0k> z@}XNlyy+t!z3uip?!0UB-S^!4v5(*Pi7lV})Ti%%;K7Hse&*pv9)0Zb&u)9-$)}!v z=Go6}|NIxe_}rJi{FNQgzwqKqUw!#&JHP(QtFL|Io8Q{??eDz)-S2(>2R%Rh(U0Hw z$xnZ_`{%#-<*$DIo8RvF-S7YK<{$s`=e>XV>)+n``#=7v{@n%I{V%{C(gN*&yZry{ z{QqtFA8dhq|NeS`{J&lPPRvwz&Bi?pH)nCYvX~w6N?}IAs}*xOLk(`i?1UHB>UcF{ z4$rF|D^a{sn7{C9ll1E`x8b!~;&J7H7uN%LwIN4dt0nwuNiVD45aUM@k}lV7cyV=^ z7uS<{arMqn!$0R=yxK5B;*}NuHgR7m<>UKLN+65;7?Nu?EGg%$6EVA_TzEAgr-^C~ zW~AogtbU@Jj}R7Tf#<3V1#>lbBHn7fvw%|?&lk*35y*z;yqehN&oyWAW5Z`5Rm#tnKdaUN&n~2&g_P-U<-rw{iQsmj@Wb^B zVw)b8+SG(6iE^~#ou?TmV4>y7P=<*2jV`C@0tCqI$u0N&c)H**>{n!0I{M zDY0!AY_G&Nf3{oJOQ{^#j-&e1pvxWd#r7TLlkGf;+1`t>X&<&+Z2wXJHeLT=`m_sC zf7*vArk!B9ZF-HmoM%9z%tiYVtw&==!W4`>p~e}>8N0$1jfSm3c_^7VQZrm#i`HYC zuBRmhIU9SlNS!13b7htG#GIE+-;M>S)cEN5LIfZuI$Z2k&{bjY>OgW=`82-a@TE1#U!iKNKg?3~3T2|oG z@U=L?2kS4)*YI^lfp5!~t#4y*=S28yQ>&1Itud4Tyn_Ci{Ld=b0h@nl51D_cZzg}f z_b`{qKjgPT>lgDct$)LZty#kdS9;B5mM<*}M&;#(`iaTV)nPN80{{A{~6;m<6jXTmQp=#dFOyHKwt{Ne~dO#ec?|BEFy z;caWP?d_cre}=D(*dfYeZlRwy>CcXopZ@0-+J*6-Qxd$qG}xxG zS^Rg2!&brH5xiaSX9VvQyjgIM;2Q<+5&Sj5YJ|z}8-gnZzalsx_>+RC2!2BFEWytS zt`+=U!F7U-wZ*tw@Jr$!2>zVl4T5(Fo+a`+R`6!=zfJHq!K(!;2|q^gPVu)3`o9wS zvQBvQh`${N?h*WMfwx7zQO!%1ij~9PCzL_cbeKx*?_XRH$ ze`}``;*Wiy`dT6W_XutljQ1k?>K1J6@_NCKi2o+RpBAkCVD!=2*Dd1z0r4L%`S%jM zP5jRkJVpE~1n&_4dj;Y}tui)neSBx_9+bFnN@RNea3;vSenSvh`yio8r z1+NgiQ*g6jJ6`Sw>ok=8rXbZ4>-01Jw?}F9_Zx_%Xq| z1%F=fUcs*kt{83P@iD>Gf*%k(UhoeD&lG&K;Dv&F1g{YMl;CE;FAMG#{6oR(1-~wM zli=?Q-Xi$hg0~6&vfxT-k4FmLA^s`B3&sC9!MnuYjPkJES^SR{|J~x>EO?gGkKLoS zSNs=?f3w7&B)H;mBhRehg%ZE7;A-)|MeumR9~V4R@PjtKVB5d15d66KHw%7R@NVJ9 zyw$~aZSh|({#(WWM8WID|Gk21h2MUHH;KQUXQUU93Mf_I^t``5J1aA|6vw8;p1%FWdYbE^g zf_I63o8aAouM*rN;ol*6ulQdpc>EBDf-9>ho&B-Qqt*aJBf~A$YvtwSs2~?i9RG z@VSBmk@q0ME5!d+!Oen~3+@*DVZrMq{$Pv6{|3QZgx?v0H;Mmy1aFY|Lu`2QKhK62 z|Dl4niU0Y6cL?4jc$eVo1@9Jom*BmEw+P-W=^rMzVvLdZ3c*{%f0*EE@i(gqO6`*J zohtt0#s3#K>UGO%^Z@A!Q@xMrLh2%F@aJTp;1+N$Utl&+8zbJT% z;H`qU3En1nhu{|l?-KkK!P|wu5rTJ%|HXpU-_3aF$Ab5Y{}%*Tjy3XqM(}vS_X(aQ z_#=XMNPZ&)uMq!_3T_sBiQo+)pJ{@-#s6}_d&Pg2;PvAFe!<(sf2QC~;vWd!F8(J8 z-Xi{a!8?WDQG&OL|D}R=2yPd=OTv$~So|*&yjk))LGW(zze4by-x+x)1n(992Ejd& z{^5cvWc*zxc$1_*U2wJd-zj*C;CERp;g1o#Q2bj2uMpfJxLL3#xLfd#1g{soLGUKQ zcMIMk_+i1@1b<5K4#5iq?-HCA>TrIel;Dq1` z!Q%znaqkqtcAPa+upKwe5^TpM3kBP8L#<%j&#w?{`}I1(m6Ct6VB3$T1zS7cE!f)a zK(MvL>jhi8yFswElbZxrOMaULTf4PIu(cCg1>1JKO|Wez+XdTputTub+ns{#IB1vP zgyi2Nc#PoPg2xKB?c_+oO7z(F^VY7~aY3c{A1&dlOY}Y=_*n5DFZejYQv};_!A!vu z#DA9H!Z=FsWbv;RJVWpb!6yo?6Kw5NvtVnN(t=Nu@ZEy#I4Tf4OZ?Xho-KHT;JJb~ z37#i-vtZlqwg^5${I?2TBzT+PGX-xK{7%6;1TPW1Q}Ee>cL}Z)+#~or!Mg?9alszJ z7mEL0!70IZ-u_;}cAW{Q>glUO=Jl@NYQdi1@q%N5?e9H(!864_E_k8fUV>K$t`OWT zxVPYK-!^u=ui$R+?}PZ6yC zWXgM*;7Y-#3r+~0C3uS9*@9;Yo-4Rk@I1lIg69kF7Q8_4dckK1-XwUD;4OmB6ueFF zI|c6$yjbuq!Ak`17JRngy@G26SNz$Of2rVV!RHAcFZg`HGX-BLc%k5w;1z;b3vL$N zD!5y4UhsOsjtoFH362T2zfZS6WZxqGy~Tf<;68$P2<|6%m*7gly9M(YT3&kv4-s6k z*T~~A!PSCC2p%tZwBT8SCkU<;e2U;^!KVrC7Ccw*dcms&Zx-yxfNHDYnBeV#dkNkt zxVPXQ!F>ep5!_F(`im*w2*H(tPZ2y`@M^&`1v@f8TPQdtc!l6zf|~{R7ThhkkKpx! z`w8A8c!c0Bf=>~=O|T;ayd8pLf_Dk-C3v^s-h%fE?jyM3ucrL{1Xl|lA$YvtQv}Zv z?8tzzR&Z~@b%Of{P7CfQI1oHS@CL!B2;L&tkpbm4!Mz3V5Zp)bF2N%N?-qQDVD&ds zJ|{u##&&SQy%QR$gy24crwBep@GKkuC=?;|osP_<{o)f4qsm!NwQ7*~S;V z)rOy7!f&_X1@E-s1^3wSQ%v|hHoRco0h-#q*5+R*M%Jyxro(2Jf`E*5Dq&u`3MTBY1>hyN+S@ z_wd)9<}&X~>+xPTiW{&?D2kJ^Th6|(&z6~(J$H=Yf@T6W!8+=|^|(eV7$ zTNLx1c@*>4eo?%p#NY15v*~lUOf2N!7T;;3|>{JXM@{I(oYxk()iomn|2=qe>ED-Kh$#*{_=tzn)mwDejDD@ zlU?UA{`}Qs)StgwEXKw0lO_J<3=+mL>4o)e@XA8{8QfgZ8-v^MYw~D*{Hm)XzAvl1-kzCi9mwV3+` z?Jiw~C+@?syMrwb^~d;!`fM=&+w>T}wV;p2zYV{AG?&>=7xHKJ`-Sb&?0*f(IsQ*W_Gt%>GpVH<#JJYIkXK-!tno zY>#H2sojlDf9_wjxe;?85C5CX?2nB4oAws^6So!g&+H@Re{-4r#rzGd#mq0%AG6<( z|E)jskA`RZp*=ABK|_Aber5hQm)Wn(-@`^RUCm|p=kcr$UKZOHZ?SEWX1_E4o6GEX z=6`dU{h}d1WQ5Z? zr$jABc3)bExgVRqFt+*G_Cqb_UU=hU_Q~zr9~$>8^u1ho;~wol&Aw2ZJNNam_p;m) zbKfw3QE&Mn4-8>?ZnNJvlsA8c9@Ss7f1Ll#W%f~r`eXK!^S||Hdk*W<>>uZEuFYlk zo2Lu)WA>w(|55ow-J|6-`@_2m?aA!p4*4O!Wo{iswccsp6X-{^nz{zBqnUJ!EL9>GOp?1Wb4LS&u(*D3&8R~Hmpd8ny z%yTP5hA^pYs$DvM^IULmX$##~r`D}Zwby5}Er?X#4qn=m?aWD26YdP|we_sd2JqUD!WWdg==i<=%U7JirA!_GiWN9l}o%* zFf%1?72J+GC2j|knj&>g@sgR8Es2z6AZ6yH@CHru)`B24e(9{?A+75c?pd}XQtMBB z;RUzu#^#llPMskW9&w+k)9GkyVM2|h#;#m)O-)!If|;GZ zfYZqu2)PKSZTHCd@Hh3xAjB=j=@A#Dmn}&zTM`~PntnD}lP$&3^s+5AT3nh#sK*ZMtvH>)XFf6#hAaRsIjU|J|wMm5=+5)?ccAZ3fW zx)7uq8`V%rqZ%sJ)~3sZgB|qw6{+rAroJ(!<2KcFw@pPFP4x{rOcRU&^CYG2H8q$< z(bSO5Y24Us!Zo&PgVaQ&6#X&JDWxem*R;LCQe76EHsjz}PvhTdCsOJk?8$PAdmYifa+HSV1aV5AAraZ~)HjclKwsdjJ; z+FC;yk|H(Il@JPPyP;Z-fN2s`lVL$qWTl$gTW}f*X$K)_w!Vw$wP$lWBjc81W^~IU z^QLrtt{y{yrgSF7iqI6?HKnz)YRa@HTiSD=SsdU2_bgBAAZ^hD2-3!mEby8P1<(XB z;5PY#YCQwx@*Ukz(o~BC7(I?)B&~4<4ox|cWvA2ysWh-A{fv4hWmrvtyU_tM4Olr# zrwe9h+0<#K+-irnfNMnR;%h$Y88}kRRd^ax7Ha9Z}h_|q_qki)ha0QDpcqy z2y+!Ws8#5kR^ecnRqdCnRp4Y5WV|XPaZu(}NTs#Dxd~Z-Vz!Y?uHoFOHQCnPh(5SA ziC=7{Fh5CY)dK}?!mt54)7pgRl}V}zD4tv7xm9SJkxOewqn=*1b|keRNm)ixmXVZY zZ0#_5PKx9;=E=dWS)7pttJsSEzpXyI8kWZ}i70`j+HF$0 zlNxuN>Xc3LQD14E@|0aGy&=OjuI?=H?-c(uY>G(}hfX6lG37$a%ruph`P>OdL)U6* z@^5Wf*`5K`Ltjm4h|~35D^1#6I4qm-x>oA&X22Zsr!mrNY=zj?6b5Q(3V^0@ZDsXxRdFT zYIh{4-9fcGsJNT(E$t>esCL%|heg*{S~q4}DyGXu-as{v`Xgo(7t~O~gYhE&wMFqS z?=DUsxYWNW{mZ+H)4#mCIDKFpKaCb)L-M&fqno_u#9-7T-BEB&b@}l<0WBv`!JSAX z4ZDL|+gDN+2(%GhKB=i&P-aX_hSM-o7=|^aa%K#}j4f`@>7)ucH-)~Tztvb9J_n5z zlL^|~*~B^}70K%7W|V_&U|du3pM`nRVL@3gV(qSr2@DFRNj2}Fn)htRlo3?09w?`? z83~_}@EHl;*+8X9OA{b9=|PEg{zjSUuI-to2$WI8&@~8>F7(a ztxoG-FnHo$Py~ZpOX3&QLE?u7Q^M=`X)YY#B4sUUO5T7eZ%rvPV#>0cy%Em1Y{Xfi zjb_3Is{5`?BhIl*wqYa%|72P(t7MWmoDk_`lDRDHo~AHX8BAPo>yIU1_=o459+zc0 zkgmxB6l)|9l%ZJtB}T(G6gX=vIINl;o@xqCvNFcY)?<+bR~BQvENTqHe^!sCU`bQf z8{H}UY|1DqDaSgX46dnQy#@w%E|bt*ug#DO<}wN0xlE!dJ8NPNU_tfx7?j?`x-SRS z_w++-CLWoV}L4Lahvs{Y|iwQ*_;^{WAXn~;*BIHfcR1A)sl8=YkoGpi7r;Z_uD z|1NYfjHxMHNXe|Gl7fDgGBE**Z3bPk*eKL2DC%%#v61eWJrucfv61dY3yqpPrf(J- z4aI7*EH-LN9?ilcMXE2smL2gA7aWbhEI1-YS3{-)Yphrg)zuQkI*l$2KeS9pnIEW@ z38}_rk*$kUS~zrJ0VuklX0c_67z<_vJ0{o+V95{tBkN6q3l&NnU2n2DntpUaO#4R` z#59g9h*@mMfy7Y;4GtO7IKqIzX2Giq^Jgt9QpyHY%ZgNEv#8Z2i&|Z&jJBJg*32s` ziR*=}rl~bES)mqN0d>hl-cZO}Ch>*>V|as!xs7hIj^1S_w@kNWB5AP|bODoZjHPtB zNCoS10qb(L*%fJq#iAN)YZr%wY&)bnjv0Run>elYo%n*1E@N9ObdXOBZxZXmIEx*k zp(qzHgJ>F=muZY?pP`+a>ItS!&4lMflm47vlIn?O#GmFsyNiEx!bx{x6hU9adcs+P z&1lBt*A4{|Z=Ei%j?TEWk))=z$#Z0)sr_W4sh=fdK65f@D9d3-LnbHS97ZN|&tYW< zl!pN`{Y)y`Y0itqGrnd-H?wBcg|Qzw)l}D!nRpVjj(Byot>r1apxqr!=#5Er8Z!Cp zlF4V6OfWTNnlixzEt+5oE=({rj!ZBGYkxfJ38tndO*6qHU-Ux{WawH$Ik1vTyJMnC zsGp^U;n_?$jk}(7!VN}NhtrczU^Cg&VTvc5U1^zcGGSa@B@<6zGx0Ru^d|=Q<`PUb z(3jw_{p;}I#M1c7#1b(y=EPJk!NuvX)Jtb!`kb&v!$&5rI=-E_B1~60m1(Ofm=A+n z!VXjW1B-glUr%-oh5pH8*HG4rnK&96&OZ#+{^0~t=TC#ibYucq;G3A?VLvc&G?d|p z*9fJ5@x;;K!mwETa{@_su8tXM;&B40F(!nDYIkIy-9fcGsJNT(dIE{?dIAYrG=bC@ z6GmG>7Fz|d*jA9>0>c&;g^x@awSQ#7XmL?`kqM*t7pHG0j9UI^{OFw#u4uw&FlWf- zGFZz&PZ%}EOsI>KK3wPk_4*d5o~#*4`4MBHCYQl_3Z-3u^@Pn(9bQk^fc1pUQ1WLc zY?>l9P(5MOR4_-$#HKu;5TeG$Ur*S8^_qpI#$Qj^G}iSD|027hvF2Zg(P`OHDbp{W zxLIrmJQmxDo5i+51Q#Z57MH{?Ox&zL<9EqKtVK_PU>GWx?MEgUU3MaY_+1dG?uSU(4}p>sO>I9!5wri( z6zSOsfX&}d1PWNspP8(_x@2Nduv;2O?3!TucVRxO`60FWU!KB1*}QjWf?dR&X;@2q zJ5tWNU)zAU7|3vK#>{uS(M2(=eo@T_T-}YCb?IDVgPw$jn9CXZ5`WB|qBzx9?BAio zcjM(w1K!wlx7OnA%UJKWNPfGeEK0j|nSE!1LslY~R3I zv-x%*7kbn6on|wKX6>2yPhj@g{g{@r=~;|IY?EzXtacxI5!G8vwUb5BdCm zRbHtFLEo)I=J9`ncJHHcMeGK(NqrPwb2v-KS)%_db(hdDG6`Juf@4C@iBHf^6XPG% z>1>LP^ce1!zKj3Q!tWvN{y^+1P2U&$f$C8|R6kNbR&S`EsGs5^ppNUho*Q$0H}3Xw zJDjw$#>qHYC+BoJT@Gp$cX(ypoZIPkxoh2Scb$8=dx3kQdy#vwdx?9gdzoA3-sgP6 z+2VZC`IPf%=YHn_=X&P`=Y!6T&IacuXQOkolhb@;^?!x$t9(oCQr}kJQLn4-s_&`q ztG&)&oWDAMbKY|P?)<~~r*ncc!#UBJ>73-8?4079>a28{ofc=6v)XBO+MIT0k$a~5 zPIs|;mb=6~+pTpQ+(tL)rraiXrQ7VbxK}&ZIM+JwbJjc8Iq!Eq;N0ol*2ObR9kQ-Z0%(|&)y zuiwwF38n{1{nVd<|2f?DT86*z(ILUob4SY4tnRhOwc?9*z%Zm=7J4Z%&p z#^C1Qmf%Cdt-*(bO~FTkj|R5|w+D9wcLsL_n}fT9dxCp|j|CqO?h8HHh@Nn>W@MQ40V0-ZS;4A72!54Mz&jnu!z8pLsyy||#{g(S}_jUJs?ho7_ zx<7V*;{MG2x%*4^*Y0oK-??-Ax&AzVzQ4df!(Zqx^3U|&=`Z%r@|XB$`?dZ#{oN%d($JC*_>sX56csJDl$P zy8PuR$*bOLn&ZR0gg4e3<$ct@&HtSDxc6!AQTGXTzx$H*eZhMz{wh*>D*j>JGCvgS zg?xJBUas+w{2z6=KX?xy&zBH#vUZ;m`=NIKk#~mXW1;^4N&G)jKOGhSHfW~~LvEFJ zRq9ruYe0VzXdnFhY4D4{{Qh@%>}&2$_v?`9O0UJc5%I6gU!8wB{?+&nr^4Ote8G9y z+3CFGyx_dgzs~=Fe~sT5OU6>MCe0Po>(Wo1vB9ySv0-@rPKn$u^)BbdHbdJ z1#ohce?q{xu++leM?tshnBOajKS1z6oULD_2C2a~W#0+hV7vEu?+e}+z303yd0r3; zd=weq5yrQ1`lwO)(fR5A3H}WKM1Q7#l7D#qi2PK1No*Rvrgs9q>!?&B|1SRu|K0w3 z{P+5Zs>bAB^k4G7>c8xN&EE+;HqT$EG+~#iIk)@B{Ab;5?i22l?o;m5?lbPQ?n7#; z`iy#5J)#~}kEzGicVe%{z8m{q?EA4F#Cl>sj4g_t8GC1JaqO(vlGxd?+SpO~WAex4 zkJmcSlK&|7nEOWTarg7?g#0Vs#QZDnYwkDQUG8_>@4DZ2d)yznZ@52oce}rEf93wh z-Q!NmPtH%tpOpWQf2;pFf4e`^JIOoQJH8tv{`UMG`8)G>DRd~I6qz1_XTJ;goMeTRFRd%8Qzo$bzXhr1)(k?tsWw0pRF zgqv`$aNq5|$9=CGxOw+V_bT^l_Zs(F_kHeq_d56e?gzA0V!iI~y3wB&JO^GLk8jf) zeNF9DUstcFSJi9k8|s_tx6U5tch2vfKR9nXe{}xjyu&%oIo+A%%y#BDbDeq4d}o1k zhO^LF4Sa#y>pZkyZgcDQMGjeCx})LrH-ch7atbI*5IxF2$Ebw2EDaz5gG z)Va;M-FcUDh4XIbJITt&ZIF~w?Idx9G)8I5ZN#UnddS4QUOX5rNXNwM;n@{D};Q9T6 zZ`8C}J?{-r@9Fu4o;M!&!3dMVV)K<`EOL$EA+{Ga&` zdRx7Rz5Bhry1xG6Pxl@bn`7c02KQ>*pGS?b3!JT;PgiH^8hU4(-w)&@-kjTTs_rFC z%<}&?<~QVTIz(NtDSQMEpHLsN@ZY4Zx}-Ld!_{ZJ4+Fg4pXzN_V~Wad!$j%di(-d9 zed7cFkI`AZ`7mUy=;^2;bYO5@8SlXdDdpoLpYhOySK?of?~H#9F&@*d59A-rzZG-* z-^KnIJI9@g=< z#%60eC)U^L=k#|5I0KzZr^*@R40eV%L!HB%VNSI(+!^7FbVfO&ox`0YoP;yR8S5PB z9OaC2j&_c5#yiJ4$AJrs5!F{T<@52*1ZSc%$(ig-ai%&o&RNb9=WM6eImcP*EOV9@ z!Z9qbrT#L1xqq&Io`1f-!oR@(rTUfnwfc?vt=gl0r+%;gpx#t}RDV)`R(sW7)L+%# z)LZKB>L2Q#O5qDkuH!kV04MJBaw?qOPM>|!SL*tb9?j%?;Q#hi9ftZ&@Otpwz=Us% z9~~SM^aD8EpXJYn7Cfcp_(bd~JijWsqEu~ssQR+kSDoyisPg{T{Z)wZyyl}S7!(W+ zh6F={!-8Q!b&&Kg_Xl_*yifX{D#TW5oO)90#RJ;y+}L@spMitj!Ow%K`I`K+{Pg?@ z`5E~W^E30`jl?34ztQ~sD)u)lSo}8j=h*RnjX%~O?LVg7ABk;uKg(c+>)R#qC+Tn# zVkZSB2S1PfB9;io1g&|c=EHp)?(cxFP{`T%F*^J&^?&S8jE_{K)e&mA%4nB0vES?T z|KMMX9Pd>(s=sM{{EPQz?fysqbM7|vZ2k=ONB2+ej}hk`nzK_>JHm~KuPV{r0^5a$ z59F`U-vIu2eNd=D`~QC%ygsS!+JAtz<-}lo7u1ml;s3Y( z-wHAJ&Ge>&#NIc?f5yf9!tviv`a{H9D_A%~Q_el3Bcbt2)dyG5Y{keKcbMY?s1|9Mz&QG16IlG;o zJHK##3B`U-qpgCv>Rt2jIVby=(Ix#rqzncHQR^+yz zJ?IG1!J32eo(ZxC40ET}hTHv5m6a-gzL*k==SH<4)|LXq(q51$-=n%KW zJWVgnJMlF-KI8DZCeTD(5Z|Nq>vvwA*Wi5s&)=jf5w;W_XW#UgZM5W@NaPM>9 za&!I<{O=>Dv&H@6@t^7RcYBrEPTN!QwrakVI!4XYPxIqEUo2bT@yqeq+I>!ZZ0yL` zQSduHJ}EvmK0SV7{N(sM;+TjDpwZ;ZF)+w&dybpH1Eo$<}_d*UC9--i&Ni7$_z7he&-Fn)3T z(s)C>E}o1xNlYo)|4$A<0+ZBnYJxgijX#922M%(2epY@qYV;pkpWgERsjceyv29wf z9*>=)X_&_QHU2$wvPj~xQAgz({;qk)|rNhf2)g$pVMy>U`{dEY_ zskLXL4t=V`M$aEN=ftfj$t}#+K7HK#gjbt?mv^84G5?(W8qKx!D@QN#E}I^13U zmF0rGEw{Ya><{xR{L}Eomalrd{88#5Z=-sjTJKNxo>fO2l%L|vmTPGgyZz_T(nHJ* zugmq-P^h2(98aYwAFZvyG4YqQ9@2M^cKMwCUmZ(mIwpQi{#umgX^ox=o(>rDnc&&r zCUvX2U41}(T=V`3{}%rv{ z{x|#$I^0e8|0{na+%l-)YUFyMuIcmef4#a|ZPsZh^{M!D9lj=Zx%Th!{uzt=e~A4x zHo>3fAMKCvAIU$OUkyK3hx1~-rt#Rv@*mGPdClGj;rFxH?$~|aN4-0|dvq#T4bbIO z>N25KIu>3x01v?3FMgYLxjnW`^R3jG_(IuYaMhySS4#Lwi7)JebOv3)+MqjF7hE2^ zE4U)CKJO0R6TCOb7qE4|GPo+ZdLLKodvJPf@IHJ=T&e5+#WX$;Tp!#JeDGh4eQ^H% z&kphaf4kgAdE>mJy<@!b-m%_s-tnSe=f^)QdNV9OH2xK|y<6b(8~^9x`i6hE)}VW0 z{K4Z9@zJ73=L$Vu#CC5yty653bnlK|t>axI`nN28v${pysot*!dqcdT63WW_e&qH( z?RJf)H_568b^g18ZwJcv{5`Qh#g6eO`A7Ok2w#uJ&3U1#WAoJl^$l?Iy7<^M1D)P` zyzTIN58C%+&GD4@8`}LRUhiN)FfgbLnh>wj8yMBa9&5uZ|XG2sT=>ex=(FU_o$GxOY(dA`E~sNbV0HoL|#|ozPM1{TjC3J{wT^puDiW^ zz4P*Gy)FJd{`vVf!|nm%obO$LFxTpEclf~pLLQped%ab<9H**T>P7FH{s{GecfH!6 zuJtE+Ppi@1qp{D%o{W9d>mBPC8yNep_vzS!vCqW5?e&WL@fG=B`2X}T$X}GdB=5vx zv0jlf_m20EUzXopkkO%W^PdUTfn>+TM#SpMa5Gk28@oQXG4`fEH+HjEm%lIe$=Hn8 zo8E7|-+NPIfA;?Bt&6=k_IK|cvD0IBtE;@tv3q0FVi&}I?)}P}82dF!T%T{qH=^c` zk2S}V`CDTjiQN(Vlm7$n$KFp-OJ50~?cR>yK~U_@(f<`rLNeF$sz=x4_q}oXqqX+@ zTI1j7|4N-2q_s>tVt427$$tgyV{861`5oH#Gm+BV5r0N~PJLcICF!=rhalcJ$ej*# zng1#EX>~t*e-w$uz@Lpjp<7+IcUb)Jc+OjfI9I55tM|a~Fg*XbB>XaP`Ncvzof$9< z>}Y|@3%ZS+ru|Njuk+sRy@=;eKo}UMOA@-t1 zFNxb%L0^{VuYvB2eO=HiLSGg7-6nPxFmM6Av|x!nUJtiRmZfN1e{gJ)ES!A3$7Q;GZN^5 z-~VZU(3IeIKD6T3U&NCd*5y(O!%!^1A>kAf&dkJb zE>FTebqY$X(-m4HbehoVLQgOh>Eiee{N@uk(#;^<4ARXY-Hc8bY2i>6q)T3L*WjLp zdphnDkUz?coBNt^GzZRD!QLp`jhQL9r{b=`Jq`DC+$Z3kf%`<<-pM4>ZBxQo6OpufbW?IttuiNMGi)I)dBSuRE>{b))108XV z%Z3i)rsyMbv^##w)!I4^W^!lkh)*QAz^e@y%j?D$lLt z34XOWHIQdQ@-)Z{Y~dn2&(<*}AS_SQyc|9qstJAzu{wJ;X5E(|1iw#wthSkweSz?# zOZ;*gF_~gC-*%kD2fG0-PD4IPq`0t=PE8rnPXe=hdbFh0*k%;|82r1iu8 z(l=?Jfq1!+G)!qb;WHj9isvF-o}D-e+$>hhu*#T#>r&*({905S!X2yKj>i9Dcf)xW zQsXI#lv$(xuMLE-xg0zDQi!<{Y4J4Sc04yDbO%moAbrj*zxS5(t@r zD>0>j)5mavX9E8jIt^c*`I!X&=33ipqY2cUNsnpa*TzUShtw!{y4QoxR3R;< zSeo8};xQeb_llF2kPmA-W&k{j|%T}#53CEuUKs89AP z<+Hd%`{&H^6RjWWR3qxA6QwDYjpda*hH?)1D3>02F)1dn=R2BqY3-ELfG};Ab$|NK z@-IZ%R-34s3$;emhm!0@Sx&{xZ^y4ds}0*P&&E6#r(-TZK>D--JkysaT&K`ZcwT8! ziRQPU{@T&1ICiqv{`md(+9%6IO%7Y8u~l@lmSYLZ#M4I&H~ZtGxJ8%7-M_qx<5^2E zA5y0NccR9rA^J!KD+*2b$H#GEYm=y}4CZB`@vaHa(OdGakzA<*e$BkihO`ljVFwoRRRF@=n_ zP1eRl(=@Hx`0(Uq%7@xwwfpVoV`7$TZw)9%6aI{CS&Q6QLRutaagsm`LtDcW?OAHN zS^Go#Y+Ou9_b(mV$0mts(hT!8ZFygdn1GC!C-dWZ^32)P8_(o6wLzO#EIq>~`=nBf zWF=@cqMSU6Q!2HL2evuo>V?+Cj1YJ#I!jT^ZIq+gnq$^@H^R1|+-(Rw13To4b{yb zW)gIWn$4?ReYGM@jvEqqPhKwGF@;vB)Vx$f=gPVG%{_iA&uf1%I0ETF8OXV9H|%3< ztue28@MmqT#0ZS#HP#}UTX}vv5Q{w~b&Dg^XgVCHnz5jC-0hY-?J8L&>3>yjf1u<2NG>wiY7=j;(0PO>1W_v44wfOHwX6!Dn;aIMHn))(* zLpb6wt&Gw(HEk>aOU1s7mXOb^588yK(1Tjc71%49)?midrj8gk19@`%ZTb~TnWJl_ zQO?Hm%L%3xvUS*=EQwi%xk~NBa;=A@wwL(8Bi^uPIQOAdGxM$s(aO#2gc38YBZ)lN zO3lotw5Ko67fWel7tbfCX=bcXyKDM;@=A9i%8xxFzh%UBY;>kv{gsXt*dq6p#QrR; z2vo?yNP{QJm(1%l-Dp2b_VjR;i!GeVLtqQ|H-QjJ*wK zoz}7#-R4Z4k_>GDtKeVb$BtNR552#f*`qO6&QNU`sGVU?NBy?tAZO+Dt+>>tthSF~ zYh|BjM!6hEt%R&>$@d+(SuSweJvgc_NaLjQ{&7sNtIs(5s^o8~Zru9*9nC+z@|;U6 z+h;$p@u=Shv7??W)vNM0ER=0&_;8LNY9zCIPkdIW3h@*9EQB{Dp!B|(@*xxrTu@{ z(;Lp%Y7f@a+xg~N)C|53p=)$4_+!sci5`PA%s8xc*220p;n*`UM~)z<4`$YFXUAOe zY=Yc5f*+&HSx#=W0rN3Ru~IhcEj2~&p%$XdT>E2v(28;7${u+Y>YQ~&Z7~*)vY`%? z*BY*{+4jUR)-u}?akh(-3w3F%&J>T3jBb_kLoG2JjfX7A16LaDsES(0HJ5$4wf1>m z4KLQ=()?`s%jfm>b1F?gEYJT`4!Zga|4Q>KmJGFAlLnx*!Q{n=l;DDLqNEK%Fu z=A+j5Z70hQ_1%o|%!tpdeo)uT&)b+MSHVlKa`TT4=qY(O_7`X5K|?tE3P<#I{=|7d z*Qd^avuisOtySxf7c z-&LB2a&>_d)^}FqQ5udbEak#2!RL{>Qj6O8IVF52X?}Yyv#z#-Up!E1v7BBwx3!~i zK2BS<5$EZo3a^poc4X$@Lrcp$mUg!1TFiNTWMS^&rDoM&5k6p1uRklGIqL!+lVAZS z;Z%evxTh-pnhgDinf2*F_*csRB#czsVP}j*Hgmegs6%Q7Yu8@nd2vfararUoe7Y?F zvx0RHng7mCCUJfsgmqp^Cf8Zt%3#`GFebq{NCbS~kk;r77x5S4P|^7rIk>kL8oV5> z%wDaVf45=K+J-Z(eeCi}pIrUAdqZ`w@q+_aE_|fld$-KIdiVF+OZ;E?`bp1Besa~q z>$X0+^~D9vH{JPq&8v?*F>dyiz3yIk^&e{v<5-54iv0^migsluQqE<~Ep4#=93$8@ zR2vHQpqFlD<7-uI4Xx|u);BhrayCwXe$p4W{&4D%d zmm6E3(f4@=%Jsng;TT)20$qe!vD&f!F^{cLj-6Pm995dJoRLNNUWOXOo+_Njni1*w z7|owA>*S^Hj0())p`5(gHeJJeIv;22E$GNBYiVEEnkuZ8mX~*<))|gD$Pdn}#m$i< z%T}&D9LMmxjvR%Rk0ng)C%zfugsY%tWr_8{m4oQp#pqh2u?n>GQJI(H54*O&n<n@v=YT8-P+Nhc#9%onrYE_nKUpG9&5osV>*!vEuzl9Bq&r+HA^?HEHH( zwr8U~58sZ4r7XX`Q_4~C{FOCn_ZhT6;9?KT(L&&YQ z9A*Sxtn<-S%cU2VcRo1f%0>8Aqc|n2+Xt?@1I>`i$lUAOpfKs!?tSd=MvP#axKeF zox1sb59{|}J%BA)x%9bSjV~HQ3hbp=kNdaujK9A(m8RzTzu0=t#VQXGu_ckS*<-=+5cS!#8Dn++ z=jCB$3zV{1O<=31Y}oQ`Jsn8@_Fb=w%G|8V?N8e5+fC_=#uyDUHNaL{deI6{0&G(U zTAf-Hsdd9a@ygV^#fuXe{9rYMx0H#_cJ9!v#}~ZR+4!+(dwpx@hYw{ZI+_yrGO7NK z=RW?CxO|s>Zab4nF?BmRfu9TahChB|xFSJ1aoP!4{F{G~l=FvIuA?J?&(p6=Ap^Z1S-)6K;5+f{SQ$?= zwX~+j=(PJRz*qJ7hMJtfrT2JS`c#tKLLT%PGcJ3q4qxiu6p79d^Or6?d#R*F-XeUT zJS!0vXlcqwA(_BperBC1StNw*Z=xfDa{Co&QK%vKQoFVb{LLk==omKChcWtX_hQ80 zSj_&K=xn{4fxW{1;!$f36svsyO^!@&73HS_c;so?By#|Uy0_m0d z{cqss9>jt8$Y}4AuBOco8NB?G+9Nb4@dBaigx6a-T`zRA(CtEdgsR64KMA3;gfT6&eWLEOdv^Jwg+rZ?!_Lo?doY zLwz=t9B;qv|57f~!aYj7F1xG~-9A1kn9|)S&KohlWGvC1(q~^VTq2p` z60AO_`n1z<;?Su|?_hlg4z3=9`yw6&f(t!xrXHV8J06FIOvEupJjv*2?RK1+ z3_1=sl2E52E`q7kK*z)A@;sqSabJP^XhgUI568jpc-#|lPsTkC_i2c5Dk2|^=PPhu ziknwmS5uB7kz))5ZYaSN&M~Skw=SLPXtKdn9lPt+1ooWeS{f58JL@w^?N>)}w66@q zb+O(c4Y+qUqM+ha*M$L9N5+VWLy(dXb;(pyeP?Sf(b$2FZ6<1>5gX+2%ReSj$2zS) zKzvC*8Xe!E)w0&{3;7pPk9tE6hCjpp{!*d*%*M7vvIR%7;D?B97{4Ui>eIHIspiB% zSkaQN3&VwyNQ5j!{13=dU1LXj-Ts6|xpgLU7_{OClpOe>Ugs}VbxW5oUu5gw)N4U2 zq@D$rPnddd_1RQt%0gAw(bnFQpbp`?oRCRfC?wNDqLoViO8qaoq$osPTYY=|N{mGh zBGl4wWrfQ8Lb>lFxlsB=;jH{i# z*2jqYM?)c48>iL65;>`ShM+0>I*%t=(iykNHe zpSiaG!SrjTsV`kNZ`qCokBuMosXG=w{)xkf-F)Yw>pA|Ld-BD2hs#~R*^3)Hk}15H z>%KVK)qZiRKD&-HzKgMk7T+;XWiQU4$AGXV)=WC_;yIlyt;vhqQ@N(@=@T(GqQ}ME zGp1iWAJO=ZZ^raV>7+iv31`hApF4%2=$La>eM}{uayj-bWw(IoGZSI#Rg35D2)6D_ z%clKLTy&p>o9RcdW`wg>G~DKra5fCn+!paG&D-Y5@Eef!9)!gh-A3PsGJM6;p?`Jc znSq&xy`uav-RKp~mt`XVmSC|xzBvbJhq zObwjgOAV~)o9;Q&d^6)#%#>!2!1>lY3>VH}ebiygE7f7s2dKj`gZ5PR4A|Z;-M7xc zM-2MZ#HUo@Gn>Qb3{4Ng0ZcZHX$g!iaBu&LNuz3Lg&LactA-}~sG-w)tD#G)dKi`^ z^2gx!=D2?*VJF~uRs>g#^3|w0)jfx$ht@^&cnM*y9t)l=pD{f*K2+mvpX<;uJk<{*#TmbpsGX3H}hW1VK)(Zkskg!MH9Xf(4Nvw}!>8kU>Ciocd#ZNYdP`ywjjeU{0e=Ok~oe%PWZVX5HhJ!EWs`k-FWMhbjh zieD={hWm6IhGl;PWzT`4E^XOunv*ZU_cU?a@WaQkEmol|qCH01BK3p^k{R8Cek|_= zJ&CI!HPEf&d#Mq*N1?Bes1eRq)mQW?O}%0rC972B!@YZYrQ@|#gJWticph9cQ1eVV zBr(9h3HJ)&`CdGK2lpCV23^j0p`45}w@#_EaN9Tyc)kvIA&!wG))X3$v(CxF;NaswYwL5Lv%PcT}-h=jr`)T2A_>8`4-1IfxIH$=gwvtAMiIE3R@2l5B7VnFsH>IySVtSK0!ns(L zOK%tJMB0m{8FvaqY2-RIj((vMybn-AAFeVsY>+!;e{z2H!%7X?6w0}GiT<&UMt>Av zx5B*#pP_n+O#vkRRe1JOfh;_1-+|O17GQj_R@d; z5xGIgqYC{*r5ZeUz{Wm%Dth8O@tG~eqwRqCl)h>p;tfy(AJ*|sI70f6VQ?EfZ9t|p zo~}g3#m$QppE}dBGq$Ba?0-L1xv^i`=rwFy680VTX*lfD@S34L!?o_*2i>{7tnTc@ zkjbg8P}PW6jd<0FS6wqC?Ns-H8*a3vYP2P|v5!j+A5)G{u*=#_k$AW*;ipFzkx1Gu$EUY>@OWXWb;168j8DGfD*bnyw~YHWd`w^rWD&)>OeNtH z|G+8lxMMp^_$V&4n^K;mb`#|uLq4DOB+vcXm~#Bjs&Z5v z?w$z$|NCyR0SDousDANrilK9=(v>id(J~cShk(FtkhRf9*&| zb>V*L1*6YV?BMg1qjGUQMlMRv>Q1Sim*RfD>NlriPrN6#)2+k0HQOBQYkG{Meu#VC zi^!91&&4$UDcqLRjd}`O;@bjB`{c zZiSBkjlp;26~ZX^DflUbRR~)g27Op0PJs_A&;8L-xt4~rw$Rf3^s7a6xW6z9V`?Gv z0`sDDQFxoS&6{;pVjDM4bJPU%1qpoCgLM_f`|T6T^pV<*enIpFdQf+gqprh!1=Bq$ zrj9~A`WQFRZTQKKx|;4I(AT_%eir?Xf}cW|B7gGxChG0E3bhq+#+>4)t&B(gdn2y# z9JuWi-svA=*fPW|iih%*;wYbmzCicW{m@VMRfCpFKdtTX0M+MV%mbp&R>ne29~D#S zxsKY5`wD!TSKC#5ys6j?dLIc>$h#yxv!+mmaU|9irej^ft|@3;=!2*?Y+|#b-iliQ=HKlf8{Q~IBW&xS?6Oc zcAgrIIEVEhPC0!sI$5jb1)Z$Bz)@|u@BbR)Mft+s(bm!J0o;$$9rag=qw#Fp)M>&7 zs*4;o3b(?32F8uzg1l|p(B)i?a@MLiWHP40RTaslDshRU*5W=@r@{WQ#Es!{%hWdz z=7+fJB(G?^{k5asgDccv=WNw)PoJKO?eVl<7n@?omHitW)r}k6t9O%XdlHT-s|K0* z=cx}mYSu%p;<{$yMTD+Y`nd`pEg1rRsdzY+W|+DT6J`&_sSNv;P>O}v(h8)}(`3S& zy3*v|2FfrF%epaEehhedg}NN$xPi&RY9PjRoC6hPd~9!Ztn=JH<6AA`=`Z0!4URgp z%~6}M&qUW#1Z#aRu~}QQj(QIFYZ5++9jsGKoc=n#GyRHl_?}TcBX(AA*K3&6bKAD? ziKio+9#yq-;FJNZ>%nm~_>J$Wis!zsV!0ov4OcnpA>89%0Y6#~ex`BkYDdkqZf|~9 z5q|;qa=Jl)rI=|H;=sQsUG_alLm^*Il$)6R4abE7FUQYIN68MHSM+*a42Cb)C zp{Ea;_BgY*n)zm2O?z#C>f6w($KTFb6w1W)X7p)3<_LASI_g`v-xNNh7@zW1)v(*n zNEd55KaqJw73LL{T7QN-TxrJLZwyd7Z*$b8w_^=G;QlgdL{VRbBE$JIK4(Q2YxpGq0;`2>OU6o zY#zEl=v_2#8$PYC8k>7YjZHqS#!i1qjm6rrS?xtPhIud7k9$|Us`}v}g*JWur(sKQ zPe2A}CKUPxYE(^kewg3N?0VQ47(0qE^(%XC3u0?za$+^vBOQ>f4}$ zzAEV$Io3L3`l>P0k5FTr!&K4A2=#PWA2n?GAief6Y~$cPRXt|aq<5LVz}md6+raY^ z#^z|sb=v8}IOo-C;Ii&g+ne=+dbRQX4*NFXAxFIdek(!EIyAA6)c(iDYsQb+U z=r{YL-|VNVGedf~rrrAh>+US|4)8VbDZ|@f(x@&{xVQ@XG6ZYDuvvC3*sL=SRQ(^u zS}$d{G+e*F81G*`hWiwetw{-MxF`p&-QQ%56kpoqTdo?9yY%8aJ6_hNSL1p5|HIz< zz(;Y_d;b%lnp)JgVqFz=+tRYFv|U?j*Os`v1Cz;|nJ-?S*YEc{ zkE5sWvu8g0Ip=)OpPAk4F7$Fw@IU5nc3$1A&(-TRy2AHQ`hOnz!EZJ=HBX)CD*iq; z+TaX%$_}8+L0QT3++!#k!E)t4M1Gb0G5Me5U&u3mSg&^uc@23Jc{kZfK0>~gd@s3^{5<(p@@M2< z$QZ{nN#1^>UjH9ChmMjzAV&ZOXLOx9Pk{>1yl2!7LBacWx$~(8?=OtqIX&CDs)$dUbgoG)xYnLe?@P) z=Qq0+;!f+drnZiS@*#Wt6;1N)Z;)L)4eeO8e%(5JT&w zZ+Xu0hdMf2*GSu)qCEEeO4$V-PxHn7{Zb|mPW%$uBT`cD;q~~~{Y|UZw4#-t_qG~; zpS*CY7aF))O0Qqv)|Ok+pH5$xXn&Exvqx2io1jNnq1vFi@!#Y=9zX~{D4?|1dEN6TB+J-GT_S#7QL zRloxCLsP$W>h3IdW=)g%y?oJ)?uQlE;dy7(OHTOwZW{jmigleQjL&q>bFMV4eV`S4 z;=;wZWBW60d9|}>ZPTib2X1U#;|6lW$;aHE*0!}$Jl=p_;S+NBkRN`fu^k)C>k)PL z-KA`0TBD?pph(Eo^UD zUR>S2Xf1xJ(&=cB8ABK6^(W^|J#-Rs{M%m(*R{%|Sy)`%vGAtlOPya&KQZ^4)|v%@ ze?t@h`p0eUufXqMV!a_$cQX(?yp<%)y*`uffw^*GngaQ_X4TiP~y;3yc$2u2wxb2dk?Yu$Gc=qJw?#HD&5QR^=SGb^4pOAhps{gAe zX0!c_lr6&t0oNDJH@2`8uu(c+lry}H)q^FkKyPa=xIc=9$nncAXcCqVKG80FhxPRF z`b=u?z~qwXJW1M*M#y9AC$0Fzl00Af$7v*c@kbi2Z(H9{kkaec-*+FDm*d>!?g6*9 z)+g)dyw^K-7OZf0eR&H0)q6M3Y7m=WxbbvDC8LXyebbj=brtL3!{hjjo7Z<1*LS*e z{6y*1(l*Z=aq6RY!g!_Irseo>EGL3jAKU4#<^$0=h=9S_l-u8VkncpKP8Ydat@Ctz!V-=MTh(# z*erYoh*U)?LYI=~qC5c(f*DZ$UgZE>77XZNFPG_4AQrd zevWh;>C9hDbDoE^2{3voO6+`LRya0iu4fD8Oo2%rI9j7 zHzK_h>3*aRq}L$zAZQt50(t=RDqN#J5VH;GE&ibe`zo()v3GRN}?X8Fyc zYq6iyZ;0x*Cri4DYu9xycE50o8^28E&V||Bl7)Gs+pGj}=r>=~+ zaW7nif1*%IZfIM3&#E?C`O8G|J&6 z1)?FV;K5aG9S+C12`_Ku+AcQoLZht{rwa8+f_tp`Z;78MS>D;Ys;#py>9xhJg_Co( zeouKTA|+o&SXTe(ZakZjTf7cYS$FdB^7Tb`9iAxeSlEIWAgl3`!~MD%p4gE;`TKNy zSbuR0mpfKH(0W_Z-1f=si~IZ7eErmFUfel2gC?GQ<>Gr>zmWS?_0mQ7qLZ9q2h6Rv zH){CtgqD@~nxNdLNN#lpzJ?+{(Ct3FzqNDa`i|ChE7ulRy?lM^O81AQJ{dF-Pb*yW>U-TX51KP3j9``QGl+;@uRCb@- zUh#Q#RY8^vOV%(@;#zduEV+({*2tG2*S5(7p|azl_D=ju+5dJsM2L^4ND8uRPKg%Bz;iN7UoV>Z#9%93`2& z{~L~mX)|Q`o;dokAv8bo&?9HFWE(zGBS+uXI$!(2>T$_s9xl18K>z72-`kR?pPusH z*Wxqda%9MlD)kGg{}<@Lw)x2BXF5OKJihs*bu-U@PxwFF=RV^WY+$#1@9ysDC^nResk;x)j!~`01umIPLZ5qLCkv8jS|-56f64QEB{mQ_p?vA(pC512S)C@ zzp(mc545dmUt4@R{xY@x!B=!W^vb%`!s`|-UUK~n*`+Uf@v<9lx;b~tt;?HkyZw&* zoi91%s{YS?SvoJ>+9#FS&^i2`M5w9$u6=)c9T71FIgdn$Puzi*2u=OdOH(jl1!0lGDBv`9GNGZ z$pTp0kAi_4pQlUFXC^ovDa^n&(d?>)~})+VmIfAxDnZeT`oB z6_XbZkJW!4@b5*bS6QdZQL@B;#8N(LiGONY@O&7u>9fK56897TJQ=e1 z7cBZb_glYDneq3R$2ji(@?lH-yDjT+%(9L$mhurxzY-Sxgk@aH7X7GY-Bm61RxSR; zrNQHsw2Y&}>x)00xwXMQqn0=i-W;sYSoDpS_KaKh!!b*F#x}1k>mq6CZ#VZ(|M*Tk5IkPvmiCO=;$Ue{v!y*<-2eUUDOu)8 ziE;4n=Z%(ik+b-WTCU^0mi=Me;-9jt(_zd0=~&{Kv5arCC7xx=e9Liszcf!osOlyNlQG3IF5e*VaxihTE@L%nQu9+3%`HKvR-1A zc4jT>Wy~`FyZO4tf8A`fjC;&dUSWIuuWKIVJolFmS;jGE@vmCu)foN#^Jg}F{N-`W zzO?_v^>yKY-Cg7BEdRKasrSD>lVF_v2FVo`+&cEly)lc=xMkm~ zSbT;o?HsnmXV7xp$#VYt+u3Uwmx5)VtXkH~s3kr*%XKPmDIc=TpQ^<_Zh7A(Yq^gq z+Sacno(W5N%F>>kWxNuW`B2RU-;X6N@o%)mzi7E`KE`?F-=8y4l zadRwj7_`*eZHeb>u517Mt6i+uUtZ(7^Ouit9{S76Y>&VEFxQvA{83B2%Q%jHeIw)G z-{+`{{@3+)j;`PPv)64nk_vvB1{_+uv{~-PS`ff|TImXT3o{HtVAEVxXeQ_91 zfB87~D}Q_DTl)1V>-Fnra^LWmCpq8z<-Hc4O_uUu?qhzRQLbNqzXsVae|f=jA6sC5 z{c(=b-(PPJ{r&nm^!MxAEc5v>OZgb%=J)U6`1<{iS>o1j8Q-$SznSaHUvJIQ-$sj1 zH{0X)Nm}M%nm+#V8f5(I@0#J~P0y>Z=dz_=3C=_R`;cQCU;n;+ls^9QL5qHr>(t-Q z8sCqS&*{r?nC+}`KlHcf5XaG9?+nf#e|ecc{&2_gUiLaNYU!8yJ88cpc;W0DgUzaq!QdyrtevmhuIbI8?db{q>eD^KFAA&dccU z@7E?vy&Ej^HqQCx-_OU`9)CL%mi3ag)Z1gJw~PCRzy1A;zrWtYmN>7l#Akx_`sdXK z*6UxVU98t%et_3~fB6y1zFp)z_t#sp)LXXr&*r%J>vcGv>$}Fu>(LR$$3KoK?tA|I zvuxS7``I49PorgD?XmcjEc^Tz_bY#UCOCim<<0c*w9ljsy_o-UilVF_v?Wxk=@6*fcqrYFtHT8Yl?~}9mY_!bJ z8r$jjDe?N{Z%@k7uO7>MnBaWy`#6?37cD-`mhoz%-XEVD_YHr)61*Py+f$+5eEsSe z=fjZY^;FR|pDpt(!~M$No>5DAp6&6^bLK5p`Jnp8cusVZ%yW>PbjTOg#sa9>1`9O+QROrF}th7M;{(>Xo(z>7;!|CtA}d zWG5ZQ&-fVMNg_Nje#XbN)2}mrn(>hKX~x6!BWgS}IvEe6lRntyf$4|oXV`ei`o9FJ zgp?wINr%L5CCo%8F?<0jdU_6t>}dQL-q~P86V^8 z*BL+KBf2m@8I!R6PyD6cIFk6-_O&_GnRfZ(fz$3$!+%YG!|Ij&)ab(MHE|J*(FMg> zbWcO_k1vWQ9TLAaFcO`_&^rI1k>8Zi__b^N;Pq6c-vdg&SxUb)rQg%x2dTU6BsQ}C z{D;JT8E$~&d%J%v&WmoYQkPWdL?V6F92Y_qb?+|g_jwvKXyz$(7b$hJ_h^o*Ad+!0 zb1P{4WL{mN)IDFRGuM`=daqIXU8&Svs??c1EvkK2EB#)m)Gbiz(n_8Do{(mI=PPw) zkB^GWWlFzmp%X9J3#FYw*CV;k7@cTMe~_JY$UGID@iD%WM0jBQjF0JyUuXQDj1$r> z+jUx=C-ugW#4GH&Z~77DXWD1lZ>v|X`^GP}^Lx54Kp{qY|Xzgv(r?Rz!-O3+*50?n;B zFW2AKt_Zqe@biP1y z2ehW%Fu#(|ujH>3k7XX@K@(@W2bh_`e|(3u?@lCXo2+4*u7-23g{MX*zgnf~$0MG8 z_^%(Za1Uvp{KA>>!&3tH8fo9_0{r}X(XCMWJ*xD(%i|X|ZvPbE=U*q%-@B0}#W{fj z-y!{YJ^VDfmC%~_g|+VuY+ng_f4flR9x|_*ku&ou%x@KRntHoEaS5yU9%a4vLN_Tc z85H;qiQgMhuSVAb?Ic~oXNHI3_a?ueMb|p@=~GJPpyd21rBe$;cjMIJDJ7!2e@f}p z0(t#jm|8rgM0Bf>9*-n>+aYlio!o0`bf+tI@?N#ZPu_#p=;Xa+jZWS(*65z3)M3g5 z-iM>uJ!D=<{6r_ocF29$%aBe*7j*w`{H5LpkTmP}&8Sp#GS=389GW(z-$soeyw-U9 zY}c(ZXx`{#qLqVe;P&rxeA*;P{LFb1$4LS{@ajw)qjV;YQ92XHD4mI8l+MI4N@wC2qcZmZ)rG~+s|$;tR~Ht) z*D2%Y)rG~+s|$;tR~HsPuP!WpUR_xHyt=UXd39m&dyO)FUR_xHyt;FPHUgG;bz$-I z>cZmZ)rG~+s|$;tR~Ht)*DB-Z)rG~+s|$;tR~HsPuP!WpUR_xHyt=UXd39m&D=FjW z)rG~+s|$;tR~HsPuP!WpUR_xHyt=UXd39m&d&JRQf4#b}_<40<@$>4!;^)bD$53g=cP=ze>>cYmus|y&7#uBPFIdoGg&*xzS}#7Ej3; zotejmQ-mlGKXX28JiNNF@$l-x#>1-%8xOB8Y&^WWu<`Kfl0gAs*_%9Z36VLX3yYh1 zuIR$z=GBG8&8rKGn^zYWH?J-%ZeCqj+>GwcCKJJp5$Db6x0p->--`3Hjxr%SSs$V^ z^WHG%DWWsu8>KVj8>KVj8>KVj8>KVj8>KVj8>KVj8>N#tCxU{;vQv$-sn5ha$l5z@ zCf-px6YnUUiFcIF#5+o7;vJNV;J-l(P`o=I!&BKr-`%ZG;tQ4CeEVM#94Hw66XZ; zw&PUeY{tRFJIGhsXLKgsQ92XvD4mISl+MIEN@wC7r8Dsk()}|EO@9q-Iuo}jorznN z&crQBXW|y6GjWU3nYcyiOx(hBZx0GqK-oJyaSk|rqDXWm&L;{3GNLna4mf?HNOUI7 zCkg{HqBC(0IDMi>bSBOx3Ij5tGjR?$eWFNoCe9}c12T`HENmRiQ$(kUpXfC46P+f0 zqSM4rbei~yP7^=TY2x=T=%ypZkZgzSr$(2siBK-OcOz;1j4lDa?GV5BB5C}LE@Lx8 zxz{fdq1zO4-g|0~_d!Vhoj51`NQ7vleMT2G9`Aux<7aeHe!WURql@w@EB%Zv%CAr9 zXLM11@28(umw?`O$hds~Ni$E4E@Lx8xz{fdq5B}tYvzH`Wt4tVaoNmza}j<<7gev( zB@}*|{a*ae3Gp(gM0c)v5JJ&u_IuH3_IuH3_IuH3_IuH3_WLc+X^!n05j5MBx}8d0 zMXB4N)a_F0`k~XT->uYz*~!!?hOilK-s>4 zvY?`m1{DUB{YyYuP|?SN3Ioc90?LAlK8`|(U)Uk*d=N>a``0id&$&-{@?qKiVJAK3 zKIzGaW&aH)r5{oES4Ni!F_X9$T|%J?o5$wq;%C;mDGQ?L&J8-@D-)er=e|>u9*WMa z^GPRs4@76yx$o4ZhoUpR);wL&y{6wdTpXfC46P+f0qSM4r zbei~yP7}XRL#K(K=rr*YohE*w)5K47n)r!M6F<>u;wL&y{5}KS*+@}`=rr*YohE*w z)5K47n)r!M6F<>u;wL&y{5}QUbfg55?U4P{=rT4D%8gDl9^!XSh?hAfI?Z^9PBR{& z(~O7cG~*#U&3K4TGaes;PR1kZe(1y00oFst<0D8KKhd3u6jm=zJD)`ozXX!)ka~?S zV-um==*)aE40?+Ane$=u#;ZFw$cSZLUD&+w>cZxYR~I&Kyt=S?X z#MzVuQFJEGLFY}G=uDhVSrA2M;v96|l!-2B9)$4AI2Sgq=Bc97#7}gZ_=!#vKhbI8 zCpu01M5l?L=rr*=2%YBmibe#@SCPzk7zRDns|y8oN^ql*y zCm)tQjFZ!tY`Wt(VRVf)5y~YlKR|jilITt&fhmXRo`%$bWYf*SIj`R=JdPm+9bP}1 zPW=8INoe{k^dHh+(aE`}{u*77kMT8r{(7a~(tmTd7bwk=0OCH;=HDPMwfv;tbM1T9Ne#aDkvN!&>QrCbAqsBx0{)iNHzaeW}bh58T-A{^6>W%8J=tL9dC)YLO7j|6` zj~QVV;=DOdgHC)+pM&n(WzIhyI=N0JkZgy{sQj?%ABlHbctCT$(r=r_4^5uy@w*(4XJ)4ML)ORk06)K8bV4(vY zpXh}C!}u8=(@ww6_!%G3h5212=W)Tj5DdC*ntIK7qxaWqbmsl%=RpwEUwNMNHx5d> zL>JV)dDIynE@wc&Hc~-I%@8RQm9b&8vh~pL*ggrOGw6diVg+h zXMBwB6dg1dDciSO**@{pv`_pr?Yjhi=Drh834HBXL;0!bOx(i!_IUamrjvUA-hQS& z({KN{nf{)t&a^YgPx@>8Z1crm@884ka!>qh?+c8f!5=~6OuNkM1;1W&;%CZj?K6H} zUEq3y-wTxO+ox=w_<8Fsp$`8c?Grz*&epywJng#-&yzjae~8~l1KKBgudnFR9zRom zkl(*}{K9nNXU>O>hxmDQ-gcS#rF}0{w(n!g_KBaj-jb=zL#bE%ygFO^=6l)~HXa}L zw9h{drfRA8O87}#2_&0e6V466&#Mb+UlTM}Dg8dK@k6}};OC7?31$96`th&u^Xh`y zC)c-YJbt1v&+&TJ@ZegHE^J=ySJsNGJ7rbwT6n?}xchu=$yOnEQkvo%F-_M77WO7+;&8 ziO2IH$oNHgZ2Do&8@*pDy2WT;=CaH$c|GMnJE_@U~+aW(O& zA!Br+wH-3Pw<_az&=Ws%KWX}J{AGNXEB(Hr^lMW3eO2R!hTf+1`a^3-Y=d*ooSct{Yle4(=MBzY2V-C7Zhjldnx*1 zt{Y~bM)9OW+V@RVYOWh$`_&4i-yx;nUGOt;GvhL;aeUy_Jq=}e+LS}aUv#s;7*dp< z(S`Zl9aNFOX52S5D|GVt)0IkHD|DK1`>rz1;%Dw7&3&c68!``Cl=aHBOEX`@PgC#x z%6h-AtXKRr^%j)%9#+;XewupMo`Oy@4}PL--)d#OqSMs-@5*`~P}VCtO}#(V)QkDt zrmR!O}#%>*86g$-%n4$PqU8JDeL{2vR?7i)Z3w~ z_vgxb#ZOc3dS$)i%6i35Q}08kpwrB&qssPeP}VCtO})QX*856jy`t09`zvL=uTlE_ z_7wayWX2dR@lvia3;?l?qVU67yX{@#9XVEZy5?RzE8{h94Ex}f%nt{Z-GE`enJZs3ng z7tZ|!eqLRWpXj`P@_B>|lHX6_B03q51a9!d;w<%gbwTxt-&Xh;A6Jk05L9mkIy0|C zHy!o+b$>*;=)8V5-RXEULUhuuFu!dcKXl1SAo=T+erR>ueSVn$KY88wIJU2Zym>w7 zkB`**_yC>1o#Lm}HCp^K@G$)rzn$oZ8IQ2nGomx&5%&7`49|F&{)%44#~fqG>{j|c z=@k4l{n(@Iujn-WeX_EBA5r?vIt4#XfA=ZteVVdf@zd1%G3aE>6G&!XLw3^9iAQnN z>(zPZi4lv=>u2^gbKX#NUr@GBbei!!Um2GXrQh6B@YBTkOUnL=PSf8Dl)Hm-kwtF z%;)-|{LJV2qIBkSeNj5|xxOf!`CMO=PGS-k7x{kKS7h)a4!JIURjK=iLMMC4s8aWJ zg-*U7r`3HEewy`mp>n;6pJqQe1RX3x54qp?hi+BA88^f_jNy2woi1LdPQgMAN=*1dhrs%t=HTa*mR=*v9f)l)3i@? zn)ZoK)4n6h_K8l@KGA8~Cpu00ey*%nbeegZR?buL)AU39%yt4%6dhosdtgG z-rp(xu0I7o&3yiYvfic2dc{vu@9&lM-k_{k{519cQCaVcl=X_Arrtj*>%CD~ulQ-| z{gblZ7c1)(KTW;;O5GNv?oCSF8x|17%Mc)b^PK;no_^FFoc zH1AW3E)iBK&xua+KDFpH?^BCT^FFocH1AW3PV+vs=rr$Bi%#=CwdgeOQ;SaXKDFp< zpBFa6B=7HvPV;`Y@sn8F4)Oad{Gtwde#yI>rj!1j>FIA+`@A|^ z{G?u^i|U8bMUAh~iJzt)qO|{q3{$*I%zqCw`AZ zg_?ciX3xHn!t;VYS0JCgf4tH!r}0BQr%ON-#}kygnM&OgmAWS@bx%_2V$jKak}(TA zM5j5PqVyA;=7=kG&wx%duWr-K19&}C>36%v4;_7$vLCY*I=LlzHgqDD6t;eiE^5E` z>TG_p&W%p$we3T)&W$c=KQ%h>3)?p?hd?w@{V=+y_8Fb{h4t5~v$ap+VszSmoJ#v_ z^^W=Kwe>^B!?f>I`fD5CzqP+%?Yja2k(flq#pt5umC=cxrrxNy7(da4#l`5PUfa0I zcsvIJ(TJa1+l2l@#@FaXD>|Y7Fn-3z`1*Cm&-jQg%OuKA;roT~s-}TfhTJZ~tv-mw%1W^YD^c;n54s;2n?rf#*66i!4)PB=!iQn^- zy7QE}IZEB7O5Mdu-T6x0xk}yhmAZ?Rx|C8kPpP{=sY@z#7bsqDX zofuu$puQjed1d`&y0AJ-}URw(@z!B2B6R_c~0b=NC(3zWJWphK6PL`Y|9ICmFB z8eLXXFaBWgVuenA|7xjH_adck8FZTUb|Z9RDfc<%e%2o%nO8<9TC-33b+Ud%XMBvW zUuXP`kLV=%596n~FP3`aFc2Txee4{ZGyMp=&o=Ed?Xvlq_K7acPwtCNy{3IZ_m$#z z69oSK9>tRmY2V$N^$V|?m3}LgemSLIv&IkoxJBu=O6hki{4~dMrA~fZQgdi^w<-O! zy4#h0cR(l7uz6a;d9Ti_V}Ji;{u!Nknsw~g$$S=_X8npT4!!u<)|;$fQ?IrkVSc84 zqLC!`NkM;p6kQ$y&AM#y%v0-q1pMw)`n4+kULqY(94}SYd!MIX>-`42Rw(`M*Z86R zcPsr?EB)?L`V};O@cL&Y{6F;lds!cESL(Kinc_GDx-@k1nFiZ&3@7@bLsy)PO@wl3 z-#3)H&ntCbQ0jI-r#Zf;)O}s48-Y%w5*yjCg#JT*cVQGFbKdBKbYGH_ier~jw^OP6 zvQpO`)WLxEu2t%aO5Mw$lP1dkEO89F&pC{8qZ6&@g1RO9?mC5^%x9z1_?gcI#Vz&9 z_gutJ+Ae-kI`g@pD4qFSP?XMmE+|SjQ`tWAxu7V&Cn@~8l=I*rg)V`M?JJezYjjcL zD>^gpL>n~!#!zl_qA>~CNr%io(P{2qL}%g~cK;$e(=PMA%%n>3z_ib_%jRd=7v(3f zKTN%%6~Cakh~KNwKFxj3%czrBhut4+Q2ITf@k3n?LZ>-8l)CjwU8hp_3Z?GV&_zjW z=;*^r-D{%E7_^d7_gbay5v8sRYu!Ju{PSPt{eNJBiY{ng8NKMf&HhB;Qq(K=;Uy$f zzyCSnH;8)8{ko}tiVhm_Gd{+5ijIE9$M{as!S6X9Kl44VDLNEv^29}S5+DB|{dhk7 z%;)-SesSn7^VA#Gj}Lk34eN*a86Oj$p!O~D)N8&^>eppa@G?(7!hUB*bf!L2zu!;d z@&ivltos#o|Ecu57W3YWZG4*4?iwdOD{h_j6(P`>UDeJ8&>lK}*-sdap z{gJX>(P`?vR9Wxml=X^EQ}21odW!+|`tQT!{zY{DdV_RFLiQ`87rzGs{LKDsD7phm z-5h0qKcw_KQ|b3%rQcJPe*dEMd%Du^qe{QClzzLEelwMR14_RqD*g5<{bEYLL8aeQ zlzv}S`X!ZqA5{8H^Z13mPI(&FZwYJ9yzVjU*1Ilm4e*?wjZXe9snN;b zB{e$vyQD@Z@zLny?~)pw{9Q6imw?8MgPCtAnsmr`B#?~GjLReu9*FMjzd;vP?>S08 zuP)5*T&15^7v}ehfPL4mm-X>W1W(qH#4c@%veH|K|6zjK_2Reiq$l{C*kJs*{xVo#Xej=sxTBOPusEIq^H! z?`P3{+V7V!E+;8|XZ!sux>tGpQg~ho$$yC7e`?k_bYFv?xo+So*6aR%E9+h2>4&sW zy#0slFRu>p^Y72nj|opdj9-xMVWr=1lzy)b@SD;P6dd#TS@%=uUKijO)Q{hJ{KESC zsM7EEO23QYXXXKh&^ix9XU-eFKQ3~=aTAi9H(J~0bNo6qcgi7to$N;mdGSmj`HwMZ zI;eBl&WvA#$D(@&l371;{Sv)@JVf^%kDrXM=*;tsUUVOzt^|ph2hvXOVRWY4=*)e* z(TeW;q`OS%CpwMadfw$Y!!Y7RfHMM0S%sWG`7JE94+KL=KZ9>pe zQSumhoSc!Y$7?1zi%gJ7GEFWfmyu263bL6jkX>Xq*-KW)A##KqBge@a*?2*{opCZr zrpYXsCktd3*-iG66>^9?K#q{3>^8KH`zm$$qG404w1v;2suiQkyUb>oFHo?eo(~SXBx>E87C8Dl1!0l zGDBv`9GNGZ$pTp?Svo zJ!CJriR>pUx+z$v&cA^BwC(~qx z%#t}WPd1YUvWx5{d&z!sfZRv!Cl8RLrJjoatCzE7~%#c|!N9M_9 zvPhQ5ZnB5$CClU>xt}~h9wZNuhsh)4QSun+T*m&8F)~gj$RwE}(`1Isl6kT~c9A8r zo9rQb$ue0X_mRWo2suiQkyUb>oFHqYGr!)y7#SxMWRgsgX);4*$sCy{o5=!MB)iCN zvX`uoL*xiKMvjv;vhnhIyW?b%Op}Yr9NA13$RgQAmdI|hhkT6OMD~*dA##`;AxFtE zvPzDV6J(8auHZZ)6J(0akU6rMERq|@N6C%kW8@~XpBy0fkwfG#IYJ&J50Qt-Bji!? z7+E9n!(#61f*IsYGDgP91eqjLWSY#7Su#iF$!4;JERaRAi!71dWDnU(mdOe^NDh(1 zoVkBvWLX%#wMsKz5QF$VbVIWG`7E zhsa@alpG_+$qBOYDz=x5lL<0OrpYXsCktd3*-iG4y=0lJkb~q9IYN$+<7AC&Tu^Uk zoJ^8wGE3&k0@+1&lf7hx+(+&w50D4RL*!xd2zivOk&RcgePn`6k|{DxX2~Y9nJkhe zawGW|xryv22go6Em>eNT$uY7@9wloee)zBcz6Tj2<7ARdk!dnZ=Eyu*Ad6%d*-iG6 z6>^9iArFy<$#Jqq&bXHImW-1LGDW7z44EaH$Q5J@*+zDf8^~_5hwLTGWQ80ghsa@a zgd8Ks$r?E$Q}54Aau%5&lVpm_kjuzC*+RCFo#Y0xo9rbkhCCAd_T@Op{qMPd1YUvPgE3 zC9<3BA$!R(Ss@3>A##KqBge@a*|>=DC6i>D%#wMsKz5NOvWF~_6>^XqB8SNla+Dk+ z$H^M$EUve&k&KaXGC?NE6qzP7WR}d4d9s--kVUeKERo%0FWFBHkVE7MIYy3?HL`ID z<4q>X`Q!p}F_|Nq$s$=Id&n|5NDh(1B z7Re3dqht?RCI`rU|;WQpu1 zd&tMg;bOf#2gnifAUR4NBFD(XWR*NZj*~~p3Gx_OBb}Gm>un@sWSmTpNpc>UBIlE7 zasink7n50X8JQ#VWHVVHi)0sBA|EBY$&F+W`54(tZX(NMKUpCM$sux>93e-^G4e23 zC6AEfR7&(iKle5VLIfqP=^T-rApG=br$PBrd%#zE< z9N9$X$!4-Z7RfHMM0S%K$sY1CvX|UMmdSpyLJp9F zA##`;AxFtEvPzDV6J(9V2gvI8<7AAClL>Ny%na7`=CdCcU%T-3dselqZ0)+Ywb;3O zZF{Dpvn7*pf^>e3cm(M>A1b!4T-|=(TKN3kkC@|Jh;$S`0GN2Hvv(ub?;7^&)<4Z8N z^;YEmLV_v1Cq4iICvrcVZse4p9jY0 zqCcoh_yQzpPa52Zz1mA`f zM>~7KZAju@0Xyd5v*Rf51n;{DpRGf_2!0DGhx{1$J0#K9z{~KXW)h$I;J@L6MlH|` zgWK?7qZ0BJ@GSfQPZ#oWFntw1D~mA|z7Z*hFCuIN2av=^_(voe)8pXm1@-b0_@=87 zJNRq_=U;>VA}=fg|AYCXVEZDLgT=-8H+S${;fIjiaRI-?{6X-{>+AK-0bz(#H|W`Y8hey%`kZM zX2b`1;mTZHe-wP=)_UKQ%kkMwq$ALj!D&tPx@Lg$ki=8C18FweHUM6ETm88Uz-Qm# zI2#ee1o%Cq8OR?7(=TzHB=W+at-zc^ejNPlU08R>9{_)Ux8n>UUjyf_toL1*XI}U{ zB)9M22b$3z=*!@9SJm|ia50j!Q}|}21bzf$Blv@R94CW(75wA9^?7(4T;GBiqPz?2 zMUvsz(wmY7Fb`4!81CcL4GE9_4@ky&45RdQYaTzAH?&K7vA^^ z$7w=72Ywo<8Tt8L=r@woC7iaQo}U4p%lsU0G4sL=NHTW9eas90j3hqJs~zX-NV2yd z2CsU!-uDIIvtEO}1?98B{OcX3jJ)uwH()IzzX1FilC0BF@Z9dY=N$0Px7YWU72swh zsjDAMzXSUc*0S(bNHU){fS+c*3U)t+d5d!4neW0HKzs4jxC^hkWcKnA;yioFzYmwS!bcehj?p^>X1gpFkdCkpb5sNnbj_>H9HnQN9Aa`3vX^@;UGgND`}V@ViKIy*Lc6 zAE}RN7kKlR&}PwteP71fMt%T1iX{HRmwXj#6Xh$w%fE(eJ@RSrlSoqUF!);}8SCR< z^6Pj$)_4m1_ixnmRq(-YVqT)W3vB-u;(+HC!DoKEz9-BEdyu4F;nm;4+`R%BKRq!UX&jMPy25DxsBjm%r}F-`X1H-G!x*DzmNR{`6J*5e}ecTKL}oQ z#Bs)v?*hMoByAW0`+iz)e?NEtNy>$PMRMc^q<@C`e~x*JyzmQ1?sLJd3;U3cA}@UB znGLuJn&xr`^0SZ^jvytG7yc1x0rJA^V@doFPXEZp&$mgEb;5>+Q5P9J*kj9V~){u@NU!L9I z{03=;{K)sS;fEBH{Bs(dbD!Jb%tpQlu1qvIb0iP0IJ?1_FM04sNQ;pd{tT%JdEqn9 zL7b5n=8!fZFKk7640+)@kou8#iTpm~2f>$}+u$5Pz6ib>=`iwTFmWE{8S*J`J(6>9 zn#&)a-{8zdUU>6dj6L$gmm)PGUj&aMwICl$HaI^=YD0bk{OARk!^jVV0~ey5k_UG^ zufcg#^5B^lVQwRz0DpwEN%HuT)uTxL$oGK1LK;Bcxun6l3TYqmIdE1A^I!DfKOr3w zJ-F-nm_Nvmg120X@j$*A{65l*ub^$<^_O8Rkk5g=NO9!L;Jo>W1@gjQBh5ozxae}s zdC`OIS0L`lm%tleh_OJv8GIws2IPg$xDtIpUO0%YC>N4xwoRt$P2%Mv;leH zuaPz)FP!x@>;uRP+mHs3FM%uHiS>ef5zM~}`xWxd;CGOYAuoLWyAi8z;<^mJ4`~ka zgJA4E7%$`#;PCq}UdWGvcW=TTi@fklNO|Oi4ev+Y$j88iNE?vPfp7W%)(G-F;1`j4 zkQbiuLBtk$;oV3B$QQv+mQf$_qu>R7Xg~59uor0zd1rHj^B$xs@@24b3)TzrG4OVz zW5_pyr}tw|Kt2V&11WY0dhqK=apbGu6Srb4kWYXMk&?*gz(OuLV z;1`hO9(x2le*p2sYnCK_d`z`@z;hv>TcNIQyemFUSjD`!V<+|0wuU{7^$9^d;~G zAICKarO9I1dl3L8f1dEv8| z7hcA^@J{B1o0%7WiFx5qm=`)8pOB@_pn^}MdpP+W`5q68=Q4Wq8HwGuyek^lQVveSCS3R8x{BJMGT>a9i!PIjwMR zckXl6Li|cslfrl0Q_c&K<~#Se-*;c;oQ3Buf@Y0VbXGzC5L&Yek6PU-T9NNSSpkZ* z&I92xk|OYVW96VI1N7a^^4u5d1g?o#(#!17(-Gdyj$9qM&x z#mTxaMSHJ6y4?L=8o89)rfcx8#5B0^>U5vejyl>rk?^-!T6Qtw(1!oXaSwjk3wMHe z?)~mFC89;dO?rPnqKCIm-6&5kOE^2whfC3h=ff|7c~Ot{$;dRpQAR_K>)kfqOivkU zX`_j^JgSeH-^Jh7OP$lv)*O6fB-dk%Iz2sgrnExpzS52BpJka$gAf*|Kil#L~HxK zYg<;g-+%So+nTPwC_OjP(YdO|wE1)b~GcXTerpD^imPK4WK=eWwUyoW^TXO4GKe)QB z_5Rk56DPf=mvrH&@+a73tq-=gCEDb_SI=G5v9$fcwGXteo10j_df~nIwsxRz_pNH{ zXq}t55Pck}Mz?$Yj_-R0ebyN7p=?yl~h*zN3z z?MduO?aA!P?P=aq+*8`qv!}dgaL@3b(LL2Y6MLM!vAv1CslA!KxxLMMi+f9Zd-j(1 z4(=V^JG!^JcVe#u7k_J%jlCQzC(5aErkpD`my6|6xu;w%50;0^qvdLOqU`j=`VxJq zzD!@Pueq<-SL*BOEB6id4fl=qRr@CToXxS#iOs3ana#P)&6|sxOPhN(mp2b?9^O2< zxw?5`v$G|(C9x&7C9@^BrFlznOKD5bmhzUtEyG(zw^X-GAbPR>1Y(!z&-FL=7yC>7 zJ^khW!T#a?(f(@xM8C5&wl%RewKcOfx3zg|acgO7&(`wRK}30UYjx|yR%csmTVh*k zTV`8sTl2Q!w$iqqZRKr)+lIG|ZmVva*ye1HZBJ}ZZO?4aZExOQ++Nz=v%S21aQpD~ z(e2gk6Wg6itdgjtDw#^I(p)K4N|l~UxiVN8u8dZym5GY8Beo;4Bef&5Be$a&<5Swv zv!lFYaL4eD(H+$t6FZ!pv7L#Xshydfxt+~Bi#tm@dv=z04(=S@Il8mDb7H5nE4C}K zE43@*8}pG}W4p$8)pj)w#0QcC>4EG(exNYWHPAiKJ5U)I8WDtr1r*}_f&(NNc zJ!5;u_tf?@?v3wF?oIE_?#=Hl?Csjyy|;I7W$)15k-cMk$M@FuIx)P?Xux~u<#;(+ zPM5Rge7R8WDtDKA%a!s_d89m69xvC*jeYUHWM8^3+n4Vv^mX-h_x1Kw`iA;O`o{Xk z`)YlSo8z04o70=KoAa9so4Yo5Z|>b(**vs)Wb@eO@y)f(ja%Ydl3UVSvRm?73R}9i zbZ_b1QrR-JWn|0PmhmmMEsgzgtf6#&wm;ur==^fb}`5lEFT|2t*w2uZw|3tf4qoQ5vf# zi*=O8>KVcM8N&)1#~P|(6*XcV#j%o-SW9WFrYzP|9xJMVHPwYx)s1!4iuEY@2dE3SYw*M(KrjdjVWRm{%`%ur`fBX+Ae z_NydztTgtlEOxCt_N@YTt}b`)>c#F=!TvRb9c%=9*cf)PaqMF?>|~AD%i`G0lGxAE z*wM1s)AHEW3fR}Wu(NezZ|lYGR>A%@gdJ`Kd)ydyxpD4u)13nLxim(l3v+r1<6*`^ z;$IAmdvL`3@senbViz07{FQx7X0YsJGKXa^lUXdgSq1ZW82g#b~=EGWxtb|E<2vgb=mV|w#%+3^Ii5mnenpo$()zHPiDRBelqW6|C5<7J7D*YUUv^1 z+A-qpg5x`C?migbnRIu;?9RNq7k1$aD7#?=*Ff11$8Z&t9kCJDLD>`2xDw`eHM`fs z(yku&YB;!Sc-IK_#_FyKcXx~pB;5TmGmvw4$l^fB-6P8bgYGUlI#6}@NoRM=-6>P< z{FK=#bFk0t!Hlh9#>(z2S83UwGnlcmL(7#~_UJNZtnAXGn6a`?JD9Pu zQ>QRvWv_0=jFsJ5uG*CyL+*8ZY{$5J2%04mR>~6%2P2ess?e3_}?)AOo?xhv?UT?(RMJL>=e9YZH)9xK#-rYG% z?zO(`?wTX+ec!mdU&h=ke#+e`^X}bWm%B&G4msrB0gjoyF)`g~a_4NLd;Lne*Z&;m zYyo>^33Ij=b9T_ZnvJ=4gEe>Wl&e_Uy(7%K*RPU$H&Ax3TqEv%;kbLvk}Foyy*JFd z*Q%m>U(n-TrH0%)#4-2!Bv+@ndzYAYuS;@Ol53J&kt*)J;t1w!6?3+R`-B+gY!Y`0 z8O+%{?iJ*ou^V%?j5#}mIXj9uJB~T)V9v%dXH%H7SP8YyxvOjX9gcoGoC^mM~{~F=ypoas+d>iaA@ueMAg%Hi~%&h}!?4r0!Z>=<+JHfuW?-TTet&a`{SnaAr4x##T0oGoL{4q?uYV$P0Z&dQx< z9CKFgJ+qjz&6u-Yn6o{*%I>RbZ}tU zy&J6#{I7QGkhwuH2*NNT0*Q=7A}f(dB(f42i9{liNF=hZNMvOtva+%giR|t>o&JKf zqPV>20lVj)CQOBXXuXQZ<7{&Y6s43PI61KYjIo5?NN8aU3Z0z zw%{CF-vfVB1kN$IMBxU9Z%8~~@r=eR9=k(0-8T6|Qi!Wt=%x3eT&^KXE>dbsYT52S;!Ww z6*BHZ!DXoK-nK`Y&hjID`+QECOOpEUwI%&}6&312;XpW0hXen~f%cNLV&MJ`-1K7i b5634a5EF+Y|={`%{$zyA8`&eGMp$U#I-eBXah^dxegDh2#;(1T|0xTn2zIOmP=PfAPP z7~kBfSxU?_I!raHgj8KOY^9AUW?WY^U0G1yq(qG{3*_c{CZfo0|l9!lp7@>KhLQLAMn4KN0?XTHljh|?|h!Ba$2Oh z;9JiNl|)~?d)8I;=k)mEn)^MF z{P$PCdg|NP>aHo9_tJ0mx4+(ae|zrM!1m|kpB`U)^z@yBe>u|Aa#umes=JOnba3C| zyFDXs96{l=S5_?9cF(-n*vHFkSJ@v*dw~cJsQ66ZN{XQa( z?1$aDWrsfxl_~BiZL*P%k_ipQ9Dc01XP7aBH#N%NxnXv03%2fY_=f>bngRunDss`j zq{@8`8{I~E+(Y*aFvo*ImSEtA6?g`Y8=31LfkL4?EH_UYK5RRTRLaltWev^Q=gab= z3cn0S?{o|1P6%Kf**O%{>eQpDT zd;AVa+e^J!vcCY;_aLm~=N7Ssa>C?**FV6keX+v}nGR+H`zhca;T-0;NTz z#j{btUX1`&!f{Wyp6K6@FTrk|&}5sM-eGZyZ#+aFA)m0kiQa=dg(sv5b<2Ybkbj2y z&m5@Fj~H#J^Td_2Vu+lb1KXu@E8aFu|n zfEwUb*aYvJ5O9ltw*tfi0*Lc((`DIORvyz z$FKguZl+C7&d@9+!Ml4u@3WdP>Tn zsjdk$UOFL0lG%5#Y7d1h|!29nVR_3$y46oGDlus=^#HVj`3! z>_eX5Ci;?xR8hVVw?W|2+<4_SDQUqM(s9p2R89}_0TDJ2I) zVG0W_aLehj8{@jIMOmPQnHDs|Tbj{>*|i{Nn+C zNTOM@BkVk38ohv7AybQSmG^JNEZen?xT*e7b2O&viT?etB;k0-?%z;t#1f{~(Rqoc zW>XEbsG2#Mw2am9h#faGgip^hrI?^@Gt-ErbZZf`-lADrTjqT0;##=BJSmm-Z>ZHG ztY2el*ae!}p&OR1g|Ot@mO9i6hDzeFOx#vrmq}|)uOc@IFgG)$1wyE}kww&QQL@g9 zl#miqS)=O=)zEZkvhbM2yi2Q?r?< zrp0aUG?^Oawzfjm>}oXrGl% zh^DRS!q7{g^HEm8$ZVdL3xnh%LcHnb^E_)mVrK-=BiE)-W5G&Q)Ej>B4K6 z7Bw5GCF5PGraQ#M7Nua)$8dw=tC{jaX%|?>?CQ8_LZ&n(l_%Y;P&;=-8C7oR!W*S@ z7p$iS)$Sy)N;j?0>`o(Y*K|XE?ttK_?9vjDnecU>ON}u<5e%m%g!Q+%eDEId+VHeV zFPj=8HG8nK0(A^dR0|PT&-!Aj3WqWGD$`UGv<&9n#i|;DRHufPLv@x7GfX)J4Lb`v z182#&HB^JM$wG9nkPQ4bQWJGih}O~^QgAV-L+oo%8)zcbN=qqDHZh#O>-x3TpdTY0 z?P$AtIZ7(}MSxR)GXOUOqoJ%&JL)F#PUM!raIPjr(a!tX$PJVN;+Kn9kjgK`F(mk_ zpo~)t{OWKXS7-LZ6xWP7^SM3iFO_%x>2F`&)bQ&MDf`g8bvO9_(=#Xg$Th7kBg+1G zt5cCAuM1#|mlsDn6p|e7yj)(95jz6UTYW)}$ljvRL>%uuM1v)M`5@x;#-^%b{)EB< z&5F~B{EDSl-FM*0UqAfVN7vOIEAZ}m`h#Z*Uz~o-@#_AQt3P_J_pik>Z>(K4>#l<8 z&)z@y@%Wve-JCsX(()mN55DyK>nd7rcuOfCb5n24Vdp~!UXQK3efNLeHm>UM>KAW0 zq128#{?ek-*&REcc;SWMZCPI|+*G*jv&Jp&e6XeSk={?w44N|_d}hO`ZB;i-pK+A# z{Q1-e=AGMlz(3)0wfX%|hFrVzMr#I}Rex~h`cXx9?mlO4dwbet&z<}Eqjm2pzj4|x z4{Uk!%M-^(mppRpZ>L7g{JgjP!PTqQ{JCn_hqrI~=2+wIoZiltZ+Y&86@M7>sQY)? z!#f^4)3yIs*S_`r_SYZ3<*Pa7cjI4PTRV{&4m%afTkay+>-D-7S@QbUx{!???j~8z zQ%B2CCrNplH+%8Q%U&Jv)}iAF+vS0SBu8F+kk^+OXV7J@>gVXwNU5Bze66*bLM$2{4t3p2bR?|_k|48Qm0!5zb8(^7H)?l zsHl!;a2^shdk6PXa*q>H6WmFR<1CcE7Ntx{c2H9N6^TZrJw75j#oxwkb+S^Zm@~^~ zl+3`T57tIBQlcSDwGy2;4FVy!+gOBkqY%ZdQ=$PG9AK6bjq8gVlouXSN{Wihlr)Lb z%n&gl0;h?kjumU6u~`Hao{s*aR?f8_gSG*AlO`xHde zjZF)hz6y3GmYkS2e{0R-^B3t8&vCAyIjztT4?(Tg^n6>bF1)Zbyq=d8Uh1FHZ;Z*7 zb=8K6h+IU^BB*C95RUM-47@;JPD-UH{S*8nG$4yNB88}jKQYfjexVe6BVn)n0KW4Q zc;3HyH0c(@5 z_w=0ei|_a`mnAm;6GPH@^46QY_hzsayfGAdwBTen!ABFPb`YmFj{|s`NKU|JwDPmu zLi_m`KoHO&=P@`82{PHB;!#4!B{=OBG(~t@N&d)Zg7AayN9*^)CD1ZpapfK<;A!~OE19wU5@!tulZ|nu2u|UmbiuJ`Uoad$EDuw)z ziGfnZYmP#N_)NS?mE%381RuAB0U7*TKx<-zWIV+AmOz%7_{zm^7D{}EM3t~82`j}T zFy4p9QIU*UURs_2XuI(dW;+i3m!RAsdU9>W5Et^9bs$o+LDL_n&_kF(31ldyGL$YJ zMZv0a?Q+fW|9x;7>r*_Fv0kK4mt5lHid@Vk8Izuubr$~nB4Kx!VwK|1znwADAJRRZ zPK0hR?02z-e^|eKU8=Aa7G@L`v26k~{;B=Hc;@KbdEL>7g4+|n2~-pm2Z{<5rsGh< z{iUK{d2?;ytO5mrx*k>|crd9bNHD8l-c`AtxoYYmLIDHaswjw?`Wy>qUR1RTqgu!` zETi2nL=-SbwW5Kp;sPbA>RLOq>~yFiMguEF>0=fQBVNI6@dAnP@C~VS1S}N=OA}SG zSVY6M7xD(wSgc@rl7nr=Ejy^U8$VH=k^<2WV_T^kYN`&5$u`9yCkx}Q(}g&ygIPb3 zYiXLRf^?ow@(~IWFJWCQqC_~XC{V4S-eqiLW`PpdszUtLtD>M?jaV!-DZym=C8SA< pKK%mO=T7fa0tn_#Pp=Rv!qoc%Y}0|j?#ejJ`xE^W^Z!)?{|oYfkBa~R literal 0 HcmV?d00001 diff --git a/distribution/EasyLoad32.dll b/distribution/EasyLoad32.dll new file mode 100644 index 0000000000000000000000000000000000000000..0c2ac9775f72f81af90f1439aac5fd23aafde39f GIT binary patch literal 7680 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 literal 0 HcmV?d00001 diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index a52d926af86b1007a617d03df386aa03c093e514..499fb51bb91cc1ce21f2944b812855944a4351f3 100644 GIT binary patch delta 179952 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

c$cZ5H%Ws?CC4N+q2W;s!`5 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 eGYa)$qe*JbQDwqrnPgiZm9TXUD97mLc${e delta 184820 zcmce<37i~7`3BtEGuw0R)jOM+%_i(lj$Jx4vpFH`1_%k4h+HCs5Rgk$2#^jv+{;cc z2#8z~f`W)#qJKqHzza`;0wSWIqN2hIp5Tdyir4Zz&s*I+U6Voie!uT?e>>f8J@wYv zRc}32-CaHP+~%okPrv%o{kx|=bhr`xJ!6<{xwf2P+}3XxA5I9`wGDC!;xjlKYm{sn zMiMUmS?XjM+qQgnao3mb>o*Q20_|`$o4O*|uZ0 z@0K9i+qPcTHrTc8Hl)TBZpZodt)Fch${?75bd3GBPPfh9@dZT8zy0ttjdsI0zF=JR zX47bcJB3_a>bDtZKihZRcmC14$RBX7G!3h~uj$S&Sd^)b5+HY(!Dp0nij7!5u_hsSN=eo?@u-x;pZPz#St_Nl-e=19fC3SspZ} zE`X;ODS1p(s6kY)g8O^8r_&?OgNS|FV5Zu77+%9Cjx1+k8 zaYRrxi&^gjbghCbml|y=TYj~u6m|vV?uJ8ccN{t@g_OG*g0qK?r=2wbIx~H>we;N+ zhv{slYGvHLAU;)=%$UYHqw7Q?%WUPBCJkH$HbXm6boYi3jRO8Jn&8 zzCdcP!@)tT&9YSSfXSl!dca9{e;if7*5Njo?h@3Gs=l3B&2M0IuL7gd`%SGL3C}@} z=cDd$d2Pv~w;!^Ya1TIC&Ve}eIS1jWfZ>kum(Uny^7W6JMsn4)2tSmop<8E%y)zK3 z;2a|I)sTyUdC8Sk!#pcV`?f8+D`eG9)|<2M)A2hH8s8^87V zP2e|{K{!>r?Li~9#{L2ig}uVMN8_@_o+XB&TQ2I#s;6+N#d!3>RXY?pm?Bh9A^oI- zI4k3K=^50Y2Un+}`h(@}j5LSyN%wC!+ert#F}VDHWo9$uKd>AaewCt2u$pz=!}?BkZ5d%bvs@iLfE+`REYV*k=LOPr_vyzcZ9nTz$}S*CFY#tx-6%P0PCsS6JG1 zwL{tLBcN0{omFYoVFXm&^}(e~H6g*pRJ-e;oo}y{ZNJ?;5^^r(Zoo+;$^=y0fZ0DB zMsByeN8vR3t?3TCy_$kkdi-=^M6A$SR6G(leuM+8mC=K11dAK}VN5Yl`^F%C_&1QD zw#({my#C%tP?&^!G-6MLf%{~-aR{6n={zNLiV>;pf~x6Adyg}AGzu&2JwtK1h=T4U;vq?6a}8m$?n=7d zQz15Nkwnv(@zz1hUCQw{)s$IEA4>1lW3yVumahW-aNEh<>4jwMz;bI;x!NHu6zBglm%UZS5cr`cSP{#1wX24b%7zk|V_3+GE z`_S-!k%|GTtae@p)Ln$qIiNw=k?HD)>Ri(c>X*aFPF#(HyO~j*PLt+b%S5l{;Tjx5 zi`ItTZWsll*D*3*5c^{o>(&_wS}xj*Mev1en-eqvSu2-HI3A)qV;&Sb%=0_9-hJ4d z9hx=H&@{HZCGU#?Nz~3{e$K)nG+Z!M) zr?Mqf59F@HJAoSKK%-(=&bc^GQE|F=q~Qa^2V|(QNJMeT`No2Mj9wNLT%CbnKrs$0 z14^SaJVhs&yquZIL?e^uLBsnqQupjMvM>Q>wvMrgndB*+$wfX@v|Lh!xm*s2ywW+tkMg31I> z$b>(R>XGZUg(_N2P=%R@e5M33>JqkfCdBJiGO;ilWdg$>FGrErKdcJY#44(2nV=>! z5&29BVjwJnw$6ljt*iG#gOkA8`O;?SEH5{wcy>-jS3|R!O$H!3lcEE@Av!#VIs>{2 zos5QOrLvf_Kue}Ch!Rvo#aNdZ>7+W(N_}G;T^lO)h<8ZR5A4CQhiHfyRI zvCW>syfRsw!hD~XnepPHkkrBCtpzwd+C5^{rdY|@Ndi{+Ak$BXXnGH_Azg^ef-8dH z>WaJr?%^pqN$gaFuz!efrzk>c2iZvij4&aR={+6AhfJ`2{{d&vFoazR)m2Zy>HRi~ z%PG@anZ0Js+6Bm7N7||(Cs`NCXVXRZBAzB0%5pD;tYYx4&0!e31n$~9aRB$d6esV) zMBfFe;9iDffIc3gBMK)N+=0p{RDYHiXJy8$1d}?eQ?ev~PP7^{qD{Tp~ z(;pDNDtM#3;fkJzXnm@niEi$h?40!2O=sqW2(C3d-qRkID8)DescMsvGdoE@R+BigA4z@aCEOd3en(|tuj#xW64tGb zLrbt^h|i@|s;QJC2}0*aX8n89UA^W^0hVn}&_oixL~nXOj&g(qRD($w%f{GaFbOj! zRv{Bo9Tb!^Dj6Y_km;p6!{&fMtHVGPlrsuM2!VX5L?<39jk}U@$Er){X zT`zuH@19feKOI+F8mdu1CCB|%gnkrE@5RUu6&~6;)gsnFL2D5Ntnv-!1clL@DHFR% zI%rSj>~(d;F2oXeNp>li-bmy(;M|1LHjL{msf*pAr4qbZ)dc}n7nDqI?s%cG7wq~p)@Tz?Xk+~nn zVMGQRj0r|R!YS2W!~H*cv3?R_WHi5zzz;m&0Ay6Sp8rt*!&7u~5)quE{C%9+%P&=# zo6XE&O;$2TALl(PbCi*}Wz5_ih|m2Pa}Z^2fSD6jWbRISH8SUGo*#!Na(7^uyHCJ9 zJVhrn7o4NaeIlMYm|nZKJjfhkAanF_(EWK?KgsKl-0j>tcPewD`zo0W{esLLtY?l+W=_rn^+N)uoI%~% zjZgRqnXuc5al~NMK8Xs)^x3@&XZLO#Am2mzQ%e3c<^`*HA*z*p(`n(}yn@`Fl#h%y)kGx0FxZ&1$m8V_DV)3xu=gGDZ(){QHF2&2=f?7k{&HwxPwE3D+oeTccKUbm*Vt>9-0 z64d!FA}QqC$8JS-hdLytyp^%rhdMUcR$-_^6l&jtR=(5jOuJ7oxmG_sPIHsA}j(;>=^2YN7jM$j%3FvGQpwp_r@jU!)10L!pFkZ4&`DY&D{szexmS-XTmc5{`q{lp@D6N#| zufaD^5)C7}Y*8SL_BJb4y39iY&maQ#cTw!Wr=%ihD`!}?Z|GA8Cn)&YWsZ`vqc%0- znq`Tc(FlxMq2<~?i?&R&`UiMqE!8E9u^#zH;IZzK8=uvVTMLc;GTsh1dhv-{+!uW4 zVsiHuO93=(&SR{9w_73iMk+lDz!(yQu@$f_0(uqjKm_C!@Nfk5 zDd5ovn56(%-5}Be03Q_$qZc4WrSfD1^eX^{DbSd$fM+6LKmoX}hBB9P6u<#O0l10F z%ZMuz06QoEwQV@Q3<84+LEQx^Lkd7W1VBjv$WH*wQvmM}t7PUY0Ez*yKmiLQ01`98 z+m9;9a2xs`kZOdCC>5;l2P(J`OO2f(0HFztMZh8j>=prK1+0mHiUP3O7(|Nn7{?R< zU*%*}ArC|tWvz_${{)5b;`WVTjk;?80xFP~p zE8yw~*h2wT7<*NTsBy*tV;=x(6@Z&e0kEe6@Bl*q?BxR)Vd>Gj*U`Us1)`v{A*`~VBv{e=+8y#XS6I|b1qcVIK{84J7U5H~Ra=Wb$%M9xqy(Mr;e?fN%oMDFvoI#h_ zca{npb{g^3yG;yw3;8!vd_0DQeJ2Kmy+=V>|A}>Jx9&e5cj zOBGh8k|}W{-7^7|(6F9ak-~5zT~-Y~L%ZeCHP3=~-nQ-HisaBB0JW-kHc&f>WbWH%I5{mMcloZ&(w z#P~uaobiRoZmczCV(XCE(1rC53u}tX&v&-c*?~tuv%{l_5j!Wx4!5x`nUQr#wG`P2 zz0TNDWT*QKGx{tJ`L1|X=CKr+*Onsl+EQdbSc;_m9bF1lJ|?JECb<+D#QQUe7fX?W z`{&9%7`kCskZz?bbpKM^$YWQu6q(VMA~V5KWKx#ZQ3t-PMW(P8iDg?mxyOcZDYDyi z{tq>is9H(hI>hl-9NlwqeUjyHaq_a1TAchQ&LJ~Gi!{CsHy3X%OY4i19l$;fY#V+` z-#6O0I!XJ-KP&}qLmAZS{8|dIf1zDV=pcW_NioxO}Jza&n4=_qu z`s6JJMD8;UR}5mOXApsV9>S~GCn%|`(-tvu8X&|<9h|7Z z$bFGi>~YN?cB;7wcQGUcu}@M`vD1bzcG@jOOC6l3AnU3W)VgY1u`KJV^mBdUxbb#q zc>Cx+T;<^@I(hp@&g$NI4VPygjDb1vCeb|^4<2FY!3t~%Pu3bPEtyq1yCI&_5YKIh z=QYF$h<*?b3-e(VOVBtJI-HwiS}EjY;xOiDKAs&BVY$3Am2kg+!K-|Y12$#hk#zNF z=BaG9E(XGEp!7v5g(1F4$GQaH465Mm8$ZzbQUF^D4$v>_$^rV7mgs#gW7yVG_x=d= zB^N=&Uu_x1*COS(?gK>e0FQGgiW`J~kXTsIhgt^vdR*mU%s=9l5k&KixXvSV1kdrm zQMC$nr?YG(`ud!&A@wrEWV;d@ces@n`Z>Dyf$ZD(GbcWSyPocaxHiQVL*~S%P0W8L z?g3Wqr7Lg*PbiO!^OgLOCFV1@0< zhQU^vlHvf(TGlTgiucl1HR~YacB2hOX#pbc%k_2e`RJ^B5gQe3Tg5>etz@lnm!U{2hPW1-Kv9C3`4 zm2b7G`4*LLYP1t&7-JbQQ{q!|S4tR7H;5@My5pg4ho26Vy)k4l%d?MPhD+6hQC10&?tr2rh7*r2AnJ-2dY#P|Dg_Z+@i2 zH>gA@D@y6n*}fFtTLl#axSNZx)d#i1NuG6_9b?{j$K0RP93|K*tCxQ zidZ@yOC;&_!08>JW9+b=zfK2_rsAbKb``OEb!;24-{{y3v1*@|@Bwgoo{pVE>~@8r z{j2J~i{J~oqB#rLQXFE}bBx&0I(7oF3w7)=VxQKrZN#3@FyDKQ;M{_i2!|-o(XqvF zdWY%Q24dIf*p0*<*0F&iusv~z735H2SNJ-3JwdFa#TBtGhKAX%VN2ok4%4w?h+U>* zR};HS$G$-9X94C1)&Cs9f!SIj4xHZ6I`%eVx9Hd%#2(c#juYM!I`$Ox@L*TGaDEbQ zZ%haGBzB^XZ6tP!j@?1*NgbOeR+^(FvJ_75I33$a?8Z5GRzG%4K0@#*UGW#h2Igvd z&%@~r?Vw>~J>IB}t$@=zLdV`t?A8$TRqOv4!RJFzVSgdE%b=FXS~$H)9s4-3=XGq} z5U`_gh!ySvVjtJB&-n!ZsDte#U~6%R1%3mu3v}#qVjt77PZ9f}jy+ARZJrii3Qlj) zJUo9COJoVbgLTEjiB0O*JBfWw$G%6bbH0{H5l-)QI(8tjb0f^>5aRg+n42nYJrwWC!F56j_pHiQpX-7_BS2-_W~c_=t3>R6>xgz>ev&*zy?M%y}RM`+IQ5j zpTX%_j)wKa>8;VR^~5g4!H-qHxd`A+IK;5yh+U&&&k>tj*7Wv=)AMxfMq-cZ*k6gw zuS8)n{wKXt;r6a>fW#gl_M(oNRbY#8h-L6lV(01D?Zh6?u=3*CCo$Ad@iJmMttMyS z627rCBopi5rN{)OW-=j|kclUwhy@ceksJ*(C75uDopemN#6dc?(dP9(PX~oe+@fPb zChpKNArqvmsx~BH;S!(K^@K}2pku-%eg-VK{t{To#J_Y!ArrlewM2wWEYvX}6Z`6z za0wxwLdPTx;Sz^6^yK;rnb_0-S^Z69LIMk!xJB0!GI6ht377bRjtQ5T(J^odA4BUB zt#m>r7VDUhiPbtLWMaLJ370rQ$AnANbxgR#6~z2T)d-omQCAc)@g*G-GErNqWm?F@ z`*cjW#Mg98xWuzD4C@b`kcnB#vbxgR#xjIHJ;d@(k zP{_m=bxg>_w{%R%#7}ihxWun@Ot?g1xmGyg65WCc|Ch!kWTK)g3YpkP$AnCrt7AeY zuG2B$5?|CY;S!I#5NrhGVzp-3744BG2s#;E44I)OZbQA zppc37T{J}@6F2FYkck-``y9DM|Ckn5xWpAYCS2k!g^~YD^$VH!wyr2-Vp_+9O#DH| zgiOrnm~e@XaV;~#CHghY_k>JTHP90>u};T?Oq``-LME=zG2s$T@d=l>QP&eL@nO7r z9k<^?CO)lWLMEQjF(DJbUZsWow-5{+YvK}8(;Alm{}-@{ObFIQCIo9D6M{u#A~p~; zaS73D;u3=SO=LpACNd#d6PXaKiA)IA#3cl4;u3V>!8l%56oPTOjtRloqGL@2L*kRgiu-jv;TPWw zF<(``5R9LOpu&V;{9VU{U}RQnwIBpznT|CGhVTo?jPQ%Ky55aGS1V4@K_M6i?V%+i z1mk=i6N0f#$An z%->VXpb(6MbW8}wNjfI{;$8b_VIzJK@PDZVAsC<66@_5@R>ztMhJ+P@(Y>#hh!Bjm zIwt&L@O6=%@P8o~&o)4sMnvOLQ3<)dz;$mG-_{BGgDgG~tLNNZWD+~VEpwBTEapw(g$c*6Ty&zXapmu{w97QdgK>=Y_&qb zCW0YY6TuLyiC_rUL@)$v;unI&_=WI)0hmg-qO}E2=vmIwoY|2_0)%tdRJGOLQEhWm>qzU>w8s7cwyx2a}$ViH$lYWa3gC z6Ebn5jx{Y-NM?jf+@g-qP1>j{~7R>x$q;@>*fv{<3yn}Y%` zI8+rF{9iyJ6R!)v024CNSgjB}Aro)a^&&D6>z+-E6%w{-u|hDviA)ICv|1sUkcq}( zgl^C4gpnGmdrObFIQCIoBZ62w9-A@X)y0{q*k9~F@aO3h?KFd-AU zH-)`LFd-9*bWFI!>vc@H#8EmXT;jAhMe{$2P{@R@D+-x-r;Z7k*rH>yF!3H86E5+7 z9TP6`p$PLOVIdQrj6lJJOnhF)giPG8V?rjrqhrD)exhT-C7#u>ZFye*=XFrXMB|YO z$&8SR++kYv3z^94m~e?99TP6GmyQXSI2c$k|C2<7Ok6liOQeZRh@Oy%BlHM`OdP9Y z!X-}8G2s%m1}5`AArpQBWFr(Zu|>y(O#Ds9giPcP*D@_!Vpzw7ORUu~a0$%+j@LmU z6Q}E#kco?ROvuC*9TP5bosJ2YxK+o5OMH%)n*T|)3Yqx2t|(;U`#L6M;%OZdGVyaA z6E5*b9TP6`=NLx*FJz*9omPcHCUQC^WTL2JvM^E6F~ucxOt{3cIz}$xd)FSJCEP?N zq-KOnd_vdT2B-IujwROv+YJXbq)S-g66e2f@d=mMPuCMJagf5u|0OpAy^Zc5Uhzy2-d_U1XEnXFKgA`L?%SBiA)IA zL?#4lT9^>5iAxBkaS8B$0h`E#U`=F#SV$&Bj+2S?;ZqbxLrX18P-^B9f(e)SYvcM0 zC}hGpDy$8`giIWxV?rj*(=qi(rj7}hcwEPXOFXGzz9(ejXBwy;$^4y;37L3V$AnDu zAFX9txWtH#370rP$An9q>g%A8iR*Pt$izoW9jgTvGEvhpArtS{Fc%fxKGEP!pCPed*9PRArn8+F(DIw z)-fRyx#P9k5-zcajtQ4|qmBueIPLg||4a1?nRt(`C}iS39TPI~eI1j9i91fzGSkE* zBn{ybk4Jjwf3Q-rGV#|46igN-N^jL76f&{5jtQCAq+`M*=DbY{D+?1}(Xk7Ld{qD7 z+ciZY6DR1HkclUBOvuE`Iwo9V`AJ%Q!X@6OV^5cm?m55${x2mKGI5EnC}iSV9TPHf zi;fAIct*#BOAMZ@Wk$F}%)kl%7cz0Qt|(-pDMBF=o~|ck;yfJ_E^)Pv375E6$G|1P z|L@e;q+e7G2s_|n>0P)7r!T__`g)Y5DeSZ6op`{ z&@mwx-_?@A@PSys^)>y*QcKPQHc0ZsgLV`Oz%-2^L zn|BkEwA`;zmWcU=)*e~+0RYpxj#veGC0^B$eA-M(VkuGbqeLmS5+7*W`tZ#qA8$*^ z=Sap-`FJnOHm^Fle?#p-#G5rc3Z0dKbY@G=@;-s|Q&;?uFPl9CzY%L05~xOL@l8Iwt4WWd`!Lc8T?OT03-3xAMj7R|)usfGvfcg;2k%Sl zE#E+(@n0wK-l=%E)OiFtg^ljd*v9_E#J>puo0g_c(|G~zg7Y$tE@I9`SW(A(QS8@2 z!DhF>23lZqT3~ZqVEDS+_PH7Idt0ITR$yN%a8@g@Rk??n3NB?F>i1iPFSi0Kt-xw4 zaI_V;Lo0C5@mti%P%G6^D{x*baDFRrK`U^f^D^3BQv(?qZlyZX3f!?3=(GYC#ldVL zXF4w;;n6PBx12viD(1%ifL^I!=UZs7?zeI1uo`k_ubFWk12~$&S144V=3eo5)N{5V zwwAu^GkLYQkDVNF{U_0R_~ERAY z1|;9asH#0Qutlx~tzvF^-iT-@YfEgpy9r2DbH4Kt6yI{cf}^}UYZfNoPOE`oaP3aY zQXL8_fa_#@2j^a#X|m}vh~F=0Az(;w5}bQ~aSQdc;I7b|PcSz1$va95faCATHNiW_ z{t{%&`3?%?eisM4b^AS>s`#h{ZI|Uf0T*7-o*6 zGi~lK#mD^>PsyP*>-jyn%pMD0dF2&uqs;4wAvyR;7zd&7D`C0D7Ya^}eZ!!kas~#V zGv=Y4;6q|3%Qp<@r+vfVgcjr0uaS}PrS`WX00(4`XKr300)ScwhyVbIDGd>VVHWSi z%b!_46W*gfKmFT{+Ed>@Bqkn{r$cHzwz~A0kmHP%Wl(KwrAK3Ir7IX)vnF1lPZ%$N z5{^crtKS%28%6?~MQmpzo{3Dz$6ENl82MfaUo|vyd<{l!2}}#)n84!RzKrY=T>O*p zmsV&x35XcQ+4!^0)#y|1bBLjSHcF(vc?yr(^MIxZ3GUeF-8tF9q{Aw%?m<7ZhBCXQ zaV~U@VMvL6P<1%pSuNV>&S00Gt$)0u=wo*X?xen9)B4EZ;oWaBg@L6Dccz~c-@!E3ywe1JL6mlPvM}}-fieEmA6^dq*YvTtRlkB zt?*V6;3aw$!QO>@E(Hf7z{aJLQy2wtXH|BK`CO$l9YT_i9MV)OHg;q|q^8r3x*IK+ zMaP05)>~b)FTpo0TeDPi0;kkM*zG8VDwjb55Ie+up)X7KO8GIvlo;(QlLE=pT&Wr!V@@SQWO1M59t74 zzrYV8h5sr;1tU{K1tm39fa(TA#iCamDcJX-kpgWo8YwUcsU~a_l#zl^eFcy4p(1YQ zXb?g>*DzwI$IM(qBW~tS7c(d3B>t%um^tPTV_3t4#LXP2x|q51d8U~Yfy1cG78+)3 z5(?5E2U!>lYuPD6bsi=saG({#zz|FkFvQl5htlM^^qP?4j5V8KH8Vz!h8d$PFk{F7 z_q;d+oBb?~%vi(Jq-)_MVG%S!s>APrilu27xg5L;8@25`2dc~LfyS;~)dgX2Ei~;^ zX*0OR#`W3C&dn+VVft0GE2zwz_%V34_7@y;wZG!n5mS>aE)HWDKM{$v^kp2K z1#Cou0lkWbi_bw6@)mYwE64|OB}}HY4OOL#S615+ZccSydrqvFV|F%RdF^%<`?q}? zmj`SiJG7e;VGV}%QzERu(9ufFRL*XMQ@O+p7+j*S z7+J;6s-4~><*|nT-jV*0+HDcGuf4F>#SF^|2E!?>*&{3|wj{x>I3I?Mz-J_y>wmYf zW~<9#Na!0=k-8TR)^0F;JWY0f6{CVrLHrFK)m$;3OvCXq9LmFr=f;ZX2H)RMx$!M* zCD+JKBP~v6ksIaNQsY%}(-qH6m;3i9H>tv2Qm;(SP6fG9bRN6$g_YCOGOZvt%Cn`$ ztK_C9o|_)`AIJ^1_-kAw-%iKt1zQ+~8R>1AOpp=f*;3{_t^QV+qd3t5GtVXQ2le7Xm-83CFH!qW^~m4$^?Xive7Sa|$L4 z|4~E-z`+D2n(!wAJQ177LCv@UIOCbyg#QlidB8hi+MyD~{|0=G)OZZQK$FLAz|z3> zj^W$S6j>W;_@}f0Vel8t6h~ie_~)1v4*%<|A+(KfrdWrM44EZ@GX4{)^YCiJKS$E- zhyRJ#@ZZpg5C0P~{L47pH2iNj^u~w(bC4WoIq%?^!@mdsE(!q=SXo>=Y|w#=;V)%d z%(4j`xERBKvQCdlT(wu3)lAW6LXI=mB8JuI06iLXfG(X5+<~TrCbZp}p&IYWS;yZ2 zm1a}2cQ_)9!z6D%ZxL@=8fO7=WIFS4EFCu+L;q5uJMh8fK3F~0#8Pz4zqB-=`_lX|(zd{OZ>Aj4dW;LJ!udYeNeC#0goDy-gO zpf3-Vc6%4jDcH6P(EKq0s+^t5D7%(ab`2{6604ou-mZl{uxrd^%(O*5dq??KwoTTH zlx#+M!mH?6mv&(8x`nKQeu8`~r4XSK8rR z5EixS#Am5Z*W_rqcG4y)J^0FFcm)J$zLfO!RjJ)nV2%x}W?jG*jqbDd09+jWeG&~2 zEZr!fX5z-{6kxdhVhlIo4&0b87&pc6?QIuRsbWVsvnUBF%y4vx-im+8?Ot+c+szUiH7;Z+@)bC;>HWj zJz2ggSUo8?J0Yj|blggH8dIlLIMKkple#o;A^^BF1VjMfqZ=s|5rAA40wMsw>V*1k zC}BWeiTgaJT{il?~2fmf~j_&3;iw+{d`Kn$4EoZcZZ%7f{&t#pIRM* zg))}H8k!TBn+KmLO{4AMbFBo_CrT-q9=8*S@^cL!`Ti*d)8qC7&Vl;{1%Xvjo)k=v zdk(08NK9Xn14n6bxwpnHcS9q7xwp#Yrk{4X<*TCC0+n`mFtVe@6+(3$CMAg4{{~m% zIzUni3c=M_9~9!fp&td)yOviY^m~u^twLL%WO^TtJevy$O4g!)*T)Lj(1;iCdMP0N zwlCoOfJy;3L{lqz`>Xe|E3TTA-r8U zP`{Ztwh0c-P8RKki8(n6BiI(!>4>CGN^;@`$b$!akhwiQ5+C) zSBi5)+?}F7m$LhD$oQyfn)`_w%aQY5qjXOSA8job@aOCRrCul3-3hL&6}lF~_1?(kz*S9!e)B61cX79JmBr4JavpKMFXut$ zQ8^c!pUAn(c?@SiSFuFE=dWjB!L5!}Pu22Vwmgh8*(pMT*Rf!$JU2(4gapTKg4q01 zcD+oyhazeRMYi0_Q3+0wF=Gi=1wNgDcVx^7+$2bfhttp1J`7{oe0!x2bYT(1&W!s@ z1W&tVIDj3+y7>7tHgBz_;KXIkK2;7rygjdN-kxn8xO&F^WG-NPT=h6ud7n5SA^nd8gO$9;Is(F4;0STU!hoFp9N5CrUN7TI44rJEssSE=PTorTSSMnD)_9RqciZ?osKSX%;cw7oS;;8rMK$5 z5%CJix2yZ0ukizDTp=`$z;7z}-GQ^*B%6W2)_N#@=i~Qb{Jw=BR+SCd3S(?n98%uv zkRmE_87lY+n4dPt_i;LK4AOEjFV2pP!FU_I_%Py#W?xI0F#H*I?lovuYM7jb z)#<sntQ%4fDMy^$JAk?Tg9i<~r_{D9c!*W!woKQ-lO} z251;p0>grhYH<0!pwjZAy`$a{s6{bR`B`fJL zm6DI;qkiw)NUPuOQ(FCTEiQU_?}(IUV=)PR1PfbAsmHqxe%}A#VE5Vu*baO^oC|^v}7WOX}U+KygmM!!?g?QMnE%!JaEa_kQ0ec|jVu>c} zj6*FQDSxAt@*I0kx}ltjlz+aRGVVp>=h|~K4Q)GJi?o69+5583KzF)1jXlnA3=+ba5!U4lv@`mkb#y(3zw&$H)Y z;@eQq_)+wywbGw&&&Tb=hJH3ue@83z1@;2m32dn6BK7yRQeS8<^zo79hJHt+|H)SR z!}c)N+8gSfk@|zJ)JN9SdM|@W$(pNn;7-*?xcgv3PvWK^L z%E25pi?I(=xU1NTg<{Br9#azj{T#n5F!H(>q;ZN?BYh9RZvng+BUI>t-e7>V8SjJN zCg5F=!@tYnz6uJnK~_S2`fyDwW?i=E~1z4}Q;pwbZAvv7sco`Dnj+LQU?v=r3XSc&*+dok?eOTd5B*8*yL z1IRtz(H3`iJl?6fJJa=jptgYVgB7f~!hpBCFQ9b&b+6{JA3PF)((56cB8&C&3MR&X zXMdo$eOG@EtQ$hVw8=W0r&(KoxeHzRXfa+n+{Bjf|l{ zIAmt5y;eg1dG! z4jm~6Q$sv{oUY&rgEteg(y<~s=d~GqmU|4tiy2I33J6)K@Nw?%&~-cK&X}gS^?! z2t3Cxf=eXzl?HB&>s-fWYWYlqi(4((&dR|V_XG%d%vt{)g!2}lc=(w6&^EqS;G75) z6@cZL>}X$FojYW*jpp-KcxKde>Z8-yOx4Qhlc`0?6wt`eYl{v?7sE$_wcmGeoiA?iqgQWKLc4p45-j&rC8XTbl#q5eDIw#!5PXcJn+fFPLan-+ADZZ}bC~+(!mFh| zVankGnUN<6r%>-Q3zkclFgW~3LtDs8$9n({rFcVYYG;Q9?F{8_+0ax&=Z%j4+S;nD zA+5FDuC+E=YJTYCxOb_xwobl3f<=|nS$@~Uu`tsnhO6B;6D7myjry+1_(nEDCn`xc zZ2YlC*gkeAiVO1f9~&V*Fw$HQ=}dkz+!+9(eb1{lW*Q6H_Blzdx(qslxEdp{Zlt&+Z9UCn zWp2tn5<*rDDGy*svD^&+Tn+<4nomtF@d+-pVw0uEYM^TJ z6=U%AhK;-!u|azXiJKE&;Gj*>!7a+H3>FpS2;Sb?EgC``S^2h2=iPv7T@dlJ69TyPYAp7+yK?3cA8s zDT$m^EIXQVE`figEtSJJdaz<@`FwOd<(44gvr8N`an864V!_7#oelA9&HrPSL#~Tbe$WkI7afCYi3WWnFIBjVRkIZlwLE8+43cq zEvu$v@Asp#q6$#8%(zH@ zM)I0#24)j&<{-Uh5I;VFF1gaHhEZFR%hols{;}U&*HkmiYs;EpTv5%0CM`T4lq`s8!cI29fW> z$dAM*fXL;ZVI%AOLbL@`c0!MG>bq}LFz+FXGCqbVHxwHoEA8qPn8T@A-k{9g%`k}O z#8;V}+k;H-V~d9&6a1@R2%iZU%A~s)mFj*7I*owthv8h&10~F{Ct$LZSkeR39O@%c zsC$qc2Ap=|4@tw=m!p%meF^{v3is0#k~;fIyPpAC zdKjf%+<|A|IjvdsMYte;miiV(jyj&8R_mxYpcZSN13pE_7Y}C$gGs$NRCzyDK2H@w zf;%N@V4AHWxse(eow8Ge1b609qc7C>05!fy4MKu*VpOTm3N>z`hW{n15EBn)0aV;C z1B;X4>1?_RULn*+hStW2=Y9pc`Pr2{`|_#UksQlG;IQ_3AK*zgRy^8?ukod4tPSDF z$v1gq^c?N9Y(K4<^fu@t7)Q*}&!B#1gWb(mDOxV#$>s;fo(5&>9dOX*0(67% zhXG<4kX@qD4mi(gv;<66S~LY{pe=9!{!EbiT%7bo+L+PYThQ-m>h11sAI+%;YWHdgxUPHD6~H_62^pSAg3?R^TeS`@vCLPW@Tx zRIu}QU#~x_x8RJ!xKsxM)qYVGs$6tW2bZlBkihe3U!$FY%4|`w`)919*{E+tqg5Yt zMJwn)E9eNiiZ&ybj#Dp&*Y6hQ=T@xoWv7UVhl&JE9F01=s`ziYF)=Vxz+5EwdZR4c zzQmahZU^Is1yExWzi?Vj{5bqx!S7f!w=B;5BMy>pz@8YV#BknYH7xva-`hAFzXW71 zOftabaO3W)!FC%@-~xCuVNg2_$6A4berQ|;6CKw-5!e`hH^y)TH`2iT+ikHm- z`~sE>_`oAy3U#pZ8hr0HK_?c{0_Q8VETF4=Tq2x6g8K${vFAcLYYlf)JJa6f=*Q}r zh*D#5(sCa`mU5}$k;6HDPB;3%s#*&6cQAHXrFj1(^^;Jd3DhDUApIuGA@0-RHpLC* z=A3|Q$}`sHD&@hVlR^W;CucX*!AX)6pdENN6_zFGehU$(XA6FYss;16oo@qjALHS1 z9!PfZz6Dno@o9A&z4xF1g)5=n=6nYl4SV_;#?|NbarLzhtNyExtE!s@ofb zH_SNwe zP)!ujS<9u0QcSivBoEVO!#8__5t!ixSBHJ-Kj=2(RvSH1zC6@Lbhoy5B#e8n33mOSS@OwDn`U+wT-r2H&YDsz-9 zc(=$(@n`T|rQ9R+;ELo|d}@!{r-jPNfA* zuo?UuQ8$*Jhx3Eu{ip+bu<@AvcnW}tcQYEHYV8uA?d8!dX@c z57^;`EJgPhj6O4*3 zSH+{|06A(8cBXVG+MSA{bzO7H6SWD*zmF2f`;jVOcKci-eNJ(_0nP^`+d1#93&U*Z zhK^GqbK8eRK(O7|kO1BUG`xO%F7eA zU*h6%mR4GN_1oJvy1#v$(B&6nQTH{_^N_q7a(HvwY}WR`a` zLrTC|r87W{RoGcA!{UjrSQ{yL7hW2MEesvvCc%F!yU;Qu9}#PqfMTqH6k{f!*fK01 z9BY_>e(%h8g{k(JlIbwV{q8S>f9bYW9w=*=fZ5*5QQ+C7Gol7EyJf<76f9-}2E3nK z7A8C}v{BX5fC{Ku7RKLr)561HrQ;@l7&fgr%?+l}wD4e9X}60Kq2}CX%?(i_#6w}F z-L8x@cTg>hqi)i;hU5PM9L+F8u&TQ_m|j_YzS$})D>obt2sU|3JjECNLz|0L{nQL-qY z`x~T~&sGlVmC+gtdG*V2{gV?{bHcP4MfB2FfLSN`OgCP`hqmxS0962^DX#=?aP7r7 z$x|Kf@1Zk-=>CB7=tr@~Lw2TcLNr^iUmnI@kO`d1S{Ye$w&1$ciS3iTULprigQ&OuRIu-cPTAa`!J)W^h`jq@`BND(KOXr0hgJJ5e5TUGc;GIB zR&9h>mKYB%II>kM5X%wc!7UO?5yN9z$vO`%BCu*$tg)u>08_HggZmd&#DIf`oVlKm zSc?AlIbLG?NhYd&Dla|Ai;_SkEy)YKBun=qtdhP=iCKb|6JnEuejnU&2

_UZ`Ca6IuzJxfXZ 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 VoV(3C!ZQ}DW{lOwX`TOV{0F=Z-7^3H diff --git a/distribution/FFXIVAPP.Client.vshost.exe b/distribution/FFXIVAPP.Client.vshost.exe index fc5a27b901daec583c7e39a49db0a34922c6bb22..8f90da475a8319aa76856e089ccc9e517eeb134a 100644 GIT binary patch delta 7313 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 delta 7560 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 F{SVr=7d8L@ diff --git a/distribution/FFXIVAPP.Client.vshost.exe.manifest b/distribution/FFXIVAPP.Client.vshost.exe.manifest deleted file mode 100644 index e71824c5..00000000 --- a/distribution/FFXIVAPP.Client.vshost.exe.manifest +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/distribution/FFXIVAPP.Updater.exe b/distribution/FFXIVAPP.Updater.exe deleted file mode 100644 index d9ab7ea9fedb8bbfe302e8a1bc3b5fd5ce0374b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489984 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≶NPme%%hslPFDUE#;Ds*g&xPn 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

7G5M5D){O-37!Ryk{_RIiPt5@ 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 D`l5Bz diff --git a/distribution/FFXIVAPP.Updater.exe.config b/distribution/FFXIVAPP.Updater.exe.config deleted file mode 100644 index a47b4282..00000000 --- a/distribution/FFXIVAPP.Updater.exe.config +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/distribution/Ionic.Zip.dll b/distribution/Ionic.Zip.dll deleted file mode 100644 index c15d937e87695188cfcb188081c0a937579c2081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462848 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%0DYFn)L`?H5{M;3Rs>!Dlc@ip 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ⅈJt~ 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ⅇ!XrnRrrn$6Z;4WJ<@&0(nNLUvP9Y26 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

Y5+H1+!4}zC~{xvwq~G;v1D>L!bT9v zC^!2?O2lp`vC11tEwjYqJ~BElN8Bd6^ym!a< z*;lc>=R=gll&zE^O#*7!=MeQkAAinx%psf5e~3~?xJ(0&f)3jGsU%xxf6YWgX7^5c z(QIUZOBrDSH!#%tIBVtLddOW|PotV(|59u}kros|MDhx4XhIr}%JBoScP5mA5nX@* zb@K{fV_IAt<&-BnV9*@%bXH z)JHHP>J?KU9#SB_Al7odIdC3O*kK3LvG3|+iM`kxTnAd(Q=MLIz{h;($K~X@%?~pQ z3o)25Ai9&A|J%!_J&@ZI7C-kN9O&6nhkT9jcH|*-KE1+H*B6tncO|Ioma6|ZU*)Gj zpOu>n4Pf(Zjbp(z82cAU*_8CLWgYnl%+6`;B`%fiK0O6W5dS!or!R;*4&()2xCoPD zqzbhf!8a|-@Yk|!p8aLBP-89m(auDduVRW zN5*&9O7%mJ$ANSyLHVjSZzEVLV3HhSq*-)w${-f1W+sx|dE6+dpz34v0}!Y3)%01j!^y?#5~ zmv1_d0)I?z$CuA$^5E|H-x_L`sZ`WjECyF2*IllsS~71B(Gsl=*dHi@1o?sYNH@;@Xj+|6vPry3&GoL|2WESnd-TyFN>skvMm9D+@ZJ8>PM;E1=5fLTMaL%Q3K4hy~D>%$>UEg&TmfoJx{V} zT))%*F{zQ$Tlub8^0X!$Q(&aA=!ss|o#MkHsYT{Q{E+>w`+XHIl2@kQxsQ(W;qL)& z{rN$+*x7y$jLplJ)hronai1Pi|m#ROX@qY&wdEACO{0y+a4uIuS*@4z52yx z61AwjnRV|xOcwGx@J)|Xq_)dCu9*AX=!1-7YuIKAP5nqXWMmz2w%BXFub{0e*pfnIy8gJm%;PZqJ+U8ev{cgtZr|oB;BH7)2TplZyFj~(&0i9isyE`6 z$pNw&U~c2~*Ap8h=HKf=X4bG@r^x=~iWLyeTZ8MI1lZV?z0cvDcCUV#8!i&+ee0j; zJ}TUq6LuWW^G}}i!80-{Ha3w`#F}1&!89ULpnthtd^_!(fXnulHz11%f!#Pp`Q!73 z)*(NhU-jb1Bj{);(-J>av?p~Ls7v`+Och*WGAFzyH?nw50vQhLFdrYo-PTDZsJMw+KkBJ-jx5+3W+ zxs_y{A3gPWCfQen^|fgtb!|qVEJDc_t(xOcKRX8QVcl(1Wo@9aQ~voM`BGnYij3eb zmou$g@g9b&l1n_pn+`i& z2d;uTI;&MHr0S`~jz#N@hsQDew`aORg0uq+oDm(90rW|9Iaf&i=lT4!~RyHN~YL+p!HJg64in@?tP$LXRi$eUToI}J|fm^Nu|<> z)3Q*?+#;T`eflKt_AnLzvFJtc?lZOu=)>heuP6lx^*A~oU(q~v@+tn$3&29g{+uT{ zwOL*NF?IOC)|t}f&>c<$qOyy!Ai+YhoUlby2Dqlml-@>^->ocaDT*d*-DaF zyg1!pe>)F1xqjK|_OGQJ)Y-i1J5z(%8l}*}>C&e+i+id*hzigrWy>xc?e@&jM9H$< zZ%9HFj^vH(oAnEu1g?KbAHIjb zS!tkO+S2@cW+-<*JFFBZq~2uJV`C{6S<;mfMdKDGI5|eQh(PSHr`TuZanIfo##c0W zyOTZPpwH}a3fq1{^SHg}%bwLg7ZYE&no&(s}81^K=b+7FYsRV)gNT%qUioR)|7)!%uS>TW( zzDQ@#tf@AC&vN(uX+dq^gSH2#@L5};4KAuRt30yL06#>UqhtmpL3!67dZn$aHR4R? z1(0~Fy{Om(T6I4WJV}cnRfd4&e-d` zCXg#lgQlNo(b=Dn-7voLB^DX>gdwsR%IhLK_7?7YtsO_s9oE(|=?J=7N4Ba3B;U?Ct;|>ZD;N>Gbw`cDl$7pblu3j1!sPO=8gMP@b#k0@<}iV+bFi$uNmF8wLh%=ufvI3- zCRDa(HRmaUqsMjKwEDQ`CEQWPq`?v@A zN)Qm%lmvpSir+Y=54`lKpEc7SIO>^&E@Zl}s+R_E*y6=HmBxLleEZ6xsZW^gJu|z} zD_5-@jj?snxBazppJD2<{${CwdyEbo=begF{Bf%iFr3l%4bt-OG7p^5qw-4#6~$)9 zC01g=+x83*ZS6qYk)-X^PpRVliu1gsgQ`aFI^-jkC95cBbop)WsiTj-GuA$tVa35r zeum_iLUt9h>6w}b9F{B9AR2g7_!AXVxw!hLlSVoLYlP1_n<% z$wk76|3h#p>0VzqIiS>J!DW(sD%|uuQzk~)j3yf~4@IHnQl-J89yCnbyJ+g~A8*+@ z1f@BHH^JO_fft`MGEK(M62#}$Mv?lxGVT*(l|K&hz}qW*N5x#v!EXZTXlj|Dl#EHF zP8B}1*vkh0Y5-!w&)5D7`x8*95@>^Rj14r;{qGiHrG`pfQvHP_S}~s$z4$k4-<8(} znut9p-2W1Rp_#{&RF&a%Ycl~w$e?Ryqqdqm@+USM8PU;(FnN~_2G*kG&#wE=NkfKtpe3=+f({wEKNI_|f4 zYRnDh+Dkd5U|QNbCaq3Vdm&(AEakB2ykLk2KDI z>nvUj6hhaUmkEpp9G3PM7{WQ~;R`Z2tSjD;T(7Nv?yE}t<( z3uN30-N5qQyK5qq{Z{}SspL%DdMBNtQ8(A;TD$|DtK zS!_A@P!YA=DA=khn_ zI=yGfFdB8qdkA9v!Sk~!Eyc1_vVM2hN6gIHy>d&jztTzm=zOjJ=FzxP2;k1o3j1v> zhB28Slh*Y*S0YSR7T9k}#fW$gNsUqmg4~7^^L6el3hgkF(DWJw$b+^3E_zXaPvP39 z^j8`Ki3kfyPx6MU>#-w4(E))8{>7sUWR5a9=1(ERx4jPvgDZ>}aEAQR^6(Gac8bOt zao)dJy!BDf%A!n3pOHNvTNpGy|MEv;4E9$A;&N>Ez?^5&fdU)HpyWs8DI*SD2GYy; zz6pIMK=U`z&Gp(7UgEVl8Uj+f3S2T79?>x-kH%) z9<(2uDlH&vXPT@MFV;u$KY+ETz9cPB!o%=pKF(`6afaN!xrBq4Qr1r@*>}YJ+a*CcR-I!TF|)E=;tK+pxAWNT%{eK3=g96Y{&B?50vy z&9ME=!`S|QZ(P793}J4#`uaxs7N!z){~k*1i|mRo#r~n|>*SbfSI`5cu){aq9x1d4 z2gaAkfd6Ke@D7xaiE{-cZ2SwPZ&MfAcDQmF{Joc{Ud8OO(7?;$tUJbk2!50w;@}LZ z9^4F2*A$NSx52f60(&gsP6IsrjNaHn?W10Q6@y8Rkg5ay+>&?K*`K3yA$3j2|FCco zpoWE=o)7(0J3g4U_d;Z3+G!dKbcGtUyps-{o4;R`Lz-J+Y`UI?NT3)&!=&TM3EgCG zdjr$m$P<8?Jo63IL>%e0aU|=1SY#R5rsS!?-$Wus+un%#b6~mp2ytSY2sRwSpj6^V zTVoGnAaR3(_XNdlAou zc&Qx$6}Sl+6!;28w;6zpD2n7RG8!{=;VlzUDKES*df463uS*5n2mXNpnq=AIJ_bKh za?||i*I$3ry(-s`u_S`$_kh-hK5Z0`nyQHGA-WBV%y%K302+x^dO@Y5#cpv6n~_n* zD94OR0*2p*O898|hW>Atg8p}wXovda6_wXvFh)zvgcuBr_T$qG6%Fk#AC7a1l2#tXxiR8R2sRiB(W>oqg&qLbguoALJ`AvjbDDT1HIr*xU2gi^Ey@X}g_ z>a|6`vfGfa(Hp>6ABuZPCSD%+UCe(aI?|tGEW-WLUf^e{!-v~QON(P@2O|~eR%*CZ z>%y&YD3Pn}APXTU_J{V?tBb!|RlzrwiueiVRM3P=rJCkK4IDVl5;CQ*n4*;Ue}u`M zt?z*EAJ(~)*MqW3Bn^5;ELGqHP2;P)w8HFuqpxwpU+s%OB7>-2W}^aMl!6}5gSbSw z=MMfL?VFE9pV7wm!NO|5SAR^CLLm`#p;3>)u{cl2uYyibj$N-W#o*k-dVcVbPckl> zrg^VDY^=sYknzDrC1tAxy zV|5ov;%m|eNkcRIM;840Zg>NL|Ga_gYV>pvCKQSFGSElDBEsfaYO>^XIR+m^XxXwy z_m#Y(O)0Cb%hA<6+Ka(7GR zhvAL!Brf(qhGnDMShqRg>~T-$tfBZkzTWLpVL7F&j89Ajq`qOSf3R;=M67Dk499J@ zW!n259$KaFQ~k%9$Ff@ZR+_h89e86(`T+5`hmO%*SsG_e$gHYK8M7RJIcK_jI&(ig z2*Z7;!u!gv%liba+%>zW)@;MeEU}Mty5+jYiZjfrnmyYMT% zOAtp0GV_zFFs8*=cI6W6ak&#riudu6I3Y|BMbOillgJO_{=Vlc?^ zXgoWI{j;EUkyhJBCkcKW>ms^yF)C0AE_ z)!uId*y3LuNEI-ZKN|e=bMU~7P7}!yT!VtPf&s;HC{tfzGYTCo88`-@&*|By6vs2+ z*l(7wIk9qKnHptJ8HlKBd9&OeD!S^U9HN#^iQM92+ZgXB4L1JoFLnzNj}w30ZiI|1 zj>S!58Fn?@$7OLA5Z06}iE?s*a2L9d$P3f=RP6;BARDyWer$~re<=WV7X@CfZu5EU zZVp40e4+~?sn@UUR@)+?+~YI$*)fxF-FY$CLQ<`zJz<>G7-ZNz*h1=scO9o~y`d}b z+?%xcFQR7hmU2BMKt;-)#}VwD+2D4}C}HDA&MBw8KSb5K>@6MsNc0&tD*!X1DP>iI zJYfhvS-M9!N_L*;wlQhlJxGXMF&Na%ld}L*ysLwBI_E_A3~M_?2UunFX+UCw0b*u< zp5xAJX3eA6TaPW>L)`HvU1Xf(7V%Bfgyo@`J9iAwo|!%A7inT z1pMy`5nqR)NIX{@=zJj@+>CYx3asr_V@WZENH@EBNJq#nXw3Zs+wZZ zaNSs|u>Z3DZu<>{q&Q9<0-W_b8^G{;>n*31XRIip$rYg1{@o_S)~55%Gn3}ZR9#7~ z=7`mXj`fBItwGlow(UYDZ@KTIpo<{%MjuF+R&G;QTkIb?v#LGj(NbPGUX{HU8cAXg z{)>Uj`fZa%yO?+8Wv~J}(nQxhOgqA<{!=!5wIz4LQ$1vM9L+v`NB^r#&48rL8-sep z3U7$rBFtTh1@_K<=Ko(F>MLXLNavG-4`%S&q&D z%`qN|bXsLvxEEA;D(Y zcrc2~6#Px9grskWaYhqzFxZp8q>NJwZBx)RbtBLJ635tG8pi0Eqt}46KRxE0z-mQN3+Q1tH;z)#$VGnp64kIa) zmC)oQKCb3LP=%NdHv`yQjf`wWna*Dvj)dtVtqRjO4` z@|8S}5D^D1o0mfG?;ACMC6bEncOi8^C#*uk$GE3@^Ns2&P~XqGmO%I_?4JX?rfYKL?Z8<^xgo%=?PKB^=gZ3SM-qGwg^(XtGL*TdNONOAw42{_D&Ec1RP^qkS zq0G1z-o?voFS>Rj^8D{0E5|J?V9B z40~rG>it4^&@1?z?5n(^&(6jDGB`IRbr7<&RDN@3pFKHAZf?$(V=0R?#6le&f<{`^ z1bxF68f~P3sp*T?wiAEb4mp*MTm4lFHVSNx7BU9q(DCyn*eGZbW7l9;t`9Gg(b;zR#yYit;Ina|-3|H#Ne2RTnm234c9r zPqW(nL^wdNvkm-U-8>)+>nj&0+S+ZFZmD0fuixtq-(s;(xa*odi2W8JO+Ki=t-S z*Yf7OQgT3r4k8}^s z@srK^K_nMP?4(SONykEm<4VP}DyGuZ%JEXfyx@-UTVZ?EqdFngQ z`@X+FzGr5+@45Hvvpy?!oVC{FCO`8tJEN_Q&4_zZLM%~{;g-DYtE5A(n=g@nr05<& zPhai}-y@&9>=HbICk8%=RSt>j$M9nCMy)98JU43`Ul_oV?7%|vl={p|w&C=EjB^9! zW<1zZyj%2U`@y&mzp{F+mLVMAQQ^w#^>sd!Rt)}5?@MhQnvP9YFduO^_WnxoW1>u4 z?wy89Gx#UfcZK5d*tIr4T%};Kkb6||m^y?^Ccv>;^Iq#>+)WeKcwJWbcQrs#afwT% zo7VL5d`vzr|Ma2H3~FGV`!j};DkaGODkID5w?@|l!{3^x67Uh1Io|$gZF>BS3ceAG&~+>PGlaKUu&pHb zV5+=fNO9>zPn*!;Q&+LBT2Uh@FT3p`6f;KHl?hnsdO;(X5p@kZ)3|WCq4?Ibujt6F|s@M&o`t$5&rmNfL^NkZOBTP(G zxfy+9ahI@>slXMIBOaCnSl6vx1(L^*Fvjs(D z+Rl}QdVH=UX{yJgyMoxwPP8((Ka&YywPmz>pFfIEOJ@Vq^wM>auO2Wit>0iL)!Lf@ zSXX&IJaZRViV3bF=hBflwAB{6cia5k)O%D@!WNCr?bX67qFfFhhdL=FY=>gZ7Ehtz zU%wx`Y$3=Aooo6cm~bPB>j=Vb2zj}8Z}5{$^X=O=3C|E$R7N(ia*sDBzSP+zy0#+R ze>=SR-lS-Rup6d%dmNY0&^R5y=d~oC!yVn0{_r@ZU7$3XP>4aN(AI7y7xP{dDZv#M zhh*i+01LHASO!R-PkP&6K@|Qe=}uo;Ii;)gVzc-3Z+&%i^`BhLW`6~?+V!d`1D z-_*`GqG=RYSN1A4sqK5>R`96q-AgkUl=<{!#v5n__P&g029?EIqnmIvFWAA+yi|$C zxs{;K^+{Ow6X=@oh07Z)Drqw>??!8@A$+{GRiem554d9|#dawC{$TPctTWy@1TM7YK6GtO_`|ps;Y1ZgVPD#)=Xy1|18T7go(pOkx*kIA7P$FuYBA?@HuX zv(M&ys#YH-BA=g%exBKqntU-jN>jngsH}4JbHfYscTz?P?GM|{qiD=#dad)StkbHB zMnc`@?=2axvWBGe*Z6lQapY(!U(oL{pOq)uW1;*yFh~`#^$7YE=`i#pwPISXT_-ZG z(*sTtbnU(kso5ImN|`2MfqLL+C%I1xd0Y`) zis||3CA;dTNBUA1?u0Vnc1NP$X}oyEBtY#hethQRytn$o%Vd7h`SP@$!EjE)WttPM)uAU2apT*b?9l#9F7)*YT@|;o z(wx{!Ko$2Jc>4#OonsUnM>!t#@-Iftn{BVt(Y2FC_3@`wtvnB@eiWF-i1DQHVkSD@ z9?>)UlSV#Os6ab|H*!3VMKa`;?y**81{VXKw{&(&Fa7duCZ03u zmb>ka77u2#zbUQTVYF`A=o{E2&ly-fS3yl(Jw_XK`pV&KrE(|xFCiQ5qw}gXohLVW zd5kHT@y}VbX!P+BZ6u!9B)p{A2V;^KF*IC;V+M8?+a(>1M|agbk|q1t49BJ`c1s>T z@luED00UF7f>z7B#CH@f=-lIs%Qq<>A4XTd{$6iI>}cVtUfPQ|#kx;3wzN|DZFH6A z`4YGrKc@@GyB2y{eY_XPY;j(KW4Dg!0=uz!>%bl@Dr8$(tNd!kWj7}MjkDAWZur+y zpEywS3Mz!oZrQIy9$mt*A8&H*aGku~g+s8~a2ku7$iOv9?6v;1nuZ#V+g85F?j=5~ zL0)tH!tIem3#dgqw?d$rM)JBj5D}XbQuHs*2{M~=xpB?!R&5W673#!kEww~f zk-zX=bA-#3h{&yvF^P(Fyh-M5{GH|ORe~gyQXfue%V0e@70Y1XfweNyY|a^u-l(m_ z8mOY8f;N~(y3Azwky_=LAqo8M6t9(&ib$m7jWhv=_M2pAIxNdnG)H+ocPOdNdV^m~ z3R8tP$=rNXA#Cp|?T+;!;7HUZEj@sbNtRLbEs-4Oa5G3^Tul8!hd0tl8BqD$X4z#PscF%RYx-V6YPRJ?d;j9yYwiwtbVRrnloOMnH2>3g~{`$Lc)f8JpIvY5GGd8oe0=s=O`-cH`? zc0=eZVA_Z?;Ed}=ad?8Bt8A?N+DVevIez{H7TiiFZwk?d7zR~WqbG=5X46?VffKe2 z5td=k+r)P_Zb{1qo|7h8z31*}pv2(+;#{KLPIbd=?x==9O82y-^GE7GuU_{hymVf4 ziuv4-Ol)SDP!$;g`c!^@4g7iNwsI%&(A}Qm&6#=D*NwYv1Bqr-BWYJC({s94X(VG{ zRJsaH65F7X-emaLLiI*u@$$Enyg2uq{zPx1gd?K~7X||3SppIh?>vn?eJc8bwg~SW zn{Y)-$4jY=vsL1epYhpImFWUn*}VO}JQ#ry=|w^gpV;Eyp945!Uo-z{{;~w_bK`4t zJ^WVqPW&hVQn0NavN?XUcr$wJ@q%O#v6!XMrfWjb$MdW-Sz!{Y)=#6)-o{BVy*NVP z{G1B|P7}KnJ580v#uYcd%(I7VHI{VV(Z5hQW_$k>p7*hK8XM|4t)Nt6xx9*+jt023 z7NMidC^YtGR}YEc_;542i+DD|i7w%aIx(@Hn~n;e%CYc*VfyqF+!;sjqsSMUS#FPQ z8EhI*urvv@ci@JYP7{Nvd5+C5>LyxKHzUy$7Zr#wb>yd%R)>nI+eZt;7;d0-kewd9 z6%tR7SF(CJBtLWMiwG)&T%xeWw7%A@Uu&mo)MPWrFlB;GKSg{eLRxIIRdDb2dcQDw zj3aGb*u;r2ANBiJ-I`ufYoLx6eO08h7P6RSJt8a;!ozg=NRh7b8w!?)0AphDjYk*X zcem2A##5u{ITK#LSTQ}Hdw1oNggFVAUVPAWXXf!;X3k<3JTse_sMlr*aG=lNB}v_* zBZ-*giGPo_g(}vZt3m!@d?JHQ(QcJeJk@aO0reZ2&pscD=h)Y2=?$ar+nuj_N`He> zK5U9QfYViq&9ZHd`|xpYeX42i(L}yei6@_6Q)XS@8{#YMUWTDqX~l>2+=^Jwlznzp zqvVJ3v7XA_@74XhHNzH~#L>;euhzrEm*8W@J37bCld;@3iEjoA$q;0xuHV31tc?6- zmBS^0AAwQvW~VPh9H8$xR%x(-ZTj88TAK577%@7VMcfO%U0vv{A~XW7ubffGqtqx| zZseQbzsx^w@s#L!B=4&z*Lg`^8{PH}66#7?>yQWMsJUmDXAWCLNu?0j4&|+zF2uKb z4N!ZeE9+DZ+(1j(cG%`~V>kjG$s{s|^b?DPG|u(NFe+C&ur*+^hEp2Lv~ik3BsHND@16SXDYe=EkNzW-S!PV4$n3PH+I zi~#C4OiW%1#&r=dnD5>z8d}_$(rrhb4e<-OmCMQUI)vtoi)?lM0Fyw!_s|iL1RH*+b(|`S0{K@U?{ivnOT@>z;0kWJfX2L?B>eJO5}Di$nA)E z&gjWSJZ3-oydQol-oM*Kf?m=jd0k!g%I&P3?hjl#y6hLX_=u#f3H~4alT5q=uzbv_ z9!ck5p~2%3?^B*+?zfg#;A;j*Zy_CmzY~KT=2ZL5|Nis88u(ug{I3T7q=5%q?1$7{ z0uE``FB0k1&#CIx&6R1_Ev%ZNm;eP~>m(QjG=ep#g;GsGL%c%r~dEi<56-VgNq*Y^q90~q!$ z0R6ggpjSN#vAU^=t`O!HcS&zDY+7v&Gql2d?A^9(S6_z^%y2_+tQv*=L)dySp`-QkJZQqupHh17Ld## znL+$|F@+%B!wT33#e(9CmMC+I8(-0nUAEz;S3DIE-!r`>{=63tJmV z)+3w0$pGcpmjU7r|5ODkK9_*xs8C>QZVEIjhrkDj9gzXS|GH@w1Xfo7kYxq}+uDIk z;{<{q!F>l3;ztO6W=O~`0S^*7q<`!1?O13-^{#@z!42RJ_31XT1zaFGLvkA50*>RG zzyab%WU%`yIUs(mq;e3PnggQ4Lcqt`UZCH$0E`FM_el%le+BXTbd7-N`6=K(x^jU3 z05{@42zEwDw2+Yb>EHIFpq>@rH?s{qhj)Pc9y9u(!7d{2+eUrb$HqKjWtRj{PcZ$siFx z`nO~V?p*MR0 z`i;~3;{qAm+6}+y-yh;f4!;qIzj+@&qHhE@;`az{WDHY6LhutoLi`AsTmPvqh4!t2 zpzrv-A%3rEM277jGVI&pz^4xU3HsE5Eo>0{F$KWW(-SxaM+2>bE@1d|@yFQKf%soH zeFOd@zu`yx$E{@w(LdrV2yVpZFG3=Rbg;gig|Cq{4w+XGJ0LRr<(LkK_=6#S7pQ+9 zh#etsNWaMe?Er1@XMg(L7Ivc>z$2#ul$Vu&*zjPWtD^^WYes*}Pr4BQ8;Cy;>K!@u z@wZMR_z~O(`u-XBDfm7?*pcAzCD;{_2ByZ7S5+Z-|+{HtpNA7ef)@@9N<0!U;m05 znMV=bBiR3;{-YrNFa-a=4jjjjpe+y?d=WVgY;oXEe_;zpI4Aie<$#P(AK)Jq2gF^X zfdRyOFwg2k{IaccAO!jia)gXS{9k7f{Uh_tfuH=W?|%z7?7M$_99RVrb34Ed;t!aG z1ZD9@WPr3U!yjz%``AW&3YnjfIo2$%8N@aAfQ%3?;1Li4^qXdWtQUrjOF+JD4xolt zK=aZT@PT&lXrD#!|E%w0@cci*{Tq5Tv{;Bga{f2`fe<@Fzsc}tTl}N3ZJkmIVq>C! zQ&=ppY=nEYp7kGVg;CQI(CC~8<~>WmVQ2}Up#OMu?BhrL`+to40Ds)zDv0`yKNw;U zhPDVgkOSJ|5B~HQwm|FW6SOCSLHj~}#w zAKZ(&wvGqlJ(jaW!8-SV#bH zEocBHZA<&>o#!OnYrwH=3}vu`dlKKidEnGABnf%{%W-*t?_afv5PuBB?*aWkY*6!0dd0^(ozvHx&}HgJM#gjwqn@a~-l@_ru?zxjvr z$-lz;>*vYCYan(J;vd`r;Shf~lm(IFR~de`#gF+3`jZ!&n;c8KKxkD5$cE1V77lJe zyK4NWy~h^th4Yp%+;=1Rf93yo&r=}&_@!Oo3Gqil>ziOmVi(H z;(r}~I>ev2ytj`(8e&IiUk2Fj+hJdZ@BRdF{A>%<^bT;&_yk-{4S<=J3UIfBr3*vN z!0i1y;5NFxzlZXH_^VcSfjPwQJFxU$$Di>Xzt_+%h*{hNG0+wtA^ng8;{RQa-^X?! z)W3DpG>EcL2aniqgC|d)0e5>_Fj$!m6vZDy{HyzWsGylG(73t_EaCX|9a{dcH}qo!e;maBn+$&;$AK-7`3bHMK23w*bF440 zFwzA^HufMb$Pu*VgaHX5e&9X6zQ6y7g!r4+_JB>>GC;w-!>|1R?s*Q>Q|fp82=;jR zIv%#a%khgp{bUOijEmIgMuPt8T+o;s1qwp#K}~8f;N#>1zLOjKd#GqAXV=Cau!Z>j zpili>yubF(9a{%!5VH@|KY}|EzE1d)412$giC@Nr&-gZ|N(%yw1##eWau6s@^aZW( z^(_`QfSTTf`@kKLwus>01@>Q;fj`vMul)b+c^_)E=nIjsV@YMWD7I5i}IWg2CE+z|PJI{HM3}_a9l%UL6p>BZ7bYzmGp3;?GzG zz!#avA>L$&|7RKgY>VIh$#Z%Sw0+J1W1V%Nqox#eROW)|wn}i9n-A{Aw?Gi|oh)dx zc8K4peHjEytpC^bU+@$DBq&D;qyrg#mIE0V2V(*m=ZGzW=XOEmmrvkZe;XL>ZUd9O zjbN#_1>EC#y#Gv%ta-(7?itzI11<=DI41tCzx>+25aQ2V`%VAJ5PK?oodOAw;XsZb zV*<+X>)1}Nss@vtwP1E)6fDn-fUSu^!2LuNAbW9S57n@?3nsVsfLq5h2%P%w<1d0X z%|h^x?C$Fx!G9pb&$d8h_#wx^n1F5Y*C8-al?~RH7vR(3CIE}mfbXTu{``vUp&HkJ z!|&b+@xw9wtN#A(`KRyrQ4l|ZJMBCDl?=c76JiU0I45?OCV=I+DX_A<2zF-1fq;xE z2!pq<_v5h?Yv}A??S&5fG zMCb`v?&}1G(K-A3@JKlKe1&uWIK=PW1@Xf%{VV^!d;VAW5gGR7_&06Qm>vW|yq$r$ zffo2$T@I|=yg~Tf_WmBKXLApXLj1lEfAF{M|Eu`_nJo}sLMUc_8&t#xf|C49V63eH zqW!%(^AEr#vWE5geZd zD?4DUw;h;T8iVi@XotWU5CUT*QSjL}9Oe*0V2mty1h(@#zJC|*ul;|z?(>&3__NF86_PM+A9 zO_8a$`3G`ezpO;~cnG%$wT+1v8tV2(FdL+Lk-D zv6eBlIhZ=VRhm4rg-V#&77bn8`#++~e*yI`KhB)lEJb91IG3`fH`~)^wh~ikw@j11 zZQuXP4*&b+e@z3w&CY0O|GFJSGlMf90On|9NV@@(J4jmslg_Z+frt*l7M||6=CDPB z=liYM_m=B>3q5cD{a@RI&%gIW?u%T9@IhLx?=ASP#s2?!i}xEo2ou432+=TX_Z5xk z5joJ%u0XlSA>D=aqfQISB>eC3-_!t-_c{#gSJ*#f)@VP|w?%3|&O<_SHzyz=vFyLh zjluW-$A?|z;0@dK&w+{_5o1be^*aU)bHD)RW%O#tfMP(B9XSK*U3l|rkdPeM->%&F4aAOLx@ zKtghfNIvM_)`esJ7=vTOgt>jwOpQ&`?7C&k0x*FwM&qw5-~;4k1nVub%PIj1g#y}9 z**|JoBx(jgahyG{hB+wJh^!#U^DZRBCdhC=a;}(={_=2Xo|bZLnXPwio!fAMIbKKj zOlu44P^^2`fF;beAJju2d216``w*3o3_RUEfH}-B9n_*o*AIZ<$|zt9b4XfoMNyCu z2PA|)lFufCgyc;BA^JynBYTHSkPyE_a&btG;>UsH`6FPy z;OD&lL4C!3F8rtZ5KE*s1n&C+L&AZprx!5EYXHVbEeOmd%YEl>-~A2frj>_41_)n7 z_Xux9ej-T7{@@R}`!Fbb6x`4|4*r%8-jDCY82N9x;NNRJe&_<$MHJUI17B!=1^)zK z3hN<|S_0+vZ~O8)cEj1PAAS%G`NzPRgfq-D9OTCj>JzW7i+q=NE zcMh19b$UP^1dtGU|B^3!fB%SqdDb}iOzr~tBRR=~{PsW7g@=b1aDnpMl(YjIST|${ z^LQ#yeoctM4f40B>@|ir|EGMvvqwYnr16ly8?2N0k)wwG_|J4v-qsC#1A>4el;0KF z#stP-jXM_M7+L@}jU$1tTmlhW|3S|O{C;hbJZB<&{&I)>k+>X^!$IPs|4bL2ZXUo1 zl2vIZ2!-)TTj&Ew9?-dc1_)?=__yae1WPjHp9EtK9wWcSr4I7M|4bLj6Uejd*r^8Z!7e|4S;^K>aNo`LX3;z|ek#ebv=#5cnWD?o&U1@I{E+|S1a z!+Hp$e$TGsKj)9+sgP$juhHM~gumrE|FJIYiy8sS-V9^~xBz{752*VskO<=!NFK_r zb3cFouSEXC=b13ikp|j{sFwX_`faJIia*cnb3oq4IAT%rt6ookerT6cF39M;A@^IFWzb%}5 z{~+AIaf0MYvS7T<7xG8qz%dZZ&v~|Abum_%0lsDjf^1hUAg!bU%=$LLR~U=5gJaMZ zj{SdwHm@BuO!AAlKLH%4I`+5zSPZ2SIm z{z#l3;qN!T`=>bUU+JQAXavS$N5F7>5l}X^hwI@kfYZl*9N(t@KhL8haqe80C-H~; ze~xSaBVAMsjKe+tI@q2c2TB&Mz-n|4z%(Xsg>h_~f&V-Yjy%ifedm7=U;jfq7y87{ zev#8Z1-c4SKu%&DF!hfC){}bxsvo!`{0IMY{z#l8AI5D0p!^3h*7XM6-N9`k@;3q#=BJigE0 z2gXsYhyEV_gBaIAj2gl4t1h-+EPbe<0@&!PfbrsVklxm}&mW0{S`Yu{dHA2@Kj425 zPs@h!tC9@>nqa)L9U8f38-QNu>uaL}z|F=Icts}z>(Z~_BV5CL1|a{DrT;h%i15#Y z_D@*)bBr$wj!Pu=lnrA~Fopxt;aEZHdOm;c+O>~N00yyntHx!WdCo)2JdpSQDE0*X z|62x(*Y3x;U_37G8;o;7UP%5dYkYkvX>6@CW^^?@dURDUd}I}=Xa27qP<~ScL-xd4 zd)CBS0wi7d9us^I*}wcBJ&zcFdHxwVvdHl0r%)7aF1>d_fL=xK|=f9BJYtw zGBbzK7;`l2{~_T4a~QrrViw550TPxVhjb99xQpz}|KhkCSp)uEQV9J56hglACj z9o&lNV;!u$Sp#;kUd|lWdlgJ{hkGYT=%MR2DC;$0`d^YLI0%b_b}eS z$1*5@v>@E*SNuwE73!v)?W!rcOX7iSgN%1gs%v=yLI3~Oh;P6FkOCh#t{`p0~v@p%}; zuE9Mn%xMI|d-y!V@b zI27I^0Nw+&2q#9c1Lo@r_WOH4Jl-?w0J-+(zR2qjRTCfu&Y^KI?-K>@5e8)mUWOCu z<_wsFxkbc(5c~MgZ2;ujU;CTaPJv8#c{035Jj~t2KrB&Ep2+wZp!VYVe*X|CQy9dA zT>EQ(>xLPS3+L`Ec#kxAk7Rg{M0k(6>0yxPW4GV`Bb3Vv)|4XG{@ULT){6fXMYN0q zorDsg@TvdD=Wp^`bbsytch1e>)AGM0I9r;-$ilCL#6yw53vy&aYJlIAM;^YB2V@ly zLv0;7Rk~+#+UmMmvU1u#UOkhOekZ3zORlOdtFEP@BtuIsCa0yXq^@@71|0+PA1(QP zT@@W&Ex9{ta=JQN(kis%Lb@_4O0xWNhR@ZN<<#!T+`K8xBFn-@tl*=zlB!r ztE;L?tGyFYQj-&rQ<3L2fRJQ$)U`x(bY@rh7I zs5|{xR&7BJKKfWLl0F`bZ#*2i_QMWi)?9n3MNhB>j@$Ev-5#yg9jqTGn7Vx@Jtt#X zCp9OdfZvs)qI#$|GF;Wc7W@dn#~e?s^Pqp}sLYuEYEjboLi91_4!SSQw8;PmBtkeTMo{7k$WK+`Dis z$lT8OoX5>Y%zm#^U3^*}?!_rm*?(1!2(%Z-n@wgoiQ>ziuuJbyCN0rWsX3}}|At${ zn8t^mF@i_}1~m#6{?PssGAAxeId>%**y;-^qqmTH*gFuusJyJXtPuHqhqFr;U+%LM7#JPFpXFJ z!BZOxJZ%eW24bw|4OnjVM~F_RVJOVK7P)~R9G&hzQc3p^4fE}`DRE=@B6j%KCQ8He zkBqt>(s$-YwaXGbSV0$&sU4jh#hmre+i)bXkWa(RY`Q~vuZ|L*?d1^rE8L^kt>x!B z+8530q?$C8FydqzI4aSnO?QT7+_>=3i1^Z|E}gc!a*M(0VRf%;cuaq^q9ptcq|}RU z8K#!<+$8KLPLUi7PvTfOdTOWi!rkgYGI#7y;S$0U96uW7d*ovmQze$dqsC=O&{-O5 z+!D2Kuf|!C)TvWl4WAm@s9RZa-##X-xXVX;oTIXBwkkux+0J8PRP*w%iLFfK1pm~n zD5eCh-t@Rqs^XlwH1Z;OUf;76|9K2QI~oO<;i2+F?VVHV zX6H?EIk?ygIc~9Y~)#M9)}TPjhqg+f<-cnVB)CvB}Ej zJLB6mYatqQUfK(iZ!gT*zb?+OTJXa@Oc}r)d(Y{(U?Ib8S<|DX?B@gwUc5JbDlL&h z^M-DN>UlT)LlHY z#>>?zD36=VBt-9FHtzm5#fl-y$)T9<;zEjacayT8znE!m8>P3Xi`rd9hSOR`W_s?@NwC{t&!=VSTy%?SLJ16uu#v!ou*%?8$fTs9RfdB+1cXjOJ6m{p-uCwTTzb*ov3z_&Ogh z>Fvaoa4p?HC&83A=xgfOGfq3Ws8g>nso(mi4z3HA&`n>o3@d-ukG~qo$4!-3B|=6W?&mi- zUXqzc7QwQubX6$`_vz`LPbX8FjjXeqbMKUiD zM%b$xJTsK&BzE%_esqaff=LZG7~Ci=v<3)XIL|6cIv5ox@EVzqCR0ufl}-ED&dz(q zeY49%&F^IiNI1lsxQIz#U+(=N#wT+Bn1iL?+5FzK#5jtlu>~A%w{D2p8f_^wOr35Y zqDG0d$%SuY1<1-*e`%?^#NX2&>&Fh@<8l;}%OLy*q#$S5o47nm0v zc2T4$FGU=gGRqp?+#V%Z$=SQtv4Fk9981-EIeabZ^}=S;4#^h#$_OF4xW`8P(X+l^ z!_CIW&k95fJT#o`$!KTdf1zv<^d|gpmcK4>;()pJm4?*i=9vur$VTi+ROE7FBwl1$ z4l42~8F$6Qp=(R;>@}rxJ$)#8%Y)HsujTID@7yiU8EKZgZuVYB=c%rMk3L!sbqE6{ zmapfP4e?_`ag|o*;O~+d6{57Vm+Ka8S9)pbhZQZBk8P~vG**sy8Ie$rqV3VScW%?| zN{_m$FcUB@i@s_(H~!=-NNl^LKrz;Vr9^m6l()u4emqO{)T1gAqiFIdoGk<1w_&Ld zY$;t63EcE5_@@m--1585-1~Maqn`1V{T5XS!=;TzZAMRB?k?JZGOGt}5*v?>EHz=s zHoEnTru2SpI$D}0O{$Bfrl4r*hIX1rQguo1nw==7*TnW0Cg+rJ%M-`#QWeelQ~M)T z!*1jUQyCl)pee7VvMylN^wJnUHRIPlPP;Syx-}>KP9%1n&2`N#({znjjnVg_@uHs2 z`wW;Z5v_%!M&&E}ecb6jMO+Dv_wdn(@rhY!qPLmF8KlsvZGx&{-)pVQ3Xe(s1#SqK zMfmU18`QsRnJdpW2v(INZ0`%u%+49;p{>bIu1kFRC;`X7)-ZZLGBhi~EOfT-)aHX7 z@0cgWZhFP8dcjpJ>aOWcGEsxVeL~|z8>D&szex=76 z6$GLjN{?6OPLX*grLgC`N6U7o)S;T zy$OgOKG=OcUDxB;9;utyz?3KcG7n4h9oe9U!yA(gcbx)<%XX>KF%LeOB*34};UUIU zO!Z|fV|vV?WRZmPrska>Z&j1x8DbZdzA`?Mv4u3@=oGzR=tuP>V#dyp*R&?|HM7Gy zVs$Tb4Z6iXd>($nq(E%oYEg-0z>Fz<({7i7Wasj@$L-4$z;#jMteuE1X(B_MFxC4` zH+FHnwVd0pu<8?%3f?Oo-72td_6b8{+sfz7R@;7;5_C@VvX!AxhPQ-u&@;ncjEcc0 z9ZN!3f_;k%U*sh(lxT}_9K~mEKA(E`NxNU(%D77RVbZO4IkC4!PY2F>m8uD9U((B) zE~I~OhS+_?YSF>se6+cwEWJRZoqJ{C%GZYm@dTJ_=iFQyo<67{61c?K%}dE5qBY`v z68DDS?4)wMhXG}%p8j_K@f!xOT6o01vK>uMum{)!|=-Yt}zOR7PIp> zh9v`TQNnd>0aTGU369ttk9satYTK+|A9-6G*sJj;rJ--7`Cq5Ubn{=JMLjT< z{!n+@8H0mEtoT^W@~DS*+}5qnkz3*n-hx)ioFysMPp@u09=l%6a89#n%*(8d{p7Pm z@tFxMj=O!1I-8>DDF+wnb-@ znejFrA5qd75lYk1VWy)hP2H{(7RkG`ep2BlF3B{t1Ij5gS1RdR; zrF@m5I{rk7NRD51RQQ4at!8c6J?D$eOMb5pneB~D#8An{7LiNK!AY|&HX8m+gcJEE z!+P=8=nafz^*6lKV;a3NNOs;y%!vvH4Q#qT%BlRQHk^ycm%#@dC`#rZ2U~(E0$k+< z`yJ0vb8V}a@jW`JJJqK}iHW$6BxGJ6>y#5+j6Xsl`XyI*Fu;V|UF98Xi&&B@DeY{P zB2NvPmKe{8WYtE(Gc5Uhj2ArJ@T=bFZprUW-}6}1pR=Gcvr010q$uJ;wi9=~Ne%?H*I8po$rrib$JSm6i`x zkE%tqxG;ttxw0(!W3e@fcKmQI+oM#&In8z+iBfwV8!lJQ*;Z{^q8Q!=uv~wCO3d*~ zg5%}aZ)~%8cx-k3PWUX&w^VRn6@H8RG?geNMz8a|KV9dgNiGdsY(L>tHA!+UoYsan zW^_63ENOk|tV3kpcYL?X27Ttoj5ABOqH|d_R=(X}vo%R_#Kn%F#FoA9iD{Q_$F(Z!-cb+ojnt}@39>IH zJZRqj%$ApTEFo_Nt*@WN_4s3_1T0}~2JAA6N6!O!_$@C+?pD7)b8YXq*Gbw{wQ2qv zOaq_BylnKvuSEFZvR=A;eu4aX!VTHWFHD@KFI>|ub-G4W$l7%j{bW!13AQu_@u=3P zl%k>r&5RXV)Uh95h1a&klZpzq>iKb{r4;Oz_V-`k%Xg=GZJm+XkvS%{1OBWIxN%)1Uzq5gG^L?I?1GvS(rNWVT zKla@TLb=svPim4%#X>py;(`Ouc}}%^`#*>c$~za&;*R2SG&3mF-X?tZtaPD_M2DQZ zz~=GYk^aI72NFIB)i~{$#6wsqZ}22hg+?rrw6@ZnQ>w1J*UN_A*-zY`j<~1dIwZ7; z?M6#GHAlo66PDn2M2Su2X{uCB>rsLXE{B(Yr!?buw*P9tkuq==Oh<>nkyjeFezra zlccL-be@f0gi8i@)%>GGjE--<<-OKXAH(ipd`TjbzVzz$kwN`eM7;dfL@x5DG4bP1 zV09a*=_PeA$bEZB6M~N(lfA`vA7lG?N}wS3t0NTR7c&N4T#O7qERQLoL9vWG?HYFs z?_Sfe>*01S`Dq1bksKuf>unD%?hJPV3CGByd{%&dvWhs zbY+5naQX7rXQGxKOYe;-RdHk6vWZtcubY@0Y8URyGnwuFd|mWG`~;&c8;-Zn@kha) z)7VC*G_ZHPbER1;Qr=ltzqz3;snR5B*Y-s1dZ}ztWfWDQT!L!+d|XH5ZQNLrW|6&q zS-LkY9V!%xHXqORev=a-jr~kx;h*5NTy44E3 zvT{s%6FSA`79;f!&5U^GoGQ}EpLO_stt1|2Jt}qoQn+&%lk5oxPZd`Ijr2I7VI)T#_@pKUS8W7A^Z3ac+9Vk8poSykH}%}2>xBFbiQ zqs=@am7#$xg)ihZyum&Cxhz>eQEBO`MTtI-$+_m!10P$aE+0s+kL&E%tLi0ScdRHcI#&}f$g-dp+Y}v=kxEjMY`vU5tiF(XWOi6W_G0pkL%|B?Ew95JW%9FZ zuL1&QS#NeJt1WG0i%^M&NV<6z9~V7$_4MNpqh*IG%`O{Q_bRQ$-nz8-jO~2hJ{dD&|k?-dy!(y!VF3y;Q;dj;m0#P^!(Nh^HBj$-*)+FX5NP&XO!#P^MtAkvM#v z+1(D4{haw1QwhF)i6+A)J5}mKCfMm~%U@pRuCqN-TNtR3m)#tTu~e04*;d{-GIEOk zv_onFD>|)$be%kp1Z{Ti-8HAV!cc9J-RF0AosT}&9A6wEjat2PRW^V|Zc*cR+MR&75r>&_*AqEUI z4K;36J{-Ab5*yF{^)))}(g)QKi3=1?nT8an%hx!A13oERrjS$S$(Dw3#~(Hz!luA` zIv7sz7!^4hD77RP9?e(;e0t-1jz@@v$EpdFWv9Pf;WIYU4At>S-rXe;Ncx<*ATE4y zK$QBW?pJGjdPAAV8A~@Dn?#hvC6?yf8%5Vbfl8c-;BXUSd>HEgMsg+tTMye0G(y;7Y(6blvAE`BF7)(ZiJxbS@C=QbEWm%bqNCGn<8th50M=73)#k<% zZ={)RD7z*iTWgy)aW)@4#3C>gxL#`)*5;|mK*r}9?@upD zNEu1p5^%K%?z6oi$w;ska+>KXmHf0=W=);Lo=5-K8Je@_u2crRT$H1`r5(Neq`ubwt@hC~Fs4MUq>_?83wMTM2LcQX5 zuoF3Fh4qigeIV`180qm`B}(A)mGms^|KcAI@$jLHEhX{E^rWsj`U1RluQ__jn`ocz zIeOj^*YEst(Q}e7vYDPaU}qler050Wa#Ti?iVohfVV>-=9ZA}1%qQL(TK~qn7pn8{ zu1O`slx@BSLhoEg$t(tAwPgF(2I6)xr8oEaqy#1G3` z^b`&H73EUv+WTAmIIAsgq0r9bWM_7!;4SHm-JuE1=`ok9&^xiDbo6te-NdNy%-ON^ z8}-4%Y#8`Dvp03d><>E+oK&N{yc##b$auKqI$_*AXSc;fM8h;wXh6x6X5Qj1-6EG_ zIp*AlQOC|F3*5agbmVRs!NprLB$@Kb8AX>Q+BQAypNg0!339UXpS?~aC}V$Gf$l~y z@r$EVG*{otAq3u+s>e-(A(UmJ2bhfw;m31*kuS#6h4G&|o`F6JRDMohdIVB}!X0D@Z z8$q-~VQq8x0)C$Ssq*I=&lF)M4}9Uekd#?M!9)~R$+94+fIa8r5!jFts?NTw>|UF( zet9w9K8pe)@V3~CFFNcxWER@_VNZp+SuQ9@`@MPVO1-I4lYn!E__O+pqa8v_r|;=t%ODpWxpv za4>u@^Tr|PZOQr}3(3^*BQ_P@cMMAjA2poOEkXNmzD)1IipMJ(4lM7Fjjuio649Jl zeXFBJOxwFvo#h_jNLStM%F%jvv#OS=qlUp`#=$k^WNy$yXc$1Su{8y`xf%)wIX6 z)w^oV)e0XNv8{2l4rtiebp$t>rL&xjALSKcOTaIW|YZI?eYg{>&zE_+cd)Mp<>7jFB zN57)s5=p*erF=hkKji{HrIYQkYeghd)8b{N3Vsv2iClgH>M>=Dgsjqnj&SO(@tjrgXTI zP#LRaW_ptZPd->PhbvI{QW($3Ab83hGg9J@697PU)LH3cZBZK3?Q+9ijOQWjt z0@0SWKj~{1bf04XA=x{R~k67UHO-iq8tlBt3=huX}h&kOUQ8vv`(*OQEqjkh_wAA}dQrk*>$24cyK}~D#QK*;x2-7VsYXNB9H_Y! zKDS;WrU+&$eXZc6-(#I1mf31uulZKRlfPJjA(DgRM5u~5RmUqAgQJ=rw7pJa**xUe`W)lhq=Uq1w7x?qhQ07)s_GVoD#G)9S6{!M zYuA(r(o97q2R)RpmKe?Cb>x|_iqPSI!gL00cjMwCwX-*fsZLdjF&e6bJ*BCs3J~;W zaHDzthIGi>-a4Ci^N#;}&y&0@)miCh6>i?u&~_&6Os3M(OI3;=Twx&5WyKedrMkmKw%lk?{ zp3bH6rn0QV1WFQx_ct}?NmCu{@VD7_mqWigy;QHeGMhxoJhw_2Y#0Gf3Jqy$V7OIE zEQFM;w^zII4+#6JVOQvM!JoAJmLTlg(lZO&&Vq`H*hUZqD{+t76@b%@)fEO1R z?%h@Tf(i(`5~qADoiI#E+>!D~!VF`uVpy-iS^io4jL2-!aI(%%IYRP;GYVRd8%j%Q zl9cjGoz&km6eUsQJykd$duUxRvHACs%HA z_9*#Br`%xdTvI&4df_%1_Js@RJV_M>og02>Gs$C2&y$j|8`4$W?#gaw3u2{eii-}h zcrLt|qI>4H?q>6iJ@&r5*Js^faxqb&xslI)j>$KsB=uV_Fe)3!hNWHh(H2M+jSFg2fo=!r5lHgH*V`hSt)=piuL~YXp zRKDXtp`eUA^bvGA>+=ngI5?{uYy+++e;ZQ2`wovBToLB>qKk3$!=?@Fo-oRFCy!C~ zJIg`E*F0J3C`Tqw0zy?|I!YPqRD{}l&`#}+DX*_(yK%mcll*U~(0K=QMcNkRv+sK+w8o)GYRan-x%!pwXK?@ek z6F?Lcr|3P(bhEVrESXbLs#AV&Lpb(^A0-bmTV>X01z~&SGE#`CqD-&P*|c-T>zJqK zUJHqYq8;m0l40qQ23p}rW1SIxfGpx*1#%kcO25|Hx9W0?cbhS34@G#LMk3bAjW)0i zxOkFuHuqG{e~s%dnyostBpvdkX~nOS6YwABeWWmHSA50(&dJJvRr=CNZVxo@U59KNcZ2w zULLTe>i@IOiiTp}Fdp88Rqd=Kg0Wu$x9Cv~8o0q+)C$Fo5DJi;28Mtj3DFS{2v z$M+7C^!%KXj3k%I$kC{#8`#i|iPdW4%#$_Vn!sL~>$1lxrBfQz(B99^u|AOz;)R2sI zZHLoshK)E4>pn+uxQk(gGRy9U#1t7S`Q^3|DSQ;FQzuRi6LJk(L~pC|$wxL5wpjg^ z2|Xvcrld@jmp~wGgqWY94BzMKFdy{UJdfnk&(O{nhN3@r4|zJhsBS{5RE+Wuq+y<7 z7xksdv$ za#Bsb;Pr1mfGRv6NN7Mt+4zGX>Ooq{!OF;ay#we=MG>5AQ$e9YhIvyC8MZMwA3@+B z5VV*;JVy~CFEo0>=m*Y^D6zq*YRO+`3CeL>Fc;5F1;56E#X1Dm&2v}Ln)g2XHuOj} zCy8$@BG5fnRZ>vuQFVgFtBwm*J6|ClT(8c6!sVlih7%~Ztf7X-`5F>@14YgBp@mV# zrD*Q7bItnprbWn2Yg+3oh5os$s`AZhZwHN0@F#7SL6yF>WWzY9S-$Ua@x#%0Yrw4$5y61g$#Lvrt}-iCRSZ;b)Hk1)K&gyHv88vm;9B zlPR>Sn_~cPG*bEMBaRmUD^-2oiURe;-Wa0~`6A99sZG|L8*Uklu0Eav(3I#G1FI#`MP15fe6Kj>odfr>mNB)JbImy5ZC1Z6aYk2S z|I3VbxpR6Yav}w&h`oySy_%dV)Y)ryy z@Ids5Si!srx9+H!nQTHzM?j&9X`{md?cLT}ja<^L-htqav@P))9 z^{AAaU38^qAuYYJv~_KrQa zEb^kgJP;@r(@oG%i2k6ECz_lV93=qbMoN>p6!6bi|xO_HK zRAEmPf2%&ug%Kx)7k)~qI-I{lbQgkAcZb1VZ zto*0)`^u~Du9Mz~$094W6(tgt($uABRm|7xhuW*>N=kusm`+g*ZX88a{#p3hr0;-# zU->b z4B?^_F<}T+5v>d`hgc(8F|inS$d0?=`*Kq5L3luTL$ zSTDWtuo4oi24gxeUAqw*h1yX6!;vF$v_yaGUf;2)AP`FiAsiy5MD$W~z6ZbDXq#4U z23%7jUO^F~9>)0hPv4VIGLjHlY3wT!sukjT=NAHXF?cfh-|pfZ>7=X6KfAA%jw7pU zA$T2`JADS*&?2eh+=zV(rO5}7;cB>;v%2VSflvy=-Tje!(<(B{R(3e;a;|Qbp~Wci z7fLya!XveA{a3?nDZJyP{^h4=S}qycQFC3YgBrAg3Zg&m2`16HzKu=yvP9+D13mLf zH-UB3GN;aQGmY-)9)%ip_BL}kpiJTbBwJVG`?)FL{euxQS}+<)lnJsk5WYd81WG(n zol}}pANXB8yT!-8sV33lQ6hs7&`5}}ny_c@{i9iJmS6Mm(W(rB&Am_MWP1Uj3v&buBw^2Ky?_^gV~)_ zLbk2nJiz~1fZ&wei^`w?0O|jw?PLAF3sA(=+0xw3)ak!UoYmNMI%YxXyO-G)1Tk9= zJYu8l9&mBbWZM-APrGfIo_83gc#|Zuk`_zaHYt=J1C1Y{cCe9-%cY82qV`F|q~8Bn zk$04o zp$-8=oB#dg^DKR0DRp`*>-B;4KamlVF;cLZ5=`Qz!o(#a{c8x)ol|)=$@6D)`p;%e)E;fY=k(H3*%r!zuBU_OwcSST+DOEjOCSco_j zS4H^xX`6|PI?{v+T?_tI#C}`w!&Tl%AEm>!h2Ujz{?`~niJbF2<3V$WN~s|wN1I+2 z(BBdv7LxKX<0(6d@**>0LUf{3Jk=~CA5IvNysZSnb~E6S89p7*Q1Ahq?aa= z2213g?Hmp6l^B=-a@)70|5~}T$+52WAh;b@D7@M-l#KLbAzj)L*2#zXEcfvbb*vVE znr_x5{T&on_y`Tpny-i_=%n&ay&IoTRmYgyW4`HbS3ScZR9w!Ny>lvH9NmS`>1Tq( z>1#1aav#iqdHIkr-b^F8UJ`)=x9+!pF&ac=9~e0gLM11uf9K0yuzu5}>?>CWhF(O( zbumRtkT>-Ok6Y7&6eI20;b9ez(`T{r96SfDqS$=TTXzH72F%WTlz)&=3meZ(%Ugc@ zoF|Oa3KPc#s1XaQeb4v)WkQLn2XMD2E^(i@7aui+7NHY~k<)O)npyeMv|SW9Nz4?& z_MgbuB&ggW2KR%8Vfa|6Q=*}gS1z`&H9uqOa*50#WUQSy5#@)n%s$k|ZRE0esA63^>*FoXol6$`$MTv*mx(} z*t{zWyTpD1{7&waMI&InUhW~=1neRE02eOxkYQs*zvj z{CRcUe=s5L0^ec%;P%?J*bLk07H5$ayf2eK2SyFPQfrx)%qHr;f~rSsj)x*+l~pb* z8V(ouYSI;i!r}H;;%TeR=BK(%6&cbjlDNqhGltbZUPG4EroG|Hp)Ys}=aLs9AJG4T z<96TAh2IXR;hL~{Z;>|}jz!pZM4svOY&a5O+1tCYEGYb(r<-UY^(;54P1f;xy5Ka1 z%NsT%yqr3OzL+;$aa+;!vpC|2CR|=iRo;79xE((9;Wi@39Hx{GppHw|%0Fp5Jk?}c znavTbRY%bosT`5}Act7%bgLNnFuG#(fh3;O^|^g1`+iF$7W8oHTj2G5QmbkgfaP0w z`8$XgBUW$QajoYRa#7DZQd_vSeb zW4;D#$}N>QHFw%R>$A?Y;cKma$0$8uspJQJs?+m0*xf*pSj%GVKS?Wm(ZltBS6y|S zT~CwNT-gQj(zVJ{I^!$(OMOnKqA{Fv-clR!wuCm+>Zl;}DVK91Z8yZ=hQA;FAF}}a zt6v^85dc7L;s41oQMa@cvv;y}{{M0}-11sFAG0;>E2sViD6V=FuTQ)%a+106XvWjp zw>&ahdoy`vm*}KGXzD1Jq?P!XF#Y|wvIF38NKECO+^X@az(s>##flZn1MF-V+z-D~ zNS<$k#+MC$@w}3ICh46_H?mLi{n;1?*YbA~U;w!$(BLgSc%?P}n#4BV&d#a>f8Vp; zFvK9cF+h8sd8@ecM`5VWYD_Wb?L7@pALz^t#mFWFGc$=Na-+G9SkQBnYlYN!CGVfxWJR1I5kY(0g)5S2<&sdkpvxntjd0tfok!=!#u7{# z=M4|=j+h}ndcPb0io;-9WHrx(XBz%6nEBkvH?`sl#yZTcH}B-ryKS^@XKQO;`)iBA zU(>U1uBCJ9_iTL}U9bCth!u0jxX&3IV3BCi1GC)`D!+qfH^aR9zTXn`>ZVHCjAe5|_@yE(of%c`6)vQ1gHe#3MD`N^hTh9DO(%pnVv z9Z0)*_`vjFg1>W^jj%m~4g{ZZN~b%*jTpPX&z1L)NQqcpG@YO8IUh%=2Kd!Qa$yP=;krvc=oL_#8{P*K!Q z+#F^gbO?MN5dxRE&x-GH=8NHUkVM+ri<`HVgG-WZo9yW$K06pygWX_|xMzy3L#tr1jMdO#xsCx;3Z%`-|5S9GCUpP+mI**5M)iYAEi>Lvrw5Qo8_ z_T`W;2<4#4*?oGUgLSs^{nB(T|k4D`5~Miy3WWY}|Wk_z^!Orz-?ALE?2h&^(GE>Cqg_QNg88Cs=u(SfQ7 z(8W+dUX*Ks6gqNLu$00A*GAh7;ewD}W2gQ@Sf~f>6|jk&wk85cC)e z#0Sg{tPmFkTiBy<#@ZB^T#RxRR#Ju%7oc1w?T6_s>00IT@?Xk9Y)xcK+nSGl9)7bm`fO)y_!5Qm;AAwvZ z5i16Iv83Ywv0mBR_%OFMxF1k7P%Y%r+OBQ?)cF0@$OqQZk@N!oG@H}w{X8qJR4gG` zCez~Ub&Yn_B;Gb|$6`ZcHg>^S(m&V==qaHK=wumE^%DwRzz_b}S`UZX1N%qLyw?7r zaFW{z!Kr_v= zieJK`U&c61_1Xeivk6w@OYaSwM&rDxfiD6I9PlNhvegn_{;jwaiNVcQn$=>UUd0y1W` z$Dq)<0`TA4Am*H;f~EI5>AyB_I&7N{v&Na)ZZms(J%4 zP>4Bo|6u}&d?znx*FZ{0d}BtvLNKEssjvcE*n=H-F^iUZ&Hg+?+ zm5=|8OiV1H_&_Jz>W7l5%=d2?!~9`)!Y1AcXJ>9l{fEB9{9{bMou}2J_s{T})C)_I zDz%0}sT*0qurEhHr2o*v$WL8_ROt`y2ghf5z1r)3m>?e(24U}CPEMff8u~=Nf1_C) z2Msnhxxm!$3Eds~JGzz;L0BEMER7a518(x6Z$_cE3&`C#pC(=Iw)k&`xOQ$eauPHi zydY7~Pl}rz$DA=k#D2*^hC6=FXvW{ znF0KcMmYCESF&qiK85s+f;=(-Fad!{qdjVxlNRZM+)A|ydI-y4orX(;lbqg$=e6+< zx!0yHi)wU3C{`%ZGozb;NSp#UgImVI4MFK0xQ8THwObXG&Pi=ckK4F{7g`*kSLNI(WyjU!V6=?T3VR3-BoBPF^^ z1TmM5$3!an9=5gCys97zzZy&L)e@l{GYEO!a7Q z7mTH0P@~DhVjOaznIe=MoIM$$fc@ZY45XhfzbTy3=WI-kcc@2v$QyVgqC}CBE0)ES zuNZDeQ9E|Q4P2feMD@B>Kov3vSct7;1u>*mrBB4GO{2}TRR3FAb(4waUTvVVUkbN@ z61iMba_NdMXmI~yxrOoDYb6kShlDC8Tq~ET9JV+SqjN8De^yrvxP5NPWvHaG4u3-E zC$5gPZ<#=2&o_k=TS0&`heraRpo;G?&ipjnWL|k_(MrVx!%n7!PXBo+1`x_~-9(M%WC|oDFA-q52i(#2ggEB}Al;eo`S2MaV=J$i{6!UD&_F}Bnn#P`06h!%4zGL2d^i|p2;LC% zPvAL$6o$=zf|It!Aw|Z%L{cuEne(Y%dmUNDAIe~$au^5eP_aOE1c*)V=ne&TPIT1{ zAFTfj;2atO>OMpM6)0dfzy@xFQq{+{UmCJgCpB>_BG?c$dYcNi*&J9a+bXIzK~mUn zTZLIJ9cI$gm0?Jru}r;6YiW86f3}dPYBT9}NOYu|N*2m!YsWS4B+St%SvCc7VIciq zOB=GiZE(Vr{J%2|M`pL zP?a#j8dMRNx!Nc04?TV4tSgK4Z&gu~#m@}-l#(h3-b%&ck;1-~EOn|)|FDqdozTPP zS;pE^-E?(D2( z*?SeKLHO)A%$?Vxq-{{L9UrM7gLZduNgNakwnW*V+)MwQW1uzUA$n_waAu$6?OhuS zTLq3l{{&usFjlH!7fpJa`I?&@Kr1anKx|yn!KkKzyY{BFpS#qyv<=-AJW5m~^&_CQ ze#5#gMt+~kxMBc$59e4gJ9t2j8n7^Z2hNsh4f#yi3Z2tux(%0TT6~$zMx@=~9KLDW z3tr~n^l*aM0lQ&=g1uvTI`8Z-3EHKg2xamwLJn`COfSfyalm+kzm|O(Y7NNl=&(~_ z6dm)!2<51i^{s^Je$~LkoZp3MtrkY-MTf9U8@nY!ZgUtJ#5|aNWu<*@2C~1Y+a7K% zl8Iz5*6r#QroKXjb?v39#ty4+ZVR@oqg%Eb|H#Iw12Z;)6SrYZEldrqm0C5MeW)X5 zn(n8aqgXcC?AfqOrb&uoV&7uSQ*Ryt?({?C{$9H85eILE&;dM(2!hp>6VGw9>UnQ zWLUnQ`m>`u*8!K*n15^YGNBRtEn-@QG^-02t5#EaRKo&0qXkm5Z*BJB&be35c3ubp ztXvXxoC|{nRm}!?Jx8nUkkZ_kXi44vhXxpIMDW#RZ{)`DGIiUDKsTv_VAL--G{79^ z2g36^FqSjk@w}5KJ0rk=9E=cnhX*#`wA~2^RW8GL8Sgd=HhLv|QuN_IA&x?^3s;$F zLE4=f*)}F=%lalbR(YZ*DH15Vuo3_fia?3{GT24w&BjN+XFt9U*&u&&hg;StUHn!6 zCz{cDb!h=EdPEfp!B!LgN_rtxymGK87mi-9MWq({KaquqVKCK(J3*ZmZpoPO`R1Qj zQLmO(L~ybuy3l+L^Cgm)-r@sL-l*pagM5{On$0wKAnJj>^VZsBxZ~P=CFuBM_!Cw; zu%RU;b{ec>Jg}|+(E!|rMh>6ZGz{}(fgS~T@@|55ZpEVp8}5Z@a;yB`5ax3hpunh*;z;Y>KBt|9$KDk>8x4 z$<_BKc+`tK$bZ{S;he8a2fk9Ki*UumGe(x%l4n$PE3JB3X^O+vWVRq?1Oxl|}#_aWG6aPNkR zEofq}7C?Ej-=ON#i0pZ2Dv?Phi?9?mf*O;#9POdljTvsWv^N^GVi7X*agylX0s&CS zjlTnwzD&qGW}NN~C$^>0AQq&u#h8($!x`3RCaK|CGSh*4Pju5ppx(&S$u@GT4y!I% zvuJN^7*%xxEmXJ@@Gw4eitW+Jsz+^kk@<>y4maR7gp=EYe#G);e%SYV6tm^*eg$R~ zB0rfr{I?9;Fo4s<>VRoN0EDy(c8vU>aD&`YC9u^J1K-vS%UgwR3CeK5FY)eZDum^R zU&tE;8eDQq_*XmzA0codRI0h_dq>CqG^+T#N)TJMNkO=^*euEG z*u3OZy(kyau}}Ra{UZZgT?Nu7{jxsc&p2%WYYg3k57TrXzI7we3^ z=NVar)j158c0;bWRJP}Kn6@0pYrG|I{w=(Ed!YHd*zqPtUF@XVaRS}Ry7_&a%I$a< z7>iUtUoA-3FPi{0Q$IJiW`o~@dC15i1?)fLS-8wP-*#L}NL;{wR;yX6>}-g*8@@X# z)Yt6GQI|&eMcd{JS+wP{&~Ae+7P#n^ugyVL&j>j#Su=^l$HTefMi4G9u8l=^+W6cfhSJamiaT(E?d7P2b17isFuhP7T@%vcov=zuB;Jm^dJ zR9HyW5Z2j8uMaKp7p}9yIHDu3 zP?JoA1F1)nd~FC=)8x8c@vSzfm~G{W)K8*qDOd0hja7bkQbAMBEtW=YnL!qf@*bLJ zf!tR^Y7UcQ<)OQ#uBi7{(&cHbUQK8JXC_Lf8fANzS=(oV7h7|KPt@s`2{9XJTWv=g zYuhXLm>u&QJ7qJBEVFrdQh$btW$}mzBmQ=gQ2QqJ5UmgJLV>@u@QULkt&^ni-jJ_PKaxiA<_I+cs#1kD?mjLfm&8w5D;{P5 zMvP{w(Ny)(Ev&Di7x}F>vO(*pYXHWxZ1OncGL9-84AM+^2VbA2+N}=lA|!PP&|d(! z-Zo`0w7fuyj-W(^KEBM1-D(@93`L@*E_dB7s=WZed`zZ$W!)rvSOs*YX^O7gDW8A4 zLeHyiWp>z-@UoO$t6V}9q~Wl{m{b{OL21(^8ebJ+fD?Q??+ICS)X|74=yG&8X~akk zU}*s(3F#tQC(MZ`CDqZOrJj+?y`;om%GB0!?yn+PZH?1Wq*K>4lwc)>W6f;64ueRq z_A!U{fb>MUc~J{)UFP&tb!kY7HbcWk?Hd1UT$wc#hmpQ6V+=W^axKsO*SA*u=WyjGgSks< zZE-@Gvoe*KE&fq0=Ix{_@4+Vx^eEs}2dbufhj_cz?)a0D2M2e|kZsu2o~Be9Vl}}m zf2x*C==IN&L`IX9-Gc9qggP3+8}R#nnxQ@LHfg#g|1FV|j(rr?ymL%y_|p^ec*XF? zwOlwNMgO7V>U20LC%``>8Vkawu8nCRM;F#HX^-cG$2&jFbB?=&h~9|~&Kjj+yRYAv zY0r3p_@D4?&j4R{VLLq^+-8KqYq^`>2*?yKdc2QK5*nHc9(VmnaBDUv9;q@FLR+;` zsnju$I-$;tV8&phJPI5$_(xi~hb9=&VFY%tf4@cWpXA!@UiQWOkL;T_ON7OW2l5d@$wJ@=N8$mACv!rPgtO4B^diO_{P? z*2aOsB8=HzH&ao{H7`d!L0EUGw>6%g=oHsZnoW=eZsYf7>iXHN zbxpj8)Z@15F0z&S#mUZoFd^F&6#V!>(65&uBeF$S_Gy}+(G^CUK=h9Y?oDXUR?7BP zCH<)Sbn2zHHB4_GYaH(6`U_qpwO1seRzypitJu?5_BZRvu&Uq|6P5k3mm|{XugH{! zFgs%5Y64+li5y~sj?dtJ*pMcmdw01bJKuZE0+|P^!kE)`0dMchBJ@|R(ZXqO1L6rA zWWBe3WQ$2{MX#f`N=D2d&AhQXdOzo#UBi`+1+0QJazMPr%n4lLEASy$C1tbCs3UJ( zL}rHelj*EAF>uiaqr_gl9gTb1gkPlb3mLwQ>#yTYfo_2v+dx!6dh#8^Rd}F-h|#tY zXAWCIW^W5V$9AP#3spn^s_ENk^eySYXzx3{h8hGDC@IQD81%M6!;%(EWHzZ-Xab(v~Myu`hdYL2@Z$?<&45Sh{Gr`{l+1Nn~;uZ8{u*x*&$e8&@XOYUy)8AD;OgQ7- zKl{@p>H47XnY&h4hVLp+h1fME-M;?Y?&sg~{^fP6ht^Q=BM6v?!!W=-lKRPH*#jb8NvXY z;TR1h8olzi^|h*Lw}qJGtTY&1-&pv&*kH!y1ZbIJASJG+8`mi5?^4438SKH!N95(g zkuq;6_%wz}R0&REuRwNlI`sueSViLPqdiTHh40>$KMwu#&=n7$WXfg|%@|3is?+!F94 z?KG8HW5ZA%nr44)l%a65rJ&CPb#-|Yw)LF|)O>T|GIiV@ugQ9X72{WbNemjN5OuOw z#p!;3Ka9I5@>`P9!`lEAELuQTalJjMa?HG_Glc+GOmb{5BqW!hlH$CbyNf-jf5U@* z)pAH6I;0(AcGI?wo|gH_4xUYeP(-(vj{=4kvfF?iLBx*Dm&5ifGzT`!<5-gdrv;|< zw+m4DWz!D2OyTRP<5yD@RN&S0zzrVyFEX)!r}ifdQUDoyG>K0V=;2Q6se^qW2PMDP zVAMRAtI$0lzxO{ut716(X_?7p#&K={7?#UGavt3estKo`sCgaQBAG_uqF3x1&y@!w zb%0N>G}=Z?pAFlYtm@eyJyEO=`Vj*B18%P!8>C$fX<^w#2EiUh;_;%a16-}I6{ zaN(vFW%Z#&p?pf?rXbOuRb;bmy zpo!)Rfre{&uOk6p_O|r5MVMf5e?^Nz(fc^sv<-mQ@rIv7+8O(0EbLdC>i5h_)v&RD z2KgfqIGS6#cJp+2T6_C|!iN37fs(%Vebc&P^XW2_p1qLzcw3j1^CEuLoZ}THUli|O z$VY*(38CX45^jY~Rle_M5BFHs&Hfln z^Jm4~vO!NF{8sjU^D4w@=zN>ulRlPR0GLFh*5k;Ot?3UkLz&PE8`hf8s8MFgfrFtE zbX7Wk558wsII{lVXYLvn@T9rp%R+7SS?a?Rv<{SZ*lEc&|Ebf)QnM%;9eLww;Be($ z)y}S#IFmGaA5xE{Idz~edD2RtO1JfB0V*8q!;b;D^$oy+hgO9)K}HPl6jSu zEL5GC&YtP_ID_^lBH}eHo}?U67A5+Aq}xeV1${)-^5ZIfM4D@;_Oc*5rk)n~8_^HQ zbR>S5bK=PKP6_XoziWur;e^x<&Gh(V<{T6oesG?>f)cBDSr31ohY*JE@!%1 z!fO&h6`A|2<_)Rkv>J^HqN}6dYWf>(#mH?ql0vX_kaqiHu<;XB1t?US5p$ltB#^}d zP2S`@divMV_hjMj>5UblUi{w(CL^e+^ONT!HH70be-7yKF+RAzq0v`;)tjHnGBDbe>6~c=U^0r_=vFK7j`Iv&xE!7$c3aOi#=!I*l%?y3HSr zo{E*QAn^2}fApZJaXs1F+sFIlpH`#F=KEW)?>F|JDozO@HPLuUXh`8%Vl8^k^u+z@ z;TzG%5tGTrl-u@HV_ zEu3VQ&>VYWHN?zlrtl>27!wXn72%e})kWm&uyY%x)OvzJaPvp7n3HHFpvqnV&j>Ax zww-w52+5bAm>*gXjV6`KD~{nuUqFqJ<&pP zN_G%XV@3Sxw2` z)Uk+*|2)en-nA7NR4F3#%;bqx$&Wl|J&ulK;kb4GrY9fIiWZe@^-{Hafu^~qK@TS5 z1yhAMXMxb{p$XW8FdYK*(9inf1$_>%9mUwsXgu=RHH0bHUF3|e0R}#4LJiq$GlEXb z4`b-ANuOUj7Ov8G2BhdUX27W$RdedZF{^LO=o%x{Z3B>7rRgoUP z+kk4?eFF>Z4w$DlcuwmJLL>wL8z=nGE{&n>h3)(UEMn&_zI1^&_9Z?CdFqFNAbZnO zNQ8&8G|(&bnfW*+n*v!0sHQNp2PSO(NhmLk+Ffp{ADqN&IOCfqNE^cboN-=6-rT4aIE9I-I|_}1eYr`Z;r@G!^GXeRn&f$t>sLg%F!t)rIqX6GsJ zRo5wbf#f;uJx5F_*|hnLdKV|BtLY!8f^cxlD#HyQ<4xgno`0G=vB3Y#?d3u z4TTR4ii1536-jJN`Nit2s2NdobooetikdPu(lmNzN%|+sqk@42TMj2VDwJZW?Wk~B zM5!@VjA@}^MA%`mfHf`EzJQ^%*ARMPDUW7<-^7?MD-w!&D4u;^sF#q2s_h-d15tZQ$Vq!L!LP`l82J zvTAiAraeCxb;(yUTFFV<7RbUkgRpcic z3Qdx{^hc4xwXk8p#i~vVT!bfgE3QW7hM+^Jnxg0};kxirz%_EUGL4IN!fPX{vS-*CrH_ATj18y=Eh|0|VZc@y3v1rKaN%L6UG-;3fa5*+8^HL; z!ke%iqI|tq8((!x?hS8?J;gVLTYT6};)iEYpg4~h-(1Pxf_!^?iRgK9X6y_dXkbXp zljbd#xwz7to-`$-1F5)#VI^4gR{o|^oA837%ckj^wd7z+8yBwJB(#X@f0Lw2sjTpV_K6zj zHdBygV-AxVHoQC@E_@D+8gX`koL=$tOuv{_(RL4UBvROkCh}g0h?k9uptJ|xCq^2| z2qg(zYH@w^3*TJmU=2m(Sx-!dt zx}8?MaT0Hw{P#CRhCf>->`ZB8h`Djny>W89VZxVTdw5}UwWp3%I^J06=LscPs^vx# z|6ik6n)I&Mz=+r~r7(oi9MJx4bnU1MY>^e)G~P0%^aK+Jvu8jVU6ky&gc$g(!yfuX zpRG%QW_KcmLT!3vPQU|z!57eCVD!n9iy!n7PfG@XcJRe9@U!1v&}!5*AO8S*3NcOb z_(HDJ+LWy*^?*eds8PPRGF3LgB`Qiu!tj!C#?7{h7p`=cyj#kVl$Kcg`WeX+lLp+W z8%I{2TulcgVTm{er<@G*d_6orwDYjd4uu$f8h%aE5p58fEf|~OKd+u#NWpzhaa>_Z z`I!jNaPOxfw2%&gfN}$DKz2y|AbJ?I+3Rsm&4S!C77jDySR}`yw1rTqb@RdE6fX3s z3Q}do^(R)j)(THuUl%@7ZA7lW1xm!8c>q@~SBOmPlRaQk29U>hhGB z{lHP^>Ajk$bihUJ=%^=9X_$W9mHaYIejy{@pZSAIlXLr5pt{qj9;Mk8p^AKA?rWg! z$7=LBp_$`XJqMDS?ubEFQB$7XTpfUTWzEiH{814GE%LM zuk*66GX%WqQ*9c(vK+>%tn^)6;llnF^2M*#kMF3d)?l?A=+%lFweYO&P1=Ae(&;Tw zT{YKkvt>XNmo;cqQ07XY;`>AYpCcSZ;n|?%e+S!I@c;n+cl^1QrGv1&or|fRi}U|w z3%b>`wZ~>h`ri|qA=N?Ds;J&}Ct64IHMEbE5_Ci`fm_xdsG#7j64Ewmr?`_Xb={x0 zdB@IbpMz%UP*Grq)=b=jX`-0^IMhm{m?y zlV}bFY*{rzsJ$9lS#&OC32nR0>aEYU{`3 zp ze*RncQRNgZTE4Xy$xB+kKn`hu}79;nRlN3^mj0Q z=yyW-g(dlBI;$OgKA$m%`KXqjLztk=!er9E9r(SW2p~h&0K}tdV#Gzc&>T{d>5DeA z2;0xV!*t?E0>VY)^a-f1{Jy;S1409;a9*@$X20eT6Qi?Iw?~ zja@nL6+Jr&R_sm^A-@tbGzI8EHS;~l`=|AWo9Zt_hDNK&X@YlNWT}WS-GaS7LNkps zul0!Ccix8oK*(4kceAWdUYTMOROUAV*YVak#DMzJ6)ZyH5bQKmU%&aj2ea9P62V3B zi)Aza5hLL@Z5JgByA^Ad3?n%&U<>RQ(l7$9U!_tbLI&wI0gi10u8tmF38jusPR%;` zSj-rAQSLbY30k$fgn4Yl9%H>Q-#_tWdwD&4-fu|7x#LRpi0_9yAftA`W&Q>pulL}? zvs9TEvT_rqFm#5`a|lSk7dQ0o*Bic%$9nkEMJ`N!m^?MuJS9MkAURhj-~xOBgjO=G zqpQQJ3~m+ARzL$+(cm6+*7`CjbhGe^kMR%Y?_>r)aKKy6itZMD*}^AE zr~OT1K9!raiGZ;pt60fOpFzr0P{I|)L)4jUR?%e!!`E)Riy~k=W%;#xMrc1d5V2_c2P)VJOIgx4Lgr zxmG#Xb^}&{!DWcwNkZkhGDu#aG%nULd23xvrk&T?&fu$|v5-06dvj#5p5vy`U1de! zZJ^C{RwlAR>6tGag0x#wO<=j}LQ7m^0jV%~#x`)fqQV?8%;+ksd9IKeGCak!vutOb z-Gw!-^iJhY524{)Yqp^T2DbuZnYjc1s9BzuTXy-CbeHL`97r8JzKAxZxFD>OU42_y?= z5c#lcQT(=8)4iGsE2h!HAt?3?VXQ8qf+HajcPteV+#`gpvl9tdb5#vBYqZExi zEhAz#96juVH^SeGfI;;H0qUcaJM%?NIKryvnzQ5=z!bI9_HY)dky7W6YJonTQs^>h zv8N~VGTvl8nWZT@v}QbVP0B6TYaxleFjlv`=*H?NI*WK~gf8%Sa-PsF#B}Gm{IOsN zsisU*Ta!}#OM-GI!BlY4+FLoR5vN|kTw$u{5^hH(c>nb`Z;RFPe(zsM@-#5q%>)*` z)IL)G)i}=cezI(`V|~7f%dIILSv}YBrn@ju1eIrtNsM%CDVNTe4v*@cfWsR>-E%Ak z4cC%o?W-?+oCbs_#7e)m;)3?r+LGq~F0kY_&d%C;_kfkhUF8K&DgHf3BZR#9O(JgD zM=B@InsVxnH+k0GwM2VE)GGewfS9m?2(p1 zGf^SjquVS|3)x&>*gp9}#{u)SS9MkoXy$C4XPn-&xSF~0@vI{7o?Si~TP%-pSWjpr z-9gJ;NU}yawujw+4j}k-K^KrVFkB_(XyUXtiQYxqyeni8xT*D$niRjOe#lMxoOfHO>g` zW-ct6T^pCg9^JQx=$$7&rzmd2u)8bKZ1&OP1Hsu7`>kH9$mt#9T`=k# z)C)L9%yX43xU zdHjxPyteNbQ$w%hHXUvIMb^M8xo%g&Y_i&GV}Z#&RHHjMfXyF|P5<@u34Z(rP)h>@ z6aWAK2ml9UWJ3wV)q?W_006@c0012T003HPa6@lybY*UIb3|!jY;R{SL}hbnXKrP3 zE@N}0S6y%0HWYmikpFP&4TX$mvXivUfHVafyV(q+TM_pI*h@i6*EUy*)JV#XyXKee zVLxeqVVANbOSUYlC?5=nIy}6*_Z;f_zkmLfEJ72r0AZvg5BxuP?B6IInd76skB@*x z%(Uf9Kp>bgK<@`iT9nodX;#hFpbYCquh)YYCW#`ZS1+s6clcMrHHHwP;WLRE7EE(C z5$JEN@9h%AnlG3|7_W@Q$RDUER+8d)qe2w^$VJ7t;|%gQ2ChIRLR=mnwF++_kV!~l zU~&Z-jY@QY1}4bm3=)H3izw51N*Rm5rS_^5auX{<44s!&CkT8B5tD32S=el0<|+{( z?F4H$hL@o19QBeLJb@__2K^Vkl(&)+WihZsr530)4-poMhcH}|coU@r6ajQM3rpp4 zgJSXu7(9LqUMYu<)=BJkt82C>+}JGg^9Z_^RoFxIal+_aId&6hY0*Quc0XvGaV6m+ zm!Vo3a6*M)uB92$FLT)lND?h;UPv-RJ69o0mEJI#B#xD~@Dqdzq_PmHkWW`t1}YP6 zxV8kSDLr$Ovn{!uX8@`VhTJOMLPWXL(_)S!cmCsFu#mjBzm)avC?4-J$-PM>s7n&0 zD&z7SmwR>YR{f^#jd#)SpTODA7YBBI$0j2g;yp3-o00EL z>SH=AefGwdY(9#}OV>DO3!X|Pz3rPx+%F+(lkeX7L!^(PFwHCjC6Y)E1P?yLlLjZ1 zaIY713;fDtD4hE%be~GFHjc_H+{RBC^jqC@5R-Z2yJeim*G9z8&o55ky#K6`C>L?| zTr1%mdq}{~NWbTeyOqRy+K9t@>!KP6`dl~0L?ZvdO~OQ)ylWPGCUK;db3IVg$~raf ziY`NcYAv=sZR_48=`ODltHuEnIOGvZLxnZ_6Mf@7zoF~t{H8Y51(o}t?sIMhM03*C zQPG*{7>BBU_LNliv|k&H%Y;^fHVnf`K3k#-%h%#ZL27`)etBGOzUvhYhyM%O-zR@k z`|5RmEEab5I4n2BP91AySO~S!mLYuM)Z6P|&KLFarS>L?FzX7^YuE*|0alw)Y9QAA zXnA()UrK#Xv*{)-TdrI;Gx?pFt)g%q{s&M?0|XQR000O82V`VJSR`F?_NxE@*XRHM z4gdfEdTDTQWn@NaY-KKKV{h!430zZmw#R=~Tj?_5wDYF6ovBV|YVGSX`r6uRThUUr z>R=bUXjki2>r!`#3j$@y#VZ6*5D@{DMLbiL zsZDn2N|XHrtR4kyr~)RDJ(*xB?`IV6&&f~?Ax``UPELl3`{TOkpG%i6QIDSgK(9Ac z+#lD){qye^D~Zz(y`x!{k=)g5#WMDcgk_xW=w%s3AdyH|^L{Hv!bl}&g@l{&Rt(GP zScd$Nf98}KEM-`&L@HodbKZ)2shg1qw=fckc95rD&XJDcrlTF?sm*Y5RzUuBgZ&aI z%L^l_3M(9Gdez0H1IcK#}Mo9eNdaW3#R7&e*h1@9}Xvt zMCc}9bS)PCX{HQo@3@N{+)j??_u=eZ!D_~QT$&B%NjOd*keXjc;f$UCk1Jk*IDzZKs+gkcY=j*`z8_%+MC3hVeaa? zm*{!u@M=gb5u zGckD1;64l^PW3Q0XhhMJHMFg{*sY_W$g;-aIFT@K81Hv3-cgt(z0;tc z!lJ;`X1O3B5t?Eiua~j{fn-pxWxEBt%=9!}dx3HNT>PSs@U}mSL7a=*Jj+Exsa9Z& z4c1&-V6=LH&g7pSZemQlH8(kibvN-=te(^&HxqBog))jZ%xyiz2EATrIzp^P6jm6f zdlz8Ro1e0D(ajsC`^_kQbTgKZ)c4V&#XY`GLza=oGWr)38@&_V{^>L%cb|`i;aA!uSk9>s}j7&*M5r|VJbG1->ezKu`-q@BJ+fvJR%A1CEir8SEG8u;UWQ(@F zd2JYOaONYajJQYP^rMF;*8Fnrc<;0_IDK%?KXn=k$x|=BhH0<8fj8frfjKj5Fz?Oj znEB2e%zAe|7JXocFF%-vckDia-NKKs`m_01{`nHD{(3RyELn!XEnAPTH|@ZZ&5m$f zvjUEr*J0V#J=nH&J9cl`2-oFHApBuDoOW!1*B$}({J0zLPJ0mMyaD>7%b`zn#E0A5 zvBW`yoo)`BhY=9KGLpH_;`uQuSz+y<;myM>Li3T(}+hW*t#Y`)rzWy(gZyVi`Y zdG!$FH)8YkW^9tTVw-|19S~4$pG&2n1zWFmVs}3EtGZxc+KrtWYL|CoPq`M(9wK-P zUEs~QBly5RxQGtG&G#Vo1q8#_*B3s4!HD*8!Et{tobqFFI%qFaLKuVx9zaZxH$sC0 zAr9V;gb;ru1|L8~Xb@tK9YIp4KT^UEgFO-sCg=p%&=WX#G#rP*qTqWX9)7WB;d%Nz zj+{D+6Omy!8Xbq|lQB3Q7muUyXApBX8J9wQks9rfD<=;l`*aZU&x9Z&?ig~CjzJ+g zj*Nt8$Wx+Fa5fZ0=fj|+@0ZS2OQ6m=hw}6UlxLrV zYkVqP&gH->MFF3)G6W>1A|xdZM=#2#WZ-b740|t^ASB}&{H_!uAXA0ISsDc8D-nA+ z8*v$#h{`HNM7A0y6l$ElS^~H1a_m#oz*SKXw`(`yQCtPr+&XyW)xs~g97hT(;CKB7 zybJ4bK;4WVueQKBzYT75ZQKjmz!tW_rKAI%s!n*8_QAKP72d_|@GEYEcWDd!G%fHg z?jRo>IH>MKkh&c{WqmlFUxf%w8;;R+4KMA)iLy@YtL%i!4K3K39(dLE!tX{00;wFR z?89NY?)z``;&6iw=c<}{Yd-i5{fb}BTtcyx`K367w4e1M2;#|AsR~y(5B8uyQUaD6?y2a zR^xJ0FG`x)k=E7+c}E}es1#`XQKB6{!_6wxHQz$-&2qHY-#}k|4ceP-LEl=3s@?(I z(hZ=qy@g^!4+aJX_~-r?oag`FL^3<<($6s_dG4=oy!GCETS?&0fh4J?-t$@d@uRQJ zUtl}y&FTI@_hR!B;^P;H7rqj(YKzT+1-3J0MT8GKM4{xASS*&wWD6HQzj*aaHVfz5 zzU?~x@bRJ8qKlF))` zP7DS##D9MJ-K#TY3psu$|EWgaWRdP&w&M5G@5w6^9Bo>}weOx4|1m8+JzkuZb?)jAyh^H6sLU*04gN+HFO!So#pmv(d0u7Wd5itK z*1Zr<>qt8_#B4Y|Tge$HO{?}lxb*$$#LMIF{uzj*P?fDxk%7`ULWck5H80v`WXP5A z$;0z1B?&(v*|wESo_HoZLwS?i3QcQ5_AtEKC>$?$^l)+5Hj#_OPfU}T$-0<+Ie1P{q44-Ylc?*@&y@q78LebbG8P>l>V=_^xj@)Q(>v%|^ zY#Nr&*6_T+LKU-D*Qd2sDqDIaiXr(@j=w#CTJF}V>l&+6HT4d|^Yh^hj22E~tZFBz zRKxi%)+jUvFRv?0j?LP><*L&*>lf-O8A!j>4dr<*AG3 zzl)9U&%&nVU*r2VYp`?uN__kMMl9R73;Wl90k>`IaKw2B4l<5N^4g5GyBTb9+>7s> zy|B{NANGt7R{5X6YAW9yiox2z80c$TGzPqd&j+!1g^7&;CL~cKV75TuIil?_PME(Kr zq1w;i9|sN|!hu7F;2#)-V;;_s_`4%9&=bdlgK#0#1JWo4hl7uTIUa+M&`|6Tk3(2Y z94=4}c=luzvSR#Dm~6|NWaarC?l zu9phol3EO(v|=P(PKV@5Cc!?6 zN}6%H_y&?RwKz(;2+H?d%Uj`0`|Vt*g&S9@df;5qj~}ZCu(wT%fJ{+OE@JvM`A}YEN zR^5r{@=nCk_ha=sgf{mfoS2i1Iz$n7lG>*$yO2=Rjl`-hBvXBXN>Wodk}01|tm~og zTt3-@zN;=&CA1T5&mKWi=?SxPdD*ZAhiDQX908H))a4(T_`7Jqo+~k=v_B5#^IA zogV5wJ#@`Alw;oDbIfL4Kbonpx4o5~?{0MV4WM^Gj{)vM{{^D|h4%lvtbhCu&%W^I z?}t|I+4$_N`A@$3%!Fq)+^JG|Z*!b7W$M%wwoknJ^3#9YyvkhZ?cn0#=5{b3;H_yN z+I}_di9~<%x~kR}bpF5~D*o2@VVhIA}NXkJCsmSTm?U zkQmGZfuRAx0c&l4_twkLHwxBS>Z1)rV8HB|-vqq;Qlr4vOrOl@4PyiN}bWucFVkB^Rz8(86Aw8^`BA93c91#6u2EUjCN;ql_6?mZHAs!Nu#F zSWA7L!M?n*s;cVR+aG)@X4RJdGdXo$Zl?6SxM1N^yJ0EnOhs<4RDE8p!O)`Cln$fe zL~kzt_WySO5hI7B8SA}ZkwvXW!aoRb2N#B?0b zE`w9{E&exJ*TPx|a~rXr`|UKp1`(QWI90U6y`qiI(hfR5JKJA8NyWl}* ziYL{cby|4eq;vaL7Y@{S!?#`wpT-{eH}xQZ&Kv)hUIe!35Y*a>kd8j2+@v$`RzE_i z9ZK!6&OV&z>O-WK&O0ixJ^eUM=g%2BlO%NhG--;_R9A_Hh6d<+>bZA!{3^f7|FrP$ zDOQ6r`Z4OXS}@yY(xfRbPMu`+Xj3PycJwtTB`L_L2|m z=FXY&;(az_X50K07`J56hab*;=`SPajhp_v*YS5ky*etYFKl<{ZUmI>k`$PsK?!LI z>6CVWp}RwrmL6JCWN4&e2m$F55D{hoDTl_P2QI&Ft?$3P?mcUrbOybY-MI>sP8C=tD(j6pUrA*Wol&TV2Ata73+UC$lA)v)KnA; z*U${~Keny4wYAk7VO%r0|FLEN=aQ$Ula>9y^}+vl-}1lv|FLiR;gzmB8SxY1hoZA$*n&+54(7ETm z;Tq4!77~jFwNeVcWKvPGWg}9;!eU~RB2_t4j|ONk4Zg&7j&c0viObpWXyl`ILTUT- z@H(mU9(4QPzcoy22*iD-;8uTJ{0JOe5 zJ>(c~eE4}tnB+A;7Saui>BDPFB{Zg5qfAzkWszaY(1nz3h?!RaM`;I8SBNf$g!NU` zYzV*Bl~+z2f23@EPxs&8!>O?jf?09=2*#jea)E_i3FT4Tb>IGj7)2FXEbLbT&v~iD zi%K@U>?FH&DrwiI?yZ*t*T=o}9c{)8!Y#j97!8;^M-URM`;|N!&Xo-N7ivr ztf`OV7^Rnd9ndh$T)YgY=-jbfzZP-j4b-RsHPe-=ybJjqbg-p0K|6@*%kNuZ6bZfB zF8$k*S#ev#Lt+ScHXAv1FTplSN`d9Vgi!T0Ih})jnzu?5Gmp|V^zDo%=FHUgY*A`w z?#^;QmPzIKR;J0j%cY|AA>qYg_xY(X)Zmi*8Q#g^Fo{jL&xxPan8BUPDE6bsRwnR_ zfTENIYn)`gQWfDRs&E3{T|n7WnCGlPsbf+$k-+1!IfjoaeARt>$a8fhZVllMckO&m zCaE%ii_!1!1IJux_QdUP4^HQcga&nfu4;I2*)H3#3DB}-?m^`uX-I7T_+n1ZJP$!b zxXuijBVA>zA48R-e{}Fr~`_}9IhnUQQ z=QJf#cLS$jS*fzzrN0*_B>e*FS9)=ZGFP)x>{vt`#UP;c()t9=QLKdQYYTa8O7J!`)aKs* zrrBc5fKD*c1mG8~;NhSztJwNO=v{W`ObHF!=v2k0q*#gp^>&3ic!FT7GHypP$0UZ- z&`4alg2sr{wFRdxbE^C@kFLVE>W2l6tgh4IMWcXyXlMkn0idZ)Q zXPW4=o&Ph#BfYc}1}Ia>My>?3Bm;Ndk1CuVK2H!&whk)BIgu``tQb5!uYqHA%zuQU z9|rAuI}y&pdSWN!$WP*ry_Un2bCUXri<~SEr+e}_pGy8D31>=z(zg;`qZW&`Or=Xu zKcK2BMdVgah)716hhW#``4iTXbTLkiqi$%?Hn*1)}#6h0E$doL^|!h4xGF!oQ2l|&+gtkR&rF6Mg`c`h0Ig(j0v z4SIrXH7CDOwW8u!KY5C8U#NIltE4LxSiKRU$WFHZPWvMAIJmu^u&sr`U`BQN8v|53 zZ5?aRf%S2G30}&I@+H=tChPjmixDrIIRkjPLu>-4k@%MJVgX;Jt;y5)TKWh~NyVww zm5B=7U!2?z$zgf})d8kY(2ckw$u=}PwXQRZ+^!vK{^PrKKa$sop%wrd3G(k85MERq zrSjrDvbcXJUXs^@RLtCQlX@%Ast z`W}`5QOD^d9Md@W*NW`uyHO8ER4;%B>9K6D_uNP+7AJ% zF^TC}wAqh-KYJRT{jG)hs#E;eENJP+06l%ur&$g|Qggi~ErUOw3ScJBefv(lf>FM~ z&dTjj4t*kXUbA`?U!^C^lzLSv^I|9e0NgTMnvt7npA`x{?w?cQ(#LATcSreq6ZX(= z6z;YWDOBC-pbfNy{?Sd;&5MeED?1SziXm|o;+LG<5idglypIu$ma++Z2##N%1~sux z62`r$M#86~D}$zUd|mw2ep+J_HYHUhu~ZfglZ3Na*acHEy3UO1M7|()=%J4%N@_{5 zcX-vJjfgj(-CwIzKPdn*cNAb|!Q9ZR@Mj~=eNn14CKkqKEfYx-np+kMd>D|JiWrXw&L6jAGtZ|8Lw^ZE3W*#mh%sC(BN|+ zOi|GDuD4yao^ghi^rXwG`%a*6!G~}pj5tt}XLh>AAt8z9GuNL*LAY14_T%p7+dhGg zsApOPe|UweM9KT?oO;(1nec3-kUL&Ssz*jHW-YWYEb68WiDe+0`J+oKx5?NoHju9j zPuEXFTNYjLTm^{Aa#t}#OZA99SH+hU45UDT>SSI+kG1xxh!fyFoq4|%VBH&2H$X-U zrf{2o>|P?1mOz;GjceXZDxO2*Bw9fix#>@UTPDN=1QFayKi0c1NaFn-I8bX6&WXSF zN)uzvz@Z9fuIj88cQz0urEBiQ3fF20S`yUwRS-6jNAHt&?n5$52x06uRTLU#jLb|2 zX+X6(h7B1;R^%?f(Fge-C<7|(Vzs&Ln5b06G}6h!Sd!HUvAhb9Hww@DHjD45mlW4F zF@mgTt0va#jp}QEs(GiI{mw~a`iWN$0rkx~GZATSbFcHH*jp99v$bVj%YmHrIL=BlGu{OLxPNuv*Ngr(5BUQ91y3=iVE-{CK$k zJqQ_3Z2Dz=$MH3euMRB7ua2@s=zud)QIVfHq!r+F#tp<|8GO?i>sS81c1PQG!^P-a z^k)NyA~V<(as;S&q+cLP_M%cBw{LhDzi7wH(^IK!W#~*U7^fJ13BizhWu7iXTnY7_ zhafg>?$!b>=jf+TCgz=&f0y) zETe$~WvPlX$8s0*5yypX5jRJ-wKlgt@N-}|>f#scl)<68ZU;RwoGB_EOOe9I^4MbK zK%L)t*3mh-V{sTbFUS-|wo^J;39OUsB%0`KX}sGv1?%K#@?@lS$=)CphH)sui`E$q$(gw8KTe-E&J z^Ih_XuJsHI5r~i$uNEJM-5*fgYavP8A$I&1yl4BnG?^iIy`M3YM7-P5w<$Pxzuduc zH)#JF^_;bfx6tjD3&A#b@{!ImNVXm{cCozr4Yk_-p$_5ZBbMtQIhx0U6@0^BrX=1Z zUYg4JG`^G%8|B)AepZ=tTV9zjH@NJa1Bx$%!(ul(ZpZ5HsNu)s5k>W(LVp6_-uZ&8 zt8X9y#d{LZdHBsM9L|_e`G34+g{~>{n0%a#FJGt7-*b;`(~LmP`>Hty-8PcQBbVW4 zz=-u63+q0ELqmnAM^S$d!Wi38x`RR9Mtbo6&$S1;90kj55xB=DmV}k|ua<5}-p!YM zveZ^;Ydc^huI#^lrmsm=MYQSl-GSQc?xT%^<4<+|ID;n@k3M9!_v$e?B^3*NNKY`* z%uL@uIQW$5B)2wgtY+|}4L%h}z0tA!V+YlCD4Ou@zt&)9jAkM*g%I(g!&CY@ZDU#W zf4jIWbv0Da|0IasEBT&0#T8gp9mk24Ep0m&T|Y>@t)2YX=@)Wz)~8qpkE-|$FL(|_ zV)8IPhs@HhjF;|vtZ%4HzsXnv_;_(78-fT?(`3$xm9@%Wjmr(h3WxWPQoXv0H};pC z%Uu%|p@yOw+^%_Zd-z;e=+b4R47q{8;qQ(~2k~{JZSknXfP;8Hqnl{ayTGDErJ23U z->a*GRM8Pf^_cw7qb|tlxhxI-YHsn3*|8kKlAkBDei*r9Gv5)%BeS*gkoRlS(OG0H z5r1xXw-0)DC?XiNI_RY265CjW?NV>TP^^!p*WGNpSE2+FVx4c;@lT-f!f((mGp3K4FR{{ahE5laC1r3HjaOlYbIu z$#TTXBnpj9;$_beb$Ftt;x$lMD9^OCo^!u3{V8)J>qt=HZdZ5lHg~w(z!4zQmMqSw zGjw{K2U`&zIH(gf-wWz{Aw=QJf5D$<2r!?<8jy2!C1)ZIwvclQ1kv82ErgU*UWIlh zOMG2Egs!?p5UbnW(PbcHmfrX)Z&^jmyONr3UddZ7aVNbQ069HTi`74`$r?Vhl$#d3 zw_KWp#d5KezDVcdPp#7b7AWp02hC1kOQ4=JIz2(>-%b?Y$$?RVE<%^rZPbTr%l2{~ z-e>#>RKq()xvOT~5WnfxUGxRWyM@JSb%>bdV)NP5ECa1smR2q~L^Q1n(zk|Y3+^3L zoPvKgfD{`wyAb3n-gCN+KSd=Som)}hy&w4(K7QqPVoV>R-Apz682-&kdkubF}xo`QL$$R!&kbIaujSQTE-EWnP*S(8WOWjbxG#0>#WQOF&Cs7Rk5 zjzas>$47d(@5Ef!@?X`y-=hGuJO_W+41B-e^N&2lT&n{p?Z~P`Vw+m17Dv7QYOy#c zr$k1xeh(MclqK2(WD0YXn0>EbX&}q0``RIS9jYlp z)J~?5KkC6Z{@2k8H{;Z=#_9kDS!ik%{pSVcTpF5rPK(d;QbBS)9vL11-(4JIz`(Ag z5t;!Iw~k>R5~$~#&?njy3RcecMl>n00$RGhukRx1zrs1ZJ~#WyqNZ`+(DKireyCYaizF5yi0x3oM)_RuSu+v_66Ie-V&;O|(UL?dyK_PF1>quBJyEw6)ugrZ!iHHVs zPkhJv1M>s{`VH><)tSw-g4uBs`E*bXk=KjA(=@Ym;ugMAmCZf@qfoJ2$i^3^Z-4^YupUe8o>G<;(in2}?oA{0n}_MDZ>c6qm!m-XVJm z8!nw@BIS8kqdmOu;msP#2K?zD5BjZ5oD6cknnlx`dm(jbI^ymvoLZ&pOu}~WbI15`+BS<^gON#8f&-q zC^z{sL!1?msY%U$Hu{1{nQ~^&ch9%;U$Fdj47;Z592a+jz2K#4@AkUwjHBpo$%m$e zi4vmog!Flb9)SBanE!#&N>Cqvue-HRn56f7`BU>|Rm{|e!M3KV*rxtRRj>=j=+^cYUm-my+RZ&Q z8Mh|jj25$}X48yEpLT5Ar=u5RU-7g(St@Ob7e%xKqlm(j?W0~D zbmQF`Z}zkYX1>k&wuXD}wyM-z3n93NxjZ}jMHSt5#z5ZX21x<=I6e9y9C7>=;WTs5 z(Ab%726*z&JEKC;d@198IPV4@EiNs!dtsgcA-|D}$*7l5QL-u(eU)@BD4uO3d?ebzDKoQ7HJz%T*bOlfw15_w)#!H^;z?^uPWI1QNIBlXH^5RWOlpmzIB~7&-ew- z`}omy7zCogu;qaTmkObP*}1F2ptxkm)2B<4NRt=8Zt9V? zSKKOO4NWY*8_+x3pVz~tR237rKnhmBPmdjyC|@}cV;~JeuJ8Q(+5LTswMPR~SZe=a zlMoxhc^IJV;(xe*x`4QoVU6&O;d;03IY2{UO^m<;2U1_k!w&8T=fkY12=A zo0vJIgD)VY&p0-TxNa0`-27u{2zs;#1pFSmZuP%}QC^URgEtqAgwIUjEcJZ#&{&Um zkCy)wh1U=M{XBjBw%DS}KKycB@?lnDy&n^n(MbKDm*vB)H)d z>AR5QiJJDE+35iyHe*<=w`~KW=g6I<@TMdFK3R<#Jl}qwl_ji<+@kBVLyCMU->Dad zXWnERu03{PnGxd4LlIGDhYVnc_Me!-dy<|VGoA=K(tZ_KJcWW!m&|Sn4{YXTK9^g$ zzaYV_dx(7GJsyif?M)k}WvLMFla0p@A|+RcYKq{DOCw>YL%WK-sBPpxHU|{3t`R&K z|1v#|v8zj)*S?dvn2+=dd6V-K!MquQm1-@Aj7k(M3{UmhS^W8nsY!f)ZqFe_N%NIO zW>zh|Q#BSHPgM)YjJ}Tlpn*#yyfEuvGERyj!fWz3rY#vgY55k}M)tQcnpMl{?;h*$ zbvAVtskz#_tSp)@`gnx^h&1*bR2EhnABYabH|| z+AMtd^|#H~hjHwDK(ogu0Z}&{z%!1o+un@FLOmo|U(bm-=OivB|0RLdvEf7p`SiU* z&unb2yQsVIB5{8E0W@ zTZqiM5B=21Kf_d?%|+(k`@a;g1h}(=ou~VtwUSdF^-YayRR|O^gnXbHh01Qq)^sPj zoli47#4q6V<8U`6lkAf`g{rp5UQK8p4*db1$>ZKS{*+-vRZh?R>M@BR>@@gS*Ffa-QR`Ina=*=x#ui8}=(?$TwxF9YxX?v6P{Iq4c}{U9c462Uo4@ z$5*?$V9D>w^`jSw`3>Ipy6J7J3F)|t_qR)Y`T~Eq z66Cd6FYWHWjT=62<&09e>9QK&ssoP@2i_P;K8O;r+ei$0e9+0JJZeC-V zkB|~zLi=@fIJmuNH#>wkPZ$svCt<~`VV770^Y3R%Mmm~TLXQ@JyMD3-(ru&hIdvsp zOA$UN^7JE<1u1Bm$$!w+rJ7RG>?RkpW4As_H|uMf&{>^~HX(S>iI3r(N`JAVWfW}T zPyN@32`##`-O^;s@e%X)94-oDBDw|!TVm#`9J&TfOGAEEYJ!5W+PVfAb31##Z+~6B z|8;qpS9xXA8o5ic7EBPiFq;NMgy*bc#CC)WUVxJ~U&hrK-v-4kJ?jhn@ zstqrt!$?Y=$9=7X+neK@nZZT5cZPstv&6S~Z>nWKKmBG^VAP5yn~4T*xns3?WX`vn zD4I04YmT{fM-;F}}8eVZ{3VrA-|D*QsBLw?*MMr0Rrr*aM? z6xFsDP;v6bDBO}ST57Qh_a^BCg|vAasXDrGfk(;E6$9>~nK`$R>65IiFS#29a{h{h z1Qtym*QO|p6D&EME}0^nPECf=TRT{aKBhdbs#Y?e(&?MXUQ^ziIAeXsPZW0DBiweu zL&y&Dxg#ycR2Tn=xa*3@slPom@noLl)RX(xJguNE@CfMf+ey^Y4)nx(eFI0uOA~m! zcVYZWljh$wmxjv7bT+yu2s4_J+IQ`Tsz93wZK*h(WJI;(uAjAUhZAXTw$R$K|CPC{ zi4?AVr*={Fc##^hcw-_hGS^nas};LlA(h62b-VE9kK^n@OH*w>w?y7sY~pEl$bF6KnU8Ax9VXfCZbCm+qG3`$vF7s&5rY5mObc)=u^Zsm*O?JU6mOr~7BcTOydh@EE1cn)~*mhvd>l2()MgyQ^-3I4qJ{ zzPF!DP}pIHiIv^`Y{oRc^ShDZpFt6Gk6bL9davGoPM{bU}F)HyUbiqScnM5u*ojwd5oxP779{7eV0oV#E3#IH@Xa4jJ^4j*@iFp z3-^ow@H)x@AbKyTgR^=o6-(7pWd0bTy_EDaaTI|IAHDIzy_HF5Jqv$GwHuH^?7NrvHD>_1E2V377GLCz^{ z$)CTlB#}%1Uec&Yo!6-sXzunlp!yA(x8cUALY( zvU?}gU@sk^#{@-a$1(x-W{hR{TF8~r^|SYf zW|@^=uQPd2c(2TMAgeUL*lwT_m%G`q_uZ<$TNMB@9$&oZB^RkFG9o}YK2X`u9oza?)I1L|QE2Rh_W z_I@3(>q{nTMFP8wVK)a*XH8DSxYCgl#1@;j=7>!e+Gimh97TN{oDE+z3yxw%wv!J~ zJ&=1^#}M31#-vxBcF8-X$r}qtTOBL!?f6MP&RfvZeh!~$Js!4mbkhUhBdGcz*obr! zaCeAf*ylPt(Nwhi9@C@S#}?TKj^Lb1wH?L)zUq%}`brRv)K%OwH87Dpo`|XIFRuWa zWi6FUBuzZH(bf@ht_+-pssfVY5dX}TWahDJr&T}noWTQ={DCVfoNL^%MS^H=3uI>*w{ew#lgh>2$e26cdPgO{Dl zS9@*%=KP zHXG9z+XG=~y^5@R6(V0kr3|by+FUrwU9VM$#%od#Wo&{qzW(c}Zqvgeb)2u92=-s( zbv}T(Jhq)T5@&#=X_~oS*f&J5t6mf>mduohla!ds$h{_JS7|Lv10XIwY|uh0uQp0$ z?86Qwiu8J@vrOI?k`CX-S3FgrlOZp;#UFPn#4+0mDPIp^a^?=?DLPG zHZ!R%Q)SPM%a((?4&@|!N4)EMz5iRInJ0Qq2&qVnGO?-jC~wTn$TVam0^QVsbs|rL z<%`JvynF5%+0Gq~cZsGrv^Fb-y83Xy>cQ=`QE+^0*-Q7zrl}=BX1Q0wG4SzuSBYOm zNWCp)?vKc?>yBoyj5)0`=ehw&|9T?czcQN@M%`E5`8;Vx$T zr6pSl5>gUvVJ+_KDE(gwDS7FjB=mR>4u!_eOzRz!Q%#j&tVd(8FB)!s?GA&Ob2WqG z&O{Onsg3viy11@htwGBm+sJv%GQOV*M+!y`tHA~te_^s>3634_*c_hWY;viBp(f3* zUOAmjpSt<>SPP|sAFzp+iW7N`A8fZfsn+5+T>PDEew(lDSO2Y>g(+NajDUlg;&#Dz z0(54kNKhp$+^Y)R+t%U4U`zZe{rUFl?Tid!TM+SAP}5Q-N>7eR>!{b*>~E(-kT;SM zR1Fd+FRVVCijo~33Ukp=L`fcEuL*uR2*`JMKJZJxC*F({$ zoRXzS$Mi6fuVeYR0&RS>cC?!yUFmZ;5cGn!$}CTO<<@XvTp3*UwIUr*hxXxNpXSlU59lwke7(V%E24BOK7QXb` z%=Z{?PDTp`F_GL>8jLFCmlIDj&RUqU>!v522(pAb76=Zm6sNLG1kj{+V5ezPRfw6p z$}p$$rFdBZQE%Ps&pTkL`id*JA1dffGoSi1DP28xj|tu;oh@8(w6()%dcXF3t>mCp z6<+N}8sWc|w19sX;*1ez1ut1k7DzjnSj$xS_0k3=_%AY$-td`$ZfKhxAoHWRF%19T zzIC3{vs(j6Lt=r+6xmfkM{{ca1$J&?JX0bXeBsLi>5$%ifxaE;q?GGEb4h3s8%LAIX`UZWK>ggSL!lw?m2o+!F zK2V|YH>6R|1)x`04zpyr(ggPWk4djz`r)XzFB{llGdZ(dy2EV3@H^k&J-v$f=&h-% zboR&`A6rr>3^xO=`f0*BOsiY`c~?hJx!3JGq7b=blQSXwKR-9=;@q7v12=Uf**W~K z93LE%fQ0XprFxB@?O1fkiQi@^h-Lr8JggMmTr+N8>4iw;*96Mqvxq=VTn{FGJ1apLbk>HyEBE$ zub$tiT3<|GS44IDWVZPE1QoLi zb1OFk>QLbH3KeG9W8U0`J*)c!N|qC_zB9uo^L&I8GH3MZYsvhcICMBjw%7Cg5jlK- zI8FM-xlbgRpnR(9{?wOb$1<}VS6L~K2Y}nF$1va7$x+ax}T!_+`` z_wt{T<;$oCtUj9FF`=4T0Hz3r#|i8#oOb?rus$1~Wmj zGvov9s@WxTP zUQs9UafEc=D05g4qxIPDKhx?20<~jT*z=<7o&|1?MQe{Ob1;~8%dpQb!h}BW?z@F` z$%aq$7dk~A7%=gRsFiPkN-PPBTmd^4{5y^bFH;0{<=i5q?WL1yr^zCH8&*o}d6^Hqyc`P)jq7WbD82E*on$(syOClK)~an-kRn^#Fy zR05L&`Y=+ihHfC^Wpd|_%$@%hlxJ{V>|Wb7Nlbc~KfWCG{$=wt)fvc$9qeUe6O%x>nmjs|h?lGn=VxvhUjbE)}`4>}%VR zZu>=jemJFkP@N|NkCtvP^lNS0-?z8&qbdqApSBR$DvpY{$X5xzve=k5<7&aZ@1~d> zzHx_%=tiQYqst)Vmq$_PuR&HHkLJqyQC^h89TaSg-!rnEdJ2Rt^(RQaci}r5D=B;h z!FlxABI-!4)Amtn!D}FBD;yuY(L!=P0@ZE z4&DX_aq&4*vOK;$GrJE&Dyp!*9$<|_Co;wj*EEM8+;cXE9|HO6rN-GRc(VAP2jVKH z1)M#a5885@O>J_oAM;RvHis`4Lt1W{vDC~8PK?%rg`3RXay-c|= ztbv5M%8+ks*6EXqGeb6u*nGh_PxZ2iQNX8ztq>=EUiKSgpaF=;D&| zyd;Rnp9dx;j7uT-tugIyRO#kbc0d&QIXZZ6n(l6!jGsa7rqY`lUx(q_*dcy+L&2wQ znJe1;=I;s?92ZG@qz)Lb4K9P;#CgI3r$wD5C_60ROAYZL9FWJ%NCW z;me{J$|*P6lDd2T0lrU&BaVu4#1YLqepi9<8)%m8Ma{&Qu*{40Ox5pul2}QoN8tK) z15$EYI((_^c$4|If@w#LKwv(1bv$ss8VlZkJ+v=xVF7nK6^TSUJAO|+wd<`DY?mi% z76TZZZp>3OHp+16A1~gRFdQAw=-SJ~u$O%$lUi)Md`3Ur+|@P`fav}<0zBLZfu{2* z*E(w@#OrIr5!|Glojoje1!+8AEcF_cvA2Z#-7|XJj{K^L=(r!m;OA$#ROE?6HgHc| zb;QR9UhDp)L~Y%D%fk^9Y|e9eRE(bV{bdR_4}G0-lv*(z&cIQz(eJ~E+dB@1SZz>* z?_69W=i<56v3A-xT9+g#EPuY)oWSt~7L8a1#qJabXA(?9jthZnyc*nfoJ}o~v_5x( zph}=6dsc#Vy}AIqjuR)=B>k7KV^b0?MvgJ*POB*50RF`PmdI&`vwnFf|H9s&d4qX; zOyX*`eIq(EX(%DoC-MS{_xWvxlets|JpHxogNY4FH+Z_>5 z;hKKoFbGf!eN{_7pyXOP5-r zve=T9A!gQ@J>Sz&^|*=>p)K*Z6<-}GOx+9Rdozc=4+upH5cKV%r%|YmfMb(>r>6Ih zBYH<|8V#QyA%aW$;W%?XI(I=ZNTr41JAuoG%&zU%;shjpS;2LTqtM$ixO9(*=tqyU zroWur)N>OvXI#H%J24g(mFb!sHZKlO^TrU|r;+uJ74CB694ZVgPrlBa``z7@$f?rW z1ES>RFG58|TEpYhC124`&zF|hAlob)wMc9mn@m}i+!>tbyHZvQ6iUnVmg*mQQD6e| z+}wmLxXYybM4r(s)Hrq1IAS`{26&1=vQ}m7Uu9K0aniZgdjjfDPHv83B9lK3oJa%& z1f0Z>_k^cN0FT%Sv=JNr{c|53BCOHmm_UTxH#qE+xM zuqbr~yOy+JX>BkG?T)Pf;PH8@qM+evxN1q~i&_vp&#_aCgZR)ZXRNnQTnjfmD3g0I zziHuzQ+P)bc(m)*b@YY-W>e`y0khGwF(gG#cHU)XK(?t=9dE2YM9zACvjy3T?rwIF z8&oEZ*z;r%rEG410!~8dCHVM*_V)BnuH$9pFyDiEZ?*{lTm~EXg>E`gT*K&|35t>l z@s%Yhx2&MlaDHBa!~pEP_WDNGQR_~sZtA~*5A{`Kmr4b7P7R>#Ek305U2jd!zX?kU zX&$IBaEys4aLX62_3bS#W}C%ghO5^D9m2vgYLj&yl>5=mOMWlQR8Y!?f%ir{E)`e* z%60;`LTq+4FH~Elj5~UoQ!^9#yz~vIN5pzrDc|k6IoO49O|v7H7Pk=wBu_Qzx}LoP zuhiQ99<<&s2>Pe~29r178tKilnP->Wc%l9#j1x09^yK^aXQ>Kf5pYq>>&8f_@hWEm zgGv|m(%H+XRFu=WZ-6D?MnK1je(LBQent!dDCES;Se-ez2dh2|RovLwI*OCp6M00y zrJ+*4V#j$+E*nBI%Lw~p95aAsnn{pI-t(1-)iO`SFN1Tc ze=89(cz7T?g;O>~$qc28huaSs^j5c!!`$bPP_o)knN_U*W5a@;W5U_2h=KNdrW)s> zVLz+iwpq?o`^OjyW~Px*D`^>ogUZ~V|NBx2M$&SJN?fBJ=MsT<-FfS=0f!UazTs9t ze9!)%_T6S<_`*jAJIrv9m9N>y5T~%%ihaoj;NK9?rQf6gRv}p(6%w>eXXPvl3=#>V z{UnK*eNyOA%tiiT<9!KzL(ebApA?=}@gU8|dK@zZZt}h#Nhst79DX=P?8pEWZ>2Ky z6jPokj9d{|BhmRwp0P@Ab!HAY=V`0CiWn(*m*sHz&uRxSZd{)ZmKWV5p4?$;eXb}d zDA*`15lXV|cmwz%URM90=kNDjS;np<#t9}A`YJ~wwzz~G=%50Zu_z;{M)+kz3_X7T;?4W*bdQWQJwL{$ zKjz3Wu?|bVbIAZbf}P81m(ogrQt~Mzb&qk1MKjA?ThDD}0~udbe3||PJGUba=D&C# zp=72exV9ndPm-*9bO41?D3d{YX^XQ(wM&Df#zXUkv2bb_L?Pci=oG|ZQ(i_BsG{+0 zFhww4$*h7h|==QtD+HCXBA?%FKA=+&H=t z>11~|W+4?Bp_igC|Eet#?vN>+p)UY~V8NxPb<(zJq9vp+o%bY|!pIz}oTZInyfn9O zjeFmT=M8x=MI8}cVS{sq2CS6T0j)*Y!> zI@$BXmJlW&c)-PguZ*J%+2hoa{okwWn}Vz~y!`p#7okg=wle)*c!j#D>z*nclO2Gp zwt1t8?T%!?+i6>VUO^H=zye*QPAW>=l2hB=sK8z6160lHGpeK-r*`2_JvJDBsMJ(y zQRrt6NI1Q=DSR-|ihuJdtPrj9+8B5RMgsqC5faL!DvQ{L)#`nDq*r$r>2Ob6=Xos4 zTy%e{ckp@)3WxU2Q{Hh zA8g`oMfHL&03ye+zAYq?&*5_+Qn z>z>vTyrV8{$N_cj9aqexj@-0ei#YNYhki!!qS>UuhZnl6##fEG4&n7O+NxDV z?mK<&zjoF^s22v+l;+;(7_ENa$dqJT%_}VPEhSSo7Eq1WV=2C(g zQMGhJB*%&f`1y-rmJHkDfa$pK$mUG|(?$n5;_BDZV^;0=o0%)X%D_EInV8oPXzrV? z1vF2z1~1eYnb8JUW7F|hHLxh1&&7>aKJtW4Nr5%92H%dP#p#ecV$A9$TYKYlQYWt^ z{sPAvt+&gX!h3{uj;G0M)?;Uu)2*#?{H}LH2h#*ukG#EPOMr6Y1V`OtHyp_Ic-GDR zt1}m&+~IVu+&MDp(CMu*R0x-A0<}Zp`(Y}?-7k|4pEDl5WNi+Q-+}QW;jM$76@z1J zCG#iV72dduz%?x&Xk-QT!=TSOu+cQUwsm@mU8lIN`la*M?|5%Rhp)#b@7e(tw7^o1?Or8xQhVAsHp)gM^MheURb4N?@S^Iz`9 zv|ZiRAnfdKo~}4gH->F9HBx@lXdO%4l=so^hcE=54o;_dh~+c1*Iuc8mH z>Op*{>8S%4WQE9?1vTA9co>gHxf0CWmO#9ed#@4}=9yyw;m{20$8 zKM29fef>7*ehAp|13;2tc!UoF%>14Cg55LVYAizM|Ah594w!1_S;!*O?hO7o2{sQKh>lo z{7g8eC>4cASpR~TFgNAm!)9i9+Od|6>H22Ay+XUp)>t7kOSo-vZL)&kV5BZGJ7GZJ zSE$;ys=mVFa=!u2Q%zkz`?Op1_E8WE%?lrvphC1eYq*!2DB-ZPKPya8(6AycTfF7z z-fMz;`KIu#d*dxfEkQ%k9b5^)-IL z;eLY;%HF@OXS8fOEb1ui==I&V;!C;I2T{dhSPHo}q&|^Z$!9@j6&`wtBJqTtaqSf`LLH7EuBgn%7Ze0|lIpq+R1TVkf=4+*6mk<1>qTXq838z56!OOa5Eq2eL3wXTeVX4HQ!}UR9BbQ5ua==jrD(;xakE@Q9A+Osx*{>?*N}^7e zu)r<1{^5T-t^e0tBp*PMZRmoXOJiMvB`~kqFgDvCF%3(tbUkH#h>0JQVqXU7|L<7< znMwW|jizwUBl9O;C9>wYy#5c(W*HPm*LG{%2@u>RI0ToVgIgfD1`WZ2yEC|JaCdi? z0E4>|EXbgN;65-gaCqKRUsYHC>K}XeUh7`hs_IrEVQ|w0M2L0_ySXHP>i$f^pv;7x zchb<*8@HUb0(x98v57tG6um!HJzVr#^y|k_%qkmFk4=f@Qc~0~m&P?hed)GRqxkBB zou*`J<`VryqQdqCL9W!?sczg6wg2?12*-)wMLyDr?hD9dxxLJpvj%`)O6W`{^eHk5 zdZ-V2kQET2?AoLX*mgPj^J}B`**@U4m3r43K0V-)KhOKT`T4s3S-u;xg}U(vo%CHq z;EW*cG{~b7jni2t_P6onw41E#QwwBv za!rnXSD_qpRDTVV%t?s{CSvLe~0NN4Ke?KSe4ChHx&$^E}uAGcpd!CwNYJ04eGyRh<$TMq00r$Rz;F+T5ovGQqD!0 zaV=qcv)(ZE-WK+NJsIRJVKx)tL9krEomV9(xMQ^9%NCZTpXISh>$Bp9#Eiot#%^=Gg-8vQ-JPo%kY zq9`|r*OAXJ?XcXmx?=oDXfokHf$%YK0BcHgig)fWZrv2VZYz!?_t%;V1@klqk;yDn z*VV%N1`9$8rUo#YL2W?qkX3<0}VPgGC@#oKp&`;4(1Bsu$ zs41m=>ETmcGq`Zw*@&E1LIr!y8|-zx>!}-^XppWyNpci(VqebB-TxX@%#7m5Y2n=D zgjukJX_&X1*^M5$Cj_l>K7k|%2mKc*Kc9;Sp+mwxQAl9Eub>pWY3cMYOh3eLeB-qO4a2-%$t$#T*{k!c8Fp*-psa zmq+H#O5f>ayhU7JCdIq%wMKNmc(k@bJJrW##7R zDSZ|6g3^95G87fDvPpkbH~%lL<7EfuldnfevsIhE5QKEd34dks9^EaB=8_WX4_Ig2 zz&qHc(a;F1bQNRGu3rR4 zZ{Uu^&LCNFJJ37aUKt=-7PT`cMKokUxgdO&w}AOPW>G_6jRAQhVokmJ7&~a)IXz*E z&d(2!jpO8b z$nms?xIi!2VWlUwcR3?+!As$mDfbT6uZmj(Q*4Qj9GvVp{y4HXiG?CQF#8LUd?{xZ znn`e_!AGURnxahjSwAu-9;cwSHb0kG6DW(nPqR?>JSx8s$_Yi!#RYeBio(0iz?n=Av~et`y;cp#VG)eGHh&Z_Bs*0S$BUHPV!A)^@vx zc)7iylhO^-6sB`|V$ft?c~Q<0>s;8*B8L8V5EPN=iePv#=M_gIJv ze8V@w3JjUbj0J>yjfcs)Q=RU zm_x2v^iNh`Gh4>b-1}N>sO{e1N$x!fSIkNtk~3M!^8Ye(H+g1A>Up9<+a zdF%3YY&sRp;#t#=bTz<>)Pg8j#MAQC$#SvG+(s1D=Ktj*ki#$w(*5H zov-Gc<-G3-t|j-CIiqoUY+h0$AXCt3w~PEcTgW^9$An3!HyLCY>dvrQ6Qe|^p40S8 z@BnHgTMt1yNf1-PMOrg}L#1|wg*aYrQlG;Guk^koJpNwfygvO5n3X(oxjComJ+vrD zz+d2FP|>6qrHyCMXsanS6%&|=IR``^Od{>j54jo!ese{XB)qjht&e-^BJ!w2!x9SH z44Ss(wNPt$vSKyR{a~OQ-q_gd4f2^CTT*xp&8AD)vly%W+7!BY z&37Z*^`I9r$!&Z$VK=}0ep3lxgVgJD`W)avUb!4SAGVSH@SGlyH=5^_l)Jw2a1MBg z5QPpc-lBehhD_p$x6puVcIu+4_izY&#SuKAPAg-;W@}!_pWGl|e_Wo-2~)PPL^gbV zQ2M*=YUBqVg)~P=NY0tL--sqSuNO%jBQR>JgedNJ2=Gi#>fDZ#bsSZhhh{UqLJ zq58r=+dbU>e(Uh}<4Z3{j8|Mp-g_4=+-#&89{oGSaQokEF)W!Lgj7izIx`Y3UHeyK zf*9Un4pwI=7R!DOA&Y7`sr!6-<_9;gBju+J#>`ZSry^9*Vs_BK;~fXBROP3&=Y6`D zyh|QU)lio;#r-*Z@L$fmI#V!JCC2&QlZFrPY9Jc{D77E{k;x}eeD{$ui;DSll3rP_ zKs2Mje{If31RArOADU~WO0&Nf4Tby8$EA3TX0}ifmIIw39AU)3jr(x5X1Eiv=}?}t z3UcTP_BS9Yu`Tum#Tbr*H+5h$SGQMim6=pE&=S&?nopX$t3k(*gJQw>*h7v`iIM!q zD@DGKWOyVfRCOo2-c<2>MFd^}3dQQOm4RGZ4|$`{c2WPvt+#-*NJ=bN9}2$bTGr$Y z@+D6OSyYNgP4p_<;R#ET)zo$6_&X%+?$cg}F&Y~c+R8au3zQofT7SPoU9F>CwR>eq z=y60Tf!Msev4d#b2_{6;IE{bc)RP4_ROM4e!11Y=l91h%GOaqfSj)Zp#T9Nr%<@Ne z!u;o9FU8~bQb=X-Moa%tlEXh|tkeX_7_#hK+Kp1mzC$1n5> zlqK;P?lbxNR^Dc$>*3cA6m0>7q6s;>PL^>`Kl7S` zen9NqA~dlWU+XFYfTEk(`ukw)CDjBFK$X<_)(D*Kp+s>-OWViA7mbV$d_+IiwblAT zYiwFj5;td8!c|#kygh=?l&FKP-jTGn=B+$9)aHia9TLSIV>lyGX`N=K5?vvkgr`Cv ze3{wu+vEogwjpXBpjD!$O|B6x>|2mjV`yzXJ_^dPOJ*fEuRI@T9~b{?&*&nW_}GWB zu5*S6e;&9fumI-IQO*1Hi)qt^^QvRWaK3V}yF+$WepbTJi^S5!60Ei|fGNtFJ<#G` z%4Z^#QFEW=p+8R6!YWzQ*gxFUh$K6 z`jn1~|1ojcfklq^-}gB8l*IOnD`Rfax&c*$=+VJl@g5a5#A0C&M*R@|JI$Z}CJyT= z1C%I2v_O<4u3wVhPo})BR0C~77Jn4o$uQq%(88itvgfbsB4vG{s6aT?Gjr*k>`bn2 zPFQt&K`g$)TN4xxEsQBc&XD5+1={>52ufQ^WX5+`g|5hghLS=j50be#r61gCc}XgAQ;Aj# zdi?2ItK@6DW}a(gIULoQ|E#u!nH{4c(9owZW@P4O`>f@*i(mSKoA1wN{VfXR0O+Ws zq3l>ZNcyrtEe)JMPG<*bjFfU8D!%vq)DyUj;cw#FJ`pE=gmMOPLS$=|SaMWA8ZC^{6Y#Y%5T| zn{cotlUcX(;S4MlFDo0YV_tBq_*Fs+m4=_potPHk)G+=Vi#&%_>mk0DByy!{L9jdH z;fRp);xrDyHSpD}$S05peK8V5Y9@%8@9v<7vm+Y@t42IxkjckyFj~5x0JX6~d1Akq zu24LqR*1u3K3sShWQK=FxCnqfP;;93HL49{peAuTsVfNY9QSdT_u7o{a zOy|(_G2&|qQI~D(3-1+?Etts*)IXs?$V~8q&$9OslNZ^V;0>-Z-|9+T-x+>XGpy>1 z3@#oe*nMgCQ#ealrnIB+H7xZFZ8b5>;>P;*>9#I10*F3E#sJS!Gqrmz@g z`I-s3p&dz0xM1J=o$e%1$Hm=@wne5|k2x~J=zVPqjJGHDTI;DlI9?#DI~ip|c)a2< zgReVztD<$}+o+qLLo9rxt~P=Y!hXw$#_3u8%;2)#wigXk4&ZciXv_KGHSrTRnCR6{O@f#~n^K~IRUy5oj zRp;H*SW3(*a!kLw1i;K%D>l)L*f=823!-trtXPhiXAl$UhJ7(PIdA~tFUo0v`+E-i zxuJE=+UL)vcS1Bgb5SP}K7`CZEHnVQ{@R`I31#Z)37xE*d7pSJKcmQi<#n>rWyeJP z#RT{`OO!4s{`@!pA?|f#nH3?q7FmQJiA8Yri}~CmF~yS_k{S!pfwTY3hPsy}$B?1s zlPa*VDhA5Fx#^!xXRLB4sdG!5g;EDRiXz@eY#m!Kc0Y)So}4JzTnpF7WIyqQTsEi6 zIc((_lnvL5Y9Y5%on?V63SqBA@Y7L5$4%Y}7x0qVgF~K!I9NkZh+IX^C{{KL-qF$H z6O%jIK*jqe!Ss1mg(GeCeoypG+1qFIsi^hKYH*>RaS@-mV)HnTva&XC+xGP?{q>u7 zDU=$xT?l;5e2HjfX^cS6cNhPMjKzbo@_pWPHU_SzKIq6FrIORduP7aW(?l8&__lP}edQ@GA_nQhgGoxf4Yb1=RTa^D$-`U-lzTm(GM0Ph-SYwW#j z_D~kkgkzyhig|=!OJ|5NP=zGKzY^(G*FXFc!)L~!3K}wV7Je*$Shp74tAefJNJY@h z%j=aFapBu2ab|Z;LslhBIJF7e}?u#you62a_2{ZKky#gZ3N2x+uv_=#B)tX@yB}jgplTS~xI=9M&z@X=k?XqXlaJ$BQ>_J)kzM z8HwED{S!)EIdm4j{S-O?KP|z6$wJ@hm!#3?HhNm}2ts%j#p`dF4iD)LWVc(vHN@ZQ z>-`Pywq?H*p#OByk&Z^D6Ejl ze>O-|GB34WNSqlF4XQ>#+Osh^pVGBpL#0o}P@|~Q{d~%<=ch`j&Eqi`@5%sfI9Rbq z$84jj*}z%P1XEA6*hwtx1hb6sP>4^L4*ZO9qH7yF3&z8N!mA{&mdVjN4*A0)brE?J zW^oi#!Ldw$VQuoy>SneWjbqcZemXYUtP;#>6Y`DnO2c9ER2AbXqGbo&&I zjI@ylFFu}z<;w~!3Z0cKzt@EB@)|t zitr@pjEzNMHZ1~LPpt`AuRli@LmNB|<)HquvwSS9w>9cphsQWlL_*2y+58{M?8^_B zJ_38Z*LY7gd1-FJ@(ILq!=toX4ysy!cr*DbKwt+Vwua|M)$2BqHh{stXs0WjwwR}z zk$Hc*j!yYkEO_mV3A zw$}907X6YFY!SQsplL2UybzfVu{(_W+7D_g9_fW&5=|;+@@em)jAr4<{B*m}nxGd>jQCTr& zd=jDC0q)ypBQ%hdq_M@_1W+CgzY_iX`pRcspGNMVMZU-#u}^H^TjSsn{pYs}O8PvK z`6*IKizuQ8^6@<=L^SBk3#sQH)*gBZo)0e$?Z-N!VR2>j<@(z*`y<`2gw)EpMBOLB zUnnYvE;=2oudRj}?Uz(%U47mUlI6aU`*No>BXyJ|vzrkvl5kq7*;g`R4nv6*{$LuJ zMLxH|p*b;%QL|!=ey%AmA~SrI_KcphxE!H7ri}1dBDAI5TLEq#rPi)@5fT$Wq?Bmm z&`Y?3)C0WzxMH#UZG!(IOC7#v20?`EwR4k6H&6eVi3LsX9`j?^$bc8qLj14cX!P+` zOQE%}+nBC;RiWO+=w4#2H-ZS~7hczd)g6`+1mJFuehx%-2K$#5Y~5P(`48Zha5!&T zk8`cK<4rTx>WA>F6b+vs9Q*JYK9uc^u2u-Yu{|YrE}om*5TlSFgHZ$GTe-PE-2&R6 z?5>d5ng4L0Yf~Mj7Ut!^N9J^ViKDJBE?w(FSl%gB`**IwSAiiTJA2sOh;MTQ2cgc` zFHg#*sE0k{(EHQ$jMi@aV#&_KLx2Ry_XBx`yqKc^e(1Tg2nANMaI+C&!;*|(HT%Zt zA9f2>wxaK?%=8KN=)NZC8HLcZ<-j1M4a}tk^Hr_8#og0MNgoQt)K2_2zRo5alyr7< zKtnK@cSBfaeb>BKZ((`eN|8v5fCH{pH|kNaKk)9oHO#%bau$a$y~3BPAGkw6sZv7n z6)j#y@YLW0IplD&$i$z0IOv+`D7I%YLnnC^A0o%sIS@*;AMAruh{}4{5$u?H`FJ2y zwv-=(@9*s`3eNY$$`|X#kFb{mY^p9_b9hB9v>JKM2_s5O_`H_(!K!PCV?*R|*HrU`n-`j5PDv#k4tf$smDN+=ohK%(9As0T&&zWBN0vJ!s8Jx1n(F)sZe zB$PYwGFtf{l|4@ul=nl!Q)~R@ishZ@S-B5W@LoYMpxMsqX*m^Vgp3cZ#3xb-~#@DK1^$ zxPH{SHTn#DXjXM_!1}7nm-UmAHD;DNWAw(*4?u(FM=?4K@i$zt_@EWKqag|gh5x4a z+zQ}z<@FvJVYk!#fJKX?%YEyf_jtUx5peUVj5etVaPaaWO5$v%FS;KhgjW0M&lu}x z$EDU)B@~b2zwL>svyypzmQ+&5{ulm$Kn`uk{Ih)~&AY`hK+Z&~2}DI3@Ns5ld`AoL z;T=Csyd+BH#qSwy6NX-78sv=d5}i$&bWSsUgWulrV;wG>ea;l2b51#o@ry%{;)&jW zQKC1l-b%>$Dly9_zf0)zc}du^SKFxSu`^y?ScQ#539ft>l1I;d$$!>IkHs8`u1kL3 zsBxXMWGQ92DX?8MEUIn8J^e1i76&t=Xn{zOT@~9edG-RP;HlTc9vcz9EP<_j`1uHuLexBERs#cfCP%%2MGoVzN4kO=T}* zbU9lChN+Qs4Yl3fm(bW)>z=vw3X^KmDwVn+k^OjHV%Yw|ir(&GpEggD*6@|q zPvdTJ;i4cZqD#x%pWSu{+=;_ETF4l*Pu;gJUWFmRyt;xvWy1gX}jshpTbO z#0Z(nAp&_isDJ5Dj8!`#+X2Yyx#=%>QVy7OxpT0L--=;GE<9F-+K{|AijhMk>x#96 zEG18dly3TT)A8H& zX%3J1&p*47dP`MZ@YYSP!uxgU%76*?O6Rw9vH3&lT=7EEG!7!K0%zB6sr|G0%rdqn zY-SCwHbMS7TRe|=&Kg?d_=%l;$?FW!apyA0+;D+N?`!W==VAW#jEKWXj$h)qH@=Zk zp|OdS63*lT9JUd$0>jhI!pm{@C_<)}ya9Ps5d8WP+Hda{j5hg^+=?d$J|PE7nWotO zf?cVL09`6bA$4Gp(aZ%^9jRlhu~sYQ|Dob!py(YVcg<*Heiay)%ZN;(jwi8#R2m$0 z7=a|IPhz`Wa71lQH&yYZ$b&1l8i8!|cZ==~%!g8pS(FN~i+QNrkMP$gW6#VV>hws{M9cWGSC@b;63!pqGwmBP4qkhg zI&g;|@Pos%_bTK!Te^M^lpwX#%DU@t?trK3FOPtZTv&9OX1RfWaZ}^iRDbqfW=Jt! zP_4;|`}$%us-z1Qn#K)WU}BVR0ipOoSE2VZWY^9T&POb8tDPfmzsC$RfonIadDL2< zxNG&-*~AB-YRE%CQcxZCY0T7pBmQ`Bh7IZ=eaAb4tpU6L+W;Z@h_&G6r?Zmnclb+H zlX-t!b!&15v3{6OnSIjq?wIA}ffpE6sPA_UdS>+OJ#Bp+dcEfOBIcQOkV+ONMHNVc z_U8nVEF2GlWk(uV^W1u$Oc%`HVb#BEq0ZNGf7x)#0X6K15KF987oEDdgU?1o7$grN;qAaZu02X*z>F^fG0(RwwHLp$&ZM`Ft+?D z8WsK@V|bytJ|n6_cmAH|>QVU2L3K5=j*yFWc(ba17TfGA;X#zS@(h*Lk8_eRzs%zi zXSbf#Xf*>WAF##zyZ72kmUl=LL}s(V)HQq##VPh+>fu%vBm z8W3Igre=wl_uWIgWz7GHs^;IJF+2aQoV^nB{CAXf>OHuaS04?9k6eCa|Ine`c*+YW z!eGdgCy5@TGH|XlU$C+o8b}Qc*MZUBx1i0fk;(LJod{2BtnGtP{^Pfpebwoi^NIkT z0NSF1{t^P^*mQM;6pgcMKR)5P^0kURZ>s4sX%ZBP7Pr+?<-C7U6ls^3xK|V6X)_0hFKKG|^1QBkI`MwJ3gT8D zN=*I#@!@Nta!t|ElI0yHHODBY*jtugr+j9VLh}R2z?HGE5GmWSne!DOFuZr!u==p; zDbky7_aQIHL%j*MYp+v08+c=5ak_b`+mK49@IHEM8nQd9M(7{XkZ^)f5xaiI5OCpM zJ8h;7I_#Q$6Eb~B#Zw(LWZ`^`TH`KRzIA!Q)H~$I9SeuiGf%ZGt+92%*S*zJ?*W>U z-bN|^JFGT5r|q(2f)T4CD1y2q7$l7}E;X{#U2aAM%bxna4*upNa=2IfYP{ZhFq zOaq^qV6! zk?f9#B@-)~f9Mp4?*=Y)e%!&WsCzj?Rz@6k$*j<4G5*P4u9C>~5Svg`C2CiFiH&F= zM=1!~bl5tHYxe}$$PgrDUyS5aRtLO)5~P*@V`fTSau9zhNh}bF|389LN%d6Q;4C?Y z?&IRWR~Y3U{- zr*VLp)ghE#&$PQZS>+FXe28|RzoBEVWf3%-=xA!0pp3l*SXJHk@4M)h2I-WRlx`3Z zkXAY+1qGx#q`Oo^1q3BT3F(jq2^A2ey9DWwlDcb6-}nB1zjMzy&(&vt7~eU@9COUr zYwZWOdy^BWvuZ8PijMbSUKF8Ov-I7)Bskf$C?T;7gFoF$r2k?Y`%!9G9&h1g%R;fC zCSKMVb(M?yd$ijf+vHn8F>T-btki>2=9>xEuhd8H;I5{bP%kaw5%6BWW~0%W$h+)Z zS1(q3$LK5Z9=-`4@sI9qjyu+u&zJ_N^_yQ)ChHL;ciA3Qj0ZZ`@)J86lYj}12p&lO7$1U~~^}@OS+kAn7qQ2HQ5?bj$t;uc>k)!J- z&gK^9a9yr6F6Vq6f8N(7&T*;Xl*Q&seatGj(v<(fn7lJqKC0Wx_{q(iH)E(}*`1{okE_VFqo0_;WCPe z^Wry|NFyiRl$U8xVH z@4!N9F7_bK<2F;D=n1=2$AZlPZp_H#cL}Q3xzD5~yoT{m;m5| zTrwkN2f3?dOkwu+qO@MZ5>3_`Ley@3by($rE9ynJPVO7=7&TNZUU#%d}(y_8OWxOfi+Gn`klwmsP(9;T~~QF{4Xg`eboX$|w7^ola& zl##@_s@%D&2j8O;0aE%v>fWL5EF8r@AAVllJ(fr1bDfUPjk^D2FH!sK%E7{ppQ>bn z;scMt4mzmT<;!fb$Zq2BE8!D6dzGBjM33b##+cLVao@j+is2Zj<0O5i_duO0tc-k6 zFTyFhK>3uQ;4-3sp^`D-`>tA2fNR0&fVMM=wd}A>noqgRlgle5GKWkL2T|qmOIPkm zVJ#GJY*5FEoxHON%p(cJ{B}9L)HbR@*^@=yq+%+;@ zW&C0^*^#x;zP+6AN&1Zy8(EE620`b87fk*%Sl=5P&A07k@5Sse{}>thA}T=n?$lG~ zezyHHPKrMmrNugy@69!ZP39w=YZW-EqUBiPmgbuE;*L+VbyUk`RmYB(RcBfIYaZ;| z2>kKAt|J>aId3VK4n3Is+>FzlPCqvv+O%O2=1{a33*La|N`rOXa&{ zooAZ_4nNTT7$dVC+8xmP^BJ3(?IB^}bG8PP^)Y8<`ij*UJqs=BTW!*#gtq5baCzEI zWc(elMUvINSB*4lpF3zq~TeZ47rHY}KaCVgJg@#;u#uYxnZ1W#2Kz59TsG6R6Yt)*GFpy7l^A z*}&2)KPlxtORQz&6#YfL_VFV=Y}D^;z4QnCe^Pax|5TQ_{FAn3)D#=bLM&E;S1t0} zIVb$?-EiB(p;D8#&A98wLuw!Ru>)mHSJ4f}@UI9ciM>rA6-=ZHU~3r@`t4swwAWD8 zAvVCk$=!?_Dr9WK)OOFNoF>DD=e-mBKfIpYO|C5udh98)B0EW-`%YH$f!bk+v)N&H zMupkOf$L&_G#jr5qv5i=)>9*9qhc5;z#>)sPQ|F^L{(%!dDi6)X;)wjXU+OG7Z<$2QM@zMiNFjnDp?It}83;n1r|W{GmAe#xIGnP_6ZK2ohhzPF@t{mQ>i*7LJ>IQylPn1J*7fl{)N4`bzc@k#4A=bDXVtI()gh zW_znkr4NzsQ|g%4cfA=`5!>7?fbJ)g$npHDP@;+QQ*6%W%kqHl_} zG{Luj#@EL1RHE(tw}b>bQ7Z~(DB=6W+}Q+wldSgfLC@y0XU-X^a#}ouDuNYawGowg zmBun+YS;@#l#Fjphi2Mz2o2S(*vwI|d%}WgxTWsO(GZpL1<|Kp=AGZW^XmY$4Wn>8 zjnk4lnE!a)X*-cFgZag^%0HM7eHrs~;a|x!zs#v|?CHjlK;J4!N88a5JEFe!;KE3} zLKFYd8G6L`QSDJ4!y8_oL^Mwqo3qd4K(uJNg_a;gk`P>&NnIb4?Wj{6W@A z0h&AqA3j@EUE}&JDQKHcC7d{rK^no$Gi*9V-li0$lsFl|{UIxO(rapv?$cRsgS^TP zs~wvQ=jdH@{oJ+3_zQL#Sk?DbqOU5}ve9}6lNzkK-KaXr;eR{M)Bl24iz8T|n>ds> zxu8BO*Y;=hL#njlsZ4Bl4vZ|1J=<^X-AnAb0zW|L^_%{mLk6S;a1^LsFJ@PL8ReSb?;JVnyjkk5)1+8Uu^YQ+UQ>Gd9EUlfi zb%O&rBd*O8JM~;$qK!7%CcyjN>%8g^bD`m)|M839ov%qPrRAqLxm6c< zeXi6OP74~9CHUDIJ?3(K9q;wEwThW;UDk$K-+1q{^pCcD75)v~nuB4RBDqvSzW6n( zFK6=Ac&;@{6t$E7zb+@~{|M>LS)NAPhjq;^J~HQqzmkI1E4PC1TglJf3QpD^6?R4v zr8_ z3cGdG%t+tJg(BLl==%n&5qSm|iDl6V1w{o~eQ9Zam~_@1KeVaRA#zXHdi=x9=R)a+BwZrRO((hZbW7Mx#q2 z5zKp-bE~`E#3}F*x9TsS6qARV$MF=e53J)bzHV@uaoM#Sxr*6*-YCQ_Dfx0@P37*a zBi1!>lBRK)Ed|zUR+;&NSj<8Cr_2}hHTHzwF3kn)PPF4Iv$-|HD5JQn^S9*DwxT6o zDeF4uc(SX^o4oZI`NL_uTY}+t8hE}$&OMx)RCQaSufTz=wBdHPc|nWRSrg}_#L*M` zcX3sFu|GKOMJMkP37&8sTzne%S{|u4l(al_T+`0o5g6@TC~Q&sN$Qts(S2OG4=oy~ zy9^dK@OwyGzFRbAI3AR2`eyI@cG>y!&o5WhR>RVU7d#FUGWs|Mez3@m5)}(d?NQ- zoaMOj9H(EXy>@b+xO4@+V}+J3IqqGVfxl!yePHADlFZn`yz zjQ={nZwSM<*e;&OtUzm!8g$ZY+L~-aH6GtJz zQF-{QdrJBCAIm3VQx+0Rvo&e4-~9C<5qss>MST0a$bkvB~5RK(G`@}eO&lCMRiaqN&g3KX|BeRz}>`${UPuwf%gyN*MQ|U5t8OF|O^n6#;Ryz;*R%_sR7n#HF4#c&#j~hAErb} zJGU9uV7&A7*Zr4xWGDOgXxCO~d><7ASKPTE#K<-GXTRFP$Ib=0j0Lekg&D+uN}3ZMHcmW8q%4GG~qqimo^@5hptE=U|BpTM0>yjBbwvzh_#k zAfw(Bf7n)Rsn1K3_scGL0*{wsO84E+pHql9^G^li4HjJD8ylYO!$<9hDW)yP%A}Uk zf-Tu+-{?$o(tkV`y>INpBxpaoLW(w8v8DBNPbHIc@+-7!`13467^h#oQE=`Y>n3k) z($943LRu@Fh5q&~hC)f_FQgskyf4ur&e^)&@W*)GNsy!tDCEnNbbqDgJe?{i^ea_3 z!gL~+1cO45^~G#YC)V1axqcKi3#D^_D((dC&|rtdX%UK3=*y%oC2iGNl|F33H_tMz z^s$T-N|m$_Y;7@IeO*ypQcd6LsP?fw>D73nvXw;C;IpSfY!`9?BbxV<%zq_*>b7oE zV;H5(clRlfdber)igx!$T3?i*>u=(mdlskZ8_|y>p657zd+YjfkAK~vX_|xLJ)ce} z&yquYJq7RViWmFRfdEd|fV~pEkA0Fv+O{tfDt@g$?x*L{@so?ow#TOioFa*)nR+66 zFKPn%u05tu-^9op2&YiDtRcozw0nvhD_rTR=Dul&wJFXMv51#@-8sOn>D6b9*TNIl z=_Sk2(Cl@$YmNb5NU&EDkH1$Xed#04Pp7aGxqEgu>y)~UMPYf*Z7;TsdGUQpVSrhd zq%xYTP)O88Uoi2Nvx{w&Kc>P@zG)nnyfmUAdWznx=0wz_cjZ%?R>5KLm>sSzc`)hd zZq#TydT;Mj+8-HG=afC0GcNmWZI3&`-?F^v6hhSvUUB+8ZOQtfX3eB6g0Y8XllcJs zZOgJ+$V8t-qJinS^VV$bM5kS0?Gfjavb!jhn0)hrF^VO% z#79bt%c@j;le#N$xY8AmhC(w_PgN@?Z}s@=n+B1T($WE2t#m;`5pEOtQC@~>BQupr zo8-%-e6=>d&Uf2?T55l{ShG3P*IK09pK>*S!?=2}`0^zm%gj`OG%ovQD=4OdQvtz?j>CRL6=z~3#I`15 zX^<21zE-hAL&f!o6~DQ6*ADPxr%8NX=3o~c=W`cLi(V5C8AB<%>IhXcjDA`E6mzNf zaIJ%v)#CY%CQFo!zO9`^<7!+k#)YL~F5%f6dnLb)zEj;NM(wi*UX2aalG|@T4-@Uz zycE^eKV4$f@!L3Cx>SP_1?CJjU*30cXI@{C?u~u-g)REyYU2hvS+S9*r|>~5E!uzx z4R7aOUD*X0OZ2xOx&3~(LqI{d zKuhI?QD=&mJyRqT8a3*CicdP((7Ai&y`x(@zinWO$GIlp6JGeF-snWgi zEhF%h8%Zrp%F;33Ua}Bpv5aZ?Ym5R7 z@zkgn-bo$5`(Bb?65J`Mop$5ja2)5KaAEjat7~6-(sMfJgFaGFn7VQN49)aYojxz# ztW(p_XQo@{%T2^@^%Rs{&yL#{^|2aH``+l34*C@xvA&wFT^H@*s57nlu_2dMZX0ma zpDfs;*2L(BrZYyy7ZGhS$9xE$JqIGTC?{x2q6tWIz-8KvGh&c2l#6#(Y~) zSrXqx&6xGtc=A=rZ}$|ll$Q%_pvuOdDA|BhTtw9<#BmrR>_p za8Q36LG7-tZv9qquefF?%4lvl@RP`OOVg!&wYAH97WROn8M`11g&?vySu-1N$&A*+ zc783!osd^O!JEBB9aI^MJr&Q5!``?@N}QA)qfV~|Y{h1%xw>{wUIyaL(a1FE2mBzn z(|Yy1>b#-RV0`kLjGl3mg2BLx?W+mT!Z+7{{FdRg|EZIHu#ri?Ic}|48vc3uMMcUr z1Bc~XTmcH6oR!tTIvdY|DbC{k=P|4XaqiId9sQogIvQ)1@}80YwiFyl@Vpbf>)y2i zW(GG@Ou|T`Sv~41dz%Yf_~WPe3O{G9WD3b#T#gBEm$8)|Cdm#R@RgH*e(646seX>1KaVJWd1qL*&q(@i?Dl3e2WQpz^vh(A z9^R%1-r8{dJ!x86T&iSzG;4F+sMYf1(=sjh3kjLadY@-q%`+K)q`fbkJpJ2AP(^H- z#UGI!39{RtUSN7fPE!Q?+P-))TIXsX`pS&-{-Lwt#;Hr^wY$;w8`udu%_$n2SM8q& zcfGwZYW+4dS6Py{y5zdTs`+*j=jXBV&vjuLV!Tf*EV3pHhkI|6N0Xe*zgbiY?CXzL zn>Ci&x!^R($VWXRuhHLLa7^qf`Yt2?=p9X;xfxlL#nx`DhUUs}-%+*fW#(>F1$VQ! zQ0o@W#6+-SHm}*lnd*xhZ+|(pCjQ`*eKo`AY4ay5yWUm#Udy2(#k!)o*&glC@6E`V z!`bUJ2@e%y8k_mKzlpieBxusrf0&!t?8mog9<-@)OMNz3ktf7cb>i0~@cA@N$i3IF zwrWPo-|LLrnvc%RZ=ir(7Kbx?klsf0`zqmkJJo=P%ew)Q5N<-afI~ zk}BHxmhMD3#KOjALE5a+{ED&uV}^2e^?C30p)*tVMDt*;H!(ksd_2A|x36A5m-i1! zrU;fSyV*7_#`VL?&Rp(G9LiQbx2!AIRDR&|!`qHMq2m-ZnpJ$X&5wivhr6~Dw1oL* zqyy!XYj&SpZ?tGU_gC8e8bLf!DXyL&S>yFmv$68i>6+KR=xdE*rFr{LrRn_^FRJCf zd`;~dyZ^aEVdcKr*ulw$=wo98r8CVQhx;nW;!9mB>xYRi&HdOU6283n9dWotH9D=8 zzw5~=v_ea0bYEK7<@}YedN9tMqd%YLRMqN@m(BOS;&J28K6H1AHx=UC%kx~EQ40vv zn0~=cZkB#=W7d7{%NaS=XXiidWeI^~*N=)n2-fm0Uf*lpx!+mja`C~mD)N_e zb$v={1y@ttv_xw>(`iVu#tY%?`&Rm{T^Vm}C)v>x`lhBW=$bK<3C8Rg%+Ukgm#XT7 z^7mAt*3|V3u%&vxsF1s4eH__U@t?qpmo1R|+VDWoYI2!UvpDk)em@AyCe)v?LNQ7 z)~b5hR6qA4YsC%&>(jaeK{<6=)=J5+_CwW6%@V3$WeHwK6`un!i^BjbySntZwHPCvPNR>sAqNy3}PD(~R4-8zee{m0dP z78kybnPu5d+G_q!w|+Gq4-R5T{t_~OH0CY7Gbb^gOX*1QayOx&ww|qmLsL}6si4Q) z%q)k8H?+|`Nja;wIrER5`cP}gSEa!jlTOPZ3UFw;2 zk{H%J-IhYxB(P>YpJ-GcHDi%FX7R`^qbam+vRpXr$nf@=>@l%$9>eGQm$t!G?Du&h z4u{tc-skF{dHe}HlcGFl|6Ndcf63s(|se2)^LMA_)N5DFe#k%GTy?UE)e&R`fC5{q@X#aOBBh^B#v}yywa8JBLzFy z`=v8sRHg&mtLW!~0$1-GhRBB!y%I+id)nI+V_^~Al&o9b#0XQSl{ zQ~WJaXGOtwynAnQ<(s3il)IhZF31{2?iQ|wSJcq7mVb!o$R*-ypbeygKQB@wFCN3F zi(Z`Ku=9*>b1XB*J`O`;*XYZN(^|%rImd3Ow&JR&d&FVB(^U*pL)*hL{}%am zeUveFo>2d1zANkdE1JxwIOLaoZC*Qd892!fm@*r>t{e_bXW^$pY8fiw!7>u#*Bo+^ z>SZ@Gf9kMV4i$CG=}qGGbua#4M#J*(_h_)A8WT~Ue~_jdcAzbhY_Y9?dECh=e+#1P zThR|?GJ!r-Jv!9`Ic<87Ij4B;#7V zjkThm(Uv(tXCmx*i(DddP|mG~^QWNczBh)ymc)Y_WvGp>*!Wvd_~kF&bT>D?rjuH4 zu(Y&EbGc_K1ZjrQDal18t16kpn)oFbR?5Car9YG z_jbtHR=4I4toU>&z%x+ur+DveV-Fe){%ttEF33is zbdk79v4`pZV;7b9tnDXSaT87KO+nW#vDzoqq(R?Kf}T+`)l9S{%hu}kY!BslE`IU=tTUX+26wOS}$8W~Jd4C|Mzsj=6eC^Uzilxe7DT%13mHZ?u zCDVt<@3k_|);IW!%}-2Vd5v;23a+6JpeoKK4baruc@iEPQF>qojfU?S;L%G4KTss( z#|bu*NLiUDM|b;Azk%0-&mbp(nIVs+V6Sq7B4=&zKg?nsmt%`Z2tJMI{vNQn$TBQ zWeqDlsC+69xem3N3M)Q&Lm!f7N!=aAvQj4U*l;?SDG)*UGS zAt%S=oqUdUbb#C96}g#C#=>rmh^Z&HEX{DjCZ@i;ep5mAX~HI!{%Q0qw_=b<+w9r# z2_H-Fr>iYtzaK3nkjx?%l(XX2s)x|n=wi+)m zP_>Zp;`jKC4QYaM6j#PGL(=x$_#Y*V!3s&Kvbf{cJMJDyy6w{+uNGCmDR)s=-!ye_ zxgXAJj@E7LXw_N2P453_(B4Se&0&)UDk$gOnU@K=xD$V$dEOgDw7wEed>oiD_2_S7#%c3uZC zYi0#HUpsDZ+MKl9kMtb48%UEF#mYH?Rj&WUa@$2YsK#x{<rmbMYZ9J{70GiuiGS!?)YzF-U9Fgx4j($Y={``A*K)H%bzvKr-JT98}YO+}2+kVqSq zO?Te1q3cZ8m>)+v#-nlQ^3>@2D$+Q$L2S$`N?)hr z#x8lQb7wFGI&P@{$u;(y%qZ5?ziL43)}-OZD#w^DJatZAV|IV@X_s{n+dX>rd2@jb zzA&;ZGTleTtWJ~HoL#h}42)@p*wm92dK_+>&mLX0gve?$;Nnsvs7w6CZGtOnH7qh~pOVY*g8~uoU zcchDP;FrsvlrOTqzosPHWTxSWtB6t=r+CZd>-JW>qSC(1Sj>@x4rgRsuq{f0a@d>rxUlW=2mS9tD_v>II37kR z%EvT45jyKqOxGyTPq5_*Cp0W?9;`aG+w!;P}XU0{N7E#@XkTYFXNuMQ=+A* ziMPtA_;zHq5)C1~9)IQtPcrQ3<_=dD79!@d`Dk~mA#L{mp618A+^ z4``pWRB{>BR#yk|3# zlww%->y+j~cQ1$IaPq5qy>Tu$Hnpc_t5MgPI7dwuo7P^iitjvjymE_|;~sIi{}|Dy z=ILOyn(F-g5)Rq|LYawQ468}2dfATl0UtLj2_M>Thz%Q~7dhZ@aXd9)#c6emlOrNq zW*%j%lxvaGAw!9ynl1rmbSX_u$}}^G7{B0&~0=R)+B>&1L@aYx6f3k}*~|F2!P*(sxeI^;G@m z{ji2q*E2MW$KP2uzNct(xrnG-5(&yVbLYrf5`}BB$n$o8fxEtc26^XI6yv zS@^zqc;5bAF`}q5!4&7>b;gBZOhX)R^bZpW%aP~A7M*6(N9JA1Ec3JW63ef$+3fth zulqf%;COq=pvSCuAvH}HmNvB8VLi2t)kYocxZz+t-Ntt`M5#FZxKsPWn}JL4B>6X2 z-KnnH==k=L;OF)(dkJ#Mie;x74~1Z9cEjr(W?>v81q$Y=319Bv49`Sh4q+B3+H$0~ zeRdfZ3?Rg)SEpz3_*^+Wu2h;xa}3sbyME7c%%P?a+4bed zw23$tKjaD|6n*XKn=Gz&T(q-G)!)D4vNqk|GiF((U9=K1Ebd_L#l)t1dsb1DgD0_z zQj;$#q2Fft37q zZV{u&7Q@)Bi#m6PL_fGj?yT@w?T6r7$R7)SaZc3IJQ3V__if{G!1owCKZCJtzpQx8 z+Rmqfrtj{KrTRUI1)ldSj*XM_Z)=Ax|T2-;_al&PQyzYN9!KSqRq_D=iSRZq8jvxx{5KR zA?-(fpml?AV5#x^OG)5uA>jmX2>xP`;C-UOE2!}mmQi7Zz9yy-=>=l63s1ai-JsLV z@7~$WfBJ@cRtK~2%uiW{`I7C+^ax$@vNHd4QsI>p>VF@AzW_D|J7X_s>yl}#e%pd) z!7w{Ea@81yCXYEUsKH2HgVhny@*3nIJCzgTu?#z0{W%V!Ny@d5zne7(gy_Aj< zL&X9s8rhURtMz-z-wch7749fy_g_Rk6ClgT>^3u1!CY=-XW(=np*!v&BQ^1k`Qu~9 zU{v=oxI7TG#=w+=|2viE_tukJqmu(wa)IgJ+TT+jZ8dR1n4YvEZirOj)6nqTF*0W8(*2N)pMQPNf3`>a2C_ zGX1iikwutAQefBkY|g7*4z_BM0rQ>SXsk-_FFjorOK(yFZX^@#=VHdT;rBJY*y}Yg zY8k!&6*8VNsSl8QW!Ogj?p5uW_NLw8Rl?)<- zAP5`6vawN|y>o2`odSYLtRRR1Zbkl}{QUt_(dFSoD`%VA_nmF^Y#-Pu`FOZlS$nv+ z>3MkG4(A9sE{7ohg525Vxz{b{1!Og|n-PY~qeX9p9_DVkg zn=G=)s$X?cAt(5j!I`CShKg3>7=i2A>}>vR8q zy5F>Qzi;ns>-N9NBYF^&g~tp*nK=+d`(JtH`60;QzO%B6+e7#NKg+Tt^TZ|u2ZF|B zAn4kEWn$C&zh(Nr6o;MjvsD!vf~x2tu$f5KzbpOA6oQQJyDGXkd)PXAxc?uQ38#Jd z@je;^wG%)P-G3EjWBb3$@P8@Bkk!oX@I3^Lu0qh2e^UMZk$NA3{O-HD+S(}Je_+dd z-`Yi69Rm~b;lO`G;7zV1|68_#o|*#6KU2Vm{a%8+{Jg^aqJpAGGzRnlW=Ayyu>?U7 ze+>jV#K5+mhueK;dv_$_xf}{K1sBe8R}b>YM}dgoHWrn;syE@E;jo6_qr;-`z~vqi z4F7?LCNjvb=Efm}#h+_J5PU$9O5VbcaKw)eKPTW*6L(ov@eoYVB$hVWV@u8P%atLo~aw#PmdU4%Znq~q@)o0j+}xV zCiGMeY56FJ)H9@uL}uvu>fu5IdPqCf9qc=pkpDfTJFj5a1@rKiJUYO9Z*NQtPwC08E)Fp__^lpZ|jo!QP9{u!2A}M^3+Ftk|ncD!T0r7m178*b! zz*Jvk-SPlCK+6xnalkcSWM|I-ar_Wl1W*ky5-{Q+lC#SX*_UC!KYm~oe}n>nD*nif zB7jX7fD(WS@dKI$AanEzKq5Z|AnV@(>_tE*5b4DN7#@VoD>rDD6c;K4tOp#1i3zR1 zUQFmP2%Ldnq?d4T1tuwqR4}sUrol*iS}-1#5R?O2YGE%Xv;~M2g4i^GtRcuOGyC+G1EEL_M1*o}{o z{LJCVu1SO=^VJ2mSvXQvOE}^k2gHa#>{}5?4R-S3o3&2$F{t0sN4FH4&rGG0=_^qaHPpUY6&RIf7BLGHn0kTM?gWD zf$MZae6S*el^lFsegzaWP|i>eQ2anWg7Sfq0m>8l0Mu=uyrFWSEP?Wc>cNcMU_}50 zKrLXl!EkjLP!Kc#g`p5Zv9Kb5ugwE+)kM$>5E%`92U*^rAS)OR4FgpHD;(%4v;c*` zkv+hd4;@1&j6~1~tjM8?f7BwZd|-73e8>MNc%pD54(eYYI#5*qC@i4(|53Oo$OsCs zB7n18fj626(uEZcR1LAf^%6l=z*i65K(-!of)xhz36cUnFA&)bE98Vk!ioxNgKh!! z;c#0_r&m zE$FuoBA=r$fk-TLr0SQjLiT|XoeP}+dWRwdln7A8D7Vm%T9n}%Gy&9w;t2W~z&;#k z0mTUonV$pf!+L8LHh@qa{WqV|BCT_92qR><7H!f)iqfbO7v0crs#BcO<&9as@SX0XD5BQN3c zsGtJW-)P7y5_}j0usR0gkz$O(Gb%N$X6%uI!)D)^bP>+E6jj9Ctg@Aq#nhx-#0Usfv;Mu+fb#kB?qJvWa`*0wB zG$YXO?<(C!3k3aYKtBsuA!p(ftl-yuXyHJ82FmRpH40SdKWZJQ2t>i-ox+M7iiQ<3 zIu0f>zi6~bFeCDRR2)1W1hE5^iWU!#Km-W_^$IN!_{3m^0cD}3fGn!8!hv#Og{-w9 ze0|4&D$$BSKWosh7FMBfmWM!fp|yfq{6W9(|ENgJcuWFl2yGJhp1}$S8b{lLM}Q!1 zA7sa7&@eGb;SoXt;8&U`hp<9UU27oX`&W^`uYd`lKWNzh;X6me1*-Qk;=4e@2U(KB zkt}HFq(J3H{HL1#FGUjhpFYL^QeOY13ja%O{g=8C^`BW1|4TLhm)iX=btn4Yewdhg zSR{~shzS-sOiREXOvHYPhAN!12#Ang z?hF`6gw&rvgjD5EEQ9ht`?8IqA2Lde zFdi4lDMNzPfJFWq^N55GRX@ZVFaYo|%zwQmSj2GOG!lfFfJJ~cF#nBtL?Q%dXa^hy zT!Q(p_mV^u_M(#_#0JEJ`LCCdR1$6{2c&`dZ#xsIEZlw_PytW_&MDF2pru0g zoq-Czt3ua6I}a7IGUilF@cq)A>Ke=>Do)t@j0zbm3-BEkauPlQc7T>q(03WwvDE5l z`XNQs`|!TE0$_sG|01F1<)Qa5HJ-m6R?QJAI?w>*anjr5~j68C5F6dB~XZ= zAejGF9!-Z-@(eHsFp~Zne9eug=S2VaJiMZ(g|oedi2{9~7lgh4GwXk2Ht18(^+Qep zi5L)@2~Yq~70?pU4KNPy1z z!-VXS1QYTcS71V}5?Y|$fC)K)HcZH@y#R?=kVq*&O%}v^$`TFVx}sT;laLNr#EQf; z0{a`_EFdu_vKs7wlAOqS&;hjN+=0)V7bo&82nUP3yE~+Lh^)gA!j?03waJ^0agQcb0IYk!ZB#jJZz&u zt8gR=v<-Se+(_T6fZTvG-23p^Ku!n>q{b})_xgJ+HReXv>LE8WiXX7k0p9{vawDU3 zz=Y#Lo@F@C->WVfbk0o z?OlLlpar>e5kqr4`tV6!2RwoaU)!(WgCmKq+ry;4{s86!UL^lRKBP9}*#zHT1cl&8 zY#~0F96}XXD9|k-WTsw#8A8Hv<|JX{Ig%<&0{wfc;d?9mjQc2zunMpdunp$_#F)X} zFTw~Pqnp7wzls0GMuC2cBQv@XM=HUUKu9U!4_CqlC?kQ~L9`{13hjU$BZ1WR_uiTz zf!u#{C63`dfA3k963C7t`~L48?LW^?lLT_#?3O@ApOiqx-2(9_l88+L$S8?q;0LyX zB(f$dz%~c;0Yr8R1xf^Vh9t7@`I1PTEx<<=IugoM;$b8kMP;gM7W+`@x92Mi|i>TbfK_;iwR*U?!u%7m8XRz*%!46votkQOyS zeLzbu^K0QrHWJwg~y5k?TLWtfH`VNRV9E;pye~*H<$v@Am9Yxl3FC5 z0JH~q30m;gkr*n#Yw9s@{>j@&oqM-Q;NR}5YHZ=LL0TFcsBDn2MhtA<1GW>OH%v?@ zUSkgr6Ux#!g1zM+rc>h#ZW#kD>mc$1;IoC&#Z&2B$p1d<^q7CfYP8{2~ZvM zveV&#^LWEHykc-WCX@o(BG5-25=aDU2OI#L23!L?*0F(O&H+(%kw{!XVn8ZDHkd+? z1Wfpv0BE6$?81Frd3X&ybdeSNd(Qu!+rN7eqN@y619>fEf~5?v#=#AQ@wf=zBVMQ! z&V~ui>AJx7BC!8vScfwUKqPv|h}QrG^pFwdfUOQ_0O$btR?iQvqzc4z0gmZ~!Yy-v zD|#`oy`hI(OOF800XgoZ!tLt1$XSX}Mfi7K|K}N{|Hq8d!Hf{b<05>on~qNm_1*b@ zczY9oEUNC0|J*w>Fu=o(0t(2kmb zJa)X>CbWOY`XlQ-)N-#&_igBPu==9bhsxdQ2#rP+(75}1XnCUhZq#mU&tM(OI+nG7 zbuQ~Gtm|0cW_^$KL)On&kFcI$z07)tRi@Dy!I4(#FuymnUuE5dimSD>16Xn?TfSgD$$FLb7go`O zTIj(V*n?J9HF|VKP3S>&J;Bt5C)tfyIjV7$O4LnZt5q4SGcL(&97qZhDrFtWVos14y1*4R1k2Q0sH-Zj>n ztiQ4T!Rne$UI(iWYbDlTR0Fr2G=kGH>9oC%C_C$8tj$^5vUW%>#F(zEy*R!<+lO*` zB&Iv((Gk}$iWo?n@Ayj3JW_^^k0c$)eUYoPFVr|XZhP54Q z3Mzg|+mFsZ>shDa7%QLQ)!e=X>%vcCS#!FS;&E{n)8+I0oqpTA@H&pq?`jS&>qqBn zb>GRYKlO8^{xoB&D}_h;(=igqn#|rb)&Z=;S?Q<|kl&xyR4??W`G0YLIxnnZeZ4=; z`S16qyI7z1r!&YIF6|~q{?`9}Y!BV(qW!4OV((-BZ_FUw%DRhnAM2N_Cs@z3R`sCB ztDOFowT#uwB)cc;9Cu1r=5z$>hA!`WbKr&d>r<1ZRVYpcQKPRwlC>VoLlE*-4NCd zpzYnn`cKvmSU+Vw%6f+ND(fxQGFJD2_pz5^SQ`$E#L^O2pFlOBGujR4Gm!cxdm#19 zaMm%X^qCiUvN7ty;*s4Ap|w155EEh*t;ZWBToZ%}_f=kbURCB-GCb z_7oP6UJJe+cvV_JBi4fRoW49T6umR~t|_hXE%ZaC z7`1u!O|-Yk#{B}_Ii6aTmL~_%-6|henpJSyS!q^D%cJ=uEsy4tv^<(g(()oX@^Msk zUQ=hT&Uu~CBB1JES`*e7OvhK#!E~G^52m|S9noGNMx#A~&w~*#V{lC~0_Jce9sB+; zB6py_zgRlyo67!T=C|*-cqq|r=3Mlf0g4Z$frGg05JB8Ed zB85R?TobUD(w&rq&(XZ>q&C>6rA+xS(e+6jMUO>bHrNaKu4(wRO;4sm`#IMnq_vt} za_x`1Dw(7x?D5gg#7 z$+Gj28fx;lXW{2Ek87%7&qYes)XZLhPZXtU>T17&)Ll~!K1t^deKn1-laTT><=d<9 z^Q~E$itKer8#Jx7OYqUTotm~X?bB3hZ${r?O<$qU4}Q}0Bl`RxC`xTnh}(AXhetIv zbK8mZxTb#S3xHOdMx!qPQZ+s2_91>Y(@oP_xBWt*zIeid75sx z9mnUU7HRTw&qi9Ish)cd(oUv)=;D4FpQyOTRA6V}`$>c0wx%)eX-I#ld@#lRGEzV^ zZP8x9&n)nnz>Q3W@S^)|dh{)peEG24eKUl?QB7Oj%kX)~In~Km3j5Jl4Pt5#?X|yf zFM)8Vq3IOUqndtTs-x*w_v0AZNR#j&O48)z@ikIAMNrkF3?d*!Q-p`aqrQix`X25g z8U|`=jQL{WDJD8P-od997Ams0dhHN3V40>pULPR6s)_og2GApvG+Mv*B66ok*O1P6 ztwM^|bk!>xsh_5MULRvAvo-m6e}=S06Ya5@@URJdO>`X9ghwAyHPDe$6H+zB zc&|cwS`&?>ny^UIZl-rM(O9Yp=QJgFUqCYOInMH#p(gk^DG45d#!hMjk3w4}H8a$P zH<{GTP!B#;kv5I;dhnGd8s+uiq$b*i`fy$o%?0)0M@=-NGytDk)Rugh;9Z7iJtR_%f5s$2<5U+`jfTqw^6OF9LVW=h=SYpEA)B!s}AY7Q$OTmTU#RnF{TH`jp@kN&_@~?z0(bsHSs14*3K;%am{b z;^Tuk_O}}gr|I~$xg7MA(7e-U0}B++7Dge8%?wyy1;Ek z+`C=Cj8pk&uXF)lO|)0KK$s@lD_sCz_)0YZ^?X-otBHEPI}Bq|V}Br z^-DIa)kOU=7&bDU6`lObU8T*Q1 zfqyIcR0UsqISdZ6Z#wr2eq)tM%@a>Ut;Q7mp`=othE%3}_{zVtdw1(PasG@N9jGB3jz2!D(s$=6G&QVL0yCk# zrVf=hBXwgcg29#M%UO`vit-gfL8V1vX zFNQTt^C33y8(9q3G(8r0N-lu=PC74Ng6SQ(J{;vY<;$>+X(7mN_bb(BTRdk^6iE}*{~8m)xH#_lbYxZyAto`bA7yGSp{*5U`S9ItirqY zs)or}<|=qi({oI_6~U^Y1dMFng(3^E)wPY)km00w<26{(m1}^j!Pnq*e12Wg?cikN z4M^yw$g9dVz!^qURFyJ(e$~-k`4Xx~@iv^-)CD8A0v=lUk2?2nhkZZ=}h@BrOGn-0bF8IM@K1KcTy6ri0?XSrtuLNy{Sx^ zKj#`BgC~>9hiiW)CBc3ObJ9%X6R1%k-vMag^p(Nq@R*a5kXkuurg0EDRLJ)Q^lX(HO67q`iEjXBppmoT6c?MFouQ$?J*v>Q`3PM&I=iqZEtvAlY2~7(^ zN{kC|Nz>~gTaAlgrc({`;k}TZ#wBQ~X+P2ruus!Tq|0!WsR+)8d}v&OguW`@&5%!w zA0eclA`$w9aSdi^3J5)FT!-r!$`=!Q+PDEDGKm&K$B`jE(?rLSA&%>Ov|=&D_u5Ctks)p|7221u zc0(9h)Xu#&9aZ>TrY1V73=yt~*L9|-tBH;(7m>=OW?EN~%d`+0h8d=-SfeQ+%-ys_ z+ia>K-%bt-Fx|xnrb6fv7KC&_Qznu_)EY#Qg)ky437h-t6b64uVF=AW2bLR*f^8E^+nsT zR~!kOYCh(qb78a1=At@pEuC}9poOUGq>E+?(VD5yo)eJ`Eky@SOCxfS(lospaX}=B zewyBoI1Nc+u%<&1CD2L?*K{IcGg5)3ixEGW$>MoUw<2yK6>E}_Y0z3M(c~AIgtS&u zWaM#pLcF1=N#xf^+cc%3uZ`HHDI0xl#K%l(``U_wOf20No@Eq#3`EV(+iq%mx)pR{F!s;ZlG~GjAH!*=p)zDo`V^TGA7jtx^6;<2nA>Pt- zDYB{6TkO+x52=qh%|xZNu+oJqFaA}TnZnyi7tKr&!ZaVQN4B>HicXp?MW$JU#Sl&R zkcNnR5s*@nM_n>Un@s!chW_3xcIdZ=sBIV!y$VZd zI!4j(=uOs4(UwWA1ZIg6MfOk8+pJk)ho(QG-$Sy;Qoekf?mf*Gm6!@`pO|gdY!Rv{ zBIZ4$2AUe6?>X_9rdH^CPIT1N4Smmx9-6Yz_q-UU2*$?jvF3;;#!-ER_Vkz%_=k8> z(}tMMNc}W@iN1MakfvYJH&2Y!M0b0O#1u_cVn4NtM4_gdv4@bBF%{TNW7FV8@v8Pw z@4hJB($qdS2`MpGwWUYw1(+||Y8o7yfHX|gxY!aX7Na#Sh&^Hzi%FVR#GXK!u8Hm$ z7mGQX=$>)0SfXiX?6=keu}0HMn`on^gILM}u|*Tzm0lorXrjB)3q<4bs-1KDr;JYrQo-SG<{TExV$22YC2lo6{&$Hx|hC0bk;=o(wB%lO>~!WshFjS z?lLYFMVjdT=Q6Qa6WvQ+CRS;p`=86j>ze3Z`f{;_X+B)3?&Y#VT-S8BdVtF+aZi&+ zjjArIh07$`zWGq4MwH81;j8J98ns+r6Cs)&tI^nHy{N9KdyN2>jUtYz2%f3Y%H<8Q zWipjg0Ap&D!6tEmsnDKLqXg+kP4jAOM*5XWUD3WR>?xejex=3*z~Aa(%7-_w6r`!- zD}r}wJn8bbn8h?74j^q7rA!6(4>gX%7IBg(-!7|>jr229A=Iv2hUAw=r4U`WwupEq zCBRnE-APHXO^kHXNSAj+v8G0~li*#k#Ywp?{}hLuG{t3yxb37FF1tjPe87JSp;7G@ zT=s~@n%dPacKHzBC82!nYQKy$hp7O%A(e_I)5w<(gKMvJ`AGCXT@kuQFYF`oD;j53ZOxqA6(9h#KZt9Z zGVA2P72%kzeADXu=5kf|Jf~=09n1BG7@_Gkq@TqhrUH1c&I|IUSoAza7Qsh#9In5J zb#oM*s^jbWtLXHCqTlOOcD*f@YVxTY=K7l`Wy*)>x=HZ6m@}6m^Wm|&F|K7|^gk4J zt6PF!vY)4Ea@{hdPV-cmbL!S|1)2I1(R_HRZX;JIXD}7PTXi>CrYzRJU3HteTC(0E z6}hkOD~7A=$y5Z#>OSFW%Tn#TQ@4Ywn+#e^kpOH9 zboG(xOO$UQQh@YXs%QdIki4a75mJZ@Sgw4Vk;3J9rULk)UIIkRNo$qwYQ15uG4kYk zMNmHtV&(SN75UY7Gh*fFjfx(rUxGfLHxxCkpM!LisQ~)bALUwI-l8w#VymC3kDuAd zOPdvqtzU*TeG5?m%&dPJDSoT+71v+s@`%jRw6cBz)RIfKDc`30<6UdZ?eD03pViNE zts{%KD>{Rb4W+q9MgEL6#K}2KIGh{IbB&Wnwa>S~TGz*9=MPn6^#+z}f_z?6LW4J4 zo5?Lq1^B660yLN5dsPix8sKVM*3mSGDMQov1_|gp|FJ6bA4rLE$38`?ky^?FpD5aa zlq8pYs_1ZoWwMoo14QcnS!>yeX+A7zG+(xsn?EC;TIoC?moTZwCnR~wuXDjRNhivP{!&NZq7;P?d6{QMlb*1~};vyNA4^={NNCmg$F7q)X%5 zkS>Qf>7Hv}xj>UI`ufY|PP*rsAz#-N(KrbP$SqFFbr~oxYpT`wo@=(e@1#cdVA=Ew zRbQ>fE$pY{bSJg7hshmI>S8}5?Jp@Z9~w38Z;zD!WGaL2wbkaT7>2imr zG3YCltq!X)XEh#a&y>BH3Sed9N%nIx*Xf&X&yi_IC~_hE;ag-E$qXkgv|p6Fk1AiV z-`g$=qJpm+O$evBpoNnS7`5ST!Iv!>66BrkwP_ngTBQwM$=97EtYjO zc{eG6mt|v3@l7@(wa`Rs_E%&ZO#_?cAa&A2pP(+0JvGrMs7qv~rcqetQkkP^E|$4e zj?zS*7cY|&G|`h5%VdEj`Xqa~d|uP*O_Gp`HPPC1g2T_dcPM>Nqj!fN@gCb~vgBfr-~*9dFmb*2KFK9gE2%ao6w zL|7|*PpbW}8Mpma8La7Z-1b*xeND8Ed`))JMC-`cD$!)j+G! z4bqcIJ=w8Q256su(>3-+8KS9f)AdL(no^pk;kVIiYwFiD38||lTF<{JCo-w^e2Fa3 zK3c(-$mccD3cf@ZYoZnWTXKUYTEV|14``z6hfVUZCc1vuB(G|s_59oNmL^)yzb${) zG_q+nY?juyYHOdv8x@;nw5HYQ+al{|qUTt)$nKixsfewzuO@mbVyn#7M9;BomD8Bi zI(eHcW?E=}(X_2}jC=)0=PBYrcyBk!N#mf>B8B-k$Joh_$- z+V9G^bLCV9@5wbz+KCkXUAb?My+dwy(ms2aOh3;)@QqJ`J#rCKK7_=V!3XlBriSr* z>RVL%DYx@-2orvi+AIk!%3@7NkiM6@nF{S+ zn@x1PB=2Z)X+F{I2U+hYDkUF+o0q|5IZRV5(;}t{P`pz&F+NsU|;dVs^U88(> z=0dtEJ24eNPV<-Dev~_u4<ba;fWSy;B6HDK~w}OEnM8ajgw6Ikc~bcBMzUY zq5H&$ScW>ll-q z)W*H8u|m_YExNkbH%gs!%cX&FNs}Wn3F3@oQ*ECkaimKlV}+A)U78s8ofPCAZ}hav zBYV0h7~3_~OC0Q;Xq8#k9_#9FeQz2Yt8pfoqA5x560o)dx=gT0)*sI7M*Xno7_qnE7 zt?Id@7~g1G+-i-TYJ96{Q>*nzmo)8fwH-Pb*EJn!wG-*CBCg>{!{p!OTL|5feLbEu z(gW4@J)0ck(ak8;G&Q-lN1BmXMfnydKkkuk z?nuWpiPmW_z&NWZq%~d@7?(9QLEk{*XH8wvH_*7JX*l|_41+&HDzqn|FUxRfn%%kt zf1@Zs)BM((kwP`m3Sy8Eqls1!gN!;b5Z8ZJTIuogr zChLhb$T50q3VI?5DO1y<=zGe@(G-uqr;JgW+MsW!F+o!g^bIu%Gz~`IFynbmpX(cE+*CfhUP?Cp#?(Dc%~Kq5oMG^Xg}4q$ z@j-Gh71~`eGS>*uz9A_&NTJ#{1%2a<8j7GeMT+spFck@lQYA3zqtuPJYNOf$M^x}Wl{ zN1>6+ln)|xx5sSbd>vJaBee`(Fp~M>$RY?!{lw!1V>(kl)I#5jMn(e_`B>`L9xoaR z4T*}NUFr#sV&f!#aG4K%QZIQdHm>tWm3W5-BVRFw#H)Pck(L_gHO;~@mm7!pW6XSb z34P0r#K%?St4J%2Gn%%h=HM@QEl*IsQp~r;xWlC8tTjfrX5^#$Avx%Kv_&~3z*?h` zliI+m#xN%J`Sd!&CsCC-yki+`Fw&X!LT<-wq~8_sr_~#b(3TXr*QQUaHyGiX=+o*A zMxrAAw0eV)p?&me^#)_GCi=8`gE3qaeOkT27_0Nqr_~#c$(rcX>Nkz)n&^}B5@QaN zdRFso<0w-;NxgB{z9r!;-m(IK}P#Y{zTq+=-hmOP>IUBMc58a>-8 zD(m>Q$4=vnrYfDv;C*9Q2jy$fDZuf*k?^FV6!h&j;yNixW2)6zQ8v>dO=Fo3cTv6> zOo?3;6*KMAw3ew}H}a_wvfD`L&IAiO*LUnOhA`p1wa!f(9~i|^E*Psop(cME9Ul)bk7nj8rCE8Fwjz1I8Rpi%C3(?lckpz(nw8j%N$Pc_kq zJZOBWh@UGtWE|5(Bl1h*j3#ZAlXY0P!fDA!ZQVkfnMZ;f?MN^zVuCiPMMlF+RT&Kp(IRefpQvXLS+ zWp~R#N@P+!f59ka!u4mj&2Yg8?aO_}N9si*l}YV~i^d#Hv>z@SF8x#ubPl*^_%NxS zzi4diuiBE=ZHeOt<9w!~`Q6?TSBwJ#xCY)USB-<3Xs=u~zSKl}<*MmmaG>54GnlObtL%srN z*YmjJwy}_K%mbRX_q^-yFx!q%z7Kl-;qWv& zja76MBfZT7nl3Wsj#IvCOm?oKyFFb!z0H-H%wG7tCG(7?O1->1{mq}otH_96uATv= z&jdvckOIx{iA4F3)T<1tnBkL^?@7#8#Z1go)ElX)X--!(s8@g^#GFvbWUuH|0-@$K zP48jtq2}|7@Xkq~XPEhtlOjCB&2>(ytF)iT#;I?^i}$(~KV zd^nEntYr>kDu9c<+IiM8k7~N!tE*=nGx~W|%BPKbdDb;Y{DVl1o_Z!Gou5CH6Mg>R z<=H^{=<|mR&xTGq7dF(hvH9#gt{vxzXFZ#kE0`8SQtv6A3Fby7RYNm#N)biUT)xn= znfaWPmV34^7dmN!XOg+fNn1Tzn|qn|x((?4foD7OD@`MM??bw!BKe7s_NMtF*I?7# z<@V+XO>~zy#hk2(?h>b%%b51MP3e6cQq8wCJ;zkaq|Vx@rq6sTQ+?Z`gV{(E%?usP zrkZGG=wS9$#IsZfbF%i)Jki0Nu8HP}4(1_EG*5IeztQ>V=zr4uO%tsyI-8=HYX_Pq zx|+5oT3vKAYcVZ^mwK-^dYGd%z1sVrXHRp7rmek8@K-ePu?*aXg|HWWz0G8%LYwYp z_c2p7(cSDm<`7Nv1WLL&LK8iKl5To0RK43A=hnVvpd#Lzea$E*E%)qi)^*Yb&jIG+ zPTK03ZT4hRdo#z()dRi#5^Se9FYfIcPud9vf=&Hig=F=GjC`g?Xh9z9Zj^yhMBzD~f3UjWe?}(f-Rd z*J+~tH{QI;q>icyX2254N3;GN&k1I+BD^AU$jRm{P4oH$I3}AJ8#xjd^}#C?Ggs5~ zUe}P;Xj>&B(Lw>)-UT>RsnDSvkzZ`hS z{PHUK)D~?wn=+{ywwouNzSq6Bo4tQ5k4%6a<{&4PdhIkvIjIf2Z%%R2XI^{EIZpb< ztJJ)w$flWZpK1I=W#-#7^X)SoOog_ckq!IJ08Ldha**n4qR;9+G2=DS@%M?@TN54q zpPBj=9T4t0XMPH-()T--KbNY3z9n#VFxtVxFQBKBYq;*VceSOfps)?>_ z4w{{RrpQA4RxQzBCUt}#G)HKk2i~7QWH!C2%A|GO7v`Z`ibiC-Bfc`v|DtG8#(A&9 zX3t+0O{sFl>uYl#le#uMYJRGTzPEeS{9F^w6GzPxnrLP?YM#?XGs98ynkJeVj+(zJ z;+f%?`MV~X8BUt!ZK{1Q&*i604<jaUi;d^uTpL|75!u#{)%S;R5 z*#S+wFPUpJ6%J_Qec8OoG#};-SdYI#d{fhs0bRVWnP5Dq@49I-srs&)Lzw89(q7)z z&3X2Nw)|q&b0b;^vj=8*|6=ZPe^AO@a~+c^<*vDxslcXDch@}Qj4brNYj*aad^7CY zStU?rrZeT+EwUDRmzf7Nwa#)g%FOFbYDAWqlRPP3KJ>^c17RKZQ8XB5MPb>#MCvL; zSUok-eJNpOYofg=tYMmHo;R#XOnB!cD-BHRs-^;bONwbZ{8gEBemAYxD>3oe$<=yC z6P=x0tx`=i>RhcaG|{MYwN7iIQRix1&_tuo)w;?=XObn}wpFh()vyp=?Y-LD-5R24 zYwr!-_;VY9%D1=oW^XTR5>p{g1=-+ZO;?0_3_k&|mN@Bvw~zIkA{d5|zLp(Cr4%B4 z6XVq}hQEz{%uO^y>D_MD(reG~@~v zmZ+l2q_ah&)s(3Ku3%)8HN7hN3gB+G6j7E}2uJcNDAuatq~)G9tXL;)@O;#2;H0gd zb*zp|Y8BMLO4mfIpa#}t70IihhSnTSGz&Mh?&wHbx5ioSp;Y@`H(CY7Ss_enj*PR0 zC?AirM%D|OXq+{&=4qmF*2vnbh*v?4tgp3?MqMN8q$V15jjS4BTpzE38d-G}@m$x~ z>Y|B`j(Dq=COSGEw=y)*Dk#C4&ZO2oEvy5YXx)=&1yrLN76Pq%T3S6d(YhzeTEbLl zrw=*~t*kYgh7Za{dP5OR9aQGs%G$1J)*#a-*-8!PeFTdJIeeb5(wGWh?I1s&w$=#k zdvDM+Xm8mODsu0jaI=Fo%t=8$Pg=K_ir~V%bsT z%ZKZOYWQ@q;xviDb$z;7=}d*-Klp2pG|NAl>*FJ?rxoI)&Ct_RwjdRZM5@ty8I zR+`h70DY`MPHF?`)>tPs^XX^3=%i$y4C_rNrTPrC4lvOS-NR?F6%xa3u@?`<6}44U z6Fq-D)M~7$WN-;mb4@!3Z$@g%r0&cPv$koXJw4nys))znDC>eI8iS*(OPXj5j*rUnI(^<8Yu#4_=O!P=$W==#`Zg+pm?_&V%%`4G;Qcq&`b`lWnEFWQ zSj+aKGxJ%IKfVOt54A&)+m&e-M6Ok;eGLlA(04!+eRDk*&la4|Z9qY8K&}cKMe;dRV6-oh`i!S{nne`2My#9v%2x2rV%YA$>4{~s%T_X~dwl51Jjk6Pk_ z7W_SDw)?Y&veGx6@Yjw0B9d}Rs9zzbX@&IvW_urQ)&I05v~?05!}b`E%B@nC-WAe0 z6nwXoCEVn+Do3eb z4&_z-@bFdyvzJst6sJ|0jX6z<`<>IOw9ahl&6Wpg{0%g=P|r(zrybS!@6(2Ei7HLC zic|u9W6b~>Ehhd_VtJd(?aK1-UVC7{-{O1d=&NYSXisHUw5TKWKe4FRK0G!SbITX= z_O5oSgbkejC#r<^opu2f^WSOOg1Nfxn6TpO^mvmL}m9F7rY9-?i!uj(nFR)%N};S}~VO z@8%M;9s9(92NnSp?Vn+!3CErBPOsA7^%D_T*b7dXK7u_L*@MY8vk8s zcb%oVfcsF|cYjsppS--ie{ZSit(c~n*?=loSH(Ul?}6&vhWe-y=)1D`yZWquwU0V* zWOr12cgf#I{#6P8ot@@^@^i{yu2)%9S{)Z^&Qa+x97A3S<4_Hl;I|Y*6sI|!$}!*~rcJnsYUx!j{t%OH&%g6J*gLHq<*kBg6Y8Mi zTTa;C1J!^*Y=4IBsIeKCY^PoF_TrmR*rM8bdMKSo8nC4~s)UxD zesDG^AMKsl+s)}MUp4h+dj=~0YOB+W=K@a8VDB7Gt1}LzabKh22QdG?*wvU{!gamH zseIfU@$l!f_UWhTTzm!9#7K!TIruhd zmkN;*PFE;joi|n6?y{Z6p#YUuT5%O*JVV}!=Px>E$v>U5ERG>9p9j>jKw54I<`|_l zIsHJ(W5^<*Au9f2IUZ#KltrZa>lS>=7+T7&f>jA> z-;q~E{@JTaP-~t?F|P^gT%+oubCaRZP0FIqO{%U37JLU2k9MUMTdr#VSBr$E+|CEN z%Fn7~k&wXNiv67Kv{dX>6SCMo(y0n66m+L@r-lxu~?d zHfhb*>?(35$5gzsj^aL1SJ}l*uLMdP`r7${w|qwWSBv=z%^75_e$1#7t85>yG> zx!&Dup?G{(BabLG`~AJ8hSv-stIaUT<|27wwCSd*uDW(fZ7*S0=~I}YgZ+_!Irl<@*R$R4^>?e<5d#d zKSsr0p=a+=_NsIQUc*W_gBF~fP)&}pfZ_#Ij8y5X|FK;~CbXw=)Ov=r{EqI!J)`>V z;kz*pN2>dTx3ML7UwtH%ulmOg(-OQ<@qH_(Cf^gVxCihp@EGr^dw{lG^48&cl}k|V zRChHaxttibtF;zs`TkXDbzk~{-OzWcA8ze`zFjrA-o<>TPiwR46(Ed^}uVqrYBibdTp&HP)LN4Xa zX76D3(pVKd@+Fs`&XVPKe%f-qPjd;qI6ai()m<;jYrqKhj$@t3s=WD_HbB`Qwx~#@ zb2yjkrG=Q5dS&$>jqe`fn18jH_)a2fe?|Kej5OgjR14nXT(nM;I{hwNRJ|3~-VfR% z`7YC+?;Vw5E(r%w4fqDtgmb8PhlJ;LwGLEgNp&CWLE6yUQqfZJ^B0O&F{U2vdVJyv zzkJ2=Km82i;W4S^TQyIv=UGl^#kwA}u>6|+LEHXp`On+`f7f!g$0u;_-N1c;Z*1i4 zqS;=88ry0HQ}&w}BjHz61MZ@la39qIYZRR~ZB%^sQ(ubtPvc$r{=5wvvmWdzUoJdp=B<%$Wk6@(1b1Yspa~k;0KJu!%RPQZ9Z~44Ivyk$b9;W?ccK5|l-ad^H|OCG6)&l~%p< zAZ=)`ig}Rt&-1oAkEo-YMq|Z!sbcznH|zf2%~}=LY--hU0=GiKDc+Wf>B&!$o%UV% z=i_SjR{KTGY)^Hh9#Hx%mvfQJxy=u$cHRY-$7LEngc`u5$Zd9mRh&0v{f$^y#pK^HZso9tCdr#+i7W#o{3b|M$g( zD!!E&n&ba7@PA*3;AcVG!D{^WbG)FZ)LOE(LrsFtti4z>S#wxNvW`dH4Eda%&FLc4 z0X{2Hb6`Dc8FYqclXHB0fzq4A?9sz9O;3X!6H7-=_entee4iWQ!02T@cQHN*gjBig zF^9kn(@CtkE(uV3%vz4z;N#2oU{+s#v&;>VIi|?Yf#G8|Va&KOmmvZ2#%%LRhUsHU zAQ_6re2>3(ykX2&SUWxYT9a$>1$z30(n(NXmC5b&1$s^k`v#va^yQ~ue1V>?iI?Av znJ;gMTVs~l@p#*DzKoatgS}jW`ArzK6}NmhiJD`+tI= zyNvbodl$Dc#LpM#`5a$nGPKY$Hq^q+kcsU{_Zz9(Nzd1e=N9I(&Sv{; zd1vfKzjl(|w^YRTB1tXJ!S+;l-z4mDAK|UtD&w|Uo5UlS-XtDpOUk&TXwPIF!CJt2 zYYf@{f$7DP+J8g5Hm;HTNO*G`ZS~f1-}{Zk{`t}GhWKRMFMjdzOSF%K)8j7VZ`e>9 zZirv;7guhGE93sanAgU6x!e%Hj7tOBU%A*1zmN0wzaczw({L1S#geIk6mv{Qjc*49|`45Ksh5#&-$0A>SI`D`32& z@0Pp4C*wy1+?8}pxrs63a|7HAs>RJXGk#WpFQ%6U1RGt(t_@g>CC>_2$>m2FAro>S z!gz$W<%Dek5k}gCou~sQlwxV4CVUmJ9>z^L6A*8Zu7~0YS1_$~-GtvTy=8)%(bCw7 zk?o9w6RK9~Y@D1BUMU!Unvf00r0c}kO2_0J_u8lt6K8t1Gipt&S}BLyR+HO6nuPE9 z8RI(BAf0QBL~j!9+1z%OX|H{cdv@!%Co6Y`E@Qi)_MOdVgS@F9`m|j0|n}xr?GZBBa7k09K%zB9R1nWiAUOcwr<+X`F8TnY+_R9H2 zn@J^XpJ{Y9(k8uMxyZr)`NYdxlW5!?82wt{ zCQ)hfp1@-eHGY{~EbCAH4lOMw`vh$g-B@!_7fZ4%mSkBh$+AgI<}_(dm^(QQXMmR{ zXUWcT)8x3I&hp*Kc|pZkZ!5DH=r`p$%ReTs3d#Z3DeHrluzd;JbKr?7dxMhE(${|t zx07arD?w{`EagDj6gp<-PP`E`-pHKty|o7DS9sPy-}rk$bc{p=-w^*8x6JMgqo&}K z!Z3A8sMyFe+eV(*Hgd^1s279lWAD8n_v^j3a7tG^epgMYU-g*r=9Cin!uVuL)2e5U zzVXeg{$Lc1NrOz|vB1`tK7}RUz+7c;m-A9zy-?MG=Y^N6ZeiWQ1RqmOQX4Cx5 z7~g?4i#0Dl2`$B#Yoxgj)5Ex~k>-0?+F6{p*H@d3lm{pxGb^?eseYH`qdF zmTw|W9)S+lyQc4q`B4r*GqWk8XY}>2iT2I-I(8Z}rl2h{MdFO_U4=!X#m&l?u_nsb znmnTf+8Hxuyc-p4EyMI(d1A&-Q2~P13;|d|U;h9>D~D*VC7R2R)@7cUQ3lb1_F65R z;lFpS#b*Q>Gq159QMQGv3KPwvjQA<<$6@wUni>87n^6% z8xw7OU!INcE(}BUfhg1fd>fpN@7t@58iMaUvmqScFNPLDks*R2!v#gwV@n)cnzAK9 zP~K#=w`F@O+dHwno1ik&*_*-MEcOmz?+CV!W_vE%C$W7x+h?(T4%>^_vWP89*s_8n z*Kqmk1hx4-$AF~Pnvz;;OKO`#QX9JAZyLGbZy`R3xzvnzAK}r28F9`>?&yY^;pl~$#U&5ndWSi7;a-UIq~31oNxhxmNxhxu zSsOLk^A+^A^`v7b)w8;n8+7vg1+|;!Z>T*z$D%#m^AAjCc$(gBkmc!yI>gfpb(p6= z>Ilyu)X|=ysJWihwnK@*Xm2X5hBuW~%bQB8=S_Vc=S_Xy)SG%c!8;VoN%VF@ zP4y1)t^)&Mb@e*ufPpeDAX!b%pO4wt%F_aMncD4~>D)w9V)kJAS--QW z6a9o|D>=_!XF#VigBBxtoy2vk+(^;NX(YxA{YG3V1^{)0D2vcJXFYYlf?me%8 zus*hx7nM`Mx|;Pv*6&zXdXsm$FO@diZ>YE#yx#9q*N?00_9Ocl)^Pt6x!7-ZCGys+ zJX92iX9ZDwUJ%8sU`-6Bm@{E1(x=jyh!okpa%L=f^I2E2?qNO4Dyp-$F6m0vJ*;P0 zMLn`du(o8)WL?>S?0ZWfhGmenk_~ z-K=L=p($AsSu`ZIwpZq5%W_nw)B&Je2gEfzJ z1?z6sGpvanIEFQkbp>nUlWb?r>q6-jtchLO&YC!&p+|Q3iUDNV&3c9v29hP5HBqIr z$dbsK!J5aqf^|3R8CJ;VysU|=8LWA%D_D24o?(SS9M77_n!%dKx`K5#>ls!U%<-&= ztQo9%teH9F&0}4`x|{V3Yxo%I;lwc%lfil>mn`N)>g_dCNOwO^-ZQL;bIE)DWwNhW z`6!+NceBDON{6!wTtfoRV)#~b{F{q^aT0{__%{`K0{%_LzZ1zG1TYEz=3#O&{+)#O zDfl-R|4zlfqw#MZ{`JSd_#0_-V-cp&U;M8CCC|in&%somQlD>qzV*G}`-AUw-+R8U zenEcGew+Q?^?Tp%Q@=BQzxkQ|wtpr6D*jRauloP)9~sajU{JuMfVlxL1#Ae|6!2NV ztpHKUuGFwnT;<-C2UmWk@(Yz$R(`v3Y2}NRuU5WO`F>?1&@Ip}uu5QfU~FKmz(#?O z2aXAx88|0!Wnf9*dx84`zX?1YcscM|;N3t+P+(9*P;AhnL5~M@3`!5m2pSypbkM}0 znL!JK-U&Jo^d&BxYX;X1P6+N4oEbbOcyjQ9;5EVT27eTMG`M}$`Bm3ceZT7ds^3+; zTJ`6uj*v$~QbP(t7KCgLITCU+#1Yy#bWZ4oP<%gH=#5afu<)>^VI9K;hdmSaYS=qr zd%`{s`!4Lquv=mG!+fg+R!gqdsakfmQPn0@n^x`fYDwY!!=DNNB>YzRAK~5+eh?Dz zXhgk;xQONvDG@Ux{t>YuVt>Tth}#ivku@SSBZo&$jhq{~FmhGo$B~C3Peq=Kyc&5g zG9;>2RF|lXs1Z?%e)PfUGtsxA?HHe!7BTH(y2cEM84)uz=EayrF>l3`#yDcD#m2<8jO`HH zJ2o?RRP0x=$79dMejoc&?5)_lvGKICAtk{b_5B1d)Gp2ZP%k&DjM}Ps6)-Tugev%n z$|HEExgo7o@cN}Cj+!LAf@y{CAWw$M_%7l=cmk?ITfCC#hcddHz8QwOpMf}hhig16f#&$L|1IGlmU0S9IfEsf$2ScB04Z<{NAh*Nw|ob>!CfrL z5WT@$^aCF;6sm})AxaF#tFsYMTa1LdVjMKVO&I7&KPxrNa}eq{Px@J>nV!Q@=Xs7n z-D^!moo(c!zRZ!UJZED1P0trlcd_ng{noPxE%#ZyycS|Q#*2Ouq>;RRBKhdDp}e8zEw+nsm&XGWAJ!?&zH91W7faV_4nSL{#53Z0aV(H74+AD zSy)SSWwJM}Ofj2-ybK&`tffKJ14mg^`){!QH`aw!DDv;?{XLZW!6S_JP7v!~#YeJN z?UxtB>fqe=SCJ}aN+h-I`N(@1xhRrazC2RkH%Qk<(za}kq#F0K){Uab+Q*73=x9uQ2A9IBNM_F3oC0wW}jY z?TY}mgf;pGBj>_N)CO!xX>=CTe|5a{=9tVz)Xw3JsK&fTREz3?MJ=h8m8|cws-r-S z;cwZZj$CzoJ$&R=>?JkoZgVcx9(BA_><6zT>W#lTu0xaN;ndeCiF#OVb;a#fy`i=@ zIf=HS7i-0%bz;&2EaADNmr-9yTEn^lbw$$Ks3l4NM16<#BhIUi&`*=7f4<>*uOv|~ zy`SLf0g#wX?eTY`BfTtXC|Z`brM7KhJ;3^PTk1pA&J&!z*LEaEy0)Xp%BjmKuz|NERadmz>I-?h2dU~1Kn!BoPhoL0y9sln8Szwfv0 z1vJ;)E9euBcLk)xv-}=ZfoFXKmzW<*6D|8t1(Jn}MSN}sEe9n&F9e^XN?aSbqSqbO z2fmSb?GHy#C3v8R)~#-6KPlbOegaj3Cwc^UvHBq4la;9W;k?`Ac_*Xz9REhTw8lfiO9bA0+ z23I%|S2&NOwm_1Qh=1`JWc*j)il-%}Tj9SF*G{cbTSFVvCvg3P&s*UNNa8xG18O^5 zOG#*tYax8T3GYWpOm)W+x}Zwr9+>XN+8uhKr3c=vz$a*+FKRljy(FeGQTyQ?5CIvG zjp_cZ_^BRRo?;yaIcOis`ZWHJ})XxWS^;h$KZz;|~) zkLeGvJOLk~N_;Q&KQR3fDn3yQMX1MMKI(B;fO-O6LhngfjOkOX-@+@HJ_AcpufTHD zpI{~GHCT;$9oC}$46k9XTd*F}H(8^_2296@H&A0m3F;$a6Y8U4Gioid6}66d2eqzv z7qy;v4@;2Ux4{A&CA!;k}5yrF@A7eV1wYS)hmOiMskMItWfWD}> zkHlw~?$4Sj4x%N4b%6K+?E_h}#aC$0VjU#DM*Cn?{NB9y26ehPhB`x>K%FH{q0ScH zqCO|iqRtWDVSJIefa!UxFN*ImJzxBQ_F`0tKYDlt(+g20{&?Vzm|n#CinxZBmsyvH z8)#pOD)D`aH!;0J{DSG_tSiNBOs^7m(Y~5>t+7bjB0MntChJ?m6D^xiCBEm-8+EhrMcpF&QMZapsM|y!>N_GB zBi|KOF})pCz&}MOrr%@TA*x||r-(rNE>!%Uy@SY=!ors1ktltyXg zR%x2k2K5^5eY4dVF-{0@v`TyquE?1V%NtcWJ|Nrm%{_gL6AG1XKZ437X zUnTyIg>Me75dUdH=z8!P;qM;2PR#dMcyI7^V(t%Z_vcz>6LPZfTWnD<)v zzQRut|1=>Ir|`#kf5yUR3xAxL!-UA4!hga0w_Esu!k-}K{T4o7_*29mA%qJR{tWL& z36V{OKg;`Z3r`mQ95E*d2f~YmpXdFQg{KRDftZ&p{9xf1h(ANfN#DX>3x&VR`xOfp3xAE6CBi{g#{N3tPT_A5eyZ@_6E+IJOxP;? zkA%C0ze&zpgz$>O-y-~c;cpZERN;Ri{OQ8qCH!NBzeo5pg}+bEKTbFp{$$~Q;m7ET#VV&>ZhSW8t41y2Sfm8=5EnzqRlyL$46? z*Dd@TLkqnBcSB2rUmbdt@Rx^H2>*wnYlL4Lx=yM8Y3Oy{|E7h1Z|I}E|H{zE3IF9# zk?>y)l?eaup>=ZpYr?_sZ-&Z*|8{7L@ZSwp2>-*-O~T(A+9nT&!FhjVxK8-k@TUgH z!r_4ey4ZUU45P&y80Y*&cw+n@KBM0?K1ulG_}>`39lq7#r^lZj7!O|_|LXYvJpL== zUmySdkNu^`rXOE;{MzF;AOBw;pM1x=-cfo-?VUgP#GifQ>rZ_2U4Q=FzxeL&db0K8 zxkKOio=?8#r{A;77MRaI{ryij-uFZAJN?Y-&z$Y18-D3?A$;lm1NQ!Z@cwtWB~kJ3 z_&&UB+;yn;5A!~Py&!#Dn)xX-^XRu%&|_aki+vTnm3x)L z8|bFrg_rOqx@H6K^hvbMli?O+Z}WGDxIO;fbP4OM}12-#_N>TfTK^aPC{bZR9V%_uEGPDu30d$#!<3 zzOh>^zZ~Z4waWUDH!3?vHmcRYbFS8E?5)&y8|&pPQ3*@Ct)1Q0N~=*WZR>lsUTc*q zwQ@rr^Rf4vg)g6i~ZEiNpxyt4mje28dy;Z5#!dz{= zvA3hwnd(-(QEA=S4s&-}jnaB+?oOrIs?@eFR;uNg`$~PQvRdR=p8c%GI)Eo~8bBL(Q&K-YjQdDwusOmhxY#dpo(bnO3V& zS=()un^}Gax>Mh+ZDcX(u{TQVS4)j%d8JiqmBVs*t9)ms*(^6S;3k9L-M-eURKxX3 z4Y~>P;3+W!Bv+X5~hyQQlBbE3Hbo$<*%FG&8w=dB45;HvK}HeCMwV_7|9m zEkT00skJ|5tMz7C%kB?49v=SyN{CKmkR#7@dA4X#_Etj?^8FuOc^;&{X` zxKQ8^+Fsvf;y`<^al5%*Z%|cO*=q_J#2@4Pk@=+%b1kiX5_TTuFI1X4^=4_!=qGW) zh21KnC^cJc?vfGfYN~6t4vLvXXdW>RSXmGAY7AaTbr7$2;7BfGK0~-ws_vGH#jsef zm4k76@9=k4l9)TPF3D4zuT@%MwNB5W>VOn1CO#du_{gN6rR6@AY7jlYySa%3Kwepv z?l|S6cAtLL-~Lca#(R{MeR=I|Tyca_mK*|kWLM6}x4N>%*qB$!K-GZwA%SzgTZ<-@MnFuqo?zPXSL-DHucv z%-JiFUyfI2buVx?AT-sp&Pf-hTRv!$9u zUwU6Dmv5$bZ$llpQm$=rl1;By>rHeQG(Vfr^kMAP6b3|Q`Q}oivQ@Akd8;Kg@z^rFTh6E9DxDA)R76~SFAVIN49jkSl5S!M^Oqt5pgc-#Pphk|U zyKs(dT`?Jk7q>f6_G}kheEDXvcpj}0U|g(}A&IkzE%v5#v%LG}a8B2grOnhK&}hzp z_{hT?_f9bbWFd~erH}6(`Xh+VA`?hm-mjkjiwU;#teuSz2#u;xm=@+tgO+G zzcs8N@HOFc{YJTlf}G@o_zaU5EnynTHPEL>E;~GAH))oa%6Xnw$(hi_o%;!(;wC&f zF-6gnRVtp7Eb`)dV?Fi{j7eGlX4N)KIKj-S@u_}=cS`mt22?uGegB9!*q zb^IvN{tL4=%Ii1D(SB(&tBaL8#52pz@B=8y_m#?81M&2cazi>%DB_esD3+>iLXC=4 zPX9iVB(qua0X|*79ae7A=5kru!F=sj{bo5cox|0eZ&r4$mrFM@Psg$2FJ&LcPrVqf zp=9jr)EhXK!qTmB^TwuQ)I-Y+%EOj=|0MyZy6Uuw*KYPVEft%oZpmoYti&5~0#dX!#;TR?CPS~FBk z?{l&oXbkfwx}wYm4rgPA9t24RGiR18fnvKJb9{vhR4K7yvLzWW(sYmDa>B%F%-uLceP%T+f5DhPg$%twoBE_uUN`pZkkLp=SEDSOY2HeKq?u+iOK%== zaLekhn&K)JkfpcFN5w9j?c3QNH0uRH-*TAXrAEuVcjy7=mu>K(%XQ38QZm6$oTWSX zdBRorj8w|=drKP|E-jWeS3tOG`PJPzxex-?YW?rMfQE{J};WJ}|ev2!p;=!df-M@M(6t~=M>L0I^_r(8YYRuQnn+4UZ%kr-X zAK*9j+DDAVQWctYd4uFoyjk8mzo$_rehjHsHt}63zvt_l6kWD(#pTWQ<1d|giT3Fa z-ZOXPLO-U1*0YT1%@F2dqrM&GmC!t;ZCw3`lZXbZgktBotgDKb7?(DY6kSx}5)R2y zXjkQ4U>}@HP*L_F(A)~i_2aORC}S!N0DA&XzEckUKAqXOBklIQt@BrwW?w0;%)c>L zoL?-Se|>dsh1tYD-Ud|szYQ&6lGJP9sMMlT)!cuH_*Tm6yD;m$BR;IHMrr59Ubwt4 zGrMwm=9u)I^{`y|WNo8VuDZ()?W%+;-@M;p-itv_wdN))A{6h~V_iOU^riSjxs@Gf z_G+g+dg^Xbl7cezNB8zh1I%ndZy7R?S*SZd#w18TU0SyE<%Ww!BSsckW>_| zY!m@rF0zp6j0WV&m7Cf4G+Ry{y(f3CSj<5UwOYio3d`dfU*F z^Bh>FI8)Kp38~($^%gHL1Cz}CUR)DJi`2~5V_zx}u!&4o_&TXE-|KLho%V{VXv+qc z3b!MyypPYyMSEqVt*m!e)KQ6jSOq<$=(n*1nPrwk4K9>ed{rTqPmK95$mfdhGRlJV zDajX^pWAWZI&9WLOjT9^vYKMiR3oA*a!s=s!u(8gueQEiZsPk4_TF9(JYU8tal?WR zfCMrz0t;jy8e$eT1-2PKXEx!qyc_bQNDaDLRxXV&Un+f{FK;5P_2mUqyj9m5-CJSg z1{t8;tI+OV{PcDV;NDP-w|07?vv%_NcrObXW1FF)?&Wd~yS7hq9LoJt)g1JUhL|lM zrrNE$+3=#tDOmcLVuX(>muk)Kmza;gUf->5WM*Ejimd5G6uHEX)@Ru3kW0(AZAsdV zfR1PWp5&2Tl>`PGODF|AwYu1L!mvW9_0(d?dA(7-)3!^>D6umkzFJQSMx*LEK38u- z_C!a7C@q@$4mRcJh_D>qF-!AT#Y)Zfg>kF4{iU>s7uH*)=D(G0vzYoRl|z|&B9+rR z?kU;8l)G<2$KX1~fhSPF%{ra$Qcuf$EBAR0Hl=Qx&~X)w4y24!eAXq=+g^83j4vR> zK6*sQN5Y4QKjbgMT7W|6KrxlsOGuXXt$4R$$&MVLUE)wNnV77v0&?s{)~-dmf5UVc z`DS`D#q8}2a{5PFb<|610QMzWX86#4Q6ri0J&%4VcUD{7f>ScjNuRMgOvw;0Y{$+w z@q>H>okS~nDHb6f^GrjMqH0}@A|vR(t*_^zHc1tGiV6!OLIX6Xeu`Ol zFM9mc5U!M(Ei7cLsffoN5z3KL&1oXs?T9citZPXTZB%X*<(SDwD2HhXjHjKWBVwiO zPFtnAJ9}=sVoFGJzQ%r^jr#2-(sjGk%DJ1>&I4pq>$z-bCwJbes=j$_ob4S=KFaJ< zsludc8$Hy$_J@-5+dq_;|L#h^UTU&BZi^Kd(S|#5)bKT@u((^T#)Wt#MmM$G zoXN#sL5bD6j*>+;5d$}0vm+QEoPV@(~zfI|2>r6vBFzM}m4RQW*NerT6 zVaCg#;x%s0bis7KX^ZcMDE_J;$KJ*+FrbSYJ6GyAWT?nU>h!D->2!`QXj{&FMbV^% z!ARqhh1OPp)kG?imLK0_Z<>`ZZc0Iip|GEXWv5)MLBQ?!-khbhQBUP#&h{3*xEZ38 z2^AMw;v+Cud(8Ty*4k_uf0${YU(tm!EMhT5`lkrj@&x>jmFRv04o7$Q1!sd%2{&lXjjF zMJ7wX%w}VD0aW|Fb3(NulclA8mZDF?mp~)bBDr>a`Syw2N>NPhV*SNR-B&Z{i|c@b zyjVDx4RXQbP3_w2uGCH(kMD1m8}-XfaVQ#zwl{At+L1~IS1!#2T#YylpIUDBNnRa z=&vm#c6B*20xdBL402_#UK;%aZMhN);Y^`UG4>ciz9^=#r#hmI=Q49}MQ47b_QPz+mMsus8dL z`4;TcxvYQ`=}NDC2`*Ehr8O&?@r7`?RAXP})mM%lW$k0LawkSytCjDtT8AS;j41O= z%ERhCv8K}!HrOe}HrJ<~n5$a67B19lTRFJ(0(Fz<+5CmVnz zf{e!9p%<@Fy>tPfNo8AHhsK4fBfVO)>hZ#6n*jFhvXxvt=_p_Wo7vgX!eM(4s1Mg- zb925VcdqHJEabr-+)HAsQ=PI6UvLZeutcUR&2g}}e4?RmXy}52b_ncl-C$87OXn!5pOOK2}&K zhR}c+G@TZVh*f0Vwm_2V7MTRgRM^zGdsxBYS75Y?XCzTiyeM2);u-|^5U>jdMjzSc zG2G;KJV7pO)_b@0R4If63uZ=3I-V0_o58(c%8`GM(V4yL*;0j0k!|lx+imW-JT+@? z53GsKHgaZl=0DEw8P_E$9bReYn}=1jm6&!@f~pa>@5_^=vw|zuEZ+9V7KYsl+k@02 zM(wIrWKhlfq^VrKch@V`D(vJ||Ggd$o-?;AP))#lwa&wq2K2>dTi5e3+$YUIr3$p~ zeWhH}w&hzaLTHd|9`d+KO;fqF;^iZ={&Ynt z7yCk^%<{3f^H=_A3!MC_I z0~=6FZxMsCt=WEVgI(?%?qMbU3g-~nSffr#ggCy>m&qL)KivhlT916u zc92K=R}y#@9iJVZy>nZv+5S&<^z1u-^04H6V9B{|u9r@*TCa^17;rq@qHXrF60OtG zL$L{Oo2hDuduB!90)a2GYmgm`X(DhJu!pqF?yZCx#TzB~g>CYc>Dh(8wwCPRpGTv@ zFRcwE_y*t+eGFH4mHbD2Qc5s9JA(?8Geh?~S&NpMM8nnkx^F|cuo8;NN6@X^j?c2~UiZMYQsW%n&S`qOt3G{4rwxdmH= zR9E=@-Fp;w-z;q^yHCG?C5i7`bfk@TCj^P^xY)7o=(Zq8V2Byo5W=RYx>g)hGCx7b zB2l{{V$)C&RvmrHf5-mhqwq&;Fj8MCw~q`;X8Dus-AtOZ&3XGHR@wf}j0NUawox2` zp=R=!Vqu*6BiEJt!`yE_I&JlNETetmXn>os7o%C;USl72oK6I*Ia60ni`AA%>eys!@$MQf8arcd+YjWXuEAj1 zrzzPF317J+gWQf^>eOU9imCVBgP2EBGW(M_y_qk_*JAm$ofg+yBV{b-a z-iGJCT4HapeKfzGjH!oVpAHFC-n#v;PjhUs?5jU^X@ZbH4#r+hFJW@j^7?9RZ>_O) zX=&mV9omy=PR3%Au-2srMqTL{wI$b-@|sXTan*-c10LV^r(?2=dwi)EA~a6db4I#az}Vsn$IQ%5m!RBEzA9IDNcrOI_gNM-DR zzYWh1DD{h1e)C(2x2m@G$Juja|F^=y#P?>qpZS7=oFpv{6$gfvN)x&9(HkM)`qo!;(^KpVuoN&P>zA9Eu zvdF8%<#DB&<4C#oNm8je@v&f=7!COQrK#LJ8mBPYGPXaI^6GAdg+4XwZ;D$sz3EzQ z$2KLZTr)b}@txrWQ|`CQqk2>_*+@40+_%!f#0@4WpQS5GxkMC*OpaBkj_gZm$-68O zpw#?#t_4%vl^(0NZ>1v==I$U=wfkYU(ux4;ja6P~2{TQnvLhKbR&G}~p#t5i>iZ<0 z^?C0>J+A&2De>TTEkbf!v(-CU(wVZ+d(3dXsW9*PED|w%){^ z+3L-*|J?NC?LQ@n*^mIWzp>>b=&qHTJ3H9;=x#?SkX~TY?p9E)V3_QkRQ>?*t#OKEpWN= z#?GyrziEH2y`coh)dJQLuCg}QSz%8LeQRICM7=5B&9S3LZw3xRAVXWSodQQ4ERT&b|(A=n95oXHsOtza$cu9y0D zMF&-N{O~G2vdmsz{8yp2uzE49%&jiWth^FtuguLX+uNn(xtZ0u<>LJ8(#mSMGPknQ z{#aR+s4LXJ}b?Jujm*% zw6z^$Pq$cz*Cr*iBsG)9m3m^8H}9@?!&6`ix8;pFDy(8R|7x8&So5%!!A^H|Fm*PW zf#V|%5l&r|U^_gOikLV~o;c!&+0mbRJjm zd;@i;BC#GkcpRB>HYB~2A=`;Mn@+A6il30r8tZ}^iqR~hMQyaRq=`4Jy|m)<&0y=BqLGEtjtq&CAr2#e$=U7+JNRH@ zkPq5Pd9LPNvyR%j>7{bZ82Vb%-+%-!*NpAjt62MuHQ#BcJro<|RdFJ&7%Z>fvIwRv zM#0tq(`5jP(%Y2=Z-SDvHzd-QS0W;$^b0kW0zUM&;y-lN3u|Vr{iO$x^tssvWk?9JBQ_Ki-79d zA|t=VayuA#$xcCr#o|1&azz!nBdCs#d-2*rap@yOUtU@Q=5|W*)s-dS%`C+8lQ}|_ zR6>K9uZ4_^MOgCB!w7k86CiSht+hHv$Xbfll;c9EEicFIY`(35%SpJnoqKHVm|6sZ zrut0wW}gdKOq|X0RSk}DatKhz33cB>D$>L8v!v+%w%d-FEXK+blYyt-T7)g5ImzgUN-X%jp3dNp>6)%csCY$19X+|OQPcch*9 zog19KE z;)VHHXn1knh-7sxoWHj6y6A=1i$t$njvsFnsrCxd7vO12%X1eZQ&ZOY+2ZQ*9A}a* zyuKLU-YA}*Uz}NfJ-ktzS(%-m=Xq`MmBpp&i$dLEQwK*EILo{+vpUPKD$Kl=-iW)h zwDii%<++&)f#9kW{2Z*)xhPU@LpM8^LnvWgUV%&Ek!~qT3Bmu{SGiZ&rb)-l%Y^!58`+q$ej}ZaR>ibROpGrjb&r9uLZEV9z~8I&`puGc#7e@>bt~9<#6esP zzI!C32jkuaw^8w7tNXi(J(}v`;G+XXMokJDmf@gyt`EfZ@R}CZm%`k#Il)@lkCAYz0D>lTYe9kk< zYC;T7EGI)y2I%O?i;!`5hZ)}4i+L@{--~s5YH{(1f!hU+YRJ{dm|GFK61o+jT6M2g zDrk%(R$~05%4SLALBvb0W;k}{)KOzzl5<+{FWUA(Pq++Ol;dG#w5|P;G{k*Mp*Bj3 zie1np$1OB5-D#lM_APT^pW>J5^$kZ)FY zL`4a#5nL2+VDFi`E3+@9nQH-6q5Uo%pJV`aNLZ#%7ZEw@E2d}WSj>?%k*c?+sxE?~ z5xmaF{1PoG5jJlb-@o+r-A^_!b0k9xudH;r%LW71yDfazF9N2sma z)iPoA^{aDuE*4j!hzP4Q=dU1ABpkv83ul)uNKPOaF6dID^Dud~h6#@s#Dh&;Ru%f2 zdkq;jk26GpK4zD$z8QzI6@E!Dz6$DCMK9VqW}w0`d1Cn8pL-*l$bm?tvLvR z?rKE3VWBfd3u7r~kQT-mahudhqnT~rxglmNtIW)zkajTp*EVN|m;!cbXv1?PrEZGx zO$mJxMKk**-nNb#|In^_gB`M>0q~fJxTCsHr3-VbmzORCWcVcjI=gz(!V?xAw~)g_v2LQJQ^7eM#@4i8`gN|J-{r!3;W`2ZMlXC8>cK3_<)$kGolywS(l%G?cE(!c#Bu91 z%H#|r6A)0W&b1{nm}f@6anH76CYRimFuzm;1Q+r6*(EPYgTvfHBi5ZGkxfYurn_{x znzC2hEmoR#8U$W#KFQ1mNY~(H$~|Yo+h&2iC%YgX7Ek<4j6XV3@HC~P9SSIefFBpA9OX>)fD^quHp4PW=4YnNz!x9ZpzV{-TGjO#>f?A z_sr=<#^aUBW_f*Y9frLE#I#H$y1oIayK2@JGwvhzifs~BaohNA2A6^7rQF*3LsIK3 z27+jmP!l2_;dVSp3th9?a!tld%M9n*I4PRuOla3p!n2S*ER!@$W4_y^J5d)hjc!#8 z8F#G+3)+N6q+D4}#U>fVMmg4`sZ?$l)ViQu1+>f!;qW39l9e5Ca*H_TkK_J0;g6I4 zIOUHQ{c+kKFIf!(0i#j`ju?)Th1fL)NpNi#WZVbm>hWn$GeC6RyeHvZW(>!!55 zX<=uRo3L=K!CDZkt-oRG0UN^WZSb_mM)?i z+Jl8=tQ=-70mMik?$5WW7syhkj8i7%0zEywiWQ~zEMsJmvbUfqyjZ!@GZpW@vcN;rqea1rza_BER$1~Wog+$lhA?{?M zxMi}nd0bXlqjJY@>kheyCd&`_i)cjd$*^(zYQ4G#3X5~*?k}-{M9ymMtZM|(@Zr)- za07JA(8u!U2W`j3oB_B`Sx1(2M%h_V^fQAvSsgZ3P+RE4Za&*H=({Ykuio5QTBLnU zRX^m0?p5|5DhMp!hPwR-4@#6)Iar?If^TJTDrWM<0a-87o8S1#FJ(gEk}1fmbOIW- z*7+61y1AdJA?5R7QbAl*r5&Qw;7+=<89%EXI11dSqDv65T}>vmPZfDD!zKc4N4Jfs z3MHbZYT;DBc(fhjk1Ix1N@MR?HxN^mw4Jh;Q2{DTeQT$ED`Km?p(3o=U0sGU zack~I`k3<#`j8gA*H(S>N}noqx_u!VSLNV~(+qMExg3QR?wqdfu^kyIOaKP;w4AmP z*zdud@q(kk@0k&HXX9Yw0&Ey2VfSq}gyhE*9OuVtV>i;V?~7UhSObV{Y|X8+#M|?Q zjwq{*y|yAtM82Rhut_fdNLR`okJ#1QCQt+~Vp-=wKq4Kq79q8Ne5-AW8^6*7`N4{g zqwInbZdO>8`e2jQ+TIbBxUb_1Flw+n&!ttR;pcXldHcN=tbVH;*LqYKi03 zxNx;^bp80oo9ncKpV=o;ob^uZv+Fd}Yg25;k6j4FB`1EJ81={d3$v|>1$J+a3~s+< zxV>7}EuhW~O-Zv4=OnmaZ7O3cbR3waOnfDw&K&rrb8BYy>Jqr1H)Z8ErJ!c;B9&PSy%_3b!IZMq!t(8&Ta_ z!+S8lneD&5oja8*eXYHfIVz4Eo^-i}hfF^QwE;#N^GAsIE`mT4wbn&vH8IX8jX7Ko zER8oBl?`aXI7cE`Y-0}gwDur!^;Zk;xsAT`Hxigu2xHN>2`nbGVYyV3JPlHU<1tE? zzUU+HdMSj|Z9Du;eQ%e`pc%PI8=&-?<@}@=QQ8M=&?B!-6awKm_W@Cs4r~d|94Ue% ztSQYaj2>iT#Y}4|z1Oem;>A9(syqIQNo`GLble7FN&*T8V>2qaQDQv-i4bm7!p^b4 zkB+gLTwlTCR3X52pf8xwm=d6Ow5UR{L^|)SUD&}^1+f55-ma%B@Df8lQW$t=e zmU7qg+egV=PgLGre;aRgSVIk{@_+Qhw)otL?+%$hUQTpk`F?NggjzMAN8GX{C<_v! z^e&nu2m=uM=tmzM#d6lZ3x^mF&P%Nnb9bx1B$KLx_iCPjM-&HaAn4OaBa)6@^CO$* zwbF;GA8u(`)3tkInDn+@A2B%sAWra-agokNlu~DWV zB3sj|c`5YbcMsSeT>Ak@yFUk3B4n`o8X$qJ9X6O5Q<%43PoRO6$|i^N_;5K&6^rRU zTFoxEy~>l&K2?>e%qmLTjl}WIHtnBCrQ*({E|4fWPa z(pa*lmezC(0y=6VgDG8?>{doMW{lC-cZvy^GQc$*idTQo3J^(A3|zwiz$_(%^J_1j zS+emcZM=v``@`h^0-2G9GJL7=yj15fzm#=t7KeD#?1@b_`eYsKj5oW9vFYHy?YAxG zexNj>u;!3^cWS!B5%Iqdm9Sw(SX-)QO*w9zm#36o`rQhKe81P)L zz?ho+%7?yV4)+Jg2-{^xJC*^k=6)=M8HeFiQ3CR@`n-Z|pq~@TFMs9Yj_{U!usR>Qg+@4gwNbf+@M+JEv4aa--BPJGU;gxkGsjO~Jbv>0 z^Jh+0>XQxNzb8XTtm5=WBdN@4R@F|JF}Ge~gCr z0InnbRsFo$ch>PFMdl)$@D)3aOkcWYF2-D~?}T|Ld$g`w=wk6Fb?5G&EVh678G6gP|3QQyu@oXbu6 z6uE=QFK9bueVbiScOp3=9QA_`7x0bT@_p$LPxijDhh_&%*4q}4EdZH+&2%#@oyupS z{Y8F*w=r`?+soC`hIXm7Bjb0xCz1nX@!BqP@2xiCFCMu64(@j&Yqy<|$Aqq$bYm=ONR0kTppmv`7Z(rDg* z1=48OZTE(##_fxC$Puj5#s6|{D^@sm?%44zW^wGqahOG93;uJ;&Gcz>5}88gB6q@I z9@*0_5L|1mOZd_sErgkHRIpkHw)x$ZxXyFr)#k!RfX4E3-Wc-cr2tI;qb^yJi)@RJ zesMl!(cRZ>c16E2R06w=i?4DbUh>$UjO*;n>%}5wB4*&8Nz-Fkb=r>)a$V3?E!cLy z``2DxD;AG>Ey#G#%(14~Tj9w*RkUwoQ#B{pt-_U~a7JOL1}0adf7y`CJD2L$M2G;d zmSC9DjqC@!HraNWF-VExB+p!enK@^bt?U{%<;S?N&$`qji$iZM?bu0EHD%T49Q0OB zag9qD&R5%0ZPlmM4G0%6So9R+`ZH7G_bD8ua;MTkDb6l(AQPx3%K>TN=ip80B8NTI zr)Viydr`lg&m6=2cA7al{AWO6xm|-K2GTU~<+`wb&z_xj;jHS01KRxqc8`otvahDZ zr44XN`4R4R5-56iF0tz#g%T3RBL>qIlb42PzsJsK`SDP8)j`?bqI6<37$)$7{S*kK z4inP)5vqj)$6r7#29A4$rFUIf?6#o8)>KLZumK`Li~a2Dje4`b**Y>S(}3TmvxnhK z67p?jaD$&A+2*I1U9q?BfqCvaM-@idX=lxT*4b168zihM0y3pqU-}*h7j)a+VTrwD zMsOdqZ8YM4igJz0AESh8cR=y}E0LDY&j96^=C`c#YUe(u6j zi&Mo3u(tl)QNloN-SZK1d9iN;oNrz)HN?Oyht;&`z62Yyev`qL7-adP;oP?8*-QEB z9$wxMUpo8p@nYJY(+?4BvMTHCTO(kyXXpK=<10Hy-iU7XmycNgqQce(pVFlh6h8t) z*$#L1suNOqi`6(oG=5rSGYTd=H*$x+3!(tn{ZRfLzXL6#4 zUIS(~2){ch^+(&s%}{DW_iXFkR~_KjjXG_IQ%6st4!D%)W2^g5;i;2#R$?;I(pkxg zGpb~+cB{haLGx^?dr@K{acx0#uEtMU@0PpTKe2X{q8BjMlqNUeY+BB8ZByH!IEqXv zyOtVSM%Up8%NaEl71Bm13?Nrr=j3iyY|OBtd%yPu$?>BnU+U`AsiQKeR?Gs>H8bo! z+PC=WUWk?`ynlfgds|z(e}Q8sPxf?h=SI16u5B%h5;ZSG0iZjK*91rJZRH^p3jwPYS6?DX9tXj5v^T^dwvx)ba zi*ZWT`qq&~dpRe|$Zi+Q%Thpghmmd~>YLlEMGjyrYSD_{EZDc^wg{Ho;F|dCo28Qw z9+}4-y%0`@6XA3SlZOLa#n?7mX32LuJQu<%Z?J^06PDOWi-X$2m0XSwh7X2Mhoj*$ z;c%#0sau3g<32!;uhH zUgv9<_-%6T@x%nB52}a#-#q7t(PrO0+HKL_y4At~f6`c)p_Fpn;#sAhvg*8^eW~7E z>y!6kI&4J%~&2L87^q_ z%As>fC$f6v2776>=^_k6g_zYhY5Z9-11L8~7MAEHdfpc96VgpYwS9}C|O4t+bA{9V-j zG2#^SG2-+LFX;O)bMRdj_wn%l@ZFYQIXqT5jxaml4rQvoSn^=M9AVgMrETiw{X-!< z+F45|ypJ*07@g*j@eYe?4HWc8e^*vaif|MIiWWx`wF*L_A)f{DC+D`JUd@;0mMv*~ ziJOV`F7W5P`Xa5hs7bPk)(V&TTj6h+zZw3n@HZdAbHV`S@p;)Guk-IM#yf2?O>++f z9?E1$c&BoU%T=ITaX)bbT6w2)gHIAC8I`0{C>#cYHDVEg1~_=uPP7<9qcm`W)%JffNvr&3`|ah88X zGfxcjpwd|`_0@CnMy=0T-@I0}WwpNRFtn3y&t286MMaT)EtV6^+fezbcq z(Re;zI4FAeGA|ehP_EF=d%MKjCA|%cH-vXz1Rff(xTu~< z{xQRx*UREuo0>Jub{eY~B_^#c$>U6WYf`$!47^DTXqaaX)81KTRnHH0;D-1?h9}?N zfjQvKtV*2gDDl>HWOcqzxOe)&ThB_Sau3qytdzC)uEg1QfRcFeZNoz_@`WU)7s3oW zf;5jhkP??jFqBro1|skeX;1*CUR{Ah?C`JJ=78PxN;{QCBIzr>HiM*F;VE41)`_Y0 zQ7&1at~Pehr#ErQP0D$Cul{fh>V3)N^09D+_e=*q9!{Ybhi4b9A8XW}xL?V1ZsA!@ z>-cDbgXl_>B#lwJ4%>!lJ+lY8wbl&7L~){XwqsL@gRhLqEQLojhE0P67?Do0)dmVWXK#b>&Cpdaa~V)=R}nzjIs=HVEP@trHgxNmuzGfBN?s(yoU$3cJ?Pj)02Cr0K zTZ3#qXim|axP#Ma!trV5RNC>eHYAm6lYFlI93y?&aKm*I;e9ywUBF0s*$Y7PL%fTJ zy@2d@?e6{UcaKpn<(K~PKB(hbSPd5$?@M9eL&8v}h0J2|_PC*l6pdVzQsS?hb3tis zk3e^t+huv2>)?$Cr4{bjT(PW98?rOQ-QP&lofqY*YL|{A<4Xp4H)E9An5Mq7tU4xU zBNmf@+U+jL$lrmknw+V);#m#?hBG>6)~T&-=9}VWILe%J2APqK`l8;rkt(qu=Yg9) zZvzB#6zKg!zK*0#c9wQ-P6>QRj>;OXbmB;{UC@!N5&v|qk;dN9 z^E3HY_1;}Z5KxJ{g!xRM4;>}183lB2B>98kn^g`}+1u$G-L%=Xv@onWOnte|ljn zx!XI=ZlA1REA2mr=Y3k6hL^jQ=KA2;141>M551*2I$G<(H07H&$>g*s|5{i7`jk*9 z$2W-sQEx{Z1>jIro+O5Z!CT~$+?EIu^&alPOxJyqWZzFu%A|X^`-8m-Lo!FdgX$$g zoFRIcRJJA^kRc(7B=QrR5J^r)^<_T?{|hmFp1i$ILPYrMNoXV%u*h%)o?a6|eNl@X zkDxBG84XP1rW@^JBqi;mt8 zi4pXJ&3a!}q%o=G8>E_w{_!;WtX7TX{t(DU**pFWHb9^a+oU#r(`s&;7SeAt9>Fkg z(#RZ>Gel}v{=N$!-MLq2LCYv_wfNDmPvKFy6x3%451d)%NbuRpW1YujdZ*N5eTA7cV$FzP z?Fzx$80%gyC2BE7uFJ$fGRQpWSk*UifX-fZQdoG#6@}F2q>v;ras;!4xp=laSHjq? zeCN9J<>BW7Se!xzbY7i|tvr2%g)NnkQY8FcvN>(w;z>(Z;nS`VXeq%y}jX)k_dkWIbq zb|2+?PoF+6s*>b!S)n&^ojgZM*rRz9_mDj4mJ4aNIu}dBBkHkBB%I!_UZgE|B&Z$7 zF!k7FpLkDqy>2;XMsI?Ek1jlv)gR7n_NiU`LW-MgN0-Jfd%e7?Epo1e;pgSL7`b3> z!!ROsmL5-XO_;@KQTs)i`W-QH1`fRYYIp@_QgS`HtRNOIrgPr0R4Bw652C3gpfhgJ;Qn&a@u3YhJF0G3T3)%Y%k zE6~F#Z{cwnblF0^6vFV(d9TYo#P?Gj^GNm~Gm!redDsg`x3ufRP= zCtc8GXq7SX%o=xu$^?%ybRjdBTv+!-OhUy(D*eJ`gyNQpVBMtSZYq-M83!`&acf8}b-m$>`Ut84OdQ48>{MP*AG;sI`izEzhT zh^b4zpf2@?rIa!;VQ07c%KKboj3gU9!OE5)%0$xHh|Fi$_U&67h!x7faI$?$qv|HG4B1kDo%4zhOC~4H)paPx0+HKMyJ~#*S|;})_VZ{Be9s%?6u9I|$d=lZ4eDZCoUwn~jtJgY<&t_S z&b@z6wEUa4{sNSH@6qh%z4T7mEzJ$pUw+OM^l+P z+1ji2ok;NJ*Z-ZG=9nqBM~*<1$$^0zVI~>#GKOSaiHnGX_z0xbt4A5Fr_m+nWO%2< zy|7@%Xt^!;pPFWcIiI2(W*fGytUYC{Et|vB8Dgq6VN35yR9>m*zv7qN6;EMw3WmvX zljb2h5#EzHfbZd5rRU3xahsR8@Xs#`L7q1Qbo zrzPOmu~aR%tGpZhY2#0K*|>zuPbDOc^0&hPxzvi#E0A)FAyxx}S74rvL;&dGj`LPq~MZ zxM3?qQ)3m5XK~XAP4!G;cE^u4z)Li#U$@q(}bKOq-MKz{&JC%H(f34H+ zmwAf4T(aGL{nRNcud8MXbY2x3xHN8p?E`4D$IX)`7;2lSHj0U_=?KRMFah+gf1l<( zOHB|T7)wGnOfE1sVR0J04!t;5g@=}bgH(_@eqCXcwvGxy;T4J3x9-IUF>A!Fp6S~g zpZ$Tp$1SEgY|(Yx;*is*)Z$+L79N!%s=?zvgDaHv65AY4 z*}rUl-eL`R|A@{|NW~YM6pC~rgHSv3G)v!6^=>D+-#L+zoG_gv?quQl6EgO51iLmT zq;y6gKnO@6;&*f+Vj5a%U#3?^es552he>liG~6|dKPk!LHV?MZLMm*U zeYxuEk>f7Y(RBlh15aJr&*S7WT)3V;K9=x0yx#|q@eenn`(n&<87Q2l6E{j+!WC6O zcuGB#oJ_css6Jb<>Vp^0>{qG-{~mHG6_tcn^N@CZt&`j2;Wta4+_(^j*D^$(BX&3E z$s^c4hy(h!*;acSaDP0}sI&b8Lb?Z>=ST9eW!>W2*;D&F{cqZAleCf~#Ye(ORtD(s zdRnNL65zh=XKgV3MTr=`P%XJInz58qU?xN```OzpwFX`_U53-K)}8``Ze-ldJNk+~i8ypH(o*t@@$Bxpo)pAEnEy*vS%g6niCtPuihqt6RUxql+flcN=9qDbskFl6NPX z@1@^x_xlBACzNFO_bMzdBjkA$?r26cuYp*Wa4(%Z(#*Ih(YL$+* zPiVDOhj(e{$!WF1n_7}W6HYCVqJH>R99Qj<^DM8;Kt^#RJde6}ZIa6J6*$vHpd3JMGCcaf$Xs6;huyf#G>K{>9o{ zq-m`Dye#9CF(@j|`jl-c>z$F*YNuaC`hjoqaHTtWhZ4-(zd;}G{)F!ZkgcGO2$vEq z>L5zK(~_oAC-^ll^h0$;;P!nKHS6u~{p5s*ETM2H_1)W08mcKp}28OxyH-x2m z>t2O9Iue&}ju>yx&z&&9Ta_uW(Kp>iei(^oPY(IF=f4<7dxWPLLU`&0)A(xUB=EQz zQ}tf(QiA@yA-reWPRWSdYT9I~YXUTV#{W4h^a3LaTmIDck>81blEv_C9KTzt0Qb^=`6Pjl=;aEavc^n6!;r^FW%XY z%dvC!`+uhz>fNd`jWqL#o-szI>6c2=?#%6PUSH-xZ&y})HO)DPwAYW&Vzwo~K=OJg za}a@x*Uds+a(K&?z6G*M#QX{VBt6BqltW_>bCyDM9D+NFZ7h5FC^jpXhkX2-H=?Wb zL)P=I2`B6KHxXXFwfD|nd!9<)yixVS*hY5qo7Y0`d?&^jNuc@7Yb!D5w`_AnL=O3J zjRKB;LWuI|4~Gwa6W&o9As2)j)Zc$+f`uM|c)Vy-3bEVvAOK zjuJZ1H^+`R<$jf~dA?R-X{W)Ix5!e_JT+gSzU$Pm%9q-u^b5WH@lx~9vGOgVx)f=B z-t$}Eu2PRui?q6k@~3gU!q+T4zQFT}m814y8~=Q#*p)!jLSz!?624M*B&hQGgs->C z^4}uwdUy&(_QMX+-&yYbcH|;le9n6_2kDA#4nbM|f&<15YKH?eaRiEk$k@$-RMtoidW&59VJu z)){*pIQuTK+mty15^Hu;!x31lm3XGJ#0AnzQE$?{Au-oS`{{gMdsb)CLVLxGESX*8 z`w?pI)bY_LU+q_SR;xCzyN-}Z|h!a`#t?~L>)##e3n6lhG?)2do9NwzlGvCOF zO=o`P8!36gVC4=%;q(#k33xqye|T7)Q}@raPtDIg2wbfG?|6`$`?PXQbF0M>jp;mp zTC0}^*yxx6VNo3Mhcr{dd>KvrzN%q$x&dU%+n0#xR{cQgf!z%d+O21Jf z+3Y$pqFedgUKQ=@D3@=$c9|d>aGLvg&P5LHd?s6lOR|Io|6}>3%)EuG?FgMd7A?vh zMMaRDP!FUUXBP3k`7h;L$mh@M$@(LI&J|EV(nqpKDRD#j^GO!T7D}F=9)Mz2r9q$G^bM5O3#Nk4@Fq2T85MUK z4_ZWe_1^KNpLczx2sGhl$(YIz_bR}Iw94WP$-T%?q=j8i$ z{7Ih1L_csh?)k}hWU#F(`5kUok%uxY@ak}Hmi7-`r{#t%5lgEMFLW9b>bLgHmF-U+ zB+o5RhrC^_pf=5oN%G?!L&K)`uW0>q+qjh+8r8Q| z(=n?l(P4P^3VliZMl_jpcG@|yLVwkk_@DYFz1(3d37{<%?sd=bDtt6Aea-`qbWdqk zQi}@e^I`B@{6kzP&CPjg6wI2yUo$ifUP_i6)$JPm#JF=*Nr#jogK&|*6&BTtgsVn9 zT0QzU{!J4nN|lx)Kk5BioHyvFEo$LCqF!J1miImL(fc}5VEw2Qa-!>SP>_-LD-X-? zuI{`E%Hd#ka3OSbI>lGafdqPquzpWxD2n|dS}Eck`f-DRp)M%bdc zeW9ytqO0)!?sC1oYv+9`Eehs2qHx9a3$W$=^Nh*mYCrywwhu|G2(L)S<_~cujMuni zpS#5`XgU}3jgx8Hq)YUu<@G?Ue-HDTXLw#CSDT_|_ltMyBRU_U6poCxX)>QXqyJpa z_arF!9E&4%w7Zlv0P%=5#;IM^I#7`K6+e~9oM~lmos#|LUL4f<7y9X?G!AJr!Vqs! zw>`hDdgkumulwUuyEo_h_vQghpSgb@dU3Pe?y>&u-lxQjOuK)0Qp@0WCV>5tNt*o7PUJ*Z82}R`DkZc^3zG1Jq%=o)6xo@ z$D{o6VW%%!#XRSjf^|9;SKAl6kN_Mv|f3mTxu-;@4iER!qZF33^$Mt~&2~M*Ddri#9kU-Q>ahI?%ou zG2f%4gC|^1BTw2lJwDY*(P=(3=ImC;PCBF18OPO5sufMD$LnC4Q>wn@_1>}=v+7Rg zwa<*}WaZqWlrLx3PMquPr%Fn{agTKJRk)W!tLzzPvwd!FtF-D)BeT*c=84JcfN#LT zBz;$MvwzXJn(yBLLU(^KZF`eqC$%n3!aCn>5UJYkK`1V3-0$4UPem%NPRcy%S4SSi zT9&t;MR;0n9M7NCuQl`Jw0i0r?{sg2o%r)0o$ehtP>h}KtiP+%XZjD!Id*qRQHONj zGQ26+meTyZX21~d);+Y+)g|Wz>?0li!sG!F2k*=`3!tT^x{pQJ3#U8S4`(uaOD!ai zp!%42N?yt*1agZi(~HAw@={rM06yLUcu?(c=s zUwHFlA9>fwU;Vz3gHulpOx^w3;DOP?fyvP!GKZl71%nC-3KTgstl$8_@btjI)YuT= z#DVESUI#~}3wlfxro+V0beQ~rvP^z}&rxL?9VYJH4;)bBy&urW-CwbfyT4*7pYxQ@ zS<0_^%CFkTulvWZQ`4YoA_!B@SqBKI=QlmWZw>|Gm1CT& zp)mEt#Msz@FvxRMkFkj{pkcGAU_!wd6E-+LHclVLcpIDmB9n*tJIdcl{$AqmETsn~ z4n0ZZgMtl@aiUK#IfIj@X!OkBfdUcdMyO%(+~he+I7h;V)%6eCBz{=E<&~NShr+&9GsdVc5Hg^;M5#1gAaQY4Kmb66g{IEtW8gO3t7`iGFfR-Iy~^LUho*->@2ToI z@#BW-Q&nDt{9w@FfhUKqzH;;^!GQw`MhJ%WRv01}86^O5za;XxOE7p~WN>10@X^h| z$2L{P#MD7RG%)r0q&hQ1#C!g>UjEzqZO_e49QW^B5|0O~?H#%KVbXizJ zVu|X(eNCvcD`8|Bp76P;l7Rk&p%LH%`V)*PVCO*?dPu>;3La4~q2N&klM1F3Jg(p! z3Jxmx76tDlpt*qw>V*&pMJD(K19_XGd^yqU&>Oy zG%-Fs491R*Qou5PS&8H0R`$yi4^1CPseqlDzoKODk;c9<;Z95ZXvdDpC>_$L1rZwficHp%!DR<@{}S)TmzHm^g7Bk9vGPp2PZ27gSt(H28Qh8q~Z2hyi1-e86a( z)B4L(zyt70F;KRGzYP*;(+^h~rAi^f82Ri4-0(!l4eBAERRwYJ=b6*n<;;Q`_Jpb4cfTrE62$Lm^CkidPyG9O;2SwqY=QZBIQn2F6eAs#VP@ zLlOx{cv!-WqM)_yQG~hW(#syPUv@CqE0w9Y&~CQ4$b{PlOj0Y7_ImHiz9&%d>srC zLh>Zjlx5;I%jH=5b>sSD23io8M#cu&XO>XlfB-oGmg)gz4(TDC3q~Mj#|NbfJcT$> z>_UV|0&BVkM#*ahA@l=>rtba|o9fAX&WNY(!QW97Kcgy`oV)ilE5?Yv7o265N10`Q znkY@=VWp2Au*ZbZ+~(7tq@cOlw8iHa$s&ujdS7PEPBxe4lp@fQl(HgV2 z$HM_262~=$+6QMD0j$qWJvQ-3K!ZR@y!-2;#Eym`eT@S3fzeoiL8uLIm51tQroZNJE#SbQb1$?=X7X&~Ndd zar1|LXk?ta`+Z_b_Z~iQ;5~Q$04fjjarcMluFcETy$>kMkE+6x>W#*(>Q1UU;7ogy z_s%N#uv)%M|C!6FdtVqlFr?=d1$T)Z5@R@YU~~-og~zBOAZDrl0OydjKp-Me9|8=X zHVC_-_Q`vng`EMnFQAdYuj1S2BQSE097Tzrko>SLqxw_{vP-*X+71mfV7@;qc30w= zG@P?jC6h#SgdvPVxA(4448?3fl;ZvW)6hPkoV@o3UC-i$JOYG8qWnq^_1Hl}xz9Sv zeHIdz+GeQsSwM>%MofHu7(ED(eN4dFP_QG;M(>{-m5u^*?0=xakX{>|oThs*j&JgT z%3eiPrC;-mUl76y21EaWc^>-r3jUpff2-i%5PZw@L#jq~<^KtE>6_y3m>%oOLgZs1 z<{_hS_zP0LBZS+?($c8DJ3*@rq0hA;r1^lC!Kd%F9Fe|Ti1a~?=EDjC7Vc0OR4}9f zopUH)01RRA6Ocy({=C3Db??Gxza{8qqN5JUDh} zOj!pG@uFl^FEkx@!XHP)5?YP}Yh)YR7v>1B)~ma}JPfKoH}R;X(%(n;|AWc9|7h~= zuMLe*0_>c+`x~%Ox2|0V-u*uZV8s$NsFh6MtK6v*>?*766*Rh^2Z&hmgt@i2LmDY{vTgQ%^IdbgCi_`VZ=?nGN zV!6ey;eKFRKWaX`)2Q#18?C)*-s@}4dbQjtADNzSQLo@<&Eh|ZMrnQ zx!c-pl&5c%8_i0+rutep%G1@#TBFq1J2K60YEREpTjfTLA6cKPt=Biyhf-~$H}+by zv{k0kW{Y1A#yR%#KsdAejTavt5#uh5pp65GC#Ig@RhHs}r~u~vB-pA685#jy05I~M zi2{wuXUtJkH8L_hjtMvZ+(39=d2RjpsrAhlpFeZ#_|fN29)Ib?^J`~LAAkO6`P8Z7 zM>mf0-$gt_1EMR($5W&B0kIw6;IsZKCpJ(GI52ZfEb83LQdCS%EIzLpu z+9<7;t-h&ya}&eh%)L1a=Z8n|DV(Ltlcy#g9vQ|AddZC;hz9S&#x0Xrli=MoK~fMdRM< z1CyWdr@J;#yOC^Qwgj9W((4`%k3BvBTcAoJMwo;7$$K9k3k8NTF?Fvr7OeA=_sZ({ z=;-N@cO9CT`tan*$xp;4>@oG>(TT}Z;}er-C#J4Uo}IcnwL10M)a9uQQ?DIjG?<8{ z>u5%0YD>p^3c48;fy{}3Mo@H6hDf#lN9hfHcfC02W$%ExJPK7SMIIa(ijgu`Q!G+q zY93fj-P;wc58-tg973p_8w2_7?dnZqz4w`^dDM$19~v2+8lHG^>hAYWO+w;AyAixG zF#GQX_`Ha*!1B;%lx8#jeM}qLIJqb9{ir{F0*FpsGqDF29~ze4LmO1{nbA>Md6c!k zY1p#fMHJ(zL!Tgs9^kk*_2~FO7>?)$-^0fSCf@rK(wryn{TU+==w@*A$p@qbegf|S zbDn?ToHGxc^UMS1eCdI6>W1r)0y^-o!8Zi0#ktj4NFJJ+km5N}FcooFLu z1Av_8#0dJbO~N2EfI*B#Ty7)#FERa2z2nocAOG*M5i~`Aojirx>q%yBWF%t1U(+0o zK0I<@REo>urPCY+PR65F-&E66eD~RwoX@h z`TyEGpWnEyDvrMyd*;qeW*pCR96Kasx@aY;g2W;V1bn{d&U-UXK#hom z5cJx9KkmKn{y68}bI$$VAC`O4bQJVW&1Jm`!DXWQ>)N_!l`Nj-$!9b$+r$bjlX1?hx0Qd08Ao^oOL*Jv*M zO0*1$Qgvl3B_Gjn#99))MO%~@M3Es{yZ4N;k!0cLTveuV3)_F}DZPLeZ&0p1*JsV~F}fPYfS3PD;pFC|n{U{t6*+nixWR`@;z*oQK{) zc9b>m@~CK9D76E%54)Gb?p)YCw9l3G`6Plb9IqZJ0EbOUc+ygSXq_o^nAx=JpNI>- zgH`Ag=4HO+v_H|`wts~!^zfN&p?}vH`gZG9Cu+3Y>ubx6O{}GjXk)c?Ykeh(p25yp z%LL0;|CQYqZLHl`#yabnd(U8xd7~!me&{jEKchp!?ng3{>3I$=DhRf4c}k(MfH=(r z!!K_(Sy4<&%Z#Y+N~sz+0W>leR3vv&C5ui6j#EeJ0%{T0KUHZDBfV$u<4DcKj6S~; z#u*bOJ9fQe_)e{c#>Q;X3>bFeepgY(G-$I2s;4mrWD#J?OZG&LAtFolpq`*gE-@1>_-XEOQQ{=%t!Eaj29b4#N$?Av`Kux zAOVkM0`mf3#s?U(#8YUA9Y18@c`TrGeRC=7zH7W7${sMJ_^|&ik7kCZgVE_gKgALS zG5l&mmXSxQyTZ4UOdh1sANc6WEsZV(mqx#z zM!)Z)C$}{E{c!t!8vS7!{h^PZ+@z1TAJz`K5;CmUdQxtqjj9VN^D(jza7cY8(H$`C z%oRqFv}h3p@Wz}~krqM#bCYFfSglvA`^5L1Y=~H;4PtF$T<%z0$#lj*DE#~g;+N9A zmnF814%K3%Z#)c1V4*PM%2~MkqL{1SNo(_y{kCLnGyMc9FiXE=W>O_sv?uVzq(7>~ zEuy+CxuQ!@Q?C;QpA;M3~;)%Zmk6d(?FO&Vpxo8iq8#%_Eej89IP z42oa17XJ-1O|#eC^8#kWx59V<)K$OnNxd>`@*P6KG7`f09JlxaC^EP2ikRMlniX7I z@Ok>H@rDwhei($ruZC4Db_|FrwsAFXRGd?iJc*4Z71#G-<|HuIsN!!K0SXu50Aq=e z57a-PWOCW%qudW>g6V&*3;N??tMyG&=`#5+Cyu&(;Us$Y4*c@Ukk%pnAI8_Ga>as! zpPt1~JUr@E_+GTL*vt$>xhjc6y1zRM1SE+ z4rM)RxK@@c$g6~^aH3Ce#KQhDsOYn9KjN1UDaF92mdKRbZ;311+bV(D-J$>)^R3eF|0t>@m!{eC zsK9bQBx4m~F9ahEE150~2q>|tCkW8Uph9EjDvsDzm~a*4#aB5)p^ZL7l8OJjp%Syx zCB_QS&lrKA!E&3VJD{?}F;t`*GKYpPE0e@UZUV@=&%eZvH&F)Sd*<44q*A&JM#rJ{er}!Pi-#}vO5!w*ZgZuTAsLvolgA6oD%+%E`QPGkuHDj@oKZ=a$*VS zGD*-Yl%+9k(~D37WW9AaO_XvUv3%rVJP%P9-Ax7yeMZ^mZ)+68yhPfY@?to|r|j|{ zC?ZoF^cEW<=P6q(L^)#O0?nM9(ogr3R2wzz9{*$D`s&k&b{iqyZ;Q-(V#m z;$R9p$=f?QLtbc5ii0pUt zIKDDJdvfW-@!9$LMx#03JUKVN0)&H}WhMj10}~mzX<@Hdv-`i!tbw?E^>W?Zv{>5(&pMOUS zb8f$|m=?EwrFk9Ldu4H>v%Cm-7F$c-U%U)%+t_F>8rkaj*4ryf%He;U7>cjfRB(~2c0LZ~ znVbh%H|j}_9HB*IY%RM#_d%T4eGpwhDb-Gt$Ja?+J8?yK<&o6a?-Tr_yv_s_(%60c z+v7Fs*Q?GRwRy@p$NpQj|A3vitbI|l#HufKLkqfl$w9RbJr|$oc G0{;L^5w-FF diff --git a/distribution/Ionic.Zip.xml b/distribution/Ionic.Zip.xml deleted file mode 100644 index 3e0c751c..00000000 --- a/distribution/Ionic.Zip.xml +++ /dev/null @@ -1,18149 +0,0 @@ - - - - Ionic.Zip - - - -

- An enum that specifies the source of the ZipEntry. - - - - - Default value. Invalid on a bonafide ZipEntry. - - - - - The entry was instantiated by calling AddFile() or another method that - added an entry from the filesystem. - - - - - The entry was instantiated via or - . - - - - - The ZipEntry was instantiated by reading a zipfile. - - - - - The content for the ZipEntry will be or was provided by the WriteDelegate. - - - - - The content for the ZipEntry will be obtained from the stream dispensed by the OpenDelegate. - The entry was instantiated via . - - - - - The content for the ZipEntry will be or was obtained from a ZipOutputStream. - - - - - Provides a stream metaphor for generating zip files. - - - - - This class writes zip files, as defined in the specification - for zip files described by PKWare. The compression for this - implementation is provided by a managed-code version of Zlib, included with - DotNetZip in the classes in the Ionic.Zlib namespace. - - - - This class provides an alternative programming model to the one enabled by the - class. Use this when creating zip files, as an - alternative to the class, when you would like to use a - Stream type to write the zip file. - - - - Both the ZipOutputStream class and the ZipFile class can be used - to create zip files. Both of them support many of the common zip features, - including Unicode, different compression levels, and ZIP64. They provide - very similar performance when creating zip files. - - - - The ZipFile class is generally easier to use than - ZipOutputStream and should be considered a higher-level interface. For - example, when creating a zip file via calls to the PutNextEntry() and - Write() methods on the ZipOutputStream class, the caller is - responsible for opening the file, reading the bytes from the file, writing - those bytes into the ZipOutputStream, setting the attributes on the - ZipEntry, and setting the created, last modified, and last accessed - timestamps on the zip entry. All of these things are done automatically by a - call to ZipFile.AddFile(). - For this reason, the ZipOutputStream is generally recommended for use - only when your application emits arbitrary data, not necessarily data from a - filesystem file, directly into a zip file, and does so using a Stream - metaphor. - - - - Aside from the differences in programming model, there are other - differences in capability between the two classes. - - - - - ZipFile can be used to read and extract zip files, in addition to - creating zip files. ZipOutputStream cannot read zip files. If you want - to use a stream to read zip files, check out the class. - - - - ZipOutputStream does not support the creation of segmented or spanned - zip files. - - - - ZipOutputStream cannot produce a self-extracting archive. - - - - - Be aware that the ZipOutputStream class implements the interface. In order for - ZipOutputStream to produce a valid zip file, you use use it within - a using clause (Using in VB), or call the Dispose() method - explicitly. See the examples for how to employ a using clause. - - - - Also, a note regarding compression performance: On the desktop .NET - Framework, DotNetZip can use a multi-threaded compression implementation - that provides significant speed increases on large files, over 300k or so, - at the cost of increased memory use at runtime. (The output of the - compression is almost exactly the same size). But, the multi-threaded - approach incurs a performance hit on smaller files. There's no way for the - ZipOutputStream to know whether parallel compression will be beneficial, - because the ZipOutputStream does not know how much data you will write - through the stream. You may wish to set the property to zero, if you are compressing - large files through ZipOutputStream. This will cause parallel - compression to be used, always. - - - - - - Create a ZipOutputStream, wrapping an existing stream. - - - - - The class is generally easier to use when creating - zip files. The ZipOutputStream offers a different metaphor for creating a - zip file, based on the class. - - - - - - The stream to wrap. It must be writable. This stream will be closed at - the time the ZipOutputStream is closed. - - - - - This example shows how to create a zip file, using the - ZipOutputStream class. - - - private void Zipup() - { - if (filesToZip.Count == 0) - { - System.Console.WriteLine("Nothing to do."); - return; - } - - using (var raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) - { - using (var output= new ZipOutputStream(raw)) - { - output.Password = "VerySecret!"; - output.Encryption = EncryptionAlgorithm.WinZipAes256; - - foreach (string inputFileName in filesToZip) - { - System.Console.WriteLine("file: {0}", inputFileName); - - output.PutNextEntry(inputFileName); - using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Write )) - { - byte[] buffer= new byte[2048]; - int n; - while ((n= input.Read(buffer,0,buffer.Length)) > 0) - { - output.Write(buffer,0,n); - } - } - } - } - } - } - - - - Private Sub Zipup() - Dim outputFileName As String = "XmlData.zip" - Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") - If (filesToZip.Length = 0) Then - Console.WriteLine("Nothing to do.") - Else - Using raw As FileStream = File.Open(outputFileName, FileMode.Create, FileAccess.ReadWrite) - Using output As ZipOutputStream = New ZipOutputStream(raw) - output.Password = "VerySecret!" - output.Encryption = EncryptionAlgorithm.WinZipAes256 - Dim inputFileName As String - For Each inputFileName In filesToZip - Console.WriteLine("file: {0}", inputFileName) - output.PutNextEntry(inputFileName) - Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) - Dim n As Integer - Dim buffer As Byte() = New Byte(2048) {} - Do While (n = input.Read(buffer, 0, buffer.Length) > 0) - output.Write(buffer, 0, n) - Loop - End Using - Next - End Using - End Using - End If - End Sub - - - - - - Create a ZipOutputStream that writes to a filesystem file. - - - - The class is generally easier to use when creating - zip files. The ZipOutputStream offers a different metaphor for creating a - zip file, based on the class. - - - - The name of the zip file to create. - - - - - This example shows how to create a zip file, using the - ZipOutputStream class. - - - private void Zipup() - { - if (filesToZip.Count == 0) - { - System.Console.WriteLine("Nothing to do."); - return; - } - - using (var output= new ZipOutputStream(outputFileName)) - { - output.Password = "VerySecret!"; - output.Encryption = EncryptionAlgorithm.WinZipAes256; - - foreach (string inputFileName in filesToZip) - { - System.Console.WriteLine("file: {0}", inputFileName); - - output.PutNextEntry(inputFileName); - using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, - FileShare.Read | FileShare.Write )) - { - byte[] buffer= new byte[2048]; - int n; - while ((n= input.Read(buffer,0,buffer.Length)) > 0) - { - output.Write(buffer,0,n); - } - } - } - } - } - - - - Private Sub Zipup() - Dim outputFileName As String = "XmlData.zip" - Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") - If (filesToZip.Length = 0) Then - Console.WriteLine("Nothing to do.") - Else - Using output As ZipOutputStream = New ZipOutputStream(outputFileName) - output.Password = "VerySecret!" - output.Encryption = EncryptionAlgorithm.WinZipAes256 - Dim inputFileName As String - For Each inputFileName In filesToZip - Console.WriteLine("file: {0}", inputFileName) - output.PutNextEntry(inputFileName) - Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) - Dim n As Integer - Dim buffer As Byte() = New Byte(2048) {} - Do While (n = input.Read(buffer, 0, buffer.Length) > 0) - output.Write(buffer, 0, n) - Loop - End Using - Next - End Using - End If - End Sub - - - - - - Create a ZipOutputStream. - - - - See the documentation for the ZipOutputStream(Stream) - constructor for an example. - - - - The stream to wrap. It must be writable. - - - - true if the application would like the stream - to remain open after the ZipOutputStream has been closed. - - - - Provides a string representation of the instance. - - - This can be useful for debugging purposes. - - - a string representation of the instance. - - - - Returns true if an entry by the given name has already been written - to the ZipOutputStream. - - - - The name of the entry to scan for. - - - - true if an entry by the given name has already been written. - - - - - Write the data from the buffer to the stream. - - - - As the application writes data into this stream, the data may be - compressed and encrypted before being written out to the underlying - stream, depending on the settings of the - and the properties. - - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Specify the name of the next entry that will be written to the zip file. - - - - - Call this method just before calling , to - specify the name of the entry that the next set of bytes written to - the ZipOutputStream belongs to. All subsequent calls to Write, - until the next call to PutNextEntry, - will be inserted into the named entry in the zip file. - - - - If the used in PutNextEntry() ends in - a slash, then the entry added is marked as a directory. Because directory - entries do not contain data, a call to Write(), before an - intervening additional call to PutNextEntry(), will throw an - exception. - - - - If you don't call Write() between two calls to - PutNextEntry(), the first entry is inserted into the zip file as a - file of zero size. This may be what you want. - - - - Because PutNextEntry() closes out the prior entry, if any, this - method may throw if there is a problem with the prior entry. - - - - This method returns the ZipEntry. You can modify public properties - on the ZipEntry, such as , , and so on, until the first call to - ZipOutputStream.Write(), or until the next call to - PutNextEntry(). If you modify the ZipEntry after - having called Write(), you may get a runtime exception, or you may - silently get an invalid zip archive. - - - - - - - This example shows how to create a zip file, using the - ZipOutputStream class. - - - private void Zipup() - { - using (FileStream fs raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) - { - using (var output= new ZipOutputStream(fs)) - { - output.Password = "VerySecret!"; - output.Encryption = EncryptionAlgorithm.WinZipAes256; - output.PutNextEntry("entry1.txt"); - byte[] buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #1."); - output.Write(buffer,0,buffer.Length); - output.PutNextEntry("entry2.txt"); // this will be zero length - output.PutNextEntry("entry3.txt"); - buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #3."); - output.Write(buffer,0,buffer.Length); - } - } - } - - - - - The name of the entry to be added, including any path to be used - within the zip file. - - - - The ZipEntry created. - - - - - - Dispose the stream - - - - - This method writes the Zip Central directory, then closes the stream. The - application must call Dispose() (or Close) in order to produce a valid zip file. - - - - Typically the application will call Dispose() implicitly, via a using - statement in C#, or a Using statement in VB. - - - - - set this to true, always. - - - - This is a no-op. - - - - - This method always throws a NotSupportedException. - - ignored - ignored - ignored - nothing - - - - This method always throws a NotSupportedException. - - ignored - ignored - nothing - - - - This method always throws a NotSupportedException. - - ignored - - - - Sets the password to be used on the ZipOutputStream instance. - - - - - - When writing a zip archive, this password is applied to the entries, not - to the zip archive itself. It applies to any ZipEntry subsequently - written to the ZipOutputStream. - - - - Using a password does not encrypt or protect the "directory" of the - archive - the list of entries contained in the archive. If you set the - Password property, the password actually applies to individual - entries that are added to the archive, subsequent to the setting of this - property. The list of filenames in the archive that is eventually created - will appear in clear text, but the contents of the individual files are - encrypted. This is how Zip encryption works. - - - - If you set this property, and then add a set of entries to the archive via - calls to PutNextEntry, then each entry is encrypted with that - password. You may also want to change the password between adding - different entries. If you set the password, add an entry, then set the - password to null (Nothing in VB), and add another entry, the - first entry is encrypted and the second is not. - - - - When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added - to the ZipFile. If you set the Password to a non-null value and do not - set , then PKZip 2.0 ("Weak") encryption is used. - This encryption is relatively weak but is very interoperable. If - you set the password to a null value (Nothing in VB), - Encryption is reset to None. - - - - Special case: if you wrap a ZipOutputStream around a non-seekable stream, - and use encryption, and emit an entry of zero bytes, the Close() or - PutNextEntry() following the entry will throw an exception. - - - - - - - The Encryption to use for entries added to the ZipOutputStream. - - - - - The specified Encryption is applied to the entries subsequently - written to the ZipOutputStream instance. - - - - If you set this to something other than - EncryptionAlgorithm.None, you will also need to set the - to a non-null, non-empty value in - order to actually get encryption on the entry. - - - - - ZipOutputStream.Password - ZipEntry.Encryption - - - - Size of the work buffer to use for the ZLIB codec during compression. - - - - Setting this may affect performance. For larger files, setting this to a - larger size may improve performance, but I'm not sure. Sorry, I don't - currently have good recommendations on how to set it. You can test it if - you like. - - - - - The compression strategy to use for all entries. - - - - Set the Strategy used by the ZLIB-compatible compressor, when compressing - data for the entries in the zip archive. Different compression strategies - work better on different sorts of data. The strategy parameter can affect - the compression ratio and the speed of compression but not the correctness - of the compresssion. For more information see . - - - - - The type of timestamp attached to the ZipEntry. - - - - Set this in order to specify the kind of timestamp that should be emitted - into the zip file for each entry. - - - - - Sets the compression level to be used for entries subsequently added to - the zip archive. - - - - - Varying the compression level used on entries can affect the - size-vs-speed tradeoff when compression and decompressing data streams - or files. - - - - As with some other properties on the ZipOutputStream class, like , and , - setting this property on a ZipOutputStream - instance will cause the specified CompressionLevel to be used on all - items that are subsequently added to the - ZipOutputStream instance. - - - - If you do not set this property, the default compression level is used, - which normally gives a good balance of compression efficiency and - compression speed. In some tests, using BestCompression can - double the time it takes to compress, while delivering just a small - increase in compression efficiency. This behavior will vary with the - type of data you compress. If you are in doubt, just leave this setting - alone, and accept the default. - - - - - - The compression method used on each entry added to the ZipOutputStream. - - - - - A comment attached to the zip archive. - - - - - - The application sets this property to specify a comment to be embedded - into the generated zip archive. - - - - According to PKWARE's - zip specification, the comment is not encrypted, even if there is a - password set on the zip file. - - - - The specification does not describe how to indicate the encoding used - on a comment string. Many "compliant" zip tools and libraries use - IBM437 as the code page for comments; DotNetZip, too, follows that - practice. On the other hand, there are situations where you want a - Comment to be encoded with something else, for example using code page - 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the - comment following the same procedure it follows for encoding - filenames: (a) if is - Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the - alternate encoding (). (c) if is AsNecessary, it uses the - alternate encoding only if the default encoding is not sufficient for - encoding the comment - in other words if decoding the result does not - produce the original string. This decision is taken at the time of - the call to ZipFile.Save(). - - - - - - - Specify whether to use ZIP64 extensions when saving a zip archive. - - - - - The default value for the property is . is - safest, in the sense that you will not get an Exception if a - pre-ZIP64 limit is exceeded. - - - - You must set this property before calling Write(). - - - - - - - Indicates whether ZIP64 extensions were used when saving the zip archive. - - - - The value is defined only after the ZipOutputStream has been closed. - - - - - Whether the ZipOutputStream should use case-insensitive comparisons when - checking for uniqueness of zip entries. - - - - - Though the zip specification doesn't prohibit zipfiles with duplicate - entries, Sane zip files have no duplicates, and the DotNetZip library - cannot create zip files with duplicate entries. If an application attempts - to call with a name that duplicates one - already used within the archive, the library will throw an Exception. - - - This property allows the application to specify whether the - ZipOutputStream instance considers ordinal case when checking for - uniqueness of zip entries. - - - - - - Indicates whether to encode entry filenames and entry comments using - Unicode (UTF-8). - - - - - The - PKWare zip specification provides for encoding file names and file - comments in either the IBM437 code page, or in UTF-8. This flag selects - the encoding according to that specification. By default, this flag is - false, and filenames and comments are encoded into the zip file in the - IBM437 codepage. Setting this flag to true will specify that filenames - and comments that cannot be encoded with IBM437 will be encoded with - UTF-8. - - - - Zip files created with strict adherence to the PKWare specification with - respect to UTF-8 encoding can contain entries with filenames containing - any combination of Unicode characters, including the full range of - characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other - alphabets. However, because at this time, the UTF-8 portion of the PKWare - specification is not broadly supported by other zip libraries and - utilities, such zip files may not be readable by your favorite zip tool or - archiver. In other words, interoperability will decrease if you set this - flag to true. - - - - In particular, Zip files created with strict adherence to the PKWare - specification with respect to UTF-8 encoding will not work well with - Explorer in Windows XP or Windows Vista, because Windows compressed - folders, as far as I know, do not support UTF-8 in zip files. Vista can - read the zip files, but shows the filenames incorrectly. Unpacking from - Windows Vista Explorer will result in filenames that have rubbish - characters in place of the high-order UTF-8 bytes. - - - - Also, zip files that use UTF-8 encoding will not work well with Java - applications that use the java.util.zip classes, as of v5.0 of the Java - runtime. The Java runtime does not correctly implement the PKWare - specification in this regard. - - - - As a result, we have the unfortunate situation that "correct" behavior by - the DotNetZip library with regard to Unicode encoding of filenames during - zip creation will result in zip files that are readable by strictly - compliant and current tools (for example the most recent release of the - commercial WinZip tool); but these zip files will not be readable by - various other tools or libraries, including Windows Explorer. - - - - The DotNetZip library can read and write zip files with UTF8-encoded - entries, according to the PKware spec. If you use DotNetZip for both - creating and reading the zip file, and you use UTF-8, there will be no - loss of information in the filenames. For example, using a self-extractor - created by this library will allow you to unpack files correctly with no - loss of information in the filenames. - - - - If you do not set this flag, it will remain false. If this flag is false, - the ZipOutputStream will encode all filenames and comments using - the IBM437 codepage. This can cause "loss of information" on some - filenames, but the resulting zipfile will be more interoperable with other - utilities. As an example of the loss of information, diacritics can be - lost. The o-tilde character will be down-coded to plain o. The c with a - cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. - Likewise, the O-stroke character (Unicode 248), used in Danish and - Norwegian, will be down-coded to plain o. Chinese characters cannot be - represented in codepage IBM437; when using the default encoding, Chinese - characters in filenames will be represented as ?. These are all examples - of "information loss". - - - - The loss of information associated to the use of the IBM437 encoding is - inconvenient, and can also lead to runtime errors. For example, using - IBM437, any sequence of 4 Chinese characters will be encoded as ????. If - your application creates a ZipOutputStream, does not set the - encoding, then adds two files, each with names of four Chinese characters - each, this will result in a duplicate filename exception. In the case - where you add a single file with a name containing four Chinese - characters, the zipfile will save properly, but extracting that file - later, with any zip tool, will result in an error, because the question - mark is not legal for use within filenames on Windows. These are just a - few examples of the problems associated to loss of information. - - - - This flag is independent of the encoding of the content within the entries - in the zip file. Think of the zip file as a container - it supports an - encoding. Within the container are other "containers" - the file entries - themselves. The encoding within those entries is independent of the - encoding of the zip archive container for those entries. - - - - Rather than specify the encoding in a binary fashion using this flag, an - application can specify an arbitrary encoding via the property. Setting the encoding - explicitly when creating zip archives will result in non-compliant zip - files that, curiously, are fairly interoperable. The challenge is, the - PKWare specification does not provide for a way to specify that an entry - in a zip archive uses a code page that is neither IBM437 nor UTF-8. - Therefore if you set the encoding explicitly when creating a zip archive, - you must take care upon reading the zip archive to use the same code page. - If you get it wrong, the behavior is undefined and may result in incorrect - filenames, exceptions, stomach upset, hair loss, and acne. - - - - - - - The text encoding to use when emitting entries into the zip archive, for - those entries whose filenames or comments cannot be encoded with the - default (IBM437) encoding. - - - - - In its - zip specification, PKWare describes two options for encoding - filenames and comments: using IBM437 or UTF-8. But, some archiving tools - or libraries do not follow the specification, and instead encode - characters using the system default code page. For example, WinRAR when - run on a machine in Shanghai may encode filenames with the Big-5 Chinese - (950) code page. This behavior is contrary to the Zip specification, but - it occurs anyway. - - - - When using DotNetZip to write zip archives that will be read by one of - these other archivers, set this property to specify the code page to use - when encoding the and for each ZipEntry in the zip file, for - values that cannot be encoded with the default codepage for zip files, - IBM437. This is why this property is "provisional". In all cases, IBM437 - is used where possible, in other words, where no loss of data would - result. It is possible, therefore, to have a given entry with a - Comment encoded in IBM437 and a FileName encoded with the - specified "provisional" codepage. - - - - Be aware that a zip file created after you've explicitly set the - ProvisionalAlternateEncoding property to a value other than - IBM437 may not be compliant to the PKWare specification, and may not be - readable by compliant archivers. On the other hand, many (most?) - archivers are non-compliant and can read zip files created in arbitrary - code pages. The trick is to use or specify the proper codepage when - reading the zip. - - - - When creating a zip archive using this library, it is possible to change - the value of ProvisionalAlternateEncoding between each entry you - add, and between adding entries and the call to Close(). Don't do - this. It will likely result in a zipfile that is not readable. For best - interoperability, either leave ProvisionalAlternateEncoding - alone, or specify it only once, before adding any entries to the - ZipOutputStream instance. There is one exception to this - recommendation, described later. - - - - When using an arbitrary, non-UTF8 code page for encoding, there is no - standard way for the creator application - whether DotNetZip, WinZip, - WinRar, or something else - to formally specify in the zip file which - codepage has been used for the entries. As a result, readers of zip files - are not able to inspect the zip file and determine the codepage that was - used for the entries contained within it. It is left to the application - or user to determine the necessary codepage when reading zip files encoded - this way. If you use an incorrect codepage when reading a zipfile, you - will get entries with filenames that are incorrect, and the incorrect - filenames may even contain characters that are not legal for use within - filenames in Windows. Extracting entries with illegal characters in the - filenames will lead to exceptions. It's too bad, but this is just the way - things are with code pages in zip files. Caveat Emptor. - - - - One possible approach for specifying the code page for a given zip file is - to describe the code page in a human-readable form in the Zip comment. For - example, the comment may read "Entries in this archive are encoded in the - Big5 code page". For maximum interoperability, the zip comment in this - case should be encoded in the default, IBM437 code page. In this case, - the zip comment is encoded using a different page than the filenames. To - do this, Specify ProvisionalAlternateEncoding to your desired - region-specific code page, once before adding any entries, and then set - the property and reset - ProvisionalAlternateEncoding to IBM437 before calling Close(). - - - - - - A Text Encoding to use when encoding the filenames and comments for - all the ZipEntry items, during a ZipFile.Save() operation. - - - - Whether the encoding specified here is used during the save depends - on . - - - - - - A flag that tells if and when this instance should apply - AlternateEncoding to encode the filenames and comments associated to - of ZipEntry objects contained within this instance. - - - - - The default text encoding used in zip archives. It is numeric 437, also - known as IBM437. - - - - - - The size threshold for an entry, above which a parallel deflate is used. - - - - - - DotNetZip will use multiple threads to compress any ZipEntry, when - the CompressionMethod is Deflate, and if the entry is - larger than the given size. Zero means "always use parallel - deflate", while -1 means "never use parallel deflate". - - - - If the entry size cannot be known before compression, as with any entry - added via a ZipOutputStream, then Parallel deflate will never be - performed, unless the value of this property is zero. - - - - A parallel deflate operations will speed up the compression of - large files, on computers with multiple CPUs or multiple CPU - cores. For files above 1mb, on a dual core or dual-cpu (2p) - machine, the time required to compress the file can be 70% of the - single-threaded deflate. For very large files on 4p machines the - compression can be done in 30% of the normal time. The downside - is that parallel deflate consumes extra memory during the deflate, - and the deflation is slightly less effective. - - - - Parallel deflate tends to not be as effective as single-threaded deflate - because the original data stream is split into multiple independent - buffers, each of which is compressed in parallel. But because they are - treated independently, there is no opportunity to share compression - dictionaries, and additional framing bytes must be added to the output - stream. For that reason, a deflated stream may be slightly larger when - compressed using parallel deflate, as compared to a traditional - single-threaded deflate. For files of about 512k, the increase over the - normal deflate is as much as 5% of the total compressed size. For larger - files, the difference can be as small as 0.1%. - - - - Multi-threaded compression does not give as much an advantage when using - Encryption. This is primarily because encryption tends to slow down - the entire pipeline. Also, multi-threaded compression gives less of an - advantage when using lower compression levels, for example . You may have to perform - some tests to determine the best approach for your situation. - - - - The default value for this property is -1, which means parallel - compression will not be performed unless you set it to zero. - - - - - - - The maximum number of buffer pairs to use when performing - parallel compression. - - - - - This property sets an upper limit on the number of memory - buffer pairs to create when performing parallel - compression. The implementation of the parallel - compression stream allocates multiple buffers to - facilitate parallel compression. As each buffer fills up, - the stream uses - ThreadPool.QueueUserWorkItem() to compress those - buffers in a background threadpool thread. After a buffer - is compressed, it is re-ordered and written to the output - stream. - - - - A higher number of buffer pairs enables a higher degree of - parallelism, which tends to increase the speed of compression on - multi-cpu computers. On the other hand, a higher number of buffer - pairs also implies a larger memory consumption, more active worker - threads, and a higher cpu utilization for any compression. This - property enables the application to limit its memory consumption and - CPU utilization behavior depending on requirements. - - - - For each compression "task" that occurs in parallel, there are 2 - buffers allocated: one for input and one for output. This property - sets a limit for the number of pairs. The total amount of storage - space allocated for buffering will then be (N*S*2), where N is the - number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer - pairs per CPU core, so if your machine has 4 cores, and you retain - the default buffer size of 128k, then the - ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer - memory in total, or 4mb, in blocks of 128kb. If you then set this - property to 8, then the number will be 8 * 2 * 128kb of buffer - memory, or 2mb. - - - - CPU utilization will also go up with additional buffers, because a - larger number of buffer pairs allows a larger number of background - threads to compress in parallel. If you find that parallel - compression is consuming too much memory or CPU, you can adjust this - value downward. - - - - The default value is 16. Different values may deliver better or - worse results, depending on your priorities and the dynamic - performance characteristics of your storage and compute resources. - - - - This property is not the number of buffer pairs to use; it is an - upper limit. An illustration: Suppose you have an application that - uses the default value of this property (which is 16), and it runs - on a machine with 2 CPU cores. In that case, DotNetZip will allocate - 4 buffer pairs per CPU core, for a total of 8 pairs. The upper - limit specified by this property has no effect. - - - - The application can set this value at any time, but it is - effective only if set before calling - ZipOutputStream.Write() for the first time. - - - - - - - - - Always returns false. - - - - - Always returns false. - - - - - Always returns true. - - - - - Always returns a NotSupportedException. - - - - - Setting this property always returns a NotSupportedException. Getting it - returns the value of the Position on the underlying stream. - - - - - Provides a stream metaphor for reading zip files. - - - - - This class provides an alternative programming model for reading zip files to - the one enabled by the class. Use this when reading zip - files, as an alternative to the class, when you would - like to use a Stream class to read the file. - - - - Some application designs require a readable stream for input. This stream can - be used to read a zip file, and extract entries. - - - - Both the ZipInputStream class and the ZipFile class can be used - to read and extract zip files. Both of them support many of the common zip - features, including Unicode, different compression levels, and ZIP64. The - programming models differ. For example, when extracting entries via calls to - the GetNextEntry() and Read() methods on the - ZipInputStream class, the caller is responsible for creating the file, - writing the bytes into the file, setting the attributes on the file, and - setting the created, last modified, and last accessed timestamps on the - file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the - ZipInputStream is generally recommended for when your application wants - to extract the data, without storing that data into a file. - - - - Aside from the obvious differences in programming model, there are some - differences in capability between the ZipFile class and the - ZipInputStream class. - - - - - ZipFile can be used to create or update zip files, or read and - extract zip files. ZipInputStream can be used only to read and - extract zip files. If you want to use a stream to create zip files, check - out the . - - - - ZipInputStream cannot read segmented or spanned - zip files. - - - - ZipInputStream will not read Zip file comments. - - - - When reading larger files, ZipInputStream will always underperform - ZipFile. This is because the ZipInputStream does a full scan on the - zip file, while the ZipFile class reads the central directory of the - zip file. - - - - - - - - - Create a ZipInputStream, wrapping it around an existing stream. - - - - - - While the class is generally easier - to use, this class provides an alternative to those - applications that want to read from a zipfile directly, - using a . - - - - Both the ZipInputStream class and the ZipFile class can be used - to read and extract zip files. Both of them support many of the common zip - features, including Unicode, different compression levels, and ZIP64. The - programming models differ. For example, when extracting entries via calls to - the GetNextEntry() and Read() methods on the - ZipInputStream class, the caller is responsible for creating the file, - writing the bytes into the file, setting the attributes on the file, and - setting the created, last modified, and last accessed timestamps on the - file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the - ZipInputStream is generally recommended for when your application wants - to extract the data, without storing that data into a file. - - - - Aside from the obvious differences in programming model, there are some - differences in capability between the ZipFile class and the - ZipInputStream class. - - - - - ZipFile can be used to create or update zip files, or read and extract - zip files. ZipInputStream can be used only to read and extract zip - files. If you want to use a stream to create zip files, check out the . - - - - ZipInputStream cannot read segmented or spanned - zip files. - - - - ZipInputStream will not read Zip file comments. - - - - When reading larger files, ZipInputStream will always underperform - ZipFile. This is because the ZipInputStream does a full scan on the - zip file, while the ZipFile class reads the central directory of the - zip file. - - - - - - - - The stream to read. It must be readable. This stream will be closed at - the time the ZipInputStream is closed. - - - - - This example shows how to read a zip file, and extract entries, using the - ZipInputStream class. - - - private void Unzip() - { - byte[] buffer= new byte[2048]; - int n; - using (var raw = File.Open(inputFileName, FileMode.Open, FileAccess.Read)) - { - using (var input= new ZipInputStream(raw)) - { - ZipEntry e; - while (( e = input.GetNextEntry()) != null) - { - if (e.IsDirectory) continue; - string outputPath = Path.Combine(extractDir, e.FileName); - using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) - { - while ((n= input.Read(buffer, 0, buffer.Length)) > 0) - { - output.Write(buffer,0,n); - } - } - } - } - } - } - - - - Private Sub UnZip() - Dim inputFileName As String = "MyArchive.zip" - Dim extractDir As String = "extract" - Dim buffer As Byte() = New Byte(2048) {} - Using raw As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read) - Using input As ZipInputStream = New ZipInputStream(raw) - Dim e As ZipEntry - Do While (Not e = input.GetNextEntry Is Nothing) - If Not e.IsDirectory Then - Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ - FileMode.Create, FileAccess.ReadWrite) - Dim n As Integer - Do While (n = input.Read(buffer, 0, buffer.Length) > 0) - output.Write(buffer, 0, n) - Loop - End Using - End If - Loop - End Using - End Using - End Sub - - - - - - Create a ZipInputStream, given the name of an existing zip file. - - - - - - This constructor opens a FileStream for the given zipfile, and - wraps a ZipInputStream around that. See the documentation for the - constructor for full details. - - - - While the class is generally easier - to use, this class provides an alternative to those - applications that want to read from a zipfile directly, - using a . - - - - - - The name of the filesystem file to read. - - - - - This example shows how to read a zip file, and extract entries, using the - ZipInputStream class. - - - private void Unzip() - { - byte[] buffer= new byte[2048]; - int n; - using (var input= new ZipInputStream(inputFileName)) - { - ZipEntry e; - while (( e = input.GetNextEntry()) != null) - { - if (e.IsDirectory) continue; - string outputPath = Path.Combine(extractDir, e.FileName); - using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) - { - while ((n= input.Read(buffer, 0, buffer.Length)) > 0) - { - output.Write(buffer,0,n); - } - } - } - } - } - - - - Private Sub UnZip() - Dim inputFileName As String = "MyArchive.zip" - Dim extractDir As String = "extract" - Dim buffer As Byte() = New Byte(2048) {} - Using input As ZipInputStream = New ZipInputStream(inputFileName) - Dim e As ZipEntry - Do While (Not e = input.GetNextEntry Is Nothing) - If Not e.IsDirectory Then - Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ - FileMode.Create, FileAccess.ReadWrite) - Dim n As Integer - Do While (n = input.Read(buffer, 0, buffer.Length) > 0) - output.Write(buffer, 0, n) - Loop - End Using - End If - Loop - End Using - End Sub - - - - - - Create a ZipInputStream, explicitly specifying whether to - keep the underlying stream open. - - - - See the documentation for the ZipInputStream(Stream) - constructor for a discussion of the class, and an example of how to use the class. - - - - The stream to read from. It must be readable. - - - - true if the application would like the stream - to remain open after the ZipInputStream has been closed. - - - - Provides a string representation of the instance. - - - This can be useful for debugging purposes. - - - a string representation of the instance. - - - - Read the data from the stream into the buffer. - - - - - The data for the zipentry will be decrypted and uncompressed, as - necessary, before being copied into the buffer. - - - - You must set the property before calling - Read() the first time for an encrypted entry. To determine if an - entry is encrypted and requires a password, check the ZipEntry.Encryption property. - - - - The buffer to hold the data read from the stream. - the offset within the buffer to copy the first byte read. - the number of bytes to read. - the number of bytes read, after decryption and decompression. - - - - Read the next entry from the zip file. - - - - - Call this method just before calling , - to position the pointer in the zip file to the next entry that can be - read. Subsequent calls to Read(), will decrypt and decompress the - data in the zip file, until Read() returns 0. - - - - Each time you call GetNextEntry(), the pointer in the wrapped - stream is moved to the next entry in the zip file. If you call , and thus re-position the pointer within - the file, you will need to call GetNextEntry() again, to insure - that the file pointer is positioned at the beginning of a zip entry. - - - - This method returns the ZipEntry. Using a stream approach, you will - read the raw bytes for an entry in a zip file via calls to Read(). - Alternatively, you can extract an entry into a file, or a stream, by - calling , or one of its siblings. - - - - - - The ZipEntry read. Returns null (or Nothing in VB) if there are no more - entries in the zip file. - - - - - - Dispose the stream. - - - - - This method disposes the ZipInputStream. It may also close the - underlying stream, depending on which constructor was used. - - - - Typically the application will call Dispose() implicitly, via - a using statement in C#, or a Using statement in VB. - - - - Application code won't call this code directly. This method may - be invoked in two distinct scenarios. If disposing == true, the - method has been called directly or indirectly by a user's code, - for example via the public Dispose() method. In this case, both - managed and unmanaged resources can be referenced and disposed. - If disposing == false, the method has been called by the runtime - from inside the object finalizer and this method should not - reference other objects; in that case only unmanaged resources - must be referenced or disposed. - - - - - true if the Dispose method was invoked by user code. - - - - - This is a no-op. - - - - - This method always throws a NotSupportedException. - - ignored - ignored - ignored - - - - This method seeks in the underlying stream. - - - - - Call this method if you want to seek around within the zip file for random access. - - - - Applications can intermix calls to Seek() with calls to . After a call to Seek(), - GetNextEntry() will get the next ZipEntry that falls after - the current position in the input stream. You're on your own for finding - out just where to seek in the stream, to get to the various entries. - - - - - the offset point to seek to - the reference point from which to seek - The new position - - - - This method always throws a NotSupportedException. - - ignored - - - - The text encoding to use when reading entries into the zip archive, for - those entries whose filenames or comments cannot be encoded with the - default (IBM437) encoding. - - - - - In its - zip specification, PKWare describes two options for encoding - filenames and comments: using IBM437 or UTF-8. But, some archiving tools - or libraries do not follow the specification, and instead encode - characters using the system default code page. For example, WinRAR when - run on a machine in Shanghai may encode filenames with the Big-5 Chinese - (950) code page. This behavior is contrary to the Zip specification, but - it occurs anyway. - - - - When using DotNetZip to read zip archives that use something other than - UTF-8 or IBM437, set this property to specify the code page to use when - reading encoded filenames and comments for each ZipEntry in the zip - file. - - - - This property is "provisional". When the entry in the zip archive is not - explicitly marked as using UTF-8, then IBM437 is used to decode filenames - and comments. If a loss of data would result from using IBM436 - - specifically when encoding and decoding is not reflexive - the codepage - specified here is used. It is possible, therefore, to have a given entry - with a Comment encoded in IBM437 and a FileName encoded with - the specified "provisional" codepage. - - - - When a zip file uses an arbitrary, non-UTF8 code page for encoding, there - is no standard way for the reader application - whether DotNetZip, WinZip, - WinRar, or something else - to know which codepage has been used for the - entries. Readers of zip files are not able to inspect the zip file and - determine the codepage that was used for the entries contained within it. - It is left to the application or user to determine the necessary codepage - when reading zip files encoded this way. If you use an incorrect codepage - when reading a zipfile, you will get entries with filenames that are - incorrect, and the incorrect filenames may even contain characters that - are not legal for use within filenames in Windows. Extracting entries with - illegal characters in the filenames will lead to exceptions. It's too bad, - but this is just the way things are with code pages in zip files. Caveat - Emptor. - - - - - - - Size of the work buffer to use for the ZLIB codec during decompression. - - - - Setting this affects the performance and memory efficiency of compression - and decompression. For larger files, setting this to a larger size may - improve performance, but the exact numbers vary depending on available - memory, and a bunch of other variables. I don't have good firm - recommendations on how to set it. You'll have to test it yourself. Or - just leave it alone and accept the default. - - - - - Sets the password to be used on the ZipInputStream instance. - - - - - - When reading a zip archive, this password is used to read and decrypt the - entries that are encrypted within the zip file. When entries within a zip - file use different passwords, set the appropriate password for the entry - before the first call to Read() for each entry. - - - - When reading an entry that is not encrypted, the value of this property is - ignored. - - - - - - - This example uses the ZipInputStream to read and extract entries from a - zip file, using a potentially different password for each entry. - - - byte[] buffer= new byte[2048]; - int n; - using (var raw = File.Open(_inputFileName, FileMode.Open, FileAccess.Read )) - { - using (var input= new ZipInputStream(raw)) - { - ZipEntry e; - while (( e = input.GetNextEntry()) != null) - { - input.Password = PasswordForEntry(e.FileName); - if (e.IsDirectory) continue; - string outputPath = Path.Combine(_extractDir, e.FileName); - using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) - { - while ((n= input.Read(buffer,0,buffer.Length)) > 0) - { - output.Write(buffer,0,n); - } - } - } - } - } - - - - - - - Always returns true. - - - - - Returns the value of CanSeek for the underlying (wrapped) stream. - - - - - Always returns false. - - - - - Returns the length of the underlying stream. - - - - - Gets or sets the position of the underlying stream. - - - Setting the position is equivalent to calling Seek(value, SeekOrigin.Begin). - - - - - Sort-of like a factory method, ForUpdate is used only when - the application needs to update the zip entry metadata for - a segmented zip file, when the starting segment is earlier - than the ending segment, for a particular entry. - - - - The update is always contiguous, never rolls over. As a - result, this method doesn't need to return a ZSS; it can - simply return a FileStream. That's why it's "sort of" - like a Factory method. - - - Caller must Close/Dispose the stream object returned by - this method. - - - - - - Read from the stream - - the buffer to read - the offset at which to start - the number of bytes to read - the number of bytes actually read - - - - Write to the stream. - - the buffer from which to write - the offset at which to start writing - the number of bytes to write - - - - Name of the filesystem file corresponding to the current segment. - - - - The name is not always the name currently being used in the - filesystem. When rwMode is RwMode.Write, the filesystem file has a - temporary name until the stream is closed or until the next segment is - started. - - - - - - This class exposes a set of COM-accessible wrappers for static - methods available on the ZipFile class. You don't need this - class unless you are using DotNetZip from a COM environment. - - - - - A wrapper for ZipFile.IsZipFile(string) - - The filename to of the zip file to check. - true if the file contains a valid zip file. - - - - A wrapper for ZipFile.IsZipFile(string, bool) - - - We cannot use "overloaded" Method names in COM interop. - So, here, we use a unique name. - - The filename to of the zip file to check. - true if the file contains a valid zip file. - - - - A wrapper for ZipFile.CheckZip(string) - - The filename to of the zip file to check. - - true if the named zip file checks OK. Otherwise, false. - - - - A COM-friendly wrapper for the static method . - - - The filename to of the zip file to check. - - The password to check. - - true if the named zip file checks OK. Otherwise, false. - - - - A wrapper for ZipFile.FixZipDirectory(string) - - The filename to of the zip file to fix. - - - - A wrapper for ZipFile.LibraryVersion - - - the version number on the DotNetZip assembly, formatted as a string. - - - - - An enum providing the options when an error occurs during opening or reading - of a file or directory that is being saved to a zip file. - - - - - This enum describes the actions that the library can take when an error occurs - opening or reading a file, as it is being saved into a Zip archive. - - - - In some cases an error will occur when DotNetZip tries to open a file to be - added to the zip archive. In other cases, an error might occur after the - file has been successfully opened, while DotNetZip is reading the file. - - - - The first problem might occur when calling AddDirectory() on a directory - that contains a Clipper .dbf file; the file is locked by Clipper and - cannot be opened by another process. An example of the second problem is - the ERROR_LOCK_VIOLATION that results when a file is opened by another - process, but not locked, and a range lock has been taken on the file. - Microsoft Outlook takes range locks on .PST files. - - - - - - Throw an exception when an error occurs while zipping. This is the default - behavior. (For COM clients, this is a 0 (zero).) - - - - - When an error occurs during zipping, for example a file cannot be opened, - skip the file causing the error, and continue zipping. (For COM clients, - this is a 1.) - - - - - When an error occurs during zipping, for example a file cannot be opened, - retry the operation that caused the error. Be careful with this option. If - the error is not temporary, the library will retry forever. (For COM - clients, this is a 2.) - - - - - When an error occurs, invoke the zipError event. The event type used is - . A typical use of this option: - a GUI application may wish to pop up a dialog to allow the user to view the - error that occurred, and choose an appropriate action. After your - processing in the error event, if you want to skip the file, set on the - ZipProgressEventArgs.CurrentEntry to Skip. If you want the - exception to be thrown, set ZipErrorAction on the CurrentEntry - to Throw. If you want to cancel the zip, set - ZipProgressEventArgs.Cancel to true. Cancelling differs from using - Skip in that a cancel will not save any further entries, if there are any. - (For COM clients, the value of this enum is a 3.) - - - - - An enum that provides the various encryption algorithms supported by this - library. - - - - - - PkzipWeak implies the use of Zip 2.0 encryption, which is known to be - weak and subvertible. - - - - A note on interoperability: Values of PkzipWeak and None are - specified in PKWARE's zip - specification, and are considered to be "standard". Zip archives - produced using these options will be interoperable with many other zip tools - and libraries, including Windows Explorer. - - - - Values of WinZipAes128 and WinZipAes256 are not part of the Zip - specification, but rather imply the use of a vendor-specific extension from - WinZip. If you want to produce interoperable Zip archives, do not use these - values. For example, if you produce a zip archive using WinZipAes256, you - will be able to open it in Windows Explorer on Windows XP and Vista, but you - will not be able to extract entries; trying this will lead to an "unspecified - error". For this reason, some people have said that a zip archive that uses - WinZip's AES encryption is not actually a zip archive at all. A zip archive - produced this way will be readable with the WinZip tool (Version 11 and - beyond). - - - - There are other third-party tools and libraries, both commercial and - otherwise, that support WinZip's AES encryption. These will be able to read - AES-encrypted zip archives produced by DotNetZip, and conversely applications - that use DotNetZip to read zip archives will be able to read AES-encrypted - archives produced by those tools or libraries. Consult the documentation for - those other tools and libraries to find out if WinZip's AES encryption is - supported. - - - - In case you care: According to the WinZip specification, the - actual AES key used is derived from the via an - algorithm that complies with RFC 2898, using an iteration - count of 1000. The algorithm is sometimes referred to as PBKDF2, which stands - for "Password Based Key Derivation Function #2". - - - - A word about password strength and length: The AES encryption technology is - very good, but any system is only as secure as the weakest link. If you want - to secure your data, be sure to use a password that is hard to guess. To make - it harder to guess (increase its "entropy"), you should make it longer. If - you use normal characters from an ASCII keyboard, a password of length 20 will - be strong enough that it will be impossible to guess. For more information on - that, I'd encourage you to read this - article. - - - - The WinZip AES algorithms are not supported with the version of DotNetZip that - runs on the .NET Compact Framework. This is because .NET CF lacks the - HMACSHA1 class that is required for producing the archive. - - - - - - No encryption at all. - - - - - Traditional or Classic pkzip encryption. - - - - - WinZip AES encryption (128 key bits). - - - - - WinZip AES encryption (256 key bits). - - - - - An encryption algorithm that is not supported by DotNetZip. - - - - - An enum for the options when extracting an entry would overwrite an existing file. - - - - - This enum describes the actions that the library can take when an - Extract() or ExtractWithPassword() method is called to extract an - entry to a filesystem, and the extraction would overwrite an existing filesystem - file. - - - - - - - Throw an exception when extraction would overwrite an existing file. (For - COM clients, this is a 0 (zero).) - - - - - When extraction would overwrite an existing file, overwrite the file silently. - The overwrite will happen even if the target file is marked as read-only. - (For COM clients, this is a 1.) - - - - - When extraction would overwrite an existing file, don't overwrite the file, silently. - (For COM clients, this is a 2.) - - - - - When extraction would overwrite an existing file, invoke the ExtractProgress - event, using an event type of . In - this way, the application can decide, just-in-time, whether to overwrite the - file. For example, a GUI application may wish to pop up a dialog to allow - the user to choose. You may want to examine the property before making - the decision. If, after your processing in the Extract progress event, you - want to NOT extract the file, set - on the ZipProgressEventArgs.CurrentEntry to DoNotOverwrite. - If you do want to extract the file, set ZipEntry.ExtractExistingFile - to OverwriteSilently. If you want to cancel the Extraction, set - ZipProgressEventArgs.Cancel to true. Cancelling differs from using - DoNotOverwrite in that a cancel will not extract any further entries, if - there are any. (For COM clients, the value of this enum is a 3.) - - - - - Enumerates the options for a logical conjunction. This enum is intended for use - internally by the FileSelector class. - - - - - FileSelector encapsulates logic that selects files from a source - a zip file - or the filesystem - based on a set of criteria. This class is used internally - by the DotNetZip library, in particular for the AddSelectedFiles() methods. - This class can also be used independently of the zip capability in DotNetZip. - - - - - - The FileSelector class is used internally by the ZipFile class for selecting - files for inclusion into the ZipFile, when the method, or one of - its overloads, is called. It's also used for the methods. Typically, an - application that creates or manipulates Zip archives will not directly - interact with the FileSelector class. - - - - Some applications may wish to use the FileSelector class directly, to - select files from disk volumes based on a set of criteria, without creating or - querying Zip archives. The file selection criteria include: a pattern to - match the filename; the last modified, created, or last accessed time of the - file; the size of the file; and the attributes of the file. - - - - Consult the documentation for - for more information on specifying the selection criteria. - - - - - - - Constructor that allows the caller to specify file selection criteria. - - - - - This constructor allows the caller to specify a set of criteria for - selection of files. - - - - See for a description of - the syntax of the selectionCriteria string. - - - - By default the FileSelector will traverse NTFS Reparse Points. To - change this, use FileSelector(String, bool). - - - - The criteria for file selection. - - - - Constructor that allows the caller to specify file selection criteria. - - - - - This constructor allows the caller to specify a set of criteria for - selection of files. - - - - See for a description of - the syntax of the selectionCriteria string. - - - - The criteria for file selection. - - whether to traverse NTFS reparse points (junctions). - - - - - Returns a string representation of the FileSelector object. - - The string representation of the boolean logic statement of the file - selection criteria for this instance. - - - - Returns the names of the files in the specified directory - that fit the selection criteria specified in the FileSelector. - - - - This is equivalent to calling - with recurseDirectories = false. - - - - The name of the directory over which to apply the FileSelector - criteria. - - - - A collection of strings containing fully-qualified pathnames of files - that match the criteria specified in the FileSelector instance. - - - - - Returns the names of the files in the specified directory that fit the - selection criteria specified in the FileSelector, optionally recursing - through subdirectories. - - - - This method applies the file selection criteria contained in the - FileSelector to the files contained in the given directory, and - returns the names of files that conform to the criteria. - - - - The name of the directory over which to apply the FileSelector - criteria. - - - - Whether to recurse through subdirectories when applying the file - selection criteria. - - - - A collection of strings containing fully-qualified pathnames of files - that match the criteria specified in the FileSelector instance. - - - - - Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. - - - - - This method applies the criteria set in the FileSelector instance (as described in - the ) to the specified ZipFile. Using this - method, for example, you can retrieve all entries from the given ZipFile that - have filenames ending in .txt. - - - - Normally, applications would not call this method directly. This method is used - by the ZipFile class. - - - - Using the appropriate SelectionCriteria, you can retrieve entries based on size, - time, and attributes. See for a - description of the syntax of the SelectionCriteria string. - - - - - The ZipFile from which to retrieve entries. - - a collection of ZipEntry objects that conform to the criteria. - - - - Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. - - - - - This method applies the criteria set in the FileSelector instance (as described in - the ) to the specified ZipFile. Using this - method, for example, you can retrieve all entries from the given ZipFile that - have filenames ending in .txt. - - - - Normally, applications would not call this method directly. This method is used - by the ZipFile class. - - - - This overload allows the selection of ZipEntry instances from the ZipFile to be restricted - to entries contained within a particular directory in the ZipFile. - - - - Using the appropriate SelectionCriteria, you can retrieve entries based on size, - time, and attributes. See for a - description of the syntax of the SelectionCriteria string. - - - - - The ZipFile from which to retrieve entries. - - - the directory in the archive from which to select entries. If null, then - all directories in the archive are used. - - - a collection of ZipEntry objects that conform to the criteria. - - - - The string specifying which files to include when retrieving. - - - - - Specify the criteria in statements of 3 elements: a noun, an operator, - and a value. Consider the string "name != *.doc" . The noun is - "name". The operator is "!=", implying "Not Equal". The value is - "*.doc". That criterion, in English, says "all files with a name that - does not end in the .doc extension." - - - - Supported nouns include "name" (or "filename") for the filename; - "atime", "mtime", and "ctime" for last access time, last modfied time, - and created time of the file, respectively; "attributes" (or "attrs") - for the file attributes; "size" (or "length") for the file length - (uncompressed); and "type" for the type of object, either a file or a - directory. The "attributes", "type", and "name" nouns all support = - and != as operators. The "size", "atime", "mtime", and "ctime" nouns - support = and !=, and >, >=, <, <= as well. The times are - taken to be expressed in local time. - - - - Specify values for the file attributes as a string with one or more of - the characters H,R,S,A,I,L in any order, implying file attributes of - Hidden, ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint - (symbolic link) respectively. - - - - To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as - the format. If you omit the HH:mm:ss portion, it is assumed to be - 00:00:00 (midnight). - - - - The value for a size criterion is expressed in integer quantities of - bytes, kilobytes (use k or kb after the number), megabytes (m or mb), - or gigabytes (g or gb). - - - - The value for a name is a pattern to match against the filename, - potentially including wildcards. The pattern follows CMD.exe glob - rules: * implies one or more of any character, while ? implies one - character. If the name pattern contains any slashes, it is matched to - the entire filename, including the path; otherwise, it is matched - against only the filename without the path. This means a pattern of - "*\*.*" matches all files one directory level deep, while a pattern of - "*.*" matches all files in all directories. - - - - To specify a name pattern that includes spaces, use single quotes - around the pattern. A pattern of "'* *.*'" will match all files that - have spaces in the filename. The full criteria string for that would - be "name = '* *.*'" . - - - - The value for a type criterion is either F (implying a file) or D - (implying a directory). - - - - Some examples: - - - - - criteria - Files retrieved - - - - name != *.xls - any file with an extension that is not .xls - - - - - name = *.mp3 - any file with a .mp3 extension. - - - - - *.mp3 - (same as above) any file with a .mp3 extension. - - - - - attributes = A - all files whose attributes include the Archive bit. - - - - - attributes != H - all files whose attributes do not include the Hidden bit. - - - - - mtime > 2009-01-01 - all files with a last modified time after January 1st, 2009. - - - - - ctime > 2009/01/01-03:00:00 - all files with a created time after 3am (local time), - on January 1st, 2009. - - - - - size > 2gb - all files whose uncompressed size is greater than 2gb. - - - - - type = D - all directories in the filesystem. - - - - - - You can combine criteria with the conjunctions AND, OR, and XOR. Using - a string like "name = *.txt AND size >= 100k" for the - selectionCriteria retrieves entries whose names end in .txt, and whose - uncompressed size is greater than or equal to 100 kilobytes. - - - - For more complex combinations of criteria, you can use parenthesis to - group clauses in the boolean logic. Absent parenthesis, the - precedence of the criterion atoms is determined by order of - appearance. Unlike the C# language, the AND conjunction does not take - precendence over the logical OR. This is important only in strings - that contain 3 or more criterion atoms. In other words, "name = *.txt - and size > 1000 or attributes = H" implies "((name = *.txt AND size - > 1000) OR attributes = H)" while "attributes = H OR name = *.txt - and size > 1000" evaluates to "((attributes = H OR name = *.txt) - AND size > 1000)". When in doubt, use parenthesis. - - - - Using time properties requires some extra care. If you want to - retrieve all entries that were last updated on 2009 February 14, - specify "mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this - to say: all files updated after 12:00am on February 14th, until - 12:00am on February 15th. You can use the same bracketing approach to - specify any time period - a year, a month, a week, and so on. - - - - The syntax allows one special case: if you provide a string with no - spaces, it is treated as a pattern to match for the filename. - Therefore a string like "*.xls" will be equivalent to specifying "name - = *.xls". This "shorthand" notation does not work with compound - criteria. - - - - There is no logic in this class that insures that the inclusion - criteria are internally consistent. For example, it's possible to - specify criteria that says the file must have a size of less than 100 - bytes, as well as a size that is greater than 1000 bytes. Obviously - no file will ever satisfy such criteria, but this class does not check - for or detect such inconsistencies. - - - - - - Thrown in the setter if the value has an invalid syntax. - - - - - Indicates whether searches will traverse NTFS reparse points, like Junctions. - - - - - Summary description for EnumUtil. - - - - - Returns the value of the DescriptionAttribute if the specified Enum - value has one. If not, returns the ToString() representation of the - Enum value. - - The Enum to get the description for - - - - - Converts the string representation of the name or numeric value of one - or more enumerated constants to an equivalent enumerated object. - Note: use the DescriptionAttribute on enum values to enable this. - - The System.Type of the enumeration. - - A string containing the name or value to convert. - - - - - - Converts the string representation of the name or numeric value of one - or more enumerated constants to an equivalent enumerated object. A - parameter specified whether the operation is case-sensitive. Note: - use the DescriptionAttribute on enum values to enable this. - - The System.Type of the enumeration. - - A string containing the name or value to convert. - - - Whether the operation is case-sensitive or not. - - - - - This is a helper class supporting WinZip AES encryption. - This class is intended for use only by the DotNetZip library. - - - - Most uses of the DotNetZip library will not involve direct calls into - the WinZipAesCrypto class. Instead, the WinZipAesCrypto class is - instantiated and used by the ZipEntry() class when WinZip AES - encryption or decryption on an entry is employed. - - - - - A stream that encrypts as it writes, or decrypts as it reads. The - Crypto is AES in CTR (counter) mode, which is compatible with the AES - encryption employed by WinZip 12.0. - - - - The AES/CTR encryption protocol used by WinZip works like this: - - - start with a counter, initialized to zero. - - - to encrypt, take the data by 16-byte blocks. For each block: - - apply the transform to the counter - - increement the counter - - XOR the result of the transform with the plaintext to - get the ciphertext. - - compute the mac on the encrypted bytes - - when finished with all blocks, store the computed MAC. - - - to decrypt, take the data by 16-byte blocks. For each block: - - compute the mac on the encrypted bytes, - - apply the transform to the counter - - increement the counter - - XOR the result of the transform with the ciphertext to - get the plaintext. - - when finished with all blocks, compare the computed MAC against - the stored MAC - - - - - - - The constructor. - - The underlying stream - To either encrypt or decrypt. - The pre-initialized WinZipAesCrypto object. - The maximum number of bytes to read from the stream. - - - - Close the stream. - - - - - Flush the content in the stream. - - - - - This method throws a NotImplementedException. - - - - - This method throws a NotImplementedException. - - - - - Returns the final HMAC-SHA1-80 for the data that was encrypted. - - - - - Returns true if the stream can be read. - - - - - Always returns false. - - - - - Returns true if the CryptoMode is Encrypt. - - - - - Getting this property throws a NotImplementedException. - - - - - Getting or Setting this property throws a NotImplementedException. - - - - - Issued when an ZipEntry.ExtractWithPassword() method is invoked - with an incorrect password. - - - - - Base class for all exceptions defined by and throw by the Zip library. - - - - - Default ctor. - - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - The innerException for this exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The serialization info for the exception. - The streaming context from which to deserialize. - - - - Default ctor. - - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - The innerException for this exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The serialization info for the exception. - The streaming context from which to deserialize. - - - - Indicates that a read was attempted on a stream, and bad or incomplete data was - received. - - - - - Default ctor. - - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - The innerException for this exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The serialization info for the exception. - The streaming context from which to deserialize. - - - - Issued when an CRC check fails upon extracting an entry from a zip archive. - - - - - Default ctor. - - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The serialization info for the exception. - The streaming context from which to deserialize. - - - - Issued when errors occur saving a self-extracting archive. - - - - - Default ctor. - - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The serialization info for the exception. - The streaming context from which to deserialize. - - - - Indicates that an operation was attempted on a ZipFile which was not possible - given the state of the instance. For example, if you call Save() on a ZipFile - which has no filename set, you can get this exception. - - - - - Default ctor. - - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The message in the exception. - The innerException for this exception. - - - - Come on, you know how exceptions work. Why are you looking at this documentation? - - The serialization info for the exception. - The streaming context from which to deserialize. - - - - Collects general purpose utility methods. - - - - private null constructor - - - - Utility routine for transforming path names from filesystem format (on Windows that means backslashes) to - a format suitable for use within zipfiles. This means trimming the volume letter and colon (if any) And - swapping backslashes for forward slashes. - - source path. - transformed path - - - - Finds a signature in the zip stream. This is useful for finding - the end of a zip entry, for example, or the beginning of the next ZipEntry. - - - - - Scans through 64k at a time. - - - - If the method fails to find the requested signature, the stream Position - after completion of this method is unchanged. If the method succeeds in - finding the requested signature, the stream position after completion is - direct AFTER the signature found in the stream. - - - - The stream to search - The 4-byte signature to find - The number of bytes read - - - - Create a pseudo-random filename, suitable for use as a temporary - file, and open it. - - - - The System.IO.Path.GetRandomFileName() method is not available on - the Compact Framework, so this library provides its own substitute - on NETCF. - - - This method produces a filename of the form - DotNetZip-xxxxxxxx.tmp, where xxxxxxxx is replaced by randomly - chosen characters, and creates that file. - - - - - - Workitem 7889: handle ERROR_LOCK_VIOLATION during read - - - This could be gracefully handled with an extension attribute, but - This assembly is built for .NET 2.0, so I cannot use them. - - - - - A decorator stream. It wraps another stream, and performs bookkeeping - to keep track of the stream Position. - - - - In some cases, it is not possible to get the Position of a stream, let's - say, on a write-only output stream like ASP.NET's - Response.OutputStream, or on a different write-only stream - provided as the destination for the zip by the application. In this - case, programmers can use this counting stream to count the bytes read - or written. - - - Consider the scenario of an application that saves a self-extracting - archive (SFX), that uses a custom SFX stub. - - - Saving to a filesystem file, the application would open the - filesystem file (getting a FileStream), save the custom sfx stub - into it, and then call ZipFile.Save(), specifying the same - FileStream. ZipFile.Save() does the right thing for the zipentry - offsets, by inquiring the Position of the FileStream before writing - any data, and then adding that initial offset into any ZipEntry - offsets in the zip directory. Everything works fine. - - - Now suppose the application is an ASPNET application and it saves - directly to Response.OutputStream. It's not possible for DotNetZip to - inquire the Position, so the offsets for the SFX will be wrong. - - - The workaround is for the application to use this class to wrap - HttpResponse.OutputStream, then write the SFX stub and the ZipFile - into that wrapper stream. Because ZipFile.Save() can inquire the - Position, it will then do the right thing with the offsets. - - - - - - The constructor. - - The underlying stream - - - - Adjust the byte count on the stream. - - - - the number of bytes to subtract from the count. - - - - - Subtract delta from the count of bytes written to the stream. - This is necessary when seeking back, and writing additional data, - as happens in some cases when saving Zip files. - - - - - - The read method. - - The buffer to hold the data read from the stream. - the offset within the buffer to copy the first byte read. - the number of bytes to read. - the number of bytes read, after decryption and decompression. - - - - Write data into the stream. - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Flushes the underlying stream. - - - - - Seek in the stream. - - the offset point to seek to - the reference point from which to seek - The new position - - - - Set the length of the underlying stream. Be careful with this! - - - the length to set on the underlying stream. - - - - Gets the wrapped stream. - - - - - The count of bytes written out to the stream. - - - - - the count of bytes that have been read from the stream. - - - - - Whether the stream can be read. - - - - - Whether it is possible to call Seek() on the stream. - - - - - Whether it is possible to call Write() on the stream. - - - - - The length of the underlying stream. - - - - - Returns the sum of number of bytes written, plus the initial - offset before writing. - - - - - The Position of the stream. - - - - - This class implements the "traditional" or "classic" PKZip encryption, - which today is considered to be weak. On the other hand it is - ubiquitous. This class is intended for use only by the DotNetZip - library. - - - - Most uses of the DotNetZip library will not involve direct calls into - the ZipCrypto class. Instead, the ZipCrypto class is instantiated and - used by the ZipEntry() class when encryption or decryption on an entry - is employed. If for some reason you really wanted to use a weak - encryption algorithm in some other application, you might use this - library. But you would be much better off using one of the built-in - strong encryption libraries in the .NET Framework, like the AES - algorithm or SHA. - - - - - The default constructor for ZipCrypto. - - - - This class is intended for internal use by the library only. It's - probably not useful to you. Seriously. Stop reading this - documentation. It's a waste of your time. Go do something else. - Check the football scores. Go get an ice cream with a friend. - Seriously. - - - - - - Call this method on a cipher text to render the plaintext. You must - first initialize the cipher with a call to InitCipher. - - - - - var cipher = new ZipCrypto(); - cipher.InitCipher(Password); - // Decrypt the header. This has a side effect of "further initializing the - // encryption keys" in the traditional zip encryption. - byte[] DecryptedMessage = cipher.DecryptMessage(EncryptedMessage); - - - - The encrypted buffer. - - The number of bytes to encrypt. - Should be less than or equal to CipherText.Length. - - - The plaintext. - - - - This is the converse of DecryptMessage. It encrypts the plaintext - and produces a ciphertext. - - - The plain text buffer. - - - The number of bytes to encrypt. - Should be less than or equal to plainText.Length. - - - The ciphertext. - - - - This initializes the cipher with the given password. - See AppNote.txt for details. - - - - The passphrase for encrypting or decrypting with this cipher. - - - - - Step 1 - Initializing the encryption keys - ----------------------------------------- - Start with these keys: - Key(0) := 305419896 (0x12345678) - Key(1) := 591751049 (0x23456789) - Key(2) := 878082192 (0x34567890) - - Then, initialize the keys with a password: - - loop for i from 0 to length(password)-1 - update_keys(password(i)) - end loop - - Where update_keys() is defined as: - - update_keys(char): - Key(0) := crc32(key(0),char) - Key(1) := Key(1) + (Key(0) bitwiseAND 000000ffH) - Key(1) := Key(1) * 134775813 + 1 - Key(2) := crc32(key(2),key(1) rightshift 24) - end update_keys - - Where crc32(old_crc,char) is a routine that given a CRC value and a - character, returns an updated CRC value after applying the CRC-32 - algorithm described elsewhere in this document. - - - - - After the keys are initialized, then you can use the cipher to - encrypt the plaintext. - - - - Essentially we encrypt the password with the keys, then discard the - ciphertext for the password. This initializes the keys for later use. - - - - - - - From AppNote.txt: - unsigned char decrypt_byte() - local unsigned short temp - temp :=- Key(2) | 2 - decrypt_byte := (temp * (temp ^ 1)) bitshift-right 8 - end decrypt_byte - - - - - A Stream for reading and concurrently decrypting data from a zip file, - or for writing and concurrently encrypting data to a zip file. - - - - The constructor. - The underlying stream - To either encrypt or decrypt. - The pre-initialized ZipCrypto object. - - - - Delegate in which the application writes the ZipEntry content for the named entry. - - - The name of the entry that must be written. - The stream to which the entry data should be written. - - - When you add an entry and specify a WriteDelegate, via , the application - code provides the logic that writes the entry data directly into the zip file. - - - - - This example shows how to define a WriteDelegate that obtains a DataSet, and then - writes the XML for the DataSet into the zip archive. There's no need to - save the XML to a disk file first. - - - private void WriteEntry (String filename, Stream output) - { - DataSet ds1 = ObtainDataSet(); - ds1.WriteXml(output); - } - - private void Run() - { - using (var zip = new ZipFile()) - { - zip.AddEntry(zipEntryName, WriteEntry); - zip.Save(zipFileName); - } - } - - - - Private Sub WriteEntry (ByVal filename As String, ByVal output As Stream) - DataSet ds1 = ObtainDataSet() - ds1.WriteXml(stream) - End Sub - - Public Sub Run() - Using zip = New ZipFile - zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) - zip.Save(zipFileName) - End Using - End Sub - - - - - - - Delegate in which the application opens the stream, just-in-time, for the named entry. - - - - The name of the ZipEntry that the application should open the stream for. - - - - When you add an entry via , the application code provides the logic that - opens and closes the stream for the given ZipEntry. - - - - - - - Delegate in which the application closes the stream, just-in-time, for the named entry. - - - - The name of the ZipEntry that the application should close the stream for. - - - The stream to be closed. - - - When you add an entry via , the application code provides the logic that - opens and closes the stream for the given ZipEntry. - - - - - - - Delegate for the callback by which the application tells the - library the CompressionLevel to use for a file. - - - - - Using this callback, the application can, for example, specify that - previously-compressed files (.mp3, .png, .docx, etc) should use a - CompressionLevel of None, or can set the compression level based - on any other factor. - - - - - - - In an EventArgs type, indicates which sort of progress event is being - reported. - - - There are events for reading, events for saving, and events for - extracting. This enumeration allows a single EventArgs type to be sued to - describe one of multiple subevents. For example, a SaveProgress event is - invoked before, after, and during the saving of a single entry. The value - of an enum with this type, specifies which event is being triggered. The - same applies to Extraction, Reading and Adding events. - - - - - Indicates that a Add() operation has started. - - - - - Indicates that an individual entry in the archive has been added. - - - - - Indicates that a Add() operation has completed. - - - - - Indicates that a Read() operation has started. - - - - - Indicates that an individual entry in the archive is about to be read. - - - - - Indicates that an individual entry in the archive has just been read. - - - - - Indicates that a Read() operation has completed. - - - - - The given event reports the number of bytes read so far - during a Read() operation. - - - - - Indicates that a Save() operation has started. - - - - - Indicates that an individual entry in the archive is about to be written. - - - - - Indicates that an individual entry in the archive has just been saved. - - - - - Indicates that a Save() operation has completed. - - - - - Indicates that the zip archive has been created in a - temporary location during a Save() operation. - - - - - Indicates that the temporary file is about to be renamed to the final archive - name during a Save() operation. - - - - - Indicates that the temporary file is has just been renamed to the final archive - name during a Save() operation. - - - - - Indicates that the self-extracting archive has been compiled - during a Save() operation. - - - - - The given event is reporting the number of source bytes that have run through the compressor so far - during a Save() operation. - - - - - Indicates that an entry is about to be extracted. - - - - - Indicates that an entry has just been extracted. - - - - - Indicates that extraction of an entry would overwrite an existing - filesystem file. You must use - - ExtractExistingFileAction.InvokeExtractProgressEvent in the call - to ZipEntry.Extract() in order to receive this event. - - - - - The given event is reporting the number of bytes written so far for - the current entry during an Extract() operation. - - - - - Indicates that an ExtractAll operation is about to begin. - - - - - Indicates that an ExtractAll operation has completed. - - - - - Indicates that an error has occurred while saving a zip file. - This generally means the file cannot be opened, because it has been - removed, or because it is locked by another process. It can also - mean that the file cannot be Read, because of a range lock conflict. - - - - - Provides information about the progress of a save, read, or extract operation. - This is a base class; you will probably use one of the classes derived from this one. - - - - - The total number of entries to be saved or extracted. - - - - - The name of the last entry saved or extracted. - - - - - In an event handler, set this to cancel the save or extract - operation that is in progress. - - - - - The type of event being reported. - - - - - Returns the archive name associated to this event. - - - - - The number of bytes read or written so far for this entry. - - - - - Total number of bytes that will be read or written for this entry. - This number will be -1 if the value cannot be determined. - - - - - Provides information about the progress of a Read operation. - - - - - Provides information about the progress of a Add operation. - - - - - Provides information about the progress of a save operation. - - - - - Constructor for the SaveProgressEventArgs. - - the name of the zip archive. - whether this is before saving the entry, or after - The total number of entries in the zip archive. - Number of entries that have been saved. - The entry involved in the event. - - - - Number of entries saved so far. - - - - - Provides information about the progress of the extract operation. - - - - - Constructor for the ExtractProgressEventArgs. - - the name of the zip archive. - whether this is before saving the entry, or after - The total number of entries in the zip archive. - Number of entries that have been extracted. - The entry involved in the event. - The location to which entries are extracted. - - - - Number of entries extracted so far. This is set only if the - EventType is Extracting_BeforeExtractEntry or Extracting_AfterExtractEntry, and - the Extract() is occurring witin the scope of a call to ExtractAll(). - - - - - Returns the extraction target location, a filesystem path. - - - - - Provides information about the an error that occurred while zipping. - - - - - Returns the exception that occurred, if any. - - - - - Returns the name of the file that caused the exception, if any. - - - - - Represents a single entry in a ZipFile. Typically, applications get a ZipEntry - by enumerating the entries within a ZipFile, or by adding an entry to a ZipFile. - - - - - Reads one entry from the zip directory structure in the zip file. - - - - The zipfile for which a directory entry will be read. From this param, the - method gets the ReadStream and the expected text encoding - (ProvisionalAlternateEncoding) which is used if the entry is not marked - UTF-8. - - - - a list of previously seen entry names; used to prevent duplicates. - - - the entry read from the archive. - - - - Returns true if the passed-in value is a valid signature for a ZipDirEntry. - - the candidate 4-byte signature value. - true, if the signature is valid according to the PKWare spec. - - - - Default constructor. - - - Applications should never need to call this directly. It is exposed to - support COM Automation environments. - - - - - Sets the NTFS Creation, Access, and Modified times for the given entry. - - - - - When adding an entry from a file or directory, the Creation, Access, and - Modified times for the given entry are automatically set from the - filesystem values. When adding an entry from a stream or string, the - values are implicitly set to DateTime.Now. The application may wish to - set these values to some arbitrary value, before saving the archive, and - can do so using the various setters. If you want to set all of the times, - this method is more efficient. - - - - The values you set here will be retrievable with the , and properties. - - - - When this method is called, if both and are false, then the - EmitTimesInWindowsFormatWhenSaving flag is automatically set. - - - - DateTime values provided here without a DateTimeKind are assumed to be Local Time. - - - - the creation time of the entry. - the last access time of the entry. - the last modified time of the entry. - - - - - - - - - Provides a string representation of the instance. - a string representation of the instance. - - - - Extract the entry to the filesystem, starting at the current - working directory. - - - - This method has a bunch of overloads! One of them is sure to - be the right one for you... If you don't like these, check - out the ExtractWithPassword() methods. - - - - - - - - - This method extracts an entry from a zip file into the current - working directory. The path of the entry as extracted is the full - path as specified in the zip archive, relative to the current - working directory. After the file is extracted successfully, the - file attributes and timestamps are set. - - - - The action taken when extraction an entry would overwrite an - existing file is determined by the property. - - - - Within the call to Extract(), the content for the entry is - written into a filesystem file, and then the last modified time of the - file is set according to the property on - the entry. See the remarks the property for - some details about the last modified time. - - - - - - - Extract the entry to a file in the filesystem, using the specified - behavior when extraction would overwrite an existing file. - - - - - See the remarks on the property, for some - details about how the last modified time of the file is set after - extraction. - - - - - The action to take if extraction would overwrite an existing file. - - - - - Extracts the entry to the specified stream. - - - - - The caller can specify any write-able stream, for example a , a , or ASP.NET's - Response.OutputStream. The content will be decrypted and - decompressed as necessary. If the entry is encrypted and no password - is provided, this method will throw. - - - The position on the stream is not reset by this method before it extracts. - You may want to call stream.Seek() before calling ZipEntry.Extract(). - - - - - the stream to which the entry should be extracted. - - - - - - Extract the entry to the filesystem, starting at the specified base - directory. - - - the pathname of the base directory - - - - - - This example extracts only the entries in a zip file that are .txt files, - into a directory called "textfiles". - - using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) - { - foreach (string s1 in zip.EntryFilenames) - { - if (s1.EndsWith(".txt")) - { - zip[s1].Extract("textfiles"); - } - } - } - - - Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") - Dim s1 As String - For Each s1 In zip.EntryFilenames - If s1.EndsWith(".txt") Then - zip(s1).Extract("textfiles") - End If - Next - End Using - - - - - - - Using this method, existing entries in the filesystem will not be - overwritten. If you would like to force the overwrite of existing - files, see the property, or call - . - - - - See the remarks on the property, for some - details about how the last modified time of the created file is set. - - - - - - Extract the entry to the filesystem, starting at the specified base - directory, and using the specified behavior when extraction would - overwrite an existing file. - - - - - See the remarks on the property, for some - details about how the last modified time of the created file is set. - - - - - - String sZipPath = "Airborne.zip"; - String sFilePath = "Readme.txt"; - String sRootFolder = "Digado"; - using (ZipFile zip = ZipFile.Read(sZipPath)) - { - if (zip.EntryFileNames.Contains(sFilePath)) - { - // use the string indexer on the zip file - zip[sFileName].Extract(sRootFolder, - ExtractExistingFileAction.OverwriteSilently); - } - } - - - - Dim sZipPath as String = "Airborne.zip" - Dim sFilePath As String = "Readme.txt" - Dim sRootFolder As String = "Digado" - Using zip As ZipFile = ZipFile.Read(sZipPath) - If zip.EntryFileNames.Contains(sFilePath) - ' use the string indexer on the zip file - zip(sFilePath).Extract(sRootFolder, _ - ExtractExistingFileAction.OverwriteSilently) - End If - End Using - - - - the pathname of the base directory - - The action to take if extraction would overwrite an existing file. - - - - - Extract the entry to the filesystem, using the current working directory - and the specified password. - - - - This method has a bunch of overloads! One of them is sure to be - the right one for you... - - - - - - - - - Existing entries in the filesystem will not be overwritten. If you - would like to force the overwrite of existing files, see the property, or call - . - - - - See the remarks on the property for some - details about how the "last modified" time of the created file is - set. - - - - - In this example, entries that use encryption are extracted using a - particular password. - - using (var zip = ZipFile.Read(FilePath)) - { - foreach (ZipEntry e in zip) - { - if (e.UsesEncryption) - e.ExtractWithPassword("Secret!"); - else - e.Extract(); - } - } - - - Using zip As ZipFile = ZipFile.Read(FilePath) - Dim e As ZipEntry - For Each e In zip - If (e.UsesEncryption) - e.ExtractWithPassword("Secret!") - Else - e.Extract - End If - Next - End Using - - - The Password to use for decrypting the entry. - - - - Extract the entry to the filesystem, starting at the specified base - directory, and using the specified password. - - - - - - - - Existing entries in the filesystem will not be overwritten. If you - would like to force the overwrite of existing files, see the property, or call - . - - - - See the remarks on the property, for some - details about how the last modified time of the created file is set. - - - - The pathname of the base directory. - The Password to use for decrypting the entry. - - - - Extract the entry to a file in the filesystem, relative to the - current directory, using the specified behavior when extraction - would overwrite an existing file. - - - - - See the remarks on the property, for some - details about how the last modified time of the created file is set. - - - - The Password to use for decrypting the entry. - - - The action to take if extraction would overwrite an existing file. - - - - - Extract the entry to the filesystem, starting at the specified base - directory, and using the specified behavior when extraction would - overwrite an existing file. - - - - See the remarks on the property, for some - details about how the last modified time of the created file is set. - - - the pathname of the base directory - - The action to take if extraction would - overwrite an existing file. - - The Password to use for decrypting the entry. - - - - Extracts the entry to the specified stream, using the specified - Password. For example, the caller could extract to Console.Out, or - to a MemoryStream. - - - - - The caller can specify any write-able stream, for example a , a , or ASP.NET's - Response.OutputStream. The content will be decrypted and - decompressed as necessary. If the entry is encrypted and no password - is provided, this method will throw. - - - The position on the stream is not reset by this method before it extracts. - You may want to call stream.Seek() before calling ZipEntry.Extract(). - - - - - - the stream to which the entry should be extracted. - - - The password to use for decrypting the entry. - - - - - Opens a readable stream corresponding to the zip entry in the - archive. The stream decompresses and decrypts as necessary, as it - is read. - - - - - - DotNetZip offers a variety of ways to extract entries from a zip - file. This method allows an application to extract an entry by - reading a . - - - - The return value is of type . Use it as you would any - stream for reading. When an application calls on that stream, it will - receive data from the zip entry that is decrypted and decompressed - as necessary. - - - - CrcCalculatorStream adds one additional feature: it keeps a - CRC32 checksum on the bytes of the stream as it is read. The CRC - value is available in the property on the - CrcCalculatorStream. When the read is complete, your - application - should check this CRC against the - property on the ZipEntry to validate the content of the - ZipEntry. You don't have to validate the entry using the CRC, but - you should, to verify integrity. Check the example for how to do - this. - - - - If the entry is protected with a password, then you need to provide - a password prior to calling , either by - setting the property on the entry, or the - property on the ZipFile - itself. Or, you can use , the - overload of OpenReader that accepts a password parameter. - - - - If you want to extract entry data into a write-able stream that is - already opened, like a , do not - use this method. Instead, use . - - - - Your application may use only one stream created by OpenReader() at - a time, and you should not call other Extract methods before - completing your reads on a stream obtained from OpenReader(). This - is because there is really only one source stream for the compressed - content. A call to OpenReader() seeks in the source stream, to the - beginning of the compressed content. A subsequent call to - OpenReader() on a different entry will seek to a different position - in the source stream, as will a call to Extract() or one of its - overloads. This will corrupt the state for the decompressing stream - from the original call to OpenReader(). - - - - The OpenReader() method works only when the ZipEntry is - obtained from an instance of ZipFile. This method will throw - an exception if the ZipEntry is obtained from a . - - - - - This example shows how to open a zip archive, then read in a named - entry via a stream. After the read loop is complete, the code - compares the calculated during the read loop with the expected CRC - on the ZipEntry, to verify the extraction. - - using (ZipFile zip = new ZipFile(ZipFileToRead)) - { - ZipEntry e1= zip["Elevation.mp3"]; - using (Ionic.Zlib.CrcCalculatorStream s = e1.OpenReader()) - { - byte[] buffer = new byte[4096]; - int n, totalBytesRead= 0; - do { - n = s.Read(buffer,0, buffer.Length); - totalBytesRead+=n; - } while (n>0); - if (s.Crc32 != e1.Crc32) - throw new Exception(string.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)); - if (totalBytesRead != e1.UncompressedSize) - throw new Exception(string.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)); - } - } - - - Using zip As New ZipFile(ZipFileToRead) - Dim e1 As ZipEntry = zip.Item("Elevation.mp3") - Using s As Ionic.Zlib.CrcCalculatorStream = e1.OpenReader - Dim n As Integer - Dim buffer As Byte() = New Byte(4096) {} - Dim totalBytesRead As Integer = 0 - Do - n = s.Read(buffer, 0, buffer.Length) - totalBytesRead = (totalBytesRead + n) - Loop While (n > 0) - If (s.Crc32 <> e1.Crc32) Then - Throw New Exception(String.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)) - End If - If (totalBytesRead <> e1.UncompressedSize) Then - Throw New Exception(String.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)) - End If - End Using - End Using - - - - The Stream for reading. - - - - Opens a readable stream for an encrypted zip entry in the archive. - The stream decompresses and decrypts as necessary, as it is read. - - - - - See the documentation on the method for - full details. This overload allows the application to specify a - password for the ZipEntry to be read. - - - - The password to use for decrypting the entry. - The Stream for reading. - - - - Pass in either basedir or s, but not both. - In other words, you can extract to a stream or to a directory (filesystem), but not both! - The Password param is required for encrypted entries. - - - - - Extract to a stream - In other words, you can extract to a stream or to a directory (filesystem), but not both! - The Password param is required for encrypted entries. - - - - - Validates that the args are consistent; returning whether the caller can return - because it's done, or not (caller should continue) - - - - - Validates that the args are consistent; returning whether the caller can return - because it's done, or not (caller should continue) - - - - - Reads one ZipEntry from the given stream. The content for - the entry does not get decompressed or decrypted. This method - basically reads metadata, and seeks. - - the ZipContainer this entry belongs to. - - true of this is the first entry being read from the stream. - - the ZipEntry read from the stream. - - - - Finds a particular segment in the given extra field. - This is used when modifying a previously-generated - extra field, in particular when removing the AES crypto - segment in the extra field. - - - - - At current cursor position in the stream, read the extra - field, and set the properties on the ZipEntry instance - appropriately. This can be called when processing the - Extra field in the Central Directory, or in the local - header. - - - - - generate and return a byte array that encodes the filename - for the entry. - - - - side effects: generate and store into _CommentBytes the - byte array for any comment attached to the entry. Also - sets _actualEncoding to indicate the actual encoding - used. The same encoding is used for both filename and - comment. - - - - - - Stores the position of the entry source stream, or, if the position is - already stored, seeks to that position. - - - - - This method is called in prep for reading the source stream. If PKZIP - encryption is used, then we need to calc the CRC32 before doing the - encryption, because the CRC is used in the 12th byte of the PKZIP - encryption header. So, we need to be able to seek backward in the source - when saving the ZipEntry. This method is called from the place that - calculates the CRC, and also from the method that does the encryption of - the file data. - - - - The first time through, this method sets the _sourceStreamOriginalPosition - field. Subsequent calls to this method seek to that position. - - - - - - Copy metadata that may have been changed by the app. We do this when - resetting the zipFile instance. If the app calls Save() on a ZipFile, then - tries to party on that file some more, we may need to Reset() it , which - means re-reading the entries and then copying the metadata. I think. - - - - - Set the input stream and get its length, if possible. The length is - used for progress updates, AND, to allow an optimization in case of - a stream/file of zero length. In that case we skip the Encrypt and - compression Stream. (like DeflateStream or BZip2OutputStream) - - - - - Prepare the given stream for output - wrap it in a CountingStream, and - then in a CRC stream, and an encryptor and deflator as appropriate. - - - - Previously this was used in ZipEntry.Write(), but in an effort to - introduce some efficiencies in that method I've refactored to put the - code inline. This method still gets called by ZipOutputStream. - - - - - - True if the referenced entry is a directory. - - - - - Provides a human-readable string with information about the ZipEntry. - - - - - The time and date at which the file indicated by the ZipEntry was - last modified. - - - - - The DotNetZip library sets the LastModified value for an entry, equal to - the Last Modified time of the file in the filesystem. If an entry is - added from a stream, the library uses System.DateTime.Now for this - value, for the given entry. - - - - This property allows the application to retrieve and possibly set the - LastModified value on an entry, to an arbitrary value. values with a - setting of DateTimeKind.Unspecified are taken to be expressed as - DateTimeKind.Local. - - - - Be aware that because of the way PKWare's - Zip specification describes how times are stored in the zip file, - the full precision of the System.DateTime datatype is not stored - for the last modified time when saving zip files. For more information on - how times are formatted, see the PKZip specification. - - - - The actual last modified time of a file can be stored in multiple ways in - the zip file, and they are not mutually exclusive: - - - - - In the so-called "DOS" format, which has a 2-second precision. Values - are rounded to the nearest even second. For example, if the time on the - file is 12:34:43, then it will be stored as 12:34:44. This first value - is accessible via the LastModified property. This value is always - present in the metadata for each zip entry. In some cases the value is - invalid, or zero. - - - - In the so-called "Windows" or "NTFS" format, as an 8-byte integer - quantity expressed as the number of 1/10 milliseconds (in other words - the number of 100 nanosecond units) since January 1, 1601 (UTC). This - format is how Windows represents file times. This time is accessible - via the ModifiedTime property. - - - - In the "Unix" format, a 4-byte quantity specifying the number of seconds since - January 1, 1970 UTC. - - - - In an older format, now deprecated but still used by some current - tools. This format is also a 4-byte quantity specifying the number of - seconds since January 1, 1970 UTC. - - - - - - Zip tools and libraries will always at least handle (read or write) the - DOS time, and may also handle the other time formats. Keep in mind that - while the names refer to particular operating systems, there is nothing in - the time formats themselves that prevents their use on other operating - systems. - - - - When reading ZIP files, the DotNetZip library reads the Windows-formatted - time, if it is stored in the entry, and sets both LastModified and - ModifiedTime to that value. When writing ZIP files, the DotNetZip - library by default will write both time quantities. It can also emit the - Unix-formatted time if desired (See .) - - - - The last modified time of the file created upon a call to - ZipEntry.Extract() may be adjusted during extraction to compensate - for differences in how the .NET Base Class Library deals with daylight - saving time (DST) versus how the Windows filesystem deals with daylight - saving time. Raymond Chen provides - some good context. - - - - In a nutshell: Daylight savings time rules change regularly. In 2007, for - example, the inception week of DST changed. In 1977, DST was in place all - year round. In 1945, likewise. And so on. Win32 does not attempt to - guess which time zone rules were in effect at the time in question. It - will render a time as "standard time" and allow the app to change to DST - as necessary. .NET makes a different choice. - - - - Compare the output of FileInfo.LastWriteTime.ToString("f") with what you - see in the Windows Explorer property sheet for a file that was last - written to on the other side of the DST transition. For example, suppose - the file was last modified on October 17, 2003, during DST but DST is not - currently in effect. Explorer's file properties reports Thursday, October - 17, 2003, 8:45:38 AM, but .NETs FileInfo reports Thursday, October 17, - 2003, 9:45 AM. - - - - Win32 says, "Thursday, October 17, 2002 8:45:38 AM PST". Note: Pacific - STANDARD Time. Even though October 17 of that year occurred during Pacific - Daylight Time, Win32 displays the time as standard time because that's - what time it is NOW. - - - - .NET BCL assumes that the current DST rules were in place at the time in - question. So, .NET says, "Well, if the rules in effect now were also in - effect on October 17, 2003, then that would be daylight time" so it - displays "Thursday, October 17, 2003, 9:45 AM PDT" - daylight time. - - - - So .NET gives a value which is more intuitively correct, but is also - potentially incorrect, and which is not invertible. Win32 gives a value - which is intuitively incorrect, but is strictly correct. - - - - Because of this funkiness, this library adds one hour to the LastModified - time on the extracted file, if necessary. That is to say, if the time in - question had occurred in what the .NET Base Class Library assumed to be - DST. This assumption may be wrong given the constantly changing DST rules, - but it is the best we can do. - - - - - - - - Last Modified time for the file represented by the entry. - - - - - - This value corresponds to the "last modified" time in the NTFS file times - as described in the Zip - specification. When getting this property, the value may be - different from . When setting the property, - the property also gets set, but with a lower - precision. - - - - Let me explain. It's going to take a while, so get - comfortable. Originally, waaaaay back in 1989 when the ZIP specification - was originally described by the esteemed Mr. Phil Katz, the dominant - operating system of the time was MS-DOS. MSDOS stored file times with a - 2-second precision, because, c'mon, who is ever going to need better - resolution than THAT? And so ZIP files, regardless of the platform on - which the zip file was created, store file times in exactly the same format that DOS used - in 1989. - - - - Since then, the ZIP spec has evolved, but the internal format for file - timestamps remains the same. Despite the fact that the way times are - stored in a zip file is rooted in DOS heritage, any program on any - operating system can format a time in this way, and most zip tools and - libraries DO - they round file times to the nearest even second and store - it just like DOS did 25+ years ago. - - - - PKWare extended the ZIP specification to allow a zip file to store what - are called "NTFS Times" and "Unix(tm) times" for a file. These are the - last write, last access, and file creation - times of a particular file. These metadata are not actually specific - to NTFS or Unix. They are tracked for each file by NTFS and by various - Unix filesystems, but they are also tracked by other filesystems, too. - The key point is that the times are formatted in the zip file - in the same way that NTFS formats the time (ticks since win32 epoch), - or in the same way that Unix formats the time (seconds since Unix - epoch). As with the DOS time, any tool or library running on any - operating system is capable of formatting a time in one of these ways - and embedding it into the zip file. - - - - These extended times are higher precision quantities than the DOS time. - As described above, the (DOS) LastModified has a precision of 2 seconds. - The Unix time is stored with a precision of 1 second. The NTFS time is - stored with a precision of 0.0000001 seconds. The quantities are easily - convertible, except for the loss of precision you may incur. - - - - A zip archive can store the {C,A,M} times in NTFS format, in Unix format, - or not at all. Often a tool running on Unix or Mac will embed the times - in Unix format (1 second precision), while WinZip running on Windows might - embed the times in NTFS format (precision of of 0.0000001 seconds). When - reading a zip file with these "extended" times, in either format, - DotNetZip represents the values with the - ModifiedTime, AccessedTime and CreationTime - properties on the ZipEntry. - - - - While any zip application or library, regardless of the platform it - runs on, could use any of the time formats allowed by the ZIP - specification, not all zip tools or libraries do support all these - formats. Storing the higher-precision times for each entry is - optional for zip files, and many tools and libraries don't use the - higher precision quantities at all. The old DOS time, represented by - , is guaranteed to be present, though it - sometimes unset. - - - - Ok, getting back to the question about how the LastModified - property relates to this ModifiedTime - property... LastModified is always set, while - ModifiedTime is not. (The other times stored in the NTFS - times extension, CreationTime and AccessedTime also - may not be set on an entry that is read from an existing zip file.) - When reading a zip file, then LastModified takes the DOS time - that is stored with the file. If the DOS time has been stored as zero - in the zipfile, then this library will use DateTime.Now for the - LastModified value. If the ZIP file was created by an evolved - tool, then there will also be higher precision NTFS or Unix times in - the zip file. In that case, this library will read those times, and - set LastModified and ModifiedTime to the same value, the - one corresponding to the last write time of the file. If there are no - higher precision times stored for the entry, then ModifiedTime - remains unset (likewise AccessedTime and CreationTime), - and LastModified keeps its DOS time. - - - - When creating zip files with this library, by default the extended time - properties (ModifiedTime, AccessedTime, and - CreationTime) are set on the ZipEntry instance, and these data are - stored in the zip archive for each entry, in NTFS format. If you add an - entry from an actual filesystem file, then the entry gets the actual file - times for that file, to NTFS-level precision. If you add an entry from a - stream, or a string, then the times get the value DateTime.Now. In - this case LastModified and ModifiedTime will be identical, - to 2 seconds of precision. You can explicitly set the - CreationTime, AccessedTime, and ModifiedTime of an - entry using the property setters. If you want to set all of those - quantities, it's more efficient to use the method. Those - changes are not made permanent in the zip file until you call or one of its cousins. - - - - When creating a zip file, you can override the default behavior of - this library for formatting times in the zip file, disabling the - embedding of file times in NTFS format or enabling the storage of file - times in Unix format, or both. You may want to do this, for example, - when creating a zip file on Windows, that will be consumed on a Mac, - by an application that is not hip to the "NTFS times" format. To do - this, use the and - properties. A valid zip - file may store the file times in both formats. But, there are no - guarantees that a program running on Mac or Linux will gracefully - handle the NTFS-formatted times when Unix times are present, or that a - non-DotNetZip-powered application running on Windows will be able to - handle file times in Unix format. DotNetZip will always do something - reasonable; other libraries or tools may not. When in doubt, test. - - - - I'll bet you didn't think one person could type so much about time, eh? - And reading it was so enjoyable, too! Well, in appreciation, maybe you - should donate? - - - - - - - - - - - Last Access time for the file represented by the entry. - - - This value may or may not be meaningful. If the ZipEntry was read from an existing - Zip archive, this information may not be available. For an explanation of why, see - . - - - - - - - - The file creation time for the file represented by the entry. - - - - This value may or may not be meaningful. If the ZipEntry was read - from an existing zip archive, and the creation time was not set on the entry - when the zip file was created, then this property may be meaningless. For an - explanation of why, see . - - - - - - - - Specifies whether the Creation, Access, and Modified times for the given - entry will be emitted in "Windows format" when the zip archive is saved. - - - - - An application creating a zip archive can use this flag to explicitly - specify that the file times for the entry should or should not be stored - in the zip archive in the format used by Windows. The default value of - this property is true. - - - - When adding an entry from a file or directory, the Creation (), Access (), and Modified - () times for the given entry are automatically - set from the filesystem values. When adding an entry from a stream or - string, all three values are implicitly set to DateTime.Now. Applications - can also explicitly set those times by calling . - - - - PKWARE's - zip specification describes multiple ways to format these times in a - zip file. One is the format Windows applications normally use: 100ns ticks - since Jan 1, 1601 UTC. The other is a format Unix applications typically - use: seconds since January 1, 1970 UTC. Each format can be stored in an - "extra field" in the zip entry when saving the zip archive. The former - uses an extra field with a Header Id of 0x000A, while the latter uses a - header ID of 0x5455. - - - - Not all zip tools and libraries can interpret these fields. Windows - compressed folders is one that can read the Windows Format timestamps, - while I believe the Infozip - tools can read the Unix format timestamps. Although the time values are - easily convertible, subject to a loss of precision, some tools and - libraries may be able to read only one or the other. DotNetZip can read or - write times in either or both formats. - - - - The times stored are taken from , , and . - - - - This property is not mutually exclusive from the property. It is - possible that a zip entry can embed the timestamps in both forms, one - form, or neither. But, there are no guarantees that a program running on - Mac or Linux will gracefully handle NTFS Formatted times, or that a - non-DotNetZip-powered application running on Windows will be able to - handle file times in Unix format. When in doubt, test. - - - - Normally you will use the ZipFile.EmitTimesInWindowsFormatWhenSaving - property, to specify the behavior for all entries in a zip, rather than - the property on each individual entry. - - - - - - - - - - - - - Specifies whether the Creation, Access, and Modified times for the given - entry will be emitted in "Unix(tm) format" when the zip archive is saved. - - - - - An application creating a zip archive can use this flag to explicitly - specify that the file times for the entry should or should not be stored - in the zip archive in the format used by Unix. By default this flag is - false, meaning the Unix-format times are not stored in the zip - archive. - - - - When adding an entry from a file or directory, the Creation (), Access (), and Modified - () times for the given entry are automatically - set from the filesystem values. When adding an entry from a stream or - string, all three values are implicitly set to DateTime.Now. Applications - can also explicitly set those times by calling . - - - - PKWARE's - zip specification describes multiple ways to format these times in a - zip file. One is the format Windows applications normally use: 100ns ticks - since Jan 1, 1601 UTC. The other is a format Unix applications typically - use: seconds since Jan 1, 1970 UTC. Each format can be stored in an - "extra field" in the zip entry when saving the zip archive. The former - uses an extra field with a Header Id of 0x000A, while the latter uses a - header ID of 0x5455. - - - - Not all tools and libraries can interpret these fields. Windows - compressed folders is one that can read the Windows Format timestamps, - while I believe the Infozip - tools can read the Unix format timestamps. Although the time values are - easily convertible, subject to a loss of precision, some tools and - libraries may be able to read only one or the other. DotNetZip can read or - write times in either or both formats. - - - - The times stored are taken from , , and . - - - - This property is not mutually exclusive from the property. It is - possible that a zip entry can embed the timestamps in both forms, one - form, or neither. But, there are no guarantees that a program running on - Mac or Linux will gracefully handle NTFS Formatted times, or that a - non-DotNetZip-powered application running on Windows will be able to - handle file times in Unix format. When in doubt, test. - - - - Normally you will use the ZipFile.EmitTimesInUnixFormatWhenSaving - property, to specify the behavior for all entries, rather than the - property on each individual entry. - - - - - - - - - - - - - The type of timestamp attached to the ZipEntry. - - - - This property is valid only for a ZipEntry that was read from a zip archive. - It indicates the type of timestamp attached to the entry. - - - - - - - - The file attributes for the entry. - - - - - - The attributes in NTFS include - ReadOnly, Archive, Hidden, System, and Indexed. When adding a - ZipEntry to a ZipFile, these attributes are set implicitly when - adding an entry from the filesystem. When adding an entry from a stream - or string, the Attributes are not set implicitly. Regardless of the way - an entry was added to a ZipFile, you can set the attributes - explicitly if you like. - - - - When reading a ZipEntry from a ZipFile, the attributes are - set according to the data stored in the ZipFile. If you extract the - entry from the archive to a filesystem file, DotNetZip will set the - attributes on the resulting file accordingly. - - - - The attributes can be set explicitly by the application. For example the - application may wish to set the FileAttributes.ReadOnly bit for all - entries added to an archive, so that on unpack, this attribute will be set - on the extracted file. Any changes you make to this property are made - permanent only when you call a Save() method on the ZipFile - instance that contains the ZipEntry. - - - - For example, an application may wish to zip up a directory and set the - ReadOnly bit on every file in the archive, so that upon later extraction, - the resulting files will be marked as ReadOnly. Not every extraction tool - respects these attributes, but if you unpack with DotNetZip, as for - example in a self-extracting archive, then the attributes will be set as - they are stored in the ZipFile. - - - - These attributes may not be interesting or useful if the resulting archive - is extracted on a non-Windows platform. How these attributes get used - upon extraction depends on the platform and tool used. - - - - This property is only partially supported in the Silverlight version - of the library: applications can read attributes on entries within - ZipFiles. But extracting entries within Silverlight will not set the - attributes on the extracted files. - - - - - - - The name of the filesystem file, referred to by the ZipEntry. - - - - - This property specifies the thing-to-be-zipped on disk, and is set only - when the ZipEntry is being created from a filesystem file. If the - ZipFile is instantiated by reading an existing .zip archive, then - the LocalFileName will be null (Nothing in VB). - - - - When it is set, the value of this property may be different than , which is the path used in the archive itself. If you - call Zip.AddFile("foop.txt", AlternativeDirectory), then the path - used for the ZipEntry within the zip archive will be different - than this path. - - - - If the entry is being added from a stream, then this is null (Nothing in VB). - - - - - - - - The name of the file contained in the ZipEntry. - - - - - - This is the name of the entry in the ZipFile itself. When creating - a zip archive, if the ZipEntry has been created from a filesystem - file, via a call to or , or a related overload, the value - of this property is derived from the name of that file. The - FileName property does not include drive letters, and may include a - different directory path, depending on the value of the - directoryPathInArchive parameter used when adding the entry into - the ZipFile. - - - - In some cases there is no related filesystem file - for example when a - ZipEntry is created using or one of the similar overloads. In this case, the value of - this property is derived from the fileName and the directory path passed - to that method. - - - - When reading a zip file, this property takes the value of the entry name - as stored in the zip file. If you extract such an entry, the extracted - file will take the name given by this property. - - - - Applications can set this property when creating new zip archives or when - reading existing archives. When setting this property, the actual value - that is set will replace backslashes with forward slashes, in accordance - with the Zip - specification, for compatibility with Unix(tm) and ... get - this.... Amiga! - - - - If an application reads a ZipFile via or a related overload, and then explicitly - sets the FileName on an entry contained within the ZipFile, and - then calls , the application will effectively - rename the entry within the zip archive. - - - - If an application sets the value of FileName, then calls - Extract() on the entry, the entry is extracted to a file using the - newly set value as the filename. The FileName value is made - permanent in the zip archive only after a call to one of the - ZipFile.Save() methods on the ZipFile that contains the - ZipEntry. - - - - If an application attempts to set the FileName to a value that - would result in a duplicate entry in the ZipFile, an exception is - thrown. - - - - When a ZipEntry is contained within a ZipFile, applications - cannot rename the entry within the context of a foreach (For - Each in VB) loop, because of the way the ZipFile stores - entries. If you need to enumerate through all the entries and rename one - or more of them, use ZipFile.EntriesSorted as the - collection. See also, ZipFile.GetEnumerator(). - - - - - - - The stream that provides content for the ZipEntry. - - - - - - The application can use this property to set the input stream for an - entry on a just-in-time basis. Imagine a scenario where the application - creates a ZipFile comprised of content obtained from hundreds of - files, via calls to AddFile(). The DotNetZip library opens streams - on these files on a just-in-time basis, only when writing the entry out to - an external store within the scope of a ZipFile.Save() call. Only - one input stream is opened at a time, as each entry is being written out. - - - - Now imagine a different application that creates a ZipFile - with content obtained from hundreds of streams, added through . Normally the - application would supply an open stream to that call. But when large - numbers of streams are being added, this can mean many open streams at one - time, unnecessarily. - - - - To avoid this, call and specify delegates that open and close the stream at - the time of Save. - - - - - Setting the value of this property when the entry was not added from a - stream (for example, when the ZipEntry was added with or , or when the entry was added by - reading an existing zip archive) will throw an exception. - - - - - - - - A flag indicating whether the InputStream was provided Just-in-time. - - - - - - When creating a zip archive, an application can obtain content for one or - more of the ZipEntry instances from streams, using the method. At the time - of calling that method, the application can supply null as the value of - the stream parameter. By doing so, the application indicates to the - library that it will provide a stream for the entry on a just-in-time - basis, at the time one of the ZipFile.Save() methods is called and - the data for the various entries are being compressed and written out. - - - - In this case, the application can set the - property, typically within the SaveProgress event (event type: ) for that entry. - - - - The application will later want to call Close() and Dispose() on that - stream. In the SaveProgress event, when the event type is , the application can - do so. This flag indicates that the stream has been provided by the - application on a just-in-time basis and that it is the application's - responsibility to call Close/Dispose on that stream. - - - - - - - - An enum indicating the source of the ZipEntry. - - - - - The version of the zip engine needed to read the ZipEntry. - - - - - This is a readonly property, indicating the version of the Zip - specification that the extracting tool or library must support to - extract the given entry. Generally higher versions indicate newer - features. Older zip engines obviously won't know about new features, and - won't be able to extract entries that depend on those newer features. - - - - - value - Features - - - - 20 - a basic Zip Entry, potentially using PKZIP encryption. - - - - - 45 - The ZIP64 extension is used on the entry. - - - - - 46 - File is compressed using BZIP2 compression* - - - - 50 - File is encrypted using PkWare's DES, 3DES, (broken) RC2 or RC4 - - - - 51 - File is encrypted using PKWare's AES encryption or corrected RC2 encryption. - - - - 52 - File is encrypted using corrected RC2-64 encryption** - - - - 61 - File is encrypted using non-OAEP key wrapping*** - - - - 63 - File is compressed using LZMA, PPMd+, Blowfish, or Twofish - - - - - - There are other values possible, not listed here. DotNetZip supports - regular PKZip encryption, and ZIP64 extensions. DotNetZip cannot extract - entries that require a zip engine higher than 45. - - - - This value is set upon reading an existing zip file, or after saving a zip - archive. - - - - - - The comment attached to the ZipEntry. - - - - - Each entry in a zip file can optionally have a comment associated to - it. The comment might be displayed by a zip tool during extraction, for - example. - - - - By default, the Comment is encoded in IBM437 code page. You can - specify an alternative with and - . - - - - - - - - Indicates whether the entry requires ZIP64 extensions. - - - - - - This property is null (Nothing in VB) until a Save() method on the - containing instance has been called. The property is - non-null (HasValue is true) only after a Save() method has - been called. - - - - After the containing ZipFile has been saved, the Value of this - property is true if any of the following three conditions holds: the - uncompressed size of the entry is larger than 0xFFFFFFFF; the compressed - size of the entry is larger than 0xFFFFFFFF; the relative offset of the - entry within the zip archive is larger than 0xFFFFFFFF. These quantities - are not known until a Save() is attempted on the zip archive and - the compression is applied. - - - - If none of the three conditions holds, then the Value is false. - - - - A Value of false does not indicate that the entry, as saved in the - zip archive, does not use ZIP64. It merely indicates that ZIP64 is - not required. An entry may use ZIP64 even when not required if - the property on the containing - ZipFile instance is set to , or if - the property on the containing - ZipFile instance is set to - and the output stream was not seekable. - - - - - - - - Indicates whether the entry actually used ZIP64 extensions, as it was most - recently written to the output file or stream. - - - - - - This Nullable property is null (Nothing in VB) until a Save() - method on the containing instance has been - called. HasValue is true only after a Save() method has been - called. - - - - The value of this property for a particular ZipEntry may change - over successive calls to Save() methods on the containing ZipFile, - even if the file that corresponds to the ZipEntry does not. This - may happen if other entries contained in the ZipFile expand, - causing the offset for this particular entry to exceed 0xFFFFFFFF. - - - - - - - The bitfield for the entry as defined in the zip spec. You probably - never need to look at this. - - - - - You probably do not need to concern yourself with the contents of this - property, but in case you do: - - - - - bit - meaning - - - - 0 - set if encryption is used. - - - - 1-2 - - set to determine whether normal, max, fast deflation. DotNetZip library - always leaves these bits unset when writing (indicating "normal" - deflation"), but can read an entry with any value here. - - - - - 3 - - Indicates that the Crc32, Compressed and Uncompressed sizes are zero in the - local header. This bit gets set on an entry during writing a zip file, when - it is saved to a non-seekable output stream. - - - - - - 4 - reserved for "enhanced deflating". This library doesn't do enhanced deflating. - - - - 5 - set to indicate the zip is compressed patched data. This library doesn't do that. - - - - 6 - - set if PKWare's strong encryption is used (must also set bit 1 if bit 6 is - set). This bit is not set if WinZip's AES encryption is set. - - - - 7 - not used - - - - 8 - not used - - - - 9 - not used - - - - 10 - not used - - - - 11 - - Language encoding flag (EFS). If this bit is set, the filename and comment - fields for this file must be encoded using UTF-8. This library currently - does not support UTF-8. - - - - - 12 - Reserved by PKWARE for enhanced compression. - - - - 13 - - Used when encrypting the Central Directory to indicate selected data - values in the Local Header are masked to hide their actual values. See - the section in the Zip - specification describing the Strong Encryption Specification for - details. - - - - - 14 - Reserved by PKWARE. - - - - 15 - Reserved by PKWARE. - - - - - - - - - The compression method employed for this ZipEntry. - - - - - - The - Zip specification allows a variety of compression methods. This - library supports just two: 0x08 = Deflate. 0x00 = Store (no compression), - for reading or writing. - - - - When reading an entry from an existing zipfile, the value you retrieve - here indicates the compression method used on the entry by the original - creator of the zip. When writing a zipfile, you can specify either 0x08 - (Deflate) or 0x00 (None). If you try setting something else, you will get - an exception. - - - - You may wish to set CompressionMethod to CompressionMethod.None (0) - when zipping already-compressed data like a jpg, png, or mp3 file. - This can save time and cpu cycles. - - - - When setting this property on a ZipEntry that is read from an - existing zip file, calling ZipFile.Save() will cause the new - CompressionMethod to be used on the entry in the newly saved zip file. - - - - Setting this property may have the side effect of modifying the - CompressionLevel property. If you set the CompressionMethod to a - value other than None, and CompressionLevel is previously - set to None, then CompressionLevel will be set to - Default. - - - - - - - In this example, the first entry added to the zip archive uses the default - behavior - compression is used where it makes sense. The second entry, - the MP3 file, is added to the archive without being compressed. - - using (ZipFile zip = new ZipFile(ZipFileToCreate)) - { - ZipEntry e1= zip.AddFile(@"notes\Readme.txt"); - ZipEntry e2= zip.AddFile(@"music\StopThisTrain.mp3"); - e2.CompressionMethod = CompressionMethod.None; - zip.Save(); - } - - - - Using zip As New ZipFile(ZipFileToCreate) - zip.AddFile("notes\Readme.txt") - Dim e2 as ZipEntry = zip.AddFile("music\StopThisTrain.mp3") - e2.CompressionMethod = CompressionMethod.None - zip.Save - End Using - - - - - - Sets the compression level to be used for the entry when saving the zip - archive. This applies only for CompressionMethod = DEFLATE. - - - - - When using the DEFLATE compression method, Varying the compression - level used on entries can affect the size-vs-speed tradeoff when - compression and decompressing data streams or files. - - - - If you do not set this property, the default compression level is used, - which normally gives a good balance of compression efficiency and - compression speed. In some tests, using BestCompression can - double the time it takes to compress, while delivering just a small - increase in compression efficiency. This behavior will vary with the - type of data you compress. If you are in doubt, just leave this setting - alone, and accept the default. - - - - When setting this property on a ZipEntry that is read from an - existing zip file, calling ZipFile.Save() will cause the new - CompressionLevel to be used on the entry in the newly saved zip file. - - - - Setting this property may have the side effect of modifying the - CompressionMethod property. If you set the CompressionLevel - to a value other than None, CompressionMethod will be set - to Deflate, if it was previously None. - - - - Setting this property has no effect if the CompressionMethod is something - other than Deflate or None. - - - - - - - - The compressed size of the file, in bytes, within the zip archive. - - - - When reading a ZipFile, this value is read in from the existing - zip file. When creating or updating a ZipFile, the compressed - size is computed during compression. Therefore the value on a - ZipEntry is valid after a call to Save() (or one of its - overloads) in that case. - - - - - - - The size of the file, in bytes, before compression, or after extraction. - - - - When reading a ZipFile, this value is read in from the existing - zip file. When creating or updating a ZipFile, the uncompressed - size is computed during compression. Therefore the value on a - ZipEntry is valid after a call to Save() (or one of its - overloads) in that case. - - - - - - - The ratio of compressed size to uncompressed size of the ZipEntry. - - - - - This is a ratio of the compressed size to the uncompressed size of the - entry, expressed as a double in the range of 0 to 100+. A value of 100 - indicates no compression at all. It could be higher than 100 when the - compression algorithm actually inflates the data, as may occur for small - files, or uncompressible data that is encrypted. - - - - You could format it for presentation to a user via a format string of - "{3,5:F0}%" to see it as a percentage. - - - - If the size of the original uncompressed file is 0, implying a - denominator of 0, the return value will be zero. - - - - This property is valid after reading in an existing zip file, or after - saving the ZipFile that contains the ZipEntry. You cannot know the - effect of a compression transform until you try it. - - - - - - - The 32-bit CRC (Cyclic Redundancy Check) on the contents of the ZipEntry. - - - - - You probably don't need to concern yourself with this. It is used - internally by DotNetZip to verify files or streams upon extraction. - - The value is a 32-bit - CRC using 0xEDB88320 for the polynomial. This is the same CRC-32 used in - PNG, MPEG-2, and other protocols and formats. It is a read-only property; when - creating a Zip archive, the CRC for each entry is set only after a call to - Save() on the containing ZipFile. When reading an existing zip file, the value - of this property reflects the stored CRC for the entry. - - - - - - True if the entry is a directory (not a file). - This is a readonly property on the entry. - - - - - A derived property that is true if the entry uses encryption. - - - - - This is a readonly property on the entry. When reading a zip file, - the value for the ZipEntry is determined by the data read - from the zip file. After saving a ZipFile, the value of this - property for each ZipEntry indicates whether encryption was - actually used (which will have been true if the was set and the property - was something other than . - - - - - - Set this to specify which encryption algorithm to use for the entry when - saving it to a zip archive. - - - - - - Set this property in order to encrypt the entry when the ZipFile is - saved. When setting this property, you must also set a on the entry. If you set a value other than on this property and do not set a - Password then the entry will not be encrypted. The ZipEntry - data is encrypted as the ZipFile is saved, when you call or one of its cousins on the containing - ZipFile instance. You do not need to specify the Encryption - when extracting entries from an archive. - - - - The Zip specification from PKWare defines a set of encryption algorithms, - and the data formats for the zip archive that support them, and PKWare - supports those algorithms in the tools it produces. Other vendors of tools - and libraries, such as WinZip or Xceed, typically support a - subset of the algorithms specified by PKWare. These tools can - sometimes support additional different encryption algorithms and data - formats, not specified by PKWare. The AES Encryption specified and - supported by WinZip is the most popular example. This library supports a - subset of the complete set of algorithms specified by PKWare and other - vendors. - - - - There is no common, ubiquitous multi-vendor standard for strong encryption - within zip files. There is broad support for so-called "traditional" Zip - encryption, sometimes called Zip 2.0 encryption, as specified - by PKWare, but this encryption is considered weak and - breakable. This library currently supports the Zip 2.0 "weak" encryption, - and also a stronger WinZip-compatible AES encryption, using either 128-bit - or 256-bit key strength. If you want DotNetZip to support an algorithm - that is not currently supported, call the author of this library and maybe - we can talk business. - - - - The class also has a property. In most cases you will use - that property when setting encryption. This property takes - precedence over any Encryption set on the ZipFile itself. - Typically, you would use the per-entry Encryption when most entries in the - zip archive use one encryption algorithm, and a few entries use a - different one. If all entries in the zip file use the same Encryption, - then it is simpler to just set this property on the ZipFile itself, when - creating a zip archive. - - - - Some comments on updating archives: If you read a ZipFile, you can - modify the Encryption on an encrypted entry: you can remove encryption - from an entry that was encrypted; you can encrypt an entry that was not - encrypted previously; or, you can change the encryption algorithm. The - changes in encryption are not made permanent until you call Save() on the - ZipFile. To effect changes in encryption, the entry content is - streamed through several transformations, depending on the modification - the application has requested. For example if the entry is not encrypted - and the application sets Encryption to PkzipWeak, then at - the time of Save(), the original entry is read and decompressed, - then re-compressed and encrypted. Conversely, if the original entry is - encrypted with PkzipWeak encryption, and the application sets the - Encryption property to WinZipAes128, then at the time of - Save(), the original entry is decrypted via PKZIP encryption and - decompressed, then re-compressed and re-encrypted with AES. This all - happens automatically within the library, but it can be time-consuming for - large entries. - - - - Additionally, when updating archives, it is not possible to change the - password when changing the encryption algorithm. To change both the - algorithm and the password, you need to Save() the zipfile twice. First - set the Encryption to None, then call Save(). Then set the - Encryption to the new value (not "None"), then call Save() - once again. - - - - The WinZip AES encryption algorithms are not supported on the .NET Compact - Framework. - - - - - - This example creates a zip archive that uses encryption, and then extracts - entries from the archive. When creating the zip archive, the ReadMe.txt - file is zipped without using a password or encryption. The other file - uses encryption. - - - // Create a zip archive with AES Encryption. - using (ZipFile zip = new ZipFile()) - { - zip.AddFile("ReadMe.txt") - ZipEntry e1= zip.AddFile("2008-Regional-Sales-Report.pdf"); - e1.Encryption= EncryptionAlgorithm.WinZipAes256; - e1.Password= "Top.Secret.No.Peeking!"; - zip.Save("EncryptedArchive.zip"); - } - - // Extract a zip archive that uses AES Encryption. - // You do not need to specify the algorithm during extraction. - using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) - { - // Specify the password that is used during extraction, for - // all entries that require a password: - zip.Password= "Top.Secret.No.Peeking!"; - zip.ExtractAll("extractDirectory"); - } - - - - ' Create a zip that uses Encryption. - Using zip As New ZipFile() - zip.AddFile("ReadMe.txt") - Dim e1 as ZipEntry - e1= zip.AddFile("2008-Regional-Sales-Report.pdf") - e1.Encryption= EncryptionAlgorithm.WinZipAes256 - e1.Password= "Top.Secret.No.Peeking!" - zip.Save("EncryptedArchive.zip") - End Using - - ' Extract a zip archive that uses AES Encryption. - ' You do not need to specify the algorithm during extraction. - Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) - ' Specify the password that is used during extraction, for - ' all entries that require a password: - zip.Password= "Top.Secret.No.Peeking!" - zip.ExtractAll("extractDirectory") - End Using - - - - - - Thrown in the setter if EncryptionAlgorithm.Unsupported is specified. - - - ZipEntry.Password - ZipFile.Encryption - - - - The Password to be used when encrypting a ZipEntry upon - ZipFile.Save(), or when decrypting an entry upon Extract(). - - - - - This is a write-only property on the entry. Set this to request that the - entry be encrypted when writing the zip archive, or set it to specify the - password to be used when extracting an existing entry that is encrypted. - - - - The password set here is implicitly used to encrypt the entry during the - operation, or to decrypt during the or operation. If you set - the Password on a ZipEntry after calling Save(), there is no - effect. - - - - Consider setting the property when using a - password. Answering concerns that the standard password protection - supported by all zip tools is weak, WinZip has extended the ZIP - specification with a way to use AES Encryption to protect entries in the - Zip file. Unlike the "PKZIP 2.0" encryption specified in the PKZIP - specification, AES - Encryption uses a standard, strong, tested, encryption - algorithm. DotNetZip can create zip archives that use WinZip-compatible - AES encryption, if you set the property. But, - archives created that use AES encryption may not be readable by all other - tools and libraries. For example, Windows Explorer cannot read a - "compressed folder" (a zip file) that uses AES encryption, though it can - read a zip file that uses "PKZIP encryption." - - - - The class also has a - property. This property takes precedence over any password set on the - ZipFile itself. Typically, you would use the per-entry Password when most - entries in the zip archive use one password, and a few entries use a - different password. If all entries in the zip file use the same password, - then it is simpler to just set this property on the ZipFile itself, - whether creating a zip archive or extracting a zip archive. - - - - Some comments on updating archives: If you read a ZipFile, you - cannot modify the password on any encrypted entry, except by extracting - the entry with the original password (if any), removing the original entry - via , and then adding a new - entry with a new Password. - - - - For example, suppose you read a ZipFile, and there is an encrypted - entry. Setting the Password property on that ZipEntry and then - calling Save() on the ZipFile does not update the password - on that entry in the archive. Neither is an exception thrown. Instead, - what happens during the Save() is the existing entry is copied - through to the new zip archive, in its original encrypted form. Upon - re-reading that archive, the entry can be decrypted with its original - password. - - - - If you read a ZipFile, and there is an un-encrypted entry, you can set the - Password on the entry and then call Save() on the ZipFile, and get - encryption on that entry. - - - - - - - This example creates a zip file with two entries, and then extracts the - entries from the zip file. When creating the zip file, the two files are - added to the zip file using password protection. Each entry uses a - different password. During extraction, each file is extracted with the - appropriate password. - - - // create a file with encryption - using (ZipFile zip = new ZipFile()) - { - ZipEntry entry; - entry= zip.AddFile("Declaration.txt"); - entry.Password= "123456!"; - entry = zip.AddFile("Report.xls"); - entry.Password= "1Secret!"; - zip.Save("EncryptedArchive.zip"); - } - - // extract entries that use encryption - using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) - { - ZipEntry entry; - entry = zip["Declaration.txt"]; - entry.Password = "123456!"; - entry.Extract("extractDir"); - entry = zip["Report.xls"]; - entry.Password = "1Secret!"; - entry.Extract("extractDir"); - } - - - - - Using zip As New ZipFile - Dim entry as ZipEntry - entry= zip.AddFile("Declaration.txt") - entry.Password= "123456!" - entry = zip.AddFile("Report.xls") - entry.Password= "1Secret!" - zip.Save("EncryptedArchive.zip") - End Using - - - ' extract entries that use encryption - Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) - Dim entry as ZipEntry - entry = zip("Declaration.txt") - entry.Password = "123456!" - entry.Extract("extractDir") - entry = zip("Report.xls") - entry.Password = "1Secret!" - entry.Extract("extractDir") - End Using - - - - - - - ZipFile.Password - - - - The action the library should take when extracting a file that already exists. - - - - - This property affects the behavior of the Extract methods (one of the - Extract() or ExtractWithPassword() overloads), when - extraction would would overwrite an existing filesystem file. If you do - not set this property, the library throws an exception when extracting - an entry would overwrite an existing file. - - - - This property has no effect when extracting to a stream, or when the file to be - extracted does not already exist. - - - - - - - This example shows how to set the ExtractExistingFile property in - an ExtractProgress event, in response to user input. The - ExtractProgress event is invoked if and only if the - ExtractExistingFile property was previously set to - ExtractExistingFileAction.InvokeExtractProgressEvent. - - public static void ExtractProgress(object sender, ExtractProgressEventArgs e) - { - if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) - Console.WriteLine("extract {0} ", e.CurrentEntry.FileName); - - else if (e.EventType == ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite) - { - ZipEntry entry = e.CurrentEntry; - string response = null; - // Ask the user if he wants overwrite the file - do - { - Console.Write("Overwrite {0} in {1} ? (y/n/C) ", entry.FileName, e.ExtractLocation); - response = Console.ReadLine(); - Console.WriteLine(); - - } while (response != null && response[0]!='Y' && - response[0]!='N' && response[0]!='C'); - - if (response[0]=='C') - e.Cancel = true; - else if (response[0]=='Y') - entry.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently; - else - entry.ExtractExistingFile= ExtractExistingFileAction.DoNotOverwrite; - } - } - - - - - - The action to take when an error is encountered while - opening or reading files as they are saved into a zip archive. - - - - - Errors can occur within a call to ZipFile.Save, as the various files contained - in a ZipFile are being saved into the zip archive. During the - Save, DotNetZip will perform a File.Open on the file - associated to the ZipEntry, and then will read the entire contents of - the file as it is zipped. Either the open or the Read may fail, because - of lock conflicts or other reasons. Using this property, you can - specify the action to take when such errors occur. - - - - Typically you will NOT set this property on individual ZipEntry - instances. Instead, you will set the ZipFile.ZipErrorAction property on - the ZipFile instance, before adding any entries to the - ZipFile. If you do this, errors encountered on behalf of any of - the entries in the ZipFile will be handled the same way. - - - - But, if you use a handler, you will want - to set this property on the ZipEntry within the handler, to - communicate back to DotNetZip what you would like to do with the - particular error. - - - - - - - - - Indicates whether the entry was included in the most recent save. - - - An entry can be excluded or skipped from a save if there is an error - opening or reading the entry. - - - - - - A callback that allows the application to specify the compression to use - for a given entry that is about to be added to the zip archive. - - - - - See - - - - - - Set to indicate whether to use UTF-8 encoding for filenames and comments. - - - - - - If this flag is set, the comment and filename for the entry will be - encoded with UTF-8, as described in the Zip - specification, if necessary. "Necessary" means, the filename or - entry comment (if any) cannot be reflexively encoded and decoded using the - default code page, IBM437. - - - - Setting this flag to true is equivalent to setting to System.Text.Encoding.UTF8. - - - - This flag has no effect or relation to the text encoding used within the - file itself. - - - - - - - The text encoding to use for the FileName and Comment on this ZipEntry, - when the default encoding is insufficient. - - - - - - Don't use this property. See . - - - - - - - Specifies the alternate text encoding used by this ZipEntry - - - - The default text encoding used in Zip files for encoding filenames and - comments is IBM437, which is something like a superset of ASCII. In - cases where this is insufficient, applications can specify an - alternate encoding. - - - When creating a zip file, the usage of the alternate encoding is - governed by the property. - Typically you would set both properties to tell DotNetZip to employ an - encoding that is not IBM437 in the zipfile you are creating. - - - Keep in mind that because the ZIP specification states that the only - valid encodings to use are IBM437 and UTF-8, if you use something - other than that, then zip tools and libraries may not be able to - successfully read the zip archive you generate. - - - The zip specification states that applications should presume that - IBM437 is in use, except when a special bit is set, which indicates - UTF-8. There is no way to specify an arbitrary code page, within the - zip file itself. When you create a zip file encoded with gb2312 or - ibm861 or anything other than IBM437 or UTF-8, then the application - that reads the zip file needs to "know" which code page to use. In - some cases, the code page used when reading is chosen implicitly. For - example, WinRar uses the ambient code page for the host desktop - operating system. The pitfall here is that if you create a zip in - Copenhagen and send it to Tokyo, the reader of the zipfile may not be - able to decode successfully. - - - - This example shows how to create a zipfile encoded with a - language-specific encoding: - - using (var zip = new ZipFile()) - { - zip.AlternateEnoding = System.Text.Encoding.GetEncoding("ibm861"); - zip.AlternateEnodingUsage = ZipOption.Always; - zip.AddFileS(arrayOfFiles); - zip.Save("Myarchive-Encoded-in-IBM861.zip"); - } - - - - - - - Describes if and when this instance should apply - AlternateEncoding to encode the FileName and Comment, when - saving. - - - - - - Indicates whether an entry is marked as a text file. Be careful when - using on this property. Unless you have a good reason, you should - probably ignore this property. - - - - - The ZIP format includes a provision for specifying whether an entry in - the zip archive is a text or binary file. This property exposes that - metadata item. Be careful when using this property: It's not clear - that this property as a firm meaning, across tools and libraries. - - - - To be clear, when reading a zip file, the property value may or may - not be set, and its value may or may not be valid. Not all entries - that you may think of as "text" entries will be so marked, and entries - marked as "text" are not guaranteed in any way to be text entries. - Whether the value is set and set correctly depends entirely on the - application that produced the zip file. - - - - There are many zip tools available, and when creating zip files, some - of them "respect" the IsText metadata field, and some of them do not. - Unfortunately, even when an application tries to do "the right thing", - it's not always clear what "the right thing" is. - - - - There's no firm definition of just what it means to be "a text file", - and the zip specification does not help in this regard. Twenty years - ago, text was ASCII, each byte was less than 127. IsText meant, all - bytes in the file were less than 127. These days, it is not the case - that all text files have all bytes less than 127. Any unicode file - may have bytes that are above 0x7f. The zip specification has nothing - to say on this topic. Therefore, it's not clear what IsText really - means. - - - - This property merely tells a reading application what is stored in the - metadata for an entry, without guaranteeing its validity or its - meaning. - - - - When DotNetZip is used to create a zipfile, it attempts to set this - field "correctly." For example, if a file ends in ".txt", this field - will be set. Your application may override that default setting. When - writing a zip file, you must set the property before calling - Save() on the ZipFile. - - - - When reading a zip file, a more general way to decide just what kind - of file is contained in a particular entry is to use the file type - database stored in the operating system. The operating system stores - a table that says, a file with .jpg extension is a JPG image file, a - file with a .xml extension is an XML document, a file with a .txt is a - pure ASCII text document, and so on. To get this information on - Windows, you - need to read and parse the registry. - - - - - using (var zip = new ZipFile()) - { - var e = zip.UpdateFile("Descriptions.mme", ""); - e.IsText = true; - zip.Save(zipPath); - } - - - - Using zip As New ZipFile - Dim e2 as ZipEntry = zip.AddFile("Descriptions.mme", "") - e.IsText= True - zip.Save(zipPath) - End Using - - - - - - An enum that specifies the type of timestamp available on the ZipEntry. - - - - - - The last modified time of a file can be stored in multiple ways in - a zip file, and they are not mutually exclusive: - - - - - In the so-called "DOS" format, which has a 2-second precision. Values - are rounded to the nearest even second. For example, if the time on the - file is 12:34:43, then it will be stored as 12:34:44. This first value - is accessible via the LastModified property. This value is always - present in the metadata for each zip entry. In some cases the value is - invalid, or zero. - - - - In the so-called "Windows" or "NTFS" format, as an 8-byte integer - quantity expressed as the number of 1/10 milliseconds (in other words - the number of 100 nanosecond units) since January 1, 1601 (UTC). This - format is how Windows represents file times. This time is accessible - via the ModifiedTime property. - - - - In the "Unix" format, a 4-byte quantity specifying the number of seconds since - January 1, 1970 UTC. - - - - In an older format, now deprecated but still used by some current - tools. This format is also a 4-byte quantity specifying the number of - seconds since January 1, 1970 UTC. - - - - - - This bit field describes which of the formats were found in a ZipEntry that was read. - - - - - - - Default value. - - - - - A DOS timestamp with 2-second precision. - - - - - A Windows timestamp with 100-ns precision. - - - - - A Unix timestamp with 1-second precision. - - - - - A Unix timestamp with 1-second precision, stored in InfoZip v1 format. This - format is outdated and is supported for reading archives only. - - - - - The method of compression to use for a particular ZipEntry. - - - - PKWare's - ZIP Specification describes a number of distinct - cmopression methods that can be used within a zip - file. DotNetZip supports a subset of them. - - - - - No compression at all. For COM environments, the value is 0 (zero). - - - - - DEFLATE compression, as described in IETF RFC - 1951. This is the "normal" compression used in zip - files. For COM environments, the value is 8. - - - - - BZip2 compression, a compression algorithm developed by Julian Seward. - For COM environments, the value is 12. - - - - - The ZipFile type represents a zip archive file. - - - - - This is the main type in the DotNetZip class library. This class reads and - writes zip files, as defined in the specification - for zip files described by PKWare. The compression for this - implementation is provided by a managed-code version of Zlib, included with - DotNetZip in the classes in the Ionic.Zlib namespace. - - - - This class provides a general purpose zip file capability. Use it to read, - create, or update zip files. When you want to create zip files using a - Stream type to write the zip file, you may want to consider the class. - - - - Both the ZipOutputStream class and the ZipFile class can - be used to create zip files. Both of them support many of the common zip - features, including Unicode, different compression methods and levels, - and ZIP64. They provide very similar performance when creating zip - files. - - - - The ZipFile class is generally easier to use than - ZipOutputStream and should be considered a higher-level interface. For - example, when creating a zip file via calls to the PutNextEntry() and - Write() methods on the ZipOutputStream class, the caller is - responsible for opening the file, reading the bytes from the file, writing - those bytes into the ZipOutputStream, setting the attributes on the - ZipEntry, and setting the created, last modified, and last accessed - timestamps on the zip entry. All of these things are done automatically by a - call to ZipFile.AddFile(). - For this reason, the ZipOutputStream is generally recommended for use - only when your application emits arbitrary data, not necessarily data from a - filesystem file, directly into a zip file, and does so using a Stream - metaphor. - - - - Aside from the differences in programming model, there are other - differences in capability between the two classes. - - - - - ZipFile can be used to read and extract zip files, in addition to - creating zip files. ZipOutputStream cannot read zip files. If you want - to use a stream to read zip files, check out the class. - - - - ZipOutputStream does not support the creation of segmented or spanned - zip files. - - - - ZipOutputStream cannot produce a self-extracting archive. - - - - - Be aware that the ZipFile class implements the interface. In order for ZipFile to - produce a valid zip file, you use use it within a using clause (Using - in VB), or call the Dispose() method explicitly. See the examples - for how to employ a using clause. - - - - - - - Adds an item, either a file or a directory, to a zip file archive. - - - - - This method is handy if you are adding things to zip archive and don't - want to bother distinguishing between directories or files. Any files are - added as single entries. A directory added through this method is added - recursively: all files and subdirectories contained within the directory - are added to the ZipFile. - - - - The name of the item may be a relative path or a fully-qualified - path. Remember, the items contained in ZipFile instance get written - to the disk only when you call or a similar - save method. - - - - The directory name used for the file within the archive is the same - as the directory name (potentially a relative path) specified in the - . - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - - - This method has two overloads. - - the name of the file or directory to add. - - The ZipEntry added. - - - - Adds an item, either a file or a directory, to a zip file archive, - explicitly specifying the directory path to be used in the archive. - - - - - If adding a directory, the add is recursive on all files and - subdirectories contained within it. - - - The name of the item may be a relative path or a fully-qualified path. - The item added by this call to the ZipFile is not read from the - disk nor written to the zip file archive until the application calls - Save() on the ZipFile. - - - - This version of the method allows the caller to explicitly specify the - directory path to be used in the archive, which would override the - "natural" path of the filesystem file. - - - - Encryption will be used on the file data if the Password has - been set on the ZipFile object, prior to calling this method. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - Thrown if the file or directory passed in does not exist. - - - the name of the file or directory to add. - - - - The name of the directory path to use within the zip archive. This path - need not refer to an extant directory in the current filesystem. If the - files within the zip are later extracted, this is the path used for the - extracted file. Passing null (Nothing in VB) will use the - path on the fileOrDirectoryName. Passing the empty string ("") will - insert the item at the root path within the archive. - - - - - - - - This example shows how to zip up a set of files into a flat hierarchy, - regardless of where in the filesystem the files originated. The resulting - zip archive will contain a toplevel directory named "flat", which itself - will contain files Readme.txt, MyProposal.docx, and Image1.jpg. A - subdirectory under "flat" called SupportFiles will contain all the files - in the "c:\SupportFiles" directory on disk. - - - String[] itemnames= { - "c:\\fixedContent\\Readme.txt", - "MyProposal.docx", - "c:\\SupportFiles", // a directory - "images\\Image1.jpg" - }; - - try - { - using (ZipFile zip = new ZipFile()) - { - for (int i = 1; i < itemnames.Length; i++) - { - // will add Files or Dirs, recurses and flattens subdirectories - zip.AddItem(itemnames[i],"flat"); - } - zip.Save(ZipToCreate); - } - } - catch (System.Exception ex1) - { - System.Console.Error.WriteLine("exception: {0}", ex1); - } - - - - Dim itemnames As String() = _ - New String() { "c:\fixedContent\Readme.txt", _ - "MyProposal.docx", _ - "SupportFiles", _ - "images\Image1.jpg" } - Try - Using zip As New ZipFile - Dim i As Integer - For i = 1 To itemnames.Length - 1 - ' will add Files or Dirs, recursing and flattening subdirectories. - zip.AddItem(itemnames(i), "flat") - Next i - zip.Save(ZipToCreate) - End Using - Catch ex1 As Exception - Console.Error.WriteLine("exception: {0}", ex1.ToString()) - End Try - - - The ZipEntry added. - - - - Adds a File to a Zip file archive. - - - - - This call collects metadata for the named file in the filesystem, - including the file attributes and the timestamp, and inserts that metadata - into the resulting ZipEntry. Only when the application calls Save() on - the ZipFile, does DotNetZip read the file from the filesystem and - then write the content to the zip file archive. - - - - This method will throw an exception if an entry with the same name already - exists in the ZipFile. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - In this example, three files are added to a Zip archive. The ReadMe.txt - file will be placed in the root of the archive. The .png file will be - placed in a folder within the zip called photos\personal. The pdf file - will be included into a folder within the zip called Desktop. - - - try - { - using (ZipFile zip = new ZipFile()) - { - zip.AddFile("c:\\photos\\personal\\7440-N49th.png"); - zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf"); - zip.AddFile("ReadMe.txt"); - - zip.Save("Package.zip"); - } - } - catch (System.Exception ex1) - { - System.Console.Error.WriteLine("exception: " + ex1); - } - - - - Try - Using zip As ZipFile = New ZipFile - zip.AddFile("c:\photos\personal\7440-N49th.png") - zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf") - zip.AddFile("ReadMe.txt") - zip.Save("Package.zip") - End Using - Catch ex1 As Exception - Console.Error.WriteLine("exception: {0}", ex1.ToString) - End Try - - - - This method has two overloads. - - - - - - - The name of the file to add. It should refer to a file in the filesystem. - The name of the file may be a relative path or a fully-qualified path. - - The ZipEntry corresponding to the File added. - - - - Adds a File to a Zip file archive, potentially overriding the path to be - used within the zip archive. - - - - - The file added by this call to the ZipFile is not written to the - zip file archive until the application calls Save() on the ZipFile. - - - - This method will throw an exception if an entry with the same name already - exists in the ZipFile. - - - - This version of the method allows the caller to explicitly specify the - directory path to be used in the archive. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - In this example, three files are added to a Zip archive. The ReadMe.txt - file will be placed in the root of the archive. The .png file will be - placed in a folder within the zip called images. The pdf file will be - included into a folder within the zip called files\docs, and will be - encrypted with the given password. - - - try - { - using (ZipFile zip = new ZipFile()) - { - // the following entry will be inserted at the root in the archive. - zip.AddFile("c:\\datafiles\\ReadMe.txt", ""); - // this image file will be inserted into the "images" directory in the archive. - zip.AddFile("c:\\photos\\personal\\7440-N49th.png", "images"); - // the following will result in a password-protected file called - // files\\docs\\2008-Regional-Sales-Report.pdf in the archive. - zip.Password = "EncryptMe!"; - zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf", "files\\docs"); - zip.Save("Archive.zip"); - } - } - catch (System.Exception ex1) - { - System.Console.Error.WriteLine("exception: {0}", ex1); - } - - - - Try - Using zip As ZipFile = New ZipFile - ' the following entry will be inserted at the root in the archive. - zip.AddFile("c:\datafiles\ReadMe.txt", "") - ' this image file will be inserted into the "images" directory in the archive. - zip.AddFile("c:\photos\personal\7440-N49th.png", "images") - ' the following will result in a password-protected file called - ' files\\docs\\2008-Regional-Sales-Report.pdf in the archive. - zip.Password = "EncryptMe!" - zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf", "files\documents") - zip.Save("Archive.zip") - End Using - Catch ex1 As Exception - Console.Error.WriteLine("exception: {0}", ex1) - End Try - - - - - - - - - The name of the file to add. The name of the file may be a relative path - or a fully-qualified path. - - - - Specifies a directory path to use to override any path in the fileName. - This path may, or may not, correspond to a real directory in the current - filesystem. If the files within the zip are later extracted, this is the - path used for the extracted file. Passing null (Nothing in - VB) will use the path on the fileName, if any. Passing the empty string - ("") will insert the item at the root path within the archive. - - - The ZipEntry corresponding to the file added. - - - - This method removes a collection of entries from the ZipFile. - - - - A collection of ZipEntry instances from this zip file to be removed. For - example, you can pass in an array of ZipEntry instances; or you can call - SelectEntries(), and then add or remove entries from that - ICollection<ZipEntry> (ICollection(Of ZipEntry) in VB), and pass - that ICollection to this method. - - - - - - - - This method removes a collection of entries from the ZipFile, by name. - - - - A collection of strings that refer to names of entries to be removed - from the ZipFile. For example, you can pass in an array or a - List of Strings that provide the names of entries to be removed. - - - - - - - - This method adds a set of files to the ZipFile. - - - - - Use this method to add a set of files to the zip archive, in one call. - For example, a list of files received from - System.IO.Directory.GetFiles() can be added to a zip archive in one - call. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to each - ZipEntry added. - - - - - The collection of names of the files to add. Each string should refer to a - file in the filesystem. The name of the file may be a relative path or a - fully-qualified path. - - - - This example shows how to create a zip file, and add a few files into it. - - String ZipFileToCreate = "archive1.zip"; - String DirectoryToZip = "c:\\reports"; - using (ZipFile zip = new ZipFile()) - { - // Store all files found in the top level directory, into the zip archive. - String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); - zip.AddFiles(filenames); - zip.Save(ZipFileToCreate); - } - - - - Dim ZipFileToCreate As String = "archive1.zip" - Dim DirectoryToZip As String = "c:\reports" - Using zip As ZipFile = New ZipFile - ' Store all files found in the top level directory, into the zip archive. - Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) - zip.AddFiles(filenames) - zip.Save(ZipFileToCreate) - End Using - - - - - - - - Adds or updates a set of files in the ZipFile. - - - - - Any files that already exist in the archive are updated. Any files that - don't yet exist in the archive are added. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to each - ZipEntry added. - - - - - The collection of names of the files to update. Each string should refer to a file in - the filesystem. The name of the file may be a relative path or a fully-qualified path. - - - - - - Adds a set of files to the ZipFile, using the - specified directory path in the archive. - - - - - Any directory structure that may be present in the - filenames contained in the list is "flattened" in the - archive. Each file in the list is added to the archive in - the specified top-level directory. - - - - For ZipFile properties including , , , , , , and , their respective values at the - time of this call will be applied to each ZipEntry added. - - - - - The names of the files to add. Each string should refer to - a file in the filesystem. The name of the file may be a - relative path or a fully-qualified path. - - - - Specifies a directory path to use to override any path in the file name. - Th is path may, or may not, correspond to a real directory in the current - filesystem. If the files within the zip are later extracted, this is the - path used for the extracted file. Passing null (Nothing in - VB) will use the path on each of the fileNames, if any. Passing - the empty string ("") will insert the item at the root path within the - archive. - - - - - - - Adds a set of files to the ZipFile, using the specified directory - path in the archive, and preserving the full directory structure in the - filenames. - - - - - If preserveDirHierarchy is true, any directory structure present in the - filenames contained in the list is preserved in the archive. On the other - hand, if preserveDirHierarchy is false, any directory structure that may - be present in the filenames contained in the list is "flattened" in the - archive; Each file in the list is added to the archive in the specified - top-level directory. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to each - ZipEntry added. - - - - - - The names of the files to add. Each string should refer to a file in the - filesystem. The name of the file may be a relative path or a - fully-qualified path. - - - - Specifies a directory path to use to override any path in the file name. - This path may, or may not, correspond to a real directory in the current - filesystem. If the files within the zip are later extracted, this is the - path used for the extracted file. Passing null (Nothing in - VB) will use the path on each of the fileNames, if any. Passing - the empty string ("") will insert the item at the root path within the - archive. - - - - whether the entries in the zip archive will reflect the directory - hierarchy that is present in the various filenames. For example, if - includes two paths, \Animalia\Chordata\Mammalia\Info.txt and - \Plantae\Magnoliophyta\Dicotyledon\Info.txt, then calling this method with - = false will result in an - exception because of a duplicate entry name, while calling this method - with = true will result in the - full direcory paths being included in the entries added to the ZipFile. - - - - - - Adds or updates a set of files to the ZipFile, using the specified - directory path in the archive. - - - - - - Any files that already exist in the archive are updated. Any files that - don't yet exist in the archive are added. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to each - ZipEntry added. - - - - - The names of the files to add or update. Each string should refer to a - file in the filesystem. The name of the file may be a relative path or a - fully-qualified path. - - - - Specifies a directory path to use to override any path in the file name. - This path may, or may not, correspond to a real directory in the current - filesystem. If the files within the zip are later extracted, this is the - path used for the extracted file. Passing null (Nothing in - VB) will use the path on each of the fileNames, if any. Passing - the empty string ("") will insert the item at the root path within the - archive. - - - - - - - Adds or Updates a File in a Zip file archive. - - - - - This method adds a file to a zip archive, or, if the file already exists - in the zip archive, this method Updates the content of that given filename - in the zip archive. The UpdateFile method might more accurately be - called "AddOrUpdateFile". - - - - Upon success, there is no way for the application to learn whether the file - was added versus updated. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - This example shows how to Update an existing entry in a zipfile. The first - call to UpdateFile adds the file to the newly-created zip archive. The - second call to UpdateFile updates the content for that file in the zip - archive. - - - using (ZipFile zip1 = new ZipFile()) - { - // UpdateFile might more accurately be called "AddOrUpdateFile" - zip1.UpdateFile("MyDocuments\\Readme.txt"); - zip1.UpdateFile("CustomerList.csv"); - zip1.Comment = "This zip archive has been created."; - zip1.Save("Content.zip"); - } - - using (ZipFile zip2 = ZipFile.Read("Content.zip")) - { - zip2.UpdateFile("Updates\\Readme.txt"); - zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed."; - zip2.Save(); - } - - - - Using zip1 As New ZipFile - ' UpdateFile might more accurately be called "AddOrUpdateFile" - zip1.UpdateFile("MyDocuments\Readme.txt") - zip1.UpdateFile("CustomerList.csv") - zip1.Comment = "This zip archive has been created." - zip1.Save("Content.zip") - End Using - - Using zip2 As ZipFile = ZipFile.Read("Content.zip") - zip2.UpdateFile("Updates\Readme.txt") - zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed." - zip2.Save - End Using - - - - - - - - - The name of the file to add or update. It should refer to a file in the - filesystem. The name of the file may be a relative path or a - fully-qualified path. - - - - The ZipEntry corresponding to the File that was added or updated. - - - - - Adds or Updates a File in a Zip file archive. - - - - - This method adds a file to a zip archive, or, if the file already exists - in the zip archive, this method Updates the content of that given filename - in the zip archive. - - - - This version of the method allows the caller to explicitly specify the - directory path to be used in the archive. The entry to be added or - updated is found by using the specified directory path, combined with the - basename of the specified filename. - - - - Upon success, there is no way for the application to learn if the file was - added versus updated. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - - - The name of the file to add or update. It should refer to a file in the - filesystem. The name of the file may be a relative path or a - fully-qualified path. - - - - Specifies a directory path to use to override any path in the - fileName. This path may, or may not, correspond to a real - directory in the current filesystem. If the files within the zip are - later extracted, this is the path used for the extracted file. Passing - null (Nothing in VB) will use the path on the - fileName, if any. Passing the empty string ("") will insert the - item at the root path within the archive. - - - - The ZipEntry corresponding to the File that was added or updated. - - - - - Add or update a directory in a zip archive. - - - - If the specified directory does not exist in the archive, then this method - is equivalent to calling AddDirectory(). If the specified - directory already exists in the archive, then this method updates any - existing entries, and adds any new entries. Any entries that are in the - zip archive but not in the specified directory, are left alone. In other - words, the contents of the zip file will be a union of the previous - contents and the new files. - - - - - - - - The path to the directory to be added to the zip archive, or updated in - the zip archive. - - - - The ZipEntry corresponding to the Directory that was added or updated. - - - - - Add or update a directory in the zip archive at the specified root - directory in the archive. - - - - If the specified directory does not exist in the archive, then this method - is equivalent to calling AddDirectory(). If the specified - directory already exists in the archive, then this method updates any - existing entries, and adds any new entries. Any entries that are in the - zip archive but not in the specified directory, are left alone. In other - words, the contents of the zip file will be a union of the previous - contents and the new files. - - - - - - - - The path to the directory to be added to the zip archive, or updated - in the zip archive. - - - - Specifies a directory path to use to override any path in the - directoryName. This path may, or may not, correspond to a real - directory in the current filesystem. If the files within the zip are - later extracted, this is the path used for the extracted file. Passing - null (Nothing in VB) will use the path on the - directoryName, if any. Passing the empty string ("") will insert - the item at the root path within the archive. - - - - The ZipEntry corresponding to the Directory that was added or updated. - - - - - Add or update a file or directory in the zip archive. - - - - - This is useful when the application is not sure or does not care if the - item to be added is a file or directory, and does not know or does not - care if the item already exists in the ZipFile. Calling this method - is equivalent to calling RemoveEntry() if an entry by the same name - already exists, followed calling by AddItem(). - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - - - the path to the file or directory to be added or updated. - - - - - Add or update a file or directory. - - - - - This method is useful when the application is not sure or does not care if - the item to be added is a file or directory, and does not know or does not - care if the item already exists in the ZipFile. Calling this method - is equivalent to calling RemoveEntry(), if an entry by that name - exists, and then calling AddItem(). - - - - This version of the method allows the caller to explicitly specify the - directory path to be used for the item being added to the archive. The - entry or entries that are added or updated will use the specified - DirectoryPathInArchive. Extracting the entry from the archive will - result in a file stored in that directory path. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - - - The path for the File or Directory to be added or updated. - - - Specifies a directory path to use to override any path in the - itemName. This path may, or may not, correspond to a real - directory in the current filesystem. If the files within the zip are - later extracted, this is the path used for the extracted file. Passing - null (Nothing in VB) will use the path on the - itemName, if any. Passing the empty string ("") will insert the - item at the root path within the archive. - - - - - Adds a named entry into the zip archive, taking content for the entry - from a string. - - - - Calling this method creates an entry using the given fileName and - directory path within the archive. There is no need for a file by the - given name to exist in the filesystem; the name is used within the zip - archive only. The content for the entry is encoded using the default text - encoding for the machine, or on Silverlight, using UTF-8. - - - - The content of the file, should it be extracted from the zip. - - - - The name, including any path, to use for the entry within the archive. - - - The ZipEntry added. - - - - This example shows how to add an entry to the zipfile, using a string as - content for that entry. - - - string Content = "This string will be the content of the Readme.txt file in the zip archive."; - using (ZipFile zip1 = new ZipFile()) - { - zip1.AddFile("MyDocuments\\Resume.doc", "files"); - zip1.AddEntry("Readme.txt", Content); - zip1.Comment = "This zip file was created at " + System.DateTime.Now.ToString("G"); - zip1.Save("Content.zip"); - } - - - - Public Sub Run() - Dim Content As String = "This string will be the content of the Readme.txt file in the zip archive." - Using zip1 As ZipFile = New ZipFile - zip1.AddEntry("Readme.txt", Content) - zip1.AddFile("MyDocuments\Resume.doc", "files") - zip1.Comment = ("This zip file was created at " & DateTime.Now.ToString("G")) - zip1.Save("Content.zip") - End Using - End Sub - - - - - - Adds a named entry into the zip archive, taking content for the entry - from a string, and using the specified text encoding. - - - - - - Calling this method creates an entry using the given fileName and - directory path within the archive. There is no need for a file by the - given name to exist in the filesystem; the name is used within the zip - archive only. - - - - The content for the entry, a string value, is encoded using the given - text encoding. A BOM (byte-order-mark) is emitted into the file, if the - Encoding parameter is set for that. - - - - Most Encoding classes support a constructor that accepts a boolean, - indicating whether to emit a BOM or not. For example see . - - - - - - The name, including any path, to use within the archive for the entry. - - - - The content of the file, should it be extracted from the zip. - - - - The text encoding to use when encoding the string. Be aware: This is - distinct from the text encoding used to encode the fileName, as specified - in . - - - The ZipEntry added. - - - - - Create an entry in the ZipFile using the given Stream - as input. The entry will have the given filename. - - - - - - The application should provide an open, readable stream; in this case it - will be read during the call to or one of - its overloads. - - - - The passed stream will be read from its current position. If - necessary, callers should set the position in the stream before - calling AddEntry(). This might be appropriate when using this method - with a MemoryStream, for example. - - - - In cases where a large number of streams will be added to the - ZipFile, the application may wish to avoid maintaining all of the - streams open simultaneously. To handle this situation, the application - should use the - overload. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - This example adds a single entry to a ZipFile via a Stream. - - - - String zipToCreate = "Content.zip"; - String fileNameInArchive = "Content-From-Stream.bin"; - using (System.IO.Stream streamToRead = MyStreamOpener()) - { - using (ZipFile zip = new ZipFile()) - { - ZipEntry entry= zip.AddEntry(fileNameInArchive, streamToRead); - zip.AddFile("Readme.txt"); - zip.Save(zipToCreate); // the stream is read implicitly here - } - } - - - - Dim zipToCreate As String = "Content.zip" - Dim fileNameInArchive As String = "Content-From-Stream.bin" - Using streamToRead as System.IO.Stream = MyStreamOpener() - Using zip As ZipFile = New ZipFile() - Dim entry as ZipEntry = zip.AddEntry(fileNameInArchive, streamToRead) - zip.AddFile("Readme.txt") - zip.Save(zipToCreate) '' the stream is read implicitly, here - End Using - End Using - - - - - - - The name, including any path, which is shown in the zip file for the added - entry. - - - The input stream from which to grab content for the file - - The ZipEntry added. - - - - Add a ZipEntry for which content is written directly by the application. - - - - - When the application needs to write the zip entry data, use this - method to add the ZipEntry. For example, in the case that the - application wishes to write the XML representation of a DataSet into - a ZipEntry, the application can use this method to do so. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - About progress events: When using the WriteDelegate, DotNetZip does - not issue any SaveProgress events with EventType = - Saving_EntryBytesRead. (This is because it is the - application's code that runs in WriteDelegate - there's no way for - DotNetZip to know when to issue a EntryBytesRead event.) - Applications that want to update a progress bar or similar status - indicator should do so from within the WriteDelegate - itself. DotNetZip will issue the other SaveProgress events, - including - Saving_Started, - - Saving_BeforeWriteEntry, and - Saving_AfterWriteEntry. - - - - Note: When you use PKZip encryption, it's normally necessary to - compute the CRC of the content to be encrypted, before compressing or - encrypting it. Therefore, when using PKZip encryption with a - WriteDelegate, the WriteDelegate CAN BE called twice: once to compute - the CRC, and the second time to potentially compress and - encrypt. Surprising, but true. This is because PKWARE specified that - the encryption initialization data depends on the CRC. - If this happens, for each call of the delegate, your - application must stream the same entry data in its entirety. If your - application writes different data during the second call, it will - result in a corrupt zip file. - - - - The double-read behavior happens with all types of entries, not only - those that use WriteDelegate. It happens if you add an entry from a - filesystem file, or using a string, or a stream, or an opener/closer - pair. But in those cases, DotNetZip takes care of reading twice; in - the case of the WriteDelegate, the application code gets invoked - twice. Be aware. - - - - As you can imagine, this can cause performance problems for large - streams, and it can lead to correctness problems when you use a - WriteDelegate. This is a pretty big pitfall. There are two - ways to avoid it. First, and most preferred: don't use PKZIP - encryption. If you use the WinZip AES encryption, this problem - doesn't occur, because the encryption protocol doesn't require the CRC - up front. Second: if you do choose to use PKZIP encryption, write out - to a non-seekable stream (like standard output, or the - Response.OutputStream in an ASP.NET application). In this case, - DotNetZip will use an alternative encryption protocol that does not - rely on the CRC of the content. This also implies setting bit 3 in - the zip entry, which still presents problems for some zip tools. - - - - In the future I may modify DotNetZip to *always* use bit 3 when PKZIP - encryption is in use. This seems like a win overall, but there will - be some work involved. If you feel strongly about it, visit the - DotNetZip forums and vote up the Workitem - tracking this issue. - - - - - the name of the entry to add - the delegate which will write the entry content - the ZipEntry added - - - - This example shows an application filling a DataSet, then saving the - contents of that DataSet as XML, into a ZipEntry in a ZipFile, using an - anonymous delegate in C#. The DataSet XML is never saved to a disk file. - - - var c1= new System.Data.SqlClient.SqlConnection(connstring1); - var da = new System.Data.SqlClient.SqlDataAdapter() - { - SelectCommand= new System.Data.SqlClient.SqlCommand(strSelect, c1) - }; - - DataSet ds1 = new DataSet(); - da.Fill(ds1, "Invoices"); - - using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) - { - zip.AddEntry(zipEntryName, (name,stream) => ds1.WriteXml(stream) ); - zip.Save(zipFileName); - } - - - - - - This example uses an anonymous method in C# as the WriteDelegate to provide - the data for the ZipEntry. The example is a bit contrived - the - AddFile() method is a simpler way to insert the contents of a file - into an entry in a zip file. On the other hand, if there is some sort of - processing or transformation of the file contents required before writing, - the application could use the WriteDelegate to do it, in this way. - - - using (var input = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite )) - { - using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) - { - zip.AddEntry(zipEntryName, (name,output) => - { - byte[] buffer = new byte[BufferSize]; - int n; - while ((n = input.Read(buffer, 0, buffer.Length)) != 0) - { - // could transform the data here... - output.Write(buffer, 0, n); - // could update a progress bar here - } - }); - - zip.Save(zipFileName); - } - } - - - - - - This example uses a named delegate in VB to write data for the given - ZipEntry (VB9 does not have anonymous delegates). The example here is a bit - contrived - a simpler way to add the contents of a file to a ZipEntry is to - simply use the appropriate AddFile() method. The key scenario for - which the WriteDelegate makes sense is saving a DataSet, in XML - format, to the zip file. The DataSet can write XML to a stream, and the - WriteDelegate is the perfect place to write into the zip file. There may be - other data structures that can write to a stream, but cannot be read as a - stream. The WriteDelegate would be appropriate for those cases as - well. - - - Private Sub WriteEntry (ByVal name As String, ByVal output As Stream) - Using input As FileStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) - Dim n As Integer = -1 - Dim buffer As Byte() = New Byte(BufferSize){} - Do While n <> 0 - n = input.Read(buffer, 0, buffer.Length) - output.Write(buffer, 0, n) - Loop - End Using - End Sub - - Public Sub Run() - Using zip = New ZipFile - zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) - zip.Save(zipFileName) - End Using - End Sub - - - - - - Add an entry, for which the application will provide a stream, - just-in-time. - - - - - In cases where the application wishes to open the stream that holds - the content for the ZipEntry, on a just-in-time basis, the application - can use this method and provide delegates to open and close the - stream. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - This example uses anonymous methods in C# to open and close the - source stream for the content for a zip entry. In a real - application, the logic for the OpenDelegate would probably be more - involved. - - - using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) - { - zip.AddEntry(zipEntryName, - (name) => File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ), - (name, stream) => stream.Close() - ); - - zip.Save(zipFileName); - } - - - - - - - This example uses delegates in VB.NET to open and close the - the source stream for the content for a zip entry. VB 9.0 lacks - support for "Sub" lambda expressions, and so the CloseDelegate must - be an actual, named Sub. - - - - Function MyStreamOpener(ByVal entryName As String) As Stream - '' This simply opens a file. You probably want to do somethinig - '' more involved here: open a stream to read from a database, - '' open a stream on an HTTP connection, and so on. - Return File.OpenRead(entryName) - End Function - - Sub MyStreamCloser(entryName As String, stream As Stream) - stream.Close() - End Sub - - Public Sub Run() - Dim dirToZip As String = "fodder" - Dim zipFileToCreate As String = "Archive.zip" - Dim opener As OpenDelegate = AddressOf MyStreamOpener - Dim closer As CloseDelegate = AddressOf MyStreamCloser - Dim numFilestoAdd As Int32 = 4 - Using zip As ZipFile = New ZipFile - Dim i As Integer - For i = 0 To numFilesToAdd - 1 - zip.AddEntry(String.Format("content-{0:000}.txt"), opener, closer) - Next i - zip.Save(zipFileToCreate) - End Using - End Sub - - - - - the name of the entry to add - - the delegate that will be invoked to open the stream - - - the delegate that will be invoked to close the stream - - the ZipEntry added - - - - - Updates the given entry in the ZipFile, using the given - string as content for the ZipEntry. - - - - - - Calling this method is equivalent to removing the ZipEntry for - the given file name and directory path, if it exists, and then calling - . See the documentation for - that method for further explanation. The string content is encoded - using the default encoding for the machine, or on Silverlight, using - UTF-8. This encoding is distinct from the encoding used for the - filename itself. See . - - - - - - The name, including any path, to use within the archive for the entry. - - - - The content of the file, should it be extracted from the zip. - - - The ZipEntry added. - - - - - Updates the given entry in the ZipFile, using the given string as - content for the ZipEntry. - - - - Calling this method is equivalent to removing the ZipEntry for the - given file name and directory path, if it exists, and then calling . See the - documentation for that method for further explanation. - - - - The name, including any path, to use within the archive for the entry. - - - - The content of the file, should it be extracted from the zip. - - - - The text encoding to use when encoding the string. Be aware: This is - distinct from the text encoding used to encode the filename. See . - - - The ZipEntry added. - - - - - Updates the given entry in the ZipFile, using the given delegate - as the source for content for the ZipEntry. - - - - Calling this method is equivalent to removing the ZipEntry for the - given file name and directory path, if it exists, and then calling . See the - documentation for that method for further explanation. - - - - The name, including any path, to use within the archive for the entry. - - - the delegate which will write the entry content. - - The ZipEntry added. - - - - - Updates the given entry in the ZipFile, using the given delegates - to open and close the stream that provides the content for the ZipEntry. - - - - Calling this method is equivalent to removing the ZipEntry for the - given file name and directory path, if it exists, and then calling . See the - documentation for that method for further explanation. - - - - The name, including any path, to use within the archive for the entry. - - - - the delegate that will be invoked to open the stream - - - the delegate that will be invoked to close the stream - - - The ZipEntry added or updated. - - - - - Updates the given entry in the ZipFile, using the given stream as - input, and the given filename and given directory Path. - - - - - Calling the method is equivalent to calling RemoveEntry() if an - entry by the same name already exists, and then calling AddEntry() - with the given fileName and stream. - - - - The stream must be open and readable during the call to - ZipFile.Save. You can dispense the stream on a just-in-time basis - using the property. Check the - documentation of that property for more information. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to the - ZipEntry added. - - - - - - - - - The name, including any path, to use within the archive for the entry. - - - The input stream from which to read file data. - The ZipEntry added. - - - - Add an entry into the zip archive using the given filename and - directory path within the archive, and the given content for the - file. No file is created in the filesystem. - - - The data to use for the entry. - - - The name, including any path, to use within the archive for the entry. - - - The ZipEntry added. - - - - Updates the given entry in the ZipFile, using the given byte - array as content for the entry. - - - - Calling this method is equivalent to removing the ZipEntry - for the given filename and directory path, if it exists, and then - calling . See the - documentation for that method for further explanation. - - - - The name, including any path, to use within the archive for the entry. - - - The content to use for the ZipEntry. - - The ZipEntry added. - - - - - Adds the contents of a filesystem directory to a Zip file archive. - - - - - - The name of the directory may be a relative path or a fully-qualified - path. Any files within the named directory are added to the archive. Any - subdirectories within the named directory are also added to the archive, - recursively. - - - - Top-level entries in the named directory will appear as top-level entries - in the zip archive. Entries in subdirectories in the named directory will - result in entries in subdirectories in the zip archive. - - - - If you want the entries to appear in a containing directory in the zip - archive itself, then you should call the AddDirectory() overload that - allows you to explicitly specify a directory path for use in the archive. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to each - ZipEntry added. - - - - - - - - - - This method has 2 overloads. - - The name of the directory to add. - The ZipEntry added. - - - - Adds the contents of a filesystem directory to a Zip file archive, - overriding the path to be used for entries in the archive. - - - - - The name of the directory may be a relative path or a fully-qualified - path. The add operation is recursive, so that any files or subdirectories - within the name directory are also added to the archive. - - - - Top-level entries in the named directory will appear as top-level entries - in the zip archive. Entries in subdirectories in the named directory will - result in entries in subdirectories in the zip archive. - - - - For ZipFile properties including , , , , , - , and , their - respective values at the time of this call will be applied to each - ZipEntry added. - - - - - - - In this code, calling the ZipUp() method with a value of "c:\reports" for - the directory parameter will result in a zip file structure in which all - entries are contained in a toplevel "reports" directory. - - - - public void ZipUp(string targetZip, string directory) - { - using (var zip = new ZipFile()) - { - zip.AddDirectory(directory, System.IO.Path.GetFileName(directory)); - zip.Save(targetZip); - } - } - - - - - - - - The name of the directory to add. - - - Specifies a directory path to use to override any path in the - DirectoryName. This path may, or may not, correspond to a real directory - in the current filesystem. If the zip is later extracted, this is the - path used for the extracted file or directory. Passing null - (Nothing in VB) or the empty string ("") will insert the items at - the root path within the archive. - - - The ZipEntry added. - - - - Creates a directory in the zip archive. - - - - - - Use this when you want to create a directory in the archive but there is - no corresponding filesystem representation for that directory. - - - - You will probably not need to do this in your code. One of the only times - you will want to do this is if you want an empty directory in the zip - archive. The reason: if you add a file to a zip archive that is stored - within a multi-level directory, all of the directory tree is implicitly - created in the zip archive. - - - - - - The name of the directory to create in the archive. - - The ZipEntry added. - - - - Checks a zip file to see if its directory is consistent. - - - - - - In cases of data error, the directory within a zip file can get out - of synch with the entries in the zip file. This method checks the - given zip file and returns true if this has occurred. - - - This method may take a long time to run for large zip files. - - - This method is not supported in the Reduced or Compact Framework - versions of DotNetZip. - - - - Developers using COM can use the ComHelper.CheckZip(String) - method. - - - - - The filename to of the zip file to check. - - true if the named zip file checks OK. Otherwise, false. - - - - - - - Checks a zip file to see if its directory is consistent, - and optionally fixes the directory if necessary. - - - - - - In cases of data error, the directory within a zip file can get out of - synch with the entries in the zip file. This method checks the given - zip file, and returns true if this has occurred. It also optionally - fixes the zipfile, saving the fixed copy in Name_Fixed.zip. - - - - This method may take a long time to run for large zip files. It - will take even longer if the file actually needs to be fixed, and if - fixIfNecessary is true. - - - - This method is not supported in the Reduced or Compact - Framework versions of DotNetZip. - - - - - The filename to of the zip file to check. - - If true, the method will fix the zip file if - necessary. - - - a TextWriter in which messages generated while checking will be written. - - - true if the named zip is OK; false if the file needs to be fixed. - - - - - - - Rewrite the directory within a zipfile. - - - - - - In cases of data error, the directory in a zip file can get out of - synch with the entries in the zip file. This method attempts to fix - the zip file if this has occurred. - - - This can take a long time for large zip files. - - This won't work if the zip file uses a non-standard - code page - neither IBM437 nor UTF-8. - - - This method is not supported in the Reduced or Compact Framework - versions of DotNetZip. - - - - Developers using COM can use the ComHelper.FixZipDirectory(String) - method. - - - - - The filename to of the zip file to fix. - - - - - - - Verify the password on a zip file. - - - - - Keep in mind that passwords in zipfiles are applied to - zip entries, not to the entire zip file. So testing a - zipfile for a particular password doesn't work in the - general case. On the other hand, it's often the case - that a single password will be used on all entries in a - zip file. This method works for that case. - - - There is no way to check a password without doing the - decryption. So this code decrypts and extracts the given - zipfile into - - - - The filename to of the zip file to fix. - - The password to check. - - a bool indicating whether the password matches. - - - - Returns true if an entry by the given name exists in the ZipFile. - - - the name of the entry to find - true if an entry with the given name exists; otherwise false. - - - - Provides a string representation of the instance. - a string representation of the instance. - - - - Creates a new ZipFile instance, using the specified filename. - - - - - Applications can use this constructor to create a new ZipFile for writing, - or to slurp in an existing zip archive for read and update purposes. - - - - To create a new zip archive, an application can call this constructor, - passing the name of a file that does not exist. The name may be a fully - qualified path. Then the application can add directories or files to the - ZipFile via AddDirectory(), AddFile(), AddItem() - and then write the zip archive to the disk by calling Save(). The - zip file is not actually opened and written to the disk until the - application calls ZipFile.Save(). At that point the new zip file - with the given name is created. - - - - If you won't know the name of the Zipfile until the time you call - ZipFile.Save(), or if you plan to save to a stream (which has no - name), then you should use the no-argument constructor. - - - - The application can also call this constructor to read an existing zip - archive. passing the name of a valid zip file that does exist. But, it's - better form to use the static method, - passing the name of the zip file, because using ZipFile.Read() in - your code communicates very clearly what you are doing. In either case, - the file is then read into the ZipFile instance. The app can then - enumerate the entries or can modify the zip file, for example adding - entries, removing entries, changing comments, and so on. - - - - One advantage to this parameterized constructor: it allows applications to - use the same code to add items to a zip archive, regardless of whether the - zip file exists. - - - - Instances of the ZipFile class are not multi-thread safe. You may - not party on a single instance with multiple threads. You may have - multiple threads that each use a distinct ZipFile instance, or you - can synchronize multi-thread access to a single instance. - - - - By the way, since DotNetZip is so easy to use, don't you think you should - donate $5 or $10? - - - - - - Thrown if name refers to an existing file that is not a valid zip file. - - - - This example shows how to create a zipfile, and add a few files into it. - - String ZipFileToCreate = "archive1.zip"; - String DirectoryToZip = "c:\\reports"; - using (ZipFile zip = new ZipFile()) - { - // Store all files found in the top level directory, into the zip archive. - String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); - zip.AddFiles(filenames, "files"); - zip.Save(ZipFileToCreate); - } - - - - Dim ZipFileToCreate As String = "archive1.zip" - Dim DirectoryToZip As String = "c:\reports" - Using zip As ZipFile = New ZipFile() - Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) - zip.AddFiles(filenames, "files") - zip.Save(ZipFileToCreate) - End Using - - - - The filename to use for the new zip archive. - - - - - Creates a new ZipFile instance, using the specified name for the - filename, and the specified Encoding. - - - - - See the documentation on the ZipFile - constructor that accepts a single string argument for basic - information on all the ZipFile constructors. - - - - The Encoding is used as the default alternate encoding for entries with - filenames or comments that cannot be encoded with the IBM437 code page. - This is equivalent to setting the property on the ZipFile - instance after construction. - - - - Instances of the ZipFile class are not multi-thread safe. You may - not party on a single instance with multiple threads. You may have - multiple threads that each use a distinct ZipFile instance, or you - can synchronize multi-thread access to a single instance. - - - - - - Thrown if name refers to an existing file that is not a valid zip file. - - - The filename to use for the new zip archive. - The Encoding is used as the default alternate - encoding for entries with filenames or comments that cannot be encoded - with the IBM437 code page. - - - - Create a zip file, without specifying a target filename or stream to save to. - - - - - See the documentation on the ZipFile - constructor that accepts a single string argument for basic - information on all the ZipFile constructors. - - - - After instantiating with this constructor and adding entries to the - archive, the application should call or - to save to a file or a - stream, respectively. The application can also set the - property and then call the no-argument method. (This - is the preferred approach for applications that use the library through - COM interop.) If you call the no-argument method - without having set the Name of the ZipFile, either through - the parameterized constructor or through the explicit property , the - Save() will throw, because there is no place to save the file. - - - Instances of the ZipFile class are not multi-thread safe. You may - have multiple threads that each use a distinct ZipFile instance, or - you can synchronize multi-thread access to a single instance. - - - - - This example creates a Zip archive called Backup.zip, containing all the files - in the directory DirectoryToZip. Files within subdirectories are not zipped up. - - using (ZipFile zip = new ZipFile()) - { - // Store all files found in the top level directory, into the zip archive. - // note: this code does not recurse subdirectories! - String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); - zip.AddFiles(filenames, "files"); - zip.Save("Backup.zip"); - } - - - - Using zip As New ZipFile - ' Store all files found in the top level directory, into the zip archive. - ' note: this code does not recurse subdirectories! - Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) - zip.AddFiles(filenames, "files") - zip.Save("Backup.zip") - End Using - - - - - - Create a zip file, specifying a text Encoding, but without specifying a - target filename or stream to save to. - - - - - See the documentation on the ZipFile - constructor that accepts a single string argument for basic - information on all the ZipFile constructors. - - - - - - The Encoding is used as the default alternate encoding for entries with - filenames or comments that cannot be encoded with the IBM437 code page. - - - - - Creates a new ZipFile instance, using the specified name for the - filename, and the specified status message writer. - - - - - See the documentation on the ZipFile - constructor that accepts a single string argument for basic - information on all the ZipFile constructors. - - - - This version of the constructor allows the caller to pass in a TextWriter, - to which verbose messages will be written during extraction or creation of - the zip archive. A console application may wish to pass - System.Console.Out to get messages on the Console. A graphical or headless - application may wish to capture the messages in a different - TextWriter, for example, a StringWriter, and then display - the messages in a TextBox, or generate an audit log of ZipFile operations. - - - - To encrypt the data for the files added to the ZipFile instance, - set the Password property after creating the ZipFile instance. - - - - Instances of the ZipFile class are not multi-thread safe. You may - not party on a single instance with multiple threads. You may have - multiple threads that each use a distinct ZipFile instance, or you - can synchronize multi-thread access to a single instance. - - - - - - Thrown if name refers to an existing file that is not a valid zip file. - - - - - using (ZipFile zip = new ZipFile("Backup.zip", Console.Out)) - { - // Store all files found in the top level directory, into the zip archive. - // note: this code does not recurse subdirectories! - // Status messages will be written to Console.Out - String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); - zip.AddFiles(filenames); - zip.Save(); - } - - - - Using zip As New ZipFile("Backup.zip", Console.Out) - ' Store all files found in the top level directory, into the zip archive. - ' note: this code does not recurse subdirectories! - ' Status messages will be written to Console.Out - Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) - zip.AddFiles(filenames) - zip.Save() - End Using - - - - The filename to use for the new zip archive. - A TextWriter to use for writing - verbose status messages. - - - - Creates a new ZipFile instance, using the specified name for the - filename, the specified status message writer, and the specified Encoding. - - - - - This constructor works like the ZipFile - constructor that accepts a single string argument. See that - reference for detail on what this constructor does. - - - - This version of the constructor allows the caller to pass in a - TextWriter, and an Encoding. The TextWriter will collect - verbose messages that are generated by the library during extraction or - creation of the zip archive. A console application may wish to pass - System.Console.Out to get messages on the Console. A graphical or - headless application may wish to capture the messages in a different - TextWriter, for example, a StringWriter, and then display - the messages in a TextBox, or generate an audit log of - ZipFile operations. - - - - The Encoding is used as the default alternate encoding for entries - with filenames or comments that cannot be encoded with the IBM437 code - page. This is a equivalent to setting the property on the ZipFile - instance after construction. - - - - To encrypt the data for the files added to the ZipFile instance, - set the Password property after creating the ZipFile - instance. - - - - Instances of the ZipFile class are not multi-thread safe. You may - not party on a single instance with multiple threads. You may have - multiple threads that each use a distinct ZipFile instance, or you - can synchronize multi-thread access to a single instance. - - - - - - Thrown if fileName refers to an existing file that is not a valid zip file. - - - The filename to use for the new zip archive. - A TextWriter to use for writing verbose - status messages. - - The Encoding is used as the default alternate encoding for entries with - filenames or comments that cannot be encoded with the IBM437 code page. - - - - - Initialize a ZipFile instance by reading in a zip file. - - - - - - This method is primarily useful from COM Automation environments, when - reading or extracting zip files. In COM, it is not possible to invoke - parameterized constructors for a class. A COM Automation application can - update a zip file by using the default (no argument) - constructor, then calling Initialize() to read the contents - of an on-disk zip archive into the ZipFile instance. - - - - .NET applications are encouraged to use the ZipFile.Read() methods - for better clarity. - - - - the name of the existing zip file to read in. - - - - Removes the given ZipEntry from the zip archive. - - - - - After calling RemoveEntry, the application must call Save to - make the changes permanent. - - - - - Thrown if the specified ZipEntry does not exist in the ZipFile. - - - - In this example, all entries in the zip archive dating from before - December 31st, 2007, are removed from the archive. This is actually much - easier if you use the RemoveSelectedEntries method. But I needed an - example for RemoveEntry, so here it is. - - String ZipFileToRead = "ArchiveToModify.zip"; - System.DateTime Threshold = new System.DateTime(2007,12,31); - using (ZipFile zip = ZipFile.Read(ZipFileToRead)) - { - var EntriesToRemove = new System.Collections.Generic.List<ZipEntry>(); - foreach (ZipEntry e in zip) - { - if (e.LastModified < Threshold) - { - // We cannot remove the entry from the list, within the context of - // an enumeration of said list. - // So we add the doomed entry to a list to be removed later. - EntriesToRemove.Add(e); - } - } - - // actually remove the doomed entries. - foreach (ZipEntry zombie in EntriesToRemove) - zip.RemoveEntry(zombie); - - zip.Comment= String.Format("This zip archive was updated at {0}.", - System.DateTime.Now.ToString("G")); - - // save with a different name - zip.Save("Archive-Updated.zip"); - } - - - - Dim ZipFileToRead As String = "ArchiveToModify.zip" - Dim Threshold As New DateTime(2007, 12, 31) - Using zip As ZipFile = ZipFile.Read(ZipFileToRead) - Dim EntriesToRemove As New System.Collections.Generic.List(Of ZipEntry) - Dim e As ZipEntry - For Each e In zip - If (e.LastModified < Threshold) Then - ' We cannot remove the entry from the list, within the context of - ' an enumeration of said list. - ' So we add the doomed entry to a list to be removed later. - EntriesToRemove.Add(e) - End If - Next - - ' actually remove the doomed entries. - Dim zombie As ZipEntry - For Each zombie In EntriesToRemove - zip.RemoveEntry(zombie) - Next - zip.Comment = String.Format("This zip archive was updated at {0}.", DateTime.Now.ToString("G")) - 'save as a different name - zip.Save("Archive-Updated.zip") - End Using - - - - - The ZipEntry to remove from the zip. - - - - - - - - Removes the ZipEntry with the given filename from the zip archive. - - - - - After calling RemoveEntry, the application must call Save to - make the changes permanent. - - - - - - Thrown if the ZipFile is not updatable. - - - - Thrown if a ZipEntry with the specified filename does not exist in - the ZipFile. - - - - - This example shows one way to remove an entry with a given filename from - an existing zip archive. - - - String zipFileToRead= "PackedDocuments.zip"; - string candidate = "DatedMaterial.xps"; - using (ZipFile zip = ZipFile.Read(zipFileToRead)) - { - if (zip.EntryFilenames.Contains(candidate)) - { - zip.RemoveEntry(candidate); - zip.Comment= String.Format("The file '{0}' has been removed from this archive.", - Candidate); - zip.Save(); - } - } - - - Dim zipFileToRead As String = "PackedDocuments.zip" - Dim candidate As String = "DatedMaterial.xps" - Using zip As ZipFile = ZipFile.Read(zipFileToRead) - If zip.EntryFilenames.Contains(candidate) Then - zip.RemoveEntry(candidate) - zip.Comment = String.Format("The file '{0}' has been removed from this archive.", Candidate) - zip.Save - End If - End Using - - - - - The name of the file, including any directory path, to remove from the zip. - The filename match is not case-sensitive by default; you can use the - CaseSensitiveRetrieval property to change this behavior. The - pathname can use forward-slashes or backward slashes. - - - - - - Closes the read and write streams associated - to the ZipFile, if necessary. - - - - The Dispose() method is generally employed implicitly, via a using(..) {..} - statement. (Using...End Using in VB) If you do not employ a using - statement, insure that your application calls Dispose() explicitly. For - example, in a Powershell application, or an application that uses the COM - interop interface, you must call Dispose() explicitly. - - - - This example extracts an entry selected by name, from the Zip file to the - Console. - - using (ZipFile zip = ZipFile.Read(zipfile)) - { - foreach (ZipEntry e in zip) - { - if (WantThisEntry(e.FileName)) - zip.Extract(e.FileName, Console.OpenStandardOutput()); - } - } // Dispose() is called implicitly here. - - - - Using zip As ZipFile = ZipFile.Read(zipfile) - Dim e As ZipEntry - For Each e In zip - If WantThisEntry(e.FileName) Then - zip.Extract(e.FileName, Console.OpenStandardOutput()) - End If - Next - End Using ' Dispose is implicity called here - - - - - - Disposes any managed resources, if the flag is set, then marks the - instance disposed. This method is typically not called explicitly from - application code. - - - - Applications should call the no-arg Dispose method. - - - - indicates whether the method should dispose streams or not. - - - - - Default size of the buffer used for IO. - - - - - Extracts all of the items in the zip archive, to the specified path in the - filesystem. The path can be relative or fully-qualified. - - - - - This method will extract all entries in the ZipFile to the - specified path. - - - - If an extraction of a file from the zip archive would overwrite an - existing file in the filesystem, the action taken is dictated by the - ExtractExistingFile property, which overrides any setting you may have - made on individual ZipEntry instances. By default, if you have not - set that property on the ZipFile instance, the entry will not - be extracted, the existing file will not be overwritten and an - exception will be thrown. To change this, set the property, or use the - overload that allows you to - specify an ExtractExistingFileAction parameter. - - - - The action to take when an extract would overwrite an existing file - applies to all entries. If you want to set this on a per-entry basis, - then you must use one of the ZipEntry.Extract methods. - - - - This method will send verbose output messages to the , if it is set on the ZipFile - instance. - - - - You may wish to take advantage of the ExtractProgress event. - - - - About timestamps: When extracting a file entry from a zip archive, the - extracted file gets the last modified time of the entry as stored in - the archive. The archive may also store extended file timestamp - information, including last accessed and created times. If these are - present in the ZipEntry, then the extracted file will also get - these times. - - - - A Directory entry is somewhat different. It will get the times as - described for a file entry, but, if there are file entries in the zip - archive that, when extracted, appear in the just-created directory, - then when those file entries are extracted, the last modified and last - accessed times of the directory will change, as a side effect. The - result is that after an extraction of a directory and a number of - files within the directory, the last modified and last accessed - timestamps on the directory will reflect the time that the last file - was extracted into the directory, rather than the time stored in the - zip archive for the directory. - - - - To compensate, when extracting an archive with ExtractAll, - DotNetZip will extract all the file and directory entries as described - above, but it will then make a second pass on the directories, and - reset the times on the directories to reflect what is stored in the - zip archive. - - - - This compensation is performed only within the context of an - ExtractAll. If you call ZipEntry.Extract on a directory - entry, the timestamps on directory in the filesystem will reflect the - times stored in the zip. If you then call ZipEntry.Extract on - a file entry, which is extracted into the directory, the timestamps on - the directory will be updated to the current time. - - - - - This example extracts all the entries in a zip archive file, to the - specified target directory. The extraction will overwrite any - existing files silently. - - - String TargetDirectory= "unpack"; - using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) - { - zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently; - zip.ExtractAll(TargetDirectory); - } - - - - Dim TargetDirectory As String = "unpack" - Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) - zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently - zip.ExtractAll(TargetDirectory) - End Using - - - - - - - - The path to which the contents of the zipfile will be extracted. - The path can be relative or fully-qualified. - - - - - - Extracts all of the items in the zip archive, to the specified path in the - filesystem, using the specified behavior when extraction would overwrite an - existing file. - - - - - - This method will extract all entries in the ZipFile to the specified - path. For an extraction that would overwrite an existing file, the behavior - is dictated by , which overrides any - setting you may have made on individual ZipEntry instances. - - - - The action to take when an extract would overwrite an existing file - applies to all entries. If you want to set this on a per-entry basis, - then you must use or one of the similar methods. - - - - Calling this method is equivalent to setting the property and then calling . - - - - This method will send verbose output messages to the - , if it is set on the ZipFile instance. - - - - - This example extracts all the entries in a zip archive file, to the - specified target directory. It does not overwrite any existing files. - - String TargetDirectory= "c:\\unpack"; - using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) - { - zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite); - } - - - - Dim TargetDirectory As String = "c:\unpack" - Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) - zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite) - End Using - - - - - The path to which the contents of the zipfile will be extracted. - The path can be relative or fully-qualified. - - - - The action to take if extraction would overwrite an existing file. - - - - - - Reads a zip file archive and returns the instance. - - - - - The stream is read using the default System.Text.Encoding, which is the - IBM437 codepage. - - - - - Thrown if the ZipFile cannot be read. The implementation of this method - relies on System.IO.File.OpenRead, which can throw a variety of exceptions, - including specific exceptions if a file is not found, an unauthorized access - exception, exceptions for poorly formatted filenames, and so on. - - - - The name of the zip archive to open. This can be a fully-qualified or relative - pathname. - - - . - - The instance read from the zip archive. - - - - - Reads a zip file archive from the named filesystem file using the - specified options. - - - - - This version of the Read() method allows the caller to pass - in a TextWriter an Encoding, via an instance of the - ReadOptions class. The ZipFile is read in using the - specified encoding for entries where UTF-8 encoding is not - explicitly specified. - - - - - - - This example shows how to read a zip file using the Big-5 Chinese - code page (950), and extract each entry in the zip file, while - sending status messages out to the Console. - - - - For this code to work as intended, the zipfile must have been - created using the big5 code page (CP950). This is typical, for - example, when using WinRar on a machine with CP950 set as the - default code page. In that case, the names of entries within the - Zip archive will be stored in that code page, and reading the zip - archive must be done using that code page. If the application did - not use the correct code page in ZipFile.Read(), then names of - entries within the zip archive would not be correctly retrieved. - - - - string zipToExtract = "MyArchive.zip"; - string extractDirectory = "extract"; - var options = new ReadOptions - { - StatusMessageWriter = System.Console.Out, - Encoding = System.Text.Encoding.GetEncoding(950) - }; - using (ZipFile zip = ZipFile.Read(zipToExtract, options)) - { - foreach (ZipEntry e in zip) - { - e.Extract(extractDirectory); - } - } - - - - - Dim zipToExtract as String = "MyArchive.zip" - Dim extractDirectory as String = "extract" - Dim options as New ReadOptions - options.Encoding = System.Text.Encoding.GetEncoding(950) - options.StatusMessageWriter = System.Console.Out - Using zip As ZipFile = ZipFile.Read(zipToExtract, options) - Dim e As ZipEntry - For Each e In zip - e.Extract(extractDirectory) - Next - End Using - - - - - - - - This example shows how to read a zip file using the default - code page, to remove entries that have a modified date before a given threshold, - sending status messages out to a StringWriter. - - - - var options = new ReadOptions - { - StatusMessageWriter = new System.IO.StringWriter() - }; - using (ZipFile zip = ZipFile.Read("PackedDocuments.zip", options)) - { - var Threshold = new DateTime(2007,7,4); - // We cannot remove the entry from the list, within the context of - // an enumeration of said list. - // So we add the doomed entry to a list to be removed later. - // pass 1: mark the entries for removal - var MarkedEntries = new System.Collections.Generic.List<ZipEntry>(); - foreach (ZipEntry e in zip) - { - if (e.LastModified < Threshold) - MarkedEntries.Add(e); - } - // pass 2: actually remove the entry. - foreach (ZipEntry zombie in MarkedEntries) - zip.RemoveEntry(zombie); - zip.Comment = "This archive has been updated."; - zip.Save(); - } - // can now use contents of sw, eg store in an audit log - - - - Dim options as New ReadOptions - options.StatusMessageWriter = New System.IO.StringWriter - Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip", options) - Dim Threshold As New DateTime(2007, 7, 4) - ' We cannot remove the entry from the list, within the context of - ' an enumeration of said list. - ' So we add the doomed entry to a list to be removed later. - ' pass 1: mark the entries for removal - Dim MarkedEntries As New System.Collections.Generic.List(Of ZipEntry) - Dim e As ZipEntry - For Each e In zip - If (e.LastModified < Threshold) Then - MarkedEntries.Add(e) - End If - Next - ' pass 2: actually remove the entry. - Dim zombie As ZipEntry - For Each zombie In MarkedEntries - zip.RemoveEntry(zombie) - Next - zip.Comment = "This archive has been updated." - zip.Save - End Using - ' can now use contents of sw, eg store in an audit log - - - - - Thrown if the zipfile cannot be read. The implementation of - this method relies on System.IO.File.OpenRead, which - can throw a variety of exceptions, including specific - exceptions if a file is not found, an unauthorized access - exception, exceptions for poorly formatted filenames, and so - on. - - - - The name of the zip archive to open. - This can be a fully-qualified or relative pathname. - - - - The set of options to use when reading the zip file. - - - The ZipFile instance read from the zip archive. - - - - - - - Reads a zip file archive using the specified text encoding, the specified - TextWriter for status messages, and the specified ReadProgress event handler, - and returns the instance. - - - - The name of the zip archive to open. - This can be a fully-qualified or relative pathname. - - - - An event handler for Read operations. - - - - The System.IO.TextWriter to use for writing verbose status messages - during operations on the zip archive. A console application may wish to - pass System.Console.Out to get messages on the Console. A graphical - or headless application may wish to capture the messages in a different - TextWriter, such as a System.IO.StringWriter. - - - - The System.Text.Encoding to use when reading in the zip archive. Be - careful specifying the encoding. If the value you use here is not the same - as the Encoding used when the zip archive was created (possibly by a - different archiver) you will get unexpected results and possibly exceptions. - - - The instance read from the zip archive. - - - - - Reads a zip archive from a stream. - - - - - - When reading from a file, it's probably easier to just use - ZipFile.Read(String, ReadOptions). This - overload is useful when when the zip archive content is - available from an already-open stream. The stream must be - open and readable and seekable when calling this method. The - stream is left open when the reading is completed. - - - - Using this overload, the stream is read using the default - System.Text.Encoding, which is the IBM437 - codepage. If you want to specify the encoding to use when - reading the zipfile content, see - ZipFile.Read(Stream, ReadOptions). This - - - - Reading of zip content begins at the current position in the - stream. This means if you have a stream that concatenates - regular data and zip data, if you position the open, readable - stream at the start of the zip data, you will be able to read - the zip archive using this constructor, or any of the ZipFile - constructors that accept a as - input. Some examples of where this might be useful: the zip - content is concatenated at the end of a regular EXE file, as - some self-extracting archives do. (Note: SFX files produced - by DotNetZip do not work this way; they can be read as normal - ZIP files). Another example might be a stream being read from - a database, where the zip content is embedded within an - aggregate stream of data. - - - - - - - This example shows how to Read zip content from a stream, and - extract one entry into a different stream. In this example, - the filename "NameOfEntryInArchive.doc", refers only to the - name of the entry within the zip archive. A file by that - name is not created in the filesystem. The I/O is done - strictly with the given streams. - - - - using (ZipFile zip = ZipFile.Read(InputStream)) - { - zip.Extract("NameOfEntryInArchive.doc", OutputStream); - } - - - - Using zip as ZipFile = ZipFile.Read(InputStream) - zip.Extract("NameOfEntryInArchive.doc", OutputStream) - End Using - - - - the stream containing the zip data. - - The ZipFile instance read from the stream - - - - - Reads a zip file archive from the given stream using the - specified options. - - - - - - When reading from a file, it's probably easier to just use - ZipFile.Read(String, ReadOptions). This - overload is useful when when the zip archive content is - available from an already-open stream. The stream must be - open and readable and seekable when calling this method. The - stream is left open when the reading is completed. - - - - Reading of zip content begins at the current position in the - stream. This means if you have a stream that concatenates - regular data and zip data, if you position the open, readable - stream at the start of the zip data, you will be able to read - the zip archive using this constructor, or any of the ZipFile - constructors that accept a as - input. Some examples of where this might be useful: the zip - content is concatenated at the end of a regular EXE file, as - some self-extracting archives do. (Note: SFX files produced - by DotNetZip do not work this way; they can be read as normal - ZIP files). Another example might be a stream being read from - a database, where the zip content is embedded within an - aggregate stream of data. - - - - the stream containing the zip data. - - - The set of options to use when reading the zip file. - - - - Thrown if the zip archive cannot be read. - - - The ZipFile instance read from the stream. - - - - - - - Reads a zip archive from a stream, using the specified text Encoding, the - specified TextWriter for status messages, - and the specified ReadProgress event handler. - - - - - Reading of zip content begins at the current position in the stream. This - means if you have a stream that concatenates regular data and zip data, if - you position the open, readable stream at the start of the zip data, you - will be able to read the zip archive using this constructor, or any of the - ZipFile constructors that accept a as - input. Some examples of where this might be useful: the zip content is - concatenated at the end of a regular EXE file, as some self-extracting - archives do. (Note: SFX files produced by DotNetZip do not work this - way). Another example might be a stream being read from a database, where - the zip content is embedded within an aggregate stream of data. - - - - the stream containing the zip data. - - - The System.IO.TextWriter to which verbose status messages are written - during operations on the ZipFile. For example, in a console - application, System.Console.Out works, and will get a message for each entry - added to the ZipFile. If the TextWriter is null, no verbose messages - are written. - - - - The text encoding to use when reading entries that do not have the UTF-8 - encoding bit set. Be careful specifying the encoding. If the value you use - here is not the same as the Encoding used when the zip archive was created - (possibly by a different archiver) you will get unexpected results and - possibly exceptions. See the - property for more information. - - - - An event handler for Read operations. - - - an instance of ZipFile - - - - Checks the given file to see if it appears to be a valid zip file. - - - - - Calling this method is equivalent to calling with the testExtract parameter set to false. - - - - The file to check. - true if the file appears to be a zip file. - - - - Checks a file to see if it is a valid zip file. - - - - - This method opens the specified zip file, reads in the zip archive, - verifying the ZIP metadata as it reads. - - - - If everything succeeds, then the method returns true. If anything fails - - for example if an incorrect signature or CRC is found, indicating a - corrupt file, the the method returns false. This method also returns - false for a file that does not exist. - - - - If is true, as part of its check, this - method reads in the content for each entry, expands it, and checks CRCs. - This provides an additional check beyond verifying the zip header and - directory data. - - - - If is true, and if any of the zip entries - are protected with a password, this method will return false. If you want - to verify a ZipFile that has entries which are protected with a - password, you will need to do that manually. - - - - - The zip file to check. - true if the caller wants to extract each entry. - true if the file contains a valid zip file. - - - - Checks a stream to see if it contains a valid zip archive. - - - - - This method reads the zip archive contained in the specified stream, verifying - the ZIP metadata as it reads. If testExtract is true, this method also extracts - each entry in the archive, dumping all the bits into . - - - - If everything succeeds, then the method returns true. If anything fails - - for example if an incorrect signature or CRC is found, indicating a corrupt - file, the the method returns false. This method also returns false for a - file that does not exist. - - - - If testExtract is true, this method reads in the content for each - entry, expands it, and checks CRCs. This provides an additional check - beyond verifying the zip header data. - - - - If testExtract is true, and if any of the zip entries are protected - with a password, this method will return false. If you want to verify a - ZipFile that has entries which are protected with a password, you will need - to do that manually. - - - - - - The stream to check. - true if the caller wants to extract each entry. - true if the stream contains a valid zip archive. - - - - Delete file with retry on UnauthorizedAccessException. - - - - - When calling File.Delete() on a file that has been "recently" - created, the call sometimes fails with - UnauthorizedAccessException. This method simply retries the Delete 3 - times with a sleep between tries. - - - - the name of the file to be deleted - - - - Saves the Zip archive to a file, specified by the Name property of the - ZipFile. - - - - - The ZipFile instance is written to storage, typically a zip file - in a filesystem, only when the caller calls Save. In the typical - case, the Save operation writes the zip content to a temporary file, and - then renames the temporary file to the desired name. If necessary, this - method will delete a pre-existing file before the rename. - - - - The property is specified either explicitly, - or implicitly using one of the parameterized ZipFile constructors. For - COM Automation clients, the Name property must be set explicitly, - because COM Automation clients cannot call parameterized constructors. - - - - When using a filesystem file for the Zip output, it is possible to call - Save multiple times on the ZipFile instance. With each - call the zip content is re-written to the same output file. - - - - Data for entries that have been added to the ZipFile instance is - written to the output when the Save method is called. This means - that the input streams for those entries must be available at the time - the application calls Save. If, for example, the application - adds entries with AddEntry using a dynamically-allocated - MemoryStream, the memory stream must not have been disposed - before the call to Save. See the property for more discussion of the - availability requirements of the input stream for an entry, and an - approach for providing just-in-time stream lifecycle management. - - - - - - - - Thrown if you haven't specified a location or stream for saving the zip, - either in the constructor or by setting the Name property, or if you try - to save a regular zip archive to a filename with a .exe extension. - - - - Thrown if is non-zero, and the number - of segments that would be generated for the spanned zip file during the - save operation exceeds 99. If this happens, you need to increase the - segment size. - - - - - - Save the file to a new zipfile, with the given name. - - - - - This method allows the application to explicitly specify the name of the zip - file when saving. Use this when creating a new zip file, or when - updating a zip archive. - - - - An application can also save a zip archive in several places by calling this - method multiple times in succession, with different filenames. - - - - The ZipFile instance is written to storage, typically a zip file in a - filesystem, only when the caller calls Save. The Save operation writes - the zip content to a temporary file, and then renames the temporary file - to the desired name. If necessary, this method will delete a pre-existing file - before the rename. - - - - - - Thrown if you specify a directory for the filename. - - - - The name of the zip archive to save to. Existing files will - be overwritten with great prejudice. - - - - This example shows how to create and Save a zip file. - - using (ZipFile zip = new ZipFile()) - { - zip.AddDirectory(@"c:\reports\January"); - zip.Save("January.zip"); - } - - - - Using zip As New ZipFile() - zip.AddDirectory("c:\reports\January") - zip.Save("January.zip") - End Using - - - - - - This example shows how to update a zip file. - - using (ZipFile zip = ZipFile.Read("ExistingArchive.zip")) - { - zip.AddFile("NewData.csv"); - zip.Save("UpdatedArchive.zip"); - } - - - - Using zip As ZipFile = ZipFile.Read("ExistingArchive.zip") - zip.AddFile("NewData.csv") - zip.Save("UpdatedArchive.zip") - End Using - - - - - - - Save the zip archive to the specified stream. - - - - - The ZipFile instance is written to storage - typically a zip file - in a filesystem, but using this overload, the storage can be anything - accessible via a writable stream - only when the caller calls Save. - - - - Use this method to save the zip content to a stream directly. A common - scenario is an ASP.NET application that dynamically generates a zip file - and allows the browser to download it. The application can call - Save(Response.OutputStream) to write a zipfile directly to the - output stream, without creating a zip file on the disk on the ASP.NET - server. - - - - Be careful when saving a file to a non-seekable stream, including - Response.OutputStream. When DotNetZip writes to a non-seekable - stream, the zip archive is formatted in such a way that may not be - compatible with all zip tools on all platforms. It's a perfectly legal - and compliant zip file, but some people have reported problems opening - files produced this way using the Mac OS archive utility. - - - - - - - This example saves the zipfile content into a MemoryStream, and - then gets the array of bytes from that MemoryStream. - - - using (var zip = new Ionic.Zip.ZipFile()) - { - zip.CompressionLevel= Ionic.Zlib.CompressionLevel.BestCompression; - zip.Password = "VerySecret."; - zip.Encryption = EncryptionAlgorithm.WinZipAes128; - zip.AddFile(sourceFileName); - MemoryStream output = new MemoryStream(); - zip.Save(output); - - byte[] zipbytes = output.ToArray(); - } - - - - - - This example shows a pitfall you should avoid. DO NOT read - from a stream, then try to save to the same stream. DO - NOT DO THIS: - - - - using (var fs = new FileSteeam(filename, FileMode.Open)) - { - using (var zip = Ionic.Zip.ZipFile.Read(inputStream)) - { - zip.AddEntry("Name1.txt", "this is the content"); - zip.Save(inputStream); // NO NO NO!! - } - } - - - - Better like this: - - - - using (var zip = Ionic.Zip.ZipFile.Read(filename)) - { - zip.AddEntry("Name1.txt", "this is the content"); - zip.Save(); // YES! - } - - - - - - The System.IO.Stream to write to. It must be - writable. If you created the ZipFile instanct by calling - ZipFile.Read(), this stream must not be the same stream - you passed to ZipFile.Read(). - - - - - Adds to the ZipFile a set of files from the current working directory on - disk, that conform to the specified criteria. - - - - - This method selects files from the the current working directory matching - the specified criteria, and adds them to the ZipFile. - - - - Specify the criteria in statements of 3 elements: a noun, an operator, and - a value. Consider the string "name != *.doc" . The noun is "name". The - operator is "!=", implying "Not Equal". The value is "*.doc". That - criterion, in English, says "all files with a name that does not end in - the .doc extension." - - - - Supported nouns include "name" (or "filename") for the filename; "atime", - "mtime", and "ctime" for last access time, last modfied time, and created - time of the file, respectively; "attributes" (or "attrs") for the file - attributes; "size" (or "length") for the file length (uncompressed), and - "type" for the type of object, either a file or a directory. The - "attributes", "name" and "type" nouns both support = and != as operators. - The "size", "atime", "mtime", and "ctime" nouns support = and !=, and - >, >=, <, <= as well. The times are taken to be expressed in - local time. - - - - Specify values for the file attributes as a string with one or more of the - characters H,R,S,A,I,L in any order, implying file attributes of Hidden, - ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint (symbolic - link) respectively. - - - - To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as the - format. If you omit the HH:mm:ss portion, it is assumed to be 00:00:00 - (midnight). - - - - The value for a size criterion is expressed in integer quantities of bytes, - kilobytes (use k or kb after the number), megabytes (m or mb), or gigabytes - (g or gb). - - - - The value for a name is a pattern to match against the filename, potentially - including wildcards. The pattern follows CMD.exe glob rules: * implies one - or more of any character, while ? implies one character. If the name - pattern contains any slashes, it is matched to the entire filename, - including the path; otherwise, it is matched against only the filename - without the path. This means a pattern of "*\*.*" matches all files one - directory level deep, while a pattern of "*.*" matches all files in all - directories. - - - - To specify a name pattern that includes spaces, use single quotes around the - pattern. A pattern of "'* *.*'" will match all files that have spaces in - the filename. The full criteria string for that would be "name = '* *.*'" . - - - - The value for a type criterion is either F (implying a file) or D (implying - a directory). - - - - Some examples: - - - - - criteria - Files retrieved - - - - name != *.xls - any file with an extension that is not .xls - - - - - name = *.mp3 - any file with a .mp3 extension. - - - - - *.mp3 - (same as above) any file with a .mp3 extension. - - - - - attributes = A - all files whose attributes include the Archive bit. - - - - - attributes != H - all files whose attributes do not include the Hidden bit. - - - - - mtime > 2009-01-01 - all files with a last modified time after January 1st, 2009. - - - - - size > 2gb - all files whose uncompressed size is greater than 2gb. - - - - - type = D - all directories in the filesystem. - - - - - - You can combine criteria with the conjunctions AND or OR. Using a string - like "name = *.txt AND size >= 100k" for the selectionCriteria retrieves - entries whose names end in .txt, and whose uncompressed size is greater than - or equal to 100 kilobytes. - - - - For more complex combinations of criteria, you can use parenthesis to group - clauses in the boolean logic. Without parenthesis, the precedence of the - criterion atoms is determined by order of appearance. Unlike the C# - language, the AND conjunction does not take precendence over the logical OR. - This is important only in strings that contain 3 or more criterion atoms. - In other words, "name = *.txt and size > 1000 or attributes = H" implies - "((name = *.txt AND size > 1000) OR attributes = H)" while "attributes = - H OR name = *.txt and size > 1000" evaluates to "((attributes = H OR name - = *.txt) AND size > 1000)". When in doubt, use parenthesis. - - - - Using time properties requires some extra care. If you want to retrieve all - entries that were last updated on 2009 February 14, specify a time range - like so:"mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this to - say: all files updated after 12:00am on February 14th, until 12:00am on - February 15th. You can use the same bracketing approach to specify any time - period - a year, a month, a week, and so on. - - - - The syntax allows one special case: if you provide a string with no spaces, it is - treated as a pattern to match for the filename. Therefore a string like "*.xls" - will be equivalent to specifying "name = *.xls". - - - - There is no logic in this method that insures that the file inclusion - criteria are internally consistent. For example, it's possible to specify - criteria that says the file must have a size of less than 100 bytes, as well - as a size that is greater than 1000 bytes. Obviously no file will ever - satisfy such criteria, but this method does not detect such logical - inconsistencies. The caller is responsible for insuring the criteria are - sensible. - - - - Using this method, the file selection does not recurse into - subdirectories, and the full path of the selected files is included in the - entries added into the zip archive. If you don't like these behaviors, - see the other overloads of this method. - - - - - This example zips up all *.csv files in the current working directory. - - using (ZipFile zip = new ZipFile()) - { - // To just match on filename wildcards, - // use the shorthand form of the selectionCriteria string. - zip.AddSelectedFiles("*.csv"); - zip.Save(PathToZipArchive); - } - - - Using zip As ZipFile = New ZipFile() - zip.AddSelectedFiles("*.csv") - zip.Save(PathToZipArchive) - End Using - - - - The criteria for file selection - - - - Adds to the ZipFile a set of files from the disk that conform to the - specified criteria, optionally recursing into subdirectories. - - - - - This method selects files from the the current working directory matching - the specified criteria, and adds them to the ZipFile. If - recurseDirectories is true, files are also selected from - subdirectories, and the directory structure in the filesystem is - reproduced in the zip archive, rooted at the current working directory. - - - - Using this method, the full path of the selected files is included in the - entries added into the zip archive. If you don't want this behavior, use - one of the overloads of this method that allows the specification of a - directoryInArchive. - - - - For details on the syntax for the selectionCriteria parameter, see . - - - - - - - This example zips up all *.xml files in the current working directory, or any - subdirectory, that are larger than 1mb. - - - using (ZipFile zip = new ZipFile()) - { - // Use a compound expression in the selectionCriteria string. - zip.AddSelectedFiles("name = *.xml and size > 1024kb", true); - zip.Save(PathToZipArchive); - } - - - Using zip As ZipFile = New ZipFile() - ' Use a compound expression in the selectionCriteria string. - zip.AddSelectedFiles("name = *.xml and size > 1024kb", true) - zip.Save(PathToZipArchive) - End Using - - - - The criteria for file selection - - - If true, the file selection will recurse into subdirectories. - - - - - Adds to the ZipFile a set of files from a specified directory in the - filesystem, that conform to the specified criteria. - - - - - This method selects files that conform to the specified criteria, from the - the specified directory on disk, and adds them to the ZipFile. The search - does not recurse into subdirectores. - - - - Using this method, the full filesystem path of the files on disk is - reproduced on the entries added to the zip file. If you don't want this - behavior, use one of the other overloads of this method. - - - - For details on the syntax for the selectionCriteria parameter, see . - - - - - - - This example zips up all *.xml files larger than 1mb in the directory - given by "d:\rawdata". - - - using (ZipFile zip = new ZipFile()) - { - // Use a compound expression in the selectionCriteria string. - zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\\rawdata"); - zip.Save(PathToZipArchive); - } - - - - Using zip As ZipFile = New ZipFile() - ' Use a compound expression in the selectionCriteria string. - zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\rawdata) - zip.Save(PathToZipArchive) - End Using - - - - The criteria for file selection - - - The name of the directory on the disk from which to select files. - - - - - Adds to the ZipFile a set of files from the specified directory on disk, - that conform to the specified criteria. - - - - - - This method selects files from the the specified disk directory matching - the specified selection criteria, and adds them to the ZipFile. If - recurseDirectories is true, files are also selected from - subdirectories. - - - - The full directory structure in the filesystem is reproduced on the - entries added to the zip archive. If you don't want this behavior, use - one of the overloads of this method that allows the specification of a - directoryInArchive. - - - - For details on the syntax for the selectionCriteria parameter, see . - - - - - - This example zips up all *.csv files in the "files" directory, or any - subdirectory, that have been saved since 2009 February 14th. - - - using (ZipFile zip = new ZipFile()) - { - // Use a compound expression in the selectionCriteria string. - zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true); - zip.Save(PathToZipArchive); - } - - - Using zip As ZipFile = New ZipFile() - ' Use a compound expression in the selectionCriteria string. - zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true) - zip.Save(PathToZipArchive) - End Using - - - - - This example zips up all files in the current working - directory, and all its child directories, except those in - the excludethis subdirectory. - - Using Zip As ZipFile = New ZipFile(zipfile) - Zip.AddSelectedFfiles("name != 'excludethis\*.*'", datapath, True) - Zip.Save() - End Using - - - - The criteria for file selection - - - The filesystem path from which to select files. - - - - If true, the file selection will recurse into subdirectories. - - - - - Adds to the ZipFile a selection of files from the specified directory on - disk, that conform to the specified criteria, and using a specified root - path for entries added to the zip archive. - - - - - This method selects files from the specified disk directory matching the - specified selection criteria, and adds those files to the ZipFile, using - the specified directory path in the archive. The search does not recurse - into subdirectories. For details on the syntax for the selectionCriteria - parameter, see . - - - - - - - This example zips up all *.psd files in the "photos" directory that have - been saved since 2009 February 14th, and puts them all in a zip file, - using the directory name of "content" in the zip archive itself. When the - zip archive is unzipped, the folder containing the .psd files will be - named "content". - - - using (ZipFile zip = new ZipFile()) - { - // Use a compound expression in the selectionCriteria string. - zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content"); - zip.Save(PathToZipArchive); - } - - - Using zip As ZipFile = New ZipFile - zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content") - zip.Save(PathToZipArchive) - End Using - - - - - The criteria for selection of files to add to the ZipFile. - - - - The path to the directory in the filesystem from which to select files. - - - - Specifies a directory path to use to in place of the - directoryOnDisk. This path may, or may not, correspond to a real - directory in the current filesystem. If the files within the zip are - later extracted, this is the path used for the extracted file. Passing - null (nothing in VB) will use the path on the file name, if any; in other - words it would use directoryOnDisk, plus any subdirectory. Passing - the empty string ("") will insert the item at the root path within the - archive. - - - - - Adds to the ZipFile a selection of files from the specified directory on - disk, that conform to the specified criteria, optionally recursing through - subdirectories, and using a specified root path for entries added to the - zip archive. - - - - This method selects files from the specified disk directory that match the - specified selection criteria, and adds those files to the ZipFile, using - the specified directory path in the archive. If recurseDirectories - is true, files are also selected from subdirectories, and the directory - structure in the filesystem is reproduced in the zip archive, rooted at - the directory specified by directoryOnDisk. For details on the - syntax for the selectionCriteria parameter, see . - - - - - This example zips up all files that are NOT *.pst files, in the current - working directory and any subdirectories. - - - using (ZipFile zip = new ZipFile()) - { - zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true); - zip.Save(PathToZipArchive); - } - - - Using zip As ZipFile = New ZipFile - zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true) - zip.Save(PathToZipArchive) - End Using - - - - - The criteria for selection of files to add to the ZipFile. - - - - The path to the directory in the filesystem from which to select files. - - - - Specifies a directory path to use to in place of the - directoryOnDisk. This path may, or may not, correspond to a real - directory in the current filesystem. If the files within the zip are - later extracted, this is the path used for the extracted file. Passing - null (nothing in VB) will use the path on the file name, if any; in other - words it would use directoryOnDisk, plus any subdirectory. Passing - the empty string ("") will insert the item at the root path within the - archive. - - - - If true, the method also scans subdirectories for files matching the - criteria. - - - - - Updates the ZipFile with a selection of files from the disk that conform - to the specified criteria. - - - - This method selects files from the specified disk directory that match the - specified selection criteria, and Updates the ZipFile with those - files, using the specified directory path in the archive. If - recurseDirectories is true, files are also selected from - subdirectories, and the directory structure in the filesystem is - reproduced in the zip archive, rooted at the directory specified by - directoryOnDisk. For details on the syntax for the - selectionCriteria parameter, see . - - - - The criteria for selection of files to add to the ZipFile. - - - - The path to the directory in the filesystem from which to select files. - - - - Specifies a directory path to use to in place of the - directoryOnDisk. This path may, or may not, correspond to a - real directory in the current filesystem. If the files within the zip - are later extracted, this is the path used for the extracted file. - Passing null (nothing in VB) will use the path on the file name, if - any; in other words it would use directoryOnDisk, plus any - subdirectory. Passing the empty string ("") will insert the item at - the root path within the archive. - - - - If true, the method also scans subdirectories for files matching the criteria. - - - - - - - Retrieve entries from the zipfile by specified criteria. - - - - - This method allows callers to retrieve the collection of entries from the zipfile - that fit the specified criteria. The criteria are described in a string format, and - can include patterns for the filename; constraints on the size of the entry; - constraints on the last modified, created, or last accessed time for the file - described by the entry; or the attributes of the entry. - - - - For details on the syntax for the selectionCriteria parameter, see . - - - - This method is intended for use with a ZipFile that has been read from storage. - When creating a new ZipFile, this method will work only after the ZipArchive has - been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip - archive from storage.) Calling SelectEntries on a ZipFile that has not yet been - saved will deliver undefined results. - - - - - Thrown if selectionCriteria has an invalid syntax. - - - - This example selects all the PhotoShop files from within an archive, and extracts them - to the current working directory. - - using (ZipFile zip1 = ZipFile.Read(ZipFileName)) - { - var PhotoShopFiles = zip1.SelectEntries("*.psd"); - foreach (ZipEntry psd in PhotoShopFiles) - { - psd.Extract(); - } - } - - - Using zip1 As ZipFile = ZipFile.Read(ZipFileName) - Dim PhotoShopFiles as ICollection(Of ZipEntry) - PhotoShopFiles = zip1.SelectEntries("*.psd") - Dim psd As ZipEntry - For Each psd In PhotoShopFiles - psd.Extract - Next - End Using - - - the string that specifies which entries to select - a collection of ZipEntry objects that conform to the inclusion spec - - - - Retrieve entries from the zipfile by specified criteria. - - - - - This method allows callers to retrieve the collection of entries from the zipfile - that fit the specified criteria. The criteria are described in a string format, and - can include patterns for the filename; constraints on the size of the entry; - constraints on the last modified, created, or last accessed time for the file - described by the entry; or the attributes of the entry. - - - - For details on the syntax for the selectionCriteria parameter, see . - - - - This method is intended for use with a ZipFile that has been read from storage. - When creating a new ZipFile, this method will work only after the ZipArchive has - been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip - archive from storage.) Calling SelectEntries on a ZipFile that has not yet been - saved will deliver undefined results. - - - - - Thrown if selectionCriteria has an invalid syntax. - - - - - using (ZipFile zip1 = ZipFile.Read(ZipFileName)) - { - var UpdatedPhotoShopFiles = zip1.SelectEntries("*.psd", "UpdatedFiles"); - foreach (ZipEntry e in UpdatedPhotoShopFiles) - { - // prompt for extract here - if (WantExtract(e.FileName)) - e.Extract(); - } - } - - - Using zip1 As ZipFile = ZipFile.Read(ZipFileName) - Dim UpdatedPhotoShopFiles As ICollection(Of ZipEntry) = zip1.SelectEntries("*.psd", "UpdatedFiles") - Dim e As ZipEntry - For Each e In UpdatedPhotoShopFiles - ' prompt for extract here - If Me.WantExtract(e.FileName) Then - e.Extract - End If - Next - End Using - - - the string that specifies which entries to select - - - the directory in the archive from which to select entries. If null, then - all directories in the archive are used. - - - a collection of ZipEntry objects that conform to the inclusion spec - - - - Remove entries from the zipfile by specified criteria. - - - - - This method allows callers to remove the collection of entries from the zipfile - that fit the specified criteria. The criteria are described in a string format, and - can include patterns for the filename; constraints on the size of the entry; - constraints on the last modified, created, or last accessed time for the file - described by the entry; or the attributes of the entry. - - - - For details on the syntax for the selectionCriteria parameter, see . - - - - This method is intended for use with a ZipFile that has been read from storage. - When creating a new ZipFile, this method will work only after the ZipArchive has - been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip - archive from storage.) Calling SelectEntries on a ZipFile that has not yet been - saved will deliver undefined results. - - - - - Thrown if selectionCriteria has an invalid syntax. - - - - This example removes all entries in a zip file that were modified prior to January 1st, 2008. - - using (ZipFile zip1 = ZipFile.Read(ZipFileName)) - { - // remove all entries from prior to Jan 1, 2008 - zip1.RemoveEntries("mtime < 2008-01-01"); - // don't forget to save the archive! - zip1.Save(); - } - - - Using zip As ZipFile = ZipFile.Read(ZipFileName) - ' remove all entries from prior to Jan 1, 2008 - zip1.RemoveEntries("mtime < 2008-01-01") - ' do not forget to save the archive! - zip1.Save - End Using - - - the string that specifies which entries to select - the number of entries removed - - - - Remove entries from the zipfile by specified criteria, and within the specified - path in the archive. - - - - - This method allows callers to remove the collection of entries from the zipfile - that fit the specified criteria. The criteria are described in a string format, and - can include patterns for the filename; constraints on the size of the entry; - constraints on the last modified, created, or last accessed time for the file - described by the entry; or the attributes of the entry. - - - - For details on the syntax for the selectionCriteria parameter, see . - - - - This method is intended for use with a ZipFile that has been read from storage. - When creating a new ZipFile, this method will work only after the ZipArchive has - been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip - archive from storage.) Calling SelectEntries on a ZipFile that has not yet been - saved will deliver undefined results. - - - - - Thrown if selectionCriteria has an invalid syntax. - - - - - using (ZipFile zip1 = ZipFile.Read(ZipFileName)) - { - // remove all entries from prior to Jan 1, 2008 - zip1.RemoveEntries("mtime < 2008-01-01", "documents"); - // a call to ZipFile.Save will make the modifications permanent - zip1.Save(); - } - - - Using zip As ZipFile = ZipFile.Read(ZipFileName) - ' remove all entries from prior to Jan 1, 2008 - zip1.RemoveEntries("mtime < 2008-01-01", "documents") - ' a call to ZipFile.Save will make the modifications permanent - zip1.Save - End Using - - - - the string that specifies which entries to select - - the directory in the archive from which to select entries. If null, then - all directories in the archive are used. - - the number of entries removed - - - - Selects and Extracts a set of Entries from the ZipFile. - - - - - The entries are extracted into the current working directory. - - - - If any of the files to be extracted already exist, then the action taken is as - specified in the property on the - corresponding ZipEntry instance. By default, the action taken in this case is to - throw an exception. - - - - For information on the syntax of the selectionCriteria string, - see . - - - - - This example shows how extract all XML files modified after 15 January 2009. - - using (ZipFile zip = ZipFile.Read(zipArchiveName)) - { - zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15"); - } - - - the selection criteria for entries to extract. - - - - - - Selects and Extracts a set of Entries from the ZipFile. - - - - - The entries are extracted into the current working directory. When extraction would would - overwrite an existing filesystem file, the action taken is as specified in the - parameter. - - - - For information on the syntax of the string describing the entry selection criteria, - see . - - - - - This example shows how extract all XML files modified after 15 January 2009, - overwriting any existing files. - - using (ZipFile zip = ZipFile.Read(zipArchiveName)) - { - zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15", - ExtractExistingFileAction.OverwriteSilently); - } - - - - the selection criteria for entries to extract. - - - The action to take if extraction would overwrite an existing file. - - - - - Selects and Extracts a set of Entries from the ZipFile. - - - - - The entries are selected from the specified directory within the archive, and then - extracted into the current working directory. - - - - If any of the files to be extracted already exist, then the action taken is as - specified in the property on the - corresponding ZipEntry instance. By default, the action taken in this case is to - throw an exception. - - - - For information on the syntax of the string describing the entry selection criteria, - see . - - - - - This example shows how extract all XML files modified after 15 January 2009, - and writes them to the "unpack" directory. - - using (ZipFile zip = ZipFile.Read(zipArchiveName)) - { - zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15","unpack"); - } - - - - the selection criteria for entries to extract. - - - the directory in the archive from which to select entries. If null, then - all directories in the archive are used. - - - - - - - Selects and Extracts a set of Entries from the ZipFile. - - - - - The entries are extracted into the specified directory. If any of the files to be - extracted already exist, an exception will be thrown. - - - For information on the syntax of the string describing the entry selection criteria, - see . - - - - the selection criteria for entries to extract. - - - the directory in the archive from which to select entries. If null, then - all directories in the archive are used. - - - - the directory on the disk into which to extract. It will be created - if it does not exist. - - - - - Selects and Extracts a set of Entries from the ZipFile. - - - - - The entries are extracted into the specified directory. When extraction would would - overwrite an existing filesystem file, the action taken is as specified in the - parameter. - - - - For information on the syntax of the string describing the entry selection criteria, - see . - - - - - This example shows how extract all files with an XML extension or with a size larger than 100,000 bytes, - and puts them in the unpack directory. For any files that already exist in - that destination directory, they will not be overwritten. - - using (ZipFile zip = ZipFile.Read(zipArchiveName)) - { - zip.ExtractSelectedEntries("name = *.xml or size > 100000", - null, - "unpack", - ExtractExistingFileAction.DontOverwrite); - } - - - - the selection criteria for entries to extract. - - - The directory on the disk into which to extract. It will be created if it does not exist. - - - - The directory in the archive from which to select entries. If null, then - all directories in the archive are used. - - - - The action to take if extraction would overwrite an existing file. - - - - - - Saves the ZipFile instance to a self-extracting zip archive. - - - - - - The generated exe image will execute on any machine that has the .NET - Framework 2.0 installed on it. The generated exe image is also a - valid ZIP file, readable with DotNetZip or another Zip library or tool - such as WinZip. - - - - There are two "flavors" of self-extracting archive. The - WinFormsApplication version will pop up a GUI and allow the - user to select a target directory into which to extract. There's also - a checkbox allowing the user to specify to overwrite existing files, - and another checkbox to allow the user to request that Explorer be - opened to see the extracted files after extraction. The other flavor - is ConsoleApplication. A self-extractor generated with that - flavor setting will run from the command line. It accepts command-line - options to set the overwrite behavior, and to specify the target - extraction directory. - - - - There are a few temporary files created during the saving to a - self-extracting zip. These files are created in the directory pointed - to by , which defaults to . These temporary files are - removed upon successful completion of this method. - - - - When a user runs the WinForms SFX, the user's personal directory (Environment.SpecialFolder.Personal) - will be used as the default extract location. If you want to set the - default extract location, you should use the other overload of - SaveSelfExtractor()/ The user who runs the SFX will have the - opportunity to change the extract directory before extracting. When - the user runs the Command-Line SFX, the user must explicitly specify - the directory to which to extract. The .NET Framework 2.0 is required - on the computer when the self-extracting archive is run. - - - - NB: This method is not available in the version of DotNetZip build for - the .NET Compact Framework, nor in the "Reduced" DotNetZip library. - - - - - - - string DirectoryPath = "c:\\Documents\\Project7"; - using (ZipFile zip = new ZipFile()) - { - zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); - zip.Comment = "This will be embedded into a self-extracting console-based exe"; - zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication); - } - - - Dim DirectoryPath As String = "c:\Documents\Project7" - Using zip As New ZipFile() - zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) - zip.Comment = "This will be embedded into a self-extracting console-based exe" - zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication) - End Using - - - - - a pathname, possibly fully qualified, to be created. Typically it - will end in an .exe extension. - - Indicates whether a Winforms or Console self-extractor is - desired. - - - - Saves the ZipFile instance to a self-extracting zip archive, using - the specified save options. - - - - - This method saves a self extracting archive, using the specified save - options. These options include the flavor of the SFX, the default extract - directory, the icon file, and so on. See the documentation - for for more - details. - - - - The user who runs the SFX will have the opportunity to change the extract - directory before extracting. If at the time of extraction, the specified - directory does not exist, the SFX will create the directory before - extracting the files. - - - - - - This example saves a WinForms-based self-extracting archive EXE that - will use c:\ExtractHere as the default extract location. The C# code - shows syntax for .NET 3.0, which uses an object initializer for - the SelfExtractorOptions object. - - string DirectoryPath = "c:\\Documents\\Project7"; - using (ZipFile zip = new ZipFile()) - { - zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); - zip.Comment = "This will be embedded into a self-extracting WinForms-based exe"; - var options = new SelfExtractorOptions - { - Flavor = SelfExtractorFlavor.WinFormsApplication, - DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere", - PostExtractCommandLine = ExeToRunAfterExtract, - SfxExeWindowTitle = "My Custom Window Title", - RemoveUnpackedFilesAfterExecute = true - }; - zip.SaveSelfExtractor("archive.exe", options); - } - - - Dim DirectoryPath As String = "c:\Documents\Project7" - Using zip As New ZipFile() - zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) - zip.Comment = "This will be embedded into a self-extracting console-based exe" - Dim options As New SelfExtractorOptions() - options.Flavor = SelfExtractorFlavor.WinFormsApplication - options.DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere" - options.PostExtractCommandLine = ExeToRunAfterExtract - options.SfxExeWindowTitle = "My Custom Window Title" - options.RemoveUnpackedFilesAfterExecute = True - zip.SaveSelfExtractor("archive.exe", options) - End Using - - - - The name of the EXE to generate. - provides the options for creating the - Self-extracting archive. - - - - Generic IEnumerator support, for use of a ZipFile in an enumeration. - - - - You probably do not want to call GetEnumerator explicitly. Instead - it is implicitly called when you use a loop in C#, or a - For Each loop in VB.NET. - - - - This example reads a zipfile of a given name, then enumerates the - entries in that zip file, and displays the information about each - entry on the Console. - - using (ZipFile zip = ZipFile.Read(zipfile)) - { - bool header = true; - foreach (ZipEntry e in zip) - { - if (header) - { - System.Console.WriteLine("Zipfile: {0}", zip.Name); - System.Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded); - System.Console.WriteLine("BitField: 0x{0:X2}", e.BitField); - System.Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod); - System.Console.WriteLine("\n{1,-22} {2,-6} {3,4} {4,-8} {0}", - "Filename", "Modified", "Size", "Ratio", "Packed"); - System.Console.WriteLine(new System.String('-', 72)); - header = false; - } - - System.Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", - e.FileName, - e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), - e.UncompressedSize, - e.CompressionRatio, - e.CompressedSize); - - e.Extract(); - } - } - - - - Dim ZipFileToExtract As String = "c:\foo.zip" - Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) - Dim header As Boolean = True - Dim e As ZipEntry - For Each e In zip - If header Then - Console.WriteLine("Zipfile: {0}", zip.Name) - Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded) - Console.WriteLine("BitField: 0x{0:X2}", e.BitField) - Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod) - Console.WriteLine(ChrW(10) & "{1,-22} {2,-6} {3,4} {4,-8} {0}", _ - "Filename", "Modified", "Size", "Ratio", "Packed" ) - Console.WriteLine(New String("-"c, 72)) - header = False - End If - Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", _ - e.FileName, _ - e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), _ - e.UncompressedSize, _ - e.CompressionRatio, _ - e.CompressedSize ) - e.Extract - Next - End Using - - - - A generic enumerator suitable for use within a foreach loop. - - - - An IEnumerator, for use of a ZipFile in a foreach construct. - - - - This method is included for COM support. An application generally does not call - this method directly. It is called implicitly by COM clients when enumerating - the entries in the ZipFile instance. In VBScript, this is done with a For Each - statement. In Javascript, this is done with new Enumerator(zipfile). - - - - The IEnumerator over the entries in the ZipFile. - - - - - Provides a human-readable string with information about the ZipFile. - - - - - The information string contains 10 lines or so, about each ZipEntry, - describing whether encryption is in use, the compressed and uncompressed - length of the entry, the offset of the entry, and so on. As a result the - information string can be very long for zip files that contain many - entries. - - - This information is mostly useful for diagnostic purposes. - - - - - - Indicates whether to perform a full scan of the zip file when reading it. - - - - - - You almost never want to use this property. - - - - When reading a zip file, if this flag is true (True in - VB), the entire zip archive will be scanned and searched for entries. - For large archives, this can take a very, long time. The much more - efficient default behavior is to read the zip directory, which is - stored at the end of the zip file. But, in some cases the directory is - corrupted and you need to perform a full scan of the zip file to - determine the contents of the zip file. This property lets you do - that, when necessary. - - - - This flag is effective only when calling . Normally you would read a ZipFile with the - static ZipFile.Read - method. But you can't set the FullScan property on the - ZipFile instance when you use a static factory method like - ZipFile.Read. - - - - - - - This example shows how to read a zip file using the full scan approach, - and then save it, thereby producing a corrected zip file. - - - using (var zip = new ZipFile()) - { - zip.FullScan = true; - zip.Initialize(zipFileName); - zip.Save(newName); - } - - - - Using zip As New ZipFile - zip.FullScan = True - zip.Initialize(zipFileName) - zip.Save(newName) - End Using - - - - - - - Whether to sort the ZipEntries before saving the file. - - - - The default is false. If you have a large number of zip entries, the sort - alone can consume significant time. - - - - - using (var zip = new ZipFile()) - { - zip.AddFiles(filesToAdd); - zip.SortEntriesBeforeSaving = true; - zip.Save(name); - } - - - - Using zip As New ZipFile - zip.AddFiles(filesToAdd) - zip.SortEntriesBeforeSaving = True - zip.Save(name) - End Using - - - - - - - Indicates whether NTFS Reparse Points, like junctions, should be - traversed during calls to AddDirectory(). - - - - By default, calls to AddDirectory() will traverse NTFS reparse - points, like mounted volumes, and directory junctions. An example - of a junction is the "My Music" directory in Windows Vista. In some - cases you may not want DotNetZip to traverse those directories. In - that case, set this property to false. - - - - - using (var zip = new ZipFile()) - { - zip.AddDirectoryWillTraverseReparsePoints = false; - zip.AddDirectory(dirToZip,"fodder"); - zip.Save(zipFileToCreate); - } - - - - - - Size of the IO buffer used while saving. - - - - - - First, let me say that you really don't need to bother with this. It is - here to allow for optimizations that you probably won't make! It will work - fine if you don't set or get this property at all. Ok? - - - - Now that we have that out of the way, the fine print: This - property affects the size of the buffer that is used for I/O for each - entry contained in the zip file. When a file is read in to be compressed, - it uses a buffer given by the size here. When you update a zip file, the - data for unmodified entries is copied from the first zip file to the - other, through a buffer given by the size here. - - - - Changing the buffer size affects a few things: first, for larger buffer - sizes, the memory used by the ZipFile, obviously, will be larger - during I/O operations. This may make operations faster for very much - larger files. Last, for any given entry, when you use a larger buffer - there will be fewer progress events during I/O operations, because there's - one progress event generated for each time the buffer is filled and then - emptied. - - - - The default buffer size is 8k. Increasing the buffer size may speed - things up as you compress larger files. But there are no hard-and-fast - rules here, eh? You won't know til you test it. And there will be a - limit where ever larger buffers actually slow things down. So as I said - in the beginning, it's probably best if you don't set or get this property - at all. - - - - - - This example shows how you might set a large buffer size for efficiency when - dealing with zip entries that are larger than 1gb. - - using (ZipFile zip = new ZipFile()) - { - zip.SaveProgress += this.zip1_SaveProgress; - zip.AddDirectory(directoryToZip, ""); - zip.UseZip64WhenSaving = Zip64Option.Always; - zip.BufferSize = 65536*8; // 65536 * 8 = 512k - zip.Save(ZipFileToCreate); - } - - - - - - Size of the work buffer to use for the ZLIB codec during compression. - - - - - When doing ZLIB or Deflate compression, the library fills a buffer, - then passes it to the compressor for compression. Then the library - reads out the compressed bytes. This happens repeatedly until there - is no more uncompressed data to compress. This property sets the - size of the buffer that will be used for chunk-wise compression. In - order for the setting to take effect, your application needs to set - this property before calling one of the ZipFile.Save() - overloads. - - - Setting this affects the performance and memory efficiency of - compression and decompression. For larger files, setting this to a - larger size may improve compression performance, but the exact - numbers vary depending on available memory, the size of the streams - you are compressing, and a bunch of other variables. I don't have - good firm recommendations on how to set it. You'll have to test it - yourself. Or just leave it alone and accept the default. - - - - - - Indicates whether extracted files should keep their paths as - stored in the zip archive. - - - - - This property affects Extraction. It is not used when creating zip - archives. - - - - With this property set to false, the default, extracting entries - from a zip file will create files in the filesystem that have the full - path associated to the entry within the zip file. With this property set - to true, extracting entries from the zip file results in files - with no path: the folders are "flattened." - - - - An example: suppose the zip file contains entries /directory1/file1.txt and - /directory2/file2.txt. With FlattenFoldersOnExtract set to false, - the files created will be \directory1\file1.txt and \directory2\file2.txt. - With the property set to true, the files created are file1.txt and file2.txt. - - - - - - - The compression strategy to use for all entries. - - - - Set the Strategy used by the ZLIB-compatible compressor, when - compressing entries using the DEFLATE method. Different compression - strategies work better on different sorts of data. The strategy - parameter can affect the compression ratio and the speed of - compression but not the correctness of the compresssion. For more - information see Ionic.Zlib.CompressionStrategy. - - - - - The name of the ZipFile, on disk. - - - - - - When the ZipFile instance was created by reading an archive using - one of the ZipFile.Read methods, this property represents the name - of the zip file that was read. When the ZipFile instance was - created by using the no-argument constructor, this value is null - (Nothing in VB). - - - - If you use the no-argument constructor, and you then explicitly set this - property, when you call , this name will - specify the name of the zip file created. Doing so is equivalent to - calling . When instantiating a - ZipFile by reading from a stream or byte array, the Name - property remains null. When saving to a stream, the Name - property is implicitly set to null. - - - - - - Sets the compression level to be used for entries subsequently added to - the zip archive. - - - - - Varying the compression level used on entries can affect the - size-vs-speed tradeoff when compression and decompressing data streams - or files. - - - - As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile - instance will cause the specified CompressionLevel to be used on all - items that are subsequently added to the - ZipFile instance. If you set this property after you have added - items to the ZipFile, but before you have called Save(), - those items will not use the specified compression level. - - - - If you do not set this property, the default compression level is used, - which normally gives a good balance of compression efficiency and - compression speed. In some tests, using BestCompression can - double the time it takes to compress, while delivering just a small - increase in compression efficiency. This behavior will vary with the - type of data you compress. If you are in doubt, just leave this setting - alone, and accept the default. - - - - - - The compression method for the zipfile. - - - - By default, the compression method is CompressionMethod.Deflate. - - - - - - - A comment attached to the zip archive. - - - - - - This property is read/write. It allows the application to specify a - comment for the ZipFile, or read the comment for the - ZipFile. After setting this property, changes are only made - permanent when you call a Save() method. - - - - According to PKWARE's - zip specification, the comment is not encrypted, even if there is a - password set on the zip file. - - - - The specification does not describe how to indicate the encoding used - on a comment string. Many "compliant" zip tools and libraries use - IBM437 as the code page for comments; DotNetZip, too, follows that - practice. On the other hand, there are situations where you want a - Comment to be encoded with something else, for example using code page - 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the - comment following the same procedure it follows for encoding - filenames: (a) if is - Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the - alternate encoding (). (c) if is AsNecessary, it uses the - alternate encoding only if the default encoding is not sufficient for - encoding the comment - in other words if decoding the result does not - produce the original string. This decision is taken at the time of - the call to ZipFile.Save(). - - - - When creating a zip archive using this library, it is possible to change - the value of between each - entry you add, and between adding entries and the call to - Save(). Don't do this. It will likely result in a zip file that is - not readable by any tool or application. For best interoperability, leave - alone, or specify it only - once, before adding any entries to the ZipFile instance. - - - - - - - Specifies whether the Creation, Access, and Modified times for entries - added to the zip file will be emitted in “Windows format” - when the zip archive is saved. - - - - - An application creating a zip archive can use this flag to explicitly - specify that the file times for the entries should or should not be stored - in the zip archive in the format used by Windows. By default this flag is - true, meaning the Windows-format times are stored in the zip - archive. - - - - When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are - automatically set from the filesystem values. When adding an entry from a - stream or string, all three values are implicitly set to - DateTime.Now. Applications can also explicitly set those times by - calling . - - - - PKWARE's - zip specification describes multiple ways to format these times in a - zip file. One is the format Windows applications normally use: 100ns ticks - since January 1, 1601 UTC. The other is a format Unix applications typically - use: seconds since January 1, 1970 UTC. Each format can be stored in an - "extra field" in the zip entry when saving the zip archive. The former - uses an extra field with a Header Id of 0x000A, while the latter uses a - header ID of 0x5455, although you probably don't need to know that. - - - - Not all tools and libraries can interpret these fields. Windows - compressed folders is one that can read the Windows Format timestamps, - while I believe the Infozip - tools can read the Unix format timestamps. Some tools and libraries - may be able to read only one or the other. DotNetZip can read or write - times in either or both formats. - - - - The times stored are taken from , , and . - - - - The value set here applies to all entries subsequently added to the - ZipFile. - - - - This property is not mutually exclusive of the property. It is possible and - legal and valid to produce a zip file that contains timestamps encoded in - the Unix format as well as in the Windows format, in addition to the LastModified time attached to each - entry in the archive, a time that is always stored in "DOS format". And, - notwithstanding the names PKWare uses for these time formats, any of them - can be read and written by any computer, on any operating system. But, - there are no guarantees that a program running on Mac or Linux will - gracefully handle a zip file with "Windows" formatted times, or that an - application that does not use DotNetZip but runs on Windows will be able to - handle file times in Unix format. - - - - When in doubt, test. Sorry, I haven't got a complete list of tools and - which sort of timestamps they can use and will tolerate. If you get any - good information and would like to pass it on, please do so and I will - include that information in this documentation. - - - - - This example shows how to save a zip file that contains file timestamps - in a format normally used by Unix. - - using (var zip = new ZipFile()) - { - // produce a zip file the Mac will like - zip.EmitTimesInWindowsFormatWhenSaving = false; - zip.EmitTimesInUnixFormatWhenSaving = true; - zip.AddDirectory(directoryToZip, "files"); - zip.Save(outputFile); - } - - - - Using zip As New ZipFile - '' produce a zip file the Mac will like - zip.EmitTimesInWindowsFormatWhenSaving = False - zip.EmitTimesInUnixFormatWhenSaving = True - zip.AddDirectory(directoryToZip, "files") - zip.Save(outputFile) - End Using - - - - - - - - - Specifies whether the Creation, Access, and Modified times - for entries added to the zip file will be emitted in "Unix(tm) - format" when the zip archive is saved. - - - - - An application creating a zip archive can use this flag to explicitly - specify that the file times for the entries should or should not be stored - in the zip archive in the format used by Unix. By default this flag is - false, meaning the Unix-format times are not stored in the zip - archive. - - - - When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are - automatically set from the filesystem values. When adding an entry from a - stream or string, all three values are implicitly set to DateTime.Now. - Applications can also explicitly set those times by calling . - - - - PKWARE's - zip specification describes multiple ways to format these times in a - zip file. One is the format Windows applications normally use: 100ns ticks - since January 1, 1601 UTC. The other is a format Unix applications - typically use: seconds since January 1, 1970 UTC. Each format can be - stored in an "extra field" in the zip entry when saving the zip - archive. The former uses an extra field with a Header Id of 0x000A, while - the latter uses a header ID of 0x5455, although you probably don't need to - know that. - - - - Not all tools and libraries can interpret these fields. Windows - compressed folders is one that can read the Windows Format timestamps, - while I believe the Infozip - tools can read the Unix format timestamps. Some tools and libraries may be - able to read only one or the other. DotNetZip can read or write times in - either or both formats. - - - - The times stored are taken from , , and . - - - - This property is not mutually exclusive of the property. It is possible and - legal and valid to produce a zip file that contains timestamps encoded in - the Unix format as well as in the Windows format, in addition to the LastModified time attached to each - entry in the zip archive, a time that is always stored in "DOS - format". And, notwithstanding the names PKWare uses for these time - formats, any of them can be read and written by any computer, on any - operating system. But, there are no guarantees that a program running on - Mac or Linux will gracefully handle a zip file with "Windows" formatted - times, or that an application that does not use DotNetZip but runs on - Windows will be able to handle file times in Unix format. - - - - When in doubt, test. Sorry, I haven't got a complete list of tools and - which sort of timestamps they can use and will tolerate. If you get any - good information and would like to pass it on, please do so and I will - include that information in this documentation. - - - - - - - - - Indicates whether verbose output is sent to the during AddXxx() and - ReadXxx() operations. - - - - This is a synthetic property. It returns true if the is non-null. - - - - - Indicates whether to perform case-sensitive matching on the filename when - retrieving entries in the zipfile via the string-based indexer. - - - - The default value is false, which means don't do case-sensitive - matching. In other words, retrieving zip["ReadMe.Txt"] is the same as - zip["readme.txt"]. It really makes sense to set this to true only - if you are not running on Windows, which has case-insensitive - filenames. But since this library is not built for non-Windows platforms, - in most cases you should just leave this property alone. - - - - - Indicates whether to encode entry filenames and entry comments using Unicode - (UTF-8). - - - - - The - PKWare zip specification provides for encoding file names and file - comments in either the IBM437 code page, or in UTF-8. This flag selects - the encoding according to that specification. By default, this flag is - false, and filenames and comments are encoded into the zip file in the - IBM437 codepage. Setting this flag to true will specify that filenames - and comments that cannot be encoded with IBM437 will be encoded with - UTF-8. - - - - Zip files created with strict adherence to the PKWare specification with - respect to UTF-8 encoding can contain entries with filenames containing - any combination of Unicode characters, including the full range of - characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other - alphabets. However, because at this time, the UTF-8 portion of the PKWare - specification is not broadly supported by other zip libraries and - utilities, such zip files may not be readable by your favorite zip tool or - archiver. In other words, interoperability will decrease if you set this - flag to true. - - - - In particular, Zip files created with strict adherence to the PKWare - specification with respect to UTF-8 encoding will not work well with - Explorer in Windows XP or Windows Vista, because Windows compressed - folders, as far as I know, do not support UTF-8 in zip files. Vista can - read the zip files, but shows the filenames incorrectly. Unpacking from - Windows Vista Explorer will result in filenames that have rubbish - characters in place of the high-order UTF-8 bytes. - - - - Also, zip files that use UTF-8 encoding will not work well with Java - applications that use the java.util.zip classes, as of v5.0 of the Java - runtime. The Java runtime does not correctly implement the PKWare - specification in this regard. - - - - As a result, we have the unfortunate situation that "correct" behavior by - the DotNetZip library with regard to Unicode encoding of filenames during - zip creation will result in zip files that are readable by strictly - compliant and current tools (for example the most recent release of the - commercial WinZip tool); but these zip files will not be readable by - various other tools or libraries, including Windows Explorer. - - - - The DotNetZip library can read and write zip files with UTF8-encoded - entries, according to the PKware spec. If you use DotNetZip for both - creating and reading the zip file, and you use UTF-8, there will be no - loss of information in the filenames. For example, using a self-extractor - created by this library will allow you to unpack files correctly with no - loss of information in the filenames. - - - - If you do not set this flag, it will remain false. If this flag is false, - your ZipFile will encode all filenames and comments using the - IBM437 codepage. This can cause "loss of information" on some filenames, - but the resulting zipfile will be more interoperable with other - utilities. As an example of the loss of information, diacritics can be - lost. The o-tilde character will be down-coded to plain o. The c with a - cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. - Likewise, the O-stroke character (Unicode 248), used in Danish and - Norwegian, will be down-coded to plain o. Chinese characters cannot be - represented in codepage IBM437; when using the default encoding, Chinese - characters in filenames will be represented as ?. These are all examples - of "information loss". - - - - The loss of information associated to the use of the IBM437 encoding is - inconvenient, and can also lead to runtime errors. For example, using - IBM437, any sequence of 4 Chinese characters will be encoded as ????. If - your application creates a ZipFile, then adds two files, each with - names of four Chinese characters each, this will result in a duplicate - filename exception. In the case where you add a single file with a name - containing four Chinese characters, calling Extract() on the entry that - has question marks in the filename will result in an exception, because - the question mark is not legal for use within filenames on Windows. These - are just a few examples of the problems associated to loss of information. - - - - This flag is independent of the encoding of the content within the entries - in the zip file. Think of the zip file as a container - it supports an - encoding. Within the container are other "containers" - the file entries - themselves. The encoding within those entries is independent of the - encoding of the zip archive container for those entries. - - - - Rather than specify the encoding in a binary fashion using this flag, an - application can specify an arbitrary encoding via the property. Setting the encoding - explicitly when creating zip archives will result in non-compliant zip - files that, curiously, are fairly interoperable. The challenge is, the - PKWare specification does not provide for a way to specify that an entry - in a zip archive uses a code page that is neither IBM437 nor UTF-8. - Therefore if you set the encoding explicitly when creating a zip archive, - you must take care upon reading the zip archive to use the same code page. - If you get it wrong, the behavior is undefined and may result in incorrect - filenames, exceptions, stomach upset, hair loss, and acne. - - - - - - - Specify whether to use ZIP64 extensions when saving a zip archive. - - - - - - When creating a zip file, the default value for the property is . is - safest, in the sense that you will not get an Exception if a pre-ZIP64 - limit is exceeded. - - - - You may set the property at any time before calling Save(). - - - - When reading a zip file via the Zipfile.Read() method, DotNetZip - will properly read ZIP64-endowed zip archives, regardless of the value of - this property. DotNetZip will always read ZIP64 archives. This property - governs only whether DotNetZip will write them. Therefore, when updating - archives, be careful about setting this property after reading an archive - that may use ZIP64 extensions. - - - - An interesting question is, if you have set this property to - AsNecessary, and then successfully saved, does the resulting - archive use ZIP64 extensions or not? To learn this, check the property, after calling Save(). - - - - Have you thought about - donating? - - - - - - - - Indicates whether the archive requires ZIP64 extensions. - - - - - - This property is null (or Nothing in VB) if the archive has - not been saved, and there are fewer than 65334 ZipEntry items - contained in the archive. - - - - The Value is true if any of the following four conditions holds: - the uncompressed size of any entry is larger than 0xFFFFFFFF; the - compressed size of any entry is larger than 0xFFFFFFFF; the relative - offset of any entry within the zip archive is larger than 0xFFFFFFFF; or - there are more than 65534 entries in the archive. (0xFFFFFFFF = - 4,294,967,295). The result may not be known until a Save() is attempted - on the zip archive. The Value of this - property may be set only AFTER one of the Save() methods has been called. - - - - If none of the four conditions holds, and the archive has been saved, then - the Value is false. - - - - A Value of false does not indicate that the zip archive, as saved, - does not use ZIP64. It merely indicates that ZIP64 is not required. An - archive may use ZIP64 even when not required if the property is set to , or if the property is set to and the output stream was not - seekable. Use the property to determine if - the most recent Save() method resulted in an archive that utilized - the ZIP64 extensions. - - - - - - - - - Indicates whether the most recent Save() operation used ZIP64 extensions. - - - - - The use of ZIP64 extensions within an archive is not always necessary, and - for interoperability concerns, it may be desired to NOT use ZIP64 if - possible. The property can be - set to use ZIP64 extensions only when necessary. In those cases, - Sometimes applications want to know whether a Save() actually used ZIP64 - extensions. Applications can query this read-only property to learn - whether ZIP64 has been used in a just-saved ZipFile. - - - - The value is null (or Nothing in VB) if the archive has not - been saved. - - - - Non-null values (HasValue is true) indicate whether ZIP64 - extensions were used during the most recent Save() operation. The - ZIP64 extensions may have been used as required by any particular entry - because of its uncompressed or compressed size, or because the archive is - larger than 4294967295 bytes, or because there are more than 65534 entries - in the archive, or because the UseZip64WhenSaving property was set - to , or because the - UseZip64WhenSaving property was set to and the output stream was not seekable. - The value of this property does not indicate the reason the ZIP64 - extensions were used. - - - - - - - - - Indicates whether the most recent Read() operation read a zip file that uses - ZIP64 extensions. - - - - This property will return null (Nothing in VB) if you've added an entry after reading - the zip file. - - - - - The text encoding to use when writing new entries to the ZipFile, - for those entries that cannot be encoded with the default (IBM437) - encoding; or, the text encoding that was used when reading the entries - from the ZipFile. - - - - - In its - zip specification, PKWare describes two options for encoding - filenames and comments: using IBM437 or UTF-8. But, some archiving tools - or libraries do not follow the specification, and instead encode - characters using the system default code page. For example, WinRAR when - run on a machine in Shanghai may encode filenames with the Big-5 Chinese - (950) code page. This behavior is contrary to the Zip specification, but - it occurs anyway. - - - - When using DotNetZip to write zip archives that will be read by one of - these other archivers, set this property to specify the code page to use - when encoding the and for each ZipEntry in the zip file, for - values that cannot be encoded with the default codepage for zip files, - IBM437. This is why this property is "provisional". In all cases, IBM437 - is used where possible, in other words, where no loss of data would - result. It is possible, therefore, to have a given entry with a - Comment encoded in IBM437 and a FileName encoded with the - specified "provisional" codepage. - - - - Be aware that a zip file created after you've explicitly set the property to a value other than - IBM437 may not be compliant to the PKWare specification, and may not be - readable by compliant archivers. On the other hand, many (most?) - archivers are non-compliant and can read zip files created in arbitrary - code pages. The trick is to use or specify the proper codepage when - reading the zip. - - - - When creating a zip archive using this library, it is possible to change - the value of between each - entry you add, and between adding entries and the call to - Save(). Don't do this. It will likely result in a zipfile that is - not readable. For best interoperability, either leave alone, or specify it only once, - before adding any entries to the ZipFile instance. There is one - exception to this recommendation, described later. - - - - When using an arbitrary, non-UTF8 code page for encoding, there is no - standard way for the creator application - whether DotNetZip, WinZip, - WinRar, or something else - to formally specify in the zip file which - codepage has been used for the entries. As a result, readers of zip files - are not able to inspect the zip file and determine the codepage that was - used for the entries contained within it. It is left to the application - or user to determine the necessary codepage when reading zip files encoded - this way. In other words, if you explicitly specify the codepage when you - create the zipfile, you must explicitly specify the same codepage when - reading the zipfile. - - - - The way you specify the code page to use when reading a zip file varies - depending on the tool or library you use to read the zip. In DotNetZip, - you use a ZipFile.Read() method that accepts an encoding parameter. It - isn't possible with Windows Explorer, as far as I know, to specify an - explicit codepage to use when reading a zip. If you use an incorrect - codepage when reading a zipfile, you will get entries with filenames that - are incorrect, and the incorrect filenames may even contain characters - that are not legal for use within filenames in Windows. Extracting entries - with illegal characters in the filenames will lead to exceptions. It's too - bad, but this is just the way things are with code pages in zip - files. Caveat Emptor. - - - - Example: Suppose you create a zipfile that contains entries with - filenames that have Danish characters. If you use equal to "iso-8859-1" (cp 28591), - the filenames will be correctly encoded in the zip. But, to read that - zipfile correctly, you have to specify the same codepage at the time you - read it. If try to read that zip file with Windows Explorer or another - application that is not flexible with respect to the codepage used to - decode filenames in zipfiles, you will get a filename like "Inf°.txt". - - - - When using DotNetZip to read a zip archive, and the zip archive uses an - arbitrary code page, you must specify the encoding to use before or when - the Zipfile is READ. This means you must use a ZipFile.Read() - method that allows you to specify a System.Text.Encoding parameter. Setting - the ProvisionalAlternateEncoding property after your application has read in - the zip archive will not affect the entry names of entries that have already - been read in. - - - - And now, the exception to the rule described above. One strategy for - specifying the code page for a given zip file is to describe the code page - in a human-readable form in the Zip comment. For example, the comment may - read "Entries in this archive are encoded in the Big5 code page". For - maximum interoperability, the zip comment in this case should be encoded - in the default, IBM437 code page. In this case, the zip comment is - encoded using a different page than the filenames. To do this, Specify - ProvisionalAlternateEncoding to your desired region-specific code - page, once before adding any entries, and then reset - ProvisionalAlternateEncoding to IBM437 before setting the property and calling Save(). - - - - - This example shows how to read a zip file using the Big-5 Chinese code page - (950), and extract each entry in the zip file. For this code to work as - desired, the Zipfile must have been created using the big5 code page - (CP950). This is typical, for example, when using WinRar on a machine with - CP950 set as the default code page. In that case, the names of entries - within the Zip archive will be stored in that code page, and reading the zip - archive must be done using that code page. If the application did not use - the correct code page in ZipFile.Read(), then names of entries within the - zip archive would not be correctly retrieved. - - using (var zip = ZipFile.Read(zipFileName, System.Text.Encoding.GetEncoding("big5"))) - { - // retrieve and extract an entry using a name encoded with CP950 - zip[MyDesiredEntry].Extract("unpack"); - } - - - - Using zip As ZipFile = ZipFile.Read(ZipToExtract, System.Text.Encoding.GetEncoding("big5")) - ' retrieve and extract an entry using a name encoded with CP950 - zip(MyDesiredEntry).Extract("unpack") - End Using - - - - DefaultEncoding - - - - A Text Encoding to use when encoding the filenames and comments for - all the ZipEntry items, during a ZipFile.Save() operation. - - - - Whether the encoding specified here is used during the save depends - on . - - - - - - A flag that tells if and when this instance should apply - AlternateEncoding to encode the filenames and comments associated to - of ZipEntry objects contained within this instance. - - - - - The default text encoding used in zip archives. It is numeric 437, also - known as IBM437. - - - - - - Gets or sets the TextWriter to which status messages are delivered - for the instance. - - - - If the TextWriter is set to a non-null value, then verbose output is sent - to the TextWriter during Add, Read, Save and - Extract operations. Typically, console applications might use - Console.Out and graphical or headless applications might use a - System.IO.StringWriter. The output of this is suitable for viewing - by humans. - - - - - In this example, a console application instantiates a ZipFile, then - sets the StatusMessageTextWriter to Console.Out. At that - point, all verbose status messages for that ZipFile are sent to the - console. - - - - using (ZipFile zip= ZipFile.Read(FilePath)) - { - zip.StatusMessageTextWriter= System.Console.Out; - // messages are sent to the console during extraction - zip.ExtractAll(); - } - - - - Using zip As ZipFile = ZipFile.Read(FilePath) - zip.StatusMessageTextWriter= System.Console.Out - 'Status Messages will be sent to the console during extraction - zip.ExtractAll() - End Using - - - - In this example, a Windows Forms application instantiates a - ZipFile, then sets the StatusMessageTextWriter to a - StringWriter. At that point, all verbose status messages for that - ZipFile are sent to the StringWriter. - - - - var sw = new System.IO.StringWriter(); - using (ZipFile zip= ZipFile.Read(FilePath)) - { - zip.StatusMessageTextWriter= sw; - zip.ExtractAll(); - } - Console.WriteLine("{0}", sw.ToString()); - - - - Dim sw as New System.IO.StringWriter - Using zip As ZipFile = ZipFile.Read(FilePath) - zip.StatusMessageTextWriter= sw - zip.ExtractAll() - End Using - 'Status Messages are now available in sw - - - - - - - Gets or sets the name for the folder to store the temporary file - this library writes when saving a zip archive. - - - - - This library will create a temporary file when saving a Zip archive to a - file. This file is written when calling one of the Save() methods - that does not save to a stream, or one of the SaveSelfExtractor() - methods. - - - - By default, the library will create the temporary file in the directory - specified for the file itself, via the property or via - the method. - - - - Setting this property allows applications to override this default - behavior, so that the library will create the temporary file in the - specified folder. For example, to have the library create the temporary - file in the current working directory, regardless where the ZipFile - is saved, specfy ".". To revert to the default behavior, set this - property to null (Nothing in VB). - - - - When setting the property to a non-null value, the folder specified must - exist; if it does not an exception is thrown. The application should have - write and delete permissions on the folder. The permissions are not - explicitly checked ahead of time; if the application does not have the - appropriate rights, an exception will be thrown at the time Save() - is called. - - - - There is no temporary file created when reading a zip archive. When - saving to a Stream, there is no temporary file created. For example, if - the application is an ASP.NET application and calls Save() - specifying the Response.OutputStream as the output stream, there is - no temporary file created. - - - - - Thrown when setting the property if the directory does not exist. - - - - - - Sets the password to be used on the ZipFile instance. - - - - - - When writing a zip archive, this password is applied to the entries, not - to the zip archive itself. It applies to any ZipEntry subsequently - added to the ZipFile, using one of the AddFile, - AddDirectory, AddEntry, or AddItem methods, etc. - When reading a zip archive, this property applies to any entry - subsequently extracted from the ZipFile using one of the Extract - methods on the ZipFile class. - - - - When writing a zip archive, keep this in mind: though the password is set - on the ZipFile object, according to the Zip spec, the "directory" of the - archive - in other words the list of entries or files contained in the archive - is - not encrypted with the password, or protected in any way. If you set the - Password property, the password actually applies to individual entries - that are added to the archive, subsequent to the setting of this property. - The list of filenames in the archive that is eventually created will - appear in clear text, but the contents of the individual files are - encrypted. This is how Zip encryption works. - - - - One simple way around this limitation is to simply double-wrap sensitive - filenames: Store the files in a zip file, and then store that zip file - within a second, "outer" zip file. If you apply a password to the outer - zip file, then readers will be able to see that the outer zip file - contains an inner zip file. But readers will not be able to read the - directory or file list of the inner zip file. - - - - If you set the password on the ZipFile, and then add a set of files - to the archive, then each entry is encrypted with that password. You may - also want to change the password between adding different entries. If you - set the password, add an entry, then set the password to null - (Nothing in VB), and add another entry, the first entry is - encrypted and the second is not. If you call AddFile(), then set - the Password property, then call ZipFile.Save, the file - added will not be password-protected, and no warning will be generated. - - - - When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added - to the ZipFile. If you set the Password to a non-null value and do not - set , then PKZip 2.0 ("Weak") encryption is used. - This encryption is relatively weak but is very interoperable. If you set - the password to a null value (Nothing in VB), Encryption is - reset to None. - - - - All of the preceding applies to writing zip archives, in other words when - you use one of the Save methods. To use this property when reading or an - existing ZipFile, do the following: set the Password property on the - ZipFile, then call one of the Extract() overloads on the . In this case, the entry is extracted using the - Password that is specified on the ZipFile instance. If you - have not set the Password property, then the password is - null, and the entry is extracted with no password. - - - - If you set the Password property on the ZipFile, then call - Extract() an entry that has not been encrypted with a password, the - password is not used for that entry, and the ZipEntry is extracted - as normal. In other words, the password is used only if necessary. - - - - The class also has a Password property. It takes precedence - over this property on the ZipFile. Typically, you would use the - per-entry Password when most entries in the zip archive use one password, - and a few entries use a different password. If all entries in the zip - file use the same password, then it is simpler to just set this property - on the ZipFile itself, whether creating a zip archive or extracting - a zip archive. - - - - - - - This example creates a zip file, using password protection for the - entries, and then extracts the entries from the zip file. When creating - the zip file, the Readme.txt file is not protected with a password, but - the other two are password-protected as they are saved. During extraction, - each file is extracted with the appropriate password. - - - // create a file with encryption - using (ZipFile zip = new ZipFile()) - { - zip.AddFile("ReadMe.txt"); - zip.Password= "!Secret1"; - zip.AddFile("MapToTheSite-7440-N49th.png"); - zip.AddFile("2008-Regional-Sales-Report.pdf"); - zip.Save("EncryptedArchive.zip"); - } - - // extract entries that use encryption - using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) - { - zip.Password= "!Secret1"; - zip.ExtractAll("extractDir"); - } - - - - - Using zip As New ZipFile - zip.AddFile("ReadMe.txt") - zip.Password = "123456!" - zip.AddFile("MapToTheSite-7440-N49th.png") - zip.Password= "!Secret1"; - zip.AddFile("2008-Regional-Sales-Report.pdf") - zip.Save("EncryptedArchive.zip") - End Using - - - ' extract entries that use encryption - Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) - zip.Password= "!Secret1" - zip.ExtractAll("extractDir") - End Using - - - - - - ZipFile.Encryption - ZipEntry.Password - - - - The action the library should take when extracting a file that already - exists. - - - - - This property affects the behavior of the Extract methods (one of the - Extract() or ExtractWithPassword() overloads), when - extraction would would overwrite an existing filesystem file. If you do - not set this property, the library throws an exception when extracting an - entry would overwrite an existing file. - - - - This property has no effect when extracting to a stream, or when the file - to be extracted does not already exist. - - - - - - - The action the library should take when an error is encountered while - opening or reading files as they are saved into a zip archive. - - - - - Errors can occur as a file is being saved to the zip archive. For - example, the File.Open may fail, or a File.Read may fail, because of - lock conflicts or other reasons. - - - - The first problem might occur after having called AddDirectory() on a - directory that contains a Clipper .dbf file; the file is locked by - Clipper and cannot be opened for read by another process. An example of - the second problem might occur when trying to zip a .pst file that is in - use by Microsoft Outlook. Outlook locks a range on the file, which allows - other processes to open the file, but not read it in its entirety. - - - - This property tells DotNetZip what you would like to do in the case of - these errors. The primary options are: ZipErrorAction.Throw to - throw an exception (this is the default behavior if you don't set this - property); ZipErrorAction.Skip to Skip the file for which there - was an error and continue saving; ZipErrorAction.Retry to Retry - the entry that caused the problem; or - ZipErrorAction.InvokeErrorEvent to invoke an event handler. - - - - This property is implicitly set to ZipErrorAction.InvokeErrorEvent - if you add a handler to the event. If you set - this property to something other than - ZipErrorAction.InvokeErrorEvent, then the ZipError - event is implicitly cleared. What it means is you can set one or the - other (or neither), depending on what you want, but you never need to set - both. - - - - As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile - instance will cause the specified ZipErrorAction to be used on all - items that are subsequently added to the - ZipFile instance. If you set this property after you have added - items to the ZipFile, but before you have called Save(), - those items will not use the specified error handling action. - - - - If you want to handle any errors that occur with any entry in the zip - file in the same way, then set this property once, before adding any - entries to the zip archive. - - - - If you set this property to ZipErrorAction.Skip and you'd like to - learn which files may have been skipped after a Save(), you can - set the on the ZipFile before - calling Save(). A message will be emitted into that writer for - each skipped file, if any. - - - - - - This example shows how to tell DotNetZip to skip any files for which an - error is generated during the Save(). - - Public Sub SaveZipFile() - Dim SourceFolder As String = "fodder" - Dim DestFile As String = "eHandler.zip" - Dim sw as New StringWriter - Using zipArchive As ZipFile = New ZipFile - ' Tell DotNetZip to skip any files for which it encounters an error - zipArchive.ZipErrorAction = ZipErrorAction.Skip - zipArchive.StatusMessageTextWriter = sw - zipArchive.AddDirectory(SourceFolder) - zipArchive.Save(DestFile) - End Using - ' examine sw here to see any messages - End Sub - - - - - - - - - - The Encryption to use for entries added to the ZipFile. - - - - - Set this when creating a zip archive, or when updating a zip archive. The - specified Encryption is applied to the entries subsequently added to the - ZipFile instance. Applications do not need to set the - Encryption property when reading or extracting a zip archive. - - - - If you set this to something other than EncryptionAlgorithm.None, you - will also need to set the . - - - - As with some other properties on the ZipFile class, like and , setting this - property on a ZipFile instance will cause the specified - EncryptionAlgorithm to be used on all items - that are subsequently added to the ZipFile instance. In other - words, if you set this property after you have added items to the - ZipFile, but before you have called Save(), those items will - not be encrypted or protected with a password in the resulting zip - archive. To get a zip archive with encrypted entries, set this property, - along with the property, before calling - AddFile, AddItem, or AddDirectory (etc.) on the - ZipFile instance. - - - - If you read a ZipFile, you can modify the Encryption on an - encrypted entry, only by setting the Encryption property on the - ZipEntry itself. Setting the Encryption property on the - ZipFile, once it has been created via a call to - ZipFile.Read(), does not affect entries that were previously read. - - - - For example, suppose you read a ZipFile, and there is an encrypted - entry. Setting the Encryption property on that ZipFile and - then calling Save() on the ZipFile does not update the - Encryption used for the entries in the archive. Neither is an - exception thrown. Instead, what happens during the Save() is that - all previously existing entries are copied through to the new zip archive, - with whatever encryption and password that was used when originally - creating the zip archive. Upon re-reading that archive, to extract - entries, applications should use the original password or passwords, if - any. - - - - Suppose an application reads a ZipFile, and there is an encrypted - entry. Setting the Encryption property on that ZipFile and - then adding new entries (via AddFile(), AddEntry(), etc) - and then calling Save() on the ZipFile does not update the - Encryption on any of the entries that had previously been in the - ZipFile. The Encryption property applies only to the - newly-added entries. - - - - - - - This example creates a zip archive that uses encryption, and then extracts - entries from the archive. When creating the zip archive, the ReadMe.txt - file is zipped without using a password or encryption. The other files - use encryption. - - - - // Create a zip archive with AES Encryption. - using (ZipFile zip = new ZipFile()) - { - zip.AddFile("ReadMe.txt"); - zip.Encryption= EncryptionAlgorithm.WinZipAes256; - zip.Password= "Top.Secret.No.Peeking!"; - zip.AddFile("7440-N49th.png"); - zip.AddFile("2008-Regional-Sales-Report.pdf"); - zip.Save("EncryptedArchive.zip"); - } - - // Extract a zip archive that uses AES Encryption. - // You do not need to specify the algorithm during extraction. - using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) - { - zip.Password= "Top.Secret.No.Peeking!"; - zip.ExtractAll("extractDirectory"); - } - - - - ' Create a zip that uses Encryption. - Using zip As New ZipFile() - zip.Encryption= EncryptionAlgorithm.WinZipAes256 - zip.Password= "Top.Secret.No.Peeking!" - zip.AddFile("ReadMe.txt") - zip.AddFile("7440-N49th.png") - zip.AddFile("2008-Regional-Sales-Report.pdf") - zip.Save("EncryptedArchive.zip") - End Using - - ' Extract a zip archive that uses AES Encryption. - ' You do not need to specify the algorithm during extraction. - Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) - zip.Password= "Top.Secret.No.Peeking!" - zip.ExtractAll("extractDirectory") - End Using - - - - - ZipFile.Password - ZipEntry.Encryption - - - - A callback that allows the application to specify the compression level - to use for entries subsequently added to the zip archive. - - - - - - With this callback, the DotNetZip library allows the application to - determine whether compression will be used, at the time of the - Save. This may be useful if the application wants to favor - speed over size, and wants to defer the decision until the time of - Save. - - - - Typically applications set the property on - the ZipFile or on each ZipEntry to determine the level of - compression used. This is done at the time the entry is added to the - ZipFile. Setting the property to - Ionic.Zlib.CompressionLevel.None means no compression will be used. - - - - This callback allows the application to defer the decision on the - CompressionLevel to use, until the time of the call to - ZipFile.Save(). The callback is invoked once per ZipEntry, - at the time the data for the entry is being written out as part of a - Save() operation. The application can use whatever criteria it - likes in determining the level to return. For example, an application may - wish that no .mp3 files should be compressed, because they are already - compressed and the extra compression is not worth the CPU time incurred, - and so can return None for all .mp3 entries. - - - - The library determines whether compression will be attempted for an entry - this way: If the entry is a zero length file, or a directory, no - compression is used. Otherwise, if this callback is set, it is invoked - and the CompressionLevel is set to the return value. If this - callback has not been set, then the previously set value for - CompressionLevel is used. - - - - - - - The maximum size of an output segment, when saving a split Zip file. - - - - Set this to a non-zero value before calling or to specify that the ZipFile should be saved as a - split archive, also sometimes called a spanned archive. Some also - call them multi-file archives. - - - - A split zip archive is saved in a set of discrete filesystem files, - rather than in a single file. This is handy when transmitting the - archive in email or some other mechanism that has a limit to the size of - each file. The first file in a split archive will be named - basename.z01, the second will be named basename.z02, and - so on. The final file is named basename.zip. According to the zip - specification from PKWare, the minimum value is 65536, for a 64k segment - size. The maximum number of segments allows in a split archive is 99. - - - - The value of this property determines the maximum size of a split - segment when writing a split archive. For example, suppose you have a - ZipFile that would save to a single file of 200k. If you set the - MaxOutputSegmentSize to 65536 before calling Save(), you - will get four distinct output files. On the other hand if you set this - property to 256k, then you will get a single-file archive for that - ZipFile. - - - - The size of each split output file will be as large as possible, up to - the maximum size set here. The zip specification requires that some data - fields in a zip archive may not span a split boundary, and an output - segment may be smaller than the maximum if necessary to avoid that - problem. Also, obviously the final segment of the archive may be smaller - than the maximum segment size. Segments will never be larger than the - value set with this property. - - - - You can save a split Zip file only when saving to a regular filesystem - file. It's not possible to save a split zip file as a self-extracting - archive, nor is it possible to save a split zip file to a stream. When - saving to a SFX or to a Stream, this property is ignored. - - - - About interoperability: Split or spanned zip files produced by DotNetZip - can be read by WinZip or PKZip, and vice-versa. Segmented zip files may - not be readable by other tools, if those other tools don't support zip - spanning or splitting. When in doubt, test. I don't believe Windows - Explorer can extract a split archive. - - - - This property has no effect when reading a split archive. You can read - a split archive in the normal way with DotNetZip. - - - - When saving a zip file, if you want a regular zip file rather than a - split zip file, don't set this property, or set it to Zero. - - - - If you read a split archive, with and - then subsequently call ZipFile.Save(), unless you set this - property before calling Save(), you will get a normal, - single-file archive. - - - - - - - - Returns the number of segments used in the most recent Save() operation. - - - - This is normally zero, unless you have set the property. If you have set , and then you save a file, after the call to - Save() completes, you can read this value to learn the number of segments that - were created. - - - If you call Save("Archive.zip"), and it creates 5 segments, then you - will have filesystem files named Archive.z01, Archive.z02, Archive.z03, - Archive.z04, and Archive.zip, and the value of this property will be 5. - - - - - - - The size threshold for an entry, above which a parallel deflate is used. - - - - - - DotNetZip will use multiple threads to compress any ZipEntry, - if the entry is larger than the given size. Zero means "always - use parallel deflate", while -1 means "never use parallel - deflate". The default value for this property is 512k. Aside - from the special values of 0 and 1, the minimum value is 65536. - - - - If the entry size cannot be known before compression, as with a - read-forward stream, then Parallel deflate will never be - performed, unless the value of this property is zero. - - - - A parallel deflate operations will speed up the compression of - large files, on computers with multiple CPUs or multiple CPU - cores. For files above 1mb, on a dual core or dual-cpu (2p) - machine, the time required to compress the file can be 70% of the - single-threaded deflate. For very large files on 4p machines the - compression can be done in 30% of the normal time. The downside - is that parallel deflate consumes extra memory during the deflate, - and the deflation is not as effective. - - - - Parallel deflate tends to yield slightly less compression when - compared to as single-threaded deflate; this is because the original - data stream is split into multiple independent buffers, each of which - is compressed in parallel. But because they are treated - independently, there is no opportunity to share compression - dictionaries. For that reason, a deflated stream may be slightly - larger when compressed using parallel deflate, as compared to a - traditional single-threaded deflate. Sometimes the increase over the - normal deflate is as much as 5% of the total compressed size. For - larger files it can be as small as 0.1%. - - - - Multi-threaded compression does not give as much an advantage when - using Encryption. This is primarily because encryption tends to slow - down the entire pipeline. Also, multi-threaded compression gives less - of an advantage when using lower compression levels, for example . You may have to - perform some tests to determine the best approach for your situation. - - - - - - - - - - The maximum number of buffer pairs to use when performing - parallel compression. - - - - - This property sets an upper limit on the number of memory - buffer pairs to create when performing parallel - compression. The implementation of the parallel - compression stream allocates multiple buffers to - facilitate parallel compression. As each buffer fills up, - the stream uses - ThreadPool.QueueUserWorkItem() to compress those - buffers in a background threadpool thread. After a buffer - is compressed, it is re-ordered and written to the output - stream. - - - - A higher number of buffer pairs enables a higher degree of - parallelism, which tends to increase the speed of compression on - multi-cpu computers. On the other hand, a higher number of buffer - pairs also implies a larger memory consumption, more active worker - threads, and a higher cpu utilization for any compression. This - property enables the application to limit its memory consumption and - CPU utilization behavior depending on requirements. - - - - For each compression "task" that occurs in parallel, there are 2 - buffers allocated: one for input and one for output. This property - sets a limit for the number of pairs. The total amount of storage - space allocated for buffering will then be (N*S*2), where N is the - number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer - pairs per CPU core, so if your machine has 4 cores, and you retain - the default buffer size of 128k, then the - ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer - memory in total, or 4mb, in blocks of 128kb. If you then set this - property to 8, then the number will be 8 * 2 * 128kb of buffer - memory, or 2mb. - - - - CPU utilization will also go up with additional buffers, because a - larger number of buffer pairs allows a larger number of background - threads to compress in parallel. If you find that parallel - compression is consuming too much memory or CPU, you can adjust this - value downward. - - - - The default value is 16. Different values may deliver better or - worse results, depending on your priorities and the dynamic - performance characteristics of your storage and compute resources. - - - - This property is not the number of buffer pairs to use; it is an - upper limit. An illustration: Suppose you have an application that - uses the default value of this property (which is 16), and it runs - on a machine with 2 CPU cores. In that case, DotNetZip will allocate - 4 buffer pairs per CPU core, for a total of 8 pairs. The upper - limit specified by this property has no effect. - - - - The application can set this value at any time - before calling ZipFile.Save(). - - - - - - - - - Returns the version number on the DotNetZip assembly. - - - - - This property is exposed as a convenience. Callers could also get the - version value by retrieving GetName().Version on the - System.Reflection.Assembly object pointing to the DotNetZip - assembly. But sometimes it is not clear which assembly is being loaded. - This property makes it clear. - - - This static property is primarily useful for diagnostic purposes. - - - - - - This is an integer indexer into the Zip archive. - - - - - This property is read-only. - - - - Internally, the ZipEntry instances that belong to the - ZipFile are stored in a Dictionary. When you use this - indexer the first time, it creates a read-only - List<ZipEntry> from the Dictionary.Values Collection. - If at any time you modify the set of entries in the ZipFile, - either by adding an entry, removing an entry, or renaming an - entry, a new List will be created, and the numeric indexes for the - remaining entries may be different. - - - - This means you cannot rename any ZipEntry from - inside an enumeration of the zip file. - - - - The index value. - - - - - - The ZipEntry within the Zip archive at the specified index. If the - entry does not exist in the archive, this indexer throws. - - - - - - This is a name-based indexer into the Zip archive. - - - - - This property is read-only. - - - - The property on the ZipFile - determines whether retrieval via this indexer is done via case-sensitive - comparisons. By default, retrieval is not case sensitive. This makes - sense on Windows, in which filesystems are not case sensitive. - - - - Regardless of case-sensitivity, it is not always the case that - this[value].FileName == value. In other words, the FileName - property of the ZipEntry retrieved with this indexer, may or may - not be equal to the index value. - - - - This is because DotNetZip performs a normalization of filenames passed to - this indexer, before attempting to retrieve the item. That normalization - includes: removal of a volume letter and colon, swapping backward slashes - for forward slashes. So, zip["dir1\\entry1.txt"].FileName == - "dir1/entry.txt". - - - - Directory entries in the zip file may be retrieved via this indexer only - with names that have a trailing slash. DotNetZip automatically appends a - trailing slash to the names of any directory entries added to a zip. - - - - - - This example extracts only the entries in a zip file that are .txt files. - - using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) - { - foreach (string s1 in zip.EntryFilenames) - { - if (s1.EndsWith(".txt")) - zip[s1].Extract("textfiles"); - } - } - - - Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") - Dim s1 As String - For Each s1 In zip.EntryFilenames - If s1.EndsWith(".txt") Then - zip(s1).Extract("textfiles") - End If - Next - End Using - - - - - - Thrown if the caller attempts to assign a non-null value to the indexer. - - - - The name of the file, including any directory path, to retrieve from the - zip. The filename match is not case-sensitive by default; you can use the - property to change this behavior. The - pathname can use forward-slashes or backward slashes. - - - - The ZipEntry within the Zip archive, given by the specified - filename. If the named entry does not exist in the archive, this indexer - returns null (Nothing in VB). - - - - - - The list of filenames for the entries contained within the zip archive. - - - - According to the ZIP specification, the names of the entries use forward - slashes in pathnames. If you are scanning through the list, you may have - to swap forward slashes for backslashes. - - - - - - This example shows one way to test if a filename is already contained - within a zip archive. - - String zipFileToRead= "PackedDocuments.zip"; - string candidate = "DatedMaterial.xps"; - using (ZipFile zip = new ZipFile(zipFileToRead)) - { - if (zip.EntryFilenames.Contains(candidate)) - Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", - candidate, - zipFileName); - else - Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", - candidate, - zipFileName); - Console.WriteLine(); - } - - - Dim zipFileToRead As String = "PackedDocuments.zip" - Dim candidate As String = "DatedMaterial.xps" - Using zip As ZipFile.Read(ZipFileToRead) - If zip.EntryFilenames.Contains(candidate) Then - Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", _ - candidate, _ - zipFileName) - Else - Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", _ - candidate, _ - zipFileName) - End If - Console.WriteLine - End Using - - - - - The list of strings for the filenames contained within the Zip archive. - - - - - - Returns the readonly collection of entries in the Zip archive. - - - - - - If there are no entries in the current ZipFile, the value returned is a - non-null zero-element collection. If there are entries in the zip file, - the elements are returned in no particular order. - - - This is the implied enumerator on the ZipFile class. If you use a - ZipFile instance in a context that expects an enumerator, you will - get this collection. - - - - - - - Returns a readonly collection of entries in the Zip archive, sorted by FileName. - - - - If there are no entries in the current ZipFile, the value returned - is a non-null zero-element collection. If there are entries in the zip - file, the elements are returned sorted by the name of the entry. - - - - - This example fills a Windows Forms ListView with the entries in a zip file. - - - using (ZipFile zip = ZipFile.Read(zipFile)) - { - foreach (ZipEntry entry in zip.EntriesSorted) - { - ListViewItem item = new ListViewItem(n.ToString()); - n++; - string[] subitems = new string[] { - entry.FileName.Replace("/","\\"), - entry.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), - entry.UncompressedSize.ToString(), - String.Format("{0,5:F0}%", entry.CompressionRatio), - entry.CompressedSize.ToString(), - (entry.UsesEncryption) ? "Y" : "N", - String.Format("{0:X8}", entry.Crc)}; - - foreach (String s in subitems) - { - ListViewItem.ListViewSubItem subitem = new ListViewItem.ListViewSubItem(); - subitem.Text = s; - item.SubItems.Add(subitem); - } - - this.listView1.Items.Add(item); - } - } - - - - - - - - Returns the number of entries in the Zip archive. - - - - - An event handler invoked when a Save() starts, before and after each - entry has been written to the archive, when a Save() completes, and - during other Save events. - - - - - Depending on the particular event, different properties on the parameter are set. The following - table summarizes the available EventTypes and the conditions under - which this event handler is invoked with a - SaveProgressEventArgs with the given EventType. - - - - - value of EntryType - Meaning and conditions - - - - ZipProgressEventType.Saving_Started - Fired when ZipFile.Save() begins. - - - - - ZipProgressEventType.Saving_BeforeSaveEntry - - Fired within ZipFile.Save(), just before writing data for each - particular entry. - - - - - ZipProgressEventType.Saving_AfterSaveEntry - - Fired within ZipFile.Save(), just after having finished writing data - for each particular entry. - - - - - ZipProgressEventType.Saving_Completed - Fired when ZipFile.Save() has completed. - - - - - ZipProgressEventType.Saving_AfterSaveTempArchive - - Fired after the temporary file has been created. This happens only - when saving to a disk file. This event will not be invoked when - saving to a stream. - - - - - ZipProgressEventType.Saving_BeforeRenameTempArchive - - Fired just before renaming the temporary file to the permanent - location. This happens only when saving to a disk file. This event - will not be invoked when saving to a stream. - - - - - ZipProgressEventType.Saving_AfterRenameTempArchive - - Fired just after renaming the temporary file to the permanent - location. This happens only when saving to a disk file. This event - will not be invoked when saving to a stream. - - - - - ZipProgressEventType.Saving_AfterCompileSelfExtractor - - Fired after a self-extracting archive has finished compiling. This - EventType is used only within SaveSelfExtractor(). - - - - - ZipProgressEventType.Saving_BytesRead - - Set during the save of a particular entry, to update progress of the - Save(). When this EventType is set, the BytesTransferred is the - number of bytes that have been read from the source stream. The - TotalBytesToTransfer is the number of bytes in the uncompressed - file. - - - - - - - - - This example uses an anonymous method to handle the - SaveProgress event, by updating a progress bar. - - - progressBar1.Value = 0; - progressBar1.Max = listbox1.Items.Count; - using (ZipFile zip = new ZipFile()) - { - // listbox1 contains a list of filenames - zip.AddFiles(listbox1.Items); - - // do the progress bar: - zip.SaveProgress += (sender, e) => { - if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) { - progressBar1.PerformStep(); - } - }; - - zip.Save(fs); - } - - - - - This example uses a named method as the - SaveProgress event handler, to update the user, in a - console-based application. - - - static bool justHadByteUpdate= false; - public static void SaveProgress(object sender, SaveProgressEventArgs e) - { - if (e.EventType == ZipProgressEventType.Saving_Started) - Console.WriteLine("Saving: {0}", e.ArchiveName); - - else if (e.EventType == ZipProgressEventType.Saving_Completed) - { - justHadByteUpdate= false; - Console.WriteLine(); - Console.WriteLine("Done: {0}", e.ArchiveName); - } - - else if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) - { - if (justHadByteUpdate) - Console.WriteLine(); - Console.WriteLine(" Writing: {0} ({1}/{2})", - e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal); - justHadByteUpdate= false; - } - - else if (e.EventType == ZipProgressEventType.Saving_EntryBytesRead) - { - if (justHadByteUpdate) - Console.SetCursorPosition(0, Console.CursorTop); - Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, - e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); - justHadByteUpdate= true; - } - } - - public static ZipUp(string targetZip, string directory) - { - using (var zip = new ZipFile()) { - zip.SaveProgress += SaveProgress; - zip.AddDirectory(directory); - zip.Save(targetZip); - } - } - - - - - Public Sub ZipUp(ByVal targetZip As String, ByVal directory As String) - Using zip As ZipFile = New ZipFile - AddHandler zip.SaveProgress, AddressOf MySaveProgress - zip.AddDirectory(directory) - zip.Save(targetZip) - End Using - End Sub - - Private Shared justHadByteUpdate As Boolean = False - - Public Shared Sub MySaveProgress(ByVal sender As Object, ByVal e As SaveProgressEventArgs) - If (e.EventType Is ZipProgressEventType.Saving_Started) Then - Console.WriteLine("Saving: {0}", e.ArchiveName) - - ElseIf (e.EventType Is ZipProgressEventType.Saving_Completed) Then - justHadByteUpdate = False - Console.WriteLine - Console.WriteLine("Done: {0}", e.ArchiveName) - - ElseIf (e.EventType Is ZipProgressEventType.Saving_BeforeWriteEntry) Then - If justHadByteUpdate Then - Console.WriteLine - End If - Console.WriteLine(" Writing: {0} ({1}/{2})", e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal) - justHadByteUpdate = False - - ElseIf (e.EventType Is ZipProgressEventType.Saving_EntryBytesRead) Then - If justHadByteUpdate Then - Console.SetCursorPosition(0, Console.CursorTop) - End If - Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, _ - e.TotalBytesToTransfer, _ - (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) - justHadByteUpdate = True - End If - End Sub - - - - - - This is a more complete example of using the SaveProgress - events in a Windows Forms application, with a - Thread object. - - - delegate void SaveEntryProgress(SaveProgressEventArgs e); - delegate void ButtonClick(object sender, EventArgs e); - - public class WorkerOptions - { - public string ZipName; - public string Folder; - public string Encoding; - public string Comment; - public int ZipFlavor; - public Zip64Option Zip64; - } - - private int _progress2MaxFactor; - private bool _saveCanceled; - private long _totalBytesBeforeCompress; - private long _totalBytesAfterCompress; - private Thread _workerThread; - - - private void btnZipup_Click(object sender, EventArgs e) - { - KickoffZipup(); - } - - private void btnCancel_Click(object sender, EventArgs e) - { - if (this.lblStatus.InvokeRequired) - { - this.lblStatus.Invoke(new ButtonClick(this.btnCancel_Click), new object[] { sender, e }); - } - else - { - _saveCanceled = true; - lblStatus.Text = "Canceled..."; - ResetState(); - } - } - - private void KickoffZipup() - { - _folderName = tbDirName.Text; - - if (_folderName == null || _folderName == "") return; - if (this.tbZipName.Text == null || this.tbZipName.Text == "") return; - - // check for existence of the zip file: - if (System.IO.File.Exists(this.tbZipName.Text)) - { - var dlgResult = MessageBox.Show(String.Format("The file you have specified ({0}) already exists." + - " Do you want to overwrite this file?", this.tbZipName.Text), - "Confirmation is Required", MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dlgResult != DialogResult.Yes) return; - System.IO.File.Delete(this.tbZipName.Text); - } - - _saveCanceled = false; - _nFilesCompleted = 0; - _totalBytesAfterCompress = 0; - _totalBytesBeforeCompress = 0; - this.btnOk.Enabled = false; - this.btnOk.Text = "Zipping..."; - this.btnCancel.Enabled = true; - lblStatus.Text = "Zipping..."; - - var options = new WorkerOptions - { - ZipName = this.tbZipName.Text, - Folder = _folderName, - Encoding = "ibm437" - }; - - if (this.comboBox1.SelectedIndex != 0) - { - options.Encoding = this.comboBox1.SelectedItem.ToString(); - } - - if (this.radioFlavorSfxCmd.Checked) - options.ZipFlavor = 2; - else if (this.radioFlavorSfxGui.Checked) - options.ZipFlavor = 1; - else options.ZipFlavor = 0; - - if (this.radioZip64AsNecessary.Checked) - options.Zip64 = Zip64Option.AsNecessary; - else if (this.radioZip64Always.Checked) - options.Zip64 = Zip64Option.Always; - else options.Zip64 = Zip64Option.Never; - - options.Comment = String.Format("Encoding:{0} || Flavor:{1} || ZIP64:{2}\r\nCreated at {3} || {4}\r\n", - options.Encoding, - FlavorToString(options.ZipFlavor), - options.Zip64.ToString(), - System.DateTime.Now.ToString("yyyy-MMM-dd HH:mm:ss"), - this.Text); - - if (this.tbComment.Text != TB_COMMENT_NOTE) - options.Comment += this.tbComment.Text; - - _workerThread = new Thread(this.DoSave); - _workerThread.Name = "Zip Saver thread"; - _workerThread.Start(options); - this.Cursor = Cursors.WaitCursor; - } - - - private void DoSave(Object p) - { - WorkerOptions options = p as WorkerOptions; - try - { - using (var zip1 = new ZipFile()) - { - zip1.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(options.Encoding); - zip1.Comment = options.Comment; - zip1.AddDirectory(options.Folder); - _entriesToZip = zip1.EntryFileNames.Count; - SetProgressBars(); - zip1.SaveProgress += this.zip1_SaveProgress; - - zip1.UseZip64WhenSaving = options.Zip64; - - if (options.ZipFlavor == 1) - zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.WinFormsApplication); - else if (options.ZipFlavor == 2) - zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.ConsoleApplication); - else - zip1.Save(options.ZipName); - } - } - catch (System.Exception exc1) - { - MessageBox.Show(String.Format("Exception while zipping: {0}", exc1.Message)); - btnCancel_Click(null, null); - } - } - - - - void zip1_SaveProgress(object sender, SaveProgressEventArgs e) - { - switch (e.EventType) - { - case ZipProgressEventType.Saving_AfterWriteEntry: - StepArchiveProgress(e); - break; - case ZipProgressEventType.Saving_EntryBytesRead: - StepEntryProgress(e); - break; - case ZipProgressEventType.Saving_Completed: - SaveCompleted(); - break; - case ZipProgressEventType.Saving_AfterSaveTempArchive: - // this event only occurs when saving an SFX file - TempArchiveSaved(); - break; - } - if (_saveCanceled) - e.Cancel = true; - } - - - - private void StepArchiveProgress(SaveProgressEventArgs e) - { - if (this.progressBar1.InvokeRequired) - { - this.progressBar1.Invoke(new SaveEntryProgress(this.StepArchiveProgress), new object[] { e }); - } - else - { - if (!_saveCanceled) - { - _nFilesCompleted++; - this.progressBar1.PerformStep(); - _totalBytesAfterCompress += e.CurrentEntry.CompressedSize; - _totalBytesBeforeCompress += e.CurrentEntry.UncompressedSize; - - // reset the progress bar for the entry: - this.progressBar2.Value = this.progressBar2.Maximum = 1; - - this.Update(); - } - } - } - - - private void StepEntryProgress(SaveProgressEventArgs e) - { - if (this.progressBar2.InvokeRequired) - { - this.progressBar2.Invoke(new SaveEntryProgress(this.StepEntryProgress), new object[] { e }); - } - else - { - if (!_saveCanceled) - { - if (this.progressBar2.Maximum == 1) - { - // reset - Int64 max = e.TotalBytesToTransfer; - _progress2MaxFactor = 0; - while (max > System.Int32.MaxValue) - { - max /= 2; - _progress2MaxFactor++; - } - this.progressBar2.Maximum = (int)max; - lblStatus.Text = String.Format("{0} of {1} files...({2})", - _nFilesCompleted + 1, _entriesToZip, e.CurrentEntry.FileName); - } - - int xferred = e.BytesTransferred >> _progress2MaxFactor; - - this.progressBar2.Value = (xferred >= this.progressBar2.Maximum) - ? this.progressBar2.Maximum - : xferred; - - this.Update(); - } - } - } - - private void SaveCompleted() - { - if (this.lblStatus.InvokeRequired) - { - this.lblStatus.Invoke(new MethodInvoker(this.SaveCompleted)); - } - else - { - lblStatus.Text = String.Format("Done, Compressed {0} files, {1:N0}% of original.", - _nFilesCompleted, (100.00 * _totalBytesAfterCompress) / _totalBytesBeforeCompress); - ResetState(); - } - } - - private void ResetState() - { - this.btnCancel.Enabled = false; - this.btnOk.Enabled = true; - this.btnOk.Text = "Zip it!"; - this.progressBar1.Value = 0; - this.progressBar2.Value = 0; - this.Cursor = Cursors.Default; - if (!_workerThread.IsAlive) - _workerThread.Join(); - } - - - - - - - - - - - An event handler invoked before, during, and after the reading of a zip archive. - - - - - Depending on the particular event being signaled, different properties on the - parameter are set. The following table - summarizes the available EventTypes and the conditions under which this - event handler is invoked with a ReadProgressEventArgs with the given EventType. - - - - - value of EntryType - Meaning and conditions - - - - ZipProgressEventType.Reading_Started - Fired just as ZipFile.Read() begins. Meaningful properties: ArchiveName. - - - - - ZipProgressEventType.Reading_Completed - Fired when ZipFile.Read() has completed. Meaningful properties: ArchiveName. - - - - - ZipProgressEventType.Reading_ArchiveBytesRead - Fired while reading, updates the number of bytes read for the entire archive. - Meaningful properties: ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. - - - - - ZipProgressEventType.Reading_BeforeReadEntry - Indicates an entry is about to be read from the archive. - Meaningful properties: ArchiveName, EntriesTotal. - - - - - ZipProgressEventType.Reading_AfterReadEntry - Indicates an entry has just been read from the archive. - Meaningful properties: ArchiveName, EntriesTotal, CurrentEntry. - - - - - - - - - - - - - An event handler invoked before, during, and after extraction of - entries in the zip archive. - - - - - Depending on the particular event, different properties on the parameter are set. The following - table summarizes the available EventTypes and the conditions under - which this event handler is invoked with a - ExtractProgressEventArgs with the given EventType. - - - - - value of EntryType - Meaning and conditions - - - - ZipProgressEventType.Extracting_BeforeExtractAll - - Set when ExtractAll() begins. The ArchiveName, Overwrite, and - ExtractLocation properties are meaningful. - - - - ZipProgressEventType.Extracting_AfterExtractAll - - Set when ExtractAll() has completed. The ArchiveName, Overwrite, - and ExtractLocation properties are meaningful. - - - - - ZipProgressEventType.Extracting_BeforeExtractEntry - - Set when an Extract() on an entry in the ZipFile has begun. - Properties that are meaningful: ArchiveName, EntriesTotal, - CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. - - - - - ZipProgressEventType.Extracting_AfterExtractEntry - - Set when an Extract() on an entry in the ZipFile has completed. - Properties that are meaningful: ArchiveName, EntriesTotal, - CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. - - - - - ZipProgressEventType.Extracting_EntryBytesWritten - - Set within a call to Extract() on an entry in the ZipFile, as data - is extracted for the entry. Properties that are meaningful: - ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. - - - - - ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite - - Set within a call to Extract() on an entry in the ZipFile, when the - extraction would overwrite an existing file. This event type is used - only when ExtractExistingFileAction on the ZipFile or - ZipEntry is set to InvokeExtractProgressEvent. - - - - - - - - - - private static bool justHadByteUpdate = false; - public static void ExtractProgress(object sender, ExtractProgressEventArgs e) - { - if(e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten) - { - if (justHadByteUpdate) - Console.SetCursorPosition(0, Console.CursorTop); - - Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, - e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); - justHadByteUpdate = true; - } - else if(e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) - { - if (justHadByteUpdate) - Console.WriteLine(); - Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName); - justHadByteUpdate= false; - } - } - - public static ExtractZip(string zipToExtract, string directory) - { - string TargetDirectory= "extract"; - using (var zip = ZipFile.Read(zipToExtract)) { - zip.ExtractProgress += ExtractProgress; - foreach (var e in zip1) - { - e.Extract(TargetDirectory, true); - } - } - } - - - - Public Shared Sub Main(ByVal args As String()) - Dim ZipToUnpack As String = "C1P3SML.zip" - Dim TargetDir As String = "ExtractTest_Extract" - Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir) - Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack) - AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress - Dim e As ZipEntry - For Each e In zip1 - e.Extract(TargetDir, True) - Next - End Using - End Sub - - Private Shared justHadByteUpdate As Boolean = False - - Public Shared Sub MyExtractProgress(ByVal sender As Object, ByVal e As ExtractProgressEventArgs) - If (e.EventType = ZipProgressEventType.Extracting_EntryBytesWritten) Then - If ExtractTest.justHadByteUpdate Then - Console.SetCursorPosition(0, Console.CursorTop) - End If - Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) - ExtractTest.justHadByteUpdate = True - ElseIf (e.EventType = ZipProgressEventType.Extracting_BeforeExtractEntry) Then - If ExtractTest.justHadByteUpdate Then - Console.WriteLine - End If - Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName) - ExtractTest.justHadByteUpdate = False - End If - End Sub - - - - - - - - - - An event handler invoked before, during, and after Adding entries to a zip archive. - - - - Adding a large number of entries to a zip file can take a long - time. For example, when calling on a - directory that contains 50,000 files, it could take 3 minutes or so. - This event handler allws an application to track the progress of the Add - operation, and to optionally cancel a lengthy Add operation. - - - - - - int _numEntriesToAdd= 0; - int _numEntriesAdded= 0; - void AddProgressHandler(object sender, AddProgressEventArgs e) - { - switch (e.EventType) - { - case ZipProgressEventType.Adding_Started: - Console.WriteLine("Adding files to the zip..."); - break; - case ZipProgressEventType.Adding_AfterAddEntry: - _numEntriesAdded++; - Console.WriteLine(String.Format("Adding file {0}/{1} :: {2}", - _numEntriesAdded, _numEntriesToAdd, e.CurrentEntry.FileName)); - break; - case ZipProgressEventType.Adding_Completed: - Console.WriteLine("Added all files"); - break; - } - } - - void CreateTheZip() - { - using (ZipFile zip = new ZipFile()) - { - zip.AddProgress += AddProgressHandler; - zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)); - zip.Save(ZipFileToCreate); - } - } - - - - - - Private Sub AddProgressHandler(ByVal sender As Object, ByVal e As AddProgressEventArgs) - Select Case e.EventType - Case ZipProgressEventType.Adding_Started - Console.WriteLine("Adding files to the zip...") - Exit Select - Case ZipProgressEventType.Adding_AfterAddEntry - Console.WriteLine(String.Format("Adding file {0}", e.CurrentEntry.FileName)) - Exit Select - Case ZipProgressEventType.Adding_Completed - Console.WriteLine("Added all files") - Exit Select - End Select - End Sub - - Sub CreateTheZip() - Using zip as ZipFile = New ZipFile - AddHandler zip.AddProgress, AddressOf AddProgressHandler - zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)) - zip.Save(ZipFileToCreate); - End Using - End Sub - - - - - - - - - - - - An event that is raised when an error occurs during open or read of files - while saving a zip archive. - - - - - Errors can occur as a file is being saved to the zip archive. For - example, the File.Open may fail, or a File.Read may fail, because of - lock conflicts or other reasons. If you add a handler to this event, - you can handle such errors in your own code. If you don't add a - handler, the library will throw an exception if it encounters an I/O - error during a call to Save(). - - - - Setting a handler implicitly sets to - ZipErrorAction.InvokeErrorEvent. - - - - The handler you add applies to all items that are - subsequently added to the ZipFile instance. If you set this - property after you have added items to the ZipFile, but before you - have called Save(), errors that occur while saving those items - will not cause the error handler to be invoked. - - - - If you want to handle any errors that occur with any entry in the zip - file using the same error handler, then add your error handler once, - before adding any entries to the zip archive. - - - - In the error handler method, you need to set the property on the - ZipErrorEventArgs.CurrentEntry. This communicates back to - DotNetZip what you would like to do with this particular error. Within - an error handler, if you set the ZipEntry.ZipErrorAction property - on the ZipEntry to ZipErrorAction.InvokeErrorEvent or if - you don't set it at all, the library will throw the exception. (It is the - same as if you had set the ZipEntry.ZipErrorAction property on the - ZipEntry to ZipErrorAction.Throw.) If you set the - ZipErrorEventArgs.Cancel to true, the entire Save() will be - canceled. - - - - In the case that you use ZipErrorAction.Skip, implying that - you want to skip the entry for which there's been an error, DotNetZip - tries to seek backwards in the output stream, and truncate all bytes - written on behalf of that particular entry. This works only if the - output stream is seekable. It will not work, for example, when using - ASPNET's Response.OutputStream. - - - - - - - This example shows how to use an event handler to handle - errors during save of the zip file. - - - public static void MyZipError(object sender, ZipErrorEventArgs e) - { - Console.WriteLine("Error saving {0}...", e.FileName); - Console.WriteLine(" Exception: {0}", e.exception); - ZipEntry entry = e.CurrentEntry; - string response = null; - // Ask the user whether he wants to skip this error or not - do - { - Console.Write("Retry, Skip, Throw, or Cancel ? (R/S/T/C) "); - response = Console.ReadLine(); - Console.WriteLine(); - - } while (response != null && - response[0]!='S' && response[0]!='s' && - response[0]!='R' && response[0]!='r' && - response[0]!='T' && response[0]!='t' && - response[0]!='C' && response[0]!='c'); - - e.Cancel = (response[0]=='C' || response[0]=='c'); - - if (response[0]=='S' || response[0]=='s') - entry.ZipErrorAction = ZipErrorAction.Skip; - else if (response[0]=='R' || response[0]=='r') - entry.ZipErrorAction = ZipErrorAction.Retry; - else if (response[0]=='T' || response[0]=='t') - entry.ZipErrorAction = ZipErrorAction.Throw; - } - - public void SaveTheFile() - { - string directoryToZip = "fodder"; - string directoryInArchive = "files"; - string zipFileToCreate = "Archive.zip"; - using (var zip = new ZipFile()) - { - // set the event handler before adding any entries - zip.ZipError += MyZipError; - zip.AddDirectory(directoryToZip, directoryInArchive); - zip.Save(zipFileToCreate); - } - } - - - - Private Sub MyZipError(ByVal sender As Object, ByVal e As Ionic.Zip.ZipErrorEventArgs) - ' At this point, the application could prompt the user for an action to take. - ' But in this case, this application will simply automatically skip the file, in case of error. - Console.WriteLine("Zip Error, entry {0}", e.CurrentEntry.FileName) - Console.WriteLine(" Exception: {0}", e.exception) - ' set the desired ZipErrorAction on the CurrentEntry to communicate that to DotNetZip - e.CurrentEntry.ZipErrorAction = Zip.ZipErrorAction.Skip - End Sub - - Public Sub SaveTheFile() - Dim directoryToZip As String = "fodder" - Dim directoryInArchive As String = "files" - Dim zipFileToCreate as String = "Archive.zip" - Using zipArchive As ZipFile = New ZipFile - ' set the event handler before adding any entries - AddHandler zipArchive.ZipError, AddressOf MyZipError - zipArchive.AddDirectory(directoryToZip, directoryInArchive) - zipArchive.Save(zipFileToCreate) - End Using - End Sub - - - - - - - - - Options for using ZIP64 extensions when saving zip archives. - - - - - - Designed many years ago, the original zip - specification from PKWARE allowed for 32-bit quantities for the - compressed and uncompressed sizes of zip entries, as well as a 32-bit quantity - for specifying the length of the zip archive itself, and a maximum of 65535 - entries. These limits are now regularly exceeded in many backup and archival - scenarios. Recently, PKWare added extensions to the original zip spec, called - "ZIP64 extensions", to raise those limitations. This property governs whether - DotNetZip will use those extensions when writing zip archives. The use of - these extensions is optional and explicit in DotNetZip because, despite the - status of ZIP64 as a bona fide standard, many other zip tools and libraries do - not support ZIP64, and therefore a zip file with ZIP64 extensions may be - unreadable by some of those other tools. - - - - Set this property to to always use ZIP64 - extensions when saving, regardless of whether your zip archive needs it. - Suppose you add 5 files, each under 100k, to a ZipFile. If you specify Always - for this flag, you will get a ZIP64 archive, though the archive does not need - to use ZIP64 because none of the original zip limits had been exceeded. - - - - Set this property to to tell the DotNetZip - library to never use ZIP64 extensions. This is useful for maximum - compatibility and interoperability, at the expense of the capability of - handling large files or large archives. NB: Windows Explorer in Windows XP - and Windows Vista cannot currently extract files from a zip64 archive, so if - you want to guarantee that a zip archive produced by this library will work in - Windows Explorer, use Never. If you set this property to , and your application creates a zip that would - exceed one of the Zip limits, the library will throw an exception while saving - the zip file. - - - - Set this property to to tell the - DotNetZip library to use the ZIP64 extensions when required by the - entry. After the file is compressed, the original and compressed sizes are - checked, and if they exceed the limits described above, then zip64 can be - used. That is the general idea, but there is an additional wrinkle when saving - to a non-seekable device, like the ASP.NET Response.OutputStream, or - Console.Out. When using non-seekable streams for output, the entry - header - which indicates whether zip64 is in use - is emitted before it is - known if zip64 is necessary. It is only after all entries have been saved - that it can be known if ZIP64 will be required. On seekable output streams, - after saving all entries, the library can seek backward and re-emit the zip - file header to be consistent with the actual ZIP64 requirement. But using a - non-seekable output stream, the library cannot seek backward, so the header - can never be changed. In other words, the archive's use of ZIP64 extensions is - not alterable after the header is emitted. Therefore, when saving to - non-seekable streams, using is the same - as using : it will always produce a zip - archive that uses ZIP64 extensions. - - - - - - - The default behavior, which is "Never". - (For COM clients, this is a 0 (zero).) - - - - - Do not use ZIP64 extensions when writing zip archives. - (For COM clients, this is a 0 (zero).) - - - - - Use ZIP64 extensions when writing zip archives, as necessary. - For example, when a single entry exceeds 0xFFFFFFFF in size, or when the archive as a whole - exceeds 0xFFFFFFFF in size, or when there are more than 65535 entries in an archive. - (For COM clients, this is a 1.) - - - - - Always use ZIP64 extensions when writing zip archives, even when unnecessary. - (For COM clients, this is a 2.) - - - - - An enum representing the values on a three-way toggle switch - for various options in the library. This might be used to - specify whether to employ a particular text encoding, or to use - ZIP64 extensions, or some other option. - - - - - The default behavior. This is the same as "Never". - (For COM clients, this is a 0 (zero).) - - - - - Never use the associated option. - (For COM clients, this is a 0 (zero).) - - - - - Use the associated behavior "as necessary." - (For COM clients, this is a 1.) - - - - - Use the associated behavior Always, whether necessary or not. - (For COM clients, this is a 2.) - - - - - A class for collecting the various options that can be used when - Reading zip files for extraction or update. - - - - - When reading a zip file, there are several options an - application can set, to modify how the file is read, or what - the library does while reading. This class collects those - options into one container. - - - - Pass an instance of the ReadOptions class into the - ZipFile.Read() method. - - - . - . - - - - - An event handler for Read operations. When opening large zip - archives, you may want to display a progress bar or other - indicator of status progress while reading. This parameter - allows you to specify a ReadProgress Event Handler directly. - When you call Read(), the progress event is invoked as - necessary. - - - - - The System.IO.TextWriter to use for writing verbose status messages - during operations on the zip archive. A console application may wish to - pass System.Console.Out to get messages on the Console. A graphical - or headless application may wish to capture the messages in a different - TextWriter, such as a System.IO.StringWriter. - - - - - The System.Text.Encoding to use when reading in the zip archive. Be - careful specifying the encoding. If the value you use here is not the same - as the Encoding used when the zip archive was created (possibly by a - different archiver) you will get unexpected results and possibly exceptions. - - - - - - - - An enum that provides the different self-extractor flavors - - - - - A self-extracting zip archive that runs from the console or - command line. - - - - - A self-extracting zip archive that presents a graphical user - interface when it is executed. - - - - - The options for generating a self-extracting archive. - - - - - The type of SFX to create. - - - - - The command to run after extraction. - - - - - This is optional. Leave it empty (null in C# or Nothing in - VB) to run no command after extraction. - - - - If it is non-empty, the SFX will execute the command specified in this - string on the user's machine, and using the extract directory as the - working directory for the process, after unpacking the archive. The - program to execute can include a path, if you like. If you want to execute - a program that accepts arguments, specify the program name, followed by a - space, and then the arguments for the program, each separated by a space, - just as you would on a normal command line. Example: program.exe arg1 - arg2. The string prior to the first space will be taken as the - program name, and the string following the first space specifies the - arguments to the program. - - - - If you want to execute a program that has a space in the name or path of - the file, surround the program name in double-quotes. The first character - of the command line should be a double-quote character, and there must be - a matching double-quote following the end of the program file name. Any - optional arguments to the program follow that, separated by - spaces. Example: "c:\project files\program name.exe" arg1 arg2. - - - - If the flavor of the SFX is SelfExtractorFlavor.ConsoleApplication, - then the SFX starts a new process, using this string as the post-extract - command line. The SFX waits for the process to exit. The exit code of - the post-extract command line is returned as the exit code of the - command-line self-extractor exe. A non-zero exit code is typically used to - indicated a failure by the program. In the case of an SFX, a non-zero exit - code may indicate a failure during extraction, OR, it may indicate a - failure of the run-after-extract program if specified, OR, it may indicate - the run-after-extract program could not be fuond. There is no way to - distinguish these conditions from the calling shell, aside from parsing - the output of the SFX. If you have Quiet set to true, you may not - see error messages, if a problem occurs. - - - - If the flavor of the SFX is - SelfExtractorFlavor.WinFormsApplication, then the SFX starts a new - process, using this string as the post-extract command line, and using the - extract directory as the working directory for the process. The SFX does - not wait for the command to complete, and does not check the exit code of - the program. If the run-after-extract program cannot be fuond, a message - box is displayed indicating that fact. - - - - You can specify environment variables within this string, with a format like - %NAME%. The value of these variables will be expanded at the time - the SFX is run. Example: %WINDIR%\system32\xcopy.exe may expand at - runtime to c:\Windows\System32\xcopy.exe. - - - - By combining this with the RemoveUnpackedFilesAfterExecute - flag, you can create an SFX that extracts itself, runs a file that - was extracted, then deletes all the files that were extracted. If - you want it to run "invisibly" then set Flavor to - SelfExtractorFlavor.ConsoleApplication, and set Quiet - to true. The user running such an EXE will see a console window - appear, then disappear quickly. You may also want to specify the - default extract location, with DefaultExtractDirectory. - - - - If you set Flavor to - SelfExtractorFlavor.WinFormsApplication, and set Quiet to - true, then a GUI with progressbars is displayed, but it is - "non-interactive" - it accepts no input from the user. Instead the SFX - just automatically unpacks and exits. - - - - - - - The default extract directory the user will see when - running the self-extracting archive. - - - - - Passing null (or Nothing in VB) here will cause the Self Extractor to use - the the user's personal directory () for the default extract - location. - - - - This is only a default location. The actual extract location will be - settable on the command line when the SFX is executed. - - - - You can specify environment variables within this string, - with %NAME%. The value of these variables will be - expanded at the time the SFX is run. Example: - %USERPROFILE%\Documents\unpack may expand at runtime to - c:\users\melvin\Documents\unpack. - - - - - - The name of an .ico file in the filesystem to use for the application icon - for the generated SFX. - - - - - Normally, DotNetZip will embed an "zipped folder" icon into the generated - SFX. If you prefer to use a different icon, you can specify it here. It - should be a .ico file. This file is passed as the /win32icon - option to the csc.exe compiler when constructing the SFX file. - - - - - - - Whether the ConsoleApplication SFX will be quiet during extraction. - - - - - This option affects the way the generated SFX runs. By default it is - false. When you set it to true,... - - - - - Flavor - Behavior - - - - ConsoleApplication - no messages will be emitted during successful - operation. Double-clicking the SFX in Windows - Explorer or as an attachment in an email will cause a console - window to appear briefly, before it disappears. If you run the - ConsoleApplication SFX from the cmd.exe prompt, it runs as a - normal console app; by default, because it is quiet, it displays - no messages to the console. If you pass the -v+ command line - argument to the Console SFX when you run it, you will get verbose - messages to the console. - - - - - WinFormsApplication - the SFX extracts automatically when the application - is launched, with no additional user input. - - - - - - - When you set it to false,... - - - - - Flavor - Behavior - - - - ConsoleApplication - the extractor will emit a - message to the console for each entry extracted. - - When double-clicking to launch the SFX, the console window will - remain, and the SFX will emit a message for each file as it - extracts. The messages fly by quickly, they won't be easily - readable, unless the extracted files are fairly large. - - - - - - WinFormsApplication - the SFX presents a forms UI and allows the user to select - options before extracting. - - - - - - - - - - Specify what the self-extractor will do when extracting an entry - would overwrite an existing file. - - - - The default behavvior is to Throw. - - - - - - Whether to remove the files that have been unpacked, after executing the - PostExtractCommandLine. - - - - - If true, and if there is a - PostExtractCommandLine, and if the command runs successfully, - then the files that the SFX unpacked will be removed, afterwards. If - the command does not complete successfully (non-zero return code), - that is interpreted as a failure, and the extracted files will not be - removed. - - - - Setting this flag, and setting Flavor to - SelfExtractorFlavor.ConsoleApplication, and setting Quiet to - true, results in an SFX that extracts itself, runs a file that was - extracted, then deletes all the files that were extracted, with no - intervention by the user. You may also want to specify the default - extract location, with DefaultExtractDirectory. - - - - - - - The file version number to embed into the generated EXE. It will show up, for - example, during a mouseover in Windows Explorer. - - - - - - The product version to embed into the generated EXE. It will show up, for - example, during a mouseover in Windows Explorer. - - - - You can use any arbitrary string, but a human-readable version number is - recommended. For example "v1.2 alpha" or "v4.2 RC2". If you specify nothing, - then there is no product version embedded into the EXE. - - - - - - The copyright notice, if any, to embed into the generated EXE. - - - - It will show up, for example, while viewing properties of the file in - Windows Explorer. You can use any arbitrary string, but typically you - want something like "Copyright © Dino Chiesa 2011". - - - - - - The description to embed into the generated EXE. - - - - Use any arbitrary string. This text will be displayed during a - mouseover in Windows Explorer. If you specify nothing, then the string - "DotNetZip SFX Archive" is embedded into the EXE as the description. - - - - - - The product name to embed into the generated EXE. - - - - Use any arbitrary string. This text will be displayed - while viewing properties of the EXE file in - Windows Explorer. - - - - - - The title to display in the Window of a GUI SFX, while it extracts. - - - - - By default the title show in the GUI window of a self-extractor - is "DotNetZip Self-extractor (http://DotNetZip.codeplex.com/)". - You can change that by setting this property before saving the SFX. - - - - This property has an effect only when producing a Self-extractor - of flavor SelfExtractorFlavor.WinFormsApplication. - - - - - - - Additional options for the csc.exe compiler, when producing the SFX - EXE. - - - - - - Reset the BitWriter. - - - - This is useful when the BitWriter writes into a MemoryStream, and - is used by a BZip2Compressor, which itself is re-used for multiple - distinct data blocks. - - - - - - Write some number of bits from the given value, into the output. - - - - The nbits value should be a max of 25, for safety. For performance - reasons, this method does not check! - - - - - - Write a full 8-bit byte into the output. - - - - - Write four 8-bit bytes into the output. - - - - - Write all available byte-aligned bytes. - - - - This method writes no new output, but flushes any accumulated - bits. At completion, the accumulator may contain up to 7 - bits. - - - This is necessary when re-assembling output from N independent - compressors, one for each of N blocks. The output of any - particular compressor will in general have some fragment of a byte - remaining. This fragment needs to be accumulated into the - parent BZip2OutputStream. - - - - - - Writes all available bytes, and emits padding for the final byte as - necessary. This must be the last method invoked on an instance of - BitWriter. - - - - - Delivers the remaining bits, left-aligned, in a byte. - - - - This is valid only if NumRemainingBits is less than 8; - in other words it is valid only after a call to Flush(). - - - - - Knuth's increments seem to work better than Incerpi-Sedgewick here. - Possibly because the number of elems to sort is usually small, typically - <= 20. - - - - BZip2Compressor writes its compressed data out via a BitWriter. This - is necessary because BZip2 does byte shredding. - - - - - Accept new bytes into the compressor data buffer - - - - This method does the first-level (cheap) run-length encoding, and - stores the encoded data into the rle block. - - - - - - Process one input byte into the block. - - - - - To "process" the byte means to do the run-length encoding. - There are 3 possible return values: - - 0 - the byte was not written, in other words, not - encoded into the block. This happens when the - byte b would require the start of a new run, and - the block has no more room for new runs. - - 1 - the byte was written, and the block is not full. - - 2 - the byte was written, and the block is full. - - - - 0 if the byte was not written, non-zero if written. - - - - Append one run to the output block. - - - - - This compressor does run-length-encoding before BWT and etc. This - method simply appends a run to the output block. The append always - succeeds. The return value indicates whether the block is full: - false (not full) implies that at least one additional run could be - processed. - - - true if the block is now full; otherwise false. - - - - Compress the data that has been placed (Run-length-encoded) into the - block. The compressed data goes into the CompressedBytes array. - - - - Side effects: 1. fills the CompressedBytes array. 2. sets the - AvailableBytesOut property. - - - - - This is the most hammered method of this class. - -

- This is the version using unrolled loops. -

-
- - Method "mainQSort3", file "blocksort.c", BZip2 1.0.2 - - - - The number of uncompressed bytes being held in the buffer. - - - - I am thinking this may be useful in a Stream that uses this - compressor class. In the Close() method on the stream it could - check this value to see if anything has been written at all. You - may think the stream could easily track the number of bytes it - wrote, which would eliminate the need for this. But, there is the - case where the stream writes a complete block, and it is full, and - then writes no more. In that case the stream may want to check. - - - - - Array instance identical to sfmap, both are used only - temporarily and independently, so we do not need to allocate - additional memory. - - - - A read-only decorator stream that performs BZip2 decompression on Read. - - - - - Create a BZip2InputStream, wrapping it around the given input Stream. - - - - The input stream will be closed when the BZip2InputStream is closed. - - - The stream from which to read compressed data - - - - Create a BZip2InputStream with the given stream, and - specifying whether to leave the wrapped stream open when - the BZip2InputStream is closed. - - The stream from which to read compressed data - - Whether to leave the input stream open, when the BZip2InputStream closes. - - - - - This example reads a bzip2-compressed file, decompresses it, - and writes the decompressed data into a newly created file. - - - var fname = "logfile.log.bz2"; - using (var fs = File.OpenRead(fname)) - { - using (var decompressor = new Ionic.BZip2.BZip2InputStream(fs)) - { - var outFname = fname + ".decompressed"; - using (var output = File.Create(outFname)) - { - byte[] buffer = new byte[2048]; - int n; - while ((n = decompressor.Read(buffer, 0, buffer.Length)) > 0) - { - output.Write(buffer, 0, n); - } - } - } - } - - - - - - Read data from the stream. - - - - - To decompress a BZip2 data stream, create a BZip2InputStream, - providing a stream that reads compressed data. Then call Read() on - that BZip2InputStream, and the data read will be decompressed - as you read. - - - - A BZip2InputStream can be used only for Read(), not for Write(). - - - - The buffer into which the read data should be placed. - the offset within that data array to put the first byte read. - the number of bytes to read. - the number of bytes actually read - - - - Read a single byte from the stream. - - the byte read from the stream, or -1 if EOF - - - - Flush the stream. - - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - this is irrelevant, since it will always throw! - irrelevant! - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - - - - Calling this method always throws a . - - this parameter is never used - this parameter is never used - this parameter is never used - - - - Dispose the stream. - - - indicates whether the Dispose method was invoked by user code. - - - - - Close the stream. - - - - - Read n bits from input, right justifying the result. - - - - For example, if you read 1 bit, the result is either 0 - or 1. - - - - The number of bits to read, always between 1 and 32. - - - - Called by createHuffmanDecodingTables() exclusively. - - - Called by recvDecodingTables() exclusively. - - - - Indicates whether the stream can be read. - - - The return value depends on whether the captive stream supports reading. - - - - - Indicates whether the stream supports Seek operations. - - - Always returns false. - - - - - Indicates whether the stream can be written. - - - The return value depends on whether the captive stream supports writing. - - - - - Reading this property always throws a . - - - - - The position of the stream pointer. - - - - Setting this property always throws a . Reading will return the - total number of uncompressed bytes read in. - - - - - Compressor State - - - - Freq table collected to save a pass over the data during - decompression. - - - Initializes the tt array. - - This method is called when the required length of the array is known. - I don't initialize it at construction time to avoid unneccessary - memory allocation when compressing small files. - - - - A write-only decorator stream that compresses data as it is - written using the BZip2 algorithm. - - - - - Constructs a new BZip2OutputStream, that sends its - compressed output to the given output stream. - - - - The destination stream, to which compressed output will be sent. - - - - - This example reads a file, then compresses it with bzip2 file, - and writes the compressed data into a newly created file. - - - var fname = "logfile.log"; - using (var fs = File.OpenRead(fname)) - { - var outFname = fname + ".bz2"; - using (var output = File.Create(outFname)) - { - using (var compressor = new Ionic.BZip2.BZip2OutputStream(output)) - { - byte[] buffer = new byte[2048]; - int n; - while ((n = fs.Read(buffer, 0, buffer.Length)) > 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - - - - Constructs a new BZip2OutputStream with specified blocksize. - - the destination stream. - - The blockSize in units of 100000 bytes. - The valid range is 1..9. - - - - - Constructs a new BZip2OutputStream. - - the destination stream. - - whether to leave the captive stream open upon closing this stream. - - - - - Constructs a new BZip2OutputStream with specified blocksize, - and explicitly specifies whether to leave the wrapped stream open. - - - the destination stream. - - The blockSize in units of 100000 bytes. - The valid range is 1..9. - - - whether to leave the captive stream open upon closing this stream. - - - - - Close the stream. - - - - This may or may not close the underlying stream. Check the - constructors that accept a bool value. - - - - - - Flush the stream. - - - - - Write data to the stream. - - - - - Use the BZip2OutputStream to compress data while writing: - create a BZip2OutputStream with a writable output stream. - Then call Write() on that BZip2OutputStream, providing - uncompressed data as input. The data sent to the output stream will - be the compressed form of the input data. - - - - A BZip2OutputStream can be used only for Write() not for Read(). - - - - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - this is irrelevant, since it will always throw! - irrelevant! - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - - - - Calling this method always throws a . - - this parameter is never used - this parameter is never used - this parameter is never used - never returns anything; always throws - - - - The blocksize parameter specified at construction time. - - - - - Indicates whether the stream can be read. - - - The return value is always false. - - - - - Indicates whether the stream supports Seek operations. - - - Always returns false. - - - - - Indicates whether the stream can be written. - - - The return value should always be true, unless and until the - object is disposed and closed. - - - - - Reading this property always throws a . - - - - - The position of the stream pointer. - - - - Setting this property always throws a . Reading will return the - total number of uncompressed bytes written through. - - - - - A write-only decorator stream that compresses data as it is - written using the BZip2 algorithm. This stream compresses by - block using multiple threads. - - - This class performs BZIP2 compression through writing. For - more information on the BZIP2 algorithm, see - . - - - - This class is similar to , - except that this implementation uses an approach that employs multiple - worker threads to perform the compression. On a multi-cpu or multi-core - computer, the performance of this class can be significantly higher than - the single-threaded BZip2OutputStream, particularly for larger streams. - How large? Anything over 10mb is a good candidate for parallel - compression. - - - - The tradeoff is that this class uses more memory and more CPU than the - vanilla BZip2OutputStream. Also, for small files, the - ParallelBZip2OutputStream can be much slower than the vanilla - BZip2OutputStream, because of the overhead associated to using the - thread pool. - - - - - - - Constructs a new ParallelBZip2OutputStream, that sends its - compressed output to the given output stream. - - - - The destination stream, to which compressed output will be sent. - - - - - This example reads a file, then compresses it with bzip2 file, - and writes the compressed data into a newly created file. - - - var fname = "logfile.log"; - using (var fs = File.OpenRead(fname)) - { - var outFname = fname + ".bz2"; - using (var output = File.Create(outFname)) - { - using (var compressor = new Ionic.BZip2.ParallelBZip2OutputStream(output)) - { - byte[] buffer = new byte[2048]; - int n; - while ((n = fs.Read(buffer, 0, buffer.Length)) > 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - - - - Constructs a new ParallelBZip2OutputStream with specified blocksize. - - the destination stream. - - The blockSize in units of 100000 bytes. - The valid range is 1..9. - - - - - Constructs a new ParallelBZip2OutputStream. - - the destination stream. - - whether to leave the captive stream open upon closing this stream. - - - - - Constructs a new ParallelBZip2OutputStream with specified blocksize, - and explicitly specifies whether to leave the wrapped stream open. - - - the destination stream. - - The blockSize in units of 100000 bytes. - The valid range is 1..9. - - - whether to leave the captive stream open upon closing this stream. - - - - - Close the stream. - - - - This may or may not close the underlying stream. Check the - constructors that accept a bool value. - - - - - - Flush the stream. - - - - - Write data to the stream. - - - - - Use the ParallelBZip2OutputStream to compress data while - writing: create a ParallelBZip2OutputStream with a writable - output stream. Then call Write() on that - ParallelBZip2OutputStream, providing uncompressed data as - input. The data sent to the output stream will be the compressed - form of the input data. - - - - A ParallelBZip2OutputStream can be used only for - Write() not for Read(). - - - - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - this is irrelevant, since it will always throw! - irrelevant! - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - - - - Calling this method always throws a . - - this parameter is never used - this parameter is never used - this parameter is never used - never returns anything; always throws - - - - The maximum number of concurrent compression worker threads to use. - - - - - This property sets an upper limit on the number of concurrent worker - threads to employ for compression. The implementation of this stream - employs multiple threads from the .NET thread pool, via - ThreadPool.QueueUserWorkItem(), to compress the incoming data by - block. As each block of data is compressed, this stream re-orders the - compressed blocks and writes them to the output stream. - - - - A higher number of workers enables a higher degree of - parallelism, which tends to increase the speed of compression on - multi-cpu computers. On the other hand, a higher number of buffer - pairs also implies a larger memory consumption, more active worker - threads, and a higher cpu utilization for any compression. This - property enables the application to limit its memory consumption and - CPU utilization behavior depending on requirements. - - - - By default, DotNetZip allocates 4 workers per CPU core, subject to the - upper limit specified in this property. For example, suppose the - application sets this property to 16. Then, on a machine with 2 - cores, DotNetZip will use 8 workers; that number does not exceed the - upper limit specified by this property, so the actual number of - workers used will be 4 * 2 = 8. On a machine with 4 cores, DotNetZip - will use 16 workers; again, the limit does not apply. On a machine - with 8 cores, DotNetZip will use 16 workers, because of the limit. - - - - For each compression "worker thread" that occurs in parallel, there is - up to 2mb of memory allocated, for buffering and processing. The - actual number depends on the property. - - - - CPU utilization will also go up with additional workers, because a - larger number of buffer pairs allows a larger number of background - threads to compress in parallel. If you find that parallel - compression is consuming too much memory or CPU, you can adjust this - value downward. - - - - The default value is 16. Different values may deliver better or - worse results, depending on your priorities and the dynamic - performance characteristics of your storage and compute resources. - - - - The application can set this value at any time, but it is effective - only before the first call to Write(), which is when the buffers are - allocated. - - - - - - The blocksize parameter specified at construction time. - - - - - Indicates whether the stream can be read. - - - The return value is always false. - - - - - Indicates whether the stream supports Seek operations. - - - Always returns false. - - - - - Indicates whether the stream can be written. - - - The return value depends on whether the captive stream supports writing. - - - - - Reading this property always throws a . - - - - - The position of the stream pointer. - - - - Setting this property always throws a . Reading will return the - total number of uncompressed bytes written through. - - - - - The total number of bytes written out by the stream. - - - This value is meaningful only after a call to Close(). - - - - - Returns the "random" number at a specific index. - - the index - the random number - - - - A class for compressing and decompressing streams using the Deflate algorithm. - - - - - - The DeflateStream is a Decorator on a . It adds DEFLATE compression or decompression to any - stream. - - - - Using this stream, applications can compress or decompress data via stream - Read and Write operations. Either compresssion or decompression - can occur through either reading or writing. The compression format used is - DEFLATE, which is documented in IETF RFC 1951, "DEFLATE - Compressed Data Format Specification version 1.3.". - - - - This class is similar to , except that - ZlibStream adds the RFC - 1950 - ZLIB framing bytes to a compressed stream when compressing, or - expects the RFC1950 framing bytes when decompressing. The DeflateStream - does not. - - - - - - - - - - Create a DeflateStream using the specified CompressionMode. - - - - When mode is CompressionMode.Compress, the DeflateStream will use - the default compression level. The "captive" stream will be closed when - the DeflateStream is closed. - - - - This example uses a DeflateStream to compress data from a file, and writes - the compressed data to another file. - - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) - { - using (Stream compressor = new DeflateStream(raw, CompressionMode.Compress)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n; - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(fileToCompress & ".deflated") - Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - The stream which will be read or written. - Indicates whether the DeflateStream will compress or decompress. - - - - Create a DeflateStream using the specified CompressionMode and the specified CompressionLevel. - - - - - - When mode is CompressionMode.Decompress, the level parameter is - ignored. The "captive" stream will be closed when the DeflateStream is - closed. - - - - - - - This example uses a DeflateStream to compress data from a file, and writes - the compressed data to another file. - - - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) - { - using (Stream compressor = new DeflateStream(raw, - CompressionMode.Compress, - CompressionLevel.BestCompression)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n= -1; - while (n != 0) - { - if (n > 0) - compressor.Write(buffer, 0, n); - n= input.Read(buffer, 0, buffer.Length); - } - } - } - } - - - - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(fileToCompress & ".deflated") - Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - The stream to be read or written while deflating or inflating. - Indicates whether the DeflateStream will compress or decompress. - A tuning knob to trade speed for effectiveness. - - - - Create a DeflateStream using the specified - CompressionMode, and explicitly specify whether the - stream should be left open after Deflation or Inflation. - - - - - - This constructor allows the application to request that the captive stream - remain open after the deflation or inflation occurs. By default, after - Close() is called on the stream, the captive stream is also - closed. In some cases this is not desired, for example if the stream is a - memory stream that will be re-read after compression. Specify true for - the parameter to leave the stream open. - - - - The DeflateStream will use the default compression level. - - - - See the other overloads of this constructor for example code. - - - - - The stream which will be read or written. This is called the - "captive" stream in other places in this documentation. - - - - Indicates whether the DeflateStream will compress or decompress. - - - true if the application would like the stream to - remain open after inflation/deflation. - - - - Create a DeflateStream using the specified CompressionMode - and the specified CompressionLevel, and explicitly specify whether - the stream should be left open after Deflation or Inflation. - - - - - - When mode is CompressionMode.Decompress, the level parameter is ignored. - - - - This constructor allows the application to request that the captive stream - remain open after the deflation or inflation occurs. By default, after - Close() is called on the stream, the captive stream is also - closed. In some cases this is not desired, for example if the stream is a - that will be re-read after - compression. Specify true for the parameter - to leave the stream open. - - - - - - - This example shows how to use a DeflateStream to compress data from - a file, and store the compressed data into another file. - - - using (var output = System.IO.File.Create(fileToCompress + ".deflated")) - { - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (Stream compressor = new DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n= -1; - while (n != 0) - { - if (n > 0) - compressor.Write(buffer, 0, n); - n= input.Read(buffer, 0, buffer.Length); - } - } - } - // can write additional data to the output stream here - } - - - - Using output As FileStream = File.Create(fileToCompress & ".deflated") - Using input As Stream = File.OpenRead(fileToCompress) - Using compressor As Stream = New DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - ' can write additional data to the output stream here. - End Using - - - The stream which will be read or written. - Indicates whether the DeflateStream will compress or decompress. - true if the application would like the stream to remain open after inflation/deflation. - A tuning knob to trade speed for effectiveness. - - - - Dispose the stream. - - - - This may or may not result in a Close() call on the captive - stream. See the constructors that have a leaveOpen parameter - for more information. - - - Application code won't call this code directly. This method may be - invoked in two distinct scenarios. If disposing == true, the method - has been called directly or indirectly by a user's code, for example - via the public Dispose() method. In this case, both managed and - unmanaged resources can be referenced and disposed. If disposing == - false, the method has been called by the runtime from inside the - object finalizer and this method should not reference other objects; - in that case only unmanaged resources must be referenced or - disposed. - - - - true if the Dispose method was invoked by user code. - - - - - Flush the stream. - - - - - Read data from the stream. - - - - - If you wish to use the DeflateStream to compress data while - reading, you can create a DeflateStream with - CompressionMode.Compress, providing an uncompressed data stream. - Then call Read() on that DeflateStream, and the data read will be - compressed as you read. If you wish to use the DeflateStream to - decompress data while reading, you can create a DeflateStream with - CompressionMode.Decompress, providing a readable compressed data - stream. Then call Read() on that DeflateStream, and the data read - will be decompressed as you read. - - - - A DeflateStream can be used for Read() or Write(), but not both. - - - - The buffer into which the read data should be placed. - the offset within that data array to put the first byte read. - the number of bytes to read. - the number of bytes actually read - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - this is irrelevant, since it will always throw! - irrelevant! - - - - Calling this method always throws a . - - this is irrelevant, since it will always throw! - - - - Write data to the stream. - - - - - If you wish to use the DeflateStream to compress data while - writing, you can create a DeflateStream with - CompressionMode.Compress, and a writable output stream. Then call - Write() on that DeflateStream, providing uncompressed data - as input. The data sent to the output stream will be the compressed form - of the data written. If you wish to use the DeflateStream to - decompress data while writing, you can create a DeflateStream with - CompressionMode.Decompress, and a writable output stream. Then - call Write() on that stream, providing previously compressed - data. The data sent to the output stream will be the decompressed form of - the data written. - - - - A DeflateStream can be used for Read() or Write(), - but not both. - - - - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Compress a string into a byte array using DEFLATE (RFC 1951). - - - - Uncompress it with . - - - DeflateStream.UncompressString(byte[]) - DeflateStream.CompressBuffer(byte[]) - GZipStream.CompressString(string) - ZlibStream.CompressString(string) - - - A string to compress. The string will first be encoded - using UTF8, then compressed. - - - The string in compressed form - - - - Compress a byte array into a new byte array using DEFLATE. - - - - Uncompress it with . - - - DeflateStream.CompressString(string) - DeflateStream.UncompressBuffer(byte[]) - GZipStream.CompressBuffer(byte[]) - ZlibStream.CompressBuffer(byte[]) - - - A buffer to compress. - - - The data in compressed form - - - - Uncompress a DEFLATE'd byte array into a single string. - - - DeflateStream.CompressString(String) - DeflateStream.UncompressBuffer(byte[]) - GZipStream.UncompressString(byte[]) - ZlibStream.UncompressString(byte[]) - - - A buffer containing DEFLATE-compressed data. - - - The uncompressed string - - - - Uncompress a DEFLATE'd byte array into a byte array. - - - DeflateStream.CompressBuffer(byte[]) - DeflateStream.UncompressString(byte[]) - GZipStream.UncompressBuffer(byte[]) - ZlibStream.UncompressBuffer(byte[]) - - - A buffer containing data that has been compressed with DEFLATE. - - - The data in uncompressed form - - - - This property sets the flush behavior on the stream. - - See the ZLIB documentation for the meaning of the flush behavior. - - - - - The size of the working buffer for the compression codec. - - - - - The working buffer is used for all stream operations. The default size is - 1024 bytes. The minimum size is 128 bytes. You may get better performance - with a larger buffer. Then again, you might not. You would have to test - it. - - - - Set this before the first call to Read() or Write() on the - stream. If you try to set it afterwards, it will throw. - - - - - - The ZLIB strategy to be used during compression. - - - - By tweaking this parameter, you may be able to optimize the compression for - data with particular characteristics. - - - - Returns the total number of bytes input so far. - - - Returns the total number of bytes output so far. - - - - Indicates whether the stream can be read. - - - The return value depends on whether the captive stream supports reading. - - - - - Indicates whether the stream supports Seek operations. - - - Always returns false. - - - - - Indicates whether the stream can be written. - - - The return value depends on whether the captive stream supports writing. - - - - - Reading this property always throws a . - - - - - The position of the stream pointer. - - - - Setting this property always throws a . Reading will return the total bytes - written out, if used in writing, or the total bytes read in, if used in - reading. The count may refer to compressed bytes or uncompressed bytes, - depending on how you've used the stream. - - - - - A class for compressing and decompressing GZIP streams. - - - - - The GZipStream is a Decorator on a - . It adds GZIP compression or decompression to any - stream. - - - - Like the System.IO.Compression.GZipStream in the .NET Base Class Library, the - Ionic.Zlib.GZipStream can compress while writing, or decompress while - reading, but not vice versa. The compression method used is GZIP, which is - documented in IETF RFC - 1952, "GZIP file format specification version 4.3". - - - A GZipStream can be used to decompress data (through Read()) or - to compress data (through Write()), but not both. - - - - If you wish to use the GZipStream to compress data, you must wrap it - around a write-able stream. As you call Write() on the GZipStream, the - data will be compressed into the GZIP format. If you want to decompress data, - you must wrap the GZipStream around a readable stream that contains an - IETF RFC 1952-compliant stream. The data will be decompressed as you call - Read() on the GZipStream. - - - - Though the GZIP format allows data from multiple files to be concatenated - together, this stream handles only a single segment of GZIP format, typically - representing a single file. - - - - This class is similar to and . - ZlibStream handles RFC1950-compliant streams. - handles RFC1951-compliant streams. This class handles RFC1952-compliant streams. - - - - - - - - - - The last modified time for the GZIP stream. - - - - GZIP allows the storage of a last modified time with each GZIP entry. - When compressing data, you can set this before the first call to - Write(). When decompressing, you can retrieve this value any time - after the first call to Read(). - - - - - Create a GZipStream using the specified CompressionMode. - - - - - When mode is CompressionMode.Compress, the GZipStream will use the - default compression level. - - - - As noted in the class documentation, the CompressionMode (Compress - or Decompress) also establishes the "direction" of the stream. A - GZipStream with CompressionMode.Compress works only through - Write(). A GZipStream with - CompressionMode.Decompress works only through Read(). - - - - - - This example shows how to use a GZipStream to compress data. - - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(outputFile)) - { - using (Stream compressor = new GZipStream(raw, CompressionMode.Compress)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n; - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - Dim outputFile As String = (fileToCompress & ".compressed") - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(outputFile) - Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - - - This example shows how to use a GZipStream to uncompress a file. - - private void GunZipFile(string filename) - { - if (!filename.EndsWith(".gz)) - throw new ArgumentException("filename"); - var DecompressedFile = filename.Substring(0,filename.Length-3); - byte[] working = new byte[WORKING_BUFFER_SIZE]; - int n= 1; - using (System.IO.Stream input = System.IO.File.OpenRead(filename)) - { - using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) - { - using (var output = System.IO.File.Create(DecompressedFile)) - { - while (n !=0) - { - n= decompressor.Read(working, 0, working.Length); - if (n > 0) - { - output.Write(working, 0, n); - } - } - } - } - } - } - - - - Private Sub GunZipFile(ByVal filename as String) - If Not (filename.EndsWith(".gz)) Then - Throw New ArgumentException("filename") - End If - Dim DecompressedFile as String = filename.Substring(0,filename.Length-3) - Dim working(WORKING_BUFFER_SIZE) as Byte - Dim n As Integer = 1 - Using input As Stream = File.OpenRead(filename) - Using decompressor As Stream = new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, True) - Using output As Stream = File.Create(UncompressedFile) - Do - n= decompressor.Read(working, 0, working.Length) - If n > 0 Then - output.Write(working, 0, n) - End IF - Loop While (n > 0) - End Using - End Using - End Using - End Sub - - - - The stream which will be read or written. - Indicates whether the GZipStream will compress or decompress. - - - - Create a GZipStream using the specified CompressionMode and - the specified CompressionLevel. - - - - - The CompressionMode (Compress or Decompress) also establishes the - "direction" of the stream. A GZipStream with - CompressionMode.Compress works only through Write(). A - GZipStream with CompressionMode.Decompress works only - through Read(). - - - - - - - This example shows how to use a GZipStream to compress a file into a .gz file. - - - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(fileToCompress + ".gz")) - { - using (Stream compressor = new GZipStream(raw, - CompressionMode.Compress, - CompressionLevel.BestCompression)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n; - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(fileToCompress & ".gz") - Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - The stream to be read or written while deflating or inflating. - Indicates whether the GZipStream will compress or decompress. - A tuning knob to trade speed for effectiveness. - - - - Create a GZipStream using the specified CompressionMode, and - explicitly specify whether the stream should be left open after Deflation - or Inflation. - - - - - This constructor allows the application to request that the captive stream - remain open after the deflation or inflation occurs. By default, after - Close() is called on the stream, the captive stream is also - closed. In some cases this is not desired, for example if the stream is a - memory stream that will be re-read after compressed data has been written - to it. Specify true for the parameter to leave - the stream open. - - - - The (Compress or Decompress) also - establishes the "direction" of the stream. A GZipStream with - CompressionMode.Compress works only through Write(). A GZipStream - with CompressionMode.Decompress works only through Read(). - - - - The GZipStream will use the default compression level. If you want - to specify the compression level, see . - - - - See the other overloads of this constructor for example code. - - - - - - The stream which will be read or written. This is called the "captive" - stream in other places in this documentation. - - - Indicates whether the GZipStream will compress or decompress. - - - - true if the application would like the base stream to remain open after - inflation/deflation. - - - - - Create a GZipStream using the specified CompressionMode and the - specified CompressionLevel, and explicitly specify whether the - stream should be left open after Deflation or Inflation. - - - - - - This constructor allows the application to request that the captive stream - remain open after the deflation or inflation occurs. By default, after - Close() is called on the stream, the captive stream is also - closed. In some cases this is not desired, for example if the stream is a - memory stream that will be re-read after compressed data has been written - to it. Specify true for the parameter to - leave the stream open. - - - - As noted in the class documentation, the CompressionMode (Compress - or Decompress) also establishes the "direction" of the stream. A - GZipStream with CompressionMode.Compress works only through - Write(). A GZipStream with CompressionMode.Decompress works only - through Read(). - - - - - - This example shows how to use a GZipStream to compress data. - - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(outputFile)) - { - using (Stream compressor = new GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, true)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n; - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - Dim outputFile As String = (fileToCompress & ".compressed") - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(outputFile) - Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, True) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - The stream which will be read or written. - Indicates whether the GZipStream will compress or decompress. - true if the application would like the stream to remain open after inflation/deflation. - A tuning knob to trade speed for effectiveness. - - - - Dispose the stream. - - - - This may or may not result in a Close() call on the captive - stream. See the constructors that have a leaveOpen parameter - for more information. - - - This method may be invoked in two distinct scenarios. If disposing - == true, the method has been called directly or indirectly by a - user's code, for example via the public Dispose() method. In this - case, both managed and unmanaged resources can be referenced and - disposed. If disposing == false, the method has been called by the - runtime from inside the object finalizer and this method should not - reference other objects; in that case only unmanaged resources must - be referenced or disposed. - - - - indicates whether the Dispose method was invoked by user code. - - - - - Flush the stream. - - - - - Read and decompress data from the source stream. - - - - With a GZipStream, decompression is done through reading. - - - - - byte[] working = new byte[WORKING_BUFFER_SIZE]; - using (System.IO.Stream input = System.IO.File.OpenRead(_CompressedFile)) - { - using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) - { - using (var output = System.IO.File.Create(_DecompressedFile)) - { - int n; - while ((n= decompressor.Read(working, 0, working.Length)) !=0) - { - output.Write(working, 0, n); - } - } - } - } - - - The buffer into which the decompressed data should be placed. - the offset within that data array to put the first byte read. - the number of bytes to read. - the number of bytes actually read - - - - Calling this method always throws a . - - irrelevant; it will always throw! - irrelevant; it will always throw! - irrelevant! - - - - Calling this method always throws a . - - irrelevant; this method will always throw! - - - - Write data to the stream. - - - - - If you wish to use the GZipStream to compress data while writing, - you can create a GZipStream with CompressionMode.Compress, and a - writable output stream. Then call Write() on that GZipStream, - providing uncompressed data as input. The data sent to the output stream - will be the compressed form of the data written. - - - - A GZipStream can be used for Read() or Write(), but not - both. Writing implies compression. Reading implies decompression. - - - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Compress a string into a byte array using GZip. - - - - Uncompress it with . - - - - - - - A string to compress. The string will first be encoded - using UTF8, then compressed. - - - The string in compressed form - - - - Compress a byte array into a new byte array using GZip. - - - - Uncompress it with . - - - - - - - A buffer to compress. - - - The data in compressed form - - - - Uncompress a GZip'ed byte array into a single string. - - - - - - - A buffer containing GZIP-compressed data. - - - The uncompressed string - - - - Uncompress a GZip'ed byte array into a byte array. - - - - - - - A buffer containing data that has been compressed with GZip. - - - The data in uncompressed form - - - - The comment on the GZIP stream. - - - - - The GZIP format allows for each file to optionally have an associated - comment stored with the file. The comment is encoded with the ISO-8859-1 - code page. To include a comment in a GZIP stream you create, set this - property before calling Write() for the first time on the - GZipStream. - - - - When using GZipStream to decompress, you can retrieve this property - after the first call to Read(). If no comment has been set in the - GZIP bytestream, the Comment property will return null - (Nothing in VB). - - - - - - The FileName for the GZIP stream. - - - - - - The GZIP format optionally allows each file to have an associated - filename. When compressing data (through Write()), set this - FileName before calling Write() the first time on the GZipStream. - The actual filename is encoded into the GZIP bytestream with the - ISO-8859-1 code page, according to RFC 1952. It is the application's - responsibility to insure that the FileName can be encoded and decoded - correctly with this code page. - - - - When decompressing (through Read()), you can retrieve this value - any time after the first Read(). In the case where there was no filename - encoded into the GZIP bytestream, the property will return null (Nothing - in VB). - - - - - - The CRC on the GZIP stream. - - - This is used for internal error checking. You probably don't need to look at this property. - - - - - This property sets the flush behavior on the stream. - - - - - The size of the working buffer for the compression codec. - - - - - The working buffer is used for all stream operations. The default size is - 1024 bytes. The minimum size is 128 bytes. You may get better performance - with a larger buffer. Then again, you might not. You would have to test - it. - - - - Set this before the first call to Read() or Write() on the - stream. If you try to set it afterwards, it will throw. - - - - - Returns the total number of bytes input so far. - - - Returns the total number of bytes output so far. - - - - Indicates whether the stream can be read. - - - The return value depends on whether the captive stream supports reading. - - - - - Indicates whether the stream supports Seek operations. - - - Always returns false. - - - - - Indicates whether the stream can be written. - - - The return value depends on whether the captive stream supports writing. - - - - - Reading this property always throws a . - - - - - The position of the stream pointer. - - - - Setting this property always throws a . Reading will return the total bytes - written out, if used in writing, or the total bytes read in, if used in - reading. The count may refer to compressed bytes or uncompressed bytes, - depending on how you've used the stream. - - - - - A class for compressing streams using the - Deflate algorithm with multiple threads. - - - - - This class performs DEFLATE compression through writing. For - more information on the Deflate algorithm, see IETF RFC 1951, - "DEFLATE Compressed Data Format Specification version 1.3." - - - - This class is similar to , except - that this class is for compression only, and this implementation uses an - approach that employs multiple worker threads to perform the DEFLATE. On - a multi-cpu or multi-core computer, the performance of this class can be - significantly higher than the single-threaded DeflateStream, particularly - for larger streams. How large? Anything over 10mb is a good candidate - for parallel compression. - - - - The tradeoff is that this class uses more memory and more CPU than the - vanilla DeflateStream, and also is less efficient as a compressor. For - large files the size of the compressed data stream can be less than 1% - larger than the size of a compressed data stream from the vanialla - DeflateStream. For smaller files the difference can be larger. The - difference will also be larger if you set the BufferSize to be lower than - the default value. Your mileage may vary. Finally, for small files, the - ParallelDeflateOutputStream can be much slower than the vanilla - DeflateStream, because of the overhead associated to using the thread - pool. - - - - - - - - Create a ParallelDeflateOutputStream. - - - - - This stream compresses data written into it via the DEFLATE - algorithm (see RFC 1951), and writes out the compressed byte stream. - - - - The instance will use the default compression level, the default - buffer sizes and the default number of threads and buffers per - thread. - - - - This class is similar to , - except that this implementation uses an approach that employs - multiple worker threads to perform the DEFLATE. On a multi-cpu or - multi-core computer, the performance of this class can be - significantly higher than the single-threaded DeflateStream, - particularly for larger streams. How large? Anything over 10mb is - a good candidate for parallel compression. - - - - - - - This example shows how to use a ParallelDeflateOutputStream to compress - data. It reads a file, compresses it, and writes the compressed data to - a second, output file. - - - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n= -1; - String outputFile = fileToCompress + ".compressed"; - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(outputFile)) - { - using (Stream compressor = new ParallelDeflateOutputStream(raw)) - { - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Dim outputFile As String = (fileToCompress & ".compressed") - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(outputFile) - Using compressor As Stream = New ParallelDeflateOutputStream(raw) - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - The stream to which compressed data will be written. - - - - Create a ParallelDeflateOutputStream using the specified CompressionLevel. - - - See the - constructor for example code. - - The stream to which compressed data will be written. - A tuning knob to trade speed for effectiveness. - - - - Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open - when the ParallelDeflateOutputStream is closed. - - - See the - constructor for example code. - - The stream to which compressed data will be written. - - true if the application would like the stream to remain open after inflation/deflation. - - - - - Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open - when the ParallelDeflateOutputStream is closed. - - - See the - constructor for example code. - - The stream to which compressed data will be written. - A tuning knob to trade speed for effectiveness. - - true if the application would like the stream to remain open after inflation/deflation. - - - - - Create a ParallelDeflateOutputStream using the specified - CompressionLevel and CompressionStrategy, and specifying whether to - leave the captive stream open when the ParallelDeflateOutputStream is - closed. - - - See the - constructor for example code. - - The stream to which compressed data will be written. - A tuning knob to trade speed for effectiveness. - - By tweaking this parameter, you may be able to optimize the compression for - data with particular characteristics. - - - true if the application would like the stream to remain open after inflation/deflation. - - - - - Write data to the stream. - - - - - - To use the ParallelDeflateOutputStream to compress data, create a - ParallelDeflateOutputStream with CompressionMode.Compress, passing a - writable output stream. Then call Write() on that - ParallelDeflateOutputStream, providing uncompressed data as input. The - data sent to the output stream will be the compressed form of the data - written. - - - - To decompress data, use the class. - - - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Flush the stream. - - - - - Close the stream. - - - You must call Close on the stream to guarantee that all of the data written in has - been compressed, and the compressed data has been written out. - - - - Dispose the object - - - Because ParallelDeflateOutputStream is IDisposable, the - application must call this method when finished using the instance. - - - This method is generally called implicitly upon exit from - a using scope in C# (Using in VB). - - - - - The Dispose method - - indicates whether the Dispose method was invoked by user code. - - - - - Resets the stream for use with another stream. - - - Because the ParallelDeflateOutputStream is expensive to create, it - has been designed so that it can be recycled and re-used. You have - to call Close() on the stream first, then you can call Reset() on - it, to use it again on another stream. - - - - The new output stream for this era. - - - - - ParallelDeflateOutputStream deflater = null; - foreach (var inputFile in listOfFiles) - { - string outputFile = inputFile + ".compressed"; - using (System.IO.Stream input = System.IO.File.OpenRead(inputFile)) - { - using (var outStream = System.IO.File.Create(outputFile)) - { - if (deflater == null) - deflater = new ParallelDeflateOutputStream(outStream, - CompressionLevel.Best, - CompressionStrategy.Default, - true); - deflater.Reset(outStream); - - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - deflater.Write(buffer, 0, n); - } - } - } - } - - - - - - This method always throws a NotSupportedException. - - - The buffer into which data would be read, IF THIS METHOD - ACTUALLY DID ANYTHING. - - - The offset within that data array at which to insert the - data that is read, IF THIS METHOD ACTUALLY DID - ANYTHING. - - - The number of bytes to write, IF THIS METHOD ACTUALLY DID - ANYTHING. - - nothing. - - - - This method always throws a NotSupportedException. - - - The offset to seek to.... - IF THIS METHOD ACTUALLY DID ANYTHING. - - - The reference specifying how to apply the offset.... IF - THIS METHOD ACTUALLY DID ANYTHING. - - nothing. It always throws. - - - - This method always throws a NotSupportedException. - - - The new value for the stream length.... IF - THIS METHOD ACTUALLY DID ANYTHING. - - - - - The ZLIB strategy to be used during compression. - - - - - - The maximum number of buffer pairs to use. - - - - - This property sets an upper limit on the number of memory buffer - pairs to create. The implementation of this stream allocates - multiple buffers to facilitate parallel compression. As each buffer - fills up, this stream uses - ThreadPool.QueueUserWorkItem() - to compress those buffers in a background threadpool thread. After a - buffer is compressed, it is re-ordered and written to the output - stream. - - - - A higher number of buffer pairs enables a higher degree of - parallelism, which tends to increase the speed of compression on - multi-cpu computers. On the other hand, a higher number of buffer - pairs also implies a larger memory consumption, more active worker - threads, and a higher cpu utilization for any compression. This - property enables the application to limit its memory consumption and - CPU utilization behavior depending on requirements. - - - - For each compression "task" that occurs in parallel, there are 2 - buffers allocated: one for input and one for output. This property - sets a limit for the number of pairs. The total amount of storage - space allocated for buffering will then be (N*S*2), where N is the - number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer - pairs per CPU core, so if your machine has 4 cores, and you retain - the default buffer size of 128k, then the - ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer - memory in total, or 4mb, in blocks of 128kb. If you then set this - property to 8, then the number will be 8 * 2 * 128kb of buffer - memory, or 2mb. - - - - CPU utilization will also go up with additional buffers, because a - larger number of buffer pairs allows a larger number of background - threads to compress in parallel. If you find that parallel - compression is consuming too much memory or CPU, you can adjust this - value downward. - - - - The default value is 16. Different values may deliver better or - worse results, depending on your priorities and the dynamic - performance characteristics of your storage and compute resources. - - - - This property is not the number of buffer pairs to use; it is an - upper limit. An illustration: Suppose you have an application that - uses the default value of this property (which is 16), and it runs - on a machine with 2 CPU cores. In that case, DotNetZip will allocate - 4 buffer pairs per CPU core, for a total of 8 pairs. The upper - limit specified by this property has no effect. - - - - The application can set this value at any time, but it is effective - only before the first call to Write(), which is when the buffers are - allocated. - - - - - - The size of the buffers used by the compressor threads. - - - - - The default buffer size is 128k. The application can set this value - at any time, but it is effective only before the first Write(). - - - - Larger buffer sizes implies larger memory consumption but allows - more efficient compression. Using smaller buffer sizes consumes less - memory but may result in less effective compression. For example, - using the default buffer size of 128k, the compression delivered is - within 1% of the compression delivered by the single-threaded . On the other hand, using a - BufferSize of 8k can result in a compressed data stream that is 5% - larger than that delivered by the single-threaded - DeflateStream. Excessively small buffer sizes can also cause - the speed of the ParallelDeflateOutputStream to drop, because of - larger thread scheduling overhead dealing with many many small - buffers. - - - - The total amount of storage space allocated for buffering will be - (N*S*2), where N is the number of buffer pairs, and S is the size of - each buffer (this property). There are 2 buffers used by the - compressor, one for input and one for output. By default, DotNetZip - allocates 4 buffer pairs per CPU core, so if your machine has 4 - cores, then the number of buffer pairs used will be 16. If you - accept the default value of this property, 128k, then the - ParallelDeflateOutputStream will use 16 * 2 * 128kb of buffer memory - in total, or 4mb, in blocks of 128kb. If you set this property to - 64kb, then the number will be 16 * 2 * 64kb of buffer memory, or - 2mb. - - - - - - - The CRC32 for the data that was written out, prior to compression. - - - This value is meaningful only after a call to Close(). - - - - - The total number of uncompressed bytes processed by the ParallelDeflateOutputStream. - - - This value is meaningful only after a call to Close(). - - - - - Indicates whether the stream supports Seek operations. - - - Always returns false. - - - - - Indicates whether the stream supports Read operations. - - - Always returns false. - - - - - Indicates whether the stream supports Write operations. - - - Returns true if the provided stream is writable. - - - - - Reading this property always throws a NotSupportedException. - - - - - Returns the current position of the output stream. - - - - Because the output gets written by a background thread, - the value may change asynchronously. Setting this - property always throws a NotSupportedException. - - - - - - Map from a distance to a distance code. - - - No side effects. _dist_code[256] and _dist_code[257] are never used. - - - - - Describes how to flush the current deflate operation. - - - The different FlushType values are useful when using a Deflate in a streaming application. - - - - No flush at all. - - - Closes the current block, but doesn't flush it to - the output. Used internally only in hypothetical - scenarios. This was supposed to be removed by Zlib, but it is - still in use in some edge cases. - - - - - Use this during compression to specify that all pending output should be - flushed to the output buffer and the output should be aligned on a byte - boundary. You might use this in a streaming communication scenario, so that - the decompressor can get all input data available so far. When using this - with a ZlibCodec, AvailableBytesIn will be zero after the call if - enough output space has been provided before the call. Flushing will - degrade compression and so it should be used only when necessary. - - - - - Use this during compression to specify that all output should be flushed, as - with FlushType.Sync, but also, the compression state should be reset - so that decompression can restart from this point if previous compressed - data has been damaged or if random access is desired. Using - FlushType.Full too often can significantly degrade the compression. - - - - Signals the end of the compression/decompression stream. - - - - The compression level to be used when using a DeflateStream or ZlibStream with CompressionMode.Compress. - - - - - None means that the data will be simply stored, with no change at all. - If you are producing ZIPs for use on Mac OSX, be aware that archives produced with CompressionLevel.None - cannot be opened with the default zip reader. Use a different CompressionLevel. - - - - - Same as None. - - - - - The fastest but least effective compression. - - - - - A synonym for BestSpeed. - - - - - A little slower, but better, than level 1. - - - - - A little slower, but better, than level 2. - - - - - A little slower, but better, than level 3. - - - - - A little slower than level 4, but with better compression. - - - - - The default compression level, with a good balance of speed and compression efficiency. - - - - - A synonym for Default. - - - - - Pretty good compression! - - - - - Better compression than Level7! - - - - - The "best" compression, where best means greatest reduction in size of the input data stream. - This is also the slowest compression. - - - - - A synonym for BestCompression. - - - - - Describes options for how the compression algorithm is executed. Different strategies - work better on different sorts of data. The strategy parameter can affect the compression - ratio and the speed of compression but not the correctness of the compresssion. - - - - - The default strategy is probably the best for normal data. - - - - - The Filtered strategy is intended to be used most effectively with data produced by a - filter or predictor. By this definition, filtered data consists mostly of small - values with a somewhat random distribution. In this case, the compression algorithm - is tuned to compress them better. The effect of Filtered is to force more Huffman - coding and less string matching; it is a half-step between Default and HuffmanOnly. - - - - - Using HuffmanOnly will force the compressor to do Huffman encoding only, with no - string matching. - - - - - An enum to specify the direction of transcoding - whether to compress or decompress. - - - - - Used to specify that the stream should compress the data. - - - - - Used to specify that the stream should decompress the data. - - - - - A general purpose exception class for exceptions in the Zlib library. - - - - - The ZlibException class captures exception information generated - by the Zlib library. - - - - - This ctor collects a message attached to the exception. - - the message for the exception. - - - - Performs an unsigned bitwise right shift with the specified number - - Number to operate on - Ammount of bits to shift - The resulting number from the shift operation - - - - Reads a number of characters from the current source TextReader and writes - the data to the target array at the specified index. - - - The source TextReader to read from - Contains the array of characteres read from the source TextReader. - The starting index of the target array. - The maximum number of characters to read from the source TextReader. - - - The number of characters read. The number will be less than or equal to - count depending on the data available in the source TextReader. Returns -1 - if the end of the stream is reached. - - - - - Computes an Adler-32 checksum. - - - The Adler checksum is similar to a CRC checksum, but faster to compute, though less - reliable. It is used in producing RFC1950 compressed streams. The Adler checksum - is a required part of the "ZLIB" standard. Applications will almost never need to - use this class directly. - - - - - - - Calculates the Adler32 checksum. - - - - This is used within ZLIB. You probably don't need to use this directly. - - - - To compute an Adler32 checksum on a byte array: - - var adler = Adler.Adler32(0, null, 0, 0); - adler = Adler.Adler32(adler, buffer, index, length); - - - - - - Encoder and Decoder for ZLIB and DEFLATE (IETF RFC1950 and RFC1951). - - - - This class compresses and decompresses data according to the Deflate algorithm - and optionally, the ZLIB format, as documented in RFC 1950 - ZLIB and RFC 1951 - DEFLATE. - - - - - The buffer from which data is taken. - - - - - An index into the InputBuffer array, indicating where to start reading. - - - - - The number of bytes available in the InputBuffer, starting at NextIn. - - - Generally you should set this to InputBuffer.Length before the first Inflate() or Deflate() call. - The class will update this number as calls to Inflate/Deflate are made. - - - - - Total number of bytes read so far, through all calls to Inflate()/Deflate(). - - - - - Buffer to store output data. - - - - - An index into the OutputBuffer array, indicating where to start writing. - - - - - The number of bytes available in the OutputBuffer, starting at NextOut. - - - Generally you should set this to OutputBuffer.Length before the first Inflate() or Deflate() call. - The class will update this number as calls to Inflate/Deflate are made. - - - - - Total number of bytes written to the output so far, through all calls to Inflate()/Deflate(). - - - - - used for diagnostics, when something goes wrong! - - - - - The compression level to use in this codec. Useful only in compression mode. - - - - - The number of Window Bits to use. - - - This gauges the size of the sliding window, and hence the - compression effectiveness as well as memory consumption. It's best to just leave this - setting alone if you don't know what it is. The maximum value is 15 bits, which implies - a 32k window. - - - - - The compression strategy to use. - - - This is only effective in compression. The theory offered by ZLIB is that different - strategies could potentially produce significant differences in compression behavior - for different data sets. Unfortunately I don't have any good recommendations for how - to set it differently. When I tested changing the strategy I got minimally different - compression performance. It's best to leave this property alone if you don't have a - good feel for it. Or, you may want to produce a test harness that runs through the - different strategy options and evaluates them on different file types. If you do that, - let me know your results. - - - - - Create a ZlibCodec. - - - If you use this default constructor, you will later have to explicitly call - InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress - or decompress. - - - - - Create a ZlibCodec that either compresses or decompresses. - - - Indicates whether the codec should compress (deflate) or decompress (inflate). - - - - - Initialize the inflation state. - - - It is not necessary to call this before using the ZlibCodec to inflate data; - It is implicitly called when you call the constructor. - - Z_OK if everything goes well. - - - - Initialize the inflation state with an explicit flag to - govern the handling of RFC1950 header bytes. - - - - By default, the ZLIB header defined in RFC 1950 is expected. If - you want to read a zlib stream you should specify true for - expectRfc1950Header. If you have a deflate stream, you will want to specify - false. It is only necessary to invoke this initializer explicitly if you - want to specify false. - - - whether to expect an RFC1950 header byte - pair when reading the stream of data to be inflated. - - Z_OK if everything goes well. - - - - Initialize the ZlibCodec for inflation, with the specified number of window bits. - - The number of window bits to use. If you need to ask what that is, - then you shouldn't be calling this initializer. - Z_OK if all goes well. - - - - Initialize the inflation state with an explicit flag to govern the handling of - RFC1950 header bytes. - - - - If you want to read a zlib stream you should specify true for - expectRfc1950Header. In this case, the library will expect to find a ZLIB - header, as defined in RFC - 1950, in the compressed stream. If you will be reading a DEFLATE or - GZIP stream, which does not have such a header, you will want to specify - false. - - - whether to expect an RFC1950 header byte pair when reading - the stream of data to be inflated. - The number of window bits to use. If you need to ask what that is, - then you shouldn't be calling this initializer. - Z_OK if everything goes well. - - - - Inflate the data in the InputBuffer, placing the result in the OutputBuffer. - - - You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and - AvailableBytesOut before calling this method. - - - - private void InflateBuffer() - { - int bufferSize = 1024; - byte[] buffer = new byte[bufferSize]; - ZlibCodec decompressor = new ZlibCodec(); - - Console.WriteLine("\n============================================"); - Console.WriteLine("Size of Buffer to Inflate: {0} bytes.", CompressedBytes.Length); - MemoryStream ms = new MemoryStream(DecompressedBytes); - - int rc = decompressor.InitializeInflate(); - - decompressor.InputBuffer = CompressedBytes; - decompressor.NextIn = 0; - decompressor.AvailableBytesIn = CompressedBytes.Length; - - decompressor.OutputBuffer = buffer; - - // pass 1: inflate - do - { - decompressor.NextOut = 0; - decompressor.AvailableBytesOut = buffer.Length; - rc = decompressor.Inflate(FlushType.None); - - if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) - throw new Exception("inflating: " + decompressor.Message); - - ms.Write(decompressor.OutputBuffer, 0, buffer.Length - decompressor.AvailableBytesOut); - } - while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); - - // pass 2: finish and flush - do - { - decompressor.NextOut = 0; - decompressor.AvailableBytesOut = buffer.Length; - rc = decompressor.Inflate(FlushType.Finish); - - if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) - throw new Exception("inflating: " + decompressor.Message); - - if (buffer.Length - decompressor.AvailableBytesOut > 0) - ms.Write(buffer, 0, buffer.Length - decompressor.AvailableBytesOut); - } - while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); - - decompressor.EndInflate(); - } - - - - The flush to use when inflating. - Z_OK if everything goes well. - - - - Ends an inflation session. - - - Call this after successively calling Inflate(). This will cause all buffers to be flushed. - After calling this you cannot call Inflate() without a intervening call to one of the - InitializeInflate() overloads. - - Z_OK if everything goes well. - - - - I don't know what this does! - - Z_OK if everything goes well. - - - - Initialize the ZlibCodec for deflation operation. - - - The codec will use the MAX window bits and the default level of compression. - - - - int bufferSize = 40000; - byte[] CompressedBytes = new byte[bufferSize]; - byte[] DecompressedBytes = new byte[bufferSize]; - - ZlibCodec compressor = new ZlibCodec(); - - compressor.InitializeDeflate(CompressionLevel.Default); - - compressor.InputBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToCompress); - compressor.NextIn = 0; - compressor.AvailableBytesIn = compressor.InputBuffer.Length; - - compressor.OutputBuffer = CompressedBytes; - compressor.NextOut = 0; - compressor.AvailableBytesOut = CompressedBytes.Length; - - while (compressor.TotalBytesIn != TextToCompress.Length && compressor.TotalBytesOut < bufferSize) - { - compressor.Deflate(FlushType.None); - } - - while (true) - { - int rc= compressor.Deflate(FlushType.Finish); - if (rc == ZlibConstants.Z_STREAM_END) break; - } - - compressor.EndDeflate(); - - - - Z_OK if all goes well. You generally don't need to check the return code. - - - - Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel. - - - The codec will use the maximum window bits (15) and the specified - CompressionLevel. It will emit a ZLIB stream as it compresses. - - The compression level for the codec. - Z_OK if all goes well. - - - - Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, - and the explicit flag governing whether to emit an RFC1950 header byte pair. - - - The codec will use the maximum window bits (15) and the specified CompressionLevel. - If you want to generate a zlib stream, you should specify true for - wantRfc1950Header. In this case, the library will emit a ZLIB - header, as defined in RFC - 1950, in the compressed stream. - - The compression level for the codec. - whether to emit an initial RFC1950 byte pair in the compressed stream. - Z_OK if all goes well. - - - - Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, - and the specified number of window bits. - - - The codec will use the specified number of window bits and the specified CompressionLevel. - - The compression level for the codec. - the number of window bits to use. If you don't know what this means, don't use this method. - Z_OK if all goes well. - - - - Initialize the ZlibCodec for deflation operation, using the specified - CompressionLevel, the specified number of window bits, and the explicit flag - governing whether to emit an RFC1950 header byte pair. - - - The compression level for the codec. - whether to emit an initial RFC1950 byte pair in the compressed stream. - the number of window bits to use. If you don't know what this means, don't use this method. - Z_OK if all goes well. - - - - Deflate one batch of data. - - - You must have set InputBuffer and OutputBuffer before calling this method. - - - - private void DeflateBuffer(CompressionLevel level) - { - int bufferSize = 1024; - byte[] buffer = new byte[bufferSize]; - ZlibCodec compressor = new ZlibCodec(); - - Console.WriteLine("\n============================================"); - Console.WriteLine("Size of Buffer to Deflate: {0} bytes.", UncompressedBytes.Length); - MemoryStream ms = new MemoryStream(); - - int rc = compressor.InitializeDeflate(level); - - compressor.InputBuffer = UncompressedBytes; - compressor.NextIn = 0; - compressor.AvailableBytesIn = UncompressedBytes.Length; - - compressor.OutputBuffer = buffer; - - // pass 1: deflate - do - { - compressor.NextOut = 0; - compressor.AvailableBytesOut = buffer.Length; - rc = compressor.Deflate(FlushType.None); - - if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) - throw new Exception("deflating: " + compressor.Message); - - ms.Write(compressor.OutputBuffer, 0, buffer.Length - compressor.AvailableBytesOut); - } - while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); - - // pass 2: finish and flush - do - { - compressor.NextOut = 0; - compressor.AvailableBytesOut = buffer.Length; - rc = compressor.Deflate(FlushType.Finish); - - if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) - throw new Exception("deflating: " + compressor.Message); - - if (buffer.Length - compressor.AvailableBytesOut > 0) - ms.Write(buffer, 0, buffer.Length - compressor.AvailableBytesOut); - } - while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); - - compressor.EndDeflate(); - - ms.Seek(0, SeekOrigin.Begin); - CompressedBytes = new byte[compressor.TotalBytesOut]; - ms.Read(CompressedBytes, 0, CompressedBytes.Length); - } - - - whether to flush all data as you deflate. Generally you will want to - use Z_NO_FLUSH here, in a series of calls to Deflate(), and then call EndDeflate() to - flush everything. - - Z_OK if all goes well. - - - - End a deflation session. - - - Call this after making a series of one or more calls to Deflate(). All buffers are flushed. - - Z_OK if all goes well. - - - - Reset a codec for another deflation session. - - - Call this to reset the deflation state. For example if a thread is deflating - non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first - block and before the next Deflate(None) of the second block. - - Z_OK if all goes well. - - - - Set the CompressionStrategy and CompressionLevel for a deflation session. - - the level of compression to use. - the strategy to use for compression. - Z_OK if all goes well. - - - - Set the dictionary to be used for either Inflation or Deflation. - - The dictionary bytes to use. - Z_OK if all goes well. - - - - The Adler32 checksum on the data transferred through the codec so far. You probably don't need to look at this. - - - - - A bunch of constants used in the Zlib interface. - - - - - The maximum number of window bits for the Deflate algorithm. - - - - - The default number of window bits for the Deflate algorithm. - - - - - indicates everything is A-OK - - - - - Indicates that the last operation reached the end of the stream. - - - - - The operation ended in need of a dictionary. - - - - - There was an error with the stream - not enough data, not open and readable, etc. - - - - - There was an error with the data - not enough data, bad data, etc. - - - - - There was an error with the working buffer. - - - - - The size of the working buffer used in the ZlibCodec class. Defaults to 8192 bytes. - - - - - The minimum size of the working buffer used in the ZlibCodec class. Currently it is 128 bytes. - - - - - Represents a Zlib stream for compression or decompression. - - - - - The ZlibStream is a Decorator on a . It adds ZLIB compression or decompression to any - stream. - - - Using this stream, applications can compress or decompress data via - stream Read() and Write() operations. Either compresssion or - decompression can occur through either reading or writing. The compression - format used is ZLIB, which is documented in IETF RFC 1950, "ZLIB Compressed - Data Format Specification version 3.3". This implementation of ZLIB always uses - DEFLATE as the compression method. (see IETF RFC 1951, "DEFLATE - Compressed Data Format Specification version 1.3.") - - - The ZLIB format allows for varying compression methods, window sizes, and dictionaries. - This implementation always uses the DEFLATE compression method, a preset dictionary, - and 15 window bits by default. - - - - This class is similar to , except that it adds the - RFC1950 header and trailer bytes to a compressed stream when compressing, or expects - the RFC1950 header and trailer bytes when decompressing. It is also similar to the - . - - - - - - - - Create a ZlibStream using the specified CompressionMode. - - - - - When mode is CompressionMode.Compress, the ZlibStream - will use the default compression level. The "captive" stream will be - closed when the ZlibStream is closed. - - - - - - This example uses a ZlibStream to compress a file, and writes the - compressed data to another file. - - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) - { - using (Stream compressor = new ZlibStream(raw, CompressionMode.Compress)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n; - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(fileToCompress & ".zlib") - Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - - The stream which will be read or written. - Indicates whether the ZlibStream will compress or decompress. - - - - Create a ZlibStream using the specified CompressionMode and - the specified CompressionLevel. - - - - - - When mode is CompressionMode.Decompress, the level parameter is ignored. - The "captive" stream will be closed when the ZlibStream is closed. - - - - - - This example uses a ZlibStream to compress data from a file, and writes the - compressed data to another file. - - - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) - { - using (Stream compressor = new ZlibStream(raw, - CompressionMode.Compress, - CompressionLevel.BestCompression)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n; - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - } - - - - Using input As Stream = File.OpenRead(fileToCompress) - Using raw As FileStream = File.Create(fileToCompress & ".zlib") - Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - End Using - - - - The stream to be read or written while deflating or inflating. - Indicates whether the ZlibStream will compress or decompress. - A tuning knob to trade speed for effectiveness. - - - - Create a ZlibStream using the specified CompressionMode, and - explicitly specify whether the captive stream should be left open after - Deflation or Inflation. - - - - - - When mode is CompressionMode.Compress, the ZlibStream will use - the default compression level. - - - - This constructor allows the application to request that the captive stream - remain open after the deflation or inflation occurs. By default, after - Close() is called on the stream, the captive stream is also - closed. In some cases this is not desired, for example if the stream is a - that will be re-read after - compression. Specify true for the parameter to leave the stream - open. - - - - See the other overloads of this constructor for example code. - - - - - The stream which will be read or written. This is called the - "captive" stream in other places in this documentation. - Indicates whether the ZlibStream will compress or decompress. - true if the application would like the stream to remain - open after inflation/deflation. - - - - Create a ZlibStream using the specified CompressionMode - and the specified CompressionLevel, and explicitly specify - whether the stream should be left open after Deflation or Inflation. - - - - - - This constructor allows the application to request that the captive - stream remain open after the deflation or inflation occurs. By - default, after Close() is called on the stream, the captive - stream is also closed. In some cases this is not desired, for example - if the stream is a that will be - re-read after compression. Specify true for the parameter to leave the stream open. - - - - When mode is CompressionMode.Decompress, the level parameter is - ignored. - - - - - - - This example shows how to use a ZlibStream to compress the data from a file, - and store the result into another file. The filestream remains open to allow - additional data to be written to it. - - - using (var output = System.IO.File.Create(fileToCompress + ".zlib")) - { - using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) - { - using (Stream compressor = new ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) - { - byte[] buffer = new byte[WORKING_BUFFER_SIZE]; - int n; - while ((n= input.Read(buffer, 0, buffer.Length)) != 0) - { - compressor.Write(buffer, 0, n); - } - } - } - // can write additional data to the output stream here - } - - - Using output As FileStream = File.Create(fileToCompress & ".zlib") - Using input As Stream = File.OpenRead(fileToCompress) - Using compressor As Stream = New ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) - Dim buffer As Byte() = New Byte(4096) {} - Dim n As Integer = -1 - Do While (n <> 0) - If (n > 0) Then - compressor.Write(buffer, 0, n) - End If - n = input.Read(buffer, 0, buffer.Length) - Loop - End Using - End Using - ' can write additional data to the output stream here. - End Using - - - - The stream which will be read or written. - - Indicates whether the ZlibStream will compress or decompress. - - - true if the application would like the stream to remain open after - inflation/deflation. - - - - A tuning knob to trade speed for effectiveness. This parameter is - effective only when mode is CompressionMode.Compress. - - - - - Dispose the stream. - - - - This may or may not result in a Close() call on the captive - stream. See the constructors that have a leaveOpen parameter - for more information. - - - This method may be invoked in two distinct scenarios. If disposing - == true, the method has been called directly or indirectly by a - user's code, for example via the public Dispose() method. In this - case, both managed and unmanaged resources can be referenced and - disposed. If disposing == false, the method has been called by the - runtime from inside the object finalizer and this method should not - reference other objects; in that case only unmanaged resources must - be referenced or disposed. - - - - indicates whether the Dispose method was invoked by user code. - - - - - Flush the stream. - - - - - Read data from the stream. - - - - - - If you wish to use the ZlibStream to compress data while reading, - you can create a ZlibStream with CompressionMode.Compress, - providing an uncompressed data stream. Then call Read() on that - ZlibStream, and the data read will be compressed. If you wish to - use the ZlibStream to decompress data while reading, you can create - a ZlibStream with CompressionMode.Decompress, providing a - readable compressed data stream. Then call Read() on that - ZlibStream, and the data will be decompressed as it is read. - - - - A ZlibStream can be used for Read() or Write(), but - not both. - - - - - - The buffer into which the read data should be placed. - - - the offset within that data array to put the first byte read. - - the number of bytes to read. - - the number of bytes read - - - - Calling this method always throws a . - - - The offset to seek to.... - IF THIS METHOD ACTUALLY DID ANYTHING. - - - The reference specifying how to apply the offset.... IF - THIS METHOD ACTUALLY DID ANYTHING. - - - nothing. This method always throws. - - - - Calling this method always throws a . - - - The new value for the stream length.... IF - THIS METHOD ACTUALLY DID ANYTHING. - - - - - Write data to the stream. - - - - - - If you wish to use the ZlibStream to compress data while writing, - you can create a ZlibStream with CompressionMode.Compress, - and a writable output stream. Then call Write() on that - ZlibStream, providing uncompressed data as input. The data sent to - the output stream will be the compressed form of the data written. If you - wish to use the ZlibStream to decompress data while writing, you - can create a ZlibStream with CompressionMode.Decompress, and a - writable output stream. Then call Write() on that stream, - providing previously compressed data. The data sent to the output stream - will be the decompressed form of the data written. - - - - A ZlibStream can be used for Read() or Write(), but not both. - - - The buffer holding data to write to the stream. - the offset within that data array to find the first byte to write. - the number of bytes to write. - - - - Compress a string into a byte array using ZLIB. - - - - Uncompress it with . - - - - - - - - A string to compress. The string will first be encoded - using UTF8, then compressed. - - - The string in compressed form - - - - Compress a byte array into a new byte array using ZLIB. - - - - Uncompress it with . - - - - - - - A buffer to compress. - - - The data in compressed form - - - - Uncompress a ZLIB-compressed byte array into a single string. - - - - - - - A buffer containing ZLIB-compressed data. - - - The uncompressed string - - - - Uncompress a ZLIB-compressed byte array into a byte array. - - - - - - - A buffer containing ZLIB-compressed data. - - - The data in uncompressed form - - - - This property sets the flush behavior on the stream. - Sorry, though, not sure exactly how to describe all the various settings. - - - - - The size of the working buffer for the compression codec. - - - - - The working buffer is used for all stream operations. The default size is - 1024 bytes. The minimum size is 128 bytes. You may get better performance - with a larger buffer. Then again, you might not. You would have to test - it. - - - - Set this before the first call to Read() or Write() on the - stream. If you try to set it afterwards, it will throw. - - - - - Returns the total number of bytes input so far. - - - Returns the total number of bytes output so far. - - - - Indicates whether the stream can be read. - - - The return value depends on whether the captive stream supports reading. - - - - - Indicates whether the stream supports Seek operations. - - - Always returns false. - - - - - Indicates whether the stream can be written. - - - The return value depends on whether the captive stream supports writing. - - - - - Reading this property always throws a . - - - - - The position of the stream pointer. - - - - Setting this property always throws a . Reading will return the total bytes - written out, if used in writing, or the total bytes read in, if used in - reading. The count may refer to compressed bytes or uncompressed bytes, - depending on how you've used the stream. - - - - - Computes a CRC-32. The CRC-32 algorithm is parameterized - you - can set the polynomial and enable or disable bit - reversal. This can be used for GZIP, BZip2, or ZIP. - - - This type is used internally by DotNetZip; it is generally not used - directly by applications wishing to create, read, or manipulate zip - archive files. - - - - - Returns the CRC32 for the specified stream. - - The stream over which to calculate the CRC32 - the CRC32 calculation - - - - Returns the CRC32 for the specified stream, and writes the input into the - output stream. - - The stream over which to calculate the CRC32 - The stream into which to deflate the input - the CRC32 calculation - - - - Get the CRC32 for the given (word,byte) combo. This is a - computation defined by PKzip for PKZIP 2.0 (weak) encryption. - - The word to start with. - The byte to combine it with. - The CRC-ized result. - - - - Update the value for the running CRC32 using the given block of bytes. - This is useful when using the CRC32() class in a Stream. - - block of bytes to slurp - starting point in the block - how many bytes within the block to slurp - - - - Process one byte in the CRC. - - the byte to include into the CRC . - - - - Process a run of N identical bytes into the CRC. - - - - This method serves as an optimization for updating the CRC when a - run of identical bytes is found. Rather than passing in a buffer of - length n, containing all identical bytes b, this method accepts the - byte value and the length of the (virtual) buffer - the length of - the run. - - - the byte to include into the CRC. - the number of times that byte should be repeated. - - - - Combines the given CRC32 value with the current running total. - - - This is useful when using a divide-and-conquer approach to - calculating a CRC. Multiple threads can each calculate a - CRC32 on a segment of the data, and then combine the - individual CRC32 values at the end. - - the crc value to be combined with this one - the length of data the CRC value was calculated on - - - - Create an instance of the CRC32 class using the default settings: no - bit reversal, and a polynomial of 0xEDB88320. - - - - - Create an instance of the CRC32 class, specifying whether to reverse - data bits or not. - - - specify true if the instance should reverse data bits. - - - - In the CRC-32 used by BZip2, the bits are reversed. Therefore if you - want a CRC32 with compatibility with BZip2, you should pass true - here. In the CRC-32 used by GZIP and PKZIP, the bits are not - reversed; Therefore if you want a CRC32 with compatibility with - those, you should pass false. - - - - - - Create an instance of the CRC32 class, specifying the polynomial and - whether to reverse data bits or not. - - - The polynomial to use for the CRC, expressed in the reversed (LSB) - format: the highest ordered bit in the polynomial value is the - coefficient of the 0th power; the second-highest order bit is the - coefficient of the 1 power, and so on. Expressed this way, the - polynomial for the CRC-32C used in IEEE 802.3, is 0xEDB88320. - - - specify true if the instance should reverse data bits. - - - - - In the CRC-32 used by BZip2, the bits are reversed. Therefore if you - want a CRC32 with compatibility with BZip2, you should pass true - here for the reverseBits parameter. In the CRC-32 used by - GZIP and PKZIP, the bits are not reversed; Therefore if you want a - CRC32 with compatibility with those, you should pass false for the - reverseBits parameter. - - - - - - Reset the CRC-32 class - clear the CRC "remainder register." - - - - Use this when employing a single instance of this class to compute - multiple, distinct CRCs on multiple, distinct data blocks. - - - - - - Indicates the total number of bytes applied to the CRC. - - - - - Indicates the current CRC for all blocks slurped in. - - - - - A Stream that calculates a CRC32 (a checksum) on all bytes read, - or on all bytes written. - - - - - This class can be used to verify the CRC of a ZipEntry when - reading from a stream, or to calculate a CRC when writing to a - stream. The stream should be used to either read, or write, but - not both. If you intermix reads and writes, the results are not - defined. - - - - This class is intended primarily for use internally by the - DotNetZip library. - - - - - - The default constructor. - - - - Instances returned from this constructor will leave the underlying - stream open upon Close(). The stream uses the default CRC32 - algorithm, which implies a polynomial of 0xEDB88320. - - - The underlying stream - - - - The constructor allows the caller to specify how to handle the - underlying stream at close. - - - - The stream uses the default CRC32 algorithm, which implies a - polynomial of 0xEDB88320. - - - The underlying stream - true to leave the underlying stream - open upon close of the CrcCalculatorStream; false otherwise. - - - - A constructor allowing the specification of the length of the stream - to read. - - - - The stream uses the default CRC32 algorithm, which implies a - polynomial of 0xEDB88320. - - - Instances returned from this constructor will leave the underlying - stream open upon Close(). - - - The underlying stream - The length of the stream to slurp - - - - A constructor allowing the specification of the length of the stream - to read, as well as whether to keep the underlying stream open upon - Close(). - - - - The stream uses the default CRC32 algorithm, which implies a - polynomial of 0xEDB88320. - - - The underlying stream - The length of the stream to slurp - true to leave the underlying stream - open upon close of the CrcCalculatorStream; false otherwise. - - - - A constructor allowing the specification of the length of the stream - to read, as well as whether to keep the underlying stream open upon - Close(), and the CRC32 instance to use. - - - - The stream uses the specified CRC32 instance, which allows the - application to specify how the CRC gets calculated. - - - The underlying stream - The length of the stream to slurp - true to leave the underlying stream - open upon close of the CrcCalculatorStream; false otherwise. - the CRC32 instance to use to calculate the CRC32 - - - - Read from the stream - - the buffer to read - the offset at which to start - the number of bytes to read - the number of bytes actually read - - - - Write to the stream. - - the buffer from which to write - the offset at which to start writing - the number of bytes to write - - - - Flush the stream. - - - - - Seeking is not supported on this stream. This method always throws - - - N/A - N/A - N/A - - - - This method always throws - - - N/A - - - - Closes the stream. - - - - - Gets the total number of bytes run through the CRC32 calculator. - - - - This is either the total number of bytes read, or the total number of - bytes written, depending on the direction of this stream. - - - - - Provides the current CRC for all blocks slurped in. - - - - The running total of the CRC is kept as data is written or read - through the stream. read this property after all reads or writes to - get an accurate CRC for the entire stream. - - - - - - Indicates whether the underlying stream will be left open when the - CrcCalculatorStream is Closed. - - - - Set this at any point before calling . - - - - - - Indicates whether the stream supports reading. - - - - - Indicates whether the stream supports seeking. - - - - Always returns false. - - - - - - Indicates whether the stream supports writing. - - - - - Returns the length of the underlying stream. - - - - - The getter for this property returns the total bytes read. - If you use the setter, it will throw - . - - - - diff --git a/distribution/SharpDX.D3DCompiler.dll b/distribution/SharpDX.D3DCompiler.dll new file mode 100644 index 0000000000000000000000000000000000000000..2430da8babc1ab53ae9f623a714f40baf1442f2a GIT binary patch literal 44032 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 F{|BJAFFpVO literal 0 HcmV?d00001 diff --git a/distribution/SharpDX.D3DCompiler.xml b/distribution/SharpDX.D3DCompiler.xml new file mode 100644 index 00000000..af07ed70 --- /dev/null +++ b/distribution/SharpDX.D3DCompiler.xml @@ -0,0 +1,4882 @@ + + + + SharpDX.D3DCompiler + + + + + The assembly is a managed Direct3D Compiler API. + + dd607340 + D3DCompiler + D3DCompiler + + + + Shader compilation results. + + + + + Initializes a new instance of the class. + + The bytecode. + The result code. + The message. + + + + Performs an implicit conversion from to . + + The input. + + The result of the conversion. + + + + + Performs an implicit conversion from to byte array + + The input. + + The result of the conversion. + + + + + Warming, the following code is manually copied from generated code from Direct3D10 compiler. + We need to access this method in order to compile Direct3D10 Effects with plain old D3D10CompileEffectFromMemory function. + + + Functions + + + + + + Compiles the effect10 from memory. + + The data ref. + Length of the data. + The SRC file name ref. + The defines ref. + The include ref. + The h LSL flags. + The f X flags. + The compiled effect out. + The errors out. + Result code. + HRESULT D3D10CompileEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] D3DCOMPILE_SHADER_FLAGS HLSLFlags,[In] D3DCOMPILE_EFFECT_FLAGS FXFlags,[In] ID3D10Blob** ppCompiledEffect,[In] ID3D10Blob** ppErrors) + + + +

Retrieves a specific part from a compilation result.

+
+

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

+

Length of uncompiled shader data that pSrcData points to.

+

A -typed value that specifies the part of the buffer to retrieve.

+

Flags that indicate how to retrieve the blob part. Currently, no flags are defined.

+

The address of a reference to the ID3DBlob interface that is used to retrieve the specified part of the buffer.

+

Returns one of the Direct3D 11 return codes.

+ +

retrieves the part of a blob (arbitrary length data buffer) that contains the type of data that the Part parameter specifies.

Windows Phone 8.1: This API is supported.

+
+ + ff728674 + HRESULT D3DGetBlobPart([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3D_BLOB_PART Part,[In] unsigned int Flags,[Out] ID3D10Blob** ppPart) + D3DGetBlobPart + + + +

Note??You can use this API to develop your Windows Store apps, but you can't use it in apps that you submit to the Windows Store.

Decompresses one or more shaders from a compressed set.

+
+

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

+

Length of uncompiled shader data that pSrcData points to.

+

The number of shaders to decompress.

+

The index of the first shader to decompress.

+

An array of indexes that represent the shaders to decompress.

+

Flags that indicate how to decompress. Currently, no flags are defined.

+

The address of a reference to the ID3DBlob interface that is used to retrieve the decompressed shader data.

+

A reference to a variable that receives the total number of shaders that decompressed.

+

Returns one of the Direct3D 11 return codes.

+ + ff728673 + HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) + D3DDecompressShaders +
+ + +

Disassembles compiled HLSL code.

+
+

A reference to source data as compiled HLSL code.

+

Length of pSrcData.

+

Flags affecting the behavior of . Flags can be a combination of zero or more of the following values.

FlagDescription
Enable the output of color codes.
Enable the output of default values.
Enable instruction numbering.
No effect.

?

+

The optional comment string at the top of the shader that identifies the shader constants and variables.

+

A reference to a buffer that receives the ID3DBlob interface that accesses assembly text.

+

Returns one of the Direct3D 11 return codes.

+ +

Windows Phone 8.1: This API is supported.

+
+ + dd607326 + HRESULT D3DDisassemble([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3DCOMPILE_DISASM_FLAGS Flags,[In, Optional] const char* szComments,[Out] ID3D10Blob** ppDisassembly) + D3DDisassemble +
+ + +

Compile HLSL code or an effect file into bytecode for a given target.

+
+

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

+

Length of pSrcData.

+

Optional. You can use this parameter for strings that specify error messages. If not used, set to null.

+

Optional. An array of null-terminated macro definitions (see ).

+

Optional. A reference to an for handling include files. Setting this to null will cause a compile error if a shader contains a #include. You can pass the D3D_COMPILE_STANDARD_FILE_INCLUDE macro, which is a reference to a default include handler. This default include handler includes files that are relative to the current directory and files that are relative to the directory of the initial source file. When you use D3D_COMPILE_STANDARD_FILE_INCLUDE, you must specify the source file name in the pSourceName parameter; the compiler will derive the initial relative directory from pSourceName.

#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((*)()1)
+

The name of the shader entry point function where shader execution begins. When you compile an effect, ignores pEntrypoint; we recommend that you set pEntrypoint to null because it is good programming practice to set a reference parameter to null if the called function will not use it.

+

A string that specifies the shader target or set of shader features to compile against. The shader target can be shader model 2, shader model 3, shader model 4, or shader model 5. The target can also be an effect type (for example, fx_4_1). For info about the targets that various profiles support, see Specifying Compiler Targets.

+

Shader compile options.

+

Effect compile options. When you compile a shader and not an effect file, ignores Flags2; we recommend that you set Flags2 to zero because it is good programming practice to set a nonreference parameter to zero if the called function will not use it.

+

A reference to a variable that receives a reference to the ID3DBlob interface that you can use to access the compiled code.

+

An optional reference to a variable that receives a reference to the ID3DBlob interface that you can use to access compiler error messages, or null if there are no errors.

+

Returns one of the Direct3D 11 return codes.

+ +

Windows Phone 8.1: This API is supported.

+
+ + dd607324 + HRESULT D3DCompile([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] const char* pSourceName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In, Optional] ID3DInclude* pInclude,[In] const char* pEntrypoint,[In] const char* pTarget,[In] D3DCOMPILE_SHADER_FLAGS Flags1,[In] D3DCOMPILE_EFFECT_FLAGS Flags2,[Out] ID3D10Blob** ppCode,[Out, Optional] ID3D10Blob** ppErrorMsgs) + D3DCompile +
+ + +

Removes unwanted blobs from a compilation result.

+
+

A reference to source data as compiled HLSL code.

+

Length of pSrcData.

+

Strip flag options, represented by .

+

A reference to a variable that receives a reference to the ID3DBlob interface that you can use to access the unwanted stripped out shader code.

+

Returns one of the Direct3D 11 return codes.

+ +

Windows Phone 8.1: This API is supported.

+
+ + dd607335 + HRESULT D3DStripShader([In, Buffer] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In] D3DCOMPILER_STRIP_FLAGS uStripFlags,[Out] ID3D10Blob** ppStrippedBlob) + D3DStripShader +
+ + +

Preprocesses uncompiled HLSL code.

+
+

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

+

Length of pSrcData.

+

Optional. The name of the file that contains the uncompiled HLSL code.

+

Optional. An array of null-terminated macro definitions (see ).

+

Optional. A reference to an for handling include files. Setting this to null will cause a compile error if a shader contains a #include. You can pass the D3D_COMPILE_STANDARD_FILE_INCLUDE macro, which is a reference to a default include handler. This default include handler includes files that are relative to the current directory and files that are relative to the directory of the initial source file. When you use D3D_COMPILE_STANDARD_FILE_INCLUDE, you must specify the source file name in the pSourceName parameter; the compiler will derive the initial relative directory from pSourceName.

#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((*)()1)
+

The address of a ID3DBlob that contains the compiled code.

+

Optional. A reference to an ID3DBlob that contains compiler error messages, or null if there were no errors.

+

Returns one of the Direct3D 11 return codes.

+ +

outputs #line directives and preserves line numbering of source input so that output line numbering can be properly related to the input source.

Windows Phone 8.1: This API is supported.

+
+ + dd607332 + HRESULT D3DPreprocess([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] const char* pSourceName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In, Optional] ID3DInclude* pInclude,[Out] ID3D10Blob** ppCodeText,[Out, Optional] ID3D10Blob** ppErrorMsgs) + D3DPreprocess +
+ + +

Note??You can use this API to develop your Windows Store apps, but you can't use it in apps that you submit to the Windows Store.

Compresses a set of shaders into a more compact form.

+
+

The number of shaders to compress.

+

An array of structures that describe the set of shaders to compress.

+

Flags that indicate how to compress the shaders. Currently, only the D3D_COMPRESS_SHADER_KEEP_ALL_PARTS (0x00000001) flag is defined.

+

The address of a reference to the ID3DBlob interface that is used to retrieve the compressed shader data.

+

Returns one of the Direct3D 11 return codes.

+ + ff728671 + HRESULT D3DCompressShaders([In] unsigned int uNumShaders,[In, Buffer] D3D_SHADER_DATA* pShaderData,[In] unsigned int uFlags,[Out] ID3D10Blob** ppCompressedData) + D3DCompressShaders +
+ + +

Gets a reference to a reflection interface.

+
+

A reference to source data as compiled HLSL code.

+

Length of pSrcData.

+

The reference of the COM interface to use. For example, IID_ID3D11ShaderReflection.

+

A reference to a reflection interface.

+

Returns one of the Direct3D 11 return codes.

+ +

Shader code contains metadata that can be inspected using the reflection APIs.

The following code illustrates retrieving a Interface from a shader.

 pd3dDevice->CreatePixelShader( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(), g_pPSClassLinkage, &g_pPixelShader ); * pReflector = null; 	
+            ( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(),  IID_ID3D11ShaderReflection, (void**) &pReflector);	
+            

Windows Phone 8.1: This API is supported.

+
+ + dd607334 + HRESULT D3DReflect([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] const GUID& pInterface,[Out] void** ppReflector) + D3DReflect +
+ + +

Note?? may be altered or unavailable for releases after Windows?8.1. Instead use with the value.

Gets the input signature from a compilation result.

+
+ No documentation. + No documentation. + No documentation. +

Returns one of the Direct3D 11 return codes.

+ + dd607330 + HRESULT D3DGetInputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) + D3DGetInputSignatureBlob +
+ + +

Note?? may be altered or unavailable for releases after Windows?8.1. Instead use with the value.

Gets the input and output signatures from a compilation result.

+
+ No documentation. + No documentation. + No documentation. +

Returns one of the Direct3D 11 return codes.

+ + dd607329 + HRESULT D3DGetInputAndOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) + D3DGetInputAndOutputSignatureBlob +
+ + +

Note?? may be altered or unavailable for releases after Windows?8.1. Instead use with the value.

Gets the output signature from a compilation result.

+
+ No documentation. + No documentation. + No documentation. +

Returns one of the Direct3D 11 return codes.

+ + dd607331 + HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) + D3DGetOutputSignatureBlob +
+ + +

Note??You can use this API to develop your Windows Store apps, but you can't use it in apps that you submit to the Windows Store.

Gets shader debug information.

+
+

A reference to source data; either uncompiled or compiled HLSL code.

+

Length of pSrcData.

+

A reference to a buffer that receives the ID3DBlob interface that contains debug information.

+

Returns one of the Direct3D 11 return codes.

+ +

Debug information is embedded in the body of the shader after calling .

+
+ + dd607328 + HRESULT D3DGetDebugInfo([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppDebugInfo) + D3DGetDebugInfo +
+ + +

Values that identify the indended use of a constant-data buffer.

+
+ +

-typed values are specified in the uFlags member of the structure.

+
+ + ff728729 + D3D_SHADER_CBUFFER_FLAGS + D3D_SHADER_CBUFFER_FLAGS +
+ + +

Bind the constant buffer to an input slot defined in HLSL code (instead of letting the compiler choose the input slot).

+
+ + ff728729 + D3D_CBF_USERPACKED + D3D_CBF_USERPACKED +
+ + + None. + + + None + None + + + +

Values that identify the intended use of constant-buffer data.

+
+ + ff728722 + D3D_CBUFFER_TYPE + D3D_CBUFFER_TYPE +
+ + +

A buffer containing scalar constants.

+
+ + ff728722 + D3D_CT_CBUFFER + D3D_CT_CBUFFER +
+ + +

A buffer containing texture data.

+
+ + ff728722 + D3D_CT_TBUFFER + D3D_CT_TBUFFER +
+ + +

A buffer containing interface references.

+
+ + ff728722 + D3D_CT_INTERFACE_POINTERS + D3D_CT_INTERFACE_POINTERS +
+ + +

A buffer containing binding information.

+
+ + ff728722 + D3D_CT_RESOURCE_BIND_INFO + D3D_CT_RESOURCE_BIND_INFO +
+ + + No documentation. + + + D3DCOMPILE_DISASM_FLAGS + D3DCOMPILE_DISASM_FLAGS + + + + No documentation. + + + D3D_DISASM_ENABLE_COLOR_CODE + D3D_DISASM_ENABLE_COLOR_CODE + + + + No documentation. + + + D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS + D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS + + + + No documentation. + + + D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING + D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING + + + + No documentation. + + + D3D_DISASM_ENABLE_INSTRUCTION_CYCLE + D3D_DISASM_ENABLE_INSTRUCTION_CYCLE + + + + No documentation. + + + D3D_DISASM_DISABLE_DEBUG_INFO + D3D_DISASM_DISABLE_DEBUG_INFO + + + + None. + + + None + None + + + + No documentation. + + + D3DCOMPILE_EFFECT_FLAGS + D3DCOMPILE_EFFECT_FLAGS + + + + No documentation. + + + D3DCOMPILE_EFFECT_CHILD_EFFECT + D3DCOMPILE_EFFECT_CHILD_EFFECT + + + + No documentation. + + + D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS + D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS + + + + None. + + + None + None + + + +

Values that indicate the location of a shader #include file.

+
+ +

You pass a -typed value to the IncludeType parameter in a call to the method to indicate the location of the #include file.

+
+ + ff728723 + D3D_INCLUDE_TYPE + D3D_INCLUDE_TYPE +
+ + +

The local directory.

+
+ + ff728723 + D3D_INCLUDE_LOCAL + D3D_INCLUDE_LOCAL +
+ + +

The system directory.

+
+ + ff728723 + D3D_INCLUDE_SYSTEM + D3D_INCLUDE_SYSTEM +
+ + +

Values that indicate how the pipeline interprets geometry or hull shader input primitives.

+
+ +

The method returns a -typed value.

+
+ + ff728725 + D3D_PRIMITIVE + D3D_PRIMITIVE +
+ + +

The shader has not been initialized with an input primitive type.

+
+ + ff728725 + D3D_PRIMITIVE_UNDEFINED + D3D_PRIMITIVE_UNDEFINED +
+ + +

Interpret the input primitive as a point.

+
+ + ff728725 + D3D_PRIMITIVE_POINT + D3D_PRIMITIVE_POINT +
+ + +

Interpret the input primitive as a line.

+
+ + ff728725 + D3D_PRIMITIVE_LINE + D3D_PRIMITIVE_LINE +
+ + +

Interpret the input primitive as a triangle.

+
+ + ff728725 + D3D_PRIMITIVE_TRIANGLE + D3D_PRIMITIVE_TRIANGLE +
+ + +

Interpret the input primitive as a line with adjacency data.

+
+ + ff728725 + D3D_PRIMITIVE_LINE_ADJ + D3D_PRIMITIVE_LINE_ADJ +
+ + +

Interpret the input primitive as a triangle with adjacency data.

+
+ + ff728725 + D3D_PRIMITIVE_TRIANGLE_ADJ + D3D_PRIMITIVE_TRIANGLE_ADJ +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_1_CONTROL_POINT_PATCH + D3D_PRIMITIVE_1_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_2_CONTROL_POINT_PATCH + D3D_PRIMITIVE_2_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_3_CONTROL_POINT_PATCH + D3D_PRIMITIVE_3_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_4_CONTROL_POINT_PATCH + D3D_PRIMITIVE_4_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_5_CONTROL_POINT_PATCH + D3D_PRIMITIVE_5_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_6_CONTROL_POINT_PATCH + D3D_PRIMITIVE_6_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_7_CONTROL_POINT_PATCH + D3D_PRIMITIVE_7_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_8_CONTROL_POINT_PATCH + D3D_PRIMITIVE_8_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_9_CONTROL_POINT_PATCH + D3D_PRIMITIVE_9_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_10_CONTROL_POINT_PATCH + D3D_PRIMITIVE_10_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_11_CONTROL_POINT_PATCH + D3D_PRIMITIVE_11_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_12_CONTROL_POINT_PATCH + D3D_PRIMITIVE_12_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_13_CONTROL_POINT_PATCH + D3D_PRIMITIVE_13_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_14_CONTROL_POINT_PATCH + D3D_PRIMITIVE_14_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_15_CONTROL_POINT_PATCH + D3D_PRIMITIVE_15_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_16_CONTROL_POINT_PATCH + D3D_PRIMITIVE_16_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_17_CONTROL_POINT_PATCH + D3D_PRIMITIVE_17_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_18_CONTROL_POINT_PATCH + D3D_PRIMITIVE_18_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_19_CONTROL_POINT_PATCH + D3D_PRIMITIVE_19_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_20_CONTROL_POINT_PATCH + D3D_PRIMITIVE_20_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_21_CONTROL_POINT_PATCH + D3D_PRIMITIVE_21_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_22_CONTROL_POINT_PATCH + D3D_PRIMITIVE_22_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_23_CONTROL_POINT_PATCH + D3D_PRIMITIVE_23_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_24_CONTROL_POINT_PATCH + D3D_PRIMITIVE_24_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_25_CONTROL_POINT_PATCH + D3D_PRIMITIVE_25_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_26_CONTROL_POINT_PATCH + D3D_PRIMITIVE_26_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_27_CONTROL_POINT_PATCH + D3D_PRIMITIVE_27_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_28_CONTROL_POINT_PATCH + D3D_PRIMITIVE_28_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_29_CONTROL_POINT_PATCH + D3D_PRIMITIVE_29_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_30_CONTROL_POINT_PATCH + D3D_PRIMITIVE_30_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_31_CONTROL_POINT_PATCH + D3D_PRIMITIVE_31_CONTROL_POINT_PATCH +
+ + +

Interpret the input primitive as a control point patch.

+
+ + ff728725 + D3D_PRIMITIVE_32_CONTROL_POINT_PATCH + D3D_PRIMITIVE_32_CONTROL_POINT_PATCH +
+ + +

Values that identify the data types that can be stored in a register.

+
+ +

A register component type is specified in the ComponentType member of the structure.

+
+ + ff728727 + D3D_REGISTER_COMPONENT_TYPE + D3D_REGISTER_COMPONENT_TYPE +
+ + +

The data type is unknown.

+
+ + ff728727 + D3D_REGISTER_COMPONENT_UNKNOWN + D3D_REGISTER_COMPONENT_UNKNOWN +
+ + +

32-bit unsigned integer.

+
+ + ff728727 + D3D_REGISTER_COMPONENT_UINT32 + D3D_REGISTER_COMPONENT_UINT32 +
+ + +

32-bit signed integer.

+
+ + ff728727 + D3D_REGISTER_COMPONENT_SINT32 + D3D_REGISTER_COMPONENT_SINT32 +
+ + +

32-bit floating-point number.

+
+ + ff728727 + D3D_REGISTER_COMPONENT_FLOAT32 + D3D_REGISTER_COMPONENT_FLOAT32 +
+ + +

Values that identify the return type of a resource.

+
+ +

A resource return type is specified in the ReturnType member of the structure.

+
+ + ff728728 + D3D_RESOURCE_RETURN_TYPE + D3D_RESOURCE_RETURN_TYPE +
+ + +

Return type is an unsigned integer value normalized to a value between 0 and 1.

+
+ + ff728728 + D3D_RETURN_TYPE_UNORM + D3D_RETURN_TYPE_UNORM +
+ + +

Return type is a signed integer value normalized to a value between -1 and 1.

+
+ + ff728728 + D3D_RETURN_TYPE_SNORM + D3D_RETURN_TYPE_SNORM +
+ + +

Return type is a signed integer.

+
+ + ff728728 + D3D_RETURN_TYPE_SINT + D3D_RETURN_TYPE_SINT +
+ + +

Return type is an unsigned integer.

+
+ + ff728728 + D3D_RETURN_TYPE_UINT + D3D_RETURN_TYPE_UINT +
+ + +

Return type is a floating-point number.

+
+ + ff728728 + D3D_RETURN_TYPE_FLOAT + D3D_RETURN_TYPE_FLOAT +
+ + +

Return type is unknown.

+
+ + ff728728 + D3D_RETURN_TYPE_MIXED + D3D_RETURN_TYPE_MIXED +
+ + +

Return type is a double-precision value.

+
+ + ff728728 + D3D_RETURN_TYPE_DOUBLE + D3D_RETURN_TYPE_DOUBLE +
+ + +

Return type is a multiple-dword type, such as a double or uint64, and the component is continued from the previous component that was declared. The first component represents the lower bits.

+
+ + ff728728 + D3D_RETURN_TYPE_CONTINUED + D3D_RETURN_TYPE_CONTINUED +
+ + + No documentation. + + + D3DCOMPILE_SECDATA_FLAGS + D3DCOMPILE_SECDATA_FLAGS + + + + None. + + + None + None + + + +

Values that identify parts of the content of an arbitrary length data buffer.

+
+ +

These values are passed to the or D3DSetBlobPart function.

+
+ + ff728720 + D3D_BLOB_PART + D3D_BLOB_PART +
+ + + No documentation. + + + ff728720 + D3D_BLOB_INPUT_SIGNATURE_BLOB + D3D_BLOB_INPUT_SIGNATURE_BLOB + + + + No documentation. + + + ff728720 + D3D_BLOB_OUTPUT_SIGNATURE_BLOB + D3D_BLOB_OUTPUT_SIGNATURE_BLOB + + + + No documentation. + + + ff728720 + D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB + D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB + + + + No documentation. + + + ff728720 + D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB + D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB + + + + No documentation. + + + ff728720 + D3D_BLOB_ALL_SIGNATURE_BLOB + D3D_BLOB_ALL_SIGNATURE_BLOB + + + + No documentation. + + + ff728720 + D3D_BLOB_DEBUG_INFO + D3D_BLOB_DEBUG_INFO + + + + No documentation. + + + ff728720 + D3D_BLOB_LEGACY_SHADER + D3D_BLOB_LEGACY_SHADER + + + + No documentation. + + + ff728720 + D3D_BLOB_XNA_PREPASS_SHADER + D3D_BLOB_XNA_PREPASS_SHADER + + + + No documentation. + + + ff728720 + D3D_BLOB_XNA_SHADER + D3D_BLOB_XNA_SHADER + + + + No documentation. + + + ff728720 + D3D_BLOB_TEST_ALTERNATE_SHADER + D3D_BLOB_TEST_ALTERNATE_SHADER + + + + No documentation. + + + ff728720 + D3D_BLOB_TEST_COMPILE_DETAILS + D3D_BLOB_TEST_COMPILE_DETAILS + + + + No documentation. + + + ff728720 + D3D_BLOB_TEST_COMPILE_PERF + D3D_BLOB_TEST_COMPILE_PERF + + + +

Describes a shader.

+
+ +

A shader is written in HLSL and compiled into an intermediate language by the HLSL compiler. The shader description returns information about the compiled shader. Get a shader description by calling .

+
+ + ff476209 + D3DCOMPILE_SHADER_FLAGS + D3DCOMPILE_SHADER_FLAGS +
+ + +

Shader version.

+
+ + ff476209 + D3DCOMPILE_DEBUG + D3DCOMPILE_DEBUG +
+ + +

The name of the originator of the shader.

+
+ + ff476209 + D3DCOMPILE_SKIP_VALIDATION + D3DCOMPILE_SKIP_VALIDATION +
+ + +

Shader compilation/parse flags.

+
+ + ff476209 + D3DCOMPILE_SKIP_OPTIMIZATION + D3DCOMPILE_SKIP_OPTIMIZATION +
+ + +

The number of shader-constant buffers.

+
+ + ff476209 + D3DCOMPILE_PACK_MATRIX_ROW_MAJOR + D3DCOMPILE_PACK_MATRIX_ROW_MAJOR +
+ + +

The number of resource (textures and buffers) bound to a shader.

+
+ + ff476209 + D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR + D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR +
+ + +

The number of parameters in the input signature.

+
+ + ff476209 + D3DCOMPILE_PARTIAL_PRECISION + D3DCOMPILE_PARTIAL_PRECISION +
+ + +

The number of parameters in the output signature.

+
+ + ff476209 + D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT + D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT +
+ + +

The number of intermediate-language instructions in the compiled shader.

+
+ + ff476209 + D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT + D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT +
+ + +

The number of temporary registers in the compiled shader.

+
+ + ff476209 + D3DCOMPILE_NO_PRESHADER + D3DCOMPILE_NO_PRESHADER +
+ + +

Number of temporary arrays used.

+
+ + ff476209 + D3DCOMPILE_AVOID_FLOW_CONTROL + D3DCOMPILE_AVOID_FLOW_CONTROL +
+ + +

Number of constant defines.

+
+ + ff476209 + D3DCOMPILE_PREFER_FLOW_CONTROL + D3DCOMPILE_PREFER_FLOW_CONTROL +
+ + +

Number of declarations (input + output).

+
+ + ff476209 + D3DCOMPILE_ENABLE_STRICTNESS + D3DCOMPILE_ENABLE_STRICTNESS +
+ + +

Number of non-categorized texture instructions.

+
+ + ff476209 + D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY + D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY +
+ + +

Number of texture load instructions

+
+ + ff476209 + D3DCOMPILE_IEEE_STRICTNESS + D3DCOMPILE_IEEE_STRICTNESS +
+ + +

Number of texture comparison instructions

+
+ + ff476209 + D3DCOMPILE_OPTIMIZATION_LEVEL0 + D3DCOMPILE_OPTIMIZATION_LEVEL0 +
+ + +

Number of texture bias instructions

+
+ + ff476209 + D3DCOMPILE_OPTIMIZATION_LEVEL1 + D3DCOMPILE_OPTIMIZATION_LEVEL1 +
+ + +

Number of texture gradient instructions.

+
+ + ff476209 + D3DCOMPILE_OPTIMIZATION_LEVEL2 + D3DCOMPILE_OPTIMIZATION_LEVEL2 +
+ + +

Number of floating point arithmetic instructions used.

+
+ + ff476209 + D3DCOMPILE_OPTIMIZATION_LEVEL3 + D3DCOMPILE_OPTIMIZATION_LEVEL3 +
+ + +

Number of signed integer arithmetic instructions used.

+
+ + ff476209 + D3DCOMPILE_RESERVED16 + D3DCOMPILE_RESERVED16 +
+ + +

Number of unsigned integer arithmetic instructions used.

+
+ + ff476209 + D3DCOMPILE_RESERVED17 + D3DCOMPILE_RESERVED17 +
+ + +

Number of static flow control instructions used.

+
+ + ff476209 + D3DCOMPILE_WARNINGS_ARE_ERRORS + D3DCOMPILE_WARNINGS_ARE_ERRORS +
+ + + None. + + + None + None + + + +

Values that identify shader-input options.

+
+ +

-typed values are specified in the uFlags member of the structure.

+
+ + ff728730 + D3D_SHADER_INPUT_FLAGS + D3D_SHADER_INPUT_FLAGS +
+ + +

Assign a shader input to a register based on the register assignment in the HLSL code (instead of letting the compiler choose the register).

+
+ + ff728730 + D3D_SIF_USERPACKED + D3D_SIF_USERPACKED +
+ + +

Use a comparison sampler, which uses the SampleCmp (DirectX HLSL Texture Object) and SampleCmpLevelZero (DirectX HLSL Texture Object) sampling functions.

+
+ + ff728730 + D3D_SIF_COMPARISON_SAMPLER + D3D_SIF_COMPARISON_SAMPLER +
+ + +

A 2-bit value for encoding texture components.

+
+ + ff728730 + D3D_SIF_TEXTURE_COMPONENT_0 + D3D_SIF_TEXTURE_COMPONENT_0 +
+ + +

A 2-bit value for encoding texture components.

+
+ + ff728730 + D3D_SIF_TEXTURE_COMPONENT_1 + D3D_SIF_TEXTURE_COMPONENT_1 +
+ + +

A 2-bit value for encoding texture components.

+
+ + ff728730 + D3D_SIF_TEXTURE_COMPONENTS + D3D_SIF_TEXTURE_COMPONENTS +
+ + + None. + + + None + None + + + +

Values that identify resource types that can be bound to a shader and that are reflected as part of the resource description for the shader.

+
+ +

-typed values are specified in the Type member of the structure.

+
+ + ff728731 + D3D_SHADER_INPUT_TYPE + D3D_SHADER_INPUT_TYPE +
+ + +

The shader resource is a constant buffer.

+
+ + ff728731 + D3D_SIT_CBUFFER + D3D_SIT_CBUFFER +
+ + +

The shader resource is a texture buffer.

+
+ + ff728731 + D3D_SIT_TBUFFER + D3D_SIT_TBUFFER +
+ + +

The shader resource is a texture.

+
+ + ff728731 + D3D_SIT_TEXTURE + D3D_SIT_TEXTURE +
+ + +

The shader resource is a sampler.

+
+ + ff728731 + D3D_SIT_SAMPLER + D3D_SIT_SAMPLER +
+ + +

The shader resource is a read-and-write buffer.

+
+ + ff728731 + D3D_SIT_UAV_RWTYPED + D3D_SIT_UAV_RWTYPED +
+ + +

The shader resource is a structured buffer.

For more information about structured buffer, see the Remarks section.

+
+ + ff728731 + D3D_SIT_STRUCTURED + D3D_SIT_STRUCTURED +
+ + +

The shader resource is a read-and-write structured buffer.

+
+ + ff728731 + D3D_SIT_UAV_RWSTRUCTURED + D3D_SIT_UAV_RWSTRUCTURED +
+ + +

The shader resource is a byte-address buffer.

+
+ + ff728731 + D3D_SIT_BYTEADDRESS + D3D_SIT_BYTEADDRESS +
+ + +

The shader resource is a read-and-write byte-address buffer.

+
+ + ff728731 + D3D_SIT_UAV_RWBYTEADDRESS + D3D_SIT_UAV_RWBYTEADDRESS +
+ + +

The shader resource is an append-structured buffer.

+
+ + ff728731 + D3D_SIT_UAV_APPEND_STRUCTURED + D3D_SIT_UAV_APPEND_STRUCTURED +
+ + +

The shader resource is a consume-structured buffer.

+
+ + ff728731 + D3D_SIT_UAV_CONSUME_STRUCTURED + D3D_SIT_UAV_CONSUME_STRUCTURED +
+ + +

The shader resource is a read-and-write structured buffer that uses the built-in counter to append or consume.

+
+ + ff728731 + D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER +
+ + +

Values that identify the class of a shader variable.

+
+ +

The class of a shader variable is not a programming class; the class identifies the variable class such as scalar, vector, object, and so on. -typed values are specified in the Class member of the structure.

+
+ + ff728733 + D3D_SHADER_VARIABLE_CLASS + D3D_SHADER_VARIABLE_CLASS +
+ + +

The shader variable is a scalar.

+
+ + ff728733 + D3D_SVC_SCALAR + D3D_SVC_SCALAR +
+ + +

The shader variable is a vector.

+
+ + ff728733 + D3D_SVC_VECTOR + D3D_SVC_VECTOR +
+ + +

The shader variable is a row-major matrix.

+
+ + ff728733 + D3D_SVC_MATRIX_ROWS + D3D_SVC_MATRIX_ROWS +
+ + +

The shader variable is a column-major matrix.

+
+ + ff728733 + D3D_SVC_MATRIX_COLUMNS + D3D_SVC_MATRIX_COLUMNS +
+ + +

The shader variable is an object.

+
+ + ff728733 + D3D_SVC_OBJECT + D3D_SVC_OBJECT +
+ + +

The shader variable is a structure.

+
+ + ff728733 + D3D_SVC_STRUCT + D3D_SVC_STRUCT +
+ + +

The shader variable is a class.

+
+ + ff728733 + D3D_SVC_INTERFACE_CLASS + D3D_SVC_INTERFACE_CLASS +
+ + +

The shader variable is an interface.

+
+ + ff728733 + D3D_SVC_INTERFACE_POINTER + D3D_SVC_INTERFACE_POINTER +
+ + +

Values that identify information about a shader variable.

+
+ +

A call to the method returns values in the uFlags member of a structure.

+
+ + ff728734 + D3D_SHADER_VARIABLE_FLAGS + D3D_SHADER_VARIABLE_FLAGS +
+ + +

Indicates that the registers assigned to this shader variable were explicitly declared in shader code (instead of automatically assigned by the compiler).

+
+ + ff728734 + D3D_SVF_USERPACKED + D3D_SVF_USERPACKED +
+ + +

Indicates that this variable is used by this shader. This value confirms that a particular shader variable (which can be common to many different shaders) is indeed used by a particular shader.

+
+ + ff728734 + D3D_SVF_USED + D3D_SVF_USED +
+ + +

Indicates that this variable is an interface.

+
+ + ff728734 + D3D_SVF_INTERFACE_POINTER + D3D_SVF_INTERFACE_POINTER +
+ + +

Indicates that this variable is a parameter of an interface.

+
+ + ff728734 + D3D_SVF_INTERFACE_PARAMETER + D3D_SVF_INTERFACE_PARAMETER +
+ + + None. + + + None + None + + + +

Values that identify various data, texture, and buffer types that can be assigned to a shader variable.

+
+ +

A call to the method returns a value in the Type member of a structure.

The types in a structured buffer describe the structure of the elements in the buffer. The layout of these types generally match their C++ struct counterparts. The following examples show structured buffers:

struct mystruct {float4 val; uint ind;}; RWStructuredBuffer<mystruct> rwbuf;	
+            RWStructuredBuffer<float3> rwbuf2;
+
+ + ff728735 + D3D_SHADER_VARIABLE_TYPE + D3D_SHADER_VARIABLE_TYPE +
+ + +

The variable is a void reference.

+
+ + ff728735 + D3D_SVT_VOID + D3D_SVT_VOID +
+ + +

The variable is a boolean.

+
+ + ff728735 + D3D_SVT_BOOL + D3D_SVT_BOOL +
+ + +

The variable is an integer.

+
+ + ff728735 + D3D_SVT_INT + D3D_SVT_INT +
+ + +

The variable is a floating-point number.

+
+ + ff728735 + D3D_SVT_FLOAT + D3D_SVT_FLOAT +
+ + +

The variable is a string.

+
+ + ff728735 + D3D_SVT_STRING + D3D_SVT_STRING +
+ + +

The variable is a texture.

+
+ + ff728735 + D3D_SVT_TEXTURE + D3D_SVT_TEXTURE +
+ + +

The variable is a 1D texture.

+
+ + ff728735 + D3D_SVT_TEXTURE1D + D3D_SVT_TEXTURE1D +
+ + +

The variable is a 2D texture.

+
+ + ff728735 + D3D_SVT_TEXTURE2D + D3D_SVT_TEXTURE2D +
+ + +

The variable is a 3D texture.

+
+ + ff728735 + D3D_SVT_TEXTURE3D + D3D_SVT_TEXTURE3D +
+ + +

The variable is a texture cube.

+
+ + ff728735 + D3D_SVT_TEXTURECUBE + D3D_SVT_TEXTURECUBE +
+ + +

The variable is a sampler.

+
+ + ff728735 + D3D_SVT_SAMPLER + D3D_SVT_SAMPLER +
+ + +

The variable is a pixel shader.

+
+ + ff728735 + D3D_SVT_SAMPLER1D + D3D_SVT_SAMPLER1D +
+ + +

The variable is a vertex shader.

+
+ + ff728735 + D3D_SVT_SAMPLER2D + D3D_SVT_SAMPLER2D +
+ + +

The variable is an unsigned integer.

+
+ + ff728735 + D3D_SVT_SAMPLER3D + D3D_SVT_SAMPLER3D +
+ + +

The variable is an 8-bit unsigned integer.

+
+ + ff728735 + D3D_SVT_SAMPLERCUBE + D3D_SVT_SAMPLERCUBE +
+ + +

The variable is a pixel shader.

+
+ + ff728735 + D3D_SVT_PIXELSHADER + D3D_SVT_PIXELSHADER +
+ + +

The variable is a vertex shader.

+
+ + ff728735 + D3D_SVT_VERTEXSHADER + D3D_SVT_VERTEXSHADER +
+ + +

The variable is a depth-stencil-state object.

+
+ + ff728735 + D3D_SVT_PIXELFRAGMENT + D3D_SVT_PIXELFRAGMENT +
+ + +

The variable is a blend-state object.

+
+ + ff728735 + D3D_SVT_VERTEXFRAGMENT + D3D_SVT_VERTEXFRAGMENT +
+ + +

The variable is an unsigned integer.

+
+ + ff728735 + D3D_SVT_UINT + D3D_SVT_UINT +
+ + +

The variable is an 8-bit unsigned integer.

+
+ + ff728735 + D3D_SVT_UINT8 + D3D_SVT_UINT8 +
+ + +

The variable is a geometry shader.

+
+ + ff728735 + D3D_SVT_GEOMETRYSHADER + D3D_SVT_GEOMETRYSHADER +
+ + +

The variable is a rasterizer-state object.

+
+ + ff728735 + D3D_SVT_RASTERIZER + D3D_SVT_RASTERIZER +
+ + +

The variable is a depth-stencil-state object.

+
+ + ff728735 + D3D_SVT_DEPTHSTENCIL + D3D_SVT_DEPTHSTENCIL +
+ + +

The variable is a blend-state object.

+
+ + ff728735 + D3D_SVT_BLEND + D3D_SVT_BLEND +
+ + +

The variable is a buffer.

+
+ + ff728735 + D3D_SVT_BUFFER + D3D_SVT_BUFFER +
+ + +

The variable is a constant buffer.

+
+ + ff728735 + D3D_SVT_CBUFFER + D3D_SVT_CBUFFER +
+ + +

The variable is a texture buffer.

+
+ + ff728735 + D3D_SVT_TBUFFER + D3D_SVT_TBUFFER +
+ + +

The variable is a 1D-texture array.

+
+ + ff728735 + D3D_SVT_TEXTURE1DARRAY + D3D_SVT_TEXTURE1DARRAY +
+ + +

The variable is a 2D-texture array.

+
+ + ff728735 + D3D_SVT_TEXTURE2DARRAY + D3D_SVT_TEXTURE2DARRAY +
+ + +

The variable is a render-target view.

+
+ + ff728735 + D3D_SVT_RENDERTARGETVIEW + D3D_SVT_RENDERTARGETVIEW +
+ + +

The variable is a depth-stencil view.

+
+ + ff728735 + D3D_SVT_DEPTHSTENCILVIEW + D3D_SVT_DEPTHSTENCILVIEW +
+ + +

The variable is a 2D-multisampled texture.

+
+ + ff728735 + D3D_SVT_TEXTURE2DMS + D3D_SVT_TEXTURE2DMS +
+ + +

The variable is a 2D-multisampled-texture array.

+
+ + ff728735 + D3D_SVT_TEXTURE2DMSARRAY + D3D_SVT_TEXTURE2DMSARRAY +
+ + +

The variable is a texture-cube array.

+
+ + ff728735 + D3D_SVT_TEXTURECUBEARRAY + D3D_SVT_TEXTURECUBEARRAY +
+ + +

The variable holds a compiled hull-shader binary.

+
+ + ff728735 + D3D_SVT_HULLSHADER + D3D_SVT_HULLSHADER +
+ + +

The variable holds a compiled domain-shader binary.

+
+ + ff728735 + D3D_SVT_DOMAINSHADER + D3D_SVT_DOMAINSHADER +
+ + +

The variable is an interface.

+
+ + ff728735 + D3D_SVT_INTERFACE_POINTER + D3D_SVT_INTERFACE_POINTER +
+ + +

The variable holds a compiled compute-shader binary.

+
+ + ff728735 + D3D_SVT_COMPUTESHADER + D3D_SVT_COMPUTESHADER +
+ + +

The variable is a double precision (64-bit) floating-point number.

+
+ + ff728735 + D3D_SVT_DOUBLE + D3D_SVT_DOUBLE +
+ + +

The variable is a 1D read-and-write texture.

+
+ + ff728735 + D3D_SVT_RWTEXTURE1D + D3D_SVT_RWTEXTURE1D +
+ + +

The variable is an array of 1D read-and-write textures.

+
+ + ff728735 + D3D_SVT_RWTEXTURE1DARRAY + D3D_SVT_RWTEXTURE1DARRAY +
+ + +

The variable is a 2D read-and-write texture.

+
+ + ff728735 + D3D_SVT_RWTEXTURE2D + D3D_SVT_RWTEXTURE2D +
+ + +

The variable is an array of 2D read-and-write textures.

+
+ + ff728735 + D3D_SVT_RWTEXTURE2DARRAY + D3D_SVT_RWTEXTURE2DARRAY +
+ + +

The variable is a 3D read-and-write texture.

+
+ + ff728735 + D3D_SVT_RWTEXTURE3D + D3D_SVT_RWTEXTURE3D +
+ + +

The variable is a read-and-write buffer.

+
+ + ff728735 + D3D_SVT_RWBUFFER + D3D_SVT_RWBUFFER +
+ + +

The variable is a byte-address buffer.

+
+ + ff728735 + D3D_SVT_BYTEADDRESS_BUFFER + D3D_SVT_BYTEADDRESS_BUFFER +
+ + +

The variable is a read-and-write byte-address buffer.

+
+ + ff728735 + D3D_SVT_RWBYTEADDRESS_BUFFER + D3D_SVT_RWBYTEADDRESS_BUFFER +
+ + +

The variable is a structured buffer.

For more information about structured buffer, see the Remarks section.

+
+ + ff728735 + D3D_SVT_STRUCTURED_BUFFER + D3D_SVT_STRUCTURED_BUFFER +
+ + +

The variable is a read-and-write structured buffer.

+
+ + ff728735 + D3D_SVT_RWSTRUCTURED_BUFFER + D3D_SVT_RWSTRUCTURED_BUFFER +
+ + +

The variable is an append structured buffer.

+
+ + ff728735 + D3D_SVT_APPEND_STRUCTURED_BUFFER + D3D_SVT_APPEND_STRUCTURED_BUFFER +
+ + +

The variable is a consume structured buffer.

+
+ + ff728735 + D3D_SVT_CONSUME_STRUCTURED_BUFFER + D3D_SVT_CONSUME_STRUCTURED_BUFFER +
+ + +

Indicates shader type.

+
+ + ff476214 + D3D11_SHADER_VERSION_TYPE + D3D11_SHADER_VERSION_TYPE +
+ + +

Pixel shader.

+
+ + ff476214 + D3D11_SHVER_PIXEL_SHADER + D3D11_SHVER_PIXEL_SHADER +
+ + +

Vertex shader.

+
+ + ff476214 + D3D11_SHVER_VERTEX_SHADER + D3D11_SHVER_VERTEX_SHADER +
+ + +

Geometry shader.

+
+ + ff476214 + D3D11_SHVER_GEOMETRY_SHADER + D3D11_SHVER_GEOMETRY_SHADER +
+ + +

Hull shader.

+
+ + ff476214 + D3D11_SHVER_HULL_SHADER + D3D11_SHVER_HULL_SHADER +
+ + +

Domain shader.

+
+ + ff476214 + D3D11_SHVER_DOMAIN_SHADER + D3D11_SHVER_DOMAIN_SHADER +
+ + +

Compute shader.

+
+ + ff476214 + D3D11_SHVER_COMPUTE_SHADER + D3D11_SHVER_COMPUTE_SHADER +
+ + +

Strip flag options.

+
+ +

These flags are used by .

+
+ + dd607325 + D3DCOMPILER_STRIP_FLAGS + D3DCOMPILER_STRIP_FLAGS +
+ + + No documentation. + + + dd607325 + D3DCOMPILER_STRIP_REFLECTION_DATA + D3DCOMPILER_STRIP_REFLECTION_DATA + + + + No documentation. + + + dd607325 + D3DCOMPILER_STRIP_DEBUG_INFO + D3DCOMPILER_STRIP_DEBUG_INFO + + + + No documentation. + + + dd607325 + D3DCOMPILER_STRIP_TEST_BLOBS + D3DCOMPILER_STRIP_TEST_BLOBS + + + + None. + + + None + None + + + +

Values that identify shader parameters that use system-value semantics.

+
+ +

The values identify shader parameters that have predefined system-value semantics. These values are used in a shader-signature description. For more information about shader-signature description, see .

+
+ + ff728724 + D3D_NAME + D3D_NAME +
+ + +

This parameter does not use a predefined system-value semantic.

+
+ + ff728724 + D3D_NAME_UNDEFINED + D3D_NAME_UNDEFINED +
+ + +

This parameter contains position data.

+
+ + ff728724 + D3D_NAME_POSITION + D3D_NAME_POSITION +
+ + +

This parameter contains clip-distance data.

+
+ + ff728724 + D3D_NAME_CLIP_DISTANCE + D3D_NAME_CLIP_DISTANCE +
+ + +

This parameter contains cull-distance data.

+
+ + ff728724 + D3D_NAME_CULL_DISTANCE + D3D_NAME_CULL_DISTANCE +
+ + +

This parameter contains a render-target-array index.

+
+ + ff728724 + D3D_NAME_RENDER_TARGET_ARRAY_INDEX + D3D_NAME_RENDER_TARGET_ARRAY_INDEX +
+ + +

This parameter contains a viewport-array index.

+
+ + ff728724 + D3D_NAME_VIEWPORT_ARRAY_INDEX + D3D_NAME_VIEWPORT_ARRAY_INDEX +
+ + +

This parameter contains a vertex ID.

+
+ + ff728724 + D3D_NAME_VERTEX_ID + D3D_NAME_VERTEX_ID +
+ + +

This parameter contains a primitive ID.

+
+ + ff728724 + D3D_NAME_PRIMITIVE_ID + D3D_NAME_PRIMITIVE_ID +
+ + +

This parameter contains an instance ID.

+
+ + ff728724 + D3D_NAME_INSTANCE_ID + D3D_NAME_INSTANCE_ID +
+ + +

This parameter contains data that identifies whether or not the primitive faces the camera.

+
+ + ff728724 + D3D_NAME_IS_FRONT_FACE + D3D_NAME_IS_FRONT_FACE +
+ + +

This parameter contains a sampler-array index.

+
+ + ff728724 + D3D_NAME_SAMPLE_INDEX + D3D_NAME_SAMPLE_INDEX +
+ + +

This parameter contains one of four tessellation factors that correspond to the amount of parts that a quad patch is broken into along the given edge. This flag is used to tessellate a quad patch.

+
+ + ff728724 + D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR + D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR +
+ + +

This parameter contains one of two tessellation factors that correspond to the amount of parts that a quad patch is broken into vertically and horizontally within the patch. This flag is used to tessellate a quad patch.

+
+ + ff728724 + D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR + D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR +
+ + +

This parameter contains one of three tessellation factors that correspond to the amount of parts that a tri patch is broken into along the given edge. This flag is used to tessellate a tri patch.

+
+ + ff728724 + D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR + D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR +
+ + +

This parameter contains the tessellation factor that corresponds to the amount of parts that a tri patch is broken into within the patch. This flag is used to tessellate a tri patch.

+
+ + ff728724 + D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR + D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR +
+ + +

This parameter contains the tessellation factor that corresponds to the number of lines broken into within the patch. This flag is used to tessellate an isolines patch.

+
+ + ff728724 + D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR + D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR +
+ + +

This parameter contains the tessellation factor that corresponds to the number of lines that are created within the patch. This flag is used to tessellate an isolines patch.

+
+ + ff728724 + D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR + D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR +
+ + +

This parameter contains render-target data.

+
+ + ff728724 + D3D_NAME_TARGET + D3D_NAME_TARGET +
+ + +

This parameter contains depth data.

+
+ + ff728724 + D3D_NAME_DEPTH + D3D_NAME_DEPTH +
+ + +

This parameter contains alpha-coverage data.

+
+ + ff728724 + D3D_NAME_COVERAGE + D3D_NAME_COVERAGE +
+ + +

This parameter signifies that the value is greater than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.

+
+ + ff728724 + D3D_NAME_DEPTH_GREATER_EQUAL + D3D_NAME_DEPTH_GREATER_EQUAL +
+ + +

This parameter signifies that the value is less than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.

+
+ + ff728724 + D3D_NAME_DEPTH_LESS_EQUAL + D3D_NAME_DEPTH_LESS_EQUAL +
+ + +

Values that identify domain options for tessellator data.

+
+ +

The data domain defines the type of data. This enumeration is used by .

+
+ + ff728737 + D3D_TESSELLATOR_DOMAIN + D3D_TESSELLATOR_DOMAIN +
+ + +

The data type is undefined.

+
+ + ff728737 + D3D_TESSELLATOR_DOMAIN_UNDEFINED + D3D_TESSELLATOR_DOMAIN_UNDEFINED +
+ + +

Isoline data.

+
+ + ff728737 + D3D_TESSELLATOR_DOMAIN_ISOLINE + D3D_TESSELLATOR_DOMAIN_ISOLINE +
+ + +

Triangle data.

+
+ + ff728737 + D3D_TESSELLATOR_DOMAIN_TRI + D3D_TESSELLATOR_DOMAIN_TRI +
+ + +

Quad data.

+
+ + ff728737 + D3D_TESSELLATOR_DOMAIN_QUAD + D3D_TESSELLATOR_DOMAIN_QUAD +
+ + +

Values that identify output primitive types.

+
+ +

The output primitive type determines how the tessellator output data is organized; this enumeration is used by .

+
+ + ff728738 + D3D_TESSELLATOR_OUTPUT_PRIMITIVE + D3D_TESSELLATOR_OUTPUT_PRIMITIVE +
+ + +

The output primitive type is undefined.

+
+ + ff728738 + D3D_TESSELLATOR_OUTPUT_UNDEFINED + D3D_TESSELLATOR_OUTPUT_UNDEFINED +
+ + +

The output primitive type is a point.

+
+ + ff728738 + D3D_TESSELLATOR_OUTPUT_POINT + D3D_TESSELLATOR_OUTPUT_POINT +
+ + +

The output primitive type is a line.

+
+ + ff728738 + D3D_TESSELLATOR_OUTPUT_LINE + D3D_TESSELLATOR_OUTPUT_LINE +
+ + +

The output primitive type is a clockwise triangle.

+
+ + ff728738 + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW +
+ + +

The output primitive type is a counter clockwise triangle.

+
+ + ff728738 + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW +
+ + +

Values that identify partitioning options.

+
+ +

During tessellation, the partition option helps to determine how the algorithm chooses the next partition value; this enumeration is used by .

+
+ + ff728739 + D3D_TESSELLATOR_PARTITIONING + D3D_TESSELLATOR_PARTITIONING +
+ + +

The partitioning type is undefined.

+
+ + ff728739 + D3D_TESSELLATOR_PARTITIONING_UNDEFINED + D3D_TESSELLATOR_PARTITIONING_UNDEFINED +
+ + +

Partition with integers only.

+
+ + ff728739 + D3D_TESSELLATOR_PARTITIONING_INTEGER + D3D_TESSELLATOR_PARTITIONING_INTEGER +
+ + +

Partition with a power-of-two number only.

+
+ + ff728739 + D3D_TESSELLATOR_PARTITIONING_POW2 + D3D_TESSELLATOR_PARTITIONING_POW2 +
+ + +

Partition with an odd, fractional number.

+
+ + ff728739 + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD +
+ + +

Partition with an even, fractional number.

+
+ + ff728739 + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN +
+ + +

This shader-reflection interface provides access to a constant buffer.

  • Methods
+
+ +

To create a constant-buffer interface, call or . This isn't a COM interface, so you don't need to worry about reference counts or releasing the interface when you're done with it.

+
+ + ff476591 + ID3D11ShaderReflectionConstantBuffer + ID3D11ShaderReflectionConstantBuffer +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a constant-buffer description.

+
+

A reference to a , which represents a shader-buffer description.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476592 + HRESULT ID3D11ShaderReflectionConstantBuffer::GetDesc([Out] D3D11_SHADER_BUFFER_DESC* pDesc) + ID3D11ShaderReflectionConstantBuffer::GetDesc +
+ + +

Get a shader-reflection variable by index.

+
+

Zero-based index.

+

A reference to a shader-reflection variable interface (see Interface).

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476593 + ID3D11ShaderReflectionVariable* ID3D11ShaderReflectionConstantBuffer::GetVariableByIndex([In] unsigned int Index) + ID3D11ShaderReflectionConstantBuffer::GetVariableByIndex +
+ + +

Get a shader-reflection variable by name.

+
+

Variable name.

+

Returns a sentinel object (end of list marker). To determine if GetVariableByName successfully completed, call and check the returned ; any return value other than success means that GetVariableByName failed.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476594 + ID3D11ShaderReflectionVariable* ID3D11ShaderReflectionConstantBuffer::GetVariableByName([In] const char* Name) + ID3D11ShaderReflectionConstantBuffer::GetVariableByName +
+ + +

Get a constant-buffer description.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476592 + GetDesc + GetDesc + HRESULT ID3D11ShaderReflectionConstantBuffer::GetDesc([Out] D3D11_SHADER_BUFFER_DESC* pDesc) +
+ + +

is an include interface that the user implements to allow an application to call user-overridable methods for opening and closing shader #include files.

+
+ +

To use this interface, create an interface that inherits from and implement custom behavior for the methods.

+
+ + ff728746 + ID3DInclude + ID3DInclude +
+ + + A user-implemented method for opening and reading the contents of a shader #include file. + + A -typed value that indicates the location of the #include file. + Name of the #include file. + Pointer to the container that includes the #include file. + Stream that is associated with fileName to be read. This reference remains valid until is called. + HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes) + + + + A user-implemented method for closing a shader #include file. + + + If was successful, Close is guaranteed to be called before the API using the interface returns. + + This is a reference that was returned by the corresponding call. + HRESULT Close([None] LPCVOID pData) + + + +

A shader-reflection interface accesses shader information.

+
+ +

An interface can be retrieved for a shader by using . The following code illustrates retrieving a from a shader.

 pd3dDevice->CreatePixelShader( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(), g_pPSClassLinkage, &g_pPixelShader ); * pReflector = null; 	
+            ( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(),  IID_ID3D11ShaderReflection, (void**) &pReflector); 
+
+ + ff476590 + ID3D11ShaderReflection + ID3D11ShaderReflection +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a shader description.

+
+

A reference to a shader description. See .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476615 + HRESULT ID3D11ShaderReflection::GetDesc([Out] D3D11_SHADER_DESC* pDesc) + ID3D11ShaderReflection::GetDesc +
+ + +

Get a constant buffer by index.

+
+

Zero-based index.

+

A reference to a constant buffer (see Interface).

+ +

A constant buffer supplies either scalar constants or texture constants to a shader. A shader can use one or more constant buffers. For best performance, separate constants into buffers based on the frequency they are updated.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476612 + ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflection::GetConstantBufferByIndex([In] unsigned int Index) + ID3D11ShaderReflection::GetConstantBufferByIndex +
+ + +

Get a constant buffer by name.

+
+

The constant-buffer name.

+

A reference to a constant buffer (see Interface).

+ +

A constant buffer supplies either scalar constants or texture constants to a shader. A shader can use one or more constant buffers. For best performance, separate constants into buffers based on the frequency they are updated.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476613 + ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflection::GetConstantBufferByName([In] const char* Name) + ID3D11ShaderReflection::GetConstantBufferByName +
+ + +

Get a description of how a resource is bound to a shader.

+
+

A zero-based resource index.

+

A reference to an input-binding description. See .

+ +

A shader consists of executable code (the compiled HLSL functions) and a set of resources that supply the shader with input data. GetResourceBindingDesc gets information about how one resource in the set is bound as an input to the shader. The ResourceIndex parameter specifies the index for the resource.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476624 + HRESULT ID3D11ShaderReflection::GetResourceBindingDesc([In] unsigned int ResourceIndex,[Out] D3D11_SHADER_INPUT_BIND_DESC* pDesc) + ID3D11ShaderReflection::GetResourceBindingDesc +
+ + +

Get an input-parameter description for a shader.

+
+

A zero-based parameter index.

+

A reference to a shader-input-signature description. See .

+ +

An input-parameter description is also called a shader signature. The shader signature contains information about the input parameters such as the order or parameters, their data type, and a parameter semantic.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476617 + HRESULT ID3D11ShaderReflection::GetInputParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) + ID3D11ShaderReflection::GetInputParameterDesc +
+ + +

Get an output-parameter description for a shader.

+
+

A zero-based parameter index.

+

A reference to a shader-output-parameter description. See .

+ +

An output-parameter description is also called a shader signature. The shader signature contains information about the output parameters such as the order or parameters, their data type, and a parameter semantic.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476622 + HRESULT ID3D11ShaderReflection::GetOutputParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) + ID3D11ShaderReflection::GetOutputParameterDesc +
+ + +

Get a patch-constant parameter description for a shader.

+
+

A zero-based parameter index.

+

A reference to a shader-input-signature description. See .

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476623 + HRESULT ID3D11ShaderReflection::GetPatchConstantParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) + ID3D11ShaderReflection::GetPatchConstantParameterDesc +
+ + +

Gets a variable by name.

+
+

A reference to a string containing the variable name.

+

Returns a Interface interface.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476626 + ID3D11ShaderReflectionVariable* ID3D11ShaderReflection::GetVariableByName([In] const char* Name) + ID3D11ShaderReflection::GetVariableByName +
+ + +

Get a description of how a resource is bound to a shader.

+
+

The constant-buffer name of the resource.

+

A reference to an input-binding description. See .

+ +

A shader consists of executable code (the compiled HLSL functions) and a set of resources that supply the shader with input data. GetResourceBindingDescByName gets information about how one resource in the set is bound as an input to the shader. The Name parameter specifies the name of the resource.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476625 + HRESULT ID3D11ShaderReflection::GetResourceBindingDescByName([In] const char* Name,[Out] D3D11_SHADER_INPUT_BIND_DESC* pDesc) + ID3D11ShaderReflection::GetResourceBindingDescByName +
+ + +

Gets the number of Mov instructions.

+
+

Returns the number of Mov instructions.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476620 + unsigned int ID3D11ShaderReflection::GetMovInstructionCount() + ID3D11ShaderReflection::GetMovInstructionCount +
+ + +

Gets the number of Movc instructions.

+
+

Returns the number of Movc instructions.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476619 + unsigned int ID3D11ShaderReflection::GetMovcInstructionCount() + ID3D11ShaderReflection::GetMovcInstructionCount +
+ + +

Gets the number of conversion instructions.

+
+

Returns the number of conversion instructions.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476614 + unsigned int ID3D11ShaderReflection::GetConversionInstructionCount() + ID3D11ShaderReflection::GetConversionInstructionCount +
+ + +

Gets the number of bitwise instructions.

+
+

The number of bitwise instructions.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476611 + unsigned int ID3D11ShaderReflection::GetBitwiseInstructionCount() + ID3D11ShaderReflection::GetBitwiseInstructionCount +
+ + +

Gets the geometry-shader input-primitive description.

+
+

The input-primitive description, see D3D10_PRIMITIVE_TOPOLOGY.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476616 + D3D_PRIMITIVE ID3D11ShaderReflection::GetGSInputPrimitive() + ID3D11ShaderReflection::GetGSInputPrimitive +
+ + +

Indicates whether a shader is a sample frequency shader.

+
+

Returns true if the shader is a sample frequency shader; otherwise returns false.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476627 + BOOL ID3D11ShaderReflection::IsSampleFrequencyShader() + ID3D11ShaderReflection::IsSampleFrequencyShader +
+ + +

Gets the number of interface slots in a shader.

+
+

The number of interface slots in the shader.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476621 + unsigned int ID3D11ShaderReflection::GetNumInterfaceSlots() + ID3D11ShaderReflection::GetNumInterfaceSlots +
+ + +

Gets the minimum feature level.

+
+

A reference to one of the enumerated values in , which represents the minimum feature level.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476618 + HRESULT ID3D11ShaderReflection::GetMinFeatureLevel([Out] D3D_FEATURE_LEVEL* pLevel) + ID3D11ShaderReflection::GetMinFeatureLevel +
+ + +

Retrieves the sizes, in thread groups, of the X, Y, and Z dimensions of the shader's thread-group grid.

+
+

A reference to the size, in thread groups, of the x-dimension of the thread-group grid. The maximum size is 65535.

+

A reference to the size, in thread groups, of the y-dimension of the thread-group grid. The maximum size is 65535.

+

A reference to the size, in thread groups, of the z-dimension of the thread-group grid. The maximum size is 65535.

+

Returns the total size, in thread groups, of the thread-group grid by calculating the product of the size of each dimension.

*pSizeX * *pSizeY * *pSizeZ;
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff728742 + unsigned int ID3D11ShaderReflection::GetThreadGroupSize([Out, Optional] unsigned int* pSizeX,[Out, Optional] unsigned int* pSizeY,[Out, Optional] unsigned int* pSizeZ) + ID3D11ShaderReflection::GetThreadGroupSize +
+ + + Initializes a new instance of the class from a . + + + + + +

Get a shader description.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476615 + GetDesc + GetDesc + HRESULT ID3D11ShaderReflection::GetDesc([Out] D3D11_SHADER_DESC* pDesc) +
+ + +

Gets the number of Mov instructions.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476620 + GetMovInstructionCount + GetMovInstructionCount + unsigned int ID3D11ShaderReflection::GetMovInstructionCount() +
+ + +

Gets the number of Movc instructions.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476619 + GetMovcInstructionCount + GetMovcInstructionCount + unsigned int ID3D11ShaderReflection::GetMovcInstructionCount() +
+ + +

Gets the number of conversion instructions.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476614 + GetConversionInstructionCount + GetConversionInstructionCount + unsigned int ID3D11ShaderReflection::GetConversionInstructionCount() +
+ + +

Gets the number of bitwise instructions.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476611 + GetBitwiseInstructionCount + GetBitwiseInstructionCount + unsigned int ID3D11ShaderReflection::GetBitwiseInstructionCount() +
+ + +

Gets the geometry-shader input-primitive description.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476616 + GetGSInputPrimitive + GetGSInputPrimitive + D3D_PRIMITIVE ID3D11ShaderReflection::GetGSInputPrimitive() +
+ + +

Indicates whether a shader is a sample frequency shader.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476627 + IsSampleFrequencyShader + IsSampleFrequencyShader + BOOL ID3D11ShaderReflection::IsSampleFrequencyShader() +
+ + +

Gets the number of interface slots in a shader.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476621 + GetNumInterfaceSlots + GetNumInterfaceSlots + unsigned int ID3D11ShaderReflection::GetNumInterfaceSlots() +
+ + +

Gets the minimum feature level.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476618 + GetMinFeatureLevel + GetMinFeatureLevel + HRESULT ID3D11ShaderReflection::GetMinFeatureLevel([Out] D3D_FEATURE_LEVEL* pLevel) +
+ + +

This shader-reflection interface provides access to variable type.

  • Methods
+
+ +

The get a shader-reflection-type interface, call . This isn't a COM interface, so you don't need to worry about reference counts or releasing the interface when you're done with it.

+
+ + ff476595 + ID3D11ShaderReflectionType + ID3D11ShaderReflectionType +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the description of a shader-reflection-variable type.

+
+

A reference to a shader-type description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476597 + HRESULT ID3D11ShaderReflectionType::GetDesc([Out] D3D11_SHADER_TYPE_DESC* pDesc) + ID3D11ShaderReflectionType::GetDesc +
+ + +

Get a shader-reflection-variable type by index.

+
+

Zero-based index.

+

A reference to a Interface.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476599 + ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetMemberTypeByIndex([In] unsigned int Index) + ID3D11ShaderReflectionType::GetMemberTypeByIndex +
+ + +

Get a shader-reflection-variable type by name.

+
+

Member name.

+

A reference to a Interface.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476600 + ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetMemberTypeByName([In] const char* Name) + ID3D11ShaderReflectionType::GetMemberTypeByName +
+ + +

Get a shader-reflection-variable type.

+
+

Zero-based index.

+

The variable type.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476601 + const char* ID3D11ShaderReflectionType::GetMemberTypeName([In] unsigned int Index) + ID3D11ShaderReflectionType::GetMemberTypeName +
+ + +

Indicates whether two Interface references have the same underlying type.

+
+ No documentation. +

Returns if the references have the same underlying type; otherwise returns S_FALSE.

+ +

IsEqual indicates whether the sources of the Interface references have the same underlying type. For example, if two Interface references were retrieved from variables, IsEqual can be used to see if the variables have the same type.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476605 + HRESULT ID3D11ShaderReflectionType::IsEqual([In] ID3D11ShaderReflectionType* pType) + ID3D11ShaderReflectionType::IsEqual +
+ + +

Gets the base class of a class.

+
+

Returns a reference to a Interface containing the base class type. Returns null if the class does not have a base class.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476603 + ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetSubType() + ID3D11ShaderReflectionType::GetSubType +
+ + +

Gets an Interface interface containing the variable base class type.

+
+

Returns A reference to a Interface.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476596 + ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetBaseClass() + ID3D11ShaderReflectionType::GetBaseClass +
+ + +

Gets the number of interfaces.

+
+

Returns the number of interfaces.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476602 + unsigned int ID3D11ShaderReflectionType::GetNumInterfaces() + ID3D11ShaderReflectionType::GetNumInterfaces +
+ + +

Get an interface by index.

+
+

Zero-based index.

+

A reference to a Interface.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476598 + ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetInterfaceByIndex([In] unsigned int uIndex) + ID3D11ShaderReflectionType::GetInterfaceByIndex +
+ + +

Indicates whether a variable is of the specified type.

+
+

A reference to a Interface.

+

Returns if object being queried is equal to or inherits from the type in the pType parameter; otherwise returns S_FALSE.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476606 + HRESULT ID3D11ShaderReflectionType::IsOfType([In] ID3D11ShaderReflectionType* pType) + ID3D11ShaderReflectionType::IsOfType +
+ + +

Indicates whether a class type implements an interface.

+
+

A reference to a Interface.

+

Returns if the interface is implemented; otherwise return S_FALSE.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476604 + HRESULT ID3D11ShaderReflectionType::ImplementsInterface([In] ID3D11ShaderReflectionType* pBase) + ID3D11ShaderReflectionType::ImplementsInterface +
+ + + Indicates whether two references have the same underlying type. + + + IsEqual indicates whether the sources of the references have the same underlying type. For example, if two ID3D11ShaderReflectionType Interface references were retrieved from variables, IsEqual can be used to see if the variables have the same type. This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. + + A reference to a . + Returns true if the references have the same underlying type; otherwise returns false. + HRESULT ID3D11ShaderReflectionType::IsEqual([In] ID3D11ShaderReflectionType* pType) + + + + Indicates whether a variable is of the specified type. + + + This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. + + A reference to a . + Returns true if object being queried is equal to or inherits from the type in the pType parameter; otherwise returns false. + HRESULT ID3D11ShaderReflectionType::IsOfType([In] ID3D11ShaderReflectionType* pType) + + + + Indicates whether a class type implements an interface. + + + This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. + + A reference to a . + Returns true if the interface is implemented; otherwise return false. + HRESULT ID3D11ShaderReflectionType::ImplementsInterface([In] ID3D11ShaderReflectionType* pBase) + + + +

Get the description of a shader-reflection-variable type.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476597 + GetDesc + GetDesc + HRESULT ID3D11ShaderReflectionType::GetDesc([Out] D3D11_SHADER_TYPE_DESC* pDesc) +
+ + +

Gets the base class of a class.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476603 + GetSubType + GetSubType + ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetSubType() +
+ + +

Gets an Interface interface containing the variable base class type.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476596 + GetBaseClass + GetBaseClass + ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetBaseClass() +
+ + +

Gets the number of interfaces.

+
+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476602 + GetNumInterfaces + GetNumInterfaces + unsigned int ID3D11ShaderReflectionType::GetNumInterfaces() +
+ + +

This shader-reflection interface provides access to a variable.

  • Methods
+
+ +

To get a shader-reflection-variable interface, call a method like . This isn't a COM interface, so you don't need to worry about reference counts or releasing the interface when you're done with it.

+
+ + ff476607 + ID3D11ShaderReflectionVariable + ID3D11ShaderReflectionVariable +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a shader-variable description.

+
+

A reference to a shader-variable description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

This method can be used to determine if the Interface is valid, the method returns E_FAIL when the variable is not valid.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476608 + HRESULT ID3D11ShaderReflectionVariable::GetDesc([Out] D3D11_SHADER_VARIABLE_DESC* pDesc) + ID3D11ShaderReflectionVariable::GetDesc +
+ + +

Get a shader-variable type.

+
+

A reference to a Interface.

+ +

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476610 + ID3D11ShaderReflectionType* ID3D11ShaderReflectionVariable::GetType() + ID3D11ShaderReflectionVariable::GetType +
+ + + No documentation. + + No documentation. + + ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflectionVariable::GetBuffer() + ID3D11ShaderReflectionVariable::GetBuffer + + + +

Gets the corresponding interface slot for a variable that represents an interface reference.

+
+

Index of the array element to get the slot number for. For a non-array variable this value will be zero.

+

Returns the index of the interface in the interface array.

+ +

GetInterfaceSlot gets the corresponding slot in an dynamic linkage array for an interface instance. The returned slot number is used to set an interface instance to a particular class instance. See the HLSL Interfaces and Classes overview for additional information.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476609 + unsigned int ID3D11ShaderReflectionVariable::GetInterfaceSlot([In] unsigned int uArrayIndex) + ID3D11ShaderReflectionVariable::GetInterfaceSlot +
+ + +

Get a shader-variable description.

+
+ +

This method can be used to determine if the Interface is valid, the method returns E_FAIL when the variable is not valid.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

+
+ + ff476608 + GetDesc + GetDesc + HRESULT ID3D11ShaderReflectionVariable::GetDesc([Out] D3D11_SHADER_VARIABLE_DESC* pDesc) +
+ + + No documentation. + + + GetBuffer + GetBuffer + ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflectionVariable::GetBuffer() + + + + Shadow callback for . + + + + + Return a pointer to the unmanaged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + + Internal Include Callback + + + + + A user-implemented method for opening and reading the contents of a shader #include file. + + This pointer + A -typed value that indicates the location of the #include file. + Name of the #include file. + Pointer to the container that includes the #include file. + Pointer to the buffer that Open returns that contains the include directives. This pointer remains valid until is called. + Pointer to the number of bytes that Open returns in ppData. + The user-implemented method should return S_OK. If Open fails when reading the #include file, the application programming interface (API) that caused Open to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions. + HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes) + + + + A user-implemented method for closing a shader #include file. + + + If was successful, Close is guaranteed to be called before the API using the interface returns. + + This pointer + Pointer to the buffer that contains the include directives. This is the pointer that was returned by the corresponding call. + The user-implemented Close method should return S_OK. If Close fails when it closes the #include file, the application programming interface (API) that caused Close to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions. + HRESULT Close([None] LPCVOID pData) + + + + The namespace provides managed Direct3D Compiler API. + + dd607340 + D3DCompiler + D3DCompiler + + + + No documentation. + + D3D11_REGISTER_COMPONENT_MASK_FLAG + + + + No documentation. + + D3D11_REGISTER_COMPONENT_MASK_ALL + + + + No documentation. + + D3D11_REGISTER_COMPONENT_MASK_COMPONENT_W + + + + No documentation. + + D3D11_REGISTER_COMPONENT_MASK_COMPONENT_X + + + + No documentation. + + D3D11_REGISTER_COMPONENT_MASK_COMPONENT_Y + + + + No documentation. + + D3D11_REGISTER_COMPONENT_MASK_COMPONENT_Z + + + + None. + + None + + + +

Describes a shader constant-buffer.

+
+ +

Constants are supplied to shaders in a shader-constant buffer. Get the description of a shader-constant-buffer by calling .

+
+ + ff476208 + D3D11_SHADER_BUFFER_DESC + D3D11_SHADER_BUFFER_DESC +
+ + +

The name of the buffer.

+
+ + ff476208 + const char* Name + char Name +
+ + +

A -typed value that indicates the intended use of the constant data.

+
+ + ff476208 + D3D_CBUFFER_TYPE Type + D3D_CBUFFER_TYPE Type +
+ + +

The number of unique variables.

+
+ + ff476208 + unsigned int Variables + unsigned int Variables +
+ + +

Buffer size (in bytes).

+
+ + ff476208 + unsigned int Size + unsigned int Size +
+ + +

A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies properties for the shader constant-buffer.

+
+ + ff476208 + D3D_SHADER_CBUFFER_FLAGS uFlags + D3D_SHADER_CBUFFER_FLAGS uFlags +
+ + +

Describes how a shader resource is bound to a shader input.

+
+ +

Get a shader-input-signature description by calling or .

+
+ + ff476210 + D3D11_SHADER_INPUT_BIND_DESC + D3D11_SHADER_INPUT_BIND_DESC +
+ + +

Name of the shader resource.

+
+ + ff476210 + const char* Name + char Name +
+ + +

A -typed value that identifies the type of data in the resource.

+
+ + ff476210 + D3D_SHADER_INPUT_TYPE Type + D3D_SHADER_INPUT_TYPE Type +
+ + +

Starting bind point.

+
+ + ff476210 + unsigned int BindPoint + unsigned int BindPoint +
+ + +

Number of contiguous bind points for arrays.

+
+ + ff476210 + unsigned int BindCount + unsigned int BindCount +
+ + +

A combination of -typed values for shader input-parameter options.

+
+ + ff476210 + D3D_SHADER_INPUT_FLAGS uFlags + D3D_SHADER_INPUT_FLAGS uFlags +
+ + +

If the input is a texture, the -typed value that identifies the return type.

+
+ + ff476210 + D3D_RESOURCE_RETURN_TYPE ReturnType + D3D_RESOURCE_RETURN_TYPE ReturnType +
+ + +

A -typed value that identifies the dimensions of the bound resource.

+
+ + ff476210 + D3D_SRV_DIMENSION Dimension + D3D_SRV_DIMENSION Dimension +
+ + +

The number of samples for a multisampled texture; when a texture isn't multisampled, the value is set to -1 (0xFFFFFFFF).

+
+ + ff476210 + unsigned int NumSamples + unsigned int NumSamples +
+ + +

Describes shader data.

+
+ +

An array of structures is passed to to compress the shader data into a more compact form.

+
+ + ff728721 + D3D_SHADER_DATA + D3D_SHADER_DATA +
+ + +

A reference to shader data.

+
+ + ff728721 + const void* pBytecode + void pBytecode +
+ + +

Length of shader data that pBytecode points to.

+
+ + ff728721 + SIZE_T BytecodeLength + SIZE_T BytecodeLength +
+ + +

Describes a shader.

+
+ +

A shader is written in HLSL and compiled into an intermediate language by the HLSL compiler. The shader description returns information about the compiled shader. Get a shader description by calling .

+
+ + ff476209 + D3D11_SHADER_DESC + D3D11_SHADER_DESC +
+ + +

Shader version.

+
+ + ff476209 + unsigned int Version + unsigned int Version +
+ + +

The name of the originator of the shader.

+
+ + ff476209 + const char* Creator + char Creator +
+ + +

Shader compilation/parse flags.

+
+ + ff476209 + D3DCOMPILE_SHADER_FLAGS Flags + D3DCOMPILE_SHADER_FLAGS Flags +
+ + +

The number of shader-constant buffers.

+
+ + ff476209 + unsigned int ConstantBuffers + unsigned int ConstantBuffers +
+ + +

The number of resource (textures and buffers) bound to a shader.

+
+ + ff476209 + unsigned int BoundResources + unsigned int BoundResources +
+ + +

The number of parameters in the input signature.

+
+ + ff476209 + unsigned int InputParameters + unsigned int InputParameters +
+ + +

The number of parameters in the output signature.

+
+ + ff476209 + unsigned int OutputParameters + unsigned int OutputParameters +
+ + +

The number of intermediate-language instructions in the compiled shader.

+
+ + ff476209 + unsigned int InstructionCount + unsigned int InstructionCount +
+ + +

The number of temporary registers in the compiled shader.

+
+ + ff476209 + unsigned int TempRegisterCount + unsigned int TempRegisterCount +
+ + +

Number of temporary arrays used.

+
+ + ff476209 + unsigned int TempArrayCount + unsigned int TempArrayCount +
+ + +

Number of constant defines.

+
+ + ff476209 + unsigned int DefCount + unsigned int DefCount +
+ + +

Number of declarations (input + output).

+
+ + ff476209 + unsigned int DclCount + unsigned int DclCount +
+ + +

Number of non-categorized texture instructions.

+
+ + ff476209 + unsigned int TextureNormalInstructions + unsigned int TextureNormalInstructions +
+ + +

Number of texture load instructions

+
+ + ff476209 + unsigned int TextureLoadInstructions + unsigned int TextureLoadInstructions +
+ + +

Number of texture comparison instructions

+
+ + ff476209 + unsigned int TextureCompInstructions + unsigned int TextureCompInstructions +
+ + +

Number of texture bias instructions

+
+ + ff476209 + unsigned int TextureBiasInstructions + unsigned int TextureBiasInstructions +
+ + +

Number of texture gradient instructions.

+
+ + ff476209 + unsigned int TextureGradientInstructions + unsigned int TextureGradientInstructions +
+ + +

Number of floating point arithmetic instructions used.

+
+ + ff476209 + unsigned int FloatInstructionCount + unsigned int FloatInstructionCount +
+ + +

Number of signed integer arithmetic instructions used.

+
+ + ff476209 + unsigned int IntInstructionCount + unsigned int IntInstructionCount +
+ + +

Number of unsigned integer arithmetic instructions used.

+
+ + ff476209 + unsigned int UintInstructionCount + unsigned int UintInstructionCount +
+ + +

Number of static flow control instructions used.

+
+ + ff476209 + unsigned int StaticFlowControlCount + unsigned int StaticFlowControlCount +
+ + +

Number of dynamic flow control instructions used.

+
+ + ff476209 + unsigned int DynamicFlowControlCount + unsigned int DynamicFlowControlCount +
+ + +

Number of macro instructions used.

+
+ + ff476209 + unsigned int MacroInstructionCount + unsigned int MacroInstructionCount +
+ + +

Number of array instructions used.

+
+ + ff476209 + unsigned int ArrayInstructionCount + unsigned int ArrayInstructionCount +
+ + +

Number of cut instructions used.

+
+ + ff476209 + unsigned int CutInstructionCount + unsigned int CutInstructionCount +
+ + +

Number of emit instructions used.

+
+ + ff476209 + unsigned int EmitInstructionCount + unsigned int EmitInstructionCount +
+ + +

The -typed value that represents the geometry shader output topology.

+
+ + ff476209 + D3D_PRIMITIVE_TOPOLOGY GSOutputTopology + D3D_PRIMITIVE_TOPOLOGY GSOutputTopology +
+ + +

Geometry shader maximum output vertex count.

+
+ + ff476209 + unsigned int GSMaxOutputVertexCount + unsigned int GSMaxOutputVertexCount +
+ + +

The -typed value that represents the input primitive for a geometry shader or hull shader.

+
+ + ff476209 + D3D_PRIMITIVE InputPrimitive + D3D_PRIMITIVE InputPrimitive +
+ + +

Number of parameters in the patch-constant signature.

+
+ + ff476209 + unsigned int PatchConstantParameters + unsigned int PatchConstantParameters +
+ + +

Number of geometry shader instances.

+
+ + ff476209 + unsigned int cGSInstanceCount + unsigned int cGSInstanceCount +
+ + +

Number of control points in the hull shader and domain shader.

+
+ + ff476209 + unsigned int cControlPoints + unsigned int cControlPoints +
+ + +

The -typed value that represents the tessellator output-primitive type.

+
+ + ff476209 + D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive + D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive +
+ + +

The -typed value that represents the tessellator partitioning mode.

+
+ + ff476209 + D3D_TESSELLATOR_PARTITIONING HSPartitioning + D3D_TESSELLATOR_PARTITIONING HSPartitioning +
+ + +

The -typed value that represents the tessellator domain.

+
+ + ff476209 + D3D_TESSELLATOR_DOMAIN TessellatorDomain + D3D_TESSELLATOR_DOMAIN TessellatorDomain +
+ + +

Number of barrier instructions in a compute shader.

+
+ + ff476209 + unsigned int cBarrierInstructions + unsigned int cBarrierInstructions +
+ + +

Number of interlocked instructions in a compute shader.

+
+ + ff476209 + unsigned int cInterlockedInstructions + unsigned int cInterlockedInstructions +
+ + +

Number of texture writes in a compute shader.

+
+ + ff476209 + unsigned int cTextureStoreInstructions + unsigned int cTextureStoreInstructions +
+ + +

Describes a shader signature.

+
+ +

A shader can take n inputs and can produce m outputs. The order of the input (or output) parameters, their associated types, and any attached semantics make up the shader signature. Each shader has an input and an output signature.

When compiling a shader or an effect, some API calls validate shader signatures That is, they compare the output signature of one shader (like a vertex shader) with the input signature of another shader (like a pixel shader). This ensures that a shader outputs data that is compatible with a downstream shader that is consuming that data. Compatible means that a shader signature is a exact-match subset of the preceding shader stage. Exact match means parameter types and semantics must exactly match. Subset means that a parameter that is not required by a downstream stage, does not need to include that parameter in its shader signature.

Get a shader-signature from a shader or an effect by calling APIs such as .

+
+ + ff476215 + D3D11_SIGNATURE_PARAMETER_DESC + D3D11_SIGNATURE_PARAMETER_DESC +
+ + +

A per-parameter string that identifies how the data will be used. For more info, see Semantics.

+
+ + ff476215 + const char* SemanticName + char SemanticName +
+ + +

Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.

+
+ + ff476215 + unsigned int SemanticIndex + unsigned int SemanticIndex +
+ + +

The register that will contain this variable's data.

+
+ + ff476215 + unsigned int Register + unsigned int Register +
+ + +

A -typed value that identifies a predefined string that determines the functionality of certain pipeline stages.

+
+ + ff476215 + D3D_NAME SystemValueType + D3D_NAME SystemValueType +
+ + +

A -typed value that identifies the per-component-data type that is stored in a register. Each register can store up to four-components of data.

+
+ + ff476215 + D3D_REGISTER_COMPONENT_TYPE ComponentType + D3D_REGISTER_COMPONENT_TYPE ComponentType +
+ + +

Mask which indicates which components of a register are used.

+
+ + ff476215 + D3D11_REGISTER_COMPONENT_MASK_FLAG Mask + D3D11_REGISTER_COMPONENT_MASK_FLAG Mask +
+ + +

Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature).

+
+ + ff476215 + D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask + D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask +
+ + +

Indicates which stream the geometry shader is using for the signature parameter.

+
+ + ff476215 + unsigned int Stream + unsigned int Stream +
+ + +

Describes a shader-variable type.

+
+ +

Get a shader-variable-type description by calling .

+
+ + ff476212 + D3D11_SHADER_TYPE_DESC + D3D11_SHADER_TYPE_DESC +
+ + +

A -typed value that identifies the variable class as one of scalar, vector, matrix, object, and so on.

+
+ + ff476212 + D3D_SHADER_VARIABLE_CLASS Class + D3D_SHADER_VARIABLE_CLASS Class +
+ + +

A -typed value that identifies the variable type.

+
+ + ff476212 + D3D_SHADER_VARIABLE_TYPE Type + D3D_SHADER_VARIABLE_TYPE Type +
+ + +

Number of rows in a matrix. Otherwise a numeric type returns 1, any other type returns 0.

+
+ + ff476212 + unsigned int Rows + unsigned int Rows +
+ + +

Number of columns in a matrix. Otherwise a numeric type returns 1, any other type returns 0.

+
+ + ff476212 + unsigned int Columns + unsigned int Columns +
+ + +

Number of elements in an array; otherwise 0.

+
+ + ff476212 + unsigned int Elements + unsigned int Elements +
+ + +

Number of members in the structure; otherwise 0.

+
+ + ff476212 + unsigned int Members + unsigned int Members +
+ + +

Offset, in bytes, between the start of the parent structure and this variable. Can be 0 if not a structure member.

+
+ + ff476212 + unsigned int Offset + unsigned int Offset +
+ + +

Name of the shader-variable type. This member can be null if it isn't used. This member supports dynamic shader linkage interface types, which have names. For more info about dynamic shader linkage, see Dynamic Linking.

+
+ + ff476212 + const char* Name + char Name +
+ + +

Describes a shader variable.

+
+ +

Get a shader-variable description using reflection by calling .

As of the June 2010 update, DefaultValue emits default values for reflection.

+
+ + ff476213 + D3D11_SHADER_VARIABLE_DESC + D3D11_SHADER_VARIABLE_DESC +
+ + +

The variable name.

+
+ + ff476213 + const char* Name + char Name +
+ + +

Offset from the start of the parent structure to the beginning of the variable.

+
+ + ff476213 + unsigned int StartOffset + unsigned int StartOffset +
+ + +

Size of the variable (in bytes).

+
+ + ff476213 + unsigned int Size + unsigned int Size +
+ + +

A combination of -typed values that are combined by using a bitwise OR operation. The resulting value identifies shader-variable properties.

+
+ + ff476213 + D3D_SHADER_VARIABLE_FLAGS uFlags + D3D_SHADER_VARIABLE_FLAGS uFlags +
+ + +

The default value for initializing the variable.

+
+ + ff476213 + void* DefaultValue + void DefaultValue +
+ + + No documentation. + + + ff476213 + unsigned int StartTexture + unsigned int StartTexture + + + + No documentation. + + + ff476213 + unsigned int TextureSize + unsigned int TextureSize + + + + No documentation. + + + ff476213 + unsigned int StartSampler + unsigned int StartSampler + + + + No documentation. + + + ff476213 + unsigned int SamplerSize + unsigned int SamplerSize + + + + Represents the compiled bytecode of a shader or effect. + + Blob + + + + Use this ShaderFlags constant in order to compile an effect with old D3D10CompileEffectFromMemory. + + + + + Initializes a new instance of the class. + + A containing the compiled bytecode. + + + + Initializes a new instance of the class. + + A containing the compiled bytecode. + + + + Initializes a new instance of the class. + + The buffer. + + + + Initializes a new instance of the class. + + a pointer to a compiler bytecode + size of the bytecode + + + + Initializes a new instance of the class. + + The BLOB. + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + Name of the source file. + + The compiled shader bytecode, or null if the method fails. + + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + Name of the source file. + + The compiled shader bytecode, or null if the method fails. + + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + Name of the source file. + + The compiled shader bytecode, or null if the method fails. + + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + Name of the source file. + The compiled shader bytecode, or null if the method fails. + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + A set of macros to define during compilation. + An interface for handling include files. + Name of the source file. + + The compiled shader bytecode, or null if the method fails. + + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + A set of macros to define during compilation. + An interface for handling include files. + Name of the source file. + + The compiled shader bytecode, or null if the method fails. + + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + A set of macros to define during compilation. + An interface for handling include files. + Name of the source file. + + The compiled shader bytecode, or null if the method fails. + + + + + Compiles a shader or effect from a file on disk. + + The name of the source file to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + A set of macros to define during compilation. + An interface for handling include files. + The compiled shader bytecode, or null if the method fails. + + + + Compiles a shader or effect from a file on disk. + + The name of the source file to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + A set of macros to define during compilation. + An interface for handling include files. + + The compiled shader bytecode, or null if the method fails. + + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + Effect compilation options. + A set of macros to define during compilation. + An interface for handling include files. + Name of the source file used for reporting errors. Default is "unknown" + + The compiled shader bytecode, or null if the method fails. + + + + + Saves to the specified file name. + + Name of the file. + + + + Compresses a set of shaders into a more compact form. + + An array of structures that describe the set of shaders to compress. + A compressed . + HRESULT D3DCompressShaders([In] int uNumShaders,[In, Buffer] D3D_SHADER_DATA* pShaderData,[In] int uFlags,[Out] ID3DBlob** ppCompressedData) + + + + Decompresses all shaders from a compressed set. + + Returns an array of decompress shader bytecode. + HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) + + + + Decompresses one or more shaders from a compressed set. + + The number of shaders to decompress. + The index of the first shader to decompress. + Returns an array of decompress shader bytecode. + HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) + + + + Decompresses one or more shaders from a compressed set. + + An array of indexes that represent the shaders to decompress. + Returns an array of decompress shader bytecode. + HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) + + + + Disassembles compiled HLSL code back into textual source. + + The textual source of the shader or effect. + + + + Disassembles compiled HLSL code back into textual source. + + Flags affecting the output of the disassembly. + The textual source of the shader or effect. + + + + Disassembles compiled HLSL code back into textual source. + + Flags affecting the output of the disassembly. + Commenting information to embed in the disassembly. + The textual source of the shader or effect. + + + + Retrieves a specific part from a compilation result. + + + D3DGetBlobPart retrieves the part of a blob (arbitrary length data buffer) that contains the type of data that the Part parameter specifies. + + A -typed value that specifies the part of the buffer to retrieve. + Returns the extracted part. + HRESULT D3DGetBlobPart([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3D_BLOB_PART Part,[In] int Flags,[Out] ID3DBlob** ppPart) + + + + Loads from the specified stream. + + The stream. + A shader bytecode + + + + Saves this bytecode to the specified stream. + + The stream. + + + + Preprocesses the provided shader or effect source. + + A string containing the source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + Name of the source file. + The preprocessed shader source. + + + + Preprocesses the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + Name of the source file. + The preprocessed shader source. + + + + Preprocesses the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + Name of the source file. + The preprocessed shader source. + + + + Preprocesses the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to preprocess. + + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + Name of the source file. + The preprocessed shader source. + + + + Preprocesses the provided shader or effect source. + + A string containing the source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + Name of the source file. + The preprocessed shader source. + + + + Preprocesses a shader or effect from a file on disk. + + The name of the source file to compile. + The preprocessed shader source. + + + + Preprocesses a shader or effect from a file on disk. + + The name of the source file to compile. + A set of macros to define during preprocessing. + An interface for handling include files. + The preprocessed shader source. + + + + Preprocesses a shader or effect from a file on disk. + + The name of the source file to compile. + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + The preprocessed shader source. + + + + Strips extraneous information from a compiled shader or effect. + + Options specifying what to remove from the shader. + A string containing any errors that may have occurred. + HRESULT D3DStripShader([In, Buffer] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In] D3DCOMPILER_STRIP_FLAGS uStripFlags,[Out] ID3D10Blob** ppStrippedBlob) + + + + Cast this to the underlying byte buffer. + + + A byte buffer + + + + Read a compiled shader bytecode from a Stream and return a ShaderBytecode + + + + + + + Read a compiled shader bytecode from a Stream and return a ShaderBytecode + + + + + + + Gets the shader type and version string from the provided bytecode. + + The shader bytecode data. + The type and version string of the provided shader bytecode. + Is thrown when is null. + Is thrown when bytecode contains invalid data or the version could not be read. + Is thrown when bytecode contains invalid data. + + + + Reads the value between start and end bits from the provided token. + + The source of the data to read. + The start bit. + The end bit. + + + + + Gets the buffer pointer. + + + + + Gets this instance is composed of compressed shaders. + + + true if this instance is compressed; otherwise, false. + + + + + Represents a shader signature. + + + + + Initializes a new instance of the class. + + A pointer to a shader signature bytecode. + The size. + + + + Initializes a new instance of the class. + + The BLOB. + + + + Initializes a new instance of the class. + + The data. + + + + Initializes a new instance of the class. + + The data. + + + + Extracts the input and output signatures from a compiled shader or effect. + + The bytecode of the compiled shader or effect. + The input and output signatures of the shader or effect. + dd607329 + HRESULT D3DGetInputAndOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) + D3DGetInputAndOutputSignatureBlob + + + + Extracts the input signature from a compiled shader or effect. + + The bytecode of the compiled shader or effect. + The input signature of the shader or effect. + dd607330 + HRESULT D3DGetInputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) + D3DGetInputSignatureBlob + + + + Extracts the output signature from a compiled shader or effect. + + The bytecode of the compiled shader or effect. + The output signature of the shader or effect. + HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) + dd607331 + HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) + D3DGetOutputSignatureBlob + + + + Cast this to the underlying byte buffer. + + + A byte buffer + + + + Gets the raw data of the shader signature. + + + + + Represents a profile of a shader stage - stage type and version + + + + + Gets the shader version - that is the shader stage type + + For example, it is the "vs" part from "vs_5_0". + + + + Gets the major version of the shader profile. + + For example, it is the "5" part from "vs_5_0". + + + + Gets the minor version of the shader profile. + + For example, it is the "0" part from "vs_5_0". + + + + Gets the major version of the shader sub-profile. + + For example, it is the "9" part from "vs_4_0_profile_9_3". + + + + Gets the minor version of the shader sub-profile. + + For example, it is the "3" part from "vs_4_0_profile_9_3". + + + + Creates a new instance of the struct. + + The shader stage type. + The major version. + The minor version. + The profile major version. + The profile minor version. + + + + Returns the string representation of the current profile. + + The string representation, for example "ps_5_0" or "vs_4_0_profile_9_3". + + + + Gets the shader type prefix. + + Type prefix, for example "vs" or "ps". + + + + Gets the corresponding for this . + + The minimum that corresponds to current profile. + + + diff --git a/distribution/SharpDX.DXGI.dll b/distribution/SharpDX.DXGI.dll new file mode 100644 index 0000000000000000000000000000000000000000..b390e581d7a2d561d39c885d825c62a14946afda GIT binary patch literal 90624 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�)Q&ZrhNEzOM^CF5%nRp?ka z!Rb>I+~>3EjB|`?bK_Gc)31K0sP3viJyx@K7&ZxLBb~c?FUqw$;JX%E)B|XclkYj4X(&`HO^%xXk&w6G+t14>4%PXpC zgwc4usfkn`U!*G_vm<=$&CE2$bgG861Th=MQxoBaIw;J9c)XfsI@4U#<=WSsDJI41 zR#enaiB;FqRGT0zn6-3j&4enNBI)6!U+hg&N2O6GArf`VmZZ`=S5{ML%4QkCscY(K z?p_M7qAQdAP30$%=vYOKm^zW3#aLYh4JLZ*QkF3@P>*(( zVi=^lELD%S!&nMf6^BOK%Gk`GMoO*R85Iy1{IBLM*AOH$vmG^4QV}(&>ab z-5XPac@rmLyl^lAv)ZCXVrIOCRvWPuags&vV@kpIkW02X-v(oi!bA0M5`Pzua-vHq^ekT<)o^*M7@|EUzKL_vdoxE z#jI$wx}lOBhpVgTtV-&ZIk8GiVcd+FaT2%->*KZKO=YgDs9jza{foNBUs~>@>Uae$HLMlqQSYbc zMACAO;%SlOW>LD2MTP@kXtFOf!513u3t4vJj3nC(^T$C1%UT z(9X1It)ZH6Ql+v5{y_I><uXM7nbb_yRy!B>S zGE+_Mu4bO+o9y$^d8xR|CYMbp8(-EP-<(vA=^@Qrg!!kt3OX-U!|b>&v%6<4-qF*k ziyKBNRKBBT4;ls5JJHph-M+edk_TAIC8fH0)VOW_z+_AF%IRLJuQdXn(A|*9Wpm1?xf4?7P6+$DBWJ^K*_AQ| z#DuVA6ta=3Wu{WKbgM7DtCpEc)v`P+6T;@*5}Y!+bwW63brbAzL+wImP6$p8&FRVx zP7clqj_(SbnmUKayBQ%&y6>r;G9Q;k3+fh4sH#XTqQ}cx)B2!ruXVdJgHQSEnjno@ zsVk(K7@A^j0$KBx`a;x3N=1y+XlsShsUX5;%J4IzqSlbOIkYtpXVb<2`>be1T_veY zEJ0#ql+TTkrj*BL#_J=oiyCML!aAC$uc*Vu(A<+uqQxq2RoLvxub*0D43-(ByR`V6 zNQ-FN6wQs3tX;@XpeSA2k{MMsRVzrcNxw*mXaQ9%rqB|ES18Cge5Fn^f{UaUd4@?U zPphjsmSs|=@zvGwRV+`DRaK;?Vsd2_uXISVd4a*FPF%W_-&Pn6tFNLf&ckknE=4Lk zwT4zj6elff>*iL}(ZZINlAJYxR#p=l=v-RP;Ax;r6_vAUs@Je$a~IAcDMTNV1jbph zX)kDKYL6wX5&6_*R4+ymi&TmhQ@l|(OzNbX`be}c7ON4)f{#_*T#j?HYh6q45qPD~ zi(X@GY%N_Rs2QaU+B4A(onlPPt65P|Q$b1|=AMd08+eb{y*e`2YpH^sPJ8Ao;(JSL zGj=E@(GE4n%MW_tKuZbgp9}aUh`Gn5iZM#liw^E?YHv+NweeBcXhpIFcx>Tu%QvicOhO=L-&@3fw7n4;+0+2lm
NVq6(w+_r)U@4$<;4It5NWn#@K(~; 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 C + + + SharpDX.DXGI + + + + +

The interface represents a display sub-system (including one or more GPU's, DACs and video memory).

+
+ +

A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.

To enumerate the display sub-systems, use . To get an interface to the adapter for a particular device, use . To create a software adapter, use .

Windows?Phone?8: This API is supported.

+
+ + bb174523 + IDXGIAdapter + IDXGIAdapter +
+ + +

An interface is a base interface for all DXGI objects; supports associating caller-defined (private data) with an object and retrieval of an interface to the parent object.

+
+ +

implements base class functionality for several other interfaces: , , ,

Windows?Phone?8: This API is supported.

+
+ + bb174541 + IDXGIObject + IDXGIObject +
+ + + Gets the parent of the object. + + Type of the parent object + Returns the parent object based on the GUID of the type of the parent object. + bb174542 + HRESULT IDXGIObject::GetParent([In] const GUID& riid,[Out] void** ppParent) + IDXGIObject::GetParent + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets application-defined data to the object and associates that data with a .

+
+

A that identifies the data. Use this in a call to GetPrivateData to get the data.

+

The size of the object's data.

+

A reference to the object's data.

+

Returns one of the DXGI_ERROR values.

+ +

SetPrivateData makes a copy of the specified data and stores it with the object.

Private data that SetPrivateData stores in the object occupies the same storage space as private data that is stored by associated Direct3D objects (for example, by a Microsoft Direct3D?11 device through or by a Direct3D?11 child device through ).

The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the well-known private data () that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

 static const char c_szName[] = "My name";	
+            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
+            

You can use to track down memory leaks and understand performance characteristics of your applications. This information is reflected in the output of the debug layer that is related to memory leaks () and with the event tracing for Windows events that we've added to Windows?8. +

Windows?Phone?8: This API is supported.

+
+ + bb174544 + HRESULT IDXGIObject::SetPrivateData([In] const GUID& Name,[In] unsigned int DataSize,[In, Buffer] const void* pData) + IDXGIObject::SetPrivateData +
+ + +

Set an interface in the object's private data.

+
+

A identifying the interface.

+

The interface to set.

+

Returns one of the following DXGI_ERROR.

+ +

This API associates an interface reference with the object.

When the interface is set its reference count is incremented. When the data are overwritten (by calling SPD or SPDI with the same ) or the object is destroyed, ::Release() is called and the interface's reference count is decremented.

Windows?Phone?8: This API is supported.

+
+ + bb174545 + HRESULT IDXGIObject::SetPrivateDataInterface([In] const GUID& Name,[In] const IUnknown* pUnknown) + IDXGIObject::SetPrivateDataInterface +
+ + +

Get a reference to the object's data.

+
+

A identifying the data.

+

The size of the data.

+

Pointer to the data.

+

Returns one of the following DXGI_ERROR.

+ +

If the data returned is a reference to an , or one of its derivative classes, previously set by , you must call ::Release() on the reference before the reference is freed to decrement the reference count.

You can pass GUID_DeviceType in the Name parameter of GetPrivateData to retrieve the device type from the display adapter object (, , IDXGIAdapter2).

To get the type of device on which the display adapter was created

  1. Call IUnknown::QueryInterface on the or object to retrieve the object.
  2. Call GetParent on the object to retrieve the object.
  3. Call GetPrivateData on the object with GUID_DeviceType to retrieve the type of device on which the display adapter was created. pData will point to a value from the driver-type enumeration (for example, a value from ).

On Windows?7 or earlier, this type is either a value from or depending on which kind of device was created. On Windows?8, this type is always a value from . Don't use with GUID_DeviceType because the behavior when doing so is undefined.

Windows?Phone?8: This API is supported.

+
+ + bb174543 + HRESULT IDXGIObject::GetPrivateData([In] const GUID& Name,[InOut] unsigned int* pDataSize,[Out, Buffer] void* pData) + IDXGIObject::GetPrivateData +
+ + +

Gets the parent of the object.

+
+

The ID of the requested interface.

+

The address of a reference to the parent object.

+

Returns one of the DXGI_ERROR values.

+ +

Windows?Phone?8: This API is supported.

+
+ + bb174542 + HRESULT IDXGIObject::GetParent([In] const GUID& riid,[Out] void** ppParent) + IDXGIObject::GetParent +
+ + + Checks to see if a device interface for a graphics component is supported by the system. + + The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Checks to see if a device interface for a graphics component is supported by the system. + + the interface of the device version for which support is being checked. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Checks to see if a device interface for a graphics component is supported by the system. + + the interface of the device version for which support is being checked. + The user mode driver version of InterfaceName. This is only returned if the interface is supported. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Checks to see if a device interface for a graphics component is supported by the system. + + The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID. + The user mode driver version of InterfaceName. This is only returned if the interface is supported. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Gets an adapter (video card) outputs. + + The index of the output. + + An instance of + + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + + When the EnumOutputs method succeeds and fills the ppOutput parameter with the address of the reference to the output interface, EnumOutputs increments the output interface's reference count. To avoid a memory leak, when you finish using the output interface, call the Release method to decrement the reference count.EnumOutputs first returns the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumOutputs then returns other outputs. + + if the index is greater than the number of outputs, result code + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs + + + + Return the number of available outputs from this adapter. + + The number of outputs + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Enumerate adapter (video card) outputs.

+
+

The index of the output.

+

The address of a reference to an interface at the position specified by the Output parameter.

+

A code that indicates success or failure (see DXGI_ERROR). Will return if the index is greater than the number of outputs.

+ +

Note??If you call this API in a Session 0 process, it returns .

When the EnumOutputs method succeeds and fills the ppOutput parameter with the address of the reference to the output interface, EnumOutputs increments the output interface's reference count. To avoid a memory leak, when you finish using the output interface, call the Release method to decrement the reference count.

EnumOutputs first returns the output on which the desktop primary is displayed. This output corresponds with an index of zero. EnumOutputs then returns other outputs.

Windows?Phone?8: This API is supported.

+
+ + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs +
+ + +

Gets a DXGI 1.0 description of an adapter (or video card).

+
+

A reference to a structure that describes the adapter. This parameter must not be null. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID in the VendorId, DeviceId, SubSysId, and Revision members of and ?Software Adapter? for the description string in the Description member.

+

Returns if successful; otherwise returns E_INVALIDARG if the pDesc parameter is null.

+ +

Graphics apps can use the DXGI API to retrieve an accurate set of graphics memory values on systems that have Windows Display Driver Model (WDDM) drivers. The following are the critical steps involved.

  • Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the app must first confirm the driver model by using the following API.
     HasWDDMDriver()	
    +            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = null; HMODULE             hD3D9          = null; hD3D9 = LoadLibrary( L"d3d9.dll" ); if ( null == hD3D9 ) { return false; } // /*  Try to create  interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, "Direct3DCreate9Ex" ); return pD3D9Create9Ex != null;	
    +            } 
  • Retrieval of graphics memory values.? After the app determines the driver model to be WDDM, the app can use the Direct3D 10 or later API and DXGI to get the amount of graphics memory. After you create a Direct3D device, use this code to obtain a structure that contains the amount of available graphics memory.
      * pDXGIDevice;	
    +            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
    +             * pDXGIAdapter;	
    +            pDXGIDevice->GetAdapter(&pDXGIAdapter);	
    +             adapterDesc;	
    +            pDXGIAdapter->GetDesc(&adapterDesc); 

Windows?Phone?8: This API is supported.

+
+ + bb174526 + HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc) + IDXGIAdapter::GetDesc +
+ + +

Checks whether the system supports a device interface for a graphics component.

+
+

The of the interface of the device version for which support is being checked. For example, __uuidof().

+

The user mode driver version of InterfaceName. This is returned only if the interface is supported. This parameter can be null.

+

indicates that the interface is supported, otherwise is returned (For more information, see DXGI_ERROR).

+ +

Note??You can use CheckInterfaceSupport only to check whether a Direct3D 10.x interface is supported, and only on Windows Vista SP1 and later versions of the operating system. If you try to use CheckInterfaceSupport to check whether a Direct3D 11.x and later version interface is supported, CheckInterfaceSupport returns . Therefore, do not use CheckInterfaceSupport. Instead, to verify whether the operating system supports a particular interface, try to create the interface. For example, if you call the method and it fails, the operating system does not support the interface.

Windows?Phone?8: This API is supported.

+
+ + bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport +
+ + + Gets all outputs from this adapter. + + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs + + + +

Gets a DXGI 1.0 description of an adapter (or video card).

+
+ +

Graphics apps can use the DXGI API to retrieve an accurate set of graphics memory values on systems that have Windows Display Driver Model (WDDM) drivers. The following are the critical steps involved.

  • Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the app must first confirm the driver model by using the following API.
     HasWDDMDriver()	
    +            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = null; HMODULE             hD3D9          = null; hD3D9 = LoadLibrary( L"d3d9.dll" ); if ( null == hD3D9 ) { return false; } // /*  Try to create  interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, "Direct3DCreate9Ex" ); return pD3D9Create9Ex != null;	
    +            } 
  • Retrieval of graphics memory values.? After the app determines the driver model to be WDDM, the app can use the Direct3D 10 or later API and DXGI to get the amount of graphics memory. After you create a Direct3D device, use this code to obtain a structure that contains the amount of available graphics memory.
      * pDXGIDevice;	
    +            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
    +             * pDXGIAdapter;	
    +            pDXGIDevice->GetAdapter(&pDXGIAdapter);	
    +             adapterDesc;	
    +            pDXGIAdapter->GetDesc(&adapterDesc); 

Windows?Phone?8: This API is supported.

+
+ + bb174526 + GetDesc + GetDesc + HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc) +
+ + + The assembly provides managed DXGI API. + + hh404534 + DXGI + DXGI + + + + The namespace provides a managed DXGI API. + + hh404534 + DXGI + DXGI + + + +

An interface implements a derived class for DXGI objects that produce image data.

+
+ +

The interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to applications that do not use Direct3D to communicate with DXGI.

The Direct3D create device functions return a Direct3D device object. This Direct3D device object implements the interface. You can query this Direct3D device object for the device's corresponding interface. To retrieve the interface of a Direct3D device, use the following code:

 * pDXGIDevice;	
+            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
+            

Windows?Phone?8: This API is supported.

+
+ + bb174527 + IDXGIDevice + IDXGIDevice +
+ + + Gets the residency status of an array of resources. + + + The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called. Note that the residency status will constantly change. If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the DXGI_RESIDENCY_EVICTED_TO_DISK flag. Note??This method should not be called every frame as it incurs a non-trivial amount of overhead. + + An array of interfaces. + Returns an array of flags. Each element describes the residency status for corresponding element in the ppResources argument array. + HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[None] int NumResources) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Returns the adapter for the specified device.

+
+

The address of an interface reference to the adapter. This parameter must not be null.

+

Returns if successful; otherwise, returns one of the DXGI_ERROR that indicates failure. If the pAdapter parameter is null this method returns E_INVALIDARG.

+ +

If the GetAdapter method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.

Windows?Phone?8: This API is supported.

+
+ + bb174531 + HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter) + IDXGIDevice::GetAdapter +
+ + +

Returns a surface. This method is used internally and you should not call it directly in your application.

+
+

A reference to a structure that describes the surface.

+

The number of surfaces to create.

+

A DXGI_USAGE flag that specifies how the surface is expected to be used.

+

An optional reference to a structure that contains shared resource information for opening views of such resources.

+

The address of an interface reference to the first created surface.

+

Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

+ +

The CreateSurface method creates a buffer to exchange data between one or more devices. It is used internally, and you should not directly call it.

The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when it calls or to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to . +

Windows?Phone?8: This API is supported.

+
+ + bb174530 + HRESULT IDXGIDevice::CreateSurface([In] const DXGI_SURFACE_DESC* pDesc,[In] unsigned int NumSurfaces,[In] unsigned int Usage,[In, Optional] const DXGI_SHARED_RESOURCE* pSharedResource,[Out] IDXGISurface** ppSurface) + IDXGIDevice::CreateSurface +
+ + +

Gets the residency status of an array of resources.

+
+

An array of interfaces.

+

An array of flags. Each element describes the residency status for corresponding element in the ppResources argument array.

+

The number of resources in the ppResources argument array and pResidencyStatus argument array.

+

Returns if successful; otherwise, returns , E_INVALIDARG, or E_POINTER (see WinError.h for more information).

+ +

The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called.

Note??The residency status will constantly change.

If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the flag.

Note??This method should not be called every frame as it incurs a non-trivial amount of overhead.

Windows?Phone?8: This API is supported.

+
+ + bb174533 + HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources) + IDXGIDevice::QueryResourceResidency +
+ + +

Gets the residency status of an array of resources.

+
+

An array of interfaces.

+

An array of flags. Each element describes the residency status for corresponding element in the ppResources argument array.

+

The number of resources in the ppResources argument array and pResidencyStatus argument array.

+

Returns if successful; otherwise, returns , E_INVALIDARG, or E_POINTER (see WinError.h for more information).

+ +

The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called.

Note??The residency status will constantly change.

If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the flag.

Note??This method should not be called every frame as it incurs a non-trivial amount of overhead.

Windows?Phone?8: This API is supported.

+
+ + bb174533 + HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources) + IDXGIDevice::QueryResourceResidency +
+ + +

Sets the GPU thread priority.

+
+

A value that specifies the required GPU thread priority. This value must be between -7 and 7, inclusive, where 0 represents normal priority.

+

Return if successful; otherwise, returns E_INVALIDARG if the Priority parameter is invalid.

+ +

The values for the Priority parameter function as follows:

  • Positive values increase the likelihood that the GPU scheduler will grant GPU execution cycles to the device when rendering.
  • Negative values lessen the likelihood that the device will receive GPU execution cycles when devices compete for them.
  • The device is guaranteed to receive some GPU execution cycles at all settings.

To use the SetGPUThreadPriority method, you should have a comprehensive understanding of GPU scheduling. You should profile your application to ensure that it behaves as intended. If used inappropriately, the SetGPUThreadPriority method can impede rendering speed and result in a poor user experience.

Windows?Phone?8: This API is supported.

+
+ + bb174534 + HRESULT IDXGIDevice::SetGPUThreadPriority([In] int Priority) + IDXGIDevice::SetGPUThreadPriority +
+ + +

Gets the GPU thread priority.

+
+

A reference to a variable that receives a value that indicates the current GPU thread priority. The value will be between -7 and 7, inclusive, where 0 represents normal priority.

+

Return if successful; otherwise, returns E_POINTER if the pPriority parameter is null.

+ +

Windows?Phone?8: This API is supported.

+
+ + bb174532 + HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority) + IDXGIDevice::GetGPUThreadPriority +
+ + +

Returns the adapter for the specified device.

+
+ +

If the GetAdapter method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.

Windows?Phone?8: This API is supported.

+
+ + bb174531 + GetAdapter + GetAdapter + HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter) +
+ + +

Gets or sets the GPU thread priority.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + bb174532 + GetGPUThreadPriority / SetGPUThreadPriority + GetGPUThreadPriority + HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority) +
+ + +

Inherited from objects that are tied to the device so that they can retrieve a reference to it.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + bb174528 + IDXGIDeviceSubObject + IDXGIDeviceSubObject +
+ + + Retrieves the device. + + The interface that is returned can be any interface published by the device. + The associated device. + HRESULT IDXGIDeviceSubObject::GetDevice([In] GUID* riid,[Out] void** ppDevice) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the device.

+
+

The reference id for the device.

+

The address of a reference to the device.

+

A code that indicates success or failure (see DXGI_ERROR).

+ +

The type of interface that is returned can be any interface published by the device. For example, it could be an * called pDevice, and therefore the REFIID would be obtained by calling __uuidof(pDevice).

Windows?Phone?8: This API is supported.

+
+ + bb174529 + HRESULT IDXGIDeviceSubObject::GetDevice([In] const GUID& riid,[Out] void** ppDevice) + IDXGIDeviceSubObject::GetDevice +
+ + + Gets or sets the debug-name for this object. + + + The debug name. + + + + +

An interface implements methods for generating DXGI objects (which handle full screen transitions).

+
+ +

Create a factory by calling CreateDXGIFactory.

Because you can create a Direct3D device without creating a swap chain, you might need to retrieve the factory that is used to create the device in order to create a swap chain. + You can request the interface from the Direct3D device and then use the method to locate + the factory. The following code shows how.

 * pDXGIDevice;	
+            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);  * pDXGIAdapter;	
+            hr = pDXGIDevice->GetParent(__uuidof(), (void **)&pDXGIAdapter);  * pIDXGIFactory;	
+            pDXGIAdapter->GetParent(__uuidof(), (void **)&pIDXGIFactory);	
+            

Windows?Phone?8: This API is supported.

+
+ + bb174535 + IDXGIFactory + IDXGIFactory +
+ + + Default Constructor for Factory + + + + + Create an adapter interface that represents a software adapter. + + + A software adapter is a DLL that implements the entirety of a device driver interface, plus emulation, if necessary, of kernel-mode graphics components for Windows. Details on implementing a software adapter can be found in the Windows Vista Driver Development Kit. This is a very complex development task, and is not recommended for general readers. Calling this method will increment the module's reference count by one. The reference count can be decremented by calling {{FreeLibrary}}. The typical calling scenario is to call {{LoadLibrary}}, pass the handle to CreateSoftwareAdapter, then immediately call {{FreeLibrary}} on the DLL and forget the DLL's {{HMODULE}}. Since the software adapter calls FreeLibrary when it is destroyed, the lifetime of the DLL will now be owned by the adapter, and the application is free of any further consideration of its lifetime. + + Handle to the software adapter's DLL. + A reference to an adapter (see ). + HRESULT IDXGIFactory::CreateSoftwareAdapter([None] void* Module,[Out] IDXGIAdapter** ppAdapter) + + + + Gets both adapters (video cards) with or without outputs. + + The index of the adapter to enumerate. + a reference to an interface at the position specified by the Adapter parameter + + When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters then returns other adapters with outputs. + + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + + + + Return the number of available adapters from this factory. + + The number of adapters + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Enumerates the adapters (video cards).

+
+

The index of the adapter to enumerate.

+

The address of a reference to an interface at the position specified by the Adapter parameter. This parameter must not be null.

+

Returns if successful; otherwise, returns if the index is greater than or equal to the number of adapters in the local system, or if ppAdapter parameter is null.

+ +

When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.

When the EnumAdapters method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.

EnumAdapters first returns the adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters next returns other adapters with outputs. EnumAdapters finally returns adapters without outputs.

Windows?Phone?8: This API is supported.

+
+ + bb174538 + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + IDXGIFactory::EnumAdapters +
+ + +

Allows DXGI to monitor an application's message queue for the alt-enter key sequence (which causes the application to switch from windowed to full screen or vice versa).

+
+

The handle of the window that is to be monitored. This parameter can be null; but only if the flags are also 0.

+

One or more of the following values:

  • - Prevent DXGI from monitoring an applications message queue; this makes DXGI unable to respond to mode changes.
  • - Prevent DXGI from responding to an alt-enter sequence.
  • - Prevent DXGI from responding to a print-screen key.
+

if WindowHandle is invalid, or E_OUTOFMEMORY.

+ +

Note??If you call this API in a Session 0 process, it returns .

The combination of WindowHandle and Flags informs DXGI to stop monitoring window messages for the previously-associated window.

If the application switches to full-screen mode, DXGI will choose a full-screen resolution to be the smallest supported resolution that is larger or the same size as the current back buffer size.

Applications can make some changes to make the transition from windowed to full screen more efficient. For example, on a WM_SIZE message, the application should release any outstanding swap-chain back buffers, call , then re-acquire the back buffers from the swap chain(s). This gives the swap chain(s) an opportunity to resize the back buffers, and/or recreate them to enable full-screen flipping operation. If the application does not perform this sequence, DXGI will still make the full-screen/windowed transition, but may be forced to use a stretch operation (since the back buffers may not be the correct size), which may be less efficient. Even if a stretch is not required, presentation may not be optimal because the back buffers might not be directly interchangeable with the front buffer. Thus, a call to ResizeBuffers on WM_SIZE is always recommended, since WM_SIZE is always sent during a fullscreen transition.

While windowed, the application can, if it chooses, restrict the size of its window's client area to sizes to which it is comfortable rendering. A fully flexible application would make no such restriction, but UI elements or other design considerations can, of course, make this flexibility untenable. If the application further chooses to restrict its window's client area to just those that match supported full-screen resolutions, the application can field WM_SIZING, then check against . If a matching mode is found, allow the resize. (The can be retrieved from . Absent subsequent changes to desktop topology, this will be the same output that will be chosen when alt-enter is fielded and fullscreen mode is begun for that swap chain.)

Applications that want to handle mode changes or Alt+Enter themselves should call MakeWindowAssociation with the flag after swap chain creation. The WindowHandle argument, if non-null, specifies that the application message queues will not be handled by the DXGI runtime for all swap chains of a particular target . Calling MakeWindowAssociation with the flag after swapchain creation ensures that DXGI will not interfere with application's handling of window mode changes or Alt+Enter.

+
+ + bb174540 + HRESULT IDXGIFactory::MakeWindowAssociation([In] HWND WindowHandle,[In] DXGI_MWA_FLAGS Flags) + IDXGIFactory::MakeWindowAssociation +
+ + +

Get the window through which the user controls the transition to and from full screen.

+
+

A reference to a window handle.

+ +

Note??If you call this API in a Session 0 process, it returns .

+
+ + bb174539 + HRESULT IDXGIFactory::GetWindowAssociation([Out] HWND* pWindowHandle) + IDXGIFactory::GetWindowAssociation +
+ + +

[Starting with Direct3D 11.1, we recommend not to use CreateSwapChain anymore to create a swap chain. Instead, use CreateSwapChainForHwnd, CreateSwapChainForCoreWindow, or CreateSwapChainForComposition depending on how you want to create the swap chain.]

Creates a swap chain.

+
+ No documentation. + No documentation. + No documentation. +

if pDesc or ppSwapChain is null, if you request full-screen mode and it is unavailable, or E_OUTOFMEMORY. Other error codes defined by the type of device passed in may also be returned.

+ +

Note??If you call this API in a Session 0 process, it returns .

If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and will be returned.

If the buffer width or the buffer height is zero, the sizes will be inferred from the output window size in the swap-chain description.

Because the target output can't be chosen explicitly when the swap chain is created, we recommend not to create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure that the sizes match:

  • Create a windowed swap chain and then set it full-screen using .
  • Save a reference to the swap chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with ) during the transition from windowed to full-screen.

If the swap chain is in full-screen mode, before you release it you must use SetFullscreenState to switch it to windowed mode. For more information about releasing a swap chain, see the "Destroying a Swap Chain" section of DXGI Overview.

After the runtime renders the initial frame in full screen, the runtime might unexpectedly exit full screen during a call to . To work around this issue, we recommend that you execute the following code right after you call CreateSwapChain to create a full-screen swap chain (Windowed member of set to ). +

 // Detect if newly created full-screen swap chain isn't actually full screen.	
+            * pTarget;  bFullscreen;	
+            if (SUCCEEDED(pSwapChain->GetFullscreenState(&bFullscreen, &pTarget)))	
+            { pTarget->Release();	
+            }	
+            else bFullscreen = ;	
+            // If not full screen, enable full screen again.	
+            if (!bFullscreen)	
+            { ShowWindow(hWnd, SW_MINIMIZE); ShowWindow(hWnd, SW_RESTORE); pSwapChain->SetFullscreenState(TRUE, null);	
+            }	
+            

You can specify and values in the swap-chain description that pDesc points to. These values allow you to use features like flip-model presentation and content protection by using pre-Windows?8 APIs.

However, to use stereo presentation and to change resize behavior for the flip model, applications must use the IDXGIFactory2::CreateSwapChainForHwnd method. Otherwise, the back-buffer contents implicitly scale to fit the presentation target size; that is, you can't turn off scaling.

+
+ + bb174537 + HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain) + IDXGIFactory::CreateSwapChain +
+ + +

Create an adapter interface that represents a software adapter.

+
+

Handle to the software adapter's dll. HMODULE can be obtained with GetModuleHandle or LoadLibrary.

+

Address of a reference to an adapter (see ).

+ +

A software adapter is a DLL that implements the entirety of a device driver interface, plus emulation, if necessary, of kernel-mode graphics components for Windows. Details on implementing a software adapter can be found in the Windows Vista Driver Development Kit. This is a very complex development task, and is not recommended for general readers.

Calling this method will increment the module's reference count by one. The reference count can be decremented by calling FreeLibrary.

The typical calling scenario is to call LoadLibrary, pass the handle to CreateSoftwareAdapter, then immediately call FreeLibrary on the DLL and forget the DLL's HMODULE. Since the software adapter calls FreeLibrary when it is destroyed, the lifetime of the DLL will now be owned by the adapter, and the application is free of any further consideration of its lifetime.

Windows?Phone?8: This API is supported.

+
+ + bb174536 + HRESULT IDXGIFactory::CreateSoftwareAdapter([In] HINSTANCE Module,[Out] IDXGIAdapter** ppAdapter) + IDXGIFactory::CreateSoftwareAdapter +
+ + + Return an array of available from this factory. + + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + + + +

The interface implements methods for generating DXGI objects.

+
+ +

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

To create a factory, call the CreateDXGIFactory1 function.

Because you can create a Direct3D device without creating a swap chain, you might need to retrieve the factory that is used to create the device in order to create a swap chain. + You can request the or interface from the Direct3D device and then use the method to locate + the factory. The following code shows how.

 * pDXGIDevice;	
+            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);  * pDXGIAdapter;	
+            hr = pDXGIDevice->GetParent(__uuidof(), (void **)&pDXGIAdapter);  * pIDXGIFactory;	
+            pDXGIAdapter->GetParent(__uuidof(), (void **)&pIDXGIFactory);	
+            

Windows?Phone?8: This API is supported.

+
+ + ff471335 + IDXGIFactory1 + IDXGIFactory1 +
+ + + Default Constructor for Factory1. + + + + + Gets both adapters (video cards) with or without outputs. + + The index of the adapter to enumerate. + a reference to an interface at the position specified by the Adapter parameter + + This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters1 method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters1 increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters1 first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters1 next returns other adapters with outputs. EnumAdapters1 finally returns adapters without outputs. + + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + + + + Return the number of available adapters from this factory. + + The number of adapters + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Enumerates both adapters (video cards) with or without outputs.

+
+

The index of the adapter to enumerate.

+

The address of a reference to an interface at the position specified by the Adapter parameter. This parameter must not be null.

+

Returns if successful; otherwise, returns if the index is greater than or equal to the number of adapters in the local system, or if ppAdapter parameter is null.

+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.

When the EnumAdapters1 method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters1 increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.

EnumAdapters1 first returns the adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters1 next returns other adapters with outputs. EnumAdapters1 finally returns adapters without outputs.

Windows?Phone?8: This API is supported.

+
+ + ff471336 + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + IDXGIFactory1::EnumAdapters1 +
+ + +

Informs an application of the possible need to re-enumerate adapters.

+
+

, if a new adapter is becoming available or the current adapter is going away. TRUE, no adapter changes.

IsCurrent returns to inform the calling application to re-enumerate adapters.

+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Windows?Phone?8: This API is supported.

+
+ + ff471337 + BOOL IDXGIFactory1::IsCurrent() + IDXGIFactory1::IsCurrent +
+ + + Return an array of available from this factory. + + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + + + +

Informs an application of the possible need to re-enumerate adapters.

+
+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Windows?Phone?8: This API is supported.

+
+ + ff471337 + IsCurrent + IsCurrent + BOOL IDXGIFactory1::IsCurrent() +
+ + + Helper to use with . + + + + + Calculates the size of a in bytes. Can be 0 for compressed format (as they are less than 1 byte) + + The DXGI format. + size of in bytes + + + + Calculates the size of a in bits. + + The DXGI format. + size of in bits + + + + Returns true if the is valid. + + A format to validate + True if the is valid. + + + + Returns true if the is a compressed format. + + The format to check for compressed. + True if the is a compressed format + + + + Determines whether the specified is packed. + + The DXGI Format. + true if the specified is packed; otherwise, false. + + + + Determines whether the specified is video. + + The . + true if the specified is video; otherwise, false. + + + + Determines whether the specified is a SRGB format. + + The . + true if the specified is a SRGB format; otherwise, false. + + + + Determines whether the specified is typeless. + + The . + true if the specified is typeless; otherwise, false. + + + + Computes the scanline count (number of scanlines). + + The . + The height. + The scanline count. + + + + Static initializer to speed up size calculation (not sure the JIT is enough "smart" for this kind of thing). + + + + +

Identifies the type of DXGI adapter.

+
+ +

The enumerated type is used by the Flags member of the or DXGI_ADAPTER_DESC2 structure to identify the type of DXGI adapter.

+
+ + ff471327 + DXGI_ADAPTER_FLAG + DXGI_ADAPTER_FLAG +
+ + +

Specifies no flags.

+
+ + ff471327 + DXGI_ADAPTER_FLAG_NONE + DXGI_ADAPTER_FLAG_NONE +
+ + +

Value always set to 0. This flag is reserved.

+
+ + ff471327 + DXGI_ADAPTER_FLAG_REMOTE + DXGI_ADAPTER_FLAG_REMOTE +
+ + +

Options for enumerating display modes.

+
+ +

These flag options are used in to enumerate display modes.

These flag options are also used in IDXGIOutput1::GetDisplayModeList1 to enumerate display modes.

+
+ + cc308060 + DXGI_ENUM_MODES_FLAGS + DXGI_ENUM_MODES_FLAGS +
+ + + No documentation. + + + cc308060 + DXGI_ENUM_MODES_INTERLACED + DXGI_ENUM_MODES_INTERLACED + + + + No documentation. + + + cc308060 + DXGI_ENUM_MODES_SCALING + DXGI_ENUM_MODES_SCALING + + + +

Flags that indicate how the back buffers should be rotated to fit the physical rotation of a monitor.

+
+ + bb173065 + DXGI_MODE_ROTATION + DXGI_MODE_ROTATION +
+ + +

Unspecified rotation.

+
+ + bb173065 + DXGI_MODE_ROTATION_UNSPECIFIED + DXGI_MODE_ROTATION_UNSPECIFIED +
+ + +

Specifies no rotation.

+
+ + bb173065 + DXGI_MODE_ROTATION_IDENTITY + DXGI_MODE_ROTATION_IDENTITY +
+ + +

Specifies 90 degrees of rotation.

+
+ + bb173065 + DXGI_MODE_ROTATION_ROTATE90 + DXGI_MODE_ROTATION_ROTATE90 +
+ + +

Specifies 180 degrees of rotation.

+
+ + bb173065 + DXGI_MODE_ROTATION_ROTATE180 + DXGI_MODE_ROTATION_ROTATE180 +
+ + +

Specifies 270 degrees of rotation.

+
+ + bb173065 + DXGI_MODE_ROTATION_ROTATE270 + DXGI_MODE_ROTATION_ROTATE270 +
+ + +

Flags indicating how an image is stretched to fit a given monitor's resolution.

+
+ + bb173066 + DXGI_MODE_SCALING + DXGI_MODE_SCALING +
+ + +

Unspecified scaling.

+
+ + bb173066 + DXGI_MODE_SCALING_UNSPECIFIED + DXGI_MODE_SCALING_UNSPECIFIED +
+ + +

Specifies no scaling. The image is centered on the display. This flag is typically used for a fixed-dot-pitch display (such as an LED display).

+
+ + bb173066 + DXGI_MODE_SCALING_CENTERED + DXGI_MODE_SCALING_CENTERED +
+ + +

Specifies stretched scaling.

+
+ + bb173066 + DXGI_MODE_SCALING_STRETCHED + DXGI_MODE_SCALING_STRETCHED +
+ + +

Flags indicating the method the raster uses to create an image on a surface.

+
+ + bb173067 + DXGI_MODE_SCANLINE_ORDER + DXGI_MODE_SCANLINE_ORDER +
+ + +

Scanline order is unspecified.

+
+ + bb173067 + DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED + DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED +
+ + +

The image is created from the first scanline to the last without skipping any.

+
+ + bb173067 + DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE + DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE +
+ + +

The image is created beginning with the upper field.

+
+ + bb173067 + DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST + DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST +
+ + +

The image is created beginning with the lower field.

+
+ + bb173067 + DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST + DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST +
+ + +

Status codes that can be returned by DXGI functions.

+
+ +

The value for each value is determined from this macro that is defined in DXGItype.h:

 #define _FACDXGI    0x87a	
+            #define MAKE_DXGI_STATUS(code)  MAKE_HRESULT(0, _FACDXGI, code)	
+            

For example, is defined as 0x087A0001:

 #define                     MAKE_DXGI_STATUS(1)	
+            
+
+ + cc308061 + DXGI_STATUS + DXGI_STATUS +
+ + + No documentation. + + + cc308061 + DXGI_STATUS_OCCLUDED + DXGI_STATUS_OCCLUDED + + + + No documentation. + + + cc308061 + DXGI_STATUS_CLIPPED + DXGI_STATUS_CLIPPED + + + + No documentation. + + + cc308061 + DXGI_STATUS_NO_REDIRECTION + DXGI_STATUS_NO_REDIRECTION + + + + No documentation. + + + cc308061 + DXGI_STATUS_NO_DESKTOP_ACCESS + DXGI_STATUS_NO_DESKTOP_ACCESS + + + + No documentation. + + + cc308061 + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE + + + + No documentation. + + + cc308061 + DXGI_STATUS_MODE_CHANGED + DXGI_STATUS_MODE_CHANGED + + + + No documentation. + + + cc308061 + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS + + + +

Resource data formats which includes fully-typed and typeless formats. There is a list of format modifiers at the bottom of the page, that more fully describes each format type.

+
+ +

A few formats have additional restrictions.

  1. A resource declared with the DXGI_FORMAT_R32G32B32 family of formats cannot be used simultaneously for vertex and texture data. That is, you may not create a buffer resource with the DXGI_FORMAT_R32G32B32 family of formats that uses any of the following bind flags: , , , or (see ).
  2. is designed specifically for text filtering, and must be used with a format-specific, configurable 8x8 filter mode. When calling an HLSL sampling function using this format, the address offset parameter must be set to (0,0).
  3. A resource using a sub-sampled format (such as DXGI_FORMAT_R8G8_B8G8) must have a size that is a multiple of 2 in the x dimension.
  4. Format is not available in Direct3D 10 and Direct3D 10.1

The following topics provide lists of the formats that particular hardware feature levels support:

  • Hardware Support for Direct3D 11.1 Formats
  • Hardware Support for Direct3D 11 Formats
  • Hardware Support for Direct3D 10.1 Formats
  • Hardware Support for Direct3D 10 Formats
  • Hardware Support for Direct3D 10Level9 Formats

For a list of the DirectXMath types that map to values, see DirectXMath Library Internals.

+
+ + bb173059 + DXGI_FORMAT + DXGI_FORMAT +
+ + +

The format is not known.

+
+ + bb173059 + DXGI_FORMAT_UNKNOWN + DXGI_FORMAT_UNKNOWN +
+ + +

A four-component, 128-bit typeless format that supports 32 bits per channel including alpha. 1

+
+ + bb173059 + DXGI_FORMAT_R32G32B32A32_TYPELESS + DXGI_FORMAT_R32G32B32A32_TYPELESS +
+ + +

A four-component, 128-bit floating-point format that supports 32 bits per channel including alpha. 1

+
+ + bb173059 + DXGI_FORMAT_R32G32B32A32_FLOAT + DXGI_FORMAT_R32G32B32A32_FLOAT +
+ + +

A four-component, 128-bit unsigned-integer format that supports 32 bits per channel including alpha. 1

+
+ + bb173059 + DXGI_FORMAT_R32G32B32A32_UINT + DXGI_FORMAT_R32G32B32A32_UINT +
+ + +

A four-component, 128-bit signed-integer format that supports 32 bits per channel including alpha. 1

+
+ + bb173059 + DXGI_FORMAT_R32G32B32A32_SINT + DXGI_FORMAT_R32G32B32A32_SINT +
+ + +

A three-component, 96-bit typeless format that supports 32 bits per color channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32B32_TYPELESS + DXGI_FORMAT_R32G32B32_TYPELESS +
+ + +

A three-component, 96-bit floating-point format that supports 32 bits per color channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32B32_FLOAT + DXGI_FORMAT_R32G32B32_FLOAT +
+ + +

A three-component, 96-bit unsigned-integer format that supports 32 bits per color channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32B32_UINT + DXGI_FORMAT_R32G32B32_UINT +
+ + +

A three-component, 96-bit signed-integer format that supports 32 bits per color channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32B32_SINT + DXGI_FORMAT_R32G32B32_SINT +
+ + +

A four-component, 64-bit typeless format that supports 16 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R16G16B16A16_TYPELESS + DXGI_FORMAT_R16G16B16A16_TYPELESS +
+ + +

A four-component, 64-bit floating-point format that supports 16 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R16G16B16A16_FLOAT + DXGI_FORMAT_R16G16B16A16_FLOAT +
+ + +

A four-component, 64-bit unsigned-normalized-integer format that supports 16 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R16G16B16A16_UNORM + DXGI_FORMAT_R16G16B16A16_UNORM +
+ + +

A four-component, 64-bit unsigned-integer format that supports 16 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R16G16B16A16_UINT + DXGI_FORMAT_R16G16B16A16_UINT +
+ + +

A four-component, 64-bit signed-normalized-integer format that supports 16 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R16G16B16A16_SNORM + DXGI_FORMAT_R16G16B16A16_SNORM +
+ + +

A four-component, 64-bit signed-integer format that supports 16 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R16G16B16A16_SINT + DXGI_FORMAT_R16G16B16A16_SINT +
+ + +

A two-component, 64-bit typeless format that supports 32 bits for the red channel and 32 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32_TYPELESS + DXGI_FORMAT_R32G32_TYPELESS +
+ + +

A two-component, 64-bit floating-point format that supports 32 bits for the red channel and 32 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32_FLOAT + DXGI_FORMAT_R32G32_FLOAT +
+ + +

A two-component, 64-bit unsigned-integer format that supports 32 bits for the red channel and 32 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32_UINT + DXGI_FORMAT_R32G32_UINT +
+ + +

A two-component, 64-bit signed-integer format that supports 32 bits for the red channel and 32 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R32G32_SINT + DXGI_FORMAT_R32G32_SINT +
+ + +

A two-component, 64-bit typeless format that supports 32 bits for the red channel, 8 bits for the green channel, and 24 bits are unused.

+
+ + bb173059 + DXGI_FORMAT_R32G8X24_TYPELESS + DXGI_FORMAT_R32G8X24_TYPELESS +
+ + +

A 32-bit floating-point component, and two unsigned-integer components (with an additional 32 bits). This format supports 32-bit depth, 8-bit stencil, and 24 bits are unused.

+
+ + bb173059 + DXGI_FORMAT_D32_FLOAT_S8X24_UINT + DXGI_FORMAT_D32_FLOAT_S8X24_UINT +
+ + +

A 32-bit floating-point component, and two typeless components (with an additional 32 bits). This format supports 32-bit red channel, 8 bits are unused, and 24 bits are unused.

+
+ + bb173059 + DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS + DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS +
+ + +

A 32-bit typeless component, and two unsigned-integer components (with an additional 32 bits). This format has 32 bits unused, 8 bits for green channel, and 24 bits are unused.

+
+ + bb173059 + DXGI_FORMAT_X32_TYPELESS_G8X24_UINT + DXGI_FORMAT_X32_TYPELESS_G8X24_UINT +
+ + +

A four-component, 32-bit typeless format that supports 10 bits for each color and 2 bits for alpha.

+
+ + bb173059 + DXGI_FORMAT_R10G10B10A2_TYPELESS + DXGI_FORMAT_R10G10B10A2_TYPELESS +
+ + +

A four-component, 32-bit unsigned-normalized-integer format that supports 10 bits for each color and 2 bits for alpha.

+
+ + bb173059 + DXGI_FORMAT_R10G10B10A2_UNORM + DXGI_FORMAT_R10G10B10A2_UNORM +
+ + +

A four-component, 32-bit unsigned-integer format that supports 10 bits for each color and 2 bits for alpha.

+
+ + bb173059 + DXGI_FORMAT_R10G10B10A2_UINT + DXGI_FORMAT_R10G10B10A2_UINT +
+ + +

Three partial-precision floating-point numbers encoded into a single 32-bit value (a variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent). There are no sign bits, and there is a 5-bit biased (15) exponent for each channel, 6-bit mantissa for R and G, and a 5-bit mantissa for B, as shown in the following illustration.

+
+ + bb173059 + DXGI_FORMAT_R11G11B10_FLOAT + DXGI_FORMAT_R11G11B10_FLOAT +
+ + +

A four-component, 32-bit typeless format that supports 8 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R8G8B8A8_TYPELESS + DXGI_FORMAT_R8G8B8A8_TYPELESS +
+ + +

A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R8G8B8A8_UNORM + DXGI_FORMAT_R8G8B8A8_UNORM +
+ + +

A four-component, 32-bit unsigned-normalized integer sRGB format that supports 8 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R8G8B8A8_UNORM_SRGB + DXGI_FORMAT_R8G8B8A8_UNORM_SRGB +
+ + +

A four-component, 32-bit unsigned-integer format that supports 8 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R8G8B8A8_UINT + DXGI_FORMAT_R8G8B8A8_UINT +
+ + +

A four-component, 32-bit signed-normalized-integer format that supports 8 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R8G8B8A8_SNORM + DXGI_FORMAT_R8G8B8A8_SNORM +
+ + +

A four-component, 32-bit signed-integer format that supports 8 bits per channel including alpha.

+
+ + bb173059 + DXGI_FORMAT_R8G8B8A8_SINT + DXGI_FORMAT_R8G8B8A8_SINT +
+ + +

A two-component, 32-bit typeless format that supports 16 bits for the red channel and 16 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R16G16_TYPELESS + DXGI_FORMAT_R16G16_TYPELESS +
+ + +

A two-component, 32-bit floating-point format that supports 16 bits for the red channel and 16 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R16G16_FLOAT + DXGI_FORMAT_R16G16_FLOAT +
+ + +

A two-component, 32-bit unsigned-normalized-integer format that supports 16 bits each for the green and red channels.

+
+ + bb173059 + DXGI_FORMAT_R16G16_UNORM + DXGI_FORMAT_R16G16_UNORM +
+ + +

A two-component, 32-bit unsigned-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R16G16_UINT + DXGI_FORMAT_R16G16_UINT +
+ + +

A two-component, 32-bit signed-normalized-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R16G16_SNORM + DXGI_FORMAT_R16G16_SNORM +
+ + +

A two-component, 32-bit signed-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R16G16_SINT + DXGI_FORMAT_R16G16_SINT +
+ + +

A single-component, 32-bit typeless format that supports 32 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R32_TYPELESS + DXGI_FORMAT_R32_TYPELESS +
+ + +

A single-component, 32-bit floating-point format that supports 32 bits for depth.

+
+ + bb173059 + DXGI_FORMAT_D32_FLOAT + DXGI_FORMAT_D32_FLOAT +
+ + +

A single-component, 32-bit floating-point format that supports 32 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R32_FLOAT + DXGI_FORMAT_R32_FLOAT +
+ + +

A single-component, 32-bit unsigned-integer format that supports 32 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R32_UINT + DXGI_FORMAT_R32_UINT +
+ + +

A single-component, 32-bit signed-integer format that supports 32 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R32_SINT + DXGI_FORMAT_R32_SINT +
+ + +

A two-component, 32-bit typeless format that supports 24 bits for the red channel and 8 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R24G8_TYPELESS + DXGI_FORMAT_R24G8_TYPELESS +
+ + +

A 32-bit z-buffer format that supports 24 bits for depth and 8 bits for stencil.

+
+ + bb173059 + DXGI_FORMAT_D24_UNORM_S8_UINT + DXGI_FORMAT_D24_UNORM_S8_UINT +
+ + +

A 32-bit format, that contains a 24 bit, single-component, unsigned-normalized integer, with an additional typeless 8 bits. This format has 24 bits red channel and 8 bits unused.

+
+ + bb173059 + DXGI_FORMAT_R24_UNORM_X8_TYPELESS + DXGI_FORMAT_R24_UNORM_X8_TYPELESS +
+ + +

A 32-bit format, that contains a 24 bit, single-component, typeless format, with an additional 8 bit unsigned integer component. This format has 24 bits unused and 8 bits green channel.

+
+ + bb173059 + DXGI_FORMAT_X24_TYPELESS_G8_UINT + DXGI_FORMAT_X24_TYPELESS_G8_UINT +
+ + +

A two-component, 16-bit typeless format that supports 8 bits for the red channel and 8 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R8G8_TYPELESS + DXGI_FORMAT_R8G8_TYPELESS +
+ + +

A two-component, 16-bit unsigned-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R8G8_UNORM + DXGI_FORMAT_R8G8_UNORM +
+ + +

A two-component, 16-bit unsigned-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R8G8_UINT + DXGI_FORMAT_R8G8_UINT +
+ + +

A two-component, 16-bit signed-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R8G8_SNORM + DXGI_FORMAT_R8G8_SNORM +
+ + +

A two-component, 16-bit signed-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

+
+ + bb173059 + DXGI_FORMAT_R8G8_SINT + DXGI_FORMAT_R8G8_SINT +
+ + +

A single-component, 16-bit typeless format that supports 16 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R16_TYPELESS + DXGI_FORMAT_R16_TYPELESS +
+ + +

A single-component, 16-bit floating-point format that supports 16 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R16_FLOAT + DXGI_FORMAT_R16_FLOAT +
+ + +

A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for depth.

+
+ + bb173059 + DXGI_FORMAT_D16_UNORM + DXGI_FORMAT_D16_UNORM +
+ + +

A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R16_UNORM + DXGI_FORMAT_R16_UNORM +
+ + +

A single-component, 16-bit unsigned-integer format that supports 16 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R16_UINT + DXGI_FORMAT_R16_UINT +
+ + +

A single-component, 16-bit signed-normalized-integer format that supports 16 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R16_SNORM + DXGI_FORMAT_R16_SNORM +
+ + +

A single-component, 16-bit signed-integer format that supports 16 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R16_SINT + DXGI_FORMAT_R16_SINT +
+ + +

A single-component, 8-bit typeless format that supports 8 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R8_TYPELESS + DXGI_FORMAT_R8_TYPELESS +
+ + +

A single-component, 8-bit unsigned-normalized-integer format that supports 8 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R8_UNORM + DXGI_FORMAT_R8_UNORM +
+ + +

A single-component, 8-bit unsigned-integer format that supports 8 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R8_UINT + DXGI_FORMAT_R8_UINT +
+ + +

A single-component, 8-bit signed-normalized-integer format that supports 8 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R8_SNORM + DXGI_FORMAT_R8_SNORM +
+ + +

A single-component, 8-bit signed-integer format that supports 8 bits for the red channel.

+
+ + bb173059 + DXGI_FORMAT_R8_SINT + DXGI_FORMAT_R8_SINT +
+ + +

A single-component, 8-bit unsigned-normalized-integer format for alpha only.

+
+ + bb173059 + DXGI_FORMAT_A8_UNORM + DXGI_FORMAT_A8_UNORM +
+ + +

A single-component, 1-bit unsigned-normalized integer format that supports 1 bit for the red channel. 2.

+
+ + bb173059 + DXGI_FORMAT_R1_UNORM + DXGI_FORMAT_R1_UNORM +
+ + +

Three partial-precision floating-point numbers encoded into a single 32-bit value all sharing the same 5-bit exponent (variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent). There is no sign bit, and there is a shared 5-bit biased (15) exponent and a 9-bit mantissa for each channel, as shown in the following illustration. 2.

+
+ + bb173059 + DXGI_FORMAT_R9G9B9E5_SHAREDEXP + DXGI_FORMAT_R9G9B9E5_SHAREDEXP +
+ + +

A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the UYVY format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3

Width must be even.

+
+ + bb173059 + DXGI_FORMAT_R8G8_B8G8_UNORM + DXGI_FORMAT_R8G8_B8G8_UNORM +
+ + +

A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the YUY2 format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3

Width must be even.

+
+ + bb173059 + DXGI_FORMAT_G8R8_G8B8_UNORM + DXGI_FORMAT_G8R8_G8B8_UNORM +
+ + +

Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC1_TYPELESS + DXGI_FORMAT_BC1_TYPELESS +
+ + +

Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC1_UNORM + DXGI_FORMAT_BC1_UNORM +
+ + +

Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC1_UNORM_SRGB + DXGI_FORMAT_BC1_UNORM_SRGB +
+ + +

Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC2_TYPELESS + DXGI_FORMAT_BC2_TYPELESS +
+ + +

Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC2_UNORM + DXGI_FORMAT_BC2_UNORM +
+ + +

Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC2_UNORM_SRGB + DXGI_FORMAT_BC2_UNORM_SRGB +
+ + +

Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC3_TYPELESS + DXGI_FORMAT_BC3_TYPELESS +
+ + +

Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC3_UNORM + DXGI_FORMAT_BC3_UNORM +
+ + +

Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC3_UNORM_SRGB + DXGI_FORMAT_BC3_UNORM_SRGB +
+ + +

One-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC4_TYPELESS + DXGI_FORMAT_BC4_TYPELESS +
+ + +

One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC4_UNORM + DXGI_FORMAT_BC4_UNORM +
+ + +

One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC4_SNORM + DXGI_FORMAT_BC4_SNORM +
+ + +

Two-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC5_TYPELESS + DXGI_FORMAT_BC5_TYPELESS +
+ + +

Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC5_UNORM + DXGI_FORMAT_BC5_UNORM +
+ + +

Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC5_SNORM + DXGI_FORMAT_BC5_SNORM +
+ + +

A three-component, 16-bit unsigned-normalized-integer format that supports 5 bits for blue, 6 bits for green, and 5 bits for red.

Direct3D 10 through Direct3D 11:??This value is defined for DXGI. However, Direct3D 10, 10.1, or 11 devices do not support this format.

Direct3D 11.1:??This value is not supported until Windows?8.

+
+ + bb173059 + DXGI_FORMAT_B5G6R5_UNORM + DXGI_FORMAT_B5G6R5_UNORM +
+ + +

A four-component, 16-bit unsigned-normalized-integer format that supports 5 bits for each color channel and 1-bit alpha.

Direct3D 10 through Direct3D 11:??This value is defined for DXGI. However, Direct3D 10, 10.1, or 11 devices do not support this format.

Direct3D 11.1:??This value is not supported until Windows?8.

+
+ + bb173059 + DXGI_FORMAT_B5G5R5A1_UNORM + DXGI_FORMAT_B5G5R5A1_UNORM +
+ + +

A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8-bit alpha.

+
+ + bb173059 + DXGI_FORMAT_B8G8R8A8_UNORM + DXGI_FORMAT_B8G8R8A8_UNORM +
+ + +

A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8 bits unused.

+
+ + bb173059 + DXGI_FORMAT_B8G8R8X8_UNORM + DXGI_FORMAT_B8G8R8X8_UNORM +
+ + +

A four-component, 32-bit 2.8-biased fixed-point format that supports 10 bits for each color channel and 2-bit alpha.

+
+ + bb173059 + DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM + DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM +
+ + +

A four-component, 32-bit typeless format that supports 8 bits for each channel including alpha. 4

+
+ + bb173059 + DXGI_FORMAT_B8G8R8A8_TYPELESS + DXGI_FORMAT_B8G8R8A8_TYPELESS +
+ + +

A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each channel including alpha. 4

+
+ + bb173059 + DXGI_FORMAT_B8G8R8A8_UNORM_SRGB + DXGI_FORMAT_B8G8R8A8_UNORM_SRGB +
+ + +

A four-component, 32-bit typeless format that supports 8 bits for each color channel, and 8 bits are unused. 4

+
+ + bb173059 + DXGI_FORMAT_B8G8R8X8_TYPELESS + DXGI_FORMAT_B8G8R8X8_TYPELESS +
+ + +

A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each color channel, and 8 bits are unused. 4

+
+ + bb173059 + DXGI_FORMAT_B8G8R8X8_UNORM_SRGB + DXGI_FORMAT_B8G8R8X8_UNORM_SRGB +
+ + +

A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC6H_TYPELESS + DXGI_FORMAT_BC6H_TYPELESS +
+ + +

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC6H_UF16 + DXGI_FORMAT_BC6H_UF16 +
+ + +

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC6H_SF16 + DXGI_FORMAT_BC6H_SF16 +
+ + +

A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC7_TYPELESS + DXGI_FORMAT_BC7_TYPELESS +
+ + +

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC7_UNORM + DXGI_FORMAT_BC7_UNORM +
+ + +

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

+
+ + bb173059 + DXGI_FORMAT_BC7_UNORM_SRGB + DXGI_FORMAT_BC7_UNORM_SRGB +
+ + +

Identifies how to perform a present operation.

+
+ + ff557509 + DXGI_MAP_FLAGS + DXGI_MAP_FLAGS +
+ + +

Specifies whether to perform a bit-block transfer (bitblt) data to the primary surface.

Setting this member is equivalent to setting the first bit of the 32-bit Value member (0x00000001).

+
+ + ff557509 + DXGI_MAP_READ + DXGI_MAP_READ +
+ + +

Specifies whether to flip to a new surface.

Setting this member is equivalent to setting the second bit of the 32-bit Value member (0x00000002).

+
+ + ff557509 + DXGI_MAP_WRITE + DXGI_MAP_WRITE +
+ + +

Supported in Windows?8 and later versions.

Specifies that, if a stereo present operation must be reduced to mono, the present operation should show the view from the right eye.

If this member is not set, the default mono present operation shows the view from the left eye.

Setting this member is equivalent to setting the third bit of the 32-bit Value member (0x00000004).

+
+ + ff557509 + DXGI_MAP_DISCARD + DXGI_MAP_DISCARD +
+ + +

Identifies how to perform a present operation.

+
+ + ff557509 + DXGI_PRESENT_FLAGS + DXGI_PRESENT_FLAGS +
+ + +

Specifies whether to perform a bit-block transfer (bitblt) data to the primary surface.

Setting this member is equivalent to setting the first bit of the 32-bit Value member (0x00000001).

+
+ + ff557509 + DXGI_PRESENT_TEST + DXGI_PRESENT_TEST +
+ + +

Specifies whether to flip to a new surface.

Setting this member is equivalent to setting the second bit of the 32-bit Value member (0x00000002).

+
+ + ff557509 + DXGI_PRESENT_DO_NOT_SEQUENCE + DXGI_PRESENT_DO_NOT_SEQUENCE +
+ + +

Supported in Windows?8 and later versions.

Specifies that, if a stereo present operation must be reduced to mono, the present operation should show the view from the right eye.

If this member is not set, the default mono present operation shows the view from the left eye.

Setting this member is equivalent to setting the third bit of the 32-bit Value member (0x00000004).

+
+ + ff557509 + DXGI_PRESENT_RESTART + DXGI_PRESENT_RESTART +
+ + + None. + + + None + None + + + +

Flags indicating the memory location of a resource.

+
+ + bb173070 + DXGI_RESIDENCY + DXGI_RESIDENCY +
+ + +

The resource is located in video memory.

+
+ + bb173070 + DXGI_RESIDENCY_FULLY_RESIDENT + DXGI_RESIDENCY_FULLY_RESIDENT +
+ + +

At least some of the resource is located in CPU memory.

+
+ + bb173070 + DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY + DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY +
+ + +

At least some of the resource has been paged out to the hard drive.

+
+ + bb173070 + DXGI_RESIDENCY_EVICTED_TO_DISK + DXGI_RESIDENCY_EVICTED_TO_DISK +
+ + +

Identifies the importance of a resource?s content when you call the IDXGIDevice2::OfferResources method to offer the resource.

+
+ +

Priority determines how likely the operating system is to discard an offered resource. Resources offered with lower priority are discarded first.

+
+ + hh404509 + DXGI_RESOURCE_PRIORITY + DXGI_RESOURCE_PRIORITY +
+ + + No documentation. + + + hh404509 + DXGI_RESOURCE_PRIORITY_MINIMUM + DXGI_RESOURCE_PRIORITY_MINIMUM + + + + No documentation. + + + hh404509 + DXGI_RESOURCE_PRIORITY_LOW + DXGI_RESOURCE_PRIORITY_LOW + + + + No documentation. + + + hh404509 + DXGI_RESOURCE_PRIORITY_NORMAL + DXGI_RESOURCE_PRIORITY_NORMAL + + + + No documentation. + + + hh404509 + DXGI_RESOURCE_PRIORITY_HIGH + DXGI_RESOURCE_PRIORITY_HIGH + + + + No documentation. + + + hh404509 + DXGI_RESOURCE_PRIORITY_MAXIMUM + DXGI_RESOURCE_PRIORITY_MAXIMUM + + + +

Options for swap-chain behavior.

+
+ +

This enumeration is used by the structure and the method.

This enumeration is also used by the DXGI_SWAP_CHAIN_DESC1 structure.

You don't need to set DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY for swap chains that you create in full-screen mode with the method because those swap chains already behave as if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. That is, presented content is not accessible by remote access or through the desktop duplication APIs.

Swap chains that you create with the IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, and IDXGIFactory2::CreateSwapChainForComposition methods are not protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is not set and are protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. When swap chains are protected, screen scraping is prevented and, in full-screen mode, presented content is not accessible through the desktop duplication APIs.

When you call to change the swap chain's back buffer, you can reset or change all flags.

+
+ + bb173076 + DXGI_SHARED_RESOURCE_FLAGS + DXGI_SHARED_RESOURCE_FLAGS +
+ + + None. + + + None + None + + + +

Options for swap-chain behavior.

+
+ +

This enumeration is used by the structure and the method.

This enumeration is also used by the DXGI_SWAP_CHAIN_DESC1 structure.

You don't need to set DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY for swap chains that you create in full-screen mode with the method because those swap chains already behave as if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. That is, presented content is not accessible by remote access or through the desktop duplication APIs.

Swap chains that you create with the IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, and IDXGIFactory2::CreateSwapChainForComposition methods are not protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is not set and are protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. When swap chains are protected, screen scraping is prevented and, in full-screen mode, presented content is not accessible through the desktop duplication APIs.

When you call to change the swap chain's back buffer, you can reset or change all flags.

+
+ + bb173076 + DXGI_SWAP_CHAIN_FLAG + DXGI_SWAP_CHAIN_FLAG +
+ + +

Set this flag to turn off automatic image rotation; that is, do not perform a rotation when transferring the contents of the front buffer to the monitor. Use this flag to avoid a bandwidth penalty when an application expects to handle rotation. This option is valid only during full-screen mode.

+
+ + bb173076 + DXGI_SWAP_CHAIN_FLAG_NONPREROTATED + DXGI_SWAP_CHAIN_FLAG_NONPREROTATED +
+ + +

Set this flag to enable an application to switch modes by calling . When switching from windowed to full-screen mode, the display mode (or monitor resolution) will be changed to match the dimensions of the application window.

+
+ + bb173076 + DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH + DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH +
+ + +

Set this flag to enable an application to render using GDI on a swap chain or a surface. This will allow the application to call on the 0th back buffer or a surface.

+
+ + bb173076 + DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE + DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE +
+ + + None. + + + None + None + + + +

Options for handling pixels in a display surface after calling IDXGISwapChain1::Present1.

+
+ +

This enumeration is used by the structure.

This enumeration is also used by the DXGI_SWAP_CHAIN_DESC1 structure.

To use multisampling with or DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, you must perform the multisampling in a separate render target. For example, create a multisampled texture by calling with a filled structure (BindFlags member set to and SampleDesc member with multisampling parameters). Next call to create a render-target view for the texture, and render your scene into the texture. Finally call to resolve the multisampled texture into your non-multisampled swap chain.

The primary difference between presentation models is how back-buffer contents get to the Desktop Window Manager (DWM) for composition. In the bitblt model, which is used with the and values, contents of the back buffer get copied into the redirection surface on each call to IDXGISwapChain1::Present1. In the flip model, which is used with the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value, all back buffers are shared with the DWM. Therefore, the DWM can compose straight from those back buffers without any additional copy operations. + In general, the flip model is the more efficient model. The flip model also provides more features, such as enhanced present statistics. +

When you call IDXGISwapChain1::Present1 on a flip model swap chain (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) with 0 specified in the SyncInterval parameter, IDXGISwapChain1::Present1's behavior is the same as the behavior of Direct3D 9Ex's with and . That is, the runtime not only presents the next frame instead of any previously queued frames, it also terminates any remaining time left on the previously queued frames.

Regardless of whether the flip model is more efficient, an application still might choose the bitblt model because the bitblt model is the only way to mix GDI and DirectX presentation. In the flip model, the application must create the swap chain with , and then must use GetDC on the back buffer explicitly. After the first successful call to IDXGISwapChain1::Present1 on a flip-model swap chain, GDI no longer works with the that is associated with that swap chain, even after the destruction of the swap chain. This restriction even extends to methods like ScrollWindowEx.

For more info about the flip-model swap chain and optimizing presentation, see Enhancing presentation with the flip model, dirty rectangles, and scrolled areas.

+
+ + bb173077 + DXGI_SWAP_EFFECT + DXGI_SWAP_EFFECT +
+ + + No documentation. + + + bb173077 + DXGI_SWAP_EFFECT_DISCARD + DXGI_SWAP_EFFECT_DISCARD + + + + No documentation. + + + bb173077 + DXGI_SWAP_EFFECT_SEQUENTIAL + DXGI_SWAP_EFFECT_SEQUENTIAL + + + +

Flags for surface and resource creation options.

+
+ +

Each flag is defined as an unsigned integer.

#define DXGI_CPU_ACCESS_NONE ( 0 ) + #define DXGI_CPU_ACCESS_DYNAMIC ( 1 ) + #define DXGI_CPU_ACCESS_READ_WRITE ( 2 ) + #define DXGI_CPU_ACCESS_SCRATCH ( 3 ) + #define DXGI_CPU_ACCESS_FIELD 15 + #define ( 1L << (0 + 4) ) + #define ( 1L << (1 + 4) ) + #define ( 1L << (2 + 4) ) + #define ( 1L << (3 + 4) ) + #define ( 1L << (4 + 4) ) + #define ( 1L << (5 + 4) ) + #define ( 1L << (6 + 4) ) + typedef UINT DXGI_USAGE;

These flag options are used in a call to the , IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, or IDXGIFactory2::CreateSwapChainForComposition method to describe the surface usage and CPU access options for the back buffer of a swap chain. You can't use the , , and values as input to create a swap chain. However, DXGI can set and for some of the swap chain's back buffers on the application's behalf. You can call the method to retrieve the usage of these back buffers. + Swap chain's only support the DXGI_CPU_ACCESS_NONE value in the DXGI_CPU_ACCESS_FIELD part of DXGI_USAGE.

These flag options are also used by the method.

+
+ + bb173078 + DXGI_USAGE_ENUM + DXGI_USAGE_ENUM +
+ + + No documentation. + + + bb173078 + DXGI_USAGE_SHADER_INPUT + DXGI_USAGE_SHADER_INPUT + + + + No documentation. + + + bb173078 + DXGI_USAGE_RENDER_TARGET_OUTPUT + DXGI_USAGE_RENDER_TARGET_OUTPUT + + + + No documentation. + + + bb173078 + DXGI_USAGE_BACK_BUFFER + DXGI_USAGE_BACK_BUFFER + + + + No documentation. + + + bb173078 + DXGI_USAGE_SHARED + DXGI_USAGE_SHARED + + + + No documentation. + + + bb173078 + DXGI_USAGE_READ_ONLY + DXGI_USAGE_READ_ONLY + + + + No documentation. + + + bb173078 + DXGI_USAGE_DISCARD_ON_PRESENT + DXGI_USAGE_DISCARD_ON_PRESENT + + + + No documentation. + + + bb173078 + DXGI_USAGE_UNORDERED_ACCESS + DXGI_USAGE_UNORDERED_ACCESS + + + +

Allows DXGI to monitor an application's message queue for the alt-enter key sequence (which causes the application to switch from windowed to full screen or vice versa).

+
+ +

Note??If you call this API in a Session 0 process, it returns .

The combination of WindowHandle and Flags informs DXGI to stop monitoring window messages for the previously-associated window.

If the application switches to full-screen mode, DXGI will choose a full-screen resolution to be the smallest supported resolution that is larger or the same size as the current back buffer size.

Applications can make some changes to make the transition from windowed to full screen more efficient. For example, on a WM_SIZE message, the application should release any outstanding swap-chain back buffers, call , then re-acquire the back buffers from the swap chain(s). This gives the swap chain(s) an opportunity to resize the back buffers, and/or recreate them to enable full-screen flipping operation. If the application does not perform this sequence, DXGI will still make the full-screen/windowed transition, but may be forced to use a stretch operation (since the back buffers may not be the correct size), which may be less efficient. Even if a stretch is not required, presentation may not be optimal because the back buffers might not be directly interchangeable with the front buffer. Thus, a call to ResizeBuffers on WM_SIZE is always recommended, since WM_SIZE is always sent during a fullscreen transition.

While windowed, the application can, if it chooses, restrict the size of its window's client area to sizes to which it is comfortable rendering. A fully flexible application would make no such restriction, but UI elements or other design considerations can, of course, make this flexibility untenable. If the application further chooses to restrict its window's client area to just those that match supported full-screen resolutions, the application can field WM_SIZING, then check against . If a matching mode is found, allow the resize. (The can be retrieved from . Absent subsequent changes to desktop topology, this will be the same output that will be chosen when alt-enter is fielded and fullscreen mode is begun for that swap chain.)

Applications that want to handle mode changes or Alt+Enter themselves should call MakeWindowAssociation with the flag after swap chain creation. The WindowHandle argument, if non-null, specifies that the application message queues will not be handled by the DXGI runtime for all swap chains of a particular target . Calling MakeWindowAssociation with the flag after swapchain creation ensures that DXGI will not interfere with application's handling of window mode changes or Alt+Enter.

+
+ + bb174540 + DXGI_MWA_FLAGS + DXGI_MWA_FLAGS +
+ + +

The handle of the window that is to be monitored. This parameter can be null; but only if the flags are also 0.

+
+ + bb174540 + DXGI_MWA_NO_WINDOW_CHANGES + DXGI_MWA_NO_WINDOW_CHANGES +
+ + +

One or more of the following values: +

  • - Prevent DXGI from monitoring an applications message queue; this makes DXGI unable to respond to mode changes.
  • - Prevent DXGI from responding to an alt-enter sequence.
  • - Prevent DXGI from responding to a print-screen key.
+
+ + bb174540 + DXGI_MWA_NO_ALT_ENTER + DXGI_MWA_NO_ALT_ENTER +
+ + + No documentation. + + + bb174540 + DXGI_MWA_NO_PRINT_SCREEN + DXGI_MWA_NO_PRINT_SCREEN + + + + No documentation. + + + bb174540 + DXGI_MWA_VALID + DXGI_MWA_VALID + + + + None. + + + None + None + + + + Functions + + + + + +

Creates a DXGI 1.1 factory that you can use to generate other DXGI objects.

+
+

The globally unique identifier () of the object referenced by the ppFactory parameter.

+

Address of a reference to an object.

+

Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

+ +

Use a DXGI 1.1 factory to generate objects that enumerate adapters, create swap chains, and associate a window with the alt+enter key sequence for toggling to and from the full-screen display mode.

If the CreateDXGIFactory1 function succeeds, the reference count on the interface is incremented. To avoid a memory leak, when you finish using the interface, call the IDXGIFactory1::Release method to release the interface.

This entry point is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

Note??CreateDXGIFactory1 fails if your app's DllMain function calls it. For more info about how DXGI responds from DllMain, see DXGI Responses from DLLMain.

Note??Starting with Windows?8, all DXGI factories (regardless if they were created with CreateDXGIFactory or CreateDXGIFactory1) enumerate adapters identically. The enumeration order of adapters, which you retrieve with or , is as follows:

  • Adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero.
  • Adapters with outputs.
  • Adapters without outputs.

Windows?Phone?8: This API is supported.

Windows Phone 8.1: This API is supported.

+
+ + ff471318 + HRESULT CreateDXGIFactory1([In] const GUID& riid,[Out] void** ppFactory) + CreateDXGIFactory1 +
+ + +

Creates a DXGI 1.0 factory that you can use to generate other DXGI objects.

+
+

The globally unique identifier () of the object referenced by the ppFactory parameter.

+

Address of a reference to an object.

+

Returns if successful; otherwise, returns one of the following DXGI_ERROR.

+ +

Use a DXGI factory to generate objects that enumerate adapters, create swap chains, and associate a window with the alt+enter key sequence for toggling to and from the fullscreen display mode.

If the CreateDXGIFactory function succeeds, the reference count on the interface is incremented. To avoid a memory leak, when you finish using the interface, call the IDXGIFactory::Release method to release the interface.

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

Note??CreateDXGIFactory fails if your app's DllMain function calls it. For more info about how DXGI responds from DllMain, see DXGI Responses from DLLMain.

Note??Starting with Windows?8, all DXGI factories (regardless if they were created with CreateDXGIFactory or CreateDXGIFactory1) enumerate adapters identically. The enumeration order of adapters, which you retrieve with or , is as follows:

  • Adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero.
  • Adapters with outputs.
  • Adapters without outputs.

The CreateDXGIFactory function does not exist for Windows Store apps. Instead, Windows Store apps use the CreateDXGIFactory1 function.

+
+ + bb204862 + HRESULT CreateDXGIFactory([In] const GUID& riid,[Out] void** ppFactory) + CreateDXGIFactory +
+ + + Functions + + + + + Constant FrameStatisticsDisjoint. + DXGI_ERROR_FRAME_STATISTICS_DISJOINT + + + Constant DeviceReset. + DXGI_ERROR_DEVICE_RESET + + + Constant DriverInternalError. + DXGI_ERROR_DRIVER_INTERNAL_ERROR + + + Constant InvalidCall. + DXGI_ERROR_INVALID_CALL + + + Constant NotFound. + DXGI_ERROR_NOT_FOUND + + + Constant WasStillDrawing. + DXGI_ERROR_WAS_STILL_DRAWING + + + Constant Unsupported. + DXGI_ERROR_UNSUPPORTED + + + Constant RemoteClientDisconnected. + DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED + + + Constant DeviceRemoved. + DXGI_ERROR_DEVICE_REMOVED + + + Constant DeviceHung. + DXGI_ERROR_DEVICE_HUNG + + + Constant RemoteOufOfMemory. + DXGI_ERROR_REMOTE_OUTOFMEMORY + + + Constant MoreData. + DXGI_ERROR_MORE_DATA + + + Constant Nonexclusive. + DXGI_ERROR_NONEXCLUSIVE + + + Constant GraphicsVidpnSourceInUse. + DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE + + + Constant NotCurrentlyAvailable. + DXGI_ERROR_NOT_CURRENTLY_AVAILABLE + + + +

The interface represents a display sub-system (including one or more GPU's, DACs and video memory).

+
+ +

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.

To enumerate the display sub-systems, use . To get an interface to the adapter for a particular device, use . To create a software adapter, use .

Windows?Phone?8: This API is supported.

+
+ + ff471329 + IDXGIAdapter1 + IDXGIAdapter1 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets a DXGI 1.1 description of an adapter (or video card).

+
+

A reference to a structure that describes the adapter. This parameter must not be null. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID in the VendorId, DeviceId, SubSysId, and Revision members of and ?Software Adapter? for the description string in the Description member.

+

Returns if successful; otherwise, returns E_INVALIDARG if the pDesc parameter is null.

+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Use the GetDesc1 method to get a DXGI 1.1 description of an adapter. To get a DXGI 1.0 description, use the method.

Windows?Phone?8: This API is supported.

+
+ + ff471330 + HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc) + IDXGIAdapter1::GetDesc1 +
+ + +

Gets a DXGI 1.1 description of an adapter (or video card).

+
+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Use the GetDesc1 method to get a DXGI 1.1 description of an adapter. To get a DXGI 1.0 description, use the method.

Windows?Phone?8: This API is supported.

+
+ + ff471330 + GetDesc1 + GetDesc1 + HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc) +
+ + +

An interface implements a derived class for DXGI objects that produce image data.

+
+ +

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

The interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to applications that do not use Direct3D to communicate with DXGI.

The Direct3D create device functions return a Direct3D device object. This Direct3D device object implements the interface. You can query this Direct3D device object for the device's corresponding interface. To retrieve the interface of a Direct3D device, use the following code:

 * pDXGIDevice;	
+            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
+            

Windows?Phone?8: This API is supported.

+
+ + ff471331 + IDXGIDevice1 + IDXGIDevice1 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets the number of frames that the system is allowed to queue for rendering.

+
+

The maximum number of back buffer frames that a driver can queue. The value defaults to 3, but can range from 1 to 16. A value of 0 will reset latency to the default. For multi-head devices, this value is specified per-head.

+

Returns if successful; otherwise, if the device was removed.

+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

Windows?Phone?8: This API is supported.

+
+ + ff471334 + HRESULT IDXGIDevice1::SetMaximumFrameLatency([In] unsigned int MaxLatency) + IDXGIDevice1::SetMaximumFrameLatency +
+ + +

Gets the number of frames that the system is allowed to queue for rendering.

+
+

This value is set to the number of frames that can be queued for render. This value defaults to 3, but can range from 1 to 16.

+

Returns if successful; otherwise, returns one of the following members of the D3DERR enumerated type:

+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

Windows?Phone?8: This API is supported.

+
+ + ff471332 + HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) + IDXGIDevice1::GetMaximumFrameLatency +
+ + +

Gets or sets the number of frames that the system is allowed to queue for rendering.

+
+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

Windows?Phone?8: This API is supported.

+
+ + ff471332 + GetMaximumFrameLatency / SetMaximumFrameLatency + GetMaximumFrameLatency + HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) +
+ + +

Represents a keyed mutex, which allows exclusive access to a shared resource that is used by multiple devices.

+
+ +

The is required to create a resource capable of supporting the interface.

An should be retrieved for each device sharing a resource. In Direct3D 10.1, such a resource that is shared between two or more devices is created with the flag. In Direct3D 11, such a resource that is shared between two or more devices is created with the flag.

For information about creating a keyed mutex, see the method.

Windows?Phone?8: This API is supported.

+
+ + ff471338 + IDXGIKeyedMutex + IDXGIKeyedMutex +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Using a key, acquires exclusive rendering access to a shared resource.

+
+

A value that indicates which device to give access to. This method will succeed when the device that currently owns the surface calls the method using the same value. This value can be any UINT64 value.

+

The time-out interval, in milliseconds. This method will return if the interval elapses, and the keyed mutex has not been released using the specified Key. If this value is set to zero, the AcquireSync method will test to see if the keyed mutex has been released and returns immediately. If this value is set to INFINITE, the time-out interval will never elapse.

+

Return if successful.

If the owning device attempted to create another keyed mutex on the same shared resource, AcquireSync returns E_FAIL.

AcquireSync can also return the following DWORD constants. Therefore, you should explicitly check for these constants. If you only use the SUCCEEDED macro on the return value to determine if AcquireSync succeeded, you will not catch these constants.

  • WAIT_ABANDONED - The shared surface and keyed mutex are no longer in a consistent state. If AcquireSync returns this value, you should release and recreate both the keyed mutex and the shared surface.
  • WAIT_TIMEOUT - The time-out interval elapsed before the specified key was released.
+ +

The AcquireSync method creates a lock to a surface that is shared between multiple devices, allowing only one device to render to a surface at a time. This method uses a key to determine which device currently has exclusive access to the surface.

When a surface is created using the value of the enumeration, you must call the AcquireSync method before rendering to the surface. You must call the ReleaseSync method when you are done rendering to a surface.

To acquire a reference to the keyed mutex object of a shared resource, call the QueryInterface method of the resource and pass in the UUID of the interface. For more information about acquiring this reference, see the following code example.

The AcquireSync method uses the key as follows, depending on the state of the surface:

  • On initial creation, the surface is unowned and any device can call the AcquireSync method to gain access. For an unowned device, only a key of 0 will succeed. Calling the AcquireSync method for any other key will stall the calling CPU thread.
  • If the surface is owned by a device when you call the AcquireSync method, the CPU thread that called the AcquireSync method will stall until the owning device calls the ReleaseSync method using the same Key.
  • If the surface is unowned when you call the AcquireSync method (for example, the last owning device has already called the ReleaseSync method), the AcquireSync method will succeed if you specify the same key that was specified when the ReleaseSync method was last called. Calling the AcquireSync method using any other key will cause a stall.
  • When the owning device calls the ReleaseSync method with a particular key, and more than one device is waiting after calling the AcquireSync method using the same key, any one of the waiting devices could be woken up first. The order in which devices are woken up is undefined.
  • A keyed mutex does not support recursive calls to the AcquireSync method.

Windows?Phone?8: This API is supported.

+
+ + ff471339 + HRESULT IDXGIKeyedMutex::AcquireSync([In] unsigned longlong Key,[In] unsigned int dwMilliseconds) + IDXGIKeyedMutex::AcquireSync +
+ + +

Using a key, releases exclusive rendering access to a shared resource.

+
+

A value that indicates which device to give access to. This method succeeds when the device that currently owns the surface calls the ReleaseSync method using the same value. This value can be any UINT64 value.

+

Returns if successful.

If the device attempted to release a keyed mutex that is not valid or owned by the device, ReleaseSync returns E_FAIL.

+ +

The ReleaseSync method releases a lock to a surface that is shared between multiple devices. This method uses a key to determine which device currently has exclusive access to the surface.

When a surface is created using the value of the enumeration, you must call the method before rendering to the surface. You must call the ReleaseSync method when you are done rendering to a surface.

After you call the ReleaseSync method, the shared resource is unset from the rendering pipeline.

To acquire a reference to the keyed mutex object of a shared resource, call the QueryInterface method of the resource and pass in the UUID of the interface. For more information about acquiring this reference, see the following code example.

Windows?Phone?8: This API is supported.

+
+ + ff471340 + HRESULT IDXGIKeyedMutex::ReleaseSync([In] unsigned longlong Key) + IDXGIKeyedMutex::ReleaseSync +
+ + +

An interface represents an adapter output (such as a monitor).

+
+ +

To see the outputs available, use . To see the specific output that the swap chain will update, use .

Windows?Phone?8: This API is supported.

+
+ + bb174546 + IDXGIOutput + IDXGIOutput +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a description of the output.

+
+

A reference to the output description (see ).

+

Returns a code that indicates success or failure. if successful, if pDesc is passed in as null.

+ +

On a high DPI desktop, GetDesc returns the visualized screen size unless the app is marked high DPI aware. For info about writing DPI-aware Win32 apps, see High DPI.

Windows?Phone?8: This API is supported.

+
+ + bb174548 + HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc) + IDXGIOutput::GetDesc +
+ + +

[Starting with Direct3D 11.1, we recommend not to use GetDisplayModeList anymore to retrieve the matching display mode. Instead, use IDXGIOutput1::GetDisplayModeList1, which supports stereo display mode.]

Gets the display modes that match the requested format and other input options.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

Returns one of the following DXGI_ERROR. It is rare, but possible, that the display modes available can change immediately after calling this method, in which case is returned (if there is not enough room for all the display modes). If GetDisplayModeList is called from a Remote Desktop Services session (formerly Terminal Services session), is returned.

+ +

In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor).

As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes.

 UINT num = 0;	
+             format = ;	
+            UINT flags         = ; pOutput->GetDisplayModeList( format, flags, &num, 0); ...  * pDescs = new [num];	
+            pOutput->GetDisplayModeList( format, flags, &num, pDescs); 

Windows?Phone?8: This API is supported.

+
+ + bb174549 + HRESULT IDXGIOutput::GetDisplayModeList([In] DXGI_FORMAT EnumFormat,[In] unsigned int Flags,[InOut] unsigned int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc) + IDXGIOutput::GetDisplayModeList +
+ + +

[Starting with Direct3D 11.1, we recommend not to use FindClosestMatchingMode anymore to find the display mode that most closely matches the requested display mode. Instead, use IDXGIOutput1::FindClosestMatchingMode1, which supports stereo display mode.]

Finds the display mode that most closely matches the requested display mode.

+
+ No documentation. + No documentation. + No documentation. +

Returns one of the following DXGI_ERROR.

+ +

FindClosestMatchingMode behaves similarly to the IDXGIOutput1::FindClosestMatchingMode1 except FindClosestMatchingMode considers only the mono display modes. IDXGIOutput1::FindClosestMatchingMode1 considers only stereo modes if you set the Stereo member in the DXGI_MODE_DESC1 structure that pModeToMatch points to, and considers only mono modes if Stereo is not set.

IDXGIOutput1::FindClosestMatchingMode1 returns a matched display-mode set with only stereo modes or only mono modes. + FindClosestMatchingMode behaves as though you specified the input mode as mono.

Windows?Phone?8: This API is supported.

+
+ + bb174547 + HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice) + IDXGIOutput::FindClosestMatchingMode +
+ + +

Halt a thread until the next vertical blank occurs.

+
+

Returns one of the following DXGI_ERROR.

+ +

A vertical blank occurs when the raster moves from the lower right corner to the upper left corner to begin drawing the next frame.

Windows?Phone?8: This API is supported.

+
+ + bb174559 + HRESULT IDXGIOutput::WaitForVBlank() + IDXGIOutput::WaitForVBlank +
+ + +

Takes ownership of an output.

+
+

A reference to the interface of a device (such as an ).

+

Set to TRUE to enable other threads or applications to take ownership of the device; otherwise, set to .

+

Returns one of the DXGI_ERROR values.

+ +

When you are finished with the output, call .

TakeOwnership should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.

+
+ + bb174558 + HRESULT IDXGIOutput::TakeOwnership([In] IUnknown* pDevice,[In] BOOL Exclusive) + IDXGIOutput::TakeOwnership +
+ + +

Releases ownership of the output.

+
+ +

If you are not using a swap chain, get access to an output by calling and release it when you are finished by calling . An application that uses a swap chain will typically not call either of these methods.

+
+ + bb174554 + void IDXGIOutput::ReleaseOwnership() + IDXGIOutput::ReleaseOwnership +
+ + +

Gets a description of the gamma-control capabilities.

+
+

A reference to a description of the gamma-control capabilities (see ).

+

Returns one of the DXGI_ERROR values.

+ +

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

+
+ + bb174553 + HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps) + IDXGIOutput::GetGammaControlCapabilities +
+ + +

Sets the gamma controls.

+
+

A reference to a structure that describes the gamma curve to set.

+

Returns one of the DXGI_ERROR values.

+ +

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

+
+ + bb174557 + HRESULT IDXGIOutput::SetGammaControl([In] const DXGI_GAMMA_CONTROL* pArray) + IDXGIOutput::SetGammaControl +
+ + +

Gets the gamma control settings.

+
+

An array of gamma control settings (see ).

+

Returns one of the DXGI_ERROR values.

+ +

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

+
+ + bb174552 + HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray) + IDXGIOutput::GetGammaControl +
+ + +

Changes the display mode.

+
+

A reference to a surface (see ) used for rendering an image to the screen. The surface must have been created as a back buffer (DXGI_USAGE_BACKBUFFER).

+

Returns one of the DXGI_ERROR values.

+ +

should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.

This method should only be called between and calls.

+
+ + bb174556 + HRESULT IDXGIOutput::SetDisplaySurface([In] IDXGISurface* pScanoutSurface) + IDXGIOutput::SetDisplaySurface +
+ + +

[Starting with Direct3D 11.1, we recommend not to use GetDisplaySurfaceData anymore to retrieve the current display surface. Instead, use IDXGIOutput1::GetDisplaySurfaceData1, which supports stereo display mode.]

Gets a copy of the current display surface.

+
+ No documentation. +

Returns one of the DXGI_ERROR values.

+ +

can only be called when an output is in full-screen mode. If the method succeeds, DXGI fills the destination surface.

Use to determine the size (width and height) of the output when you want to allocate space for the destination surface. This is true regardless of target monitor rotation. A destination surface created by a graphics component (such as Direct3D 10) must be created with CPU-write permission (see ). Other surfaces should be created with CPU read-write permission (see D3D10_CPU_ACCESS_READ_WRITE). This method will modify the surface data to fit the destination surface (stretch, shrink, convert format, rotate). The stretch and shrink is performed with point-sampling.

+
+ + bb174550 + HRESULT IDXGIOutput::GetDisplaySurfaceData([In] IDXGISurface* pDestination) + IDXGIOutput::GetDisplaySurfaceData +
+ + +

Gets statistics about recently rendered frames.

+
+

A reference to frame statistics (see ).

+

If this function succeeds, it returns . Otherwise, it might return .

+ +

This API is similar to .

Note??Calling this method is only supported while in full-screen mode.

+
+ + bb174551 + HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) + IDXGIOutput::GetFrameStatistics +
+ + + Find the display mode that most closely matches the requested display mode. + + + Direct3D devices require UNORM formats. This method finds the closest matching available display mode to the mode specified in pModeToMatch. Similarly ranked fields (i.e. all specified, or all unspecified, etc) are resolved in the following order. ScanlineOrdering Scaling Format Resolution RefreshRate When determining the closest value for a particular field, previously matched fields are used to filter the display mode list choices, and other fields are ignored. For example, when matching Resolution, the display mode list will have already been filtered by a certain ScanlineOrdering, Scaling, and Format, while RefreshRate is ignored. This ordering doesn't define the absolute ordering for every usage scenario of FindClosestMatchingMode, because the application can choose some values initially, effectively changing the order that fields are chosen. Fields of the display mode are matched one at a time, generally in a specified order. If a field is unspecified, FindClosestMatchingMode gravitates toward the values for the desktop related to this output. If this output is not part of the desktop, then the default desktop output is used to find values. If an application uses a fully unspecified display mode, FindClosestMatchingMode will typically return a display mode that matches the desktop settings for this output. Unspecified fields are lower priority than specified fields and will be resolved later than specified fields. + + A reference to the Direct3D device interface. If this parameter is NULL, only modes whose format matches that of pModeToMatch will be returned; otherwise, only those formats that are supported for scan-out by the device are returned. + The desired display mode (see ). Members of DXGI_MODE_DESC can be unspecified indicating no preference for that member. A value of 0 for Width or Height indicates the value is unspecified. If either Width or Height are 0 both must be 0. A numerator and denominator of 0 in RefreshRate indicate it is unspecified. Other members of DXGI_MODE_DESC have enumeration values indicating the member is unspecified. If pConnectedDevice is NULL Format cannot be DXGI_FORMAT_UNKNOWN. + The mode that most closely matches pModeToMatch. + Returns one of the following . + HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice) + + + + Gets the display modes that match the requested format and other input options. + + + In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor). As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes. + UINT num = 0; + DXGI_FORMAT format = DXGI_FORMAT_R32G32B32A32_FLOAT; + UINT flags = DXGI_ENUM_MODES_INTERLACED; pOutput->GetDisplayModeList( format, flags, &num, 0); ... DXGI_MODE_DESC * pDescs = new DXGI_MODE_DESC[num]; + pOutput->GetDisplayModeList( format, flags, &num, pDescs); + + + + The color format (see ). + format for modes to include (see {{DXGI_ENUM_MODES}}). DXGI_ENUM_MODES_SCALING needs to be specified to expose the display modes that require scaling. Centered modes, requiring no scaling and corresponding directly to the display output, are enumerated by default. + Returns a list of display modes (see ); + HRESULT IDXGIOutput::GetDisplayModeList([None] DXGI_FORMAT EnumFormat,[None] int Flags,[InOut] int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc) + + + +

Get a description of the output.

+
+ +

On a high DPI desktop, GetDesc returns the visualized screen size unless the app is marked high DPI aware. For info about writing DPI-aware Win32 apps, see High DPI.

Windows?Phone?8: This API is supported.

+
+ + bb174548 + GetDesc + GetDesc + HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc) +
+ + +

Gets a description of the gamma-control capabilities.

+
+ +

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

+
+ + bb174553 + GetGammaControlCapabilities + GetGammaControlCapabilities + HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps) +
+ + +

Gets or sets the gamma control settings.

+
+ +

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

+
+ + bb174552 + GetGammaControl / SetGammaControl + GetGammaControl + HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray) +
+ + +

Gets statistics about recently rendered frames.

+
+ +

This API is similar to .

Note??Calling this method is only supported while in full-screen mode.

+
+ + bb174551 + GetFrameStatistics + GetFrameStatistics + HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) +
+ + +

An interface allows resource sharing and identifies the memory that a resource resides in.

+
+ +

To find out what type of memory a resource is currently located in, use . To share resources between processes, use . For information about how to share resources between multiple Windows graphics APIs, including Direct3D 11, Direct2D, Direct3D 10, and Direct3D 9Ex, see Surface Sharing Between Windows Graphics APIs.

You can retrieve the interface from any video memory resource that you create from a Direct3D 10 and later function. Any Direct3D object that supports or also supports . For example, the Direct3D 2D texture object that you create from supports . You can call QueryInterface on the 2D texture object () to retrieve the interface. For example, to retrieve the interface from the 2D texture object, use the following code.

 * pDXGIResource;	
+            hr = g_pd3dTexture2D->QueryInterface(__uuidof(), (void **)&pDXGIResource);	
+            

Windows?Phone?8: This API is supported.

+
+ + bb174560 + IDXGIResource + IDXGIResource +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

[Starting with Direct3D 11.1, we recommend not to use GetSharedHandle anymore to retrieve the handle to a shared resource. Instead, use IDXGIResource1::CreateSharedHandle to get a handle for sharing. To use IDXGIResource1::CreateSharedHandle, you must create the resource as shared and specify that it uses NT handles (that is, you set the D3D11_RESOURCE_MISC_SHARED_NTHANDLE flag). We also recommend that you create shared resources that use NT handles so you can use CloseHandle, DuplicateHandle, and so on on those shared resources.]

Gets the handle to a shared resource.

+
+ No documentation. +

Returns one of the DXGI_ERROR values.

+ +

GetSharedHandle returns a handle for the resource that you created as shared (that is, you set the with or without the flag). You can pass this handle to the method to give another device access to the shared resource. You can also marshal this handle to another process to share a resource with a device in another process. However, this handle is not an NT handle. Therefore, don't use the handle with CloseHandle, DuplicateHandle, and so on.

The creator of a shared resource must not destroy the resource until all intended entities have opened the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.

GetSharedHandle can also return handles for resources that were passed into to open those resources.

GetSharedHandle fails if the resource to which it wants to get a handle is not shared.

Windows?Phone?8: This API is supported.

+
+ + bb174562 + HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle) + IDXGIResource::GetSharedHandle +
+ + +

Get the expected resource usage.

+
+

A reference to a usage flag (see DXGI_USAGE). For Direct3D 10, a surface can be used as a shader input or a render-target output.

+

Returns one of the following DXGI_ERROR.

+ +

Windows?Phone?8: This API is supported.

+
+ + bb174563 + HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage) + IDXGIResource::GetUsage +
+ + +

Set the priority for evicting the resource from memory.

+
+

The priority is one of the following values:

ValueMeaning
(0x28000000)

The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.

(0x50000000)

The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.

(0x78000000)

The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource.

(0xa0000000)

The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.

(0xc8000000)

The resource is evicted from memory only if there is no other way of resolving the memory requirement.

?

+

Returns one of the following DXGI_ERROR.

+ +

The eviction priority is a memory-management variable that is used by DXGI for determining how to populate overcommitted memory.

You can set priority levels other than the defined values when appropriate. For example, you can set a resource with a priority level of 0x78000001 to indicate that the resource is slightly above normal.

Windows?Phone?8: This API is supported.

+
+ + bb174564 + HRESULT IDXGIResource::SetEvictionPriority([In] unsigned int EvictionPriority) + IDXGIResource::SetEvictionPriority +
+ + +

Get the eviction priority.

+
+

A reference to the eviction priority, which determines when a resource can be evicted from memory.

The following defined values are possible.

ValueMeaning
(0x28000000)

The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.

(0x50000000)

The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.

(0x78000000)

The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource.

(0xa0000000)

The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.

(0xc8000000)

The resource is evicted from memory only if there is no other way of resolving the memory requirement.

?

+

Returns one of the following DXGI_ERROR.

+ +

The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.

Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.

Windows?Phone?8: This API is supported.

+
+ + bb174561 + HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority) + IDXGIResource::GetEvictionPriority +
+ + +

[Starting with Direct3D 11.1, we recommend not to use GetSharedHandle anymore to retrieve the handle to a shared resource. Instead, use IDXGIResource1::CreateSharedHandle to get a handle for sharing. To use IDXGIResource1::CreateSharedHandle, you must create the resource as shared and specify that it uses NT handles (that is, you set the D3D11_RESOURCE_MISC_SHARED_NTHANDLE flag). We also recommend that you create shared resources that use NT handles so you can use CloseHandle, DuplicateHandle, and so on on those shared resources.]

Gets the handle to a shared resource.

+
+ +

GetSharedHandle returns a handle for the resource that you created as shared (that is, you set the with or without the flag). You can pass this handle to the method to give another device access to the shared resource. You can also marshal this handle to another process to share a resource with a device in another process. However, this handle is not an NT handle. Therefore, don't use the handle with CloseHandle, DuplicateHandle, and so on.

The creator of a shared resource must not destroy the resource until all intended entities have opened the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.

GetSharedHandle can also return handles for resources that were passed into to open those resources.

GetSharedHandle fails if the resource to which it wants to get a handle is not shared.

Windows?Phone?8: This API is supported.

+
+ + bb174562 + GetSharedHandle + GetSharedHandle + HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle) +
+ + +

Get the expected resource usage.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + bb174563 + GetUsage + GetUsage + HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage) +
+ + +

Get or sets the eviction priority.

+
+ +

The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.

Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.

Windows?Phone?8: This API is supported.

+
+ + bb174561 + GetEvictionPriority / SetEvictionPriority + GetEvictionPriority + HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority) +
+ + +

The interface implements methods for image-data objects.

+
+ +

An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call .

The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when you call or to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to .

Windows?Phone?8: This API is supported.

+
+ + bb174565 + IDXGISurface + IDXGISurface +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a description of the surface.

+
+

A reference to the surface description (see ).

+

Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

+ +

Windows?Phone?8: This API is supported.

+
+ + bb174566 + HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc) + IDXGISurface::GetDesc +
+ + +

Get a reference to the data contained in the surface, and deny GPU access to the surface.

+
+

A reference to the surface data (see ).

+

CPU read-write flags. These flags can be combined with a logical OR.

  • - Allow CPU read access.
  • - Allow CPU write access.
  • - Discard the previous contents of a resource when it is mapped.
+

Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

+ +

Use to access a surface from the CPU. To release a mapped surface (and allow GPU access) call .

Windows?Phone?8: This API is supported.

+
+ + bb174567 + HRESULT IDXGISurface::Map([Out] DXGI_MAPPED_RECT* pLockedRect,[In] unsigned int MapFlags) + IDXGISurface::Map +
+ + +

Invalidate the reference to the surface retrieved by and re-enable GPU access to the resource.

+
+

Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

+ +

Windows?Phone?8: This API is supported.

+
+ + bb174568 + HRESULT IDXGISurface::Unmap() + IDXGISurface::Unmap +
+ + + Acquires access to the surface data. + + Flags specifying CPU access permissions. + A for accessing the mapped data, or null on failure.. + + + + Acquires access to the surface data. + + Flags specifying CPU access permissions. + Stream to contain the surface data. + A for accessing the mapped data, or null on failure.. + + + + Gets a swap chain back buffer. + + The swap chain to get the buffer from. + The index of the desired buffer. + The buffer interface, or null on failure. + + + +

Get a description of the surface.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + bb174566 + GetDesc + GetDesc + HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc) +
+ + +

The interface extends the by adding support for using Windows Graphics Device Interface (GDI) to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface.

+
+ +

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call . Then, call QueryInterface on the object that returns to retrieve the interface.

Any object that supports also supports .

The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when you call or to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to .

+
+ + ff471343 + IDXGISurface1 + IDXGISurface1 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Returns a device context (DC) that allows you to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface using Windows Graphics Device Interface (GDI).

+
+

A Boolean value that specifies whether to preserve Direct3D contents in the GDI DC. TRUE directs the runtime not to preserve Direct3D contents in the GDI DC; that is, the runtime discards the Direct3D contents. guarantees that Direct3D contents are available in the GDI DC.

+

A reference to an handle that represents the current device context for GDI rendering.

+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

After you use the GetDC method to retrieve a DC, you can render to the DXGI surface by using GDI. The GetDC method readies the surface for GDI rendering and allows inter-operation between DXGI and GDI technologies.

Keep the following in mind when using this method:

  • You must create the surface by using the flag for a surface or by using the flag for swap chains, otherwise this method fails.
  • You must release the device and call the method before you issue any new Direct3D commands.
  • This method fails if an outstanding DC has already been created by this method.
  • The format for the surface or swap chain must be or .
  • On GetDC, the render target in the output merger of the Direct3D pipeline is unbound from the surface. You must call the method on the device prior to Direct3D rendering after GDI rendering.
  • Prior to resizing buffers you must release all outstanding DCs.

You can also call GetDC on the back buffer at index 0 of a swap chain by obtaining an from the swap chain. The following code illustrates the process.

 * g_pSwapChain = null;	
+            * g_pSurface1 = null;	
+            ...	
+            //Setup the device and and swapchain	
+            g_pSwapChain->GetBuffer(0, __uuidof(), (void**) &g_pSurface1);	
+            g_pSurface1->GetDC( , &g_hDC );	
+            ...      	
+            //Draw on the DC using GDI	
+            ...	
+            //When finish drawing release the DC	
+            g_pSurface1->ReleaseDC( null ); 
+
+ + ff471345 + HRESULT IDXGISurface1::GetDC([In] BOOL Discard,[Out] HDC* phdc) + IDXGISurface1::GetDC +
+ + +

Releases the GDI device context (DC) that is associated with the current surface and allows you to use Direct3D to render.

+
+

A reference to a structure that identifies the dirty region of the surface. A dirty region is any part of the surface that you used for GDI rendering and that you want to preserve. This area is used as a performance hint to graphics subsystem in certain scenarios. Do not use this parameter to restrict rendering to the specified rectangular region. If you pass in null, ReleaseDC considers the whole surface as dirty. Otherwise, ReleaseDC uses the area specified by the as a performance hint to indicate what areas have been manipulated by GDI rendering.

You can pass a reference to an empty structure (a rectangle with no position or area) if you didn't change any content.

+

If this method succeeds, it returns . Otherwise, it returns an error code.

+ +

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Use the ReleaseDC method to release the DC and indicate that your application finished all GDI rendering to this surface. You must call the ReleaseDC method before you can use Direct3D to perform additional rendering.

Prior to resizing buffers you must release all outstanding DCs.

+
+ + ff471346 + HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) + IDXGISurface1::ReleaseDC +
+ + + Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D. The whole surface to be considered dirty. + + + Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface. You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. + + If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. + HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) + + + + Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D. + + + Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface. You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. + + A reference to a structure that identifies the dirty region of the surface. A dirty region is any part of the surface that you have used for GDI rendering and that you want to preserve. This is used as a performance hint to graphics subsystem in certain scenarios. Do not use this parameter to restrict rendering to the specified rectangular region. The area specified by the will be used as a performance hint to indicate what areas have been manipulated by GDI rendering. + If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. + HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) + + + +

An interface implements one or more surfaces for storing rendered data before presenting it to an output.

+
+ +

You can create a swap chain by + calling IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, or IDXGIFactory2::CreateSwapChainForComposition. You can also create a swap chain when you call ; however, you can then only access the sub-set of swap-chain functionality that the interface provides.

Windows?Phone?8: This API is supported.

+
+ + bb174569 + IDXGISwapChain + IDXGISwapChain +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

[Starting with Direct3D 11.1, we recommend not to use Present anymore to present a rendered image. Instead, use IDXGISwapChain1::Present1. For more info, see Remarks.]

Presents a rendered image to the user.

+
+ No documentation. + No documentation. +

Possible return values include: , or (see DXGI_ERROR), (see ), or D3DDDIERR_DEVICEREMOVED.

Note??The Present method can return either or D3DDDIERR_DEVICEREMOVED if a video card has been physically removed from the computer, or a driver upgrade for the video card has occurred.

+ +

Starting with Direct3D 11.1, we recommend to instead use IDXGISwapChain1::Present1 because you can then use dirty rectangles and the scroll rectangle in the swap chain presentation and as such use less memory bandwidth and as a result less system power. For more info about using dirty rectangles and the scroll rectangle in swap chain presentation, see Using dirty rectangles and the scroll rectangle in swap chain presentation.

For the best performance when flipping swap-chain buffers in a full-screen application, see Full-Screen Application Performance Hints.

Because calling Present might cause the render thread to wait on the message-pump thread, be careful when calling this method in an application that uses multiple threads. For more details, see Multithreading Considerations.

Differences between Direct3D 9 and Direct3D 10:

Specifying in the Flags parameter is analogous to in Direct3D 9.

?

For flip presentation model swap chains that you create with the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set, a successful presentation unbinds back buffer 0 from the graphics pipeline, except for when you pass the flag in the Flags parameter.

For info about how data values change when you present content to the screen, see Converting data for the color space.

+
+ + bb174576 + HRESULT IDXGISwapChain::Present([In] unsigned int SyncInterval,[In] DXGI_PRESENT_FLAGS Flags) + IDXGISwapChain::Present +
+ + +

Accesses one of the swap-chain's back buffers.

+
+

A zero-based buffer index.

If the swap chain's swap effect is , this method can only access the first buffer; for this situation, set the index to zero.

If the swap chain's swap effect is either or DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, only the swap chain's zero-index buffer can be read from and written to. The swap chain's buffers with indexes greater than zero can only be read from; so if you call the method for such buffers, they have the flag set.

+

The type of interface used to manipulate the buffer.

+

A reference to a back-buffer interface.

+

Returns one of the following DXGI_ERROR.

+ +

Windows?Phone?8: This API is supported.

+
+ + bb174570 + HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID& riid,[Out] void** ppSurface) + IDXGISwapChain::GetBuffer +
+ + +

Sets the display state to windowed or full screen.

+
+

A Boolean value that specifies whether to set the display state to windowed or full screen. TRUE for full screen, and for windowed.

+

If you pass TRUE to the Fullscreen parameter to set the display state to full screen, you can optionally set this parameter to a reference to an interface for the output target that contains the swap chain. If you set this parameter to null, DXGI will choose the output based on the swap-chain's device and the output window's placement. If you pass to Fullscreen, you must set this parameter to null.

+

This methods returns:

  • if the action succeeded and the swap chain was placed in the requested state.
  • if the action failed. There are many reasons why a windowed-mode swap chain cannot switch to full-screen mode. For instance:
    • The application is running over Terminal Server.
    • The output window is occluded.
    • The output window does not have keyboard focus.
    • Another application is already in full-screen mode.

    When this error is returned, an application can continue to run in windowed mode and try to switch to full-screen mode later.

  • is returned if a fullscreen/windowed mode transition is occurring when this API is called.
  • Other error codes if you run out of memory or encounter another unexpected fault; these codes may be treated as hard, non-continuable errors.
+ +

DXGI may change the display state of a swap chain in response to end user or system requests.

We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through SetFullscreenState; that is, do not set the Windowed member of to to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything. Also, we recommend that you have a time-out confirmation screen or other fallback mechanism when you allow the end user to change display modes.

+
+ + bb174579 + HRESULT IDXGISwapChain::SetFullscreenState([In] BOOL Fullscreen,[In, Optional] IDXGIOutput* pTarget) + IDXGISwapChain::SetFullscreenState +
+ + +

Get the state associated with full-screen mode.

+
+

A reference to a boolean whose value is either:

  • TRUE if the swap chain is in full-screen mode
  • if the swap chain is in windowed mode
+

A reference to the output target (see ) when the mode is full screen; otherwise null.

+

Returns one of the following DXGI_ERROR.

+ +

When the swap chain is in full-screen mode, a reference to the target output will be returned and its reference count will be incremented.

Windows?Phone?8: This API is supported.

+
+ + bb174574 + HRESULT IDXGISwapChain::GetFullscreenState([Out] BOOL* pFullscreen,[Out] IDXGIOutput** ppTarget) + IDXGISwapChain::GetFullscreenState +
+ + +

[Starting with Direct3D 11.1, we recommend not to use GetDesc anymore to get a description of the swap chain. Instead, use IDXGISwapChain1::GetDesc1.]

Get a description of the swap chain.

+
+ No documentation. +

Returns one of the following DXGI_ERROR.

+ +

Windows?Phone?8: This API is supported.

+
+ + bb174572 + HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc) + IDXGISwapChain::GetDesc +
+ + +

Changes the swap chain's back buffer size, format, and number of buffers. This should be called when the application window is resized.

+
+

The number of buffers in the swap chain (including all back and front buffers). This number can be different from the number of buffers with which you created the swap chain. This number can't be greater than DXGI_MAX_SWAP_CHAIN_BUFFERS. Set this number to zero to preserve the existing number of buffers in the swap chain. You can't specify less than two buffers for the flip presentation model.

+

New width of the back buffer. If you specify zero, DXGI will use the width of the client area of the target window. You can't specify the width as zero if you called the IDXGIFactory2::CreateSwapChainForComposition method to create the swap chain for a composition surface.

+

New height of the back buffer. If you specify zero, DXGI will use the height of the client area of the target window. You can't specify the height as zero if you called the IDXGIFactory2::CreateSwapChainForComposition method to create the swap chain for a composition surface.

+

A -typed value for the new format of the back buffer. Set this value to to preserve the existing format of the back buffer. The flip presentation model supports a more restricted set of formats than the bit-block transfer (bitblt) model.

+

A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies options for swap-chain behavior.

+

Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

+ +

You can't resize a swap chain unless you release all outstanding references to its back buffers. You must release all of its direct and indirect references on the back buffers in order for ResizeBuffers to succeed.

Direct references are held by the application after it calls AddRef on a resource.

Indirect references are held by views to a resource, binding a view of the resource to a device context, a command list that used the resource, a command list that used a view to that resource, a command list that executed another command list that used the resource, and so on.

Before you call ResizeBuffers, ensure that the application releases all references (by calling the appropriate number of Release invocations) on the resources, any views to the resource, and any command lists that use either the resources or views, and ensure that neither the resource nor a view is still bound to a device context. You can use to ensure that all references are released. If a view is bound to a deferred context, you must discard the partially built command list as well (by calling ClearState, , then Release on the command list). After you call ResizeBuffers, you can re-query interfaces via .

For swap chains that you created with , before you call ResizeBuffers, also call on the swap chain's back-buffer surface to ensure that you have no outstanding GDI device contexts (DCs) open.

We recommend that you call ResizeBuffers when a client window is resized (that is, when an application receives a WM_SIZE message).

The only difference between ResizeBuffers in Windows?8 and ResizeBuffers in Windows?7 is with flip presentation model swap chains that you create with the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set. In Windows?8, you must call ResizeBuffers to realize a transition between full-screen mode and windowed mode; otherwise, your next call to the Present method fails.

+
+ + bb174577 + HRESULT IDXGISwapChain::ResizeBuffers([In] unsigned int BufferCount,[In] unsigned int Width,[In] unsigned int Height,[In] DXGI_FORMAT NewFormat,[In] DXGI_SWAP_CHAIN_FLAG SwapChainFlags) + IDXGISwapChain::ResizeBuffers +
+ + +

Resizes the output target.

+
+

A reference to a structure that describes the mode, which specifies the new width, height, format, and refresh rate of the target. If the format is , ResizeTarget uses the existing format. We only recommend that you use when the swap chain is in full-screen mode as this method is not thread safe.

+

Returns a code that indicates success or failure. is returned if a full-screen/windowed mode transition is occurring when this API is called. See DXGI_ERROR for additional DXGI error codes.

+ +

ResizeTarget resizes the target window when the swap chain is in windowed mode, and changes the display mode on the target output when the swap chain is in full-screen mode. Therefore, apps can call ResizeTarget to resize the target window (rather than a Microsoft Win32API such as SetWindowPos) without knowledge of the swap chain display mode.

If a Windows Store app calls ResizeTarget, it fails with .

You cannot call ResizeTarget on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForComposition.

Apps must still call after they call ResizeTarget because only ResizeBuffers can change the back buffers. But, if those apps have implemented window resize processing to call ResizeBuffers, they don't need to explicitly call ResizeBuffers after they call ResizeTarget because the window resize processing will achieve what the app requires.

+
+ + bb174578 + HRESULT IDXGISwapChain::ResizeTarget([In] const DXGI_MODE_DESC* pNewTargetParameters) + IDXGISwapChain::ResizeTarget +
+ + +

Get the output (the display monitor) that contains the majority of the client area of the target window.

+
+

A reference to the output interface (see ).

+

Returns one of the following DXGI_ERROR.

+ +

If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

The output is also owned by the adapter on which the swap chain's device was created.

You cannot call GetContainingOutput on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForComposition.

Windows?Phone?8: This API is supported.

+
+ + bb174571 + HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput) + IDXGISwapChain::GetContainingOutput +
+ + +

Gets performance statistics about the last render frame.

+
+

A reference to a structure for the frame statistics.

+

Returns one of the DXGI_ERROR values.

+ +

You cannot use GetFrameStatistics for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.

You can only use GetFrameStatistics for swap chains that either use the flip presentation model or draw in full-screen mode. You set the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value in the SwapEffect member of the DXGI_SWAP_CHAIN_DESC1 structure to specify that the swap chain uses the flip presentation model.

+
+ + bb174573 + HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) + IDXGISwapChain::GetFrameStatistics +
+ + +

Gets the number of times that or IDXGISwapChain1::Present1 has been called.

+
+ No documentation. +

Returns one of the DXGI_ERROR values.

+ +

For info about presentation statistics for a frame, see .

Windows?Phone?8: This API is supported.

+
+ + bb174575 + HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount) + IDXGISwapChain::GetLastPresentCount +
+ + + Creates a swap chain. + + + If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and DXGI_STATUS_OCCLUDED will be returned. If the buffer width or the buffer height are zero, the sizes will be inferred from the output window size in the swap-chain description. Since the target output cannot be chosen explicitly when the swap-chain is created, you should not create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure the sizes match: Create a windowed swap chain and then set it full-screen using . Save a reference to the swap-chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with ) during the transition from windowed to full-screen. If the swap chain is in full-screen mode, before you release it, you must use {{SetFullscreenState}} to switch it to windowed mode. For more information about releasing a swap chain, see the Destroying a Swap Chain section of {{DXGI Overview}}. + + a reference to a . + A reference to the device that will write 2D images to the swap chain. + A reference to the swap-chain description (see ). + HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out] IDXGISwapChain** ppSwapChain) + bb174537 + HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain) + IDXGIFactory::CreateSwapChain + + + + Access one of the swap-chain back buffers. + + The interface of the surface to resolve from the back buffer + A zero-based buffer index. If the swap effect is not DXGI_SWAP_EFFECT_SEQUENTIAL, this method only has access to the first buffer; for this case, set the index to zero. + + Returns a reference to a back-buffer interface. + + bb174570 + HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID& riid,[Out] void** ppSurface) + IDXGISwapChain::GetBuffer + + + +

[Starting with Direct3D 11.1, we recommend not to use GetDesc anymore to get a description of the swap chain. Instead, use IDXGISwapChain1::GetDesc1.]

Get a description of the swap chain.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + bb174572 + GetDesc + GetDesc + HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc) +
+ + +

Get the output (the display monitor) that contains the majority of the client area of the target window.

+
+ +

If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

The output is also owned by the adapter on which the swap chain's device was created.

You cannot call GetContainingOutput on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForComposition.

Windows?Phone?8: This API is supported.

+
+ + bb174571 + GetContainingOutput + GetContainingOutput + HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput) +
+ + +

Gets performance statistics about the last render frame.

+
+ +

You cannot use GetFrameStatistics for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.

You can only use GetFrameStatistics for swap chains that either use the flip presentation model or draw in full-screen mode. You set the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value in the SwapEffect member of the DXGI_SWAP_CHAIN_DESC1 structure to specify that the swap chain uses the flip presentation model.

+
+ + bb174573 + GetFrameStatistics + GetFrameStatistics + HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) +
+ + +

Gets the number of times that or IDXGISwapChain1::Present1 has been called.

+
+ +

For info about presentation statistics for a frame, see .

Windows?Phone?8: This API is supported.

+
+ + bb174575 + GetLastPresentCount + GetLastPresentCount + HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount) +
+ + + Gets or sets a value indicating whether the swapchain is in fullscreen. + + + true if this swapchain is in fullscreen; otherwise, false. + + bb174574 + HRESULT IDXGISwapChain::GetFullscreenState([Out] BOOL* pFullscreen,[Out] IDXGIOutput** ppTarget) + IDXGISwapChain::GetFullscreenState + + + +

Describes an adapter (or video card) by using DXGI 1.0.

+
+ +

The structure provides a description of an adapter. This structure is initialized by using the method.

+
+ + bb173058 + DXGI_ADAPTER_DESC + DXGI_ADAPTER_DESC +
+ + +

A string that contains the adapter description. On feature level 9 graphics hardware, GetDesc returns ?Software Adapter? for the description string.

+
+ + bb173058 + wchar_t Description[128] + wchar_t Description +
+ + +

The PCI ID of the hardware vendor. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the hardware vendor.

+
+ + bb173058 + unsigned int VendorId + unsigned int VendorId +
+ + +

The PCI ID of the hardware device. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the hardware device.

+
+ + bb173058 + unsigned int DeviceId + unsigned int DeviceId +
+ + +

The PCI ID of the sub system. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the sub system.

+
+ + bb173058 + unsigned int SubSysId + unsigned int SubSysId +
+ + +

The PCI ID of the revision number of the adapter. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the revision number of the adapter.

+
+ + bb173058 + unsigned int Revision + unsigned int Revision +
+ + +

The number of bytes of dedicated video memory that are not shared with the CPU.

+
+ + bb173058 + SIZE_T DedicatedVideoMemory + SIZE_T DedicatedVideoMemory +
+ + +

The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.

+
+ + bb173058 + SIZE_T DedicatedSystemMemory + SIZE_T DedicatedSystemMemory +
+ + +

The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.

+
+ + bb173058 + SIZE_T SharedSystemMemory + SIZE_T SharedSystemMemory +
+ + +

A unique value that identifies the adapter. See for a definition of the structure. is defined in dxgi.h.

+
+ + bb173058 + LUID AdapterLuid + LUID AdapterLuid +
+ + +

Describes an adapter (or video card) using DXGI 1.1.

+
+ +

The structure provides a DXGI 1.1 description of an adapter. This structure is initialized by using the method.

+
+ + ff471326 + DXGI_ADAPTER_DESC1 + DXGI_ADAPTER_DESC1 +
+ + +

A string that contains the adapter description. On feature level 9 graphics hardware, GetDesc1 returns ?Software Adapter? for the description string.

+
+ + ff471326 + wchar_t Description[128] + wchar_t Description +
+ + +

The PCI ID of the hardware vendor. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the hardware vendor.

+
+ + ff471326 + unsigned int VendorId + unsigned int VendorId +
+ + +

The PCI ID of the hardware device. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the hardware device.

+
+ + ff471326 + unsigned int DeviceId + unsigned int DeviceId +
+ + +

The PCI ID of the sub system. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the sub system.

+
+ + ff471326 + unsigned int SubSysId + unsigned int SubSysId +
+ + +

The PCI ID of the revision number of the adapter. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the revision number of the adapter.

+
+ + ff471326 + unsigned int Revision + unsigned int Revision +
+ + +

The number of bytes of dedicated video memory that are not shared with the CPU.

+
+ + ff471326 + SIZE_T DedicatedVideoMemory + SIZE_T DedicatedVideoMemory +
+ + +

The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.

+
+ + ff471326 + SIZE_T DedicatedSystemMemory + SIZE_T DedicatedSystemMemory +
+ + +

The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.

+
+ + ff471326 + SIZE_T SharedSystemMemory + SIZE_T SharedSystemMemory +
+ + +

A unique value that identifies the adapter. See for a definition of the structure. is defined in dxgi.h.

+
+ + ff471326 + LUID AdapterLuid + LUID AdapterLuid +
+ + +

A value of the enumerated type that describes the adapter type. The flag is reserved.

+
+ + ff471326 + DXGI_ADAPTER_FLAG Flags + DXGI_ADAPTER_FLAG Flags +
+ + +

Describes timing and presentation statistics for a frame.

+
+ +

You initialize the structure with the or method.

You can only use for swap chains that either use the flip presentation model or draw in full-screen mode. You set the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value in the SwapEffect member of the DXGI_SWAP_CHAIN_DESC1 structure to specify that the swap chain uses the flip presentation model.

The values in the PresentCount and PresentRefreshCount members indicate information about when a frame was presented on the display screen. You can use these values to determine whether a glitch occurred. The values in the SyncRefreshCount and SyncQPCTime members indicate timing information that you can use for audio and video synchronization or very precise animation. If the swap chain draws in full-screen mode, these values are based on when the computer booted. + If the swap chain draws in windowed mode, these values are based on when the swap chain is created.

+
+ + bb173060 + DXGI_FRAME_STATISTICS + DXGI_FRAME_STATISTICS +
+ + +

A value that represents the running total count of times that an image was presented to the monitor since the computer booted.

Note??The number of times that an image was presented to the monitor is not necessarily the same as the number of times that you called or IDXGISwapChain1::Present1.

+
+ + bb173060 + unsigned int PresentCount + unsigned int PresentCount +
+ + +

A value that represents the running total count of v-blanks at which the last image was presented to the monitor and that have happened since the computer booted (for windowed mode, since the swap chain was created).

+
+ + bb173060 + unsigned int PresentRefreshCount + unsigned int PresentRefreshCount +
+ + +

A value that represents the running total count of v-blanks when the scheduler last sampled the machine time by calling QueryPerformanceCounter and that have happened since the computer booted (for windowed mode, since the swap chain was created).

+
+ + bb173060 + unsigned int SyncRefreshCount + unsigned int SyncRefreshCount +
+ + +

A value that represents the high-resolution performance counter timer. This value is the same as the value returned by the QueryPerformanceCounter function.

+
+ + bb173060 + LARGE_INTEGER SyncQPCTime + LARGE_INTEGER SyncQPCTime +
+ + +

Reserved. Always returns 0.

+
+ + bb173060 + LARGE_INTEGER SyncGPUTime + LARGE_INTEGER SyncGPUTime +
+ + +

Controls the settings of a gamma curve.

+
+ +

The structure is used by the method.

For info about using gamma correction, see Using gamma correction.

+
+ + bb173061 + DXGI_GAMMA_CONTROL + DXGI_GAMMA_CONTROL +
+ + +

A structure with scalar values that are applied to rgb values before being sent to the gamma look up table.

+
+ + bb173061 + DXGI_RGB Scale + DXGI_RGB Scale +
+ + +

A structure with offset values that are applied to the rgb values before being sent to the gamma look up table.

+
+ + bb173061 + DXGI_RGB Offset + DXGI_RGB Offset +
+ + +

An array of structures that control the points of a gamma curve.

+
+ + bb173061 + DXGI_RGB GammaCurve[1025] + DXGI_RGB GammaCurve +
+ + +

Controls the gamma capabilities of an adapter.

+
+ +

To get a list of the capabilities for controlling gamma correction, call .

For info about using gamma correction, see Using gamma correction.

+
+ + bb173062 + DXGI_GAMMA_CONTROL_CAPABILITIES + DXGI_GAMMA_CONTROL_CAPABILITIES +
+ + +

True if scaling and offset operations are supported during gamma correction; otherwise, false.

+
+ + bb173062 + BOOL ScaleAndOffsetSupported + BOOL ScaleAndOffsetSupported +
+ + +

A value describing the maximum range of the control-point positions.

+
+ + bb173062 + float MaxConvertedValue + float MaxConvertedValue +
+ + +

A value describing the minimum range of the control-point positions.

+
+ + bb173062 + float MinConvertedValue + float MinConvertedValue +
+ + +

A value describing the number of control points in the array.

+
+ + bb173062 + unsigned int NumGammaControlPoints + unsigned int NumGammaControlPoints +
+ + +

An array of values describing control points; the maximum length of control points is 1025.

+
+ + bb173062 + float ControlPointPositions[1025] + float ControlPointPositions +
+ + +

Describes a mapped rectangle that is used to access a surface.

+
+ +

The structure is initialized by the method.

+
+ + bb173063 + DXGI_MAPPED_RECT + DXGI_MAPPED_RECT +
+ + +

A value that describes the width, in bytes, of the surface.

+
+ + bb173063 + int Pitch + int Pitch +
+ + +

A reference to the image buffer of the surface.

+
+ + bb173063 + unsigned char* pBits + unsigned char pBits +
+ + +

Describes a display mode.

+
+ +

The following format values are valid for display modes and when you create a bit-block transfer (bitblt) model swap chain. The valid values depend on the feature level that you are working with.

  • Feature level >= 9.1

    • (except 10.x on Windows?Vista)
    • (except 10.x on Windows?Vista)
  • Feature level >= 10.0

  • Feature level >= 11.0

You can pass one of these format values to to determine if it is a valid format for displaying on screen. If returns in the bit field to which the pFormatSupport parameter points, the format is valid for displaying on screen.

Starting with Windows?8 for a flip model swap chain (that is, a swap chain that has the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set in the SwapEffect member of ), you must set the Format member of to , , or .

Because of the relaxed render target creation rules that Direct3D 11 has for back buffers, applications can create a render target view from a swap chain so they can use automatic color space conversion when they render the swap chain.

+
+ + bb173064 + DXGI_MODE_DESC + DXGI_MODE_DESC +
+ + +

A value that describes the resolution width. If you specify the width as zero when you call the method to create a swap chain, the runtime obtains the width from the output window and assigns this width value to the swap-chain description. You can subsequently call the method to retrieve the assigned width value.

+
+ + bb173064 + unsigned int Width + unsigned int Width +
+ + +

A value describing the resolution height. If you specify the height as zero when you call the method to create a swap chain, the runtime obtains the height from the output window and assigns this height value to the swap-chain description. You can subsequently call the method to retrieve the assigned height value.

+
+ + bb173064 + unsigned int Height + unsigned int Height +
+ + +

A structure describing the refresh rate in hertz

+
+ + bb173064 + DXGI_RATIONAL RefreshRate + DXGI_RATIONAL RefreshRate +
+ + +

A structure describing the display format.

+
+ + bb173064 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

A member of the enumerated type describing the scanline drawing mode.

+
+ + bb173064 + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering +
+ + +

A member of the enumerated type describing the scaling mode.

+
+ + bb173064 + DXGI_MODE_SCALING Scaling + DXGI_MODE_SCALING Scaling +
+ + + Initializes a new instance of the structure. + + The width. + The height. + The refresh rate. + The format. + + + +

Describes an output or physical connection between the adapter (video card) and a device.

+
+ +

The structure is initialized by the method.

+
+ + bb173068 + DXGI_OUTPUT_DESC + DXGI_OUTPUT_DESC +
+ + +

A string that contains the name of the output device.

+
+ + bb173068 + wchar_t DeviceName[32] + wchar_t DeviceName +
+ + +

A structure containing the bounds of the output in desktop coordinates. Desktop coordinates depend on the dots per inch (DPI) of the desktop. + For info about writing DPI-aware Win32 apps, see High DPI.

+
+ + bb173068 + RECT DesktopCoordinates + RECT DesktopCoordinates +
+ + +

True if the output is attached to the desktop; otherwise, false.

+
+ + bb173068 + BOOL AttachedToDesktop + BOOL AttachedToDesktop +
+ + +

A member of the enumerated type describing on how an image is rotated by the output.

+
+ + bb173068 + DXGI_MODE_ROTATION Rotation + DXGI_MODE_ROTATION Rotation +
+ + +

An handle that represents the display monitor. For more information, see and the Device Context.

+
+ + bb173068 + HMONITOR Monitor + HMONITOR Monitor +
+ + +

Represents a rational number.

+
+ +

The structure operates under the following rules:

  • 0/0 is legal and will be interpreted as 0/1.
  • 0/anything is interpreted as zero.
  • If you are representing a whole number, the denominator should be 1.
+
+ + bb173069 + DXGI_RATIONAL + DXGI_RATIONAL +
+ + +

An unsigned integer value representing the top of the rational number.

+
+ + bb173069 + unsigned int Numerator + unsigned int Numerator +
+ + +

An unsigned integer value representing the bottom of the rational number.

+
+ + bb173069 + unsigned int Denominator + unsigned int Denominator +
+ + + An empty rational that can be used for comparisons. + + + + + Initializes a new instance of the structure. + + The numerator of the rational pair. + The denominator of the rational pair. + + + +

Describes multi-sampling parameters for a resource.

+
+ +

The default sampler mode, with no anti-aliasing, has a count of 1 and a quality level of 0.

If multi-sample antialiasing is being used, all bound render targets and depth buffers must have the same sample counts and quality levels.

Differences between Direct3D 10.0 and Direct3D 10.1 and between Direct3D 10.0 and Direct3D 11:

Direct3D 10.1 has defined two standard quality levels: and in the enumeration in D3D10_1.h.

Direct3D 11 has defined two standard quality levels: and in the enumeration in D3D11.h.

?

+
+ + bb173072 + DXGI_SAMPLE_DESC + DXGI_SAMPLE_DESC +
+ + +

The number of multisamples per pixel.

+
+ + bb173072 + unsigned int Count + unsigned int Count +
+ + +

The image quality level. The higher the quality, the lower the performance. The valid range is between zero and one less than the level returned by for Direct3D 10 or for Direct3D 11.

For Direct3D 10.1 and Direct3D 11, you can use two special quality level values. For more information about these quality level values, see Remarks.

+
+ + bb173072 + unsigned int Quality + unsigned int Quality +
+ + + Initializes a new instance of the structure. + + The sample count. + The sample quality. + + + +

Represents a handle to a shared resource.

+
+ +

To create a shared surface, pass a shared-resource handle into the method.

+
+ + bb173073 + DXGI_SHARED_RESOURCE + DXGI_SHARED_RESOURCE +
+ + +

A handle to a shared resource.

+
+ + bb173073 + void* Handle + void Handle +
+ + +

Describes a surface.

+
+ + bb173074 + DXGI_SURFACE_DESC + DXGI_SURFACE_DESC +
+ + +

A value describing the surface width.

+
+ + bb173074 + unsigned int Width + unsigned int Width +
+ + +

A value describing the surface height.

+
+ + bb173074 + unsigned int Height + unsigned int Height +
+ + +

A member of the enumerated type that describes the surface format.

+
+ + bb173074 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

A member of the structure that describes multi-sampling parameters for the surface.

+
+ + bb173074 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc +
+ + +

Describes a swap chain.

+
+ +

In full-screen mode, there is a dedicated front buffer; in windowed mode, the desktop is the front buffer.

If you create a swap chain with one buffer, specifying does not cause the contents of the single buffer to be swapped with the front buffer.

For performance information about flipping swap-chain buffers in full-screen application, see Full-Screen Application Performance Hints.

+
+ + bb173075 + DXGI_SWAP_CHAIN_DESC + DXGI_SWAP_CHAIN_DESC +
+ + +

A structure that describes the backbuffer display mode.

+
+ + bb173075 + DXGI_MODE_DESC BufferDesc + DXGI_MODE_DESC BufferDesc +
+ + +

A structure that describes multi-sampling parameters.

+
+ + bb173075 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc +
+ + +

A member of the DXGI_USAGE enumerated type that describes the surface usage and CPU access options for the back buffer. The back buffer can be used for shader input or render-target output.

+
+ + bb173075 + DXGI_USAGE_ENUM BufferUsage + DXGI_USAGE_ENUM BufferUsage +
+ + +

A value that describes the number of buffers in the swap chain. When you call to create a full-screen swap chain, you typically include the front buffer in this value. For more information about swap-chain buffers, see Remarks.

+
+ + bb173075 + unsigned int BufferCount + unsigned int BufferCount +
+ + +

An handle to the output window. This member must not be null.

+
+ + bb173075 + HWND OutputWindow + HWND OutputWindow +
+ + +

A Boolean value that specifies whether the output is in windowed mode. TRUE if the output is in windowed mode; otherwise, .

We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through ; that is, do not set this member to to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes through the BufferDesc member because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything.

For more information about choosing windowed verses full screen, see .

+
+ + bb173075 + BOOL Windowed + BOOL Windowed +
+ + +

A member of the enumerated type that describes options for handling the contents of the presentation buffer after presenting a surface.

+
+ + bb173075 + DXGI_SWAP_EFFECT SwapEffect + DXGI_SWAP_EFFECT SwapEffect +
+ + +

A member of the enumerated type that describes options for swap-chain behavior.

+
+ + bb173075 + DXGI_SWAP_CHAIN_FLAG Flags + DXGI_SWAP_CHAIN_FLAG Flags +
+ + + Internal class used to initialize this assembly. + + + + + Initializes this assembly. + + + This method is called when the assembly is loaded. + + +
+
diff --git a/distribution/SharpDX.Direct3D10.dll b/distribution/SharpDX.Direct3D10.dll new file mode 100644 index 0000000000000000000000000000000000000000..abe3b6a8dafa87102752c1f8fd626291b2ff8ece GIT binary patch literal 179200 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 literal 0 HcmV?d00001 diff --git a/distribution/SharpDX.Direct3D10.xml b/distribution/SharpDX.Direct3D10.xml new file mode 100644 index 00000000..ffe32f9d --- /dev/null +++ b/distribution/SharpDX.Direct3D10.xml @@ -0,0 +1,23120 @@ + + + + SharpDX.Direct3D10 + + + + + The assembly provides managed Direct3D10 API. + + bb205066 + Direct3D10 + Direct3D10 + + + +

This interface encapsulates methods for retrieving data from the GPU asynchronously.

+
+ +

There are three types of asynchronous interfaces, all of which inherit this interface:

  • Interface - Queries information from the GPU.
  • Interface - Determines whether a piece of geometry should be processed or not depending on the results of a previous draw call.
  • Interface - Measures GPU performance.
+
+ + bb173500 + ID3D10Asynchronous + ID3D10Asynchronous +
+ + +

A device-child interface accesses data used by a device.

+
+ +

There are several types of device child interfaces, all of which inherit this interface. They include shaders, state objects, and input layouts.

+
+ + bb173529 + ID3D10DeviceChild + ID3D10DeviceChild +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the device that created this interface.

+
+

Address of a reference to a device (see Interface).

+ +

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

+
+ + bb173530 + void ID3D10DeviceChild::GetDevice([Out] ID3D10Device** ppDevice) + ID3D10DeviceChild::GetDevice +
+ + +

Get application-defined data from a device child.

+
+

Guid associated with the data.

+

Size of the data.

+

Pointer to the data stored with the device child. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

The data stored in the device child is set with .

+
+ + bb173531 + HRESULT ID3D10DeviceChild::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) + ID3D10DeviceChild::GetPrivateData +
+ + +

Set application-defined data to a device child and associate that data with an application-defined guid.

+
+

Guid associated with the data.

+

Size of the data.

+

Pointer to the data to be stored with this device child. If pData is null, DataSize must also be 0, and any data previously associated with the specified guid will be destroyed.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

The data stored in the device child with this method can be retrieved with .

+
+ + bb173532 + HRESULT ID3D10DeviceChild::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) + ID3D10DeviceChild::SetPrivateData +
+ + +

Associate an -derived interface with this device child and associate that interface with an application-defined guid.

+
+ No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

When this method is called ::addref() will be called on the -derived interface, and when the device child is detroyed ::release() will be called on the -derived interface.

+
+ + bb173533 + HRESULT ID3D10DeviceChild::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) + ID3D10DeviceChild::SetPrivateDataInterface +
+ + + Gets or sets the debug-name for this object. + + + The debug name. + + + + +

Get a reference to the device that created this interface.

+
+ +

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

+
+ + bb173530 + GetDevice + GetDevice + void ID3D10DeviceChild::GetDevice([Out] ID3D10Device** ppDevice) +
+ + + Get data from the GPU asynchronously. + + + GetData retrieves the data collected between calls to and . Certain queries only require a call to ID3D10Asynchronous::End in which case the data returned by GetData is accurate up to the last call to ID3D10Asynchronous::End (See ). If DataSize is 0, GetData is only used to check status where a return value of S_OK indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available. It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT. If the asynchronous interface that calls this function is , then the following table applies. Query TypeOutput Data TypeSupports Begin Method EVENTBOOLNO OCCLUSIONUINT64YES TIMESTAMPUINT64NO TIMESTAMP_DISJOINTQUERYDATA_TIMESTAMP_DISJOINTYES PIPELINE_STATISTICSQUERYDATA_PIPELINE_STATISTICSYES OCCLUSION_PREDICATEBOOLYES SO_STATISTICSQUERYDATA_SO_STATISTICSYES SO_OVERFLOW_PREDICATEBOOLYES ? If the asynchronous interface that calls this API is , then the following applies. Counter TypeOutput Data TypeUnits GPU_IDLEFLOAT32fraction of time VERTEX_PROCESSINGFLOAT32fraction of time GEOMETRY_PROCESSINGFLOAT32fraction of time PIXEL_PROCESSINGFLOAT32fraction of time OTHER_GPU_PROCESSINGFLOAT32fraction of time HOST_ADAPTER_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum LOCAL_VIDMEM_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEX_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum TRISETUP_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum FILLRATE_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEXSHADER_MEMORY_LIMITEDFLOAT32fraction of time VERTEXSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_MEMORY_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time PIXELSHADER_MEMORY_LIMITEDFLOAT32fraction of time PIXELSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time POST_TRANSFORM_CACHE_HIT_RATEFLOAT32fraction TEXTURE_CACHE_HIT_RATEFLOAT32fraction ? The value returned by a GPU_IDLE, VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, or OTHER_GPU_PROCESSING counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation: ? Equation to interpret the number of parallel counters ? The number of parallel counters that a video card has is available from NumDetectableParallelUnits in , and it can be retrieved by calling . + + If this function succeeds, returns a containing the asynchronous data sent from the GPU. + HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] int DataSize,[In] int GetDataFlags) + + + + Get data from the GPU asynchronously. + + + GetData retrieves the data collected between calls to and . Certain queries only require a call to ID3D10Asynchronous::End in which case the data returned by GetData is accurate up to the last call to ID3D10Asynchronous::End (See ). If DataSize is 0, GetData is only used to check status where a return value of S_OK indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available. It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT. If the asynchronous interface that calls this function is , then the following table applies. Query TypeOutput Data TypeSupports Begin Method EVENTBOOLNO OCCLUSIONUINT64YES TIMESTAMPUINT64NO TIMESTAMP_DISJOINTQUERYDATA_TIMESTAMP_DISJOINTYES PIPELINE_STATISTICSQUERYDATA_PIPELINE_STATISTICSYES OCCLUSION_PREDICATEBOOLYES SO_STATISTICSQUERYDATA_SO_STATISTICSYES SO_OVERFLOW_PREDICATEBOOLYES ? If the asynchronous interface that calls this API is , then the following applies. Counter TypeOutput Data TypeUnits GPU_IDLEFLOAT32fraction of time VERTEX_PROCESSINGFLOAT32fraction of time GEOMETRY_PROCESSINGFLOAT32fraction of time PIXEL_PROCESSINGFLOAT32fraction of time OTHER_GPU_PROCESSINGFLOAT32fraction of time HOST_ADAPTER_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum LOCAL_VIDMEM_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEX_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum TRISETUP_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum FILLRATE_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEXSHADER_MEMORY_LIMITEDFLOAT32fraction of time VERTEXSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_MEMORY_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time PIXELSHADER_MEMORY_LIMITEDFLOAT32fraction of time PIXELSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time POST_TRANSFORM_CACHE_HIT_RATEFLOAT32fraction TEXTURE_CACHE_HIT_RATEFLOAT32fraction ? The value returned by a GPU_IDLE, VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, or OTHER_GPU_PROCESSING counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation: ? Equation to interpret the number of parallel counters ? The number of parallel counters that a video card has is available from NumDetectableParallelUnits in , and it can be retrieved by calling . + + Optional flags. Can be 0 or any combination of the flags enumerated by . + If this function succeeds, returns a containing the asynchronous data sent from the GPU. + HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] int DataSize,[In] int GetDataFlags) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Starts the collection of GPU data.

+
+ +

Calling Begin starts the asynchronous collection of GPU data. Calling causes data collection to stop. See Interface for additional information.

+
+ + bb173501 + void ID3D10Asynchronous::Begin() + ID3D10Asynchronous::Begin +
+ + +

Ends the collection of GPU data.

+
+ +

Calling starts the asynchronous collection of GPU data. Calling causes data collection to stop. See Interface for additional information.

+
+ + bb173502 + void ID3D10Asynchronous::End() + ID3D10Asynchronous::End +
+ + +

Get data from the GPU asynchronously.

+
+

Address of memory that will receive the data. If null, GetData will be used only to check status. The type of data output depends on the type of asynchronous interface. See Remarks.

+

Size of the data to retrieve or 0. This value can be obtained with . Must be 0 when pData is null.

+

Optional flags. Can be 0 or any combination of the flags enumerated by .

+

If this function succeeds, it returns . Otherwise, possible return values are the following:

  • S_FALSE
+ +

GetData retrieves the data collected between calls to and . Certain queries only require a call to in which case the data returned by GetData is accurate up to the last call to (See Interface).

If DataSize is 0, GetData is only used to check status where a return value of indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available.

It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT.

If the asynchronous interface that calls this function is Interface, then the following table applies.

Query TypeOutput Data TypeSupports Begin Method
NO
UINT64YES
UINT64NO
YES
YES
YES
YES
YES

?

If the asynchronous interface that calls this API is Interface, then the following applies.

Counter TypeOutput Data TypeUnits
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction
FLOAT32fraction

?

The value returned by a , , , , or counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation:

The number of parallel counters that a video card has is available from NumDetectableParallelUnits in , and it can be retrieved by calling .

+
+ + bb173503 + HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] unsigned int GetDataFlags) + ID3D10Asynchronous::GetData +
+ + +

Get the size of the data (in bytes) that is output when calling .

+
+

Size of the data (in bytes) that is output when calling GetData.

+ + bb173504 + unsigned int ID3D10Asynchronous::GetDataSize() + ID3D10Asynchronous::GetDataSize +
+ + + Gets a value indicating whether or not data is available for consumption. + + + + +

This blend-state interface accesses blending state for a Direct3D 10.0 device for the output-merger stage.

+
+ +

Blending combines two pixel values. You have control over how the pixels are blended by using a predefined set of blending operations, as well as preblending operations. The Blending Block Diagram shows conceptually how blending works.

To create a blend-state interface, call . To initialize the blend state, call .

+
+ + bb173505 + ID3D10BlendState + ID3D10BlendState +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the blend state.

+
+

A reference to the blend state (see ).

+ + bb173506 + void ID3D10BlendState::GetDesc([Out] D3D10_BLEND_DESC* pDesc) + ID3D10BlendState::GetDesc +
+ + +

Get the blend state.

+
+ + bb173506 + GetDesc + GetDesc + void ID3D10BlendState::GetDesc([Out] D3D10_BLEND_DESC* pDesc) +
+ + +

This blend-state interface accesses blending state for a Direct3D 10.1 device for the output-merger stage.

+
+ +

Blending combines two pixel values. You have control over how the pixels are blended by using a predefined set of blending operations, as well as preblending operations. The Blending Block Diagram shows conceptually how blending works.

To create a blend-state interface, call . To initialize the blend state, call .

This method requires Windows Vista Service Pack 1.

+
+ + bb694544 + ID3D10BlendState1 + ID3D10BlendState1 +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + No documentation. + + No documentation. + + void ID3D10BlendState1::GetDesc1([Out] D3D10_BLEND_DESC1* pDesc) + ID3D10BlendState1::GetDesc1 + + + + No documentation. + + + GetDesc1 + GetDesc1 + void ID3D10BlendState1::GetDesc1([Out] D3D10_BLEND_DESC1* pDesc) + + + +

A buffer interface accesses a buffer resource, which is unstructured memory. Buffers typically store vertex or index data.

+
+ +

Three types of buffers can be created; vertex, index, and shader-constant buffers. To create a buffer resource, call .

A buffer must be bound to the pipeline before it can be accessed. Buffers can be bound to the input-assembler stage by calls to and , and to the stream-output stage by a call to .

Buffers can be bound to multiple pipeline stages simultaneously for reading. A buffer can also be bound to a single pipeline stage for writing; however, the same buffer cannot be bound for reading and writing simultaneously. For more information, see binding resources.

+
+ + bb173510 + ID3D10Buffer + ID3D10Buffer +
+ + +

A resource interface provides common actions on all resources.

+
+ +

A resource interface cannot be created directly; instead, buffers and textures are created that inherit from a resource interface (see Creating Buffer Resources or Creating Texture Resources).

+
+ + bb173829 + ID3D10Resource + ID3D10Resource +
+ + Constant MaximumMipLevels. + D3D10_REQ_MIP_LEVELS + + + Constant ResourceSizeInMegabytes. + D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES + + + Constant MaximumTexture1DArraySize. + D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION + + + Constant MaximumTexture2DArraySize. + D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION + + + Constant MaximumTexture1DSize. + D3D10_REQ_TEXTURE1D_U_DIMENSION + + + Constant MaximumTexture2DSize. + D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION + + + Constant MaximumTexture3DSize. + D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION + + + Constant MaximumTextureCubeSize. + D3D10_REQ_TEXTURECUBE_DIMENSION + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the type of the resource.

+
+

Pointer to the resource type (see ).

+ + bb173831 + void ID3D10Resource::GetType([Out] D3D10_RESOURCE_DIMENSION* rType) + ID3D10Resource::GetType +
+ + +

Set the eviction priority of a resource.

+
+

Eviction priority for the resource, which is one of the following values:

+ +

Resource priorities determine which resource to evict from video memory when the system has run out of video memory. The resource will not be lost; it will be removed from video memory and placed into system memory, or possibly placed onto the hard drive. The resource will be loaded back into video memory when it is required.

A resource that is set to the maximum priority, , is only evicted if there is no other way of resolving the incoming memory request. The Windows Display Driver Model (WDDM) tries to split an incoming memory request to its minimum size and evict lower-priority resources before evicting a resource with maximum priority.

Changing the priorities of resources should be done carefully. The wrong eviction priorities could be a detriment to performance rather than an improvement. See QueryResourceResidency for additional information.

This method is a wrapper for SetEvictionPriority and is provided in the Interface interface for convenience.

+
+ + bb173832 + void ID3D10Resource::SetEvictionPriority([In] unsigned int EvictionPriority) + ID3D10Resource::SetEvictionPriority +
+ + +

Get the eviction priority of a resource.

+
+

One of the following values, which specifies the eviction priority for the resource:

+ +

This method is a wrapper for GetEvictionPriority and is provided in the Interface interface for convenience.

+
+ + bb173830 + unsigned int ID3D10Resource::GetEvictionPriority() + ID3D10Resource::GetEvictionPriority +
+ + + Gets a swap chain back buffer. + + The type of the buffer. + The swap chain to get the buffer from. + The index of the desired buffer. + The buffer interface, or null on failure. + + + + Loads a texture from an image file. + + The device used to load the texture. + Path to the file on disk. + The loaded texture object. + + + + Loads a texture from an image file. + + The device used to load the texture. + Path to the file on disk. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Array of memory containing the image data to load. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Array of memory containing the image data to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from a stream of data. + + The device used to load the texture. + A stream containing the image data to load. + Size of the image to load. + The loaded texture object. + + + + Loads a texture from a stream of data. + + The device used to load the texture. + A stream containing the image data to load. + Size of the image to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Saves a texture to file. + + The texture to save. + The format the texture will be saved as. + Name of the destination output file where the texture will be saved. + A object describing the result of the operation. + + + + Saves a texture to a stream. + + The texture to save. + The format the texture will be saved as. + Destination memory stream where the image will be saved. + A object describing the result of the operation. + + + + Load a texture from a texture. + + Pointer to the source texture. See . + Pointer to the destination texture. See . + Pointer to texture loading parameters. See . + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT D3DX10LoadTextureFromTexture([None] ID3D10Resource* pSrcTexture,[None] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[None] ID3D10Resource* pDstTexture) + + + + Generates mipmap chain using a particular texture filter. + + The mipmap level whose data is used to generate the rest of the mipmap chain. + Flags controlling how each miplevel is filtered (or D3DX10_DEFAULT for D3DX10_FILTER_BOX). See . + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT D3DX10FilterTexture([None] ID3D10Resource* pTexture,[None] int SrcLevel,[None] int MipFilter) + + + + Returns a DXGI Surface for this resource. + + The buffer interface, or null on failure. + + + + Calculates a subresource index. + + The index of the desired mip slice. + The index of the desired array slice. + The total number of mip levels. + The subresource index (equivalent to mipSlice + (arraySlice * mipLevels)). + + + + Calculate the MipSize + + + + + + + +

Get the type of the resource.

+
+ + bb173831 + GetType + GetType + void ID3D10Resource::GetType([Out] D3D10_RESOURCE_DIMENSION* rType) +
+ + +

Get or sets the eviction priority of a resource.

+
+ +

This method is a wrapper for GetEvictionPriority and is provided in the Interface interface for convenience.

+
+ + bb173830 + GetEvictionPriority / SetEvictionPriority + GetEvictionPriority + unsigned int ID3D10Resource::GetEvictionPriority() +
+ + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The description of the buffer. + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description of the buffer. + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The size, in bytes, of the buffer. + The usage pattern for the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. + The usage pattern for the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + + + + Get a reference to the data contained in the resource and deny GPU access to the resource. + + + For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, D3D10_USAGE_DYNAMIC. To both read and write those contents, the resource must be created with the staging usage flag, D3D10_USAGE_STAGING. (For more information about these flags, see .) ID3D10Buffer::Map will retrieve a reference to the resource data. For a discussion on how to access resources efficiently, see {{Copying and Accessing Resource Data (Direct3D 10)}}. Call to signify that the application has finished accessing the resource. ID3D10Buffer::Map has a few other restrictions. For example: The same buffer cannot be mapped multiple times; in other words, do not call ID3D10Buffer::Map on a buffer that is already mapped. Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, ) can be executed. Differences between Direct3D 9 and Direct3D 10: ID3D10Buffer::Map in Direct3D 10 is analogous to resource {{Lock}} in Direct3D 9. ? + + Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see . + If this function succeeds returns a with the size this buffer. + HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] int MapFlags,[Out] void** ppData) + + + + Get a reference to the data contained in the resource and deny GPU access to the resource. + + + For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, D3D10_USAGE_DYNAMIC. To both read and write those contents, the resource must be created with the staging usage flag, D3D10_USAGE_STAGING. (For more information about these flags, see .) ID3D10Buffer::Map will retrieve a reference to the resource data. For a discussion on how to access resources efficiently, see {{Copying and Accessing Resource Data (Direct3D 10)}}. Call to signify that the application has finished accessing the resource. ID3D10Buffer::Map has a few other restrictions. For example: The same buffer cannot be mapped multiple times; in other words, do not call ID3D10Buffer::Map on a buffer that is already mapped. Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, ) can be executed. Differences between Direct3D 9 and Direct3D 10: ID3D10Buffer::Map in Direct3D 10 is analogous to resource {{Lock}} in Direct3D 9. ? + + Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see . + Flag that specifies what the CPU should do when the GPU is busy (see ). This flag is optional. + If this function succeeds returns a with the size this buffer. + HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] int MapFlags,[Out] void** ppData) + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. + The usage pattern for the buffer. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + An initialized buffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. + The usage pattern for the buffer. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + An initialized buffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description. + + An initialized buffer + + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description. + + An initialized buffer + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the data contained in the resource and deny GPU access to the resource.

+
+

Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see .

+

Flag that specifies what the CPU should do when the GPU is busy (see ). This flag is optional.

+

Pointer to the buffer resource data.

+

If this function succeeds, it returns . The following list contains some of the reasons that Map can fail:

  • If MapFlags specifies and the GPU is not yet finished with the resource, returns .
  • returns if MapType includes any flags that permit reading and the hardware device (that is, the video card) has been removed.

For more information about the preceding return values, see DXGI_ERROR.

+ +

For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, . To both read and write those contents, the resource must be created with the staging usage flag, . (For more information about these flags, see .) will retrieve a reference to the resource data. For a discussion on how to access resources efficiently, see Copying and Accessing Resource Data (Direct3D 10).

Call to signify that the application has finished accessing the resource.

has a few other restrictions. For example:

  • The same buffer cannot be mapped multiple times; in other words, do not call on a buffer that is already mapped.
  • Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, ) can be executed.

Differences between Direct3D 9 and Direct3D 10:

in Direct3D 10 is analogous to resource Lock in Direct3D 9.

?

+
+ + bb173512 + HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] void** ppData) + ID3D10Buffer::Map +
+ + +

Invalidate the reference to the resource retrieved by and reenable GPU access to the resource.

+
+ +

Differences between Direct3D 9 and Direct3D 10:

Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.

?

+
+ + bb173513 + void ID3D10Buffer::Unmap() + ID3D10Buffer::Unmap +
+ + +

Get the properties of a buffer resource.

+
+

Pointer to a resource description (see ) filled in by the method. This reference cannot be null.

+ + bb173511 + void ID3D10Buffer::GetDesc([Out] D3D10_BUFFER_DESC* pDesc) + ID3D10Buffer::GetDesc +
+ + +

Get the properties of a buffer resource.

+
+ + bb173511 + GetDesc + GetDesc + void ID3D10Buffer::GetDesc([Out] D3D10_BUFFER_DESC* pDesc) +
+ + +

Describes a buffer resource.

+
+ +

This structure is used by to create buffer resources.

In addition to this structure, there is also a derived structure in D3D10.h (CD3D10_BUFFER_DESC) which behaves like an inherited class to help create a buffer description.

+
+ + bb204896 + D3D10_BUFFER_DESC + D3D10_BUFFER_DESC +
+ + + Initializes a new instance of the struct. + + The size in bytes. + The usage. + The bind flags. + The CPU access flags. + The option flags. + + + + No documentation. + + + bb204896 + unsigned int ByteWidth + unsigned int ByteWidth + + + + No documentation. + + + bb204896 + D3D10_USAGE Usage + D3D10_USAGE Usage + + + + No documentation. + + + bb204896 + D3D10_BIND_FLAG BindFlags + D3D10_BIND_FLAG BindFlags + + + + No documentation. + + + bb204896 + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + + + + No documentation. + + + bb204896 + D3D10_RESOURCE_MISC_FLAG MiscFlags + D3D10_RESOURCE_MISC_FLAG MiscFlags + + + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Binds a single vertex buffer to the input assembler. + + Index of the slot to which to bind the vertex buffer. + A binding for the input vertex buffer. + + + + Binds an array of vertex buffers to the input assembler. + + Index of the first input slot to use for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. There are 16 input slots. + An array of bindings for input vertex buffers. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind an input-layout object to the input-assembler stage.

+
+ No documentation. + +

Input-layout objects describe how vertex buffer data is streamed into the IA pipeline stage. To create an input-layout object, call .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173589 + void ID3D10Device::IASetInputLayout([In, Optional] ID3D10InputLayout* pInputLayout) + ID3D10Device::IASetInputLayout +
+ + +

Bind an array of vertex buffers to the input-assembler stage.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173591 + void ID3D10Device::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppVertexBuffers,[In, Buffer] const unsigned int* pStrides,[In, Buffer] const unsigned int* pOffsets) + ID3D10Device::IASetVertexBuffers +
+ + +

Bind an array of vertex buffers to the input-assembler stage.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173591 + void ID3D10Device::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppVertexBuffers,[In, Buffer] const unsigned int* pStrides,[In, Buffer] const unsigned int* pOffsets) + ID3D10Device::IASetVertexBuffers +
+ + +

Bind an index buffer to the input-assembler stage.

+
+ No documentation. + No documentation. + No documentation. + +

For information about creating index buffers, see Create an Index Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173588 + void ID3D10Device::IASetIndexBuffer([In, Optional] ID3D10Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset) + ID3D10Device::IASetIndexBuffer +
+ + +

Bind information about the primitive type, and data order that describes input data for the input assembler stage.

+
+ No documentation. + + bb173590 + void ID3D10Device::IASetPrimitiveTopology([In] D3D_PRIMITIVE_TOPOLOGY Topology) + ID3D10Device::IASetPrimitiveTopology +
+ + +

Get a reference to the input-layout object that is bound to the input-assembler stage.

+
+ No documentation. + +

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173585 + void ID3D10Device::IAGetInputLayout([Out] ID3D10InputLayout** ppInputLayout) + ID3D10Device::IAGetInputLayout +
+ + +

Get the vertex buffers bound to the input-assembler stage.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173587 + void ID3D10Device::IAGetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppVertexBuffers,[Out, Buffer, Optional] unsigned int* pStrides,[Out, Buffer, Optional] unsigned int* pOffsets) + ID3D10Device::IAGetVertexBuffers +
+ + +

Get a reference to the index buffer that is bound to the input-assembler stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173584 + void ID3D10Device::IAGetIndexBuffer([Out, Optional] ID3D10Buffer** pIndexBuffer,[Out, Optional] DXGI_FORMAT* Format,[Out, Optional] unsigned int* Offset) + ID3D10Device::IAGetIndexBuffer +
+ + +

Get information about the primitive type, and data order that describes input data for the input assembler stage.

+
+ No documentation. + + bb173586 + void ID3D10Device::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) + ID3D10Device::IAGetPrimitiveTopology +
+ + +

Get or sets a reference to the input-layout object that is bound to the input-assembler stage.

+
+ +

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173585 + IAGetInputLayout / IASetInputLayout + IAGetInputLayout + void ID3D10Device::IAGetInputLayout([Out] ID3D10InputLayout** ppInputLayout) +
+ + +

Get or sets information about the primitive type, and data order that describes input data for the input assembler stage.

+
+ + bb173586 + IAGetPrimitiveTopology / IASetPrimitiveTopology + IAGetPrimitiveTopology + void ID3D10Device::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) +
+ + +

This interface encapsulates methods for measuring GPU performance.

+
+ +

A counter can be created with .

This is a derived class of Interface.

Counter data is gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of counter. The call to End causes the data returned by GetData to be accurate up until the last call to End.

Counters are best suited for profiling.

For a list of the types of performance counters, see .

+
+ + bb173514 + ID3D10Counter + ID3D10Counter +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The counter description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a counter description.

+
+

Pointer to a counter description (see ).

+ + bb173515 + void ID3D10Counter::GetDesc([Out] D3D10_COUNTER_DESC* pDesc) + ID3D10Counter::GetDesc +
+ + +

Get a counter description.

+
+ + bb173515 + GetDesc + GetDesc + void ID3D10Counter::GetDesc([Out] D3D10_COUNTER_DESC* pDesc) +
+ + + Counter metadata that contains the type, name, units of measure, and a description of an existing counter. + + + + + Gets the data type of a counter (see ). + + The type. + + + + Gets the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters. + + The hardware counter count. + + + + Gets a brief name for the counter. + + The name. + + + + Gets the units a counter measures. + + The units. + + + + Gets a description of the counter. + + The description. + + + +

A debug interface controls debug settings, validates pipeline state and can only be used if the debug layer is turned on.

+
+ +

This interface is obtained by querying it from the Interface using IUnknown::QueryInterface.

+
+ + bb173516 + ID3D10Debug + ID3D10Debug +
+ + + Initializes a new instance of the class. + + The device. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a bitfield of flags that will turn debug features on and off.

+
+

Feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See remarks for a list of flags.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

Note??If you call this API in a Session 0 process, it returns .

Setting a feature-mask flag will cause a rendering-operation method (listed below) to do some extra task when called. The possible feature flags are:

Application will wait for the GPU to finish processing the rendering operation before continuing.
Runtime will additionally call .
Runtime will call Present. Presentation of render buffers will occur according to the settings established by prior calls to and .

?

These feature-mask flags apply to the following rendering-operation methods:

+
+ + bb173520 + HRESULT ID3D10Debug::SetFeatureMask([In] unsigned int Mask) + ID3D10Debug::SetFeatureMask +
+ + +

Get a bitfield of flags that indicates which debug features are on or off.

+
+

Mask of feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See for a list of possible feature-mask flags.

+ + bb173517 + unsigned int ID3D10Debug::GetFeatureMask() + ID3D10Debug::GetFeatureMask +
+ + +

Set the number of milliseconds to sleep after Present is called.

+
+ No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

Note??If you call this API in a Session 0 process, it returns .

The application will only sleep if is a set in the feature mask. If that flag is not set the number of milliseconds is set but ignored and the application does not sleep. 10ms is used as a default value if this method is never called.

+
+ + bb173521 + HRESULT ID3D10Debug::SetPresentPerRenderOpDelay([In] unsigned int Milliseconds) + ID3D10Debug::SetPresentPerRenderOpDelay +
+ + +

Get the number of milliseconds to sleep after Present is called.

+
+

Number of milliseconds to sleep after Present is called.

+ +

Value is set with .

+
+ + bb173518 + unsigned int ID3D10Debug::GetPresentPerRenderOpDelay() + ID3D10Debug::GetPresentPerRenderOpDelay +
+ + +

Set a swap chain that the runtime will use for automatically calling Present.

+
+ No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

Note??If you call this API in a Session 0 process, it returns .

The swap chain set by this method will only be used if is set in the feature mask.

+
+ + bb173522 + HRESULT ID3D10Debug::SetSwapChain([In, Optional] IDXGISwapChain* pSwapChain) + ID3D10Debug::SetSwapChain +
+ + +

Get the swap chain that the runtime will use for automatically calling Present.

+
+ No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

The swap chain retrieved by this method will only be used if is set in the feature mask.

+
+ + bb173519 + HRESULT ID3D10Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) + ID3D10Debug::GetSwapChain +
+ + +

Check the validity of pipeline state.

+
+

This method returns one of the following Direct3D 10 Return Codes.

+ +

When the debug layer is turned on all draw functions will do this operation.

+
+ + bb173523 + HRESULT ID3D10Debug::Validate() + ID3D10Debug::Validate +
+ + + Gets or sets the feature flags that indicates which debug features are on or off. + + The feature flags. + + + +

Get or sets the number of milliseconds to sleep after Present is called.

+
+ +

Value is set with .

+
+ + bb173518 + GetPresentPerRenderOpDelay / SetPresentPerRenderOpDelay + GetPresentPerRenderOpDelay + unsigned int ID3D10Debug::GetPresentPerRenderOpDelay() +
+ + +

Get or sets the swap chain that the runtime will use for automatically calling Present.

+
+ +

The swap chain retrieved by this method will only be used if is set in the feature mask.

+
+ + bb173519 + GetSwapChain / SetSwapChain + GetSwapChain + HRESULT ID3D10Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) +
+ + +

A depth-stencil-state interface accesses depth-stencil state which sets up the depth-stencil test for the output-merger stage.

+
+ +

Create a depth-stencil state object by calling .

To initialize depth-stencil state, bind the depth-stencil-state object to the pipeline by calling .

+
+ + bb173524 + ID3D10DepthStencilState + ID3D10DepthStencilState +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the depth-stencil state.

+
+

A reference to the depth-stencil state (see ).

+ + bb173525 + void ID3D10DepthStencilState::GetDesc([Out] D3D10_DEPTH_STENCIL_DESC* pDesc) + ID3D10DepthStencilState::GetDesc +
+ + +

Get the depth-stencil state.

+
+ + bb173525 + GetDesc + GetDesc + void ID3D10DepthStencilState::GetDesc([Out] D3D10_DEPTH_STENCIL_DESC* pDesc) +
+ + +

A depth-stencil-view interface accesses a texture resource during depth-stencil testing.

+
+ +

To create a depth-stencil view, call .

To bind a depth-stencil view to the pipeline, call .

+
+ + bb173526 + ID3D10DepthStencilView + ID3D10DepthStencilView +
+ + +

A view interface specifies the parts of a resource the pipeline can access during rendering (see view).

+
+ +

A view interface is the base interface for all views. There are three types of views; a depth-stencil view, a render-target view, and a shader-resource view.

  • To create a render-target view, call .
  • To create a depth-stencil view, call .
  • To create a shader-resource view, call .

All resources must be bound to the pipeline before they can be accessed.

  • To bind a render-target view or a depth-stencil view, call .
  • To bind a shader-resource view, call .

A view can also be used to access a typeless resource.

+
+ + bb173876 + ID3D10View + ID3D10View +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the resource that is accessed through this view.

+
+

Address of a reference to the resource that is accessed through this view. (See .)

+ +

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

+
+ + bb173877 + void ID3D10View::GetResource([Out] ID3D10Resource** ppResource) + ID3D10View::GetResource +
+ + +

Get the resource that is accessed through this view.

+
+ +

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

+
+ + bb173877 + GetResource + GetResource + void ID3D10View::GetResource([Out] ID3D10Resource** ppResource) +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. + ID3D10Device::CreateDepthStencilView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. + A structure describing the to be created. + ID3D10Device::CreateDepthStencilView + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the depth-stencil view.

+
+ No documentation. + + bb173527 + void ID3D10DepthStencilView::GetDesc([Out] D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc) + ID3D10DepthStencilView::GetDesc +
+ + +

Get the depth-stencil view.

+
+ + bb173527 + GetDesc + GetDesc + void ID3D10DepthStencilView::GetDesc([Out] D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc) +
+ + + Common Shader class. Provides a common set of methods for a Shader Stage. + TODO: check if usage of abstract is not introducing an unacceptable overhead... + + Type of the shader + + + + Maximum number of bindable constant buffers to a pipeline stage. + + + + + Maximum number of bindable resources to a pipeline stage. + + + + + Maximum number of bindable samplers to a pipeline stage. + + + + + Initializes a new instance of the class. + + The pointer. + + + + Gets the constant buffers used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving constant buffers. + Number of buffers to retrieve. + An array of constant buffers. + + + + Gets the sampler states used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving samplers. + Number of samplers to retrieve. + An array of sampler states. + + + + Gets the shader resources used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving shader resources. + Number of resources to retrieve. + An array of shader resources. + + + + Sets a single constant buffer to be used by the shader stage. + + Index into the device's zero-based array to which to set the constant buffer. + constant buffer to set + + + + Sets a single sampler to be used by the shader stage. + + Index into the device's zero-based array to which to set the sampler. + sampler state to set + + + + Sets a single shader resource to be used by the shader stage. + + Index into the device's zero-based array to which to set the resource. + Resource view to attach + + + + Get the shader resources. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to be returned by the device. + void PSGetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) + + + + Get an array of sampler states from the shader pipeline stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into a zero-based array to begin getting samplers from (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Array of sampler-state interface pointers (see ) to be returned by the device. + void PSGetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) + + + + Get the constant buffers used by the shader pipeline stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to retrieve (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffer interface pointers (see ) to be returned by the method. + void PSGetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + + + + Set an array of sampler states to the shader pipeline stage. + + + Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D10_FILTER_MIN_MAG_MIP_LINEARAddressUD3D10_TEXTURE_ADDRESS_CLAMPAddressVD3D10_TEXTURE_ADDRESS_CLAMPAddressWD3D10_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D10_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Pointer to an array of sampler-state interfaces (see ). See Remarks. + void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + + + + Set an array of sampler states to the shader pipeline stage. + + + Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D10_FILTER_MIN_MAG_MIP_LINEARAddressUD3D10_TEXTURE_ADDRESS_CLAMPAddressVD3D10_TEXTURE_ADDRESS_CLAMPAddressWD3D10_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D10_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Pointer to an array of sampler-state interfaces (see ). See Remarks. + void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + + + + Set the constant buffers used by the shader pipeline stage. + + + The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to set (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffers (see ) being given to the device. + void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + + + + Set the constant buffers used by the shader pipeline stage. + + + The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to set (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffers (see ) being given to the device. + void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + + + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Constructor for a D3D10 Device. See for more information. + + + + + + Constructor for a D3D10 Device. See for more information. + + + + + + Constructor for a D3D10 Device. See for more information. + + + + + + + Constructor for a D3D10 Device. See for more information. + + + + + + + Initializes a new instance of the class along with a new used for rendering. + + The type of device to create. + A list of runtime layers to enable. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + Initializes a new instance of the class along with a new used for rendering. + + The video adapter on which the device should be created. + A list of runtime layers to enable. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type. + + + + + Get the type, name, units of measure, and a description of an existing counter. + + The counter description. + Description of the counter + + + + Get the rendering predicate state. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + a boolean to fill with the predicate comparison value. FALSE upon device creation. + a reference to a predicate (see ). + void ID3D10Device::GetPredication([Out, Optional] ID3D10Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue) + + + + Give a device access to a shared resource created on a different Direct3d device. + + The type of the resource we are gaining access to. + A resource handle. See remarks. + + This method returns a reference to the resource we are gaining access to. + + + To share a resource between two Direct3D 10 devices the resource must have been created with the flag, if it was created using the ID3D10Device interface. If it was created using the IDXGIDevice interface, then the resource is always shared. The REFIID, or GUID, of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof(ID3D10Buffer) will get the GUID of the interface to a buffer resource. When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling {{GetSharedHandle}}. + IDXGIResource* pOtherResource(NULL); + hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource ); + HANDLE sharedHandle; + pOtherResource->GetSharedHandle(&sharedHandle); + The only resources that can be shared are 2D non-mipmapped textures. To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using the pSharedHandle argument of {{CreateTexture}}. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument. The following code illustrates the method calls involved. + sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9 + pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); + ... + pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10)); + tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10)); + tempResource10->Release(); + // now use pTex2D_10 with pDevice10 + Textures being shared from D3D9 to D3D10 have the following restrictions. Textures must be 2D Only 1 mip level is allowed Texture must have default usage Texture must be write only MSAA textures are not allowed Bind flags must have SHADER_RESOURCE and RENDER_TARGET set Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed If a shared texture is updated on one device must be called on that device. + + HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] GUID* ReturnedInterface,[Out, Optional] void** ppResource) + + + + Copy the entire contents of the source resource to the destination resource using the GPU. + + + This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources: Must be different resources. Must be the same {{type}}. Must have identical dimensions (including width, height, depth, and size as appropriate). Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions. Must have compatible {{formats}}, which means the formats must be identical or at least from the same type group. For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently {{mapped}}. {{Immutable}}, and {{depth-stencil}} resources cannot be used as a destination. Resources created with {{multisampling capability}} cannot be used as either a source or destination. The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. See {{performance considerations}} for more details. An application that only needs to copy a portion of the data in a resource should use instead. Differences between Direct3D 10 and Direct3D 10.1: Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination. Direct3D 10.1 enables multisampled resources to be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to ID3D10Device::CopyResource fails. It is possible to copy between prestructured+typed resources and block-compressed textures. See {{Format Conversion using Direct3D 10.1}}. ? + + A reference to the source resource (see ). + A reference to the destination resource (see ). + void ID3D10Device::CopyResource([In] ID3D10Resource* pDstResource,[In] ID3D10Resource* pSrcResource) + + + + Copy a region from a source resource to a destination resource. + + + The source box must be within the size of the source resource. The destination location is an absolute value (not a relative value). The destination location can be offset from the source location; however, the size of the region to copy (including the destination location) must fit in the destination resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D10CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources must meet the following criteria: Must be different subresources (although they can be from the same resource). Must be the same {{type}}. Must have compatible {{formats}} (the formats must either be identical or be from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture because both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently {{mapped}}. CopySubresourceRegion supports only copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use instead. CopySubresourceRegion is an asynchronous call that the runtime can add to the command-buffer queue. This asynchronous behavior attempts to remove pipeline stalls that may occur when copying data. See {{performance considerations}} for more details. Differences between Direct3D 10 and Direct3D 10.1: Direct3D 10 has the following limitations: You cannot use a depth-stencil resource as a destination. You cannot use an immutable resource as a destination. You cannot use a multisampled texture as either a source or a destination Direct3D 10.1 has added support for the following features: You can use a depth-stencil buffer as a source or a destination. You can use multisampled resources as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to ID3D10Device::CopySubresourceRegion fails. You can copy between uncompressed and compressed resources. During copy, the format conversions that are specified in {{Format Conversion using Direct3D 10.1}} are supported automatically. The uncompressed resource must be at least prestructured, and typed. You must also account for the difference between the virtual and the physical size of the mipmap levels. ? Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. You must also pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters respectively, must have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a region (130,120),(210,240) in a destination texture. + D3D10_BOX sourceRegion; + sourceRegion.left = 120; + sourceRegion.right = 200; + sourceRegion.top = 100; + sourceRegion.bottom = 220; + sourceRegion.front = 0; + sourceRegion.back = 1; pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion ); + + Notice that, for a 2D texture, front and back are always set to 0 and 1 respectively. + + A reference to the source resource (see ). + index of the source. + A 3D box (see ) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. + A reference to the destination resource (see ). + index of the destination. + The x coordinate of the upper left corner of the destination region. + The y coordinate of the upper left corner of the destination region. + The z coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. + void ID3D10Device::CopySubresourceRegion([In] ID3D10Resource* pDstResource,[In] int DstSubresource,[In] int DstX,[In] int DstY,[In] int DstZ,[In] ID3D10Resource* pSrcResource,[In] int SrcSubresource,[In, Optional] const D3D10_BOX* pSrcBox) + + + + Copy a multisampled resource into a non-multisampled resource. This API is most useful when re-using the resulting render target of one render pass as an input to a second render pass. + + + Both the source and destination resources must be the same {{resource type}} and have the same dimensions. The source and destination must have compatible formats. There are three scenarios for this: ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and destination must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT or DXGI_FORMAT_R32_UINT could be specified in the Format parameter). ? + + Source resource. Must be multisampled. + The source subresource of the source resource. + Destination resource. Must be a created with the flag and be single-sampled. See . + A zero-based index, that identifies the destination subresource. See {{D3D10CalcSubresource}} for more details. + that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks. + void ID3D10Device::ResolveSubresource([In] ID3D10Resource* pDstResource,[In] int DstSubresource,[In] ID3D10Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format) + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The destination subresource. + The row pitch. + The depth pitch. + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The destination subresource. + The row pitch. + The depth pitch. + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The destination subresource. + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The destination subresource. + The destination region within the resource. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + Update nested inner interfaces pointer + + + +

Draw indexed, non-instanced primitives.

+
+

Number of indices to draw.

+

Index of the first index to use when accesssing the vertex buffer; begin at StartIndexLocation to index vertices from the vertex buffer.

+

Offset from the start of the vertex buffer to the first vertex.

+ +

A draw API submits work to the rendering pipeline.

If the sum of both indices is negative, the result of the function call is undefined.

+
+ + bb173565 + void ID3D10Device::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation) + ID3D10Device::DrawIndexed +
+ + +

Draw non-indexed, non-instanced primitives.

+
+

Number of vertices to draw.

+

Index of the first vertex, which is usually an offset in a vertex buffer; it could also be used as the first vertex id generated for a shader parameter marked with the SV_TargetId?system-value semantic.

+ +

A draw API submits work to the rendering pipeline.

The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has vertex data marked with the SV_VertexId?system-value semantic.

+
+ + bb173563 + void ID3D10Device::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation) + ID3D10Device::Draw +
+ + +

Draw indexed, instanced primitives.

+
+

Size of the index buffer used in each instance.

+

Number of instances to draw.

+

Index of the first index.

+

Index of the first vertex. The index is signed, which allows a negative index. If the negative index plus the index value from the index buffer are less than 0, the result is undefined.

+

Index of the first instance.

+ +

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data. For an example of instancing, see the Instancing10 Sample.

+
+ + bb173566 + void ID3D10Device::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation) + ID3D10Device::DrawIndexedInstanced +
+ + +

Draw non-indexed, instanced primitives.

+
+

Number of vertices to draw.

+

Number of instances to draw.

+

Index of the first vertex.

+

Index of the first instance.

+ +

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. For an example of instancing, see the Instancing10 Sample.

The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).

+
+ + bb173567 + void ID3D10Device::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation) + ID3D10Device::DrawInstanced +
+ + +

Set a rendering predicate.

+
+

Pointer to a predicate (see ). A null value indicates "no" predication; in this case, the value of PredicateValue is irrelevent but will be preserved for .

+

If TRUE, rendering will be affected by when the predicate's conditions are met. If , rendering will be affected when the conditions are not met.

+ +

The predicate must be in the "issued" or "signaled" state to be used for predication. While the predicate is set for predication, calls to and are invalid.

This method is used to denote that subsequent rendering and resource manipulation commands are not actually performed if the resulting Predicate data of the Predicate is equal to the PredicateValue. However, some Predicates are only hints, so they may not actually prevent operations from being performed.

The primary usefulness of Predication is to allow an application to issue graphics commands without taking the performance hit of spinning, waiting for to return. So, Predication can occur while returns S_FALSE. Another way to think of it: an application can also use Predication as a fallback, if it is possible that returns S_FALSE. If returns , the application can skip calling the graphics commands manually with it's own application logic.

+
+ + bb173615 + void ID3D10Device::SetPredication([In, Optional] ID3D10Predicate* pPredicate,[In] BOOL PredicateValue) + ID3D10Device::SetPredication +
+ + +

Draw geometry of an unknown size that was created by the geometry shader stage. See remarks.

+
+ +

A draw API submits work to the rendering pipeline.

After data has been streamed out to SO stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.

The following diagram shows the DrawAuto process.

Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.

DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, and .

This API does not support indexing or instancing.

If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using .

Example of using DrawAuto can be found in the ParticlesGS Sample and PipesGS Sample.

+
+ + bb173564 + void ID3D10Device::DrawAuto() + ID3D10Device::DrawAuto +
+ + +

Copy a region from a source resource to a destination resource.

+
+

A reference to the destination resource (see ).

+

Subresource index of the destination.

+

The x coordinate of the upper left corner of the destination region.

+

The y coordinate of the upper left corner of the destination region.

+

The z coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero.

+

A reference to the source resource (see ).

+

Subresource index of the source.

+

A 3D box (see ) that defines the source subresource that can be copied. If null, the entire source subresource is copied. The box must fit within the source resource.

An empty box results in a no-op. A box is empty if the top value is greater than or equal to the bottom value, or the left value is greater than or equal to the right value, or the front value is greater than or equal to the back value. When the box is empty, CopySubresourceRegion doesn't perform a copy operation.

+ +

The source box must be within the size of the source resource. The destination location is an absolute value (not a relative value). The destination location can be offset from the source location; however, the size of the region to copy (including the destination location) must fit in the destination resource.

If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels.

D3D10CalcSubresource is a helper function for calculating subresource indexes.

CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources must meet the following criteria:

  • Must be different subresources (although they can be from the same resource).
  • Must be the same type.
  • Must have compatible formats (the formats must either be identical or be from the same type group). For example, a texture can be copied to an texture because both of these formats are in the group. Beginning with Direct3D 10.1, CopySubresourceRegion can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • May not be currently mapped.

CopySubresourceRegion supports only copy; it does not support any stretch, color key, blend, or format conversions. Beginning with Direct3D 10.1, CopySubresourceRegion can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

If your app needs to copy an entire resource, we recommend to use instead.

CopySubresourceRegion is an asynchronous call that the runtime can add to the command-buffer queue. This asynchronous behaviorattempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details.

Differences between Direct3D 10 and Direct3D 10.1:

Direct3D 10 has the following limitations:

  • You cannot use a depth-stencil resource as a destination.
  • You cannot use an immutable resource as a destination.
  • You cannot use a multisampled texture as either a source or a destination

Direct3D 10.1 has added support for the following features:

  • You can use a depth-stencil buffer as a source or a destination.
  • You can use multisampled resources as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to fails.
  • You can copy between uncompressed and compressed resources. During copy, the format conversions that are specified in Format Conversion using Direct3D 10.1 are supported automatically. The uncompressed resource must be at least prestructured, and typed. You must also account for the difference between the virtual and the physical size of the mipmaps levels.

?

Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. You must also pass 0 to the DstX, DstY, and DstZ parameters and null to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters respectively, must have identical sample count values.

+
+ + bb173542 + void ID3D10Device::CopySubresourceRegion([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D10Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D10_BOX* pSrcBox) + ID3D10Device::CopySubresourceRegion +
+ + +

Copy the entire contents of the source resource to the destination resource using the GPU.

+
+

A reference to the destination resource (see ).

+

A reference to the source resource (see ).

+ +

This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:

  • Must be different resources.
  • Must be the same type.
  • Must have identical dimensions (including width, height, depth, and size as appropriate).
  • Must have compatible formats, which means the formats must be identical or at least from the same type group. For example, a texture can be copied to an texture since both of these formats are in the group. Beginning with Direct3D 10.1, CopyResource can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • May not be currently mapped.

CopyResource supports only copy; it does not support any stretch, color key, blend, or format conversions. Beginning with Direct3D 10.1, CopyResource can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

Immutable, and depth-stencil resources cannot be used as a destination. Resources created with multisampling capability cannot be used as either a source or destination.

The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details.

An application that only needs to copy a portion of the data in a resource should use instead.

Differences between Direct3D 10 and Direct3D 10.1:

Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination. Direct3D 10.1 enables multisampled resources to be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or one of them is multisampled and the other is not multisampled, the call to fails.

It is possible to copy between prestructured+typed resources and block-compressed textures. See Format Conversion using Direct3D 10.1.

?

+
+ + bb173541 + void ID3D10Device::CopyResource([In] ID3D10Resource* pDstResource,[In] ID3D10Resource* pSrcResource) + ID3D10Device::CopyResource +
+ + +

The CPU copies data from memory to a subresource created in non-mappable memory. See remarks.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

For a shader-constant buffer; set pDstBox to null. It is not possible to use this method to partially update a shader-constant buffer.

A resource cannot be used as a destination if:

  • the resource is created with immutable or dynamic usage.
  • the resource is created as a depth-stencil resource.
  • the resource is created with multisampling capability (see ).

When UpdateSubresource returns, the application is free to change or even free the data pointed to by pSrcData because the method has already copied/snapped away the original contents.

The performance of UpdateSubresource depends on whether or not there is contention for the destination resource. For example, contention for a vertex buffer resource occurs when the application executes a Draw call and later calls UpdateSubresource on the same vertex buffer before the Draw call is actually executed by the GPU.

  • When there is contention for the resource, UpdateSubresource will perform 2 copies of the source data. First, the data is copied by the CPU to a temporary storage space accessible by the command buffer. This copy happens before the method returns. A second copy is then performed by the GPU to copy the source data into non-mappable memory. This second copy happens asynchronously because it is executed by GPU when the command buffer is flushed.
  • When there is no resource contention, the behavior of UpdateSubresource is dependent on which is faster (from the CPU's perspective): copying the data to the command buffer and then having a second copy execute when the command buffer is flushed, or having the CPU copy the data to the final resource location. This is dependent on the architecture of the underlying system.

To better understand the source row pitch and source depth pitch parameters, consider the following illustration of a 3D volume texture.

Each block in this visual represents an element of data, and the size of each element is dependent on the resource's format. For example, if the resource format is , then the size of each element would be 128 bits, or 16 bytes. This 3D volume texture has a width of two, a height of three, and a depth of four.

To calculate the source row pitch and source depth pitch for a given resource, use the following formulas:

  • Source Row Pitch = [size of one element in bytes] * [number of elements in one row]
  • Source Depth Pitch = [Source Row Pitch] * [number of rows (height)]

In the case of this example 3D volume texture where the size of each element is 16 bytes, the formulas are as follows:

  • Source Row Pitch = 16 * 2 = 32
  • Source Depth Pitch = 16 * 2 * 3 = 96

The following illustration shows the resource as it is laid out in memory.

For example, the following code snippet shows how to specify a destination region in a 2D texture. Assume the destination texture is 512x512 and the operation will copy the data pointed to by pData to [(120,100)..(200,220)] in the destination texture. Also assume that rowPitch has been initialized with the proper value (as explained above). Front and back are set to 0 and 1 respectively, because by having front equal to back, the box is technically empty.

  destRegion;	
+            destRegion.left = 120;	
+            destRegion.right = 200;	
+            destRegion.top = 100;	
+            destRegion.bottom = 220;	
+            destRegion.front = 0;	
+            destRegion.back = 1; pd3dDevice->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
+            

The 1D case is similar. The following snippet shows how to specify a destination region in a 1D texture. Use the same assumptions as above, except that the texture is 512 in length.

  destRegion;	
+            destRegion.left = 120;	
+            destRegion.right = 200;	
+            destRegion.top = 0;	
+            destRegion.bottom = 1;	
+            destRegion.front = 0;	
+            destRegion.back = 1; pd3dDevice->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
+            

Differences between Direct3D 10 and Direct3D 10.1:

Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination.

?

+
+ + bb173621 + void ID3D10Device::UpdateSubresource([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D10_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + ID3D10Device::UpdateSubresource +
+ + +

Set all the elements in a render target to one value.

+
+

Pointer to the render target.

+

A 4-component array that represents the color to fill the render target with.

+ +

Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method. The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.

Differences between Direct3D 9 and Direct3D 10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

When using 10Level9, ClearRenderTargetView only clears the first array slice in the render target view. This can impact (for example) cube map rendering scenarios. Applications should create a render target view for each face or array slice, then clear each view individually.

+
+ + bb173539 + void ID3D10Device::ClearRenderTargetView([In] ID3D10RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA) + ID3D10Device::ClearRenderTargetView +
+ + +

Clears the depth-stencil resource.

+
+

Pointer to the depth stencil to be cleared.

+

Which parts of the buffer to clear. See .

+

Clear the depth buffer with this value. This value will be clamped between 0 and 1.

+

Clear the stencil buffer with this value.

+ +

Differences between Direct3D 9 and Direct3D 10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

+
+ + bb173538 + void ID3D10Device::ClearDepthStencilView([In] ID3D10DepthStencilView* pDepthStencilView,[In] D3D10_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil) + ID3D10Device::ClearDepthStencilView +
+ + +

Generates mipmaps for the given shader resource.

+
+

A reference to an . The mipmaps will be generated for this shader resource.

+ +

GenerateMips may be called on any in order to generate the lower mipmap levels. GenerateMips uses the largest mipmap level of the view to recursively generate the lower levels of the mip, stopping with the smallest level specified by the view. If the base resource was not created with and , this call has no effect.

Video adapters that support feature level 9.1 and higher support generating mipmaps if you use any of these formats:

 	
+            	
+            	
+            	
+            	
+            	
+            	
+            

Video adapters that support feature level 9.2 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature level 9.1:

 	
+            	
+            	
+            	
+            	
+            

Video adapters that support feature level 9.3 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1 and 9.2:

 	
+            DXGI_FORMAT_B4G4R4A4 (optional)	
+            

Video adapters that support feature level 10 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1, 9.2, and 9.3:

  (optional)	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+             (optional)	
+            

For all other unsupported formats, this method will silently fail.

+
+ + bb173569 + void ID3D10Device::GenerateMips([In] ID3D10ShaderResourceView* pShaderResourceView) + ID3D10Device::GenerateMips +
+ + +

Copy a multisampled resource into a non-multisampled resource. This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.

+
+

Destination resource. Must be a created with the flag and be single-sampled. See .

+

A zero-based index, that identifies the destination subresource. See D3D10CalcSubresource for more details.

+

Source resource. Must be multisampled.

+

The source subresource of the source resource.

+

that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks.

+ +

Both the source and destination resources must be the same resource type and have the same dimensions.

The source and destination must have compatible formats. There are three scenarios for this:

ScenarioRequirements
Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter.
One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is and the typeless resource is ). The format of the typed resource must be specified in the Format parameter.
Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have ), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are then or could be specified in the Format parameter).

?

+
+ + bb173607 + void ID3D10Device::ResolveSubresource([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In] ID3D10Resource* pSrcResource,[In] unsigned int SrcSubresource,[In] DXGI_FORMAT Format) + ID3D10Device::ResolveSubresource +
+ + +

Get the rendering predicate state.

+
+

Address of a reference to a predicate (see ). Value stored here will be null upon device creation.

+

Address of a boolean to fill with the predicate comparison value. upon device creation.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173573 + void ID3D10Device::GetPredication([Out, Optional] ID3D10Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue) + ID3D10Device::GetPredication +
+ + +

Get the reason why the device was removed.

+
+

Possible return values include:

For more detail on these return codes, see DXGI_ERROR.

+ + bb173571 + HRESULT ID3D10Device::GetDeviceRemovedReason() + ID3D10Device::GetDeviceRemovedReason +
+ + +

Get the exception-mode flags.

+
+

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D10_RAISE_FLAG. A default value of 0 means there are no flags.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

Set an exception-mode flag to elevate an error condition to a non-continuable exception.

Whenever an error occurs, a Direct3D device enters the DEVICEREMOVED state and if the appropriate exception flag has been set, an exception is raised. A raised exception is designed to terminate an application. Before termination, the last chance an application has to persist data is by using an UnhandledExceptionFilter (see Structured Exception Handling). In general, UnhandledExceptionFilters are leveraged to try to persist data when an application is crashing (to disk, for example). Any code that executes during an UnhandledExceptionFilter is not guaranteed to reliably execute (due to possible process corruption). Any data that the UnhandledExceptionFilter manages to persist, before the UnhandledExceptionFilter crashes again, should be treated as suspect, and therefore inspected by a new, non-corrupted process to see if it is usable.

+
+ + bb173614 + HRESULT ID3D10Device::SetExceptionMode([In] unsigned int RaiseFlags) + ID3D10Device::SetExceptionMode +
+ + +

Get the exception-mode flags.

+
+

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D10_RAISE_FLAG. A default value of 0 means there are no flags.

+ +

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

+
+ + bb173572 + unsigned int ID3D10Device::GetExceptionMode() + ID3D10Device::GetExceptionMode +
+ + +

Get data from a device that is associated with a guid.

+
+

Guid associated with the data.

+

Size of the data.

+

Pointer to the data stored with the device. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

The data stored in the device is set with .

The data retrieved and the guid will typically be application-defined.

+
+ + bb173574 + HRESULT ID3D10Device::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) + ID3D10Device::GetPrivateData +
+ + +

Set data to a device and associate that data with a guid.

+
+

Guid associated with the data.

+

Size of the data.

+

Pointer to the data to be stored with this device. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

The data stored in the device with this method can be retrieved with .

The data and guid set with this method will typically be application-defined.

+
+ + bb173616 + HRESULT ID3D10Device::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) + ID3D10Device::SetPrivateData +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT ID3D10Device::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) + ID3D10Device::SetPrivateDataInterface + + + +

Restore all default device settings; return the device to the state it was in when it was created. This will set all set all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to null. The primitive topology will be set to UNDEFINED.

+
+ + bb173540 + void ID3D10Device::ClearState() + ID3D10Device::ClearState +
+ + +

Send queued-up commands in the command buffer to the GPU.

+
+ +

Most applications will not need to call this method. Calling this method when not necessary will incur a performance penalty. Each call to Flush incurs a significant amount of overhead.

When Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer. Flush sends those commands to the GPU for processing. Normally, these commands are sent to the GPU automatically whenever Direct3D determines that they need to be, such as when the command buffer is full or when mapping a resource. Flush will send the commands manually.

Flush should be used when the CPU waits for an arbitrary amount of time (such as when calling Sleep, ID3DX10ThreadPump::WaitForAllItems, or WaitForVBlank.

For more information about how flushing works, see Accurately Profiling Direct3D API Calls (Direct3D 9).

+
+ + bb173568 + void ID3D10Device::Flush() + ID3D10Device::Flush +
+ + +

Create a buffer (vertex buffer, index buffer, or shader-constant buffer).

+
+ No documentation. + No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

For example code, see:

  • Create a Vertex Buffer
  • Create an Index Buffer
+
+ + bb173544 + HRESULT ID3D10Device::CreateBuffer([In] const D3D10_BUFFER_DESC* pDesc,[In, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Buffer** ppBuffer) + ID3D10Device::CreateBuffer +
+ + +

Create an array of 1D textures (see Texture1D).

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

+ +

CreateTexture1D creates a 1D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.

+
+ + bb173559 + HRESULT ID3D10Device::CreateTexture1D([In] const D3D10_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture1D** ppTexture1D) + ID3D10Device::CreateTexture1D +
+ + +

Create an array of 2D textures (see Texture2D).

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

+ +

CreateTexture2D creates a 2D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.

+
+ + bb173560 + HRESULT ID3D10Device::CreateTexture2D([In] const D3D10_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture2D** ppTexture2D) + ID3D10Device::CreateTexture2D +
+ + +

Create a single 3D texture (see Texture3D).

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

+ +

CreateTexture3D creates a 3D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.

+
+ + bb173561 + HRESULT ID3D10Device::CreateTexture3D([In] const D3D10_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture3D** ppTexture3D) + ID3D10Device::CreateTexture3D +
+ + +

Create a shader-resource view for accessing data in a resource.

+
+ No documentation. + No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

A resource is made up of one or more subresources, a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: VSSetShaderResources, GSSetShaderResources and PSSetShaderResources.

Since a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.

+
+ + bb173558 + HRESULT ID3D10Device::CreateShaderResourceView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D10ShaderResourceView** ppSRView) + ID3D10Device::CreateShaderResourceView +
+ + +

Create a render-target view for accessing resource data.

+
+ No documentation. + No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

A rendertarget view can be bound to the output merger stage by calling .

+
+ + bb173556 + HRESULT ID3D10Device::CreateRenderTargetView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_RENDER_TARGET_VIEW_DESC* pDesc,[Out, Fast] ID3D10RenderTargetView** ppRTView) + ID3D10Device::CreateRenderTargetView +
+ + +

Create a depth-stencil view for accessing resource data.

+
+ No documentation. + No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

A depth-stencil view can be bound to the output-merger stage by calling .

For more background information, see the programming guide page about depth stencils.

+
+ + bb173547 + HRESULT ID3D10Device::CreateDepthStencilView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc,[Out, Fast] ID3D10DepthStencilView** ppDepthStencilView) + ID3D10Device::CreateDepthStencilView +
+ + +

Create an input-layout object to describe the input-buffer data for the input-assembler stage.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

+ +

After creating an input layout object, it must be bound to the input-assembler stage before calling a draw API. See Getting Started with the Input-Assembler Stage (Direct3D 10) for example code.

Once an input-layout object is created from a shader signature, the input-layout object can be reused with any other shader that has an identical input signature (semantics included). This can simplify the creation of input-layout objects when you are working with many shaders with identical inputs.

If a data type in the input-layout declaration does not match the data type in a shader-input signature, CreateInputLayout will generate a warning during compilation. The warning is simply to call attention to the fact that the data may be reinterpreted when read from a register. You may either disregard this warning (if reinterpretation is intentional) or make the data types match in both declarations to eliminate the warning. The Data Conversion Rules overview describes the rules applied for data type conversion.

Differences between Direct3D 9 and Direct3D 10:

Mapping the vertex data to the shader inputs with an input layout is a new way of doing things in Direct3D 10 that improves performance.

In Direct3D 10 the vertex data is mapped to the shader inputs when the input layout object is created, whereas in Direct3D 9 this mapping was done at Draw time based on the currently bound vertex declarations, vertex buffers, and vertex shaders. Doing this mapping when the input layout object is created reduces or eliminates extra linkage work for drivers at Draw time because this re-mapping is no longer necessary.

?

+
+ + bb173550 + HRESULT ID3D10Device::CreateInputLayout([In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pInputElementDescs,[In] unsigned int NumElements,[In] const void* pShaderBytecodeWithInputSignature,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10InputLayout** ppInputLayout) + ID3D10Device::CreateInputLayout +
+ + +

Create a vertex-shader object from a compiled shader.

+
+

A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.

+

Size of the compiled vertex shader.

+

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173562 + HRESULT ID3D10Device::CreateVertexShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10VertexShader** ppVertexShader) + ID3D10Device::CreateVertexShader +
+ + +

Create a geometry shader.

+
+

A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.

+

Size of the compiled geometry shader.

+

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

Once created, the shader can be set to the device by calling .

+
+ + bb173548 + HRESULT ID3D10Device::CreateGeometryShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10GeometryShader** ppGeometryShader) + ID3D10Device::CreateGeometryShader +
+ + +

Creates a geometry shader that can write to streaming output buffers.

+
+

A reference to the compiled geometry shader for a standard geometry shader plus stream output. For info on how to get this reference, see Getting a Pointer to a Compiled Shader.

To create the stream output without using a geometry shader, pass a reference to the output signature for the prior stage. To obtain this output signature, call the compiler function. You can also pass a reference to the compiled vertex shader that is used in the prior stage. This compiled shader provides the output signature for the data.

+

Size of the compiled geometry shader.

+

Pointer to a array. Cannot be null if NumEntries> 0.

+

The number of entries in the array pointed to by pSODeclaration. Minimum 0, maximum 64.

+

The size, in bytes, of each element in the array pointed to by pSODeclaration. This parameter is only used when the output slot is 0 for all entries in pSODeclaration.

+

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

+

This method returns one of the Direct3D 10 Return Codes.

+ +

For more info about using CreateGeometryShaderWithStreamOutput, see Create a Geometry-Shader Object with Stream Output.

+
+ + bb173549 + HRESULT ID3D10Device::CreateGeometryShaderWithStreamOutput([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Buffer, Optional] const D3D10_SO_DECLARATION_ENTRY* pSODeclaration,[In] unsigned int NumEntries,[In] unsigned int OutputStreamStride,[Out, Fast] ID3D10GeometryShader** ppGeometryShader) + ID3D10Device::CreateGeometryShaderWithStreamOutput +
+ + +

Create a pixel shader.

+
+

A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.

+

Size of the compiled pixel shader.

+

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

After creating the pixel shader, you can set it to the device using .

+
+ + bb173551 + HRESULT ID3D10Device::CreatePixelShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10PixelShader** ppPixelShader) + ID3D10Device::CreatePixelShader +
+ + +

Create a blend-state object that encapsules blend state for the output-merger stage.

+
+

Pointer to a blend-state description (see ).

+

Address of a reference to the blend-state object created (see Interface).

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

+
+ + bb173543 + HRESULT ID3D10Device::CreateBlendState([In] const D3D10_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D10BlendState** ppBlendState) + ID3D10Device::CreateBlendState +
+ + +

Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.

+
+ No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

4096 unique depth-stencil state objects can be created on a device at a time.

If an application attempts to create a depth-stencil state with the same description as an already existing depth-stencil state, then the same interface with an incremented reference count will be returned and the total number of unique depth-stencil state objects will stay the same.

+
+ + bb173546 + HRESULT ID3D10Device::CreateDepthStencilState([In] const D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D10DepthStencilState** ppDepthStencilState) + ID3D10Device::CreateDepthStencilState +
+ + +

Create a rasterizer state object that tells the rasterizer stage how to behave.

+
+ No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

4096 unique rasterizer state objects can be created on a device at a time.

If an application attempts to create a rasterizer state with the same description as an already existing rasterizer state, then the same interface with an incremented reference count will be returned and the total number of unique rasterizer state objects will stay the same.

+
+ + bb173554 + HRESULT ID3D10Device::CreateRasterizerState([In] const D3D10_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D10RasterizerState** ppRasterizerState) + ID3D10Device::CreateRasterizerState +
+ + +

Create a sampler-state object that encapsulates sampling information for a texture.

+
+ No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

4096 unique sampler state objects can be created on a device at a time.

If an application attempts to create a sampler state with the same description as an already existing sampler state, then the same interface with an incremented reference count will be returned and the total number of unique sampler state objects will stay the same.

+
+ + bb173557 + HRESULT ID3D10Device::CreateSamplerState([In] const D3D10_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D10SamplerState** ppSamplerState) + ID3D10Device::CreateSamplerState +
+ + +

This interface encapsulates methods for querying information from the GPU.

+
+

Pointer to a query description (see ).

+

Address of a reference to the query object created (see ).

+

This method returns E_OUTOFMEMORY if there is insufficient memory to create the query object. See Direct3D 11 Return Codes for other possible return values.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476515 + HRESULT ID3D10Device::CreateQuery([In] const D3D10_QUERY_DESC* pQueryDesc,[Out, Fast] ID3D10Query** ppQuery) + ID3D10Device::CreateQuery +
+ + +

Creates a predicate.

+
+

Pointer to a query description where the type of query must be a or (see ).

+

Address of a reference to a predicate (see Interface).

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173552 + HRESULT ID3D10Device::CreatePredicate([In] const D3D10_QUERY_DESC* pPredicateDesc,[Out, Fast] ID3D10Predicate** ppPredicate) + ID3D10Device::CreatePredicate +
+ + +

Create a counter object for measuring GPU performance.

+
+

Pointer to a counter description (see ).

+

Address of a reference to a counter (see Interface).

+

If this function succeeds, it will return . If it fails, possible return values are: S_FALSE, E_OUTOFMEMORY, , , or E_INVALIDARG.

is returned whenever the application requests to create a well-known counter, but the current device does not support it.

indicates that another device object is currently using the counters, so they cannot be used by this device at the moment.

E_INVALIDARG is returned whenever an out-of-range well-known or device-dependent counter is requested, or when the simulataneously active counters have been exhausted.

+ + bb173545 + HRESULT ID3D10Device::CreateCounter([In] const D3D10_COUNTER_DESC* pCounterDesc,[Out, Fast] ID3D10Counter** ppCounter) + ID3D10Device::CreateCounter +
+ + +

Get the support of a given format on the installed video device.

+
+

A enumeration that describes a format for which to check for support.

+

A bitfield of enumeration values describing how the specified format is supported on the installed device. The values are ORed together.

+ +

Most format support is based on the Direct3D feature level. Only a few specific use cases require checking for support. See Hardware Support for Direct3D 10 Formats and Hardware Support for Direct3D 10.1 Formats for additional information.

+
+ + bb173536 + HRESULT ID3D10Device::CheckFormatSupport([In] DXGI_FORMAT Format,[Out] D3D10_FORMAT_SUPPORT* pFormatSupport) + ID3D10Device::CheckFormatSupport +
+ + +

Get the number of quality levels available during multisampling.

+
+

The texture format. See .

+

The number of samples during multisampling.

+

Number of quality levels supported by the adapter. See remarks.

+ +

When multisampling a texture, the number of quality levels available for an adapter is dependent on the texture format used and the number of samples requested. The maximum sample count defined by D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT in d3d10.h is 32. If the returned value of pNumQualityLevels is 0, the format and sample count combination is not supported for the installed adapter.

Furthermore, the definition of a quality level is up to each hardware vendor to define, however no facility is provided by Direct3D to help discover this information.

Direct3D 10.1 devices are required to support 4x MSAA for all formats except R32G32B32A32 and R32G32B32 formats.

+
+ + bb173537 + HRESULT ID3D10Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels) + ID3D10Device::CheckMultisampleQualityLevels +
+ + +

Get a counter's information.

+
+ + bb173535 + void ID3D10Device::CheckCounterInfo([Out] D3D10_COUNTER_INFO* pCounterInfo) + ID3D10Device::CheckCounterInfo +
+ + +

Get the type, name, units of measure, and a description of an existing counter.

+
+

Pointer to a counter description (see ). Specifies which counter information is to be retrieved about.

+

Pointer to the data type of a counter (see ). Specifies the data type of the counter being retrieved.

+

Pointer to the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.

+

String to be filled with a brief name for the counter. May be null if the application is not interested in the name of the counter.

+

Length of the string returned to szName. Can be null.

+

Name of the units a counter measures, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

+

Length of the string returned to szUnits. Can be null.

+

A description of the counter, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

+

Length of the string returned to szDescription. Can be null.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

Length parameters can be null, which indicates the application is not interested in the length nor the corresponding string value. When a length parameter is non-null and the corresponding string is null, the input value of the length parameter is ignored, and the length of the corresponding string (including terminating null) will be returned through the length parameter. When length and the corresponding parameter are both non-null, the input value of length is checked to ensure there is enough room, and then the length of the string (including terminating null character) is passed out through the length parameter.

+
+ + bb173534 + HRESULT ID3D10Device::CheckCounter([In] const D3D10_COUNTER_DESC* pDesc,[Out] D3D10_COUNTER_TYPE* pType,[Out] unsigned int* pActiveCounters,[Out, Buffer, Optional] char* szName,[InOut, Optional] unsigned int* pNameLength,[Out, Buffer, Optional] char* szUnits,[InOut, Optional] unsigned int* pUnitsLength,[Out, Buffer, Optional] char* szDescription,[InOut, Optional] unsigned int* pDescriptionLength) + ID3D10Device::CheckCounter +
+ + +

Get the flags used during the call to create the device with .

+
+

A bitfield containing the flags used to create the device. See .

+ + bb173570 + unsigned int ID3D10Device::GetCreationFlags() + ID3D10Device::GetCreationFlags +
+ + +

Give a device access to a shared resource created on a different Direct3d device.

+
+

A resource handle. See remarks.

+

The globally unique identifier () for the resource interface. See remarks.

+

Address of a reference to the resource we are gaining access to.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

To share a resource between two Direct3D 10 devices the resource must have been created with the flag, if it was created using the interface. If it was created using the interface, then the resource is always shared.

The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling GetSharedHandle.

 * pOtherResource(null);	
+            hr = pOtherDeviceResource->QueryInterface( __uuidof(), (void**)&pOtherResource );	
+            HANDLE sharedHandle;	
+            pOtherResource->GetSharedHandle(&sharedHandle); 

The only resources that can be shared are 2D non-mipmapped textures.

To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using the pSharedHandle argument of CreateTexture. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument.

The following code illustrates the method calls involved.

 sharedHandle = null; // must be set to null to create, can use a valid handle here to open in D3D9 	
+            pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); 	
+            ... 	
+            pDevice10->OpenSharedResource(sharedHandle, __uuidof(), (void**)(&tempResource10)); 	
+            tempResource10->QueryInterface(__uuidof(), (void**)(&pTex2D_10)); 	
+            tempResource10->Release(); 	
+            // now use pTex2D_10 with pDevice10    

Textures being shared from D3D9 to D3D10 have the following restrictions.

  • Textures must be 2D
  • Only 1 mip level is allowed
  • Texture must have default usage
  • Texture must be write only
  • MSAA textures are not allowed
  • Bind flags must have SHADER_RESOURCE and RENDER_TARGET set
  • Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed

If a shared texture is updated on one device must be called on that device.

+
+ + bb173598 + HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] const GUID& ReturnedInterface,[Out, Optional] void** ppResource) + ID3D10Device::OpenSharedResource +
+ + + Get the flags used during the call to create the device with . + + A bitfield containing the flags used to create the device. See . + int ID3D10Device::GetCreationFlags() + + + + Gets or sets the debug-name for this object. + + + The debug name. + + + + Inner interface giving access to VertexShaderStage methods. + + + Inner interface giving access to PixelShaderStage methods. + + + Inner interface giving access to InputAssemblerStage methods. + + + Inner interface giving access to GeometryShaderStage methods. + + + Inner interface giving access to OutputMergerStage methods. + + + Inner interface giving access to StreamOutputStage methods. + + + Inner interface giving access to RasterizerStage methods. + + + +

Get the reason why the device was removed.

+
+ + bb173571 + GetDeviceRemovedReason + GetDeviceRemovedReason + HRESULT ID3D10Device::GetDeviceRemovedReason() +
+ + +

Get or sets the exception-mode flags.

+
+ +

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

+
+ + bb173572 + GetExceptionMode / SetExceptionMode + GetExceptionMode + unsigned int ID3D10Device::GetExceptionMode() +
+ + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Set the target output {{buffers}} for the {{StreamOutput}} stage, which enables/disables the pipeline to stream-out data. + + + Call ID3D10Device::SOSetTargets (before any draw calls) to stream data out; call SOSetTargets with NULL to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output render targets before calling draw methods in the RenderInstanceToStream function. An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. Calling this method using a buffer that is currently bound for writing will effectively bind NULL instead because a buffer cannot be bound as both an input and an output at the same time. The {{DeviceDebug Layer}} will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime. The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device. + + an array of output buffers (see ) to bind to the device. The buffers must have been created with the flag. + void SOSetTargets([In] int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const int* pOffsets) + + + + Get the target output {{buffers}} for the {{StreamOutput}} stage of the pipeline. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of buffers to get. A maximum of four output buffers can be retrieved. + an array of output buffers (see ) to bind to the device. + void SOGetTargets([In] int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] int* pOffsets) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the target output buffers for the StreamOutput stage, which enables/disables the pipeline to stream-out data.

+
+ No documentation. + No documentation. + No documentation. + +

Call (before any draw calls) to stream data out; call SOSetTargets with null to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function.

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173620 + void ID3D10Device::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) + ID3D10Device::SOSetTargets +
+ + +

Set the target output buffers for the StreamOutput stage, which enables/disables the pipeline to stream-out data.

+
+ No documentation. + No documentation. + No documentation. + +

Call (before any draw calls) to stream data out; call SOSetTargets with null to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function.

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173620 + void ID3D10Device::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) + ID3D10Device::SOSetTargets +
+ + +

Get the target output buffers for the StreamOutput stage of the pipeline.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173619 + void ID3D10Device::SOGetTargets([In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] unsigned int* pOffsets) + ID3D10Device::SOGetTargets +
+ + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Get references to the render targets that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + a depth-stencil view (see ) to be filled with the depth-stencil information from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get references to the render targets that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of render targets to retrieve. + an array of render targets views (see ) to be filled with the render targets from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get references to the render targets and the depth-stencil buffer that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of render targets to retrieve. + Pointer to a depth-stencil view (see ) to be filled with the depth-stencil information from the device. + an array of render targets views (see ) to be filled with the render targets from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get the {{blend state}} of the output-merger stage. + + + The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak. + + Array of blend factors, one for each RGBA component. + Pointer to a {{sample mask}}. + a reference to a blend-state interface (see ). + void OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] float BlendFactor[4],[Out, Optional] int* pSampleMask) + + + + Gets the {{depth-stencil}} state of the output-merger stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Pointer to the stencil reference value used in the {{depth-stencil}} test. + a reference to a depth-stencil state interface (see ) to be filled with information from the device. + void OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] int* pStencilRef) + + + + Binds a set of render targets to the output-merger stage. + + A set of render target views to bind. + + + + Binds a single render target to the output-merger stage. + + A view of the render target to bind. + + + + Binds a depth-stencil buffer and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A set of render target views to bind. + + + + Binds a depth-stencil buffer and a single render target to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A view of the render target to bind. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind one or more render targets and the depth-stencil buffer to the output-merger stage.

+
+ No documentation. + No documentation. + No documentation. + +

A call to OMSetRenderTargets overrides all bounded render targets and the depth stencil target regardless of the number of render targets in ppRenderTargetViews.

The maximum number of render targets a device can have active at any given time is set by a #define in D3D10.h called D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.

If any subresources are also currently bound for reading or writing (perhaps in a different part of the pipeline), those bind points will be null'ed out to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

See Binding Resources and Pipeline stages for more information on binding resources.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ + bb173597 + void ID3D10Device::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D10RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D10DepthStencilView* pDepthStencilView) + ID3D10Device::OMSetRenderTargets +
+ + +

Bind one or more render targets and the depth-stencil buffer to the output-merger stage.

+
+ No documentation. + No documentation. + No documentation. + +

A call to OMSetRenderTargets overrides all bounded render targets and the depth stencil target regardless of the number of render targets in ppRenderTargetViews.

The maximum number of render targets a device can have active at any given time is set by a #define in D3D10.h called D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.

If any subresources are also currently bound for reading or writing (perhaps in a different part of the pipeline), those bind points will be null'ed out to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

See Binding Resources and Pipeline stages for more information on binding resources.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ + bb173597 + void ID3D10Device::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D10RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D10DepthStencilView* pDepthStencilView) + ID3D10Device::OMSetRenderTargets +
+ + +

Set the blend state of the output-merger stage.

+
+ No documentation. + No documentation. + No documentation. + +

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

To create a blend-state interface, call .

Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.

StateDefault Value
AlphaToCoverageEnable
BlendEnable[8]
SrcBlend
DstBlend
BlendOp
SrcBlendAlpha
DstBlendAlpha
BlendOpAlpha
RenderTargetWriteMask[8][8]

?

A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173595 + void ID3D10Device::OMSetBlendState([In, Optional] ID3D10BlendState* pBlendState,[In] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) + ID3D10Device::OMSetBlendState +
+ + +

Sets the depth-stencil state of the output-merger stage.

+
+ No documentation. + No documentation. + +

To create a depth-stencil state interface, call .

Depth-stencil state is used by the output-merger stage to setup depth-stencil testing. The stencil reference value is the control value used in the depth-stencil test.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173596 + void ID3D10Device::OMSetDepthStencilState([In, Optional] ID3D10DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef) + ID3D10Device::OMSetDepthStencilState +
+ + +

Get references to the render targets and the depth-stencil buffer that are available to the output-merger stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173594 + void ID3D10Device::OMGetRenderTargets([In] unsigned int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + ID3D10Device::OMGetRenderTargets +
+ + +

Get the blend state of the output-merger stage.

+
+ No documentation. + No documentation. + No documentation. + +

The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak.

+
+ + bb173592 + void ID3D10Device::OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] SHARPDX_COLOR4* BlendFactor,[Out, Optional] unsigned int* pSampleMask) + ID3D10Device::OMGetBlendState +
+ + +

Gets the depth-stencil state of the output-merger stage.

+
+ No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173593 + void ID3D10Device::OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] unsigned int* pStencilRef) + ID3D10Device::OMGetDepthStencilState +
+ + + Gets or sets the blend factor. + + The blend factor. + + + + Gets or sets the blend sample mask. + + The blend sample mask. + + + + Gets or sets the state of the blend. + + The state of the blend. + + + + Gets or sets the depth stencil reference. + + The depth stencil reference. + + + + Gets or sets the state of the depth stencil. + + The state of the depth stencil. + + + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Get the array of {{viewports}} bound to the {{rasterizer stage}} + + An array of viewports (see ). + void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) + + + + Get the array of {{viewports}} bound to the {{rasterizer stage}} + + An array of viewports (see ). + void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) + + + + Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. + + An array of scissor rectangles (see ). + void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) + + + + Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. + + An array of scissor rectangles (see ). + void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) + + + + Binds a single scissor rectangle to the rasterizer stage. + + The scissor rectangle to bind. + + + + Binds a set of scissor rectangles to the rasterizer stage. + + The set of scissor rectangles to bind. + + + + Binds a set of viewports to the rasterizer stage. + + The set of viewports to bind. + + + + Binds a single viewport to the rasterizer stage. + + The viewport to bind. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the rasterizer state for the rasterizer stage of the pipeline.

+
+ No documentation. + +

To create a rasterizer state interface, call . For more details on setting up the rasterizer state, see Set Rasterizer State.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173612 + void ID3D10Device::RSSetState([In, Optional] ID3D10RasterizerState* pRasterizerState) + ID3D10Device::RSSetState +
+ + +

Bind an array of viewports to the rasterizer stage of the pipeline.

+
+ No documentation. + No documentation. + +

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first viewport in the array.

+
+ + bb173613 + void ID3D10Device::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const D3D10_VIEWPORT* pViewports) + ID3D10Device::RSSetViewports +
+ + +

Bind an array of scissor rectangles to the rasterizer stage.

+
+ No documentation. + No documentation. + +

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

+
+ + bb173611 + void ID3D10Device::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const RECT* pRects) + ID3D10Device::RSSetScissorRects +
+ + +

Get the rasterizer state from the rasterizer stage of the pipeline.

+
+ No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173609 + void ID3D10Device::RSGetState([Out] ID3D10RasterizerState** ppRasterizerState) + ID3D10Device::RSGetState +
+ + +

Get the array of viewports bound to the rasterizer stage

+
+ No documentation. + No documentation. + + bb173610 + void ID3D10Device::RSGetViewports([InOut] unsigned int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) + ID3D10Device::RSGetViewports +
+ + +

Get the array of scissor rectangles bound to the rasterizer stage.

+
+ No documentation. + No documentation. + + bb173608 + void ID3D10Device::RSGetScissorRects([InOut] unsigned int* NumRects,[Out, Buffer, Optional] RECT* pRects) + ID3D10Device::RSGetScissorRects +
+ + +

Get or sets the rasterizer state from the rasterizer stage of the pipeline.

+
+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173609 + RSGetState / RSSetState + RSGetState + void ID3D10Device::RSGetState([Out] ID3D10RasterizerState** ppRasterizerState) +
+ + +

The device interface represents a virtual adapter for Direct3D 10.1; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

This method requires Windows Vista Service Pack 1.

+
+ + bb694546 + ID3D10Device1 + ID3D10Device1 +
+ + + Constructor for a D3D10.1 Device. See for more information. + + + + + + Constructor for a D3D10.1 Device. See for more information. + + + + + + Constructor for a D3D10.1 Device. See for more information. + + + + + + + Constructor for a D3D10.1 Device. See for more information. + + + + + + + Constructor for a D3D10.1 Device. See for more information. + + + + + + + + Constructor for a D3D10.1 Device. See for more information. + + + + + + + + Initializes a new instance of the class along with a new used for rendering. + + The type of device to create. + A list of runtime layers to enable. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + Initializes a new instance of the class along with a new used for rendering. + + The video adapter on which the device should be created. + A list of runtime layers to enable. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + Initializes a new instance of the class along with a new used for rendering. + + The type of device to create. + A list of runtime layers to enable. + Details used to create the swap chain. + Desired feature level + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + Initializes a new instance of the class along with a new used for rendering. + + The video adapter on which the device should be created. + A list of runtime layers to enable. + Details used to create the swap chain. + Desired feature level + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type. + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Create a shader-resource view for accessing data in a resource.

+
+ No documentation. + No documentation. + No documentation. +

This method returns one of the following Direct3D 10 Return Codes.

+ +

A resource is made up of one or more subresources, a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: VSSetShaderResources, GSSetShaderResources and PSSetShaderResources.

Since a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.

This method requires Windows Vista Service Pack 1.

+
+ + bb694548 + HRESULT ID3D10Device1::CreateShaderResourceView1([In] ID3D10Resource* pResource,[In, Optional] const D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc,[Out, Fast] ID3D10ShaderResourceView1** ppSRView) + ID3D10Device1::CreateShaderResourceView1 +
+ + +

Create a blend-state object that encapsules blend state for the output-merger stage.

+
+

Pointer to a blend-state description (see ).

+

Address of a reference to the blend-state object created (see Interface).

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

This method requires Windows Vista Service Pack 1.

+
+ + bb694547 + HRESULT ID3D10Device1::CreateBlendState1([In] const D3D10_BLEND_DESC1* pBlendStateDesc,[Out, Fast] ID3D10BlendState1** ppBlendState) + ID3D10Device1::CreateBlendState1 +
+ + +

Gets the feature level of the hardware device.

+
+

The feature level (see ).

+ +

This method requires Windows Vista Service Pack 1.

+
+ + bb694549 + D3D10_FEATURE_LEVEL1 ID3D10Device1::GetFeatureLevel() + ID3D10Device1::GetFeatureLevel +
+ + +

Gets the feature level of the hardware device.

+
+ +

This method requires Windows Vista Service Pack 1.

+
+ + bb694549 + GetFeatureLevel + GetFeatureLevel + D3D10_FEATURE_LEVEL1 ID3D10Device1::GetFeatureLevel() +
+ + +

An interface manages a set of state objects, resources, and shaders for implementing a rendering effect.

+
+ +

An effect is created by calling .

The effect system groups the information required for rendering into an effect which contains: state objects for assigning state changes in groups, resources for supplying input data and storing output data, and programs that control how the rendering is done called shaders. For more information, see Effects (Direct3D 10).

Note??

If you call QueryInterface on an object to retrieve the interface, QueryInterface returns E_NOINTERFACE. To work around this issue, use the following code:

 * pIUnknown = (*)pEffect; pIUnknown->AddRef();	
+            
+
+ + bb173630 + ID3D10Effect + ID3D10Effect +
+ + + Initializes a new instance of the class. + + The device. + The effect byte code. + Effect compile options + Optional. A reference to an memory space for effect variables that are shared across effects (see ). + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Test an effect to see if it contains valid syntax.

+
+

TRUE if the code syntax is valid; otherwise .

+ + bb173772 + BOOL ID3D10Effect::IsValid() + ID3D10Effect::IsValid +
+ + +

Test an effect to see if it is part of a memory pool.

+
+

TRUE if the effect is pooled; otherwise . See Interface.

+ + bb173771 + BOOL ID3D10Effect::IsPool() + ID3D10Effect::IsPool +
+ + +

Get the device that created the effect.

+
+

A reference to an Interface.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

An effect is created for a specific device, by calling a function such as .

+
+ + bb173764 + HRESULT ID3D10Effect::GetDevice([Out] ID3D10Device** ppDevice) + ID3D10Effect::GetDevice +
+ + +

Get an effect description.

+
+

A reference to an effect description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ +

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

+
+ + bb173763 + HRESULT ID3D10Effect::GetDesc([Out] D3D10_EFFECT_DESC* pDesc) + ID3D10Effect::GetDesc +
+ + +

Get a constant buffer by index.

+
+

A zero-based index.

+

A reference to a Interface.

+ +

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

+
+ + bb173761 + ID3D10EffectConstantBuffer* ID3D10Effect::GetConstantBufferByIndex([In] unsigned int Index) + ID3D10Effect::GetConstantBufferByIndex +
+ + +

Get a constant buffer by name.

+
+

The constant-buffer name.

+

A reference to the constant buffer indicated by the Name. See .

+ +

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

+
+ + bb173762 + ID3D10EffectConstantBuffer* ID3D10Effect::GetConstantBufferByName([In] const char* Name) + ID3D10Effect::GetConstantBufferByName +
+ + +

Get a variable by index.

+
+

A zero-based index.

+

A reference to a Interface.

+ +

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access any local non-static effect variable using its name or with an index.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the index exists.

+
+ + bb173767 + ID3D10EffectVariable* ID3D10Effect::GetVariableByIndex([In] unsigned int Index) + ID3D10Effect::GetVariableByIndex +
+ + +

Get a variable by name.

+
+

The variable name.

+

A reference to an Interface.

+ +

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access an effect variable using its name or with an index.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the name exists.

+
+ + bb173768 + ID3D10EffectVariable* ID3D10Effect::GetVariableByName([In] const char* Name) + ID3D10Effect::GetVariableByName +
+ + +

Get a variable by semantic.

+
+

The semantic name.

+

A reference to the effect variable indicated by the Semantic. See Interface.

+ +

Each effect variable can have a semantic attached, which is a user defined metadata string. Some system-value semantics are reserved words that trigger built in functionality by pipeline stages.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the semantic exists.

+
+ + bb173769 + ID3D10EffectVariable* ID3D10Effect::GetVariableBySemantic([In] const char* Semantic) + ID3D10Effect::GetVariableBySemantic +
+ + +

Get a technique by index.

+
+

A zero-based index.

+

A reference to an Interface.

+ +

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index. For more about techniques, see techniques and passes.

+
+ + bb173765 + ID3D10EffectTechnique* ID3D10Effect::GetTechniqueByIndex([In] unsigned int Index) + ID3D10Effect::GetTechniqueByIndex +
+ + +

Get a technique by name.

+
+

The name of the technique.

+

A reference to an Interface, or null if the technique is not found.

+ +

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index. For more about techniques, see techniques and passes.

+
+ + bb173766 + ID3D10EffectTechnique* ID3D10Effect::GetTechniqueByName([In] const char* Name) + ID3D10Effect::GetTechniqueByName +
+ + +

Minimize the amount of memory required for an effect.

+
+

Returns one of the following Direct3D 10 Return Codes.

+ +

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. API methods to read variables will no longer work once reflection data has been removed.

The following methods will fail after Optimize has been called on an effect.

Note that references retrieved with these methods before calling are still valid after is called. This allows the application to get all the variables, techniques, and passes it will use, call Optimize, and then use the effect.

+
+ + bb173773 + HRESULT ID3D10Effect::Optimize() + ID3D10Effect::Optimize +
+ + +

Test an effect to see if the reflection metadata has been removed from memory.

+
+

TRUE if the effect is optimized; otherwise .

+ +

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

+
+ + bb173770 + BOOL ID3D10Effect::IsOptimized() + ID3D10Effect::IsOptimized +
+ + +

Test an effect to see if it contains valid syntax.

+
+ + bb173772 + IsValid + IsValid + BOOL ID3D10Effect::IsValid() +
+ + +

Test an effect to see if it is part of a memory pool.

+
+ + bb173771 + IsPool + IsPool + BOOL ID3D10Effect::IsPool() +
+ + +

Get the device that created the effect.

+
+ +

An effect is created for a specific device, by calling a function such as .

+
+ + bb173764 + GetDevice + GetDevice + HRESULT ID3D10Effect::GetDevice([Out] ID3D10Device** ppDevice) +
+ + +

Get an effect description.

+
+ +

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

+
+ + bb173763 + GetDesc + GetDesc + HRESULT ID3D10Effect::GetDesc([Out] D3D10_EFFECT_DESC* pDesc) +
+ + +

Test an effect to see if the reflection metadata has been removed from memory.

+
+ +

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

+
+ + bb173770 + IsOptimized + IsOptimized + BOOL ID3D10Effect::IsOptimized() +
+ + +

The blend-variable interface accesses blend state.

+
+ +

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

+
+ + bb173631 + ID3D10EffectBlendVariable + ID3D10EffectBlendVariable +
+ + +

The interface is the base class for all effect variables.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ + bb173724 + ID3D10EffectVariable + ID3D10EffectVariable +
+ + + Set data. + + A reference to the variable. + size in bytes of data to write. + + Returns one of the following {{Direct3D 10 Return Codes}}. + + + This method does no conversion or type checking; it is therefore a very quick way to access array items. + + HRESULT ID3D10EffectVariable::SetRawValue([None] void* pData,[None] int Offset,[None] int Count) + + + + Get data. + + + This method does no conversion or type checking; it is therefore a very quick way to access array items. + + The number of bytes to get. + Returns a filled with the value. + HRESULT ID3D10EffectVariable::GetRawValue([None] void* pData,[None] int Offset,[None] int Count) + + + + Get a scalar variable. + + + AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a scalar variable. See . + ID3D10EffectScalarVariable* ID3D10EffectVariable::AsScalar() + + + + Get a vector variable. + + + AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a vector variable. See . + ID3D10EffectVectorVariable* ID3D10EffectVariable::AsVector() + + + + Get a matrix variable. + + + AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a matrix variable. See . + ID3D10EffectMatrixVariable* ID3D10EffectVariable::AsMatrix() + + + + Get a string variable. + + + AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a string variable. See . + ID3D10EffectStringVariable* ID3D10EffectVariable::AsString() + + + + Get a shader-resource variable. + + + AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a shader-resource variable. See . + ID3D10EffectShaderResourceVariable* ID3D10EffectVariable::AsShaderResource() + + + + Get a render-target-view variable. + + + This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a render-target-view variable. See . + ID3D10EffectRenderTargetViewVariable* ID3D10EffectVariable::AsRenderTargetView() + + + + Get a depth-stencil-view variable. + + + This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a depth-stencil-view variable. See . + ID3D10EffectDepthStencilViewVariable* ID3D10EffectVariable::AsDepthStencilView() + + + + Get a constant buffer. + + + AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a constant buffer. See . + ID3D10EffectConstantBuffer* ID3D10EffectVariable::AsConstantBuffer() + + + + Get a shader variable. + + + AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a shader variable. See . + ID3D10EffectShaderVariable* ID3D10EffectVariable::AsShader() + + + + Get a effect-blend variable. + + + AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to an effect blend variable. See . + ID3D10EffectBlendVariable* ID3D10EffectVariable::AsBlend() + + + + Get a depth-stencil variable. + + + AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a depth-stencil variable. See . + ID3D10EffectDepthStencilVariable* ID3D10EffectVariable::AsDepthStencil() + + + + Get a rasterizer variable. + + + AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a rasterizer variable. See . + ID3D10EffectRasterizerVariable* ID3D10EffectVariable::AsRasterizer() + + + + Get a sampler variable. + + + AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a sampler variable. See . + ID3D10EffectSamplerVariable* ID3D10EffectVariable::AsSampler() + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Compare the data type with the data stored.

+
+

TRUE if the syntax is valid; otherwise .

+ +

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

+
+ + bb173746 + BOOL ID3D10EffectVariable::IsValid() + ID3D10EffectVariable::IsValid +
+ + +

Get type information.

+
+

A reference to an Interface.

+ + bb173745 + ID3D10EffectType* ID3D10EffectVariable::GetType() + ID3D10EffectVariable::GetType +
+ + +

Get a description.

+
+

A reference to an effect-variable description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173738 + HRESULT ID3D10EffectVariable::GetDesc([Out] D3D10_EFFECT_VARIABLE_DESC* pDesc) + ID3D10EffectVariable::GetDesc +
+ + +

Get an annotation by index.

+
+

A zero-based index.

+

A reference to an Interface.

+ +

Annonations can be attached to a technique, a pass or a gloval variable. For the syntax, see Annotation Syntax (Direct3D 10).

+
+ + bb173736 + ID3D10EffectVariable* ID3D10EffectVariable::GetAnnotationByIndex([In] unsigned int Index) + ID3D10EffectVariable::GetAnnotationByIndex +
+ + +

Get an annotation by name.

+
+

The annotation name.

+

A reference to an Interface. Note that if the annotation is not found the Interface returned will be empty. The method should be called to determine whether the annotation was found.

+ +

Annonations can be attached to a technique, a pass or a gloval variable. For the syntax, see Annotation Syntax (Direct3D 10).

+
+ + bb173737 + ID3D10EffectVariable* ID3D10EffectVariable::GetAnnotationByName([In] const char* Name) + ID3D10EffectVariable::GetAnnotationByName +
+ + +

Get a structure member by index.

+
+

A zero-based index.

+

A reference to an Interface.

+ +

If the effect variable is an structure, use this method to look up a member by index.

+
+ + bb173740 + ID3D10EffectVariable* ID3D10EffectVariable::GetMemberByIndex([In] unsigned int Index) + ID3D10EffectVariable::GetMemberByIndex +
+ + +

Get a structure member by name.

+
+

Member name.

+

A reference to an Interface.

+ +

If the effect variable is an structure, use this method to look up a member by name.

+
+ + bb173741 + ID3D10EffectVariable* ID3D10EffectVariable::GetMemberByName([In] const char* Name) + ID3D10EffectVariable::GetMemberByName +
+ + +

Get a structure member by semantic.

+
+

The semantic.

+

A reference to an Interface.

+ +

If the effect variable is an structure, use this method to look up a member by attached semantic.

+
+ + bb173742 + ID3D10EffectVariable* ID3D10EffectVariable::GetMemberBySemantic([In] const char* Semantic) + ID3D10EffectVariable::GetMemberBySemantic +
+ + +

Get an array element.

+
+

A zero-based index; otherwise 0.

+

A reference to an Interface.

+ +

If the effect variable is an array, use this method to return one of the elements.

+
+ + bb173739 + ID3D10EffectVariable* ID3D10EffectVariable::GetElement([In] unsigned int Index) + ID3D10EffectVariable::GetElement +
+ + +

Get a constant buffer.

+
+

A reference to a Interface.

+ +

Effect variables are read-from or written-to a constant buffer.

+
+ + bb173743 + ID3D10EffectConstantBuffer* ID3D10EffectVariable::GetParentConstantBuffer() + ID3D10EffectVariable::GetParentConstantBuffer +
+ + +

Get a scalar variable.

+
+

A reference to a scalar variable. See .

+ +

AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173731 + ID3D10EffectScalarVariable* ID3D10EffectVariable::AsScalar() + ID3D10EffectVariable::AsScalar +
+ + +

Get a vector variable.

+
+

A reference to a vector variable. See .

+ +

AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173735 + ID3D10EffectVectorVariable* ID3D10EffectVariable::AsVector() + ID3D10EffectVariable::AsVector +
+ + +

Get a matrix variable.

+
+

A reference to a matrix variable. See .

+ +

AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173728 + ID3D10EffectMatrixVariable* ID3D10EffectVariable::AsMatrix() + ID3D10EffectVariable::AsMatrix +
+ + +

Get a string variable.

+
+

A reference to a string variable. See .

+ +

AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173734 + ID3D10EffectStringVariable* ID3D10EffectVariable::AsString() + ID3D10EffectVariable::AsString +
+ + +

Get a shader-resource variable.

+
+

A reference to a shader-resource variable. See .

+ +

AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173733 + ID3D10EffectShaderResourceVariable* ID3D10EffectVariable::AsShaderResource() + ID3D10EffectVariable::AsShaderResource +
+ + +

Get a render-target-view variable.

+
+

A reference to a render-target-view variable. See Interface.

+ +

This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb944008 + ID3D10EffectRenderTargetViewVariable* ID3D10EffectVariable::AsRenderTargetView() + ID3D10EffectVariable::AsRenderTargetView +
+ + +

Get a depth-stencil-view variable.

+
+

A reference to a depth-stencil-view variable. See Interface.

+ +

This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb944007 + ID3D10EffectDepthStencilViewVariable* ID3D10EffectVariable::AsDepthStencilView() + ID3D10EffectVariable::AsDepthStencilView +
+ + +

Get a constant buffer.

+
+

A reference to a constant buffer. See .

+ +

AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173726 + ID3D10EffectConstantBuffer* ID3D10EffectVariable::AsConstantBuffer() + ID3D10EffectVariable::AsConstantBuffer +
+ + +

Get a shader variable.

+
+

A reference to a shader variable. See .

+ +

AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173732 + ID3D10EffectShaderVariable* ID3D10EffectVariable::AsShader() + ID3D10EffectVariable::AsShader +
+ + +

Get a effect-blend variable.

+
+

A reference to an effect blend variable. See .

+ +

AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173725 + ID3D10EffectBlendVariable* ID3D10EffectVariable::AsBlend() + ID3D10EffectVariable::AsBlend +
+ + +

Get a depth-stencil variable.

+
+

A reference to a depth-stencil variable. See .

+ +

AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173727 + ID3D10EffectDepthStencilVariable* ID3D10EffectVariable::AsDepthStencil() + ID3D10EffectVariable::AsDepthStencil +
+ + +

Get a rasterizer variable.

+
+

A reference to a rasterizer variable. See .

+ +

AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173729 + ID3D10EffectRasterizerVariable* ID3D10EffectVariable::AsRasterizer() + ID3D10EffectVariable::AsRasterizer +
+ + +

Get a sampler variable.

+
+

A reference to a sampler variable. See .

+ +

AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data.

Applications can test the returned object for validity by calling IsValid.

+
+ + bb173730 + ID3D10EffectSamplerVariable* ID3D10EffectVariable::AsSampler() + ID3D10EffectVariable::AsSampler +
+ + +

Set data.

+
+

A reference to the variable.

+

The offset (in bytes) from the beginning of the reference to the data.

+

The number of bytes to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

This method does no conversion or type checking; it is therefore a very quick way to access array items.

+
+ + bb173747 + HRESULT ID3D10EffectVariable::SetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVariable::SetRawValue +
+ + +

Get data.

+
+

A reference to the variable.

+

The offset (in bytes) from the beginning of the reference to the data.

+

The number of bytes to get.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

This method does no conversion or type checking; it is therefore a very quick way to access array items.

+
+ + bb173744 + HRESULT ID3D10EffectVariable::GetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVariable::GetRawValue +
+ + +

Compare the data type with the data stored.

+
+ +

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

+
+ + bb173746 + IsValid + IsValid + BOOL ID3D10EffectVariable::IsValid() +
+ + +

Get type information.

+
+ + bb173745 + GetType + GetType + ID3D10EffectType* ID3D10EffectVariable::GetType() +
+ + +

Get a description.

+
+ + bb173738 + GetDesc + GetDesc + HRESULT ID3D10EffectVariable::GetDesc([Out] D3D10_EFFECT_VARIABLE_DESC* pDesc) +
+ + +

Get a constant buffer.

+
+ +

Effect variables are read-from or written-to a constant buffer.

+
+ + bb173743 + GetParentConstantBuffer + GetParentConstantBuffer + ID3D10EffectConstantBuffer* ID3D10EffectVariable::GetParentConstantBuffer() +
+ + + Get a pointer to a blend-state interface. + + Returns . + HRESULT ID3D10EffectBlendVariable::GetBlendState([None] int Index,[Out] ID3D10BlendState** ppBlendState) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a blend-state interface.

+
+

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

+

The address of a reference to a blend-state interface (see Interface).

+ + bb173633 + HRESULT ID3D10EffectBlendVariable::GetBlendState([In] unsigned int Index,[Out] ID3D10BlendState** ppBlendState) + ID3D10EffectBlendVariable::GetBlendState +
+ + +

Get a reference to a blend-state variable.

+
+

Index into an array of blend-state descriptions. If there is only one blend-state variable in the effect, use 0.

+

A reference to a blend-state description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ +

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

+
+ + bb173632 + HRESULT ID3D10EffectBlendVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_BLEND_DESC* pBlendDesc) + ID3D10EffectBlendVariable::GetBackingStore +
+ + +

A depth-stencil-variable interface accesses depth-stencil state.

+
+ +

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

+
+ + bb173639 + ID3D10EffectDepthStencilVariable + ID3D10EffectDepthStencilVariable +
+ + + Get a pointer to a depth-stencil interface. + + Returns a pointer to a blend-state interface (see ). + HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([None] int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a depth-stencil interface.

+
+

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

+

The address of a reference to a blend-state interface (see Interface).

+ + bb173641 + HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([In] unsigned int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState) + ID3D10EffectDepthStencilVariable::GetDepthStencilState +
+ + +

Get a reference to a variable that contains depth-stencil state.

+
+

Index into an array of depth-stencil-state descriptions. If there is only one depth-stencil variable in the effect, use 0.

+

A reference to a depth-stencil-state description (see ).

+ +

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

+
+ + bb173640 + HRESULT ID3D10EffectDepthStencilVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc) + ID3D10EffectDepthStencilVariable::GetBackingStore +
+ + +

A depth-stencil-view-variable interface accesses a depth-stencil view.

+
+ + bb173642 + ID3D10EffectDepthStencilViewVariable + ID3D10EffectDepthStencilViewVariable +
+ + + Set an array of depth-stencil-view resources. + + A pointer to an array of depth-stencil-view interfaces. See . + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Set an array of depth-stencil-view resources. + + A pointer to an array of depth-stencil-view interfaces. See . + The zero-based array index to set the first interface. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of depth-stencil-view resources. + + The number of elements in the array. + Returns an array of depth-stencil-view interfaces. See . + HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of depth-stencil-view resources. + + The zero-based array index to get the first interface. + The number of elements in the array. + Returns an array of depth-stencil-view interfaces. See . + HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a depth-stencil-view resource.

+
+

A reference to a depth-stencil-view interface. See Interface.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173645 + HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencil([In] ID3D10DepthStencilView* pResource) + ID3D10EffectDepthStencilViewVariable::SetDepthStencil +
+ + +

Get a depth-stencil-view resource.

+
+

The address of a reference to a depth-stencil-view interface. See Interface.

+ + bb173643 + HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencil([In] ID3D10DepthStencilView** ppResource) + ID3D10EffectDepthStencilViewVariable::GetDepthStencil +
+ + +

Set an array of depth-stencil-view resources.

+
+

A reference to an array of depth-stencil-view interfaces. See Interface.

+

The zero-based array index to set the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173646 + HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray +
+ + +

Set an array of depth-stencil-view resources.

+
+

A reference to an array of depth-stencil-view interfaces. See Interface.

+

The zero-based array index to set the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173646 + HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray +
+ + +

Get an array of depth-stencil-view resources.

+
+

A reference to an array of depth-stencil-view interfaces. See Interface.

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173644 + HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray +
+ + +

A matrix-variable interface accesses a matrix.

+
+ + bb173647 + ID3D10EffectMatrixVariable + ID3D10EffectMatrixVariable +
+ + + Set a floating-point matrix. + + A pointer to the first element in the matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] float* pData) + + + + Get a matrix. + + A reference to the first element in a matrix. + + Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) + + + + Get a matrix. + + A reference to the first element in a matrix. + + Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) + + + + Set a floating-point matrix. + + A pointer to the first element in the matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] float* pData) + + + + Set an array of floating-point matrices. + + A pointer to the first matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an array of floating-point matrices. + + A pointer to the first matrix. + The number of matrix elements to skip from the start of the array. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of matrices. + + The number of matrices in the returned array. + Returns an array of matrix. + HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of matrices. + + The offset (in number of matrices) between the start of the array and the first matrix returned. + The number of matrices in the returned array. + Returns an array of matrix. + HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and set a floating-point matrix. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to the first element of a matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] float* pData) + + + + Transpose and set a floating-point matrix. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to the first element of a matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] float* pData) + + + + Transpose and set an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to an array of matrices. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and set an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to an array of matrices. + The offset (in number of matrices) between the start of the array and the first matrix to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and get a floating-point matrix. + + The transposed matrix. + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) + + + + Transpose and get a floating-point matrix. + + The transposed matrix. + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) + + + + Transpose and get an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + The number of matrices in the array to get. + Returns an array of transposed . + HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and get an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + The offset (in number of matrices) between the start of the array and the first matrix to get. + The number of matrices in the array to get. + Returns an array of transposed . + HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a floating-point matrix.

+
+

A reference to the first element in the matrix.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173652 + HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] SHARPDX_MATRIX* pData) + ID3D10EffectMatrixVariable::SetMatrix +
+ + +

Get a matrix.

+
+

A reference to the first element in a matrix.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173648 + HRESULT ID3D10EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) + ID3D10EffectMatrixVariable::GetMatrix +
+ + +

Set an array of floating-point matrices.

+
+

A reference to the first matrix.

+

The number of matrix elements to skip from the start of the array.

+

The number of elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173653 + HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectMatrixVariable::SetMatrixArray +
+ + +

Get an array of matrices.

+
+

A reference to the first element of the first matrix in an array of matrices.

+

The offset (in number of matrices) between the start of the array and the first matrix returned.

+

The number of matrices in the returned array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173649 + HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectMatrixVariable::GetMatrixArray +
+ + +

Transpose and set a floating-point matrix.

+
+

A reference to the first element of a matrix.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

+
+ + bb173654 + HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] SHARPDX_MATRIX* pData) + ID3D10EffectMatrixVariable::SetMatrixTranspose +
+ + +

Transpose and get a floating-point matrix.

+
+

A reference to the first element of a transposed matrix.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

+
+ + bb173650 + HRESULT ID3D10EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) + ID3D10EffectMatrixVariable::GetMatrixTranspose +
+ + +

Transpose and set an array of floating-point matrices.

+
+

A reference to an array of matrices.

+

The offset (in number of matrices) between the start of the array and the first matrix to set.

+

The number of matrices in the array to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

+
+ + bb173655 + HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectMatrixVariable::SetMatrixTransposeArray +
+ + +

Transpose and get an array of floating-point matrices.

+
+

A reference to the first element of an array of tranposed matrices.

+

The offset (in number of matrices) between the start of the array and the first matrix to get.

+

The number of matrices in the array to get.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

+
+ + bb173651 + HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectMatrixVariable::GetMatrixTransposeArray +
+ + +

A pass interface encapsulates state assignments within a technique.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ +

A pass is a block of code that sets render-state objects and shaders. A pass is declared within a technique; the syntax for a technique is shown in Effect Technique Syntax (Direct3D 10).

To get an effect-pass interface, call a method like .

+
+ + bb173656 + ID3D10EffectPass + ID3D10EffectPass +
+ + + Set the state contained in a pass to the device. + + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT Apply([None] UINT Flags) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Test a pass to see if it contains valid syntax.

+
+

TRUE if the code syntax is valid; otherwise .

+ + bb173665 + BOOL ID3D10EffectPass::IsValid() + ID3D10EffectPass::IsValid +
+ + +

Get a pass description.

+
+

A reference to a pass description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ +

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes. See techniques and passes.

+
+ + bb173661 + HRESULT ID3D10EffectPass::GetDesc([Out] D3D10_PASS_DESC* pDesc) + ID3D10EffectPass::GetDesc +
+ + +

Get a vertex-shader description.

+
+

A reference to a vertex-shader description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ +

An effect pass can contain render state assignments and shader object assignments.

+
+ + bb173664 + HRESULT ID3D10EffectPass::GetVertexShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) + ID3D10EffectPass::GetVertexShaderDesc +
+ + +

Get a geometry-shader description.

+
+

A reference to a geometry-shader description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ +

An effect pass can contain render state assignments and shader object assignments.

+
+ + bb173662 + HRESULT ID3D10EffectPass::GetGeometryShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) + ID3D10EffectPass::GetGeometryShaderDesc +
+ + +

Get a pixel-shader description.

+
+

A reference to a pixel-shader description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ +

An effect pass can contain render state assignments and shader object assignments.

+
+ + bb173663 + HRESULT ID3D10EffectPass::GetPixelShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) + ID3D10EffectPass::GetPixelShaderDesc +
+ + +

Get an annotation by index.

+
+

A zero-based index.

+

A reference to an Interface.

+ + bb173659 + ID3D10EffectVariable* ID3D10EffectPass::GetAnnotationByIndex([In] unsigned int Index) + ID3D10EffectPass::GetAnnotationByIndex +
+ + +

Get an annotation by name.

+
+

The name of the annotation.

+

A reference to an Interface.

+ + bb173660 + ID3D10EffectVariable* ID3D10EffectPass::GetAnnotationByName([In] const char* Name) + ID3D10EffectPass::GetAnnotationByName +
+ + +

Set the state contained in a pass to the device.

+
+

Unused.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173657 + HRESULT ID3D10EffectPass::Apply([In] unsigned int Flags) + ID3D10EffectPass::Apply +
+ + +

Generate a mask for allowing/preventing state changes.

+
+

A reference to a state-block mask (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173658 + HRESULT ID3D10EffectPass::ComputeStateBlockMask([In] D3D10_STATE_BLOCK_MASK* pStateBlockMask) + ID3D10EffectPass::ComputeStateBlockMask +
+ + +

Test a pass to see if it contains valid syntax.

+
+ + bb173665 + IsValid + IsValid + BOOL ID3D10EffectPass::IsValid() +
+ + +

Get a pass description.

+
+ +

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes. See techniques and passes.

+
+ + bb173661 + GetDesc + GetDesc + HRESULT ID3D10EffectPass::GetDesc([Out] D3D10_PASS_DESC* pDesc) +
+ + +

Get a vertex-shader description.

+
+ +

An effect pass can contain render state assignments and shader object assignments.

+
+ + bb173664 + GetVertexShaderDesc + GetVertexShaderDesc + HRESULT ID3D10EffectPass::GetVertexShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) +
+ + +

Get a geometry-shader description.

+
+ +

An effect pass can contain render state assignments and shader object assignments.

+
+ + bb173662 + GetGeometryShaderDesc + GetGeometryShaderDesc + HRESULT ID3D10EffectPass::GetGeometryShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) +
+ + +

Get a pixel-shader description.

+
+ +

An effect pass can contain render state assignments and shader object assignments.

+
+ + bb173663 + GetPixelShaderDesc + GetPixelShaderDesc + HRESULT ID3D10EffectPass::GetPixelShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) +
+ + +

Describes an effect pass, which contains pipeline state.

+
+ +

Get a pass description by calling ; an effect technique contains one or more passes.

+
+ + bb205330 + D3D10_PASS_DESC + D3D10_PASS_DESC +
+ + +

A string that contains the name of the pass; otherwise null.

+
+ + bb205330 + const char* Name + char Name +
+ + +

The number of annotations.

+
+ + bb205330 + unsigned int Annotations + unsigned int Annotations +
+ + +

A reference to the input signature or the vertex shader; otherwise null.

+
+ + bb205330 + unsigned char* pIAInputSignature + unsigned char pIAInputSignature +
+ + +

The size of the input signature (in bytes).

+
+ + bb205330 + SIZE_T IAInputSignatureSize + SIZE_T IAInputSignatureSize +
+ + +

The stencil-reference value used in the depth-stencil state (see Configuring Depth-Stencil Functionality (Direct3D 10)).

+
+ + bb205330 + unsigned int StencilRef + unsigned int StencilRef +
+ + +

The sample mask for the blend state (see Configuring Blending Functionality (Direct3D 10)).

+
+ + bb205330 + unsigned int SampleMask + unsigned int SampleMask +
+ + +

The per-component blend factors (RGBA) for the blend state (see Configuring Blending Functionality (Direct3D 10)).

+
+ + bb205330 + SHARPDX_COLOR4 BlendFactor + SHARPDX_COLOR4 BlendFactor +
+ + + Returns the signature of this Effect pass. + + + + +

Describes an effect variable that contains a shader.

+
+ +

To get a shader description, call a method like .

+
+ + bb205331 + D3D10_PASS_SHADER_DESC + D3D10_PASS_SHADER_DESC +
+ + +

A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. Its name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called.

+
+ + bb205331 + ID3D10EffectShaderVariable* pShaderVariable + ID3D10EffectShaderVariable pShaderVariable +
+ + +

A zero-based array index; otherwise 0.

+
+ + bb205331 + unsigned int ShaderIndex + unsigned int ShaderIndex +
+ + + A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. Its name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called. + + ID3D10EffectShaderVariable* pShaderVariable + + + +

A pool interface represents a common memory space (or pool) for sharing variables between effects.

+
+ +

To create an effect pool, call a function like . Effect pools can improve performance by reducing the number of API calls required to make state changes (see Using Effect Pools).

+
+ + bb173667 + ID3D10EffectPool + ID3D10EffectPool +
+ + + Initializes a new instance of the class. + + The device. + The effect byte code. + Effect compile options + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the effect that created the effect pool.

+
+

A reference to an Interface interface.

+ + bb173668 + ID3D10Effect* ID3D10EffectPool::AsEffect() + ID3D10EffectPool::AsEffect +
+ + +

A rasterizer-variable interface accesses rasterizer state.

+
+ +

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

+
+ + bb173669 + ID3D10EffectRasterizerVariable + ID3D10EffectRasterizerVariable +
+ + + Get a pointer to a rasterizer interface. + + Returns a pointer to a rasterizer interface (see ). + HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([None] int Index,[Out] ID3D10RasterizerState** ppRasterizerState) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a rasterizer interface.

+
+

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

+

The address of a reference to a rasterizer interface (see Interface).

+ + bb173671 + HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([In] unsigned int Index,[Out] ID3D10RasterizerState** ppRasterizerState) + ID3D10EffectRasterizerVariable::GetRasterizerState +
+ + +

Get a reference to a variable that contains rasteriser state.

+
+

Index into an array of rasteriser-state descriptions. If there is only one rasteriser variable in the effect, use 0.

+

A reference to a rasteriser-state description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ +

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

+
+ + bb173670 + HRESULT ID3D10EffectRasterizerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_RASTERIZER_DESC* pRasterizerDesc) + ID3D10EffectRasterizerVariable::GetBackingStore +
+ + +

A render-target-view interface accesses a render target.

+
+ + bb173672 + ID3D10EffectRenderTargetViewVariable + ID3D10EffectRenderTargetViewVariable +
+ + + Set an array of render-targets. + + Set an array of render-target-view interfaces. See . + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Set an array of render-targets. + + Set an array of render-target-view interfaces. See . + The zero-based array index to store the first interface. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of render-targets. + + The number of elements in the array. + Returns an array of . + HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of render-targets. + + The zero-based array index to get the first interface. + The number of elements in the array. + Returns an array of . + HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a render-target.

+
+

A reference to a render-target-view interface. See Interface.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173675 + HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTarget([In] ID3D10RenderTargetView* pResource) + ID3D10EffectRenderTargetViewVariable::SetRenderTarget +
+ + +

Get a render-target.

+
+

The address of a reference to a render-target-view interface. See Interface.

+ + bb173673 + HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTarget([Out] ID3D10RenderTargetView** ppResource) + ID3D10EffectRenderTargetViewVariable::GetRenderTarget +
+ + +

Set an array of render-targets.

+
+

Set an array of render-target-view interfaces. See Interface.

+

The zero-based array index to store the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173676 + HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray +
+ + +

Set an array of render-targets.

+
+

Set an array of render-target-view interfaces. See Interface.

+

The zero-based array index to store the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173676 + HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray +
+ + +

Get an array of render-targets.

+
+

A reference to an array of render-target-view interfaces. See Interface.

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173674 + HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray +
+ + +

A sampler interface accesses sampler state.

+
+ +

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

+
+ + bb173677 + ID3D10EffectSamplerVariable + ID3D10EffectSamplerVariable +
+ + + Get a reference to a sampler interface. + + Returns a reference to a sampler interface (see ). + HRESULT ID3D10EffectSamplerVariable::GetSampler([None] int Index,[Out] ID3D10SamplerState** ppSampler) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a sampler interface.

+
+

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

+

The address of a reference to a sampler interface (see Interface).

+ + bb173679 + HRESULT ID3D10EffectSamplerVariable::GetSampler([In] unsigned int Index,[Out] ID3D10SamplerState** ppSampler) + ID3D10EffectSamplerVariable::GetSampler +
+ + +

Get a reference to a variable that contains sampler state.

+
+

Index into an array of sampler descriptions. If there is only one sampler variable in the effect, use 0.

+

A reference to a sampler description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173678 + HRESULT ID3D10EffectSamplerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_SAMPLER_DESC* pSamplerDesc) + ID3D10EffectSamplerVariable::GetBackingStore +
+ + +

Describes an effect shader.

+
+ +

To get an effect-shader description, call .

+
+ + bb205051 + D3D10_EFFECT_SHADER_DESC + D3D10_EFFECT_SHADER_DESC +
+ + +

Passed into CreateInputLayout. Only valid on a vertex shader or geometry shader. See ID3D10Device_CreateInputLayout.

+
+ + bb205051 + const unsigned char* pInputSignature + unsigned char pInputSignature +
+ + +

TRUE is the shader is defined inline; otherwise .

+
+ + bb205051 + BOOL IsInline + BOOL IsInline +
+ + +

A reference to the compiled shader.

+
+ + bb205051 + const unsigned char* pBytecode + unsigned char pBytecode +
+ + +

The length of pBytecode.

+
+ + bb205051 + unsigned int BytecodeLength + unsigned int BytecodeLength +
+ + +

A string that constains a declaration of the stream output from a geometry shader.

+
+ + bb205051 + const char* SODecl + char SODecl +
+ + +

The number of entries in the input signature.

+
+ + bb205051 + unsigned int NumInputSignatureEntries + unsigned int NumInputSignatureEntries +
+ + +

The number of entries in the output signature.

+
+ + bb205051 + unsigned int NumOutputSignatureEntries + unsigned int NumOutputSignatureEntries +
+ + + Gets the signature passed into InputLayout. Only valid on a vertex shader or geometry shader. + + The signature. + + + + Gets the bytecode from the compiled shader. + + The bytecode. + + + +

A shader-resource interface accesses a shader resource.

+
+ + bb173693 + ID3D10EffectShaderResourceVariable + ID3D10EffectShaderResourceVariable +
+ + + Set an array of shader resources. + + The address of an array of shader-resource-view interfaces. See . + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Set an array of shader resources. + + The address of an array of shader-resource-view interfaces. See . + The zero-based array index to get the first interface. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of shader resources. + + The number of elements in the array. + Returns an array of shader-resource-view interfaces. See . + HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of shader resources. + + The zero-based array index to get the first interface. + The number of elements in the array. + Returns an array of shader-resource-view interfaces. See . + HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a shader resource.

+
+

The address of a reference to a shader-resource-view interface. See Interface.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173696 + HRESULT ID3D10EffectShaderResourceVariable::SetResource([In] ID3D10ShaderResourceView* pResource) + ID3D10EffectShaderResourceVariable::SetResource +
+ + +

Get a shader resource.

+
+

The address of a reference to a shader-resource-view interface. See Interface.

+ + bb173694 + HRESULT ID3D10EffectShaderResourceVariable::GetResource([Out] ID3D10ShaderResourceView** ppResource) + ID3D10EffectShaderResourceVariable::GetResource +
+ + +

Set an array of shader resources.

+
+

The address of an array of shader-resource-view interfaces. See Interface.

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173697 + HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectShaderResourceVariable::SetResourceArray +
+ + +

Set an array of shader resources.

+
+

The address of an array of shader-resource-view interfaces. See Interface.

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173697 + HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectShaderResourceVariable::SetResourceArray +
+ + +

Get an array of shader resources.

+
+

The address of an array of shader-resource-view interfaces. See Interface.

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173695 + HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectShaderResourceVariable::GetResourceArray +
+ + +

An effect-scalar-variable interface accesses scalar values.

+
+ + bb173680 + ID3D10EffectScalarVariable + ID3D10EffectScalarVariable +
+ + + Set a floating-point variable. + + A reference to the variable. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetFloat([None] float Value) + + + + Set an array of floating-point variables. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an array of floating-point variables. + + A reference to the start of the data to set. + Must be set to 0; this is reserved for future use. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of floating-point variables. + + The number of array elements to set. + Returns an array of floats. + HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of floating-point variables. + + Must be set to 0; this is reserved for future use. + The number of array elements to set. + Returns an array of floats. + HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an integer variable. + + A reference to the variable. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value) + + + + Set an array of integer variables. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Set an array of integer variables. + + A reference to the start of the data to set. + Must be set to 0; this is reserved for future use. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Get an array of integer variables. + + The number of array elements to set. + Returns an array of integer variables. + HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Get an array of integer variables. + + Must be set to 0; this is reserved for future use. + The number of array elements to set. + Returns an array of integer variables. + HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Set a boolean variable. + + A reference to the variable. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetBool([None] BOOL Value) + + + + Get a boolean variable. + + Returns a boolean. + HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue) + + + + Set an array of boolean variables. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Set an array of boolean variables. + + A reference to the start of the data to set. + Must be set to 0; this is reserved for future use. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Get an array of boolean variables. + + Must be set to 0; this is reserved for future use. + The number of array elements to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a floating-point variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173689 + HRESULT ID3D10EffectScalarVariable::SetFloat([In] float Value) + ID3D10EffectScalarVariable::SetFloat +
+ + +

Get a floating-point variable.

+
+

A reference to the variable.

+ + bb173683 + HRESULT ID3D10EffectScalarVariable::GetFloat([Out] float* pValue) + ID3D10EffectScalarVariable::GetFloat +
+ + +

Set an array of floating-point variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173690 + HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectScalarVariable::SetFloatArray +
+ + +

Get an array of floating-point variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173684 + HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectScalarVariable::GetFloatArray +
+ + +

Set an integer variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173691 + HRESULT ID3D10EffectScalarVariable::SetInt([In] int Value) + ID3D10EffectScalarVariable::SetInt +
+ + +

Get an integer variable.

+
+

A reference to the variable.

+ + bb173685 + HRESULT ID3D10EffectScalarVariable::GetInt([Out] int* pValue) + ID3D10EffectScalarVariable::GetInt +
+ + +

Set an array of integer variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173692 + HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectScalarVariable::SetIntArray +
+ + +

Get an array of integer variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173686 + HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectScalarVariable::GetIntArray +
+ + +

Set a boolean variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173687 + HRESULT ID3D10EffectScalarVariable::SetBool([In] BOOL Value) + ID3D10EffectScalarVariable::SetBool +
+ + +

Get a boolean variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173681 + HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue) + ID3D10EffectScalarVariable::GetBool +
+ + +

Set an array of boolean variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173688 + HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectScalarVariable::SetBoolArray +
+ + +

Get an array of boolean variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173682 + HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectScalarVariable::GetBoolArray +
+ + +

A string-variable interface accesses a string variable.

+
+ + bb173705 + ID3D10EffectStringVariable + ID3D10EffectStringVariable +
+ + + Get the string. + + Returns a reference to the string. + HRESULT ID3D10EffectStringVariable::GetString([Out] const char** ppString) + + + + Get an array of strings. + + The number of strings in the returned array. + Returns a reference to the first string in the array. + HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) + + + + Get an array of strings. + + The offset (in number of strings) between the start of the array and the first string to get. + The number of strings in the returned array. + Returns a reference to the first string in the array. + HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the string.

+
+

A reference to the string.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173706 + HRESULT ID3D10EffectStringVariable::GetString([Out] const void** ppString) + ID3D10EffectStringVariable::GetString +
+ + +

Get an array of strings.

+
+

A reference to the first string in the array.

+

The offset (in number of strings) between the start of the array and the first string to get.

+

The number of strings in the returned array.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173707 + HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const void** ppStrings,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectStringVariable::GetStringArray +
+ + +

A vector-variable interface accesses a four-component vector.

+
+ + bb173748 + ID3D10EffectVectorVariable + ID3D10EffectVectorVariable +
+ + + Get a four-component vector that contains integer data. + + Returns a four-component vector that contains integer data + HRESULT ID3D10EffectVectorVariable::GetIntVector([Out] int* pData) + + + + Get a four-component vector that contains floating-point data. + + Returns a four-component vector that contains floating-point data. + HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out] float* pData) + + + + Get a four-component vector that contains boolean data. + + a four-component vector that contains boolean data. + HRESULT ID3D10EffectVectorVariable::GetBoolVector([Out, Buffer] BOOL* pData) + + + + Get a four-component vector. + + Type of the four-component vector + a four-component vector. + HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out, Buffer] BOOL* pData) + + + + Set an array of four-component vectors that contain integer data. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetIntVectorArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Set an array of four-component vectors that contain floating-point data. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an array of four-component vectors that contain floating-point data. + + Type of the four-component vector + A reference to the start of the data to set. + + Returns one of the following {{Direct3D 10 Return Codes}}. + + HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set a x-component vector. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a x-component vector. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a two-component vector that contains floating-point data. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a three-component vector that contains floating-point data. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a four-component color that contains floating-point data. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set an array of four-component color that contain floating-point data. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain integer data. + + The number of array elements to set. + Returns an array of four-component vectors that contain integer data. + HRESULT ID3D10EffectVectorVariable::GetIntVectorArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain floating-point data. + + The number of array elements to set. + Returns an array of four-component vectors that contain floating-point data. + HRESULT ID3D10EffectVectorVariable::GetFloatVectorArray([None] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain boolean data. + + The number of array elements to set. + an array of four-component vectors that contain boolean data. + HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain boolean data. + + The number of array elements to set. + an array of four-component vectors that contain boolean data. + HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a four-component vector that contains boolean data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173755 + HRESULT ID3D10EffectVectorVariable::SetBoolVector([In] SHARPDX_BOOL4* pData) + ID3D10EffectVectorVariable::SetBoolVector +
+ + +

Set a four-component vector that contains integer data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173759 + HRESULT ID3D10EffectVectorVariable::SetIntVector([In] SHARPDX_INT4* pData) + ID3D10EffectVectorVariable::SetIntVector +
+ + +

Set a four-component vector that contains floating-point data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173757 + HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) + ID3D10EffectVectorVariable::SetFloatVector +
+ + +

Get a four-component vector that contains boolean data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173749 + HRESULT ID3D10EffectVectorVariable::GetBoolVector([Out] SHARPDX_BOOL4* pData) + ID3D10EffectVectorVariable::GetBoolVector +
+ + +

Get a four-component vector that contains integer data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173753 + HRESULT ID3D10EffectVectorVariable::GetIntVector([Out] SHARPDX_INT4* pData) + ID3D10EffectVectorVariable::GetIntVector +
+ + +

Get a four-component vector that contains floating-point data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173751 + HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out] SHARPDX_VECTOR4* pData) + ID3D10EffectVectorVariable::GetFloatVector +
+ + +

Set an array of four-component vectors that contain boolean data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173756 + HRESULT ID3D10EffectVectorVariable::SetBoolVectorArray([In, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVectorVariable::SetBoolVectorArray +
+ + +

Set an array of four-component vectors that contain integer data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173760 + HRESULT ID3D10EffectVectorVariable::SetIntVectorArray([In, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVectorVariable::SetIntVectorArray +
+ + +

Set an array of four-component vectors that contain floating-point data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173758 + HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVectorVariable::SetFloatVectorArray +
+ + +

Get an array of four-component vectors that contain boolean data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173750 + HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVectorVariable::GetBoolVectorArray +
+ + +

Get an array of four-component vectors that contain integer data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173754 + HRESULT ID3D10EffectVectorVariable::GetIntVectorArray([Out, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVectorVariable::GetIntVectorArray +
+ + +

Get an array of four-component vectors that contain floating-point data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173752 + HRESULT ID3D10EffectVectorVariable::GetFloatVectorArray([Out, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3D10EffectVectorVariable::GetFloatVectorArray +
+ + +

The interface encapsulates the textures and resources needed to render a specific font on a specific device.

+
+ +

The interface is obtained by calling or .

The LPD3DX10FONT type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DX10FONT;	
+            
+
+ + bb173886 + ID3DX10Font + ID3DX10Font +
+ + + Initializes a new instance of the class. + + The device. + The font description. + + + + Initializes a new instance of the class from a + + The device. + The font. + + + + Initializes a new instance of the class. + + The device. + The height. + The width. + The weight. + The mip levels. + if set to true [is italic]. + The character set. + The precision. + The quality. + The pitch and family. + Name of the face. + + + + Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings. + + + The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used. This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles. Text will not be rendered to the device; ID3DX10Font::DrawText must still be called to render the text. However, by preloading text into video memory, ID3DX10Font::DrawText will use substantially fewer CPU resources. This method internally converts characters to glyphs using the GDI function {{GetCharacterPlacement}}. + + Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks. + If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. + HRESULT ID3DX10Font::PreloadTextW([None] const wchar_t* pString,[None] int Count) + + + + Draw formatted text. + + + The parameters of this method are very similar to those of the {{GDI DrawText}} function. This method supports both ANSI and Unicode strings. Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified. If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font. This method supports only fonts whose escapement and orientation are both zero. + + Reference to an ID3DX10Sprite object that contains the string you wish to draw. Can be NULL, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if ID3DX10Font::DrawText is to be called more than once in a row. + Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be NULL terminated. + Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. As with any RECT object, the coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top. + Specify the method of formatting the text. It can be any combination of the following values: ItemDescription DT_BOTTOM Justify the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE. DT_CALCRECT Tell DrawText to automatically calculate the width and height of the rectangle based on the length of the string you tell it to draw. If there are multiple lines of text, ID3DX10Font::DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, ID3DX10Font::DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, ID3DX10Font::DrawText returns the height of the formatted text but does not draw the text. DT_CENTER Center text horizontally in the rectangle. DT_EXPANDTABS Expand tab characters. The default number of characters per tab is eight. DT_LEFT Align text to the left. DT_NOCLIP Draw without clipping. ID3DX10Font::DrawText is somewhat faster when DT_NOCLIP is used. DT_RIGHT Align text to the right. DT_RTLREADING Display text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right. DT_SINGLELINE Display text on a single line only. Carriage returns and line feeds do not break the line. DT_TOP Top-justify text. DT_VCENTER Center text vertically (single line only). DT_WORDBREAK Break words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line. ? + Color of the text. See . + If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero. + int ID3DX10Font::DrawTextW([None] LPD3DX10SPRITE pSprite,[None] const wchar_t* pString,[None] int Count,[None] RECT* pRect,[None] int Format,[None] D3DXCOLOR Color) + + + + Draw formatted text at the specified position. + + Reference to an ID3DX10Sprite object that contains the string you wish to draw. Can be NULL, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if ID3DX10Font::DrawText is to be called more than once in a row. + Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be NULL terminated. + The x. + The y. + Color of the text. See . + + If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero. + + int ID3DX10Font::DrawTextW([None] LPD3DX10SPRITE pSprite,[None] const wchar_t* pString,[None] int Count,[None] RECT* pRect,[None] int Format,[None] D3DXCOLOR Color) + + The parameters of this method are very similar to those of the {{GDI DrawText}} function. This method supports both ANSI and Unicode strings. Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified. If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font. This method supports only fonts whose escapement and orientation are both zero. + + int ID3DX10Font::DrawTextW([In] ID3DX10Sprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] RECT* pRect,[In] unsigned int Format,[In] D3DXCOLOR Color) + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieve the Direct3D device associated with the font object.

+
+

Address of a reference to an interface, representing the Direct3D device object associated with the font object.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Note??Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+
+ + bb173891 + HRESULT ID3DX10Font::GetDevice([Out] ID3D10Device** ppDevice) + ID3DX10Font::GetDevice +
+ + +

Get a description of the current font object.

+
+

Pointer to a structure that describes the font object. If UNICODE is defined, a reference to a D3DX10FONT_DESCW is returned; otherwise a reference to a D3DX10FONT_DESCA is returned.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DX10FONT_DESCA structure.

+
+ + bb173890 + HRESULT ID3DX10Font::GetDescW([Out] D3DX10_FONT_DESCW* pDesc) + ID3DX10Font::GetDescW +
+ + +

Retrieve font characteristics.

+
+

Pointer to a structure, which contains font properties. If Unicode is defined, the function returns a structure. Otherwise, the function returns a structure.

+

Nonzero if the function is successful; otherwise 0.

+ + bb173893 + BOOL ID3DX10Font::GetTextMetricsW([In] void* pTextMetrics) + ID3DX10Font::GetTextMetricsW +
+ + +

Return a handle to a display device context (DC) that has the font set onto it.

+
+

Handle to a display DC.

+ + bb173889 + HDC ID3DX10Font::GetDC() + ID3DX10Font::GetDC +
+ + +

Return information about the placement and orientation of a glyph in a character cell.

+
+

Glyph identifier.

+

Address of a reference to a ID3D10Texture object that contains the glyph.

+

Pointer to the smallest rectangle object that completely encloses the glyph. See .

+

Pointer to the two-dimensional vector that connects the origin of the current character cell to the origin of the next character cell. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb173892 + HRESULT ID3DX10Font::GetGlyphData([In] unsigned int Glyph,[Out] ID3D10ShaderResourceView** ppTexture,[Out] RECT* pBlackBox,[Out] POINT* pCellInc) + ID3DX10Font::GetGlyphData +
+ + +

Load a series of characters into video memory to improve the efficiency of rendering to the device.

+
+

ID of the first character to be loaded into video memory.

+

ID of the last character to be loaded into video memory.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

This method generates textures containing glyphs that represent the input characters. The glyphs are drawn as a series of triangles.

Characters will not be rendered to the device; must still be called to render the characters. However, by pre-loading characters into video memory, will use substantially fewer CPU resources.

This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.

+
+ + bb173894 + HRESULT ID3DX10Font::PreloadCharacters([In] unsigned int First,[In] unsigned int Last) + ID3DX10Font::PreloadCharacters +
+ + +

Load a series of glyphs into video memory to improve the efficiency of rendering to the device.

+
+

ID of the first glyph to be loaded into video memory.

+

ID of the last glyph to be loaded into video memory.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

This method generates textures that contain the input glyphs. The glyphs are drawn as a series of triangles.

Glyphs will not be rendered to the device; must still be called to render the glyphs. However, by pre-loading glyphs into video memory, will use substantially fewer CPU resources.

+
+ + bb173895 + HRESULT ID3DX10Font::PreloadGlyphs([In] unsigned int First,[In] unsigned int Last) + ID3DX10Font::PreloadGlyphs +
+ + +

Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings.

+
+

Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks.

+

Number of characters in the text string.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used.

This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles.

Text will not be rendered to the device; must still be called to render the text. However, by preloading text into video memory, will use substantially fewer CPU resources.

This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.

+
+ + bb173896 + HRESULT ID3DX10Font::PreloadTextW([In] const wchar_t* pString,[In] int Count) + ID3DX10Font::PreloadTextW +
+ + +

Draw formatted text. This method supports ANSI and Unicode strings.

+
+

Pointer to an object that contains the string you wish to draw. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if is to be called more than once in a row.

+

Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be null terminated.

+

The number of characters in the string. If Count is -1, then the pString parameter is assumed to be a reference to a sprite containing a null-terminated string and computes the character count automatically.

+

Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. As with any object, the coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top.

+

Specify the method of formatting the text. It can be any combination of the following values:

ItemDescription

DT_BOTTOM

Justify the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE.

DT_CALCRECT

Tell DrawText to automatically calculate the width and height of the rectangle based on the length of the string you tell it to draw. If there are multiple lines of text, uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, modifies the right side of the rectangle so that it bounds the last character in the line. In either case, returns the height of the formatted text but does not draw the text.

DT_CENTER

Center text horizontally in the rectangle.

DT_EXPANDTABS

Expand tab characters. The default number of characters per tab is eight.

DT_LEFT

Align text to the left.

DT_NOCLIP

Draw without clipping. is somewhat faster when DT_NOCLIP is used.

DT_RIGHT

Align text to the right.

DT_RTLREADING

Display text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right.

DT_SINGLELINE

Display text on a single line only. Carriage returns and line feeds do not break the line.

DT_TOP

Top-justify text.

DT_VCENTER

Center text vertically (single line only).

DT_WORDBREAK

Break words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line.

?

+

Color of the text. See .

+

If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero.

+ +

The parameters of this method are very similar to those of the GDI DrawText function.

This method supports both ANSI and Unicode strings.

Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.

If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.

This method supports only fonts whose escapement and orientation are both zero.

+
+ + bb173887 + int ID3DX10Font::DrawTextW([In] ID3DX10Sprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DXCOLOR Color) + ID3DX10Font::DrawTextW +
+ + +

Retrieve the Direct3D device associated with the font object.

+
+ +

Note??Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+
+ + bb173891 + GetDevice + GetDevice + HRESULT ID3DX10Font::GetDevice([Out] ID3D10Device** ppDevice) +
+ + +

Get a description of the current font object.

+
+ +

This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DX10FONT_DESCA structure.

+
+ + bb173890 + GetDescW + GetDescW + HRESULT ID3DX10Font::GetDescW([Out] D3DX10_FONT_DESCW* pDesc) +
+ + +

Return a handle to a display device context (DC) that has the font set onto it.

+
+ + bb173889 + GetDC + GetDC + HDC ID3DX10Font::GetDC() +
+ + + Defines possible character sets for fonts. + + CHARSET + + + + The ANSI character set. + + + + + The Arabic character set. + + + + + The Baltic character set. + + + + + The Chinese character set. + + + + + The default system character set. + + + + + The East Europe character set. + + + + + The GB2312 character set. + + + + + The Greek character set. + + + + + The Hangul character set. + + + + + The Hebrew character set. + + + + + The Johab character set. + + + + + The Mac character set. + + + + + The OEM character set. + + + + + The Russian character set. + + + + + The ShiftJIS character set. + + + + + The symbol character set. + + + + + The Thai character set. + + + + + The Turkish character set. + + + + + The Vietnamese character set. + + + + + Specifies formatting options for text rendering. + + DT + + + + Align the text to the bottom. + + + + + Align the text to the center. + + + + + Expand tab characters. + + + + + Align the text to the left. + + + + + Don't clip the text. + + + + + Align the text to the right. + + + + + Rendering the text in right-to-left reading order. + + + + + Force all text to a single line. + + + + + Align the text to the top. + + + + + Vertically align the text to the center. + + + + + Allow word breaks. + + + + + Defines pitch and family settings for fonts. + + + + + Use the Decorative family. + + + + + Default pitch. + + + + + The font family doesn't matter. + + + + + Fixed pitch. + + + + + Use the Modern family. + + + + + Mono pitch. + + + + + Use the Roman family. + + + + + Use the Script family. + + + + + Use the Swiss family. + + + + + Variable pitch. + + + + + Defines precision levels for font rendering. + + OutPrecision + + + + Default + + + + + String + + + + + Character + + + + + Stroke + + + + + TrueType + + + + + Device + + + + + Raster + + + + + TrueTypeOnly + + + + + Outline + + + + + ScreenOutline + + + + + PostScriptOnly + + + + + Specifies quality options for font rendering. + + QUALITY + + + + Default + + + + + Draft + + + + + Proof + + + + + Non antialiased + + + + + Antialiased + + + + + ClearType + + + + + ClearTypeNatural + + + + + Specifies weights for font rendering. + + FW + + + + Use a black weight. + + + + + Use a bold weight. + + + + + Use a demi-bold weight. + + + + + The font weight doesn't matter. + + + + + Use an extra bold weight. + + + + + Make the font extra light. + + + + + Use a heavy weight. + + + + + Make the font light. + + + + + Use a medium weight. + + + + + Use a normal weight. + + + + + Use a regular weight. + + + + + Use a semi-bold weight. + + + + + Make the font thin. + + + + + Use an ultra bold weight. + + + + + Make the font ultra light. + + + + +Flags that defines the behavior of method . + + bb204887 + D3D10_ASYNC_GETDATA_FLAG + D3D10_ASYNC_GETDATA_FLAG + + + + No documentation. + + + bb204887 + D3D10_ASYNC_GETDATA_DONOTFLUSH + D3D10_ASYNC_GETDATA_DONOTFLUSH + + + + None. + + + None + None + + + +

Identifies how to bind a resource to the pipeline.

+
+ +

In general, binding flags can be combined using a logical OR (except the constant-buffer flag); however, you should use a single flag to allow the device to optimize the resource usage.

This enumeration is used by a:

  • Buffer description when creating a buffer.
  • Texture description when creating a texture (see or or ).

A shader-resource buffer is NOT a constant buffer; rather, it is a texture or buffer resource that is bound to a shader, that contains texture or buffer data (it is not limited to a single element type in the buffer). A shader-resource buffer is created with the flag and is bound to the pipeline using one of these APIs: , , or . Furthermore, a shader-resource buffer cannot use the flag.

+
+ + bb204891 + D3D10_BIND_FLAG + D3D10_BIND_FLAG +
+ + +

Bind a buffer as a vertex buffer to the input-assembler stage.

+
+ + bb204891 + D3D10_BIND_VERTEX_BUFFER + D3D10_BIND_VERTEX_BUFFER +
+ + +

Bind a buffer as an index buffer to the input-assembler stage.

+
+ + bb204891 + D3D10_BIND_INDEX_BUFFER + D3D10_BIND_INDEX_BUFFER +
+ + +

Bind a buffer as a constant buffer to a shader stage; this flag may NOT be combined with any other bind flag.

+
+ + bb204891 + D3D10_BIND_CONSTANT_BUFFER + D3D10_BIND_CONSTANT_BUFFER +
+ + +

Bind a buffer or texture to a shader stage; this flag cannot be used with the flag.

+
+ + bb204891 + D3D10_BIND_SHADER_RESOURCE + D3D10_BIND_SHADER_RESOURCE +
+ + +

Bind an output buffer for the stream-output stage.

+
+ + bb204891 + D3D10_BIND_STREAM_OUTPUT + D3D10_BIND_STREAM_OUTPUT +
+ + +

Bind a texture as a render target for the output-merger stage.

+
+ + bb204891 + D3D10_BIND_RENDER_TARGET + D3D10_BIND_RENDER_TARGET +
+ + +

Bind a texture as a depth-stencil target for the output-merger stage.

+
+ + bb204891 + D3D10_BIND_DEPTH_STENCIL + D3D10_BIND_DEPTH_STENCIL +
+ + + None. + + + None + None + + + +

RGB or alpha blending operation.

+
+ +

The runtime implements RGB blending and alpha blending separately. Therefore, blend state requires separate blend operations for RGB data and alpha data. These blend operations are specified in a blend description. The two sources ? source 1 and source 2 ? are shown in the blending block diagram.

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

+
+ + bb204894 + D3D10_BLEND_OP + D3D10_BLEND_OP +
+ + +

Add source 1 and source 2.

+
+ + bb204894 + D3D10_BLEND_OP_ADD + D3D10_BLEND_OP_ADD +
+ + +

Subtract source 1 from source 2.

+
+ + bb204894 + D3D10_BLEND_OP_SUBTRACT + D3D10_BLEND_OP_SUBTRACT +
+ + +

Subtract source 2 from source 1.

+
+ + bb204894 + D3D10_BLEND_OP_REV_SUBTRACT + D3D10_BLEND_OP_REV_SUBTRACT +
+ + +

Find the minimum of source 1 and source 2.

+
+ + bb204894 + D3D10_BLEND_OP_MIN + D3D10_BLEND_OP_MIN +
+ + +

Find the maximum of source 1 and source 2.

+
+ + bb204894 + D3D10_BLEND_OP_MAX + D3D10_BLEND_OP_MAX +
+ + +

Describes the blend state.

+
+ +

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
BlendEnable[8] (for all 8)
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask[8] (for all 8)

?

+
+ + bb204893 + D3D10_BLEND + D3D10_BLEND +
+ + +

Determines whether or not to use alpha-to-coverage as a multisampling technique when setting a pixel to a rendertarget.

+
+ + bb204893 + D3D10_BLEND_ZERO + D3D10_BLEND_ZERO +
+ + +

Enable (or disable) blending. There are eight elements in this array; these correspond to the eight rendertargets that can be set to output-merger stage at one time.

+
+ + bb204893 + D3D10_BLEND_ONE + D3D10_BLEND_ONE +
+ + +

This blend option specifies the first RGB data source and includes an optional pre-blend operation.

+
+ + bb204893 + D3D10_BLEND_SRC_COLOR + D3D10_BLEND_SRC_COLOR +
+ + +

This blend option specifies the second RGB data source and includes an optional pre-blend operation.

+
+ + bb204893 + D3D10_BLEND_INV_SRC_COLOR + D3D10_BLEND_INV_SRC_COLOR +
+ + +

This blend operation defines how to combine the RGB data sources.

+
+ + bb204893 + D3D10_BLEND_SRC_ALPHA + D3D10_BLEND_SRC_ALPHA +
+ + +

This blend option specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

+
+ + bb204893 + D3D10_BLEND_INV_SRC_ALPHA + D3D10_BLEND_INV_SRC_ALPHA +
+ + +

This blend option specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

+
+ + bb204893 + D3D10_BLEND_DEST_ALPHA + D3D10_BLEND_DEST_ALPHA +
+ + +

This blend operation defines how to combine the alpha data sources.

+
+ + bb204893 + D3D10_BLEND_INV_DEST_ALPHA + D3D10_BLEND_INV_DEST_ALPHA +
+ + +

A per-pixel write mask that allows control over which components can be written (see ).

+
+ + bb204893 + D3D10_BLEND_DEST_COLOR + D3D10_BLEND_DEST_COLOR +
+ + + No documentation. + + + bb204893 + D3D10_BLEND_INV_DEST_COLOR + D3D10_BLEND_INV_DEST_COLOR + + + + No documentation. + + + bb204893 + D3D10_BLEND_SRC_ALPHA_SAT + D3D10_BLEND_SRC_ALPHA_SAT + + + + No documentation. + + + bb204893 + D3D10_BLEND_BLEND_FACTOR + D3D10_BLEND_BLEND_FACTOR + + + + No documentation. + + + bb204893 + D3D10_BLEND_INV_BLEND_FACTOR + D3D10_BLEND_INV_BLEND_FACTOR + + + + No documentation. + + + bb204893 + D3D10_BLEND_SRC1_COLOR + D3D10_BLEND_SRC1_COLOR + + + + No documentation. + + + bb204893 + D3D10_BLEND_INV_SRC1_COLOR + D3D10_BLEND_INV_SRC1_COLOR + + + + No documentation. + + + bb204893 + D3D10_BLEND_SRC1_ALPHA + D3D10_BLEND_SRC1_ALPHA + + + + No documentation. + + + bb204893 + D3D10_BLEND_INV_SRC1_ALPHA + D3D10_BLEND_INV_SRC1_ALPHA + + + +

These flags are used by functions which operate on one or more channels in a texture.

+
+ + bb172690 + D3DX10_CHANNEL_FLAG + D3DX10_CHANNEL_FLAG +
+ + +

Indicates the red channel should be used.

+
+ + bb172690 + D3DX10_CHANNEL_RED + D3DX10_CHANNEL_RED +
+ + +

Indicates the blue channel should be used.

+
+ + bb172690 + D3DX10_CHANNEL_BLUE + D3DX10_CHANNEL_BLUE +
+ + +

Indicates the green channel should be used.

+
+ + bb172690 + D3DX10_CHANNEL_GREEN + D3DX10_CHANNEL_GREEN +
+ + +

Indicates the alpha channel should be used.

+
+ + bb172690 + D3DX10_CHANNEL_ALPHA + D3DX10_CHANNEL_ALPHA +
+ + +

Indicates the luminaces of the red, green, and blue channels should be used.

+
+ + bb172690 + D3DX10_CHANNEL_LUMINANCE + D3DX10_CHANNEL_LUMINANCE +
+ + + None. + + + None + None + + + +

Identify which components of each pixel of a render target are writable during blending.

+
+ +

These flags can be combined with a bitwise OR.

+
+ + bb204901 + D3D10_COLOR_WRITE_ENABLE + D3D10_COLOR_WRITE_ENABLE +
+ + + No documentation. + + + bb204901 + D3D10_COLOR_WRITE_ENABLE_RED + D3D10_COLOR_WRITE_ENABLE_RED + + + + No documentation. + + + bb204901 + D3D10_COLOR_WRITE_ENABLE_GREEN + D3D10_COLOR_WRITE_ENABLE_GREEN + + + + No documentation. + + + bb204901 + D3D10_COLOR_WRITE_ENABLE_BLUE + D3D10_COLOR_WRITE_ENABLE_BLUE + + + + No documentation. + + + bb204901 + D3D10_COLOR_WRITE_ENABLE_ALPHA + D3D10_COLOR_WRITE_ENABLE_ALPHA + + + + No documentation. + + + bb204901 + D3D10_COLOR_WRITE_ENABLE_ALL + D3D10_COLOR_WRITE_ENABLE_ALL + + + +

Comparison options.

+
+ +

A comparison option determines whether how the runtime compares source (new) data against destination (existing) data before storing the new data. The comparison option is declared in a description before an object is created. The API allows you to set a comparison option for a depth-stencil buffer (see ), depth-stencil operations (see ), or sampler state (see ).

+
+ + bb204902 + D3D10_COMPARISON_FUNC + D3D10_COMPARISON_FUNC +
+ + +

Never pass the comparison.

+
+ + bb204902 + D3D10_COMPARISON_NEVER + D3D10_COMPARISON_NEVER +
+ + +

If the source data is less than the destination data, the comparison passes.

+
+ + bb204902 + D3D10_COMPARISON_LESS + D3D10_COMPARISON_LESS +
+ + +

If the source data is equal to the destination data, the comparison passes.

+
+ + bb204902 + D3D10_COMPARISON_EQUAL + D3D10_COMPARISON_EQUAL +
+ + +

If the source data is less than or equal to the destination data, the comparison passes.

+
+ + bb204902 + D3D10_COMPARISON_LESS_EQUAL + D3D10_COMPARISON_LESS_EQUAL +
+ + +

If the source data is greater than the destination data, the comparison passes.

+
+ + bb204902 + D3D10_COMPARISON_GREATER + D3D10_COMPARISON_GREATER +
+ + +

If the source data is not equal to the destination data, the comparison passes.

+
+ + bb204902 + D3D10_COMPARISON_NOT_EQUAL + D3D10_COMPARISON_NOT_EQUAL +
+ + +

If the source data is greater than or equal to the destination data, the comparison passes.

+
+ + bb204902 + D3D10_COMPARISON_GREATER_EQUAL + D3D10_COMPARISON_GREATER_EQUAL +
+ + +

Always pass the comparison.

+
+ + bb204902 + D3D10_COMPARISON_ALWAYS + D3D10_COMPARISON_ALWAYS +
+ + +

Performance counter types.

+
+ +

In addition to these performance counters, independent hardware vendors may define their own set of performance counters for their devices. The enum values for these counters would start after and would be defined by those hardware vendors.

A device can support one or more of these performance counters, but it is not required to support any of them.

+
+ + bb204904 + D3D10_COUNTER + D3D10_COUNTER +
+ + +

Percentage of the time that the GPU is idle.

+
+ + bb204904 + D3D10_COUNTER_GPU_IDLE + D3D10_COUNTER_GPU_IDLE +
+ + +

Percentage of the time that the GPU does vertex processing.

+
+ + bb204904 + D3D10_COUNTER_VERTEX_PROCESSING + D3D10_COUNTER_VERTEX_PROCESSING +
+ + +

Percentage of the time that the GPU does geometry processing.

+
+ + bb204904 + D3D10_COUNTER_GEOMETRY_PROCESSING + D3D10_COUNTER_GEOMETRY_PROCESSING +
+ + +

Percentage of the time that the GPU does pixel processing.

+
+ + bb204904 + D3D10_COUNTER_PIXEL_PROCESSING + D3D10_COUNTER_PIXEL_PROCESSING +
+ + +

Percentage of the time that the GPU does other processing (not vertex, geometry, or pixel processing).

+
+ + bb204904 + D3D10_COUNTER_OTHER_GPU_PROCESSING + D3D10_COUNTER_OTHER_GPU_PROCESSING +
+ + +

Percentage of bandwidth used on a host adapter. Value returned by between 0.0 and 1.0 when using this counter.

+
+ + bb204904 + D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION + D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION +
+ + +

Percentage of bandwidth used by the local video memory. Value returned by between 0.0 and 1.0 when using this counter

+
+ + bb204904 + D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION + D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION +
+ + +

Percentage of throughput used for vertices. Value returned by between 0.0 and 1.0 when using this counter

+
+ + bb204904 + D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION + D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION +
+ + +

Percentage of throughput used for triangle setup. Value returned by between 0.0 and 1.0 when using this counter

+
+ + bb204904 + D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION + D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION +
+ + +

Percentage of throughput used for the fillrate. Value returned by between 0.0 and 1.0 when using this counter.

+
+ + bb204904 + D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION + D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION +
+ + +

Percentage of time that a vertex shader spends sampling resources.

+
+ + bb204904 + D3D10_COUNTER_VS_MEMORY_LIMITED + D3D10_COUNTER_VS_MEMORY_LIMITED +
+ + +

Percentage of time that a vertex shader spends doing computations.

+
+ + bb204904 + D3D10_COUNTER_VS_COMPUTATION_LIMITED + D3D10_COUNTER_VS_COMPUTATION_LIMITED +
+ + +

Percentage of time that a geometry shader spends sampling resources.

+
+ + bb204904 + D3D10_COUNTER_GS_MEMORY_LIMITED + D3D10_COUNTER_GS_MEMORY_LIMITED +
+ + +

Percentage of time that a geometry shader spends doing computations.

+
+ + bb204904 + D3D10_COUNTER_GS_COMPUTATION_LIMITED + D3D10_COUNTER_GS_COMPUTATION_LIMITED +
+ + +

Percentage of time that a pixel shader spends sampling resources.

+
+ + bb204904 + D3D10_COUNTER_PS_MEMORY_LIMITED + D3D10_COUNTER_PS_MEMORY_LIMITED +
+ + +

Percentage of time that a pixel shader spends doing computations.

+
+ + bb204904 + D3D10_COUNTER_PS_COMPUTATION_LIMITED + D3D10_COUNTER_PS_COMPUTATION_LIMITED +
+ + +

Percentage of vertex data that was read from the vertex cache. For example, if 6 vertices were added to the cache and 3 of them were read from the cache, then the hit rate would be 0.5.

+
+ + bb204904 + D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE + D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE +
+ + +

Percentage of texel data that was read from the vertex cache. For example, if 6 texels were added to the cache and 3 of them were read from the cache, then the hit rate would be 0.5.

+
+ + bb204904 + D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE + D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE +
+ + +

Start of the device-dependent counters. See remarks.

+
+ + bb204904 + D3D10_COUNTER_DEVICE_DEPENDENT_0 + D3D10_COUNTER_DEVICE_DEPENDENT_0 +
+ + +

Data type of a performance counter.

+
+ +

These flags are an output parameter in .

+
+ + bb204907 + D3D10_COUNTER_TYPE + D3D10_COUNTER_TYPE +
+ + +

32-bit floating point.

+
+ + bb204907 + D3D10_COUNTER_TYPE_FLOAT32 + D3D10_COUNTER_TYPE_FLOAT32 +
+ + +

16-bit unsigned integer.

+
+ + bb204907 + D3D10_COUNTER_TYPE_UINT16 + D3D10_COUNTER_TYPE_UINT16 +
+ + +

32-bit unsigned integer.

+
+ + bb204907 + D3D10_COUNTER_TYPE_UINT32 + D3D10_COUNTER_TYPE_UINT32 +
+ + +

64-bit unsigned integer.

+
+ + bb204907 + D3D10_COUNTER_TYPE_UINT64 + D3D10_COUNTER_TYPE_UINT64 +
+ + +

Specifies the types of CPU access allowed for a resource.

+
+ +

This enumeration is used in , , , , and . See Creating Buffer Resources (Direct3D 10) for more details.

Applications can combine one or more of these flags with a bitwise OR. When possible, create resources with no CPU access flags, as this enables better resource optimization.

+
+ + bb204908 + D3D10_CPU_ACCESS_FLAG + D3D10_CPU_ACCESS_FLAG +
+ + +

The resource is to be mappable so that the CPU can change its contents. Resources created with this flag cannot be set as outputs of the pipeline and must be created with either dynamic or staging usage (see ).

+
+ + bb204908 + D3D10_CPU_ACCESS_WRITE + D3D10_CPU_ACCESS_WRITE +
+ + +

The resource is to be mappable so that the CPU can read its contents. Resources created with this flag cannot be set as either inputs or outputs to the pipeline and must be created with staging usage (see ).

+
+ + bb204908 + D3D10_CPU_ACCESS_READ + D3D10_CPU_ACCESS_READ +
+ + + None. + + + None + None + + + +

Indicates triangles facing a particular direction are not drawn.

+
+ +

This enumeration is part of a rasterizer-state object description (see ).

+
+ + bb204911 + D3D10_CULL_MODE + D3D10_CULL_MODE +
+ + +

Always draw all triangles.

+
+ + bb204911 + D3D10_CULL_NONE + D3D10_CULL_NONE +
+ + +

Do not draw triangles that are front-facing.

+
+ + bb204911 + D3D10_CULL_FRONT + D3D10_CULL_FRONT +
+ + +

Do not draw triangles that are back-facing.

+
+ + bb204911 + D3D10_CULL_BACK + D3D10_CULL_BACK +
+ + + No documentation. + + + D3D10_DEBUG_FEATURE_FLAGS + D3D10_DEBUG_FEATURE_FLAGS + + + + No documentation. + + + D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP + D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP + + + + No documentation. + + + D3D10_DEBUG_FEATURE_FINISH_PER_RENDER_OP + D3D10_DEBUG_FEATURE_FINISH_PER_RENDER_OP + + + + No documentation. + + + D3D10_DEBUG_FEATURE_PRESENT_PER_RENDER_OP + D3D10_DEBUG_FEATURE_PRESENT_PER_RENDER_OP + + + +

Specifies the parts of the depth stencil to clear. Usually used with .

+
+ +

These flags can be bitwise ORed together.

+
+ + bb204900 + D3D10_CLEAR_FLAG + D3D10_CLEAR_FLAG +
+ + + No documentation. + + + bb204900 + D3D10_CLEAR_DEPTH + D3D10_CLEAR_DEPTH + + + + No documentation. + + + bb204900 + D3D10_CLEAR_STENCIL + D3D10_CLEAR_STENCIL + + + +

Specifies how to access a resource used in a depth-stencil view.

+
+ +

This enumeration is used in to create a depth-stencil view.

+
+ + bb205043 + D3D10_DSV_DIMENSION + D3D10_DSV_DIMENSION +
+ + + No documentation. + + + bb205043 + D3D10_DSV_DIMENSION_UNKNOWN + D3D10_DSV_DIMENSION_UNKNOWN + + + + No documentation. + + + bb205043 + D3D10_DSV_DIMENSION_TEXTURE1D + D3D10_DSV_DIMENSION_TEXTURE1D + + + + No documentation. + + + bb205043 + D3D10_DSV_DIMENSION_TEXTURE1DARRAY + D3D10_DSV_DIMENSION_TEXTURE1DARRAY + + + + No documentation. + + + bb205043 + D3D10_DSV_DIMENSION_TEXTURE2D + D3D10_DSV_DIMENSION_TEXTURE2D + + + + No documentation. + + + bb205043 + D3D10_DSV_DIMENSION_TEXTURE2DARRAY + D3D10_DSV_DIMENSION_TEXTURE2DARRAY + + + + No documentation. + + + bb205043 + D3D10_DSV_DIMENSION_TEXTURE2DMS + D3D10_DSV_DIMENSION_TEXTURE2DMS + + + + No documentation. + + + bb205043 + D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY + D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY + + + +

Identify the portion of a depth-stencil buffer for writing depth data.

+
+ + bb205038 + D3D10_DEPTH_WRITE_MASK + D3D10_DEPTH_WRITE_MASK +
+ + + No documentation. + + + bb205038 + D3D10_DEPTH_WRITE_MASK_ZERO + D3D10_DEPTH_WRITE_MASK_ZERO + + + + No documentation. + + + bb205038 + D3D10_DEPTH_WRITE_MASK_ALL + D3D10_DEPTH_WRITE_MASK_ALL + + + +

Device creation flags.

+
+ +

Device creation flags are used by and .

An application might dynamically create (and destroy) threads to improve performance especially on a machine with multiple CPU cores. There may be cases, however, when an application needs to prevent extra threads from being created. This can happen when you want to simplify debugging, profile code or develop a tool for instance. For these cases, use to request that the runtime and video driver not create any additional threads that might interfere with the application.

+
+ + bb204909 + D3D10_CREATE_DEVICE_FLAG + D3D10_CREATE_DEVICE_FLAG +
+ + +

Use this flag if an application will only be calling D3D10 from a single thread. If this flag is not specified, the default behavior of D3D10 is to enter a lock during each API call to prevent multiple threads altering internal state. By using this flag no locks will be taken which can slightly increase performance, but could result in undefine behavior if D3D10 is called from multiple threads.

+
+ + bb204909 + D3D10_CREATE_DEVICE_SINGLETHREADED + D3D10_CREATE_DEVICE_SINGLETHREADED +
+ + +

Create a device that supports the debug layer.

+
+ + bb204909 + D3D10_CREATE_DEVICE_DEBUG + D3D10_CREATE_DEVICE_DEBUG +
+ + +

Create both a software (REF) and hardware (HAL) version of the device simultaneously, which allows an application to switch to a reference device to enable debugging. See Interface for more information.

+
+ + bb204909 + D3D10_CREATE_DEVICE_SWITCH_TO_REF + D3D10_CREATE_DEVICE_SWITCH_TO_REF +
+ + +

Prevents multiple threads from being created. When this flag is used with a WARP device, no additional threads will be created by WARP and all rasterization will occur on the calling thread. This flag is not recommended for general use. See remarks.

+
+ + bb204909 + D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS + D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS +
+ + +

Return a null reference instead of triggering an exception on memory exhaustion during invocations to Map. Without this flag an exception will be raised on memory exhaustion. Only valid on Winodws 7.

+
+ + bb204909 + D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP + D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP +
+ + +

Causes device creation to fail if BGRA support is not available.

BGRA support enables the following formats.

is only relevant when a device is created with or using the or feature levels, the flag will be ignored when a device is created with other feature levels.

Note that BGRA support may be present even if the application didn't specify . The flag merely causes device creation to fail if BGRA support isn't available.

is only valid on Windows 7, Windows Server 2008 R2, and updated Windows Vista (KB971644) systems.

+
+ + bb204909 + D3D10_CREATE_DEVICE_BGRA_SUPPORT + D3D10_CREATE_DEVICE_BGRA_SUPPORT +
+ + +

Reserved. This flag is currently not supported. Do not use.

+
+ + bb204909 + D3D10_CREATE_DEVICE_STRICT_VALIDATION + D3D10_CREATE_DEVICE_STRICT_VALIDATION +
+ + + None. + + + None + None + + + +

The device-driver type.

+
+ +

The device-driver type needs to be specified when the device is created (using or ).

For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.

+
+ + bb205042 + D3D10_DRIVER_TYPE + D3D10_DRIVER_TYPE +
+ + +

A hardware device; commonly called a HAL device.

+
+ + bb205042 + D3D10_DRIVER_TYPE_HARDWARE + D3D10_DRIVER_TYPE_HARDWARE +
+ + +

A reference device; commonly called a REF device.

+
+ + bb205042 + D3D10_DRIVER_TYPE_REFERENCE + D3D10_DRIVER_TYPE_REFERENCE +
+ + +

A null device; which is a reference device without render capability.

+
+ + bb205042 + D3D10_DRIVER_TYPE_NULL + D3D10_DRIVER_TYPE_NULL +
+ + +

Reserved for later use.

+
+ + bb205042 + D3D10_DRIVER_TYPE_SOFTWARE + D3D10_DRIVER_TYPE_SOFTWARE +
+ + +

A WARP driver, which is a high-performance software rasterizer. The rasterizer supports feature level 9_1 through level 10.1 with a high performance software implementation when hardware is not available. For more information about using a WARP driver, see Windows Advanced Rasterization Platform (WARP) In-Depth Guide. Note that WARP is only available with the DirectX 11 Runtime (Windows 7, Windows Server 2008 R2, updated Windows Vista [KB971644]).

+
+ + bb205042 + D3D10_DRIVER_TYPE_WARP + D3D10_DRIVER_TYPE_WARP +
+ + +

Describes an effect variable.

+
+ +

To get an effect-variable description, call .

+
+ + bb205056 + D3D10_EFFECT_VARIABLE_FLAGS + D3D10_EFFECT_VARIABLE_FLAGS +
+ + +

A string that contains the variable name.

+
+ + bb205056 + D3D10_EFFECT_VARIABLE_POOLED + D3D10_EFFECT_VARIABLE_POOLED +
+ + +

The semantic attached to the variable; otherwise null.

+
+ + bb205056 + D3D10_EFFECT_VARIABLE_ANNOTATION + D3D10_EFFECT_VARIABLE_ANNOTATION +
+ + +

Optional flags for effect variables.

+
+ + bb205056 + D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT + D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT +
+ + + None. + + + None + None + + + +

The version of hardware acceleration requested.

+
+ +

Use this enumeration when creating a device with or .

Note that 10level9 feature levels 9_1, 9_2, and 9_3 are only available with the Direct3D 11 runtime (Windows?7, Windows Server?2008?R2, updated Windows?Vista with Service Pack?2 (SP2) [KB 971644], and updated Windows Server?2008 [KB 971512]).

For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.

For an overview of the capabilities of each feature level, see Overview For Each Feature Level.

+
+ + bb694529 + D3D10_FEATURE_LEVEL1 + D3D10_FEATURE_LEVEL1 +
+ + +

The hardware supports Direct3D 10.0 features.

+
+ + bb694529 + D3D10_FEATURE_LEVEL_10_0 + D3D10_FEATURE_LEVEL_10_0 +
+ + +

The hardware supports Direct3D 10.1 features.

+
+ + bb694529 + D3D10_FEATURE_LEVEL_10_1 + D3D10_FEATURE_LEVEL_10_1 +
+ + +

The hardware supports 9.1 feature level.

+
+ + bb694529 + D3D10_FEATURE_LEVEL_9_1 + D3D10_FEATURE_LEVEL_9_1 +
+ + +

The hardware supports 9.2 feature level.

+
+ + bb694529 + D3D10_FEATURE_LEVEL_9_2 + D3D10_FEATURE_LEVEL_9_2 +
+ + +

The hardware supports 9.3 feature level.

+
+ + bb694529 + D3D10_FEATURE_LEVEL_9_3 + D3D10_FEATURE_LEVEL_9_3 +
+ + +

Determines the fill mode to use when rendering triangles.

+
+ +

This enumeration is part of a rasterizer-state object description (see ).

+
+ + bb205059 + D3D10_FILL_MODE + D3D10_FILL_MODE +
+ + +

Draw lines connecting the vertices. Adjacent vertices are not drawn.

+
+ + bb205059 + D3D10_FILL_WIREFRAME + D3D10_FILL_WIREFRAME +
+ + +

Fill the triangles formed by the vertices. Adjacent vertices are not drawn.

+
+ + bb205059 + D3D10_FILL_SOLID + D3D10_FILL_SOLID +
+ + +

Filtering options during texture sampling.

+
+ +

During texture sampling, one or more texels are read and combined (this is calling filtering) to produce a single value. Point sampling reads a single texel while linear sampling reads two texels (endpoints) and linearly interpolates a third value between the endpoints.

HLSL texture-sampling functions also support comparison filtering during texture sampling. Comparison filtering compares each sampled texel against a comparison value. The boolean result is blended the same way that normal texture filtering is blended.

You can use HLSL intrinsic texture-sampling functions that implement texture filtering only or companion functions that use texture filtering with comparison filtering.

Texture Sampling FunctionTexture Sampling Function with Comparison Filtering
sample samplecmp or samplecmplevelzero

?

Comparison filters only work with textures that have the following formats: R32_FLOAT_X8X24_TYPELESS, R32_FLOAT, R24_UNORM_X8_TYPELESS, R16_UNORM.

+
+ + bb205060 + D3D10_FILTER + D3D10_FILTER +
+ + +

Use point sampling for minification, magnification, and mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_MAG_MIP_POINT + D3D10_FILTER_MIN_MAG_MIP_POINT +
+ + +

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR + D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR +
+ + +

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT + D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT +
+ + +

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR + D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR +
+ + +

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT + D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT +
+ + +

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR + D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR +
+ + +

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT + D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT +
+ + +

Use linear interpolation for minification, magnification, and mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_MIN_MAG_MIP_LINEAR + D3D10_FILTER_MIN_MAG_MIP_LINEAR +
+ + +

Use anisotropic interpolation for minification, magnification, and mip-level sampling.

+
+ + bb205060 + D3D10_FILTER_ANISOTROPIC + D3D10_FILTER_ANISOTROPIC +
+ + +

Use point sampling for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT + D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT +
+ + +

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR + D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR +
+ + +

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT + D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT +
+ + +

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR + D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR +
+ + +

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT + D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT +
+ + +

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR + D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR +
+ + +

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT + D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT +
+ + +

Use linear interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR + D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR +
+ + +

Use anisotropic interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

+
+ + bb205060 + D3D10_FILTER_COMPARISON_ANISOTROPIC + D3D10_FILTER_COMPARISON_ANISOTROPIC +
+ + +

For use in pixel shaders with textures that have the R1_UNORM format.

+
+ + bb205060 + D3D10_FILTER_TEXT_1BIT + D3D10_FILTER_TEXT_1BIT +
+ + +

Texture filtering flags.

+
+ +

D3DX10 automatically performs gamma correction (to convert color data from RGB space to standard RGB space) when loading texture data. This is automatically done for instance when RGB data is loaded from a .png file into an sRGB texture. Use the SRGB filter flags to indicate if the data does not need to be converted into sRGB space.

+
+ + bb172692 + D3DX10_FILTER_FLAG + D3DX10_FILTER_FLAG +
+ + +

No scaling or filtering will take place. Pixels outside the bounds of the source image are assumed to be transparent black.

+
+ + bb172692 + D3DX10_FILTER_NONE + D3DX10_FILTER_NONE +
+ + +

Each destination pixel is computed by sampling the nearest pixel from the source image.

+
+ + bb172692 + D3DX10_FILTER_POINT + D3DX10_FILTER_POINT +
+ + +

Each destination pixel is computed by sampling the four nearest pixels from the source image. This filter works best when the scale on both axes is less than two.

+
+ + bb172692 + D3DX10_FILTER_LINEAR + D3DX10_FILTER_LINEAR +
+ + +

Every pixel in the source image contributes equally to the destination image. This is the slowest of the filters.

+
+ + bb172692 + D3DX10_FILTER_TRIANGLE + D3DX10_FILTER_TRIANGLE +
+ + +

Each pixel is computed by averaging a 2x2(x2) box of pixels from the source image. This filter works only when the dimensions of the destination are half those of the source, as is the case with mipmaps.

+
+ + bb172692 + D3DX10_FILTER_BOX + D3DX10_FILTER_BOX +
+ + +

Pixels off the edge of the texture on the u-axis should be mirrored, not wrapped.

+
+ + bb172692 + D3DX10_FILTER_MIRROR_U + D3DX10_FILTER_MIRROR_U +
+ + +

Pixels off the edge of the texture on the v-axis should be mirrored, not wrapped.

+
+ + bb172692 + D3DX10_FILTER_MIRROR_V + D3DX10_FILTER_MIRROR_V +
+ + +

Pixels off the edge of the texture on the w-axis should be mirrored, not wrapped.

+
+ + bb172692 + D3DX10_FILTER_MIRROR_W + D3DX10_FILTER_MIRROR_W +
+ + +

Specifying this flag is the same as specifying the , , and flags.

+
+ + bb172692 + D3DX10_FILTER_MIRROR + D3DX10_FILTER_MIRROR +
+ + +

The resulting image must be dithered using a 4x4 ordered dither algorithm. This happens when converting from one format to another.

+
+ + bb172692 + D3DX10_FILTER_DITHER + D3DX10_FILTER_DITHER +
+ + +

Do diffuse dithering on the image when changing from one format to another.

+
+ + bb172692 + D3DX10_FILTER_DITHER_DIFFUSION + D3DX10_FILTER_DITHER_DIFFUSION +
+ + +

Input data is in standard RGB (sRGB) color space. See remarks.

+
+ + bb172692 + D3DX10_FILTER_SRGB_IN + D3DX10_FILTER_SRGB_IN +
+ + +

Output data is in standard RGB (sRGB) color space. See remarks.

+
+ + bb172692 + D3DX10_FILTER_SRGB_OUT + D3DX10_FILTER_SRGB_OUT +
+ + +

Same as specifying | . See remarks.

+
+ + bb172692 + D3DX10_FILTER_SRGB + D3DX10_FILTER_SRGB +
+ + +

Types of magnification or minification sampler filters.

+
+ + bb205061 + D3D10_FILTER_TYPE + D3D10_FILTER_TYPE +
+ + +

Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture.

+
+ + bb205061 + D3D10_FILTER_TYPE_POINT + D3D10_FILTER_TYPE_POINT +
+ + +

Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures.

+
+ + bb205061 + D3D10_FILTER_TYPE_LINEAR + D3D10_FILTER_TYPE_LINEAR +
+ + +

Which resources are supported for a given format and given device (see ).

+
+ + bb205063 + D3D10_FORMAT_SUPPORT + D3D10_FORMAT_SUPPORT +
+ + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_BUFFER + D3D10_FORMAT_SUPPORT_BUFFER + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER + D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER + D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_SO_BUFFER + D3D10_FORMAT_SUPPORT_SO_BUFFER + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_TEXTURE1D + D3D10_FORMAT_SUPPORT_TEXTURE1D + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_TEXTURE2D + D3D10_FORMAT_SUPPORT_TEXTURE2D + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_TEXTURE3D + D3D10_FORMAT_SUPPORT_TEXTURE3D + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_TEXTURECUBE + D3D10_FORMAT_SUPPORT_TEXTURECUBE + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_SHADER_LOAD + D3D10_FORMAT_SUPPORT_SHADER_LOAD + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_MIP + D3D10_FORMAT_SUPPORT_MIP + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_MIP_AUTOGEN + D3D10_FORMAT_SUPPORT_MIP_AUTOGEN + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_RENDER_TARGET + D3D10_FORMAT_SUPPORT_RENDER_TARGET + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_BLENDABLE + D3D10_FORMAT_SUPPORT_BLENDABLE + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_DEPTH_STENCIL + D3D10_FORMAT_SUPPORT_DEPTH_STENCIL + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_CPU_LOCKABLE + D3D10_FORMAT_SUPPORT_CPU_LOCKABLE + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE + D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_DISPLAY + D3D10_FORMAT_SUPPORT_DISPLAY + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT + D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET + D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD + D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_SHADER_GATHER + D3D10_FORMAT_SUPPORT_SHADER_GATHER + + + + No documentation. + + + bb205063 + D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST + D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST + + + + None. + + + None + None + + + +

Image file formats supported by D3DXCreatexxx and D3DX10Savexxx functions.

+
+ +

See Types of Bitmaps (GDI+) for more information on some of these formats.

D3DX10 makes use of the Windows Imaging Component to implement the majority of the supported bitmap file types. See Windows Imaging Component Overview for additional information. +

+
+ + bb172694 + D3DX10_IMAGE_FILE_FORMAT + D3DX10_IMAGE_FILE_FORMAT +
+ + +

Windows bitmap (BMP) file format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette. The file extension for this format is .bmp.

+
+ + bb172694 + D3DX10_IFF_BMP + D3DX10_IFF_BMP +
+ + +

Joint Photographic Experts Group (JPEG) compressed file format. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files. The file extension for this format is .jpg.

+
+ + bb172694 + D3DX10_IFF_JPG + D3DX10_IFF_JPG +
+ + +

Portable Network Graphics (PNG) file format. A non-proprietary bitmap format using lossless compression. The file extension for this format is .png.

+
+ + bb172694 + D3DX10_IFF_PNG + D3DX10_IFF_PNG +
+ + +

DirectDraw surface (DDS) file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. The file extension for this format is .dds.

+
+ + bb172694 + D3DX10_IFF_DDS + D3DX10_IFF_DDS +
+ + +

Tagged Image File Format (TIFF). The file extensions for this format are .tif and .tiff.

+
+ + bb172694 + D3DX10_IFF_TIFF + D3DX10_IFF_TIFF +
+ + +

Graphics Interchange Format (GIF).The file extension for this format is .gif.

+
+ + bb172694 + D3DX10_IFF_GIF + D3DX10_IFF_GIF +
+ + +

Windows Media Photo format (WMP). This format is also known as HD Photo and JPEG XR. The file extensions for this format are .hdp, .jxr, and .wdp.

To work properly, requires that you initialize COM. Therefore, call CoInitialize or CoInitializeEx in your application before you call D3DX.

+
+ + bb172694 + D3DX10_IFF_WMP + D3DX10_IFF_WMP +
+ + +

Type of data contained in an input slot.

+
+ +

Use these values to specify the type of data for a particular input element (see ) of an input-layout object.

+
+ + bb205315 + D3D10_INPUT_CLASSIFICATION + D3D10_INPUT_CLASSIFICATION +
+ + +

Input data is per-vertex data.

+
+ + bb205315 + D3D10_INPUT_PER_VERTEX_DATA + D3D10_INPUT_PER_VERTEX_DATA +
+ + +

Input data is per-instance data.

+
+ + bb205315 + D3D10_INPUT_PER_INSTANCE_DATA + D3D10_INPUT_PER_INSTANCE_DATA +
+ + +

Specifies how the CPU should respond when Map is called on a resource being used by the GPU.

+
+ +

This enumeration is used by , , , and .

cannot be used with or D3D10_MAP_WRITE_NOOVERWRITE.

For more information about potential conflicts between the GPU and CPU during resource mapping, see Copying and Accessing Resource Data (Direct3D 10).

+
+ + bb205321 + D3D10_MAP_FLAG + D3D10_MAP_FLAG +
+ + +

Specifies that Map should return when the GPU blocks the CPU from accessing a resource.

+
+ + bb205321 + D3D10_MAP_FLAG_DO_NOT_WAIT + D3D10_MAP_FLAG_DO_NOT_WAIT +
+ + + None. + + + None + None + + + +

Identifies a resource to be accessed for reading and writing by the CPU. Applications may combine one or more of these flags.

+
+ +

This enumeration is used in , , , and .

These remarks are divided into the following topics:

  • Meaning
  • Common
+
+ + bb205318 + D3D10_MAP + D3D10_MAP +
+ + +

Resource is mapped for reading. The resource must have been created with read access (see ).

+
+ + bb205318 + D3D10_MAP_READ + D3D10_MAP_READ +
+ + +

Resource is mapped for writing. The resource must have been created with write access (see ).

+
+ + bb205318 + D3D10_MAP_WRITE + D3D10_MAP_WRITE +
+ + +

Resource is mapped for reading and writing. The resource must have been created with read and write access (see and ).

+
+ + bb205318 + D3D10_MAP_READ_WRITE + D3D10_MAP_READ_WRITE +
+ + +

Resource is mapped for writing; the previous contents of the resource will be undefined. The resource must have been created with write access (see ).

+
+ + bb205318 + D3D10_MAP_WRITE_DISCARD + D3D10_MAP_WRITE_DISCARD +
+ + +

Resource is mapped for writing; the existing contents of the resource cannot be overwritten (see Remarks). This flag is only valid on vertex and index buffers. The resource must have been created with write access (see ). Cannot be used on a resource created with the flag.

+
+ + bb205318 + D3D10_MAP_WRITE_NO_OVERWRITE + D3D10_MAP_WRITE_NO_OVERWRITE +
+ + +

Specifies which pieces of mesh data to discard from the device. Used with .

+
+ + bb172700 + D3DX10_MESH_DISCARD_FLAGS + D3DX10_MESH_DISCARD_FLAGS +
+ + + No documentation. + + + bb172700 + D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER + D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER + + + + No documentation. + + + bb172700 + D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE + D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE + + + + No documentation. + + + bb172700 + D3DX10_MESH_DISCARD_POINTREPS + D3DX10_MESH_DISCARD_POINTREPS + + + + No documentation. + + + bb172700 + D3DX10_MESH_DISCARD_ADJACENCY + D3DX10_MESH_DISCARD_ADJACENCY + + + + No documentation. + + + bb172700 + D3DX10_MESH_DISCARD_DEVICE_BUFFERS + D3DX10_MESH_DISCARD_DEVICE_BUFFERS + + + +

Flags used to specify creation options for a mesh.

+
+ +

A 32-bit mesh () can theoretically support (232)-1 faces and vertices. However, allocating memory for a mesh that large on a 32-bit operating system is not practical.

+
+ + bb172698 + _D3DX10_MESH + _D3DX10_MESH +
+ + +

The mesh has 32-bit indices instead of 16-bit indices. See Remarks.

+
+ + bb172698 + D3DX10_MESH_32_BIT + D3DX10_MESH_32_BIT +
+ + +

Signals that the mesh contains geometry shader adjacency data.

+
+ + bb172698 + D3DX10_MESH_GS_ADJACENCY + D3DX10_MESH_GS_ADJACENCY +
+ + + None. + + + None + None + + + +

Specifies the type of mesh optimization to be performed.

+
+ +

The and optimization flags are mutually exclusive.

The D3DXMESHOPT_SHAREVB flag has been removed from this enumeration. Use instead, in D3DXMESH.

+
+ + bb172699 + _D3DX10_MESHOPT + _D3DX10_MESHOPT +
+ + +

Reorders faces to remove unused vertices and faces.

+
+ + bb172699 + D3DX10_MESHOPT_COMPACT + D3DX10_MESHOPT_COMPACT +
+ + +

Reorders faces to optimize for fewer attribute bundle state changes and enhanced DrawSubset performance.

+
+ + bb172699 + D3DX10_MESHOPT_ATTR_SORT + D3DX10_MESHOPT_ATTR_SORT +
+ + +

Reorders faces to increase the cache hit rate of vertex caches.

+
+ + bb172699 + D3DX10_MESHOPT_VERTEX_CACHE + D3DX10_MESHOPT_VERTEX_CACHE +
+ + +

Reorders faces to maximize length of adjacent triangles.

+
+ + bb172699 + D3DX10_MESHOPT_STRIP_REORDER + D3DX10_MESHOPT_STRIP_REORDER +
+ + +

Optimize the faces only; do not optimize the vertices.

+
+ + bb172699 + D3DX10_MESHOPT_IGNORE_VERTS + D3DX10_MESHOPT_IGNORE_VERTS +
+ + +

While attribute sorting, do not split vertices that are shared between attribute groups.

+
+ + bb172699 + D3DX10_MESHOPT_DO_NOT_SPLIT + D3DX10_MESHOPT_DO_NOT_SPLIT +
+ + +

Affects the vertex cache size. Using this flag specifies a default vertex cache size that works well on legacy hardware.

+
+ + bb172699 + D3DX10_MESHOPT_DEVICE_INDEPENDENT + D3DX10_MESHOPT_DEVICE_INDEPENDENT +
+ + +

Categories of debug messages. This will identify the category of a message when retrieving a message with and when adding a message with . When creating an info queue filter, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.

+
+ +

This is part of the Information Queue feature. See Interface.

+
+ + bb205323 + D3D10_MESSAGE_CATEGORY + D3D10_MESSAGE_CATEGORY +
+ + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED + D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_MISCELLANEOUS + D3D10_MESSAGE_CATEGORY_MISCELLANEOUS + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_INITIALIZATION + D3D10_MESSAGE_CATEGORY_INITIALIZATION + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_CLEANUP + D3D10_MESSAGE_CATEGORY_CLEANUP + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_COMPILATION + D3D10_MESSAGE_CATEGORY_COMPILATION + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_STATE_CREATION + D3D10_MESSAGE_CATEGORY_STATE_CREATION + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_STATE_SETTING + D3D10_MESSAGE_CATEGORY_STATE_SETTING + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_STATE_GETTING + D3D10_MESSAGE_CATEGORY_STATE_GETTING + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY_EXECUTION + D3D10_MESSAGE_CATEGORY_EXECUTION + + + +

Debug messages for setting up an info-queue filter (see ); use these messages to allow or deny message categories to pass through the storage and retrieval filters. These IDs are used by methods such as or .

+
+ + bb205324 + D3D10_MESSAGE_ID + D3D10_MESSAGE_ID +
+ + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_UNKNOWN + D3D10_MESSAGE_ID_UNKNOWN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD + D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD + D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD + D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD + D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD + D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD + D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD + D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD + D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_STRING_FROM_APPLICATION + D3D10_MESSAGE_ID_STRING_FROM_APPLICATION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_THIS + D3D10_MESSAGE_ID_CORRUPTED_THIS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15 + D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING + D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY + D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT + D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA + D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA + D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN + D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS + D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS + D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY + D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS + D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC + D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS + D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION + D3D10_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN + D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC + D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION + D3D10_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN + D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC + D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION + D3D10_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN + D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC + D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION + D3D10_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY + D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE + D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE + D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY + D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE + D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE + D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK + D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS + D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC + D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED + D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED + D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER + D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER + D3D10_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED + D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY + D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY + D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER + D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED + D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY + D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT + D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR + D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH + D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH + D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID + D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY + D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY + D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY + D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY + D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY + D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY + D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID + D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE + D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE + D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE + D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE + D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE + D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX + D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE + D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID + D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE + D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS + D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED + D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN + D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED + D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE + D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE + D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS + D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED + D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN + D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE + D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED + D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE + D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE + D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS + D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED + D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN + D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE + D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED + D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE + D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE + D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS + D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED + D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN + D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE + D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED + D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED + D3D10_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED + D3D10_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS + D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN + D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN + D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE + D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_THREADING_MODE + D3D10_MESSAGE_ID_REF_THREADING_MODE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION + D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION + D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION + D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE + D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER + D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY + D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_REF_INFO + D3D10_MESSAGE_ID_REF_INFO + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW + D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW + D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW + D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW + D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW + D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS + D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL + D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH + D3D10_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH + D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT + D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED + D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY + D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED + D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED + D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED + D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE + D3D10_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER + D3D10_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING + D3D10_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 + D3D10_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT + D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT + D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT + D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN + D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN + D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET + D3D10_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC + D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH + D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS + D3D10_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH + D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY + D3D10_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY + D3D10_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER + D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED + D3D10_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + D3D10_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN + D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN + D3D10_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATECOUNTER_NULLDESC + D3D10_MESSAGE_ID_CREATECOUNTER_NULLDESC + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER + D3D10_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + D3D10_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE + D3D10_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED + D3D10_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION + D3D10_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_BEGIN_DUPLICATE + D3D10_MESSAGE_ID_QUERY_BEGIN_DUPLICATE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS + D3D10_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION + D3D10_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS + D3D10_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN + D3D10_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE + D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS + D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL + D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH + D3D10_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN + D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE + D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH + D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_D3D10_MESSAGES_END + D3D10_MESSAGE_ID_D3D10_MESSAGES_END + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_D3D10L9_MESSAGES_START + D3D10_MESSAGE_ID_D3D10L9_MESSAGES_START + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED + D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED + D3D10_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS + D3D10_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS + D3D10_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS + D3D10_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND + D3D10_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D + D3D10_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE + D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE + D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX + D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS + D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED + D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS + D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY + D3D10_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK + D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK + D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT + D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE + D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE + D3D10_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES + D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET + D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER + D3D10_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE + D3D10_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE + D3D10_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT + D3D10_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS + D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES + D3D10_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED + D3D10_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED + D3D10_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED + D3D10_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED + D3D10_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED + D3D10_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND + D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED + D3D10_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED + D3D10_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 + D3D10_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED + D3D10_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO + D3D10_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION + D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED + D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR + D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA + D3D10_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP + D3D10_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED + D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT + D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT + + + + No documentation. + + + bb205324 + D3D10_MESSAGE_ID_D3D10L9_MESSAGES_END + D3D10_MESSAGE_ID_D3D10L9_MESSAGES_END + + + +

Debug message severity levels for an information queue.

+
+ +

Use these values to allow or deny message categories to pass through the storage and retrieval filters for an information queue (see ). This API is used by .

+
+ + bb205325 + D3D10_MESSAGE_SEVERITY + D3D10_MESSAGE_SEVERITY +
+ + +

Defines some type of corruption which has occurred.

+
+ + bb205325 + D3D10_MESSAGE_SEVERITY_CORRUPTION + D3D10_MESSAGE_SEVERITY_CORRUPTION +
+ + +

Defines an error message.

+
+ + bb205325 + D3D10_MESSAGE_SEVERITY_ERROR + D3D10_MESSAGE_SEVERITY_ERROR +
+ + +

Defines a warning message.

+
+ + bb205325 + D3D10_MESSAGE_SEVERITY_WARNING + D3D10_MESSAGE_SEVERITY_WARNING +
+ + +

Defines an information message.

+
+ + bb205325 + D3D10_MESSAGE_SEVERITY_INFO + D3D10_MESSAGE_SEVERITY_INFO +
+ + +

These flags are used to control how generates normal maps. Any number of these flags may be OR'd together in any combination.

+
+ + bb172701 + D3DX10_NORMALMAP_FLAG + D3DX10_NORMALMAP_FLAG +
+ + + No documentation. + + + bb172701 + D3DX10_NORMALMAP_MIRROR_U + D3DX10_NORMALMAP_MIRROR_U + + + + No documentation. + + + bb172701 + D3DX10_NORMALMAP_MIRROR_V + D3DX10_NORMALMAP_MIRROR_V + + + + No documentation. + + + bb172701 + D3DX10_NORMALMAP_MIRROR + D3DX10_NORMALMAP_MIRROR + + + + No documentation. + + + bb172701 + D3DX10_NORMALMAP_INVERTSIGN + D3DX10_NORMALMAP_INVERTSIGN + + + + No documentation. + + + bb172701 + D3DX10_NORMALMAP_COMPUTE_OCCLUSION + D3DX10_NORMALMAP_COMPUTE_OCCLUSION + + + +

Flags that describe miscellaneous query behavior.

+
+ +

This flag is part of a query description (see ).

+
+ + bb172406 + D3D10_QUERY_MISC_FLAG + D3D10_QUERY_MISC_FLAG +
+ + +

Tell the hardware that if it is not yet sure if something is hidden or not to draw it anyway. This is only used with an occlusion predicate. Predication data cannot be returned to your application via when using this flag.

+
+ + bb172406 + D3D10_QUERY_MISC_PREDICATEHINT + D3D10_QUERY_MISC_PREDICATEHINT +
+ + + None. + + + None + None + + + +

Query types.

+
+ + bb205335 + D3D10_QUERY + D3D10_QUERY +
+ + +

Determines whether or not the GPU is finished processing commands. When the GPU is finished processing commands GetData will return , and pData will point to a with a value of TRUE. When using this type of query, Begin is disabled.

+
+ + bb205335 + D3D10_QUERY_EVENT + D3D10_QUERY_EVENT +
+ + +

Get the number of samples that passed the depth and stencil tests in between Begin and End. GetData returns a UINT64. If a depth or stencil test is disabled, then each of those tests will be counted as a pass.

+
+ + bb205335 + D3D10_QUERY_OCCLUSION + D3D10_QUERY_OCCLUSION +
+ + +

Get a timestamp value where GetData returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See . When using this type of query, Begin is disabled.

+
+ + bb205335 + D3D10_QUERY_TIMESTAMP + D3D10_QUERY_TIMESTAMP +
+ + +

Determines whether or not a is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. GetData will return a . This type of query should only be invoked once per frame or less.

+
+ + bb205335 + D3D10_QUERY_TIMESTAMP_DISJOINT + D3D10_QUERY_TIMESTAMP_DISJOINT +
+ + +

Get pipeline statistics, such as the number of pixel shader invocations in between Begin and End. GetData will return a .

+
+ + bb205335 + D3D10_QUERY_PIPELINE_STATISTICS + D3D10_QUERY_PIPELINE_STATISTICS +
+ + +

Similar to , except GetData returns a indicating whether or not any samples passed the depth and stencil tests - TRUE meaning at least one passed, meaning none passed.

+
+ + bb205335 + D3D10_QUERY_OCCLUSION_PREDICATE + D3D10_QUERY_OCCLUSION_PREDICATE +
+ + +

Get streaming output statistics, such as the number of primitives streamed out in between Begin and End. GetData will return a structure.

+
+ + bb205335 + D3D10_QUERY_SO_STATISTICS + D3D10_QUERY_SO_STATISTICS +
+ + +

Determines whether or not any of the streaming output buffers overflowed in between Begin and End. GetData returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

+
+ + bb205335 + D3D10_QUERY_SO_OVERFLOW_PREDICATE + D3D10_QUERY_SO_OVERFLOW_PREDICATE +
+ + +

Specifies how to access a resource used in a render-target view.

+
+ +

This enumeration is used in to create a render-target view.

+
+ + bb172414 + D3D10_RTV_DIMENSION + D3D10_RTV_DIMENSION +
+ + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_UNKNOWN + D3D10_RTV_DIMENSION_UNKNOWN + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_BUFFER + D3D10_RTV_DIMENSION_BUFFER + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_TEXTURE1D + D3D10_RTV_DIMENSION_TEXTURE1D + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_TEXTURE1DARRAY + D3D10_RTV_DIMENSION_TEXTURE1DARRAY + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_TEXTURE2D + D3D10_RTV_DIMENSION_TEXTURE2D + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_TEXTURE2DARRAY + D3D10_RTV_DIMENSION_TEXTURE2DARRAY + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_TEXTURE2DMS + D3D10_RTV_DIMENSION_TEXTURE2DMS + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY + D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY + + + + No documentation. + + + bb172414 + D3D10_RTV_DIMENSION_TEXTURE3D + D3D10_RTV_DIMENSION_TEXTURE3D + + + +

Identifies the type of resource being used.

+
+ +

This enumeration is used in , and .

+
+ + bb172411 + D3D10_RESOURCE_DIMENSION + D3D10_RESOURCE_DIMENSION +
+ + + No documentation. + + + bb172411 + D3D10_RESOURCE_DIMENSION_UNKNOWN + D3D10_RESOURCE_DIMENSION_UNKNOWN + + + + No documentation. + + + bb172411 + D3D10_RESOURCE_DIMENSION_BUFFER + D3D10_RESOURCE_DIMENSION_BUFFER + + + + No documentation. + + + bb172411 + D3D10_RESOURCE_DIMENSION_TEXTURE1D + D3D10_RESOURCE_DIMENSION_TEXTURE1D + + + + No documentation. + + + bb172411 + D3D10_RESOURCE_DIMENSION_TEXTURE2D + D3D10_RESOURCE_DIMENSION_TEXTURE2D + + + + No documentation. + + + bb172411 + D3D10_RESOURCE_DIMENSION_TEXTURE3D + D3D10_RESOURCE_DIMENSION_TEXTURE3D + + + +

Identifies other, less common options for resources.

+
+ +

This enumeration is used in , , , , , and .

These flags can be combined by bitwise OR.

and are mutually exclusive flags: either one may be set in the resource creation calls but not both simultaneously.

+
+ + bb172412 + D3D10_RESOURCE_MISC_FLAG + D3D10_RESOURCE_MISC_FLAG +
+ + +

Enables an application to call on a texture resource. The resource must be created with the bind flags that specify that the resource is a render target and a shader resource.

+
+ + bb172412 + D3D10_RESOURCE_MISC_GENERATE_MIPS + D3D10_RESOURCE_MISC_GENERATE_MIPS +
+ + +

Enables the sharing of resource data between two or more Direct3D devices. The only resources that can be shared are 2D non-mipmapped textures.

WARP and REF devices do not support shared resources. Attempting to create a resource with this flag on either a WARP or REF device will cause the create method to return an E_OUTOFMEMORY error code.

+
+ + bb172412 + D3D10_RESOURCE_MISC_SHARED + D3D10_RESOURCE_MISC_SHARED +
+ + +

Enables an application to create a cube texture from a Texture2DArray that contains 6 textures.

+
+ + bb172412 + D3D10_RESOURCE_MISC_TEXTURECUBE + D3D10_RESOURCE_MISC_TEXTURECUBE +
+ + +

Enables the resource created to be synchronized using the and ReleaseSync APIs. The following resource creation D3D10 APIs, that all take a parameter, have been extended to support the new flag.

  • ID3D10Device1::CreateTexture1D
  • ID3D10Device1::CreateTexture2D
  • ID3D10Device1::CreateTexture3D
  • ID3D10Device1::CreateBuffer

If any of the listed functions are called with the flag set, the interface returned can be queried for an interface, which implements AcquireSync and ReleaseSync APIs to synchronize access to the surface. The device creating the surface, and any other device opening the surface (using OpenSharedResource) is required to call before any rendering commands to the surface, and when it is done rendering.

WARP and REF devices do not support shared resources. Attempting to create a resource with this flag on either a WARP or REF device will cause the create method to return an E_OUTOFMEMORY error code.

+
+ + bb172412 + D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX + D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX +
+ + +

Enables a surface to be used for GDI interoperability. Setting this flag enables rendering on the surface via .

+
+ + bb172412 + D3D10_RESOURCE_MISC_GDI_COMPATIBLE + D3D10_RESOURCE_MISC_GDI_COMPATIBLE +
+ + + None. + + + None + None + + + +

Identifies expected resource use during rendering. The usage directly reflects whether a resource is accessible by the CPU and/or the GPU.

+
+ +

An application identifies the way a resource is intended to be used (its usage) in a resource description. There are several structures for creating resources including: , , , , and .

Differences between Direct3D 9 and Direct3D 10:

In Direct3D 9, you specify the type of memory a resource should be created in at resource creation time (using ). It was an application's job to decide what memory pool would provide the best combination of functionality and performance.

In Direct3D 10, an application no longer specifies what type of memory (the pool) to create a resource in. Instead, you specify the intended usage of the resource, and let the runtime (in concert with the driver and a memory manager) choose the type of memory that will achieve the best performance.

?

+
+ + bb172499 + D3D10_USAGE + D3D10_USAGE +
+ + +

A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.

+
+ + bb172499 + D3D10_USAGE_DEFAULT + D3D10_USAGE_DEFAULT +
+ + +

A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.

+
+ + bb172499 + D3D10_USAGE_IMMUTABLE + D3D10_USAGE_IMMUTABLE +
+ + +

A resource that is accessible by both the GPU and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To write to a dynamic resource on the CPU, use a Map method. You can write to a dynamic resource on the GPU using CopyResource or CopySubresourceRegion.

+
+ + bb172499 + D3D10_USAGE_DYNAMIC + D3D10_USAGE_DYNAMIC +
+ + +

A resource that supports data transfer (copy) from the GPU to the CPU.

+
+ + bb172499 + D3D10_USAGE_STAGING + D3D10_USAGE_STAGING +
+ + +

Sprite flags that tell the sprite drawing API how to behave. These are passed into .

+
+ +

After a front-to-back or back-to-front sort is done, it will automatically do a secondary sort by texture. This is helpful for when there are many sprites with the same texture all on the same plane, such as when drawing the user interface in a game.

+
+ + bb172704 + D3DX10_SPRITE_FLAG + D3DX10_SPRITE_FLAG +
+ + + No documentation. + + + bb172704 + D3DX10_SPRITE_SORT_TEXTURE + D3DX10_SPRITE_SORT_TEXTURE + + + + No documentation. + + + bb172704 + D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT + D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT + + + + No documentation. + + + bb172704 + D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK + D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK + + + + No documentation. + + + bb172704 + D3DX10_SPRITE_SAVE_STATE + D3DX10_SPRITE_SAVE_STATE + + + + No documentation. + + + bb172704 + D3DX10_SPRITE_ADDREF_TEXTURES + D3DX10_SPRITE_ADDREF_TEXTURES + + + + None. + + + None + None + + + +

Describes multi-sampling parameters for a resource.

+
+ +

The default sampler mode, with no anti-aliasing, has a count of 1 and a quality level of 0.

If multi-sample antialiasing is being used, all bound render targets and depth buffers must have the same sample counts and quality levels.

Differences between Direct3D 10.0 and Direct3D 10.1 and between Direct3D 10.0 and Direct3D 11:

Direct3D 10.1 has defined two standard quality levels: and in the enumeration in D3D10_1.h.

Direct3D 11 has defined two standard quality levels: and in the enumeration in D3D11.h.

?

+
+ + bb173072 + D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS + D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS +
+ + +

The number of multisamples per pixel.

+
+ + bb173072 + D3D10_STANDARD_MULTISAMPLE_PATTERN + D3D10_STANDARD_MULTISAMPLE_PATTERN +
+ + +

The image quality level. The higher the quality, the lower the performance. The valid range is between zero and one less than the level returned by for Direct3D 10 or for Direct3D 11.

For Direct3D 10.1 and Direct3D 11, you can use two special quality level values. For more information about these quality level values, see Remarks.

+
+ + bb173072 + D3D10_CENTER_MULTISAMPLE_PATTERN + D3D10_CENTER_MULTISAMPLE_PATTERN +
+ + +

The stencil operations that can be performed during depth-stencil testing.

+
+ + bb172455 + D3D10_STENCIL_OP + D3D10_STENCIL_OP +
+ + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_KEEP + D3D10_STENCIL_OP_KEEP + + + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_ZERO + D3D10_STENCIL_OP_ZERO + + + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_REPLACE + D3D10_STENCIL_OP_REPLACE + + + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_INCR_SAT + D3D10_STENCIL_OP_INCR_SAT + + + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_DECR_SAT + D3D10_STENCIL_OP_DECR_SAT + + + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_INVERT + D3D10_STENCIL_OP_INVERT + + + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_INCR + D3D10_STENCIL_OP_INCR + + + + No documentation. + + + bb172455 + D3D10_STENCIL_OP_DECR + D3D10_STENCIL_OP_DECR + + + +

Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.

+
+ + bb172483 + D3D10_TEXTURE_ADDRESS_MODE + D3D10_TEXTURE_ADDRESS_MODE +
+ + +

Tile the texture at every integer junction. For example, for u values between 0 and 3, the texture is repeated three times.

+
+ + bb172483 + D3D10_TEXTURE_ADDRESS_WRAP + D3D10_TEXTURE_ADDRESS_WRAP +
+ + +

Flip the texture at every integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on.

+
+ + bb172483 + D3D10_TEXTURE_ADDRESS_MIRROR + D3D10_TEXTURE_ADDRESS_MIRROR +
+ + +

Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.

+
+ + bb172483 + D3D10_TEXTURE_ADDRESS_CLAMP + D3D10_TEXTURE_ADDRESS_CLAMP +
+ + +

Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in or HLSL code.

+
+ + bb172483 + D3D10_TEXTURE_ADDRESS_BORDER + D3D10_TEXTURE_ADDRESS_BORDER +
+ + +

Similar to and . Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.

+
+ + bb172483 + D3D10_TEXTURE_ADDRESS_MIRROR_ONCE + D3D10_TEXTURE_ADDRESS_MIRROR_ONCE +
+ + +

The different faces of a cube texture.

+
+ + bb172482 + D3D10_TEXTURECUBE_FACE + D3D10_TEXTURECUBE_FACE +
+ + +

Positive X face.

+
+ + bb172482 + D3D10_TEXTURECUBE_FACE_POSITIVE_X + D3D10_TEXTURECUBE_FACE_POSITIVE_X +
+ + +

Negative X face.

+
+ + bb172482 + D3D10_TEXTURECUBE_FACE_NEGATIVE_X + D3D10_TEXTURECUBE_FACE_NEGATIVE_X +
+ + +

Positive Y face.

+
+ + bb172482 + D3D10_TEXTURECUBE_FACE_POSITIVE_Y + D3D10_TEXTURECUBE_FACE_POSITIVE_Y +
+ + +

Negative Y face.

+
+ + bb172482 + D3D10_TEXTURECUBE_FACE_NEGATIVE_Y + D3D10_TEXTURECUBE_FACE_NEGATIVE_Y +
+ + +

Positive Z face.

+
+ + bb172482 + D3D10_TEXTURECUBE_FACE_POSITIVE_Z + D3D10_TEXTURECUBE_FACE_POSITIVE_Z +
+ + +

Negative Z face.

+
+ + bb172482 + D3D10_TEXTURECUBE_FACE_NEGATIVE_Z + D3D10_TEXTURECUBE_FACE_NEGATIVE_Z +
+ + + Functions + + + + + Constant SdkVersion. + D3D10_SDK_VERSION + + + Constant SdkVersion1. + D3D10_1_SDK_VERSION + + + +

Create a Direct3D 10.1 device and a swap chain.

+
+

Pointer to a .

+

The type of driver for the device. See .

+

A handle to the DLL that implements a software rasterizer. Must be null if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.

+

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

+

The version of hardware that is available for acceleration (see ).

+

Bit flag that indicates the version of the SDK. Should be , defined in D3D10.h.

+

Description of the swap chain. See .

+

Address of a reference to an .

+

Address of a reference to an Interface that will receive the newly created device.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

To create a device without creating a swap chain, see .

This method requires Windows Vista Service Pack 1, Windows Server 2008, or later release of Windows.

Note??If you call this API in a Session 0 process, it returns .

+
+ + bb694527 + HRESULT D3D10CreateDeviceAndSwapChain1([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] D3D10_FEATURE_LEVEL1 HardwareLevel,[In] unsigned int SDKVersion,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out] IDXGISwapChain** ppSwapChain,[Out] ID3D10Device1** ppDevice) + D3D10CreateDeviceAndSwapChain1 +
+ + +

Create a Direct3D 10.1 device that represents the display adapter.

+
+

Pointer to the display adapter (see ) when creating a hardware device; otherwise set this parameter to null. If null is specified when creating a hardware device, Direct3D will use the first adapter enumerated by EnumAdapters.

+

The device-driver type (see ). The driver type determines the type of device you will create.

+

This is set to null except for driver types.

+

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

+

The version of hardware that is available for acceleration (see ).

+

Bit flag that indicates the version of the SDK. Should be , defined in D3D10.h.

+

Address of a reference to the device created (see Interface).

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

To create a device and a swap chain at the same time, see .

This method requires Windows Vista Service Pack 1, Windows Server 2008, or later release of Windows.

The object returned by implements the interface and can be queried for other interfaces the object supports. To retrieve the interface of the object the following code could be used.

  * pDXGIDevice;	
+            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice); 
+
+ + bb694526 + HRESULT D3D10CreateDevice1([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] D3D10_FEATURE_LEVEL1 HardwareLevel,[In] unsigned int SDKVersion,[Out, Fast] ID3D10Device1** ppDevice) + D3D10CreateDevice1 +
+ + +

Create an effect pool (or shared memory location), to enable sharing variables between effects.

+
+

A reference to a compiled effect.

+

Length of pData.

+

Effect compile options.

+

A reference to the device (see Interface).

+

A reference to the Interface that contains the effect pool.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

A pool is a shared location in memory. Effect variables that are located in a pool can be updated once, and the effect system will take care of updating each effect that uses that variable. To pool an effect variable, tell the effect to locate the variable in a pool when the effect is created, using a helper function such as .

For help compiling an effect, see Compile an Effect (Direct3D 10).

+
+ + bb205089 + HRESULT D3D10CreateEffectPoolFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[Out, Fast] ID3D10EffectPool** ppEffectPool) + D3D10CreateEffectPoolFromMemory +
+ + +

Create a state block.

+
+

The device for which the state block will be created.

+

Indicates which parts of the device state will be captured when calling and reapplied when calling . See remarks.

+

Address of a reference to the buffer created (see Interface).

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

A state block is a collection of device state, and is used for saving and restoring device state. Use a state-block mask to enable subsets of state for saving and restoring.

The structure can be filled manually or by using any of the D3D10StateBlockMaskXXX APIs. A state block mask can also be obtained by calling or .

Differences between Direct3D 9 and Direct3D 10:

In Direct3D 10, a state block object does not contain any valid information about the state of the device until is called. In Direct3D 9, state is saved in a state block object, when it is created.

?

+
+ + bb205090 + HRESULT D3D10CreateStateBlock([In] ID3D10Device* pDevice,[In] D3D10_STATE_BLOCK_MASK* pStateBlockMask,[Out, Fast] ID3D10StateBlock** ppStateBlock) + D3D10CreateStateBlock +
+ + +

Compile an effect. +

Note??Use D3DX10CompileFromMemory instead of this function.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

Returns one of the following Direct3D 10 Return Codes.

+ +

This function uses the version of the HLSL compiler released in the November 2006 DirectX SDK.

For an example, see Compile an Effect (Direct3D 10).

+
+ + bb205083 + HRESULT D3D10CompileEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] D3DCOMPILE_SHADER_FLAGS HLSLFlags,[In] D3DCOMPILE_EFFECT_FLAGS FXFlags,[In] ID3D10Blob** ppCompiledEffect,[In] ID3D10Blob** ppErrors) + D3D10CompileEffectFromMemory +
+ + +

Creates an from a buffer containing a compiled effect.

+
+

A reference to a compiled effect.

+

Length of pData.

+

Effect compile options.

+

A reference to the device (see Interface).

+

Optional. A reference to an memory space for effect variables that are shared across effects (see Interface).

+

A reference to an Interface which contains the created effect.

+

Returns one of the following Direct3D 10 Return Codes.

+ +

This method is used to create an Interface object from an effect that has been compiled before runtime and loaded into memory. For help precompiling an effect, see Offline Compiling. To load and compile an ASCII .fx file see Compile an Effect (Direct3D 10).

+
+ + bb205088 + HRESULT D3D10CreateEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[Out, Fast] ID3D10Effect** ppEffect) + D3D10CreateEffectFromMemory +
+ + +

Create a Direct3D 10.0 device and a swap chain.

+
+

Pointer to a .

+

The type of driver for the device. See .

+

A handle to the DLL that implements a software rasterizer. Must be null if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.

+

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

+

Bit flag that indicates the version of the SDK. Should be , defined in d3d10.h.

+

Description of the swap chain. See .

+

Address of a reference to an .

+

Address of a reference to an Interface that will receive the newly created device.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

To create a device without creating a swap chain, see .

Note??If you call this API in a Session 0 process, it returns .

+
+ + bb205087 + HRESULT D3D10CreateDeviceAndSwapChain([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] unsigned int SDKVersion,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out] IDXGISwapChain** ppSwapChain,[Out] ID3D10Device** ppDevice) + D3D10CreateDeviceAndSwapChain +
+ + +

Create a Direct3D 10.0 device that represents the display adapter.

+
+

Pointer to the display adapter (see ) when creating a hardware device; otherwise set this parameter to null. If null is specified when creating a hardware device, Direct3D will use the first adapter enumerated by EnumAdapters.

+

The device-driver type (see ). The driver type determines the type of device you will create.

+

Reserved. Set to null.

+

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

+

Bit flag that indicates the version of the SDK. Should always be .

+

Address of a reference to the device created (see Interface).

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

This example creates a reference device.

 * g_pd3dDevice = null;	
+            ( null, , null, 0,  , &g_pd3dDevice );              

To create a device and a swap chain at the same time, see .

The object returned by implements the interface and can be queried for other interfaces the object supports. To retrieve the interface of the object the following code could be used.

  * pDXGIDevice;	
+            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice); 
+
+ + bb205086 + HRESULT D3D10CreateDevice([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] unsigned int SDKVersion,[Out, Fast] ID3D10Device** ppDevice) + D3D10CreateDevice +
+ + +

Get the vertex shader profile best suited to a given device.

+
+ No documentation. +

The shader profile.

+ + bb205099 + const char* D3D10GetVertexShaderProfile([In] ID3D10Device* pDevice) + D3D10GetVertexShaderProfile +
+ + +

Get the geometry shader profile best suited to a given device.

+
+ No documentation. +

The shader profile.

+ + bb205093 + const char* D3D10GetGeometryShaderProfile([In] ID3D10Device* pDevice) + D3D10GetGeometryShaderProfile +
+ + +

Get the pixel shader profile best suited to a given device.

+
+ No documentation. +

The shader profile.

+ + bb205097 + const char* D3D10GetPixelShaderProfile([In] ID3D10Device* pDevice) + D3D10GetPixelShaderProfile +
+ + + Functions + + + + + +

Get a Direct3D 10.1 device interface reference from a Direct3D 10.0 interface reference.

+
+

Pointer to the Direct3D 10.0 device (see the interface).

+

Pointer to the Direct3D 10.1 device (see the interface).

+

This function returns one of the following Direct3D 10 Return Codes. If a Direct3D 10.1 device interface can be acquired, this function succeeds and passes a reference to the 10.1 interface using the ppDevice parameter. If a Direct3D 10.1 device interface cannot be acquired, this function returns E_FAIL, and will not return anything for the ppDevice parameter.

+ +

For this function to succeed, you must have acquired the supplied reference using a call to the function, the function, the function, or the function.

You can only create a Direct3D 10.1 device on computers running Windows Vista Service Pack 1 or later, and with Direct3D 10.1-compatible hardware installed. This function will return E_FAIL on any computer not meeting these requirements. + However, you can call this function on any version of Windows that has the D3DX10 DLL installed.

+
+ + bb694539 + HRESULT D3DX10GetFeatureLevel1([In] ID3D10Device* pDevice,[In] ID3D10Device1** ppDevice1) + D3DX10GetFeatureLevel1 +
+ + +

Creates a font object for a device and font.

Note??Instead of using this function, we recommend that you use DirectWrite and the DirectXTK library, SpriteFont class.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateFontA because ANSI strings are being used.

If you want more information about font parameters, see The Logical Font.

+
+ + bb172664 + HRESULT D3DX10CreateFontW([In] ID3D10Device* pDevice,[In] int Height,[In] unsigned int Width,[In] unsigned int Weight,[In] unsigned int MipLevels,[In] BOOL Italic,[In] unsigned int CharSet,[In] unsigned int OutputPrecision,[In] unsigned int Quality,[In] unsigned int PitchAndFamily,[In] const wchar_t* pFaceName,[Out, Fast] ID3DX10Font** ppFont) + D3DX10CreateFontW +
+ + +

Creates a font object.

Note??Instead of using this function, we recommend that you use DirectWrite and the DirectXTK library, SpriteFont class.

+
+ No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172665 + HRESULT D3DX10CreateFontIndirectW([In] ID3D10Device* pDevice,[In] const D3DX10_FONT_DESCW* pDesc,[Out, Fast] ID3DX10Font** ppFont) + D3DX10CreateFontIndirectW +
+ + +

Create the best Direct3D device and a swap chain.

+
+

Pointer to a .

+

The type of driver for the device. See .

+

A handle to the DLL that implements a software rasterizer. Must be null if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.

+

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

+

Description of the swap chain. See .

+

Address of a reference to an .

+

Address of a reference to an Interface that will receive the newly created device.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

To create the best device, this method implements more than one device creation option. First, the method attempts to create a 10.1 device (and swap chain). If that fails, the method attempts to create a 10.0 device. If that fails, the method will fail. If your application needs to create only a 10.1 device, or a 10.0 device only, use these APIs instead:

  • Use to create a Direct3D 10.0 (only) device and swap chain.
  • Use to create a Direct3D 10.1 (only) device and swap chain.

This method requires Windows Vista Service Pack 1.

+
+ + bb694538 + HRESULT D3DX10CreateDeviceAndSwapChain([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] unsigned int Flags,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[In] IDXGISwapChain** ppSwapChain,[In] ID3D10Device** ppDevice) + D3DX10CreateDeviceAndSwapChain +
+ + +

Create a sprite for drawing a 2D texture.

Note??Instead of using this function, we recommend that you use Direct2D and the DirectXTK library, SpriteBatch class.

+
+ No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb172670 + HRESULT D3DX10CreateSprite([In] ID3D10Device* pDevice,[In] unsigned int cDeviceBufferSize,[Out, Fast] ID3DX10Sprite** ppSprite) + D3DX10CreateSprite +
+ + +

Verify that the version of D3DX you compiled with is the version that you are running.

+
+

Use . See remarks.

+

Use D3DX10_SDK_VERSION. See remarks.

+

If the version doesn't match, the function will return (a number less than or equal to 0, the number itself has no meaning).

+ +

Use this function during the initialization of your application.

  hr; if( FAILED( (, D3DX10_SDK_VERSION) ) ) return E_FAIL;	
+            
+
+ + bb172639 + HRESULT D3DX10CheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DX10SdkVersion) + D3DX10CheckVersion +
+ + +

Create the best Direct3D 10 device that represents the display adapter. If a Direct3D 10.1-compatible device can be created, it will be possible to acquire an Interface reference from the returned device interface reference.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

This function returns one of the following Direct3D 10 Return Codes.

+ +

This function attempts to create the best device for the hardware. First, the function attempts to create a 10.1 device. If a 10.1 device cannot be created, the function attempts to create a 10.0 device. If neither device is successfully created, the function returns E_FAIL.

If your application needs to create only a 10.1 device, or a 10.0 device only, use the following functions instead:

  • Use the function to create a Direct3D 10.0 device only.
  • Use the function to create a Direct3D 10.1 device only.
  • Use the function to get an interface reference from an interface reference.

A Direct3D 10.1 device can only be created on computers running Windows Vista Service Pack 1 or later, and with Direct3D 10.1-compatible hardware installed. However, it is legal to call this function on computers running any version of Windows that has the D3DX10 DLL installed.

+
+ + bb694537 + HRESULT D3DX10CreateDevice([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] unsigned int Flags,[In] ID3D10Device** ppDevice) + D3DX10CreateDevice +
+ + +

Create a shader-resource view from a file.

+
+

A reference to the device (see Interface) that will use the resource.

+

Name of the file that contains the shader-resource view. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

+

Pointer to a thread-pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

+

Address of a reference to the shader-resource view (see Interface).

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

For a list of supported image formats, see .

+
+ + bb172667 + HRESULT D3DX10CreateShaderResourceViewFromFileW([In] ID3D10Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) + D3DX10CreateShaderResourceViewFromFileW +
+ + +

Save a texture to a file.

+
+

Pointer to the texture to be saved. See Interface.

+

The format the texture will be saved as (see ). is the preferred format since it is the only option that supports all the formats in .

+

Name of the destination output file where the texture will be saved. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

The return value is one of the values listed in Direct3D 10 Return Codes; use the return value to see if the DestFormat is supported.

+ +

writes out the extra DDS_HEADER_DXT10 structure for the input texture only if necessary (for example, because the input texture is in standard RGB (sRGB) format). If writes out the DDS_HEADER_DXT10 structure, it sets the dwFourCC member of the DDS_PIXELFORMAT structure for the texture to DX10 to indicate the prescense of the DDS_HEADER_DXT10 extended header.

+
+ + bb172684 + HRESULT D3DX10SaveTextureToFileW([In] ID3D10Resource* pSrcTexture,[In] D3DX10_IMAGE_FILE_FORMAT DestFormat,[In] const wchar_t* pDestFile) + D3DX10SaveTextureToFileW +
+ + +

Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.

+
+

Pointer to an interface, representing the source height-map texture.

+

One or more flags that control generation of normal maps.

+

One flag specifying the source of height information.

+

Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.

+

Pointer to an interface, representing the destination texture.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following value: .

+ +

This method computes the normal by using the central difference with a kernel size of 3x3. RGB channels in the destination contain biased (x,y,z) components of the normal. The central differencing denominator is hardcoded to 2.0.

+
+ + bb172646 + HRESULT D3DX10ComputeNormalMap([In] ID3D10Texture2D* pSrcTexture,[In] D3DX10_NORMALMAP_FLAG Flags,[In] D3DX10_CHANNEL_FLAG Channel,[In] float Amplitude,[In] ID3D10Texture2D* pDestTexture) + D3DX10ComputeNormalMap +
+ + +

Get information about an image already loaded into memory.

+
+

Pointer to the image in memory.

+

Size of the image in memory, in bytes.

+

Optional thread pump that can be used to load the info asynchronously. Can be null. See .

+

Information about the image in memory.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172678 + HRESULT D3DX10GetImageInfoFromMemory([In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) + D3DX10GetImageInfoFromMemory +
+ + +

Retrieves information about a given image in a resource.

+
+

Module where the resource is loaded. Set this parameter to null to specify the module associated with the image that the operating system used to create the current process.

+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. See Remarks.

+

Optional thread pump that can be used to load the info asynchronously. Can be null. See .

+

Pointer to a structure to be filled with the description of the data in the source file.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DX10GetImageInfoFromResourceA because ANSI strings are being used.

+
+ + bb172679 + HRESULT D3DX10GetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) + D3DX10GetImageInfoFromResourceW +
+ + +

Create a texture resource from a file.

+
+

A reference to the device (see Interface) that will use the resource.

+

The name of the file containing the resource. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. See enumeration for a list of the supported image file formats.

+

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

+

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

+

The address of a reference to the texture resource (see Interface).

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

For a list of supported image formats see .

+
+ + bb172671 + HRESULT D3DX10CreateTextureFromFileW([In] ID3D10Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) + D3DX10CreateTextureFromFileW +
+ + +

Save a texture to memory.

+
+

Pointer to the texture to be saved. See Interface.

+

The format the texture will be saved as. See .

+

Address of a reference to the memory containing the saved texture. See Interface.

+

Optional.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172685 + HRESULT D3DX10SaveTextureToMemory([In] ID3D10Resource* pSrcTexture,[In] D3DX10_IMAGE_FILE_FORMAT DestFormat,[Out] ID3D10Blob** ppDestBuf,[In] unsigned int Flags) + D3DX10SaveTextureToMemory +
+ + +

Projects a function represented in a cube map into spherical harmonics.

+
+

Order of the SH evaluation, generates Order^2 coefs, degree is Order-1.

+

Cubemap that is going to be projected into spherical harmonics. See .

+

Output SH vector for red.

+

Output SH vector for green.

+

Output SH vector for blue.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172686 + HRESULT D3DX10SHProjectCubeMap([In] unsigned int Order,[In] ID3D10Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut) + D3DX10SHProjectCubeMap +
+ + +

Create a texture from another resource.

+
+

A reference to the device (see Interface) that will use the resource.

+

A handle to the source resource. HMODULE can be obtained with GetModuleHandle Function.

+

A string that contains the name of the source resource. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

+

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

+

The address of a reference to the texture resource (see Interface).

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

For a list of supported image formats see .

+
+ + bb172673 + HRESULT D3DX10CreateTextureFromResourceW([In] ID3D10Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) + D3DX10CreateTextureFromResourceW +
+ + +

Load a texture from a texture.

+
+

Pointer to the source texture. See .

+

Pointer to texture loading parameters. See .

+

Pointer to the destination texture. See Interface.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172680 + HRESULT D3DX10LoadTextureFromTexture([In] ID3D10Resource* pSrcTexture,[In] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[In] ID3D10Resource* pDstTexture) + D3DX10LoadTextureFromTexture +
+ + +

Create a shader-resource view from a file in memory.

+
+

A reference to the device (see Interface) that will use the resource.

+

Pointer to the file in memory that contains the shader-resource view.

+

Size of the file in memory.

+

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

+

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

+

Address of a reference to the newly created shader resource view. See Interface.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172668 + HRESULT D3DX10CreateShaderResourceViewFromMemory([In] ID3D10Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) + D3DX10CreateShaderResourceViewFromMemory +
+ + +

Generates mipmap chain using a particular texture filter.

+
+

The texture object to be filtered. See .

+

The mipmap level whose data is used to generate the rest of the mipmap chain.

+

Flags controlling how each miplevel is filtered (or D3DX10_DEFAULT for ). See .

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172675 + HRESULT D3DX10FilterTexture([In] ID3D10Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter) + D3DX10FilterTexture +
+ + +

Create a texture resource from a file residing in system memory.

+
+

A reference to the device (see Interface) that will use the resource.

+

Pointer to the resource in system memory.

+

Size of the resource in system memory.

+

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

+

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

+

Address of a reference to the created resource. See Interface.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

For a list of supported image formats see .

+
+ + bb172672 + HRESULT D3DX10CreateTextureFromMemory([In] ID3D10Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) + D3DX10CreateTextureFromMemory +
+ + +

Retrieves information about a given image file.

+
+

File name of image to retrieve information about. If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.

+

Optional thread pump that can be used to load the info asynchronously. Can be null. See .

+

Pointer to a structure to be filled with the description of the data in the source file.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ +

This function supports both Unicode and ANSI strings.

+
+ + bb172677 + HRESULT D3DX10GetImageInfoFromFileW([In] const wchar_t* pSrcFile,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) + D3DX10GetImageInfoFromFileW +
+ + +

Create a shader-resource view from a resource.

+
+

A reference to the device (see Interface) that will use the resource.

+

Handle to the resource module containing the shader-resource view. HMODULE can be obtained with GetModuleHandle Function.

+

Name of the shader resource view in hSrcModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

+

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

+

Address of a reference to the shader-resource view (see Interface).

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172669 + HRESULT D3DX10CreateShaderResourceViewFromResourceW([In] ID3D10Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) + D3DX10CreateShaderResourceViewFromResourceW +
+ + +

Creates a mesh object using a declarator.

+
+

Pointer to an Interface, the device object to be associated with the mesh.

+

Array of elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF).

+

The number of elements in pDeclaration.

+

Semantic that identifies which part of the vertex declaration contains position information.

+

Number of vertices for the mesh. This parameter must be greater than 0.

+

Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved.

+

Combination of one or more flags from the D3DX10_MESH, specifying options for the mesh.

+

Address of a reference to an Interface, representing the created mesh object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb204914 + HRESULT D3DX10CreateMesh([In] ID3D10Device* pDevice,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDeclaration,[In] unsigned int DeclCount,[In] const char* pPositionSemantic,[In] unsigned int VertexCount,[In] unsigned int FaceCount,[In] unsigned int Options,[Out, Fast] ID3DX10Mesh** ppMesh) + D3DX10CreateMesh +
+ + +

Creates an empty skin mesh object using a declarator.

+
+

Address of a reference to an Interface, representing the created skin mesh object.

+

If the function succeeds, the return value is . If the function fails, the return value can be: E_OUTOFMEMORY.

+ +

Use the to populate the empty skin mesh object returned by this method.

+
+ + bb204915 + HRESULT D3DX10CreateSkinInfo([In] ID3DX10SkinInfo** ppSkinInfo) + D3DX10CreateSkinInfo +
+ + +

Create an effect pool from a resource.

+
+

A handle to the resource module containing the effect. HMODULE can be obtained with GetModuleHandle Function.

+

The name of the resource in hModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

Optional. Effect file name, which is used for error messages only. Can be null.

+

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

+

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

+

A string that specifies the shader profile, or shader model.

+

HLSL compile options (see D3D10_SHADER Constants).

+

Effect compile options (see Compile and Effect Flags).

+

A reference to the device (see Interface) that will use the resources.

+

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

+

The address of a reference to the effect pool (see Interface).

+

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172663 + HRESULT D3DX10CreateEffectPoolFromResourceW([In] HINSTANCE hModule,[In] const wchar_t* pResourceName,[In] const wchar_t* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) + D3DX10CreateEffectPoolFromResourceW +
+ + +

Create an effect pool from an effect file.

+
+

The effect filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

+

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

+

A string that specifies the shader profile, or shader model.

+

HLSL compile options (see D3D10_SHADER Constants).

+

Effect compile options (see Compile and Effect Flags).

+

A reference to the device (see Interface) that will use the resources.

+

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

+

The address of a reference to the effect pool (see Interface).

+

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

This example creates an effect pool from the effect used in the BasicHLSL10 Sample.

 // Create an effect pool from an effect in memory	
+             * l_pEffectPool = null;	
+            *	l_pBlob_Errors = null;	
+            WCHAR str[MAX_PATH];	
+            hr = DXUTFindDXSDKMediaFileCch( str, MAX_PATH, L"BasicHLSL10.fx" );	
+            hr = ( str,  null, null, D3D10_SHADER_ENABLE_STRICTNESS,  0, pd3dDevice, null, &l_pEffectPool, &l_pBlob_Errors );	
+            
+
+ + bb172661 + HRESULT D3DX10CreateEffectPoolFromFileW([In] const wchar_t* pFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) + D3DX10CreateEffectPoolFromFileW +
+ + +

Create an effect from a file.

+
+

Name of the ASCII effect file. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

+

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

+

A string that specifies the shader profile, or shader model.

+

HLSL compile options (see D3D10_SHADER Constants).

+

Effect compile options (see Compile and Effect Flags).

+

A reference to the device (see Interface) that will use the resources.

+

Pointer to an effect pool (see Interface) for sharing variables between effects.

+

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

+

Address of a reference to the effect (see Interface) that is created.

+

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172658 + HRESULT D3DX10CreateEffectFromFileW([In] const wchar_t* pFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) + D3DX10CreateEffectFromFileW +
+ + +

Create an effect from memory.

+
+

Pointer to the effect in memory.

+

Size of the effect in memory.

+

Name of the effect file in memory.

+

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

+

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

+

A string that specifies the shader profile, or shader model.

+

HLSL compile options (see D3D10_SHADER Constants).

+

Effect compile options (see D3D10_EFFECT Constants).

+

A reference to the device (see Interface) that will use the resources.

+

Pointer to an effect pool (see Interface) for sharing variables between effects.

+

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

+

Address of a reference to the effect (see Interface) that is created.

+

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172659 + HRESULT D3DX10CreateEffectFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) + D3DX10CreateEffectFromMemory +
+ + +

Create an effect pool from an effect in memory.

+
+

A reference to the effect.

+

The size of the effect.

+

The name of the effect file.

+

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

+

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

+

A string that specifies the shader profile, or shader model.

+

HLSL compile options (see D3D10_SHADER Constants).

+

Effect compile options (see Compile and Effect Flags).

+

A reference to the device (see Interface) that will use the resources.

+

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

+

The address of a reference to the effect pool (see Interface).

+

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb172662 + HRESULT D3DX10CreateEffectPoolFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) + D3DX10CreateEffectPoolFromMemory +
+ + +

Create an effect from a resource.

+
+

A handle to the resource module containing the effect. HMODULE can be obtained with GetModuleHandle Function.

+

Name of the resource in hModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

+

Optional. Effect file name, which is used for error messages only. Can be null.

+

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

+

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

+

A string that specifies the shader profile, or shader model.

+

HLSL compile options (see D3D10_SHADER Constants).

+

Effect compile options (see Compile and Effect Flags).

+

A reference to the device (see Interface) that will use the resources.

+

Pointer to an effect pool (see Interface) for sharing variables between effects.

+

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

+

Address of a reference to the effect (see Interface) that is created.

+

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

+

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb172660 + HRESULT D3DX10CreateEffectFromResourceW([In] HINSTANCE hModule,[In] const wchar_t* pResourceName,[In] const wchar_t* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) + D3DX10CreateEffectFromResourceW +
+ + +

A constant-buffer interface accesses constant buffers or texture buffers.

+
+ +

Use constant buffers to store many effect constants; grouping constants into buffers based on their frequency of update. This allows you to minimize the number of state changes as well as make the fewest API calls to change state. Both of these factors lead to better performance.

+
+ + bb173634 + ID3D10EffectConstantBuffer + ID3D10EffectConstantBuffer +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a constant-buffer.

+
+

A reference to a constant-buffer interface. See Interface.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173637 + HRESULT ID3D10EffectConstantBuffer::SetConstantBuffer([In] ID3D10Buffer* pConstantBuffer) + ID3D10EffectConstantBuffer::SetConstantBuffer +
+ + +

Get a constant-buffer.

+
+

The address of a reference to a constant-buffer interface. See Interface.

+ + bb173635 + HRESULT ID3D10EffectConstantBuffer::GetConstantBuffer([Out] ID3D10Buffer** ppConstantBuffer) + ID3D10EffectConstantBuffer::GetConstantBuffer +
+ + +

Set a texture-buffer.

+
+

A reference to a shader-resource-view interface for accessing a texture buffer.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173638 + HRESULT ID3D10EffectConstantBuffer::SetTextureBuffer([In] ID3D10ShaderResourceView* pTextureBuffer) + ID3D10EffectConstantBuffer::SetTextureBuffer +
+ + +

Get a texture-buffer.

+
+

The address of a reference to a shader-resource-view interface for accessing a texture buffer. See Interface.

+ + bb173636 + HRESULT ID3D10EffectConstantBuffer::GetTextureBuffer([Out] ID3D10ShaderResourceView** ppTextureBuffer) + ID3D10EffectConstantBuffer::GetTextureBuffer +
+ + +

A shader-variable interface accesses a shader variable.

+
+ + bb173698 + ID3D10EffectShaderVariable + ID3D10EffectShaderVariable +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a shader description.

+
+

A zero-based index.

+

A reference to a shader description (see ).

+ + bb173703 + HRESULT ID3D10EffectShaderVariable::GetShaderDesc([In] unsigned int ShaderIndex,[Out] D3D10_EFFECT_SHADER_DESC* pDesc) + ID3D10EffectShaderVariable::GetShaderDesc +
+ + +

Get a vertex shader.

+
+

A zero-based index.

+

A reference to a Interface.

+ + bb173704 + HRESULT ID3D10EffectShaderVariable::GetVertexShader([In] unsigned int ShaderIndex,[Out] ID3D10VertexShader** ppVS) + ID3D10EffectShaderVariable::GetVertexShader +
+ + +

Get a geometry shader.

+
+

A zero-based index.

+

A reference to a Interface.

+ + bb173699 + HRESULT ID3D10EffectShaderVariable::GetGeometryShader([In] unsigned int ShaderIndex,[Out] ID3D10GeometryShader** ppGS) + ID3D10EffectShaderVariable::GetGeometryShader +
+ + +

Get a pixel shader.

+
+

A zero-based index.

+

A reference to a Interface.

+ + bb173702 + HRESULT ID3D10EffectShaderVariable::GetPixelShader([In] unsigned int ShaderIndex,[Out] ID3D10PixelShader** ppPS) + ID3D10EffectShaderVariable::GetPixelShader +
+ + +

Get an input-signature description.

+
+

A zero-based shader index.

+

A zero-based shader-element index.

+

A reference to a parameter description (see ).

+ +

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

+
+ + bb173700 + HRESULT ID3D10EffectShaderVariable::GetInputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D10_SIGNATURE_PARAMETER_DESC* pDesc) + ID3D10EffectShaderVariable::GetInputSignatureElementDesc +
+ + +

Get an output-signature description.

+
+

A zero-based shader index.

+

A zero-based element index.

+

A reference to a parameter description (see ).

+ +

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

+
+ + bb173701 + HRESULT ID3D10EffectShaderVariable::GetOutputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D10_SIGNATURE_PARAMETER_DESC* pDesc) + ID3D10EffectShaderVariable::GetOutputSignatureElementDesc +
+ + +

An interface is a collection of passes.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ +

An effect contains one or more techniques; each technique contains one or more passes; each pass contains state assignments (see Organizing State in an Effect (Direct3D 10)). The syntax for creating a technique is shown in Effect Technique Syntax (Direct3D 10).

To get an effect-technique interface, call a method like .

+
+ + bb173708 + ID3D10EffectTechnique + ID3D10EffectTechnique +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Test a technique to see if it contains valid syntax.

+
+

TRUE if the code syntax is valid; otherwise .

+ + bb173715 + BOOL ID3D10EffectTechnique::IsValid() + ID3D10EffectTechnique::IsValid +
+ + +

Get a technique description.

+
+

A reference to a technique description (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173712 + HRESULT ID3D10EffectTechnique::GetDesc([Out] D3D10_TECHNIQUE_DESC* pDesc) + ID3D10EffectTechnique::GetDesc +
+ + +

Get an annotation by index.

+
+

The zero-based index of the interface reference.

+

A reference to an Interface.

+ +

Use an annotation to attach a piece of metadata to a technique.

+
+ + bb173710 + ID3D10EffectVariable* ID3D10EffectTechnique::GetAnnotationByIndex([In] unsigned int Index) + ID3D10EffectTechnique::GetAnnotationByIndex +
+ + +

Get an annotation by name.

+
+

Name of the annotation.

+

A reference to an Interface.

+ +

Use an annotation to attach a piece of metadata to a technique.

+
+ + bb173711 + ID3D10EffectVariable* ID3D10EffectTechnique::GetAnnotationByName([In] const char* Name) + ID3D10EffectTechnique::GetAnnotationByName +
+ + +

Get a pass by index.

+
+

A zero-based index.

+

A reference to a Interface.

+ +

A technique contains one or more passes; get a pass using a name or an index.

+
+ + bb173713 + ID3D10EffectPass* ID3D10EffectTechnique::GetPassByIndex([In] unsigned int Index) + ID3D10EffectTechnique::GetPassByIndex +
+ + +

Get a pass by name.

+
+

The name of the pass.

+

A reference to an Interface.

+ +

A technique contains one or more passes; get a pass using a name or an index.

+
+ + bb173714 + ID3D10EffectPass* ID3D10EffectTechnique::GetPassByName([In] const char* Name) + ID3D10EffectTechnique::GetPassByName +
+ + +

Compute a state-block mask to allow/prevent state changes.

+
+

A reference to a state-block mask (see ).

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173709 + HRESULT ID3D10EffectTechnique::ComputeStateBlockMask([In] D3D10_STATE_BLOCK_MASK* pStateBlockMask) + ID3D10EffectTechnique::ComputeStateBlockMask +
+ + +

Test a technique to see if it contains valid syntax.

+
+ + bb173715 + IsValid + IsValid + BOOL ID3D10EffectTechnique::IsValid() +
+ + +

Get a technique description.

+
+ + bb173712 + GetDesc + GetDesc + HRESULT ID3D10EffectTechnique::GetDesc([Out] D3D10_TECHNIQUE_DESC* pDesc) +
+ + +

Get an member type by name.

+
+ + bb173721 + ID3D10EffectType + ID3D10EffectType +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Tests that the effect type is valid.

+
+

TRUE if it is valid; otherwise .

+ + bb173723 + BOOL ID3D10EffectType::IsValid() + ID3D10EffectType::IsValid +
+ + +

Get an effect-type description.

+
+

A reference to an effect-type description. See .

+

Returns one of the following Direct3D 10 Return Codes.

+ +

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

+
+ + bb173717 + HRESULT ID3D10EffectType::GetDesc([Out] D3D10_EFFECT_TYPE_DESC* pDesc) + ID3D10EffectType::GetDesc +
+ + +

Get a member type by index.

+
+

A zero-based index.

+

A reference to an Interface.

+ + bb173720 + ID3D10EffectType* ID3D10EffectType::GetMemberTypeByIndex([In] unsigned int Index) + ID3D10EffectType::GetMemberTypeByIndex +
+ + +

Get an member type by name.

+
+

A member's name.

+

A reference to an Interface.

+ + bb173721 + ID3D10EffectType* ID3D10EffectType::GetMemberTypeByName([In] const char* Name) + ID3D10EffectType::GetMemberTypeByName +
+ + +

Get a member type by semantic.

+
+

A semantic.

+

A reference to an Interface.

+ + bb173722 + ID3D10EffectType* ID3D10EffectType::GetMemberTypeBySemantic([In] const char* Semantic) + ID3D10EffectType::GetMemberTypeBySemantic +
+ + +

Get the name of a member.

+
+

A zero-based index.

+

The name of the member.

+ + bb173718 + const char* ID3D10EffectType::GetMemberName([In] unsigned int Index) + ID3D10EffectType::GetMemberName +
+ + +

Get the semantic attached to a member.

+
+

A zero-based index.

+

A string that contains the semantic.

+ + bb173719 + const char* ID3D10EffectType::GetMemberSemantic([In] unsigned int Index) + ID3D10EffectType::GetMemberSemantic +
+ + +

Tests that the effect type is valid.

+
+ + bb173723 + IsValid + IsValid + BOOL ID3D10EffectType::IsValid() +
+ + +

Get an effect-type description.

+
+ +

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

+
+ + bb173717 + GetDesc + GetDesc + HRESULT ID3D10EffectType::GetDesc([Out] D3D10_EFFECT_TYPE_DESC* pDesc) +
+ + +

A geometry-shader interface manages an executable program (a geometry shader) that controls the geometry-shader stage.

+
+ +

The geometry-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.

To create a geometry shader interface, call either or . Before using a geometry shader you must bind it to the device by calling .

This interface is defined in D3D10.h.

+
+ + bb173774 + ID3D10GeometryShader + ID3D10GeometryShader +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + An array of instances describing the layout of the output buffers. + The size, in bytes, of each element in the array pointed to by pSODeclaration. This parameter is only used when the output slot is 0 for all entries in pSODeclaration. + + + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the constant buffers used by the geometry shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

+
+ + bb173580 + void ID3D10Device::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + ID3D10Device::GSSetConstantBuffers +
+ + +

Set the constant buffers used by the geometry shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

+
+ + bb173580 + void ID3D10Device::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + ID3D10Device::GSSetConstantBuffers +
+ + +

Set a geometry shader to the device.

+
+

Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

+ +

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173582 + void ID3D10Device::GSSetShader([In, Optional] ID3D10GeometryShader* pShader) + ID3D10Device::GSSetShader +
+ + +

Bind an array of shader resources to the geometry shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173583 + void ID3D10Device::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::GSSetShaderResources +
+ + +

Bind an array of shader resources to the geometry shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173583 + void ID3D10Device::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::GSSetShaderResources +
+ + +

Set an array of sampler states to the geometry shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173581 + void ID3D10Device::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + ID3D10Device::GSSetSamplers +
+ + +

Set an array of sampler states to the geometry shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173581 + void ID3D10Device::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + ID3D10Device::GSSetSamplers +
+ + +

Get the constant buffers used by the geometry shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173576 + void ID3D10Device::GSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) + ID3D10Device::GSGetConstantBuffers +
+ + +

Get the geometry shader currently set on the device.

+
+

Address of a reference to a geometry shader (see ) to be returned by the method.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173578 + void ID3D10Device::GSGetShader([Out] ID3D10GeometryShader** ppGeometryShader) + ID3D10Device::GSGetShader +
+ + +

Get the geometry shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from.

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173579 + void ID3D10Device::GSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::GSGetShaderResources +
+ + +

Get an array of sampler states from the geometry shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173577 + void ID3D10Device::GSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) + ID3D10Device::GSGetSamplers +
+ + +

An information-queue interface stores, retrieves, and filters debug messages. The queue consists of a message queue, an optional storage filter stack, and a optional retrieval filter stack.

+
+ +

This interface is obtained by turning on the debug layer and querying it from the Interface using IUnknown::QueryInterface.

hr = ( null, g_driverType, null, , , &sd, &g_pSwapChain, &g_pd3dDevice );	
+            ...	
+             * infoQueue;	
+            g_pd3dDevice->QueryInterface(__uuidof(),  (void **)&infoQueue); 	
+            
+
+ + bb173779 + ID3D10InfoQueue + ID3D10InfoQueue +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the maximum number of messages that can be added to the message queue.

+
+

Maximum number of messages that can be added to the message queue. -1 means no limit.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

+
+ + bb173813 + HRESULT ID3D10InfoQueue::SetMessageCountLimit([In] unsigned longlong MessageCountLimit) + ID3D10InfoQueue::SetMessageCountLimit +
+ + +

Clear all messages from the message queue.

+
+ + bb173786 + void ID3D10InfoQueue::ClearStoredMessages() + ID3D10InfoQueue::ClearStoredMessages +
+ + +

Get a message from the message queue.

+
+

Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with ). 0 is the message at the front of the message queue.

+

Returned message (see ).

+

Size of pMessage in bytes, including the size of the message string that the pMessage points to.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

This method does not remove any messages from the message queue.

This method gets messages from the message queue after an optional retrieval filter has been applied.

Applications should call this method twice to retrieve a message - first to obtain the size of the message and second to get the message. Here is a typical example:

 // Get the size of the message	
+             messageLength = 0;	
+             hr = pInfoQueue->GetMessage(0, null, &messageLength); // Allocate space and get the message	
+             * pMessage = (*)malloc(messageLength);	
+            hr = pInfoQueue->GetMessage(0, pMessage, &messageLength);	
+            

For an overview see Information Queue Overview.

+
+ + bb173790 + HRESULT ID3D10InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength) + ID3D10InfoQueue::GetMessageW +
+ + +

Get the number of messages that were allowed to pass through a storage filter.

+
+

Number of messages allowed by a storage filter.

+ + bb173793 + unsigned longlong ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter() + ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter +
+ + +

Get the number of messages that were denied passage through a storage filter.

+
+

Number of messages denied by a storage filter.

+ + bb173794 + unsigned longlong ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter() + ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter +
+ + +

Get the number of messages currently stored in the message queue.

+
+

Number of messages currently stored in the message queue.

+ + bb173796 + unsigned longlong ID3D10InfoQueue::GetNumStoredMessages() + ID3D10InfoQueue::GetNumStoredMessages +
+ + +

Get the number of messages that are able to pass through a retrieval filter.

+
+

Number of messages allowed by a retrieval filter.

+ + bb173797 + unsigned longlong ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() + ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter +
+ + +

Get the number of messages that were discarded due to the message count limit.

+
+

Number of messages discarded.

+ +

Get and set the message count limit with and , respectively.

+
+ + bb173795 + unsigned longlong ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() + ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit +
+ + +

Get the maximum number of messages that can be added to the message queue.

+
+

Maximum number of messages that can be added to the queue. -1 means no limit.

+ +

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

+
+ + bb173791 + unsigned longlong ID3D10InfoQueue::GetMessageCountLimit() + ID3D10InfoQueue::GetMessageCountLimit +
+ + +

Add storage filters to the top of the storage-filter stack.

+
+

Array of storage filters (see ).

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

A storage filter defines a grouping of debug messages that should be allowed into the info queue.

+
+ + bb173783 + HRESULT ID3D10InfoQueue::AddStorageFilterEntries([In] D3D10_INFO_QUEUE_FILTER* pFilter) + ID3D10InfoQueue::AddStorageFilterEntries +
+ + +

Get the storage filter at the top of the storage-filter stack.

+
+

Storage filter at the top of the storage-filter stack.

+

Size of the storage filter in bytes. If pFilter is null, the size of the storage filter will be output to this parameter.

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173800 + HRESULT ID3D10InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) + ID3D10InfoQueue::GetStorageFilter +
+ + +

Remove a storage filter from the top of the storage-filter stack.

+
+ + bb173785 + void ID3D10InfoQueue::ClearStorageFilter() + ID3D10InfoQueue::ClearStorageFilter +
+ + +

Push an empty storage filter onto the storage-filter stack.

+
+

This method returns one of the following Direct3D 10 Return Codes.

+ +

An empty storage filter allows all messages to pass through.

+
+ + bb173807 + HRESULT ID3D10InfoQueue::PushEmptyStorageFilter() + ID3D10InfoQueue::PushEmptyStorageFilter +
+ + +

Push a copy of storage filter currently on the top of the storage-filter stack onto the storage-filter stack.

+
+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173805 + HRESULT ID3D10InfoQueue::PushCopyOfStorageFilter() + ID3D10InfoQueue::PushCopyOfStorageFilter +
+ + +

Push a storage filter onto the storage-filter stack.

+
+

Pointer to a storage filter (see ).

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173809 + HRESULT ID3D10InfoQueue::PushStorageFilter([In] D3D10_INFO_QUEUE_FILTER* pFilter) + ID3D10InfoQueue::PushStorageFilter +
+ + +

Pop a storage filter from the top of the storage-filter stack.

+
+ + bb173803 + void ID3D10InfoQueue::PopStorageFilter() + ID3D10InfoQueue::PopStorageFilter +
+ + +

Get the size of the storage-filter stack in bytes.

+
+

Size of the storage-filter stack in bytes.

+ + bb173801 + unsigned int ID3D10InfoQueue::GetStorageFilterStackSize() + ID3D10InfoQueue::GetStorageFilterStackSize +
+ + +

Add storage filters to the top of the retrieval-filter stack.

+
+

Array of retrieval filters (see ).

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

A retrieval filter is used to define a subgroup of the messages that are already in the info queue. Retrieval filters affect the messages that will be returned by .

The number of messages already in the info queue that will be allowed through the retrieval filter can be determined by calling .

+
+ + bb173782 + HRESULT ID3D10InfoQueue::AddRetrievalFilterEntries([In] D3D10_INFO_QUEUE_FILTER* pFilter) + ID3D10InfoQueue::AddRetrievalFilterEntries +
+ + +

Get the retrieval filter at the top of the retrieval-filter stack.

+
+

Retrieval filter at the top of the retrieval-filter stack.

+

Size of the retrieval filter in bytes. If pFilter is null, the size of the retrieval filter will be output to this parameter.

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173798 + HRESULT ID3D10InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) + ID3D10InfoQueue::GetRetrievalFilter +
+ + +

Remove a retrieval filter from the top of the retrieval-filter stack.

+
+ + bb173784 + void ID3D10InfoQueue::ClearRetrievalFilter() + ID3D10InfoQueue::ClearRetrievalFilter +
+ + +

Push an empty retrieval filter onto the retrieval-filter stack.

+
+

This method returns one of the following Direct3D 10 Return Codes.

+ +

An empty retrieval filter allows all messages to pass through.

+
+ + bb173806 + HRESULT ID3D10InfoQueue::PushEmptyRetrievalFilter() + ID3D10InfoQueue::PushEmptyRetrievalFilter +
+ + +

Push a copy of retrieval filter currently on the top of the retrieval-filter stack onto the retrieval-filter stack.

+
+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173804 + HRESULT ID3D10InfoQueue::PushCopyOfRetrievalFilter() + ID3D10InfoQueue::PushCopyOfRetrievalFilter +
+ + +

Push a retrieval filter onto the retrieval-filter stack.

+
+

Pointer to a retrieval filter (see ).

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173808 + HRESULT ID3D10InfoQueue::PushRetrievalFilter([In] D3D10_INFO_QUEUE_FILTER* pFilter) + ID3D10InfoQueue::PushRetrievalFilter +
+ + +

Pop a retrieval filter from the top of the retrieval-filter stack.

+
+ + bb173802 + void ID3D10InfoQueue::PopRetrievalFilter() + ID3D10InfoQueue::PopRetrievalFilter +
+ + +

Get the size of the retrieval-filter stack in bytes.

+
+

Size of the retrieval-filter stack in bytes.

+ + bb173799 + unsigned int ID3D10InfoQueue::GetRetrievalFilterStackSize() + ID3D10InfoQueue::GetRetrievalFilterStackSize +
+ + +

Add a Direct3D 10 debug message to the message queue and send that message to debug output.

+
+

Category of a message (see ).

+

Severity of a message (see ).

+

Unique identifier of a message (see ).

+

User-defined message.

+

This method returns one of the following Direct3D 10 Return Codes.

+ +

This method is used by the runtime's internal mechanisms to add Direct3D 10 debug messages to the message queue and send them to debug output. For applications to add their own custom messages to the message queue and send them to debug output, call .

+
+ + bb173781 + HRESULT ID3D10InfoQueue::AddMessage([In] D3D10_MESSAGE_CATEGORY Category,[In] D3D10_MESSAGE_SEVERITY Severity,[In] D3D10_MESSAGE_ID ID,[In] const char* pDescription) + ID3D10InfoQueue::AddMessage +
+ + +

Add a user-defined message to the message queue and send that message to debug output.

+
+

Severity of a message (see ).

+

Message string.

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173780 + HRESULT ID3D10InfoQueue::AddApplicationMessage([In] D3D10_MESSAGE_SEVERITY Severity,[In] const char* pDescription) + ID3D10InfoQueue::AddApplicationMessage +
+ + +

Set a message category to break on when a message with that category passes through the storage filter.

+
+

Message category to break on (see ).

+

Turns this breaking condition on or off (true for on, false for off).

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173810 + HRESULT ID3D10InfoQueue::SetBreakOnCategory([In] D3D10_MESSAGE_CATEGORY Category,[In] BOOL bEnable) + ID3D10InfoQueue::SetBreakOnCategory +
+ + +

Set a message severity level to break on when a message with that severity level passes through the storage filter.

+
+

Message severity level to break on (see ).

+

Turns this breaking condition on or off (true for on, false for off).

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173812 + HRESULT ID3D10InfoQueue::SetBreakOnSeverity([In] D3D10_MESSAGE_SEVERITY Severity,[In] BOOL bEnable) + ID3D10InfoQueue::SetBreakOnSeverity +
+ + +

Set a message identifier to break on when a message with that identifier passes through the storage filter.

+
+

Message identifier to break on (see ).

+

Turns this breaking condition on or off (true for on, false for off).

+

This method returns one of the following Direct3D 10 Return Codes.

+ + bb173811 + HRESULT ID3D10InfoQueue::SetBreakOnID([In] D3D10_MESSAGE_ID ID,[In] BOOL bEnable) + ID3D10InfoQueue::SetBreakOnID +
+ + +

Get a message category to break on when a message with that category passes through the storage filter.

+
+

Message category to break on (see ).

+

Whether this breaking condition is turned on or off (true for on, false for off).

+ + bb173787 + BOOL ID3D10InfoQueue::GetBreakOnCategory([In] D3D10_MESSAGE_CATEGORY Category) + ID3D10InfoQueue::GetBreakOnCategory +
+ + +

Get a message severity level to break on when a message with that severity level passes through the storage filter.

+
+

Message severity level to break on (see ).

+

Whether this breaking condition is turned on or off (true for on, false for off).

+ + bb173789 + BOOL ID3D10InfoQueue::GetBreakOnSeverity([In] D3D10_MESSAGE_SEVERITY Severity) + ID3D10InfoQueue::GetBreakOnSeverity +
+ + +

Get a message identifier to break on when a message with that identifier passes through the storage filter.

+
+

Message identifier to break on (see ).

+

Whether this breaking condition is turned on or off (true for on, false for off).

+ + bb173788 + BOOL ID3D10InfoQueue::GetBreakOnID([In] D3D10_MESSAGE_ID ID) + ID3D10InfoQueue::GetBreakOnID +
+ + +

Set a boolean that turns the debug output on or off.

+
+

Disable/Enable the debug output (TRUE to disable or mute the output, to enable the output).

+ +

This will stop messages that pass the storage filter from being printed out in the debug output, however those messages will still be added to the message queue.

+
+ + bb173814 + void ID3D10InfoQueue::SetMuteDebugOutput([In] BOOL bMute) + ID3D10InfoQueue::SetMuteDebugOutput +
+ + +

Get a boolean that turns the debug output on or off.

+
+

Whether the debug output is on or off (true for on, false for off).

+ + bb173792 + BOOL ID3D10InfoQueue::GetMuteDebugOutput() + ID3D10InfoQueue::GetMuteDebugOutput +
+ + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3D10InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[Out, Buffer, Optional] D3D10_MESSAGE* pMessage,[InOut] SIZE_T* pMessageByteLength) + + + + No documentation. + + No documentation. + + HRESULT ID3D10InfoQueue::GetStorageFilter([Out, Buffer, Optional] D3D10_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength) + + + + No documentation. + + No documentation. + + HRESULT ID3D10InfoQueue::GetRetrievalFilter([Out, Buffer, Optional] D3D10_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength) + + + +

Get or sets the maximum number of messages that can be added to the message queue.

+
+ +

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

+
+ + bb173791 + GetMessageCountLimit / SetMessageCountLimit + GetMessageCountLimit + unsigned longlong ID3D10InfoQueue::GetMessageCountLimit() +
+ + +

Get the number of messages that were allowed to pass through a storage filter.

+
+ + bb173793 + GetNumMessagesAllowedByStorageFilter + GetNumMessagesAllowedByStorageFilter + unsigned longlong ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter() +
+ + +

Get the number of messages that were denied passage through a storage filter.

+
+ + bb173794 + GetNumMessagesDeniedByStorageFilter + GetNumMessagesDeniedByStorageFilter + unsigned longlong ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter() +
+ + +

Get the number of messages currently stored in the message queue.

+
+ + bb173796 + GetNumStoredMessages + GetNumStoredMessages + unsigned longlong ID3D10InfoQueue::GetNumStoredMessages() +
+ + +

Get the number of messages that are able to pass through a retrieval filter.

+
+ + bb173797 + GetNumStoredMessagesAllowedByRetrievalFilter + GetNumStoredMessagesAllowedByRetrievalFilter + unsigned longlong ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() +
+ + +

Get the number of messages that were discarded due to the message count limit.

+
+ +

Get and set the message count limit with and , respectively.

+
+ + bb173795 + GetNumMessagesDiscardedByMessageCountLimit + GetNumMessagesDiscardedByMessageCountLimit + unsigned longlong ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() +
+ + +

Get the size of the storage-filter stack in bytes.

+
+ + bb173801 + GetStorageFilterStackSize + GetStorageFilterStackSize + unsigned int ID3D10InfoQueue::GetStorageFilterStackSize() +
+ + +

Get the size of the retrieval-filter stack in bytes.

+
+ + bb173799 + GetRetrievalFilterStackSize + GetRetrievalFilterStackSize + unsigned int ID3D10InfoQueue::GetRetrievalFilterStackSize() +
+ + +

Get or sets a boolean that turns the debug output on or off.

+
+ + bb173792 + GetMuteDebugOutput / SetMuteDebugOutput + GetMuteDebugOutput + BOOL ID3D10InfoQueue::GetMuteDebugOutput() +
+ + +

An input-layout interface accesses the input data for the input-assembler stage.

+
+ +

This interface is created by calling ; use to bind it to the graphics pipeline.

+
+ + bb173815 + ID3D10InputLayout + ID3D10InputLayout +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the object to describe the + input-buffer data for the input-assembler stage. + + ID3D10Device::CreateInputLayout + The device used to create the layout. + An array of input elements describing the layout of the input data. + The compiled shader used to validate the input elements. + + + +

Applications use the methods of the interface to manipulate mesh objects.

+
+ +

To obtain the interface, call .

+
+ + bb173897 + ID3DX10Mesh + ID3DX10Mesh +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the number of faces in the mesh.

+
+

Returns the number of faces in the mesh.

+ + bb173915 + unsigned int ID3DX10Mesh::GetFaceCount() + ID3DX10Mesh::GetFaceCount +
+ + +

Get the number of vertices in the mesh. A mesh may contain multiple vertex buffers (i.e. one vertex buffer may contain all position data, another may contains all texture coordinate data, etc.), however each vertex buffer will contain the same number of elements.

+
+

The number of vertices in the mesh.

+ + bb173921 + unsigned int ID3DX10Mesh::GetVertexCount() + ID3DX10Mesh::GetVertexCount +
+ + +

Get the number of vertex buffers in the mesh.

+
+

The number of vertex buffers in the mesh.

+ + bb173920 + unsigned int ID3DX10Mesh::GetVertexBufferCount() + ID3DX10Mesh::GetVertexBufferCount +
+ + +

Access the mesh's creation flags.

+
+

The creation flags passed into the options parameter of when the mesh was created. See D3DX10_MESH.

+ + bb173916 + unsigned int ID3DX10Mesh::GetFlags() + ID3DX10Mesh::GetFlags +
+ + +

Access the vertex description passed into . The vertex description describes the layout of the mesh's vertex buffers.

+
+ No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173922 + HRESULT ID3DX10Mesh::GetVertexDescription([Out, Buffer] const D3D10_INPUT_ELEMENT_DESC** ppDesc,[In] unsigned int* pDeclCount) + ID3DX10Mesh::GetVertexDescription +
+ + +

Set vertex data into one of the mesh's vertex buffers.

+
+

The vertex buffer to be filled with pData.

+

The vertex data to set.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173931 + HRESULT ID3DX10Mesh::SetVertexData([In] unsigned int iBuffer,[In] const void* pData) + ID3DX10Mesh::SetVertexData +
+ + +

Retrieves the vertex buffer associated with the mesh.

+
+

The vertex buffer to get. This is an index value.

+

The vertex buffer. See

+ + bb173919 + HRESULT ID3DX10Mesh::GetVertexBuffer([In] unsigned int iBuffer,[In] ID3DX10MeshBuffer** ppVertexBuffer) + ID3DX10Mesh::GetVertexBuffer +
+ + +

Set the mesh's index data.

+
+

The index data.

+

The number of indices in pData.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173929 + HRESULT ID3DX10Mesh::SetIndexData([In] const void* pData,[In] unsigned int cIndices) + ID3DX10Mesh::SetIndexData +
+ + +

Retrieves the data in an index buffer.

+
+

Address of a reference to a interface, representing the index buffer associated with the mesh.

+ + bb173917 + HRESULT ID3DX10Mesh::GetIndexBuffer([In] ID3DX10MeshBuffer** ppIndexBuffer) + ID3DX10Mesh::GetIndexBuffer +
+ + +

Set the mesh's attribute data.

+
+

The attribute data to set.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173927 + HRESULT ID3DX10Mesh::SetAttributeData([In] const void* pData) + ID3DX10Mesh::SetAttributeData +
+ + +

Access the mesh's attribute buffer.

+
+

The attribute buffer. See .

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173911 + HRESULT ID3DX10Mesh::GetAttributeBuffer([In] ID3DX10MeshBuffer** ppAttributeBuffer) + ID3DX10Mesh::GetAttributeBuffer +
+ + +

Sets the attribute table for a mesh and the number of entries stored in the table.

+
+

Pointer to an array of structures, representing the entries in the mesh attribute table.

+

Number of attributes in the mesh attribute table.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling again.

+
+ + bb173928 + HRESULT ID3DX10Mesh::SetAttributeTable([In, Buffer] const D3DX10_ATTRIBUTE_RANGE* pAttribTable,[In] unsigned int cAttribTableSize) + ID3DX10Mesh::SetAttributeTable +
+ + +

Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh.

+
+

Pointer to an array of structures, representing the entries in the mesh's attribute table. Specify null to retrieve the value for pAttribTableSize.

+

Pointer to either the number of entries stored in pAttribTable or a value to be filled in with the number of entries stored in the attribute table for the mesh.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame.

+
+ + bb173912 + HRESULT ID3DX10Mesh::GetAttributeTable([Out, Buffer, Optional] D3DX10_ATTRIBUTE_RANGE* pAttribTable,[InOut] unsigned int* pAttribTableSize) + ID3DX10Mesh::GetAttributeTable +
+ + +

Generate a list of mesh edges, as well as a list of faces that share each edge.

+
+

Specifies that vertices that differ in position by less than epsilon should be treated as coincident.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

After an application generates adjacency information for a mesh, the mesh data can be optimized for better drawing performance.

The order of the entries in the adjacency buffer is determined by the order of the vertex indices in the index buffer. The adjacent triangle 0 always corresponds to the edge between the indices of the corners 0 and 1. The adjacent triangle 1 always corresponds to the edge between the indices of the corners 1 and 2 while the adjacent triangle 2 corresponds to the edge between the indices of the corners 2 and 0.

+
+ + bb173907 + HRESULT ID3DX10Mesh::GenerateAdjacencyAndPointReps([In] float Epsilon) + ID3DX10Mesh::GenerateAdjacencyAndPointReps +
+ + +

Adds adjacency data to the mesh's index buffer. When the mesh is to be sent to a geometry shader that takes adjacency data, it is neccessary for the mesh's index buffer to contain adjacency data.

+
+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173909 + HRESULT ID3DX10Mesh::GenerateGSAdjacency() + ID3DX10Mesh::GenerateGSAdjacency +
+ + +

Set the mesh's adjacency data.

+
+

The adjacency data to set.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173926 + HRESULT ID3DX10Mesh::SetAdjacencyData([In] const void* pAdjacency) + ID3DX10Mesh::SetAdjacencyData +
+ + +

Access the mesh's adjacency buffer.

+
+

The adjacency buffer. See .

+ + bb173910 + HRESULT ID3DX10Mesh::GetAdjacencyBuffer([In] ID3DX10MeshBuffer** ppAdjacency) + ID3DX10Mesh::GetAdjacencyBuffer +
+ + +

Set the point rep data for the mesh.

+
+

The point rep data to set.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173930 + HRESULT ID3DX10Mesh::SetPointRepData([In] const void* pPointReps) + ID3DX10Mesh::SetPointRepData +
+ + +

Get the mesh's point rep buffer.

+
+

Pointer to a mesh buffer containing the mesh's point rep data. See .

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173918 + HRESULT ID3DX10Mesh::GetPointRepBuffer([In] ID3DX10MeshBuffer** ppPointReps) + ID3DX10Mesh::GetPointRepBuffer +
+ + +

Removes mesh data from the device that has been committed to the device (with ).

+
+ No documentation. +

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173904 + HRESULT ID3DX10Mesh::Discard([In] D3DX10_MESH_DISCARD_FLAGS dwDiscard) + ID3DX10Mesh::Discard +
+ + +

Creates a new mesh and fills it with the data of a previously loaded mesh.

+
+

Creation flags to be applied to the new mesh. See D3DX10_MESH.

+

The semantic name for the position data.

+

Array of structures, describing the vertex format for the returned mesh. See .

+

The number of elements in the pDesc array.

+

The new mesh.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173902 + HRESULT ID3DX10Mesh::CloneMesh([In] unsigned int Flags,[In] const char* pPosSemantic,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDesc,[In] unsigned int DeclCount,[In] ID3DX10Mesh** ppCloneMesh) + ID3DX10Mesh::CloneMesh +
+ + +

Generates a new mesh with reordered faces and vertices to optimize drawing performance.

+
+

Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except , , and ).

+

An array of UINTs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is null, face remap data is not returned.

+

Address of a reference to an Interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling . The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.

This method is very similar to the method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh.

+
+ + bb173925 + HRESULT ID3DX10Mesh::Optimize([In] unsigned int Flags,[Out, Buffer, Optional] unsigned int* pFaceRemap,[In] void** ppVertexRemap) + ID3DX10Mesh::Optimize +
+ + +

Generate an attribute buffer from the data in the mesh's attribute table. An attribute buffer is another format for storing the data in the attribute table. Both the attribute buffer and the attribute table are internal data structures in the mesh.

+
+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb173908 + HRESULT ID3DX10Mesh::GenerateAttributeBufferFromTable() + ID3DX10Mesh::GenerateAttributeBufferFromTable +
+ + +

Determines if a ray intersects with this mesh.

+
+

Pointer to a structure, specifying the point where the ray begins.

+

Pointer to a structure, specifying the direction of the ray.

+

The number of times the ray intersected with the mesh.

+

Pointer to an index value of the face closest to the ray origin, if pHit is TRUE.

+

Pointer to a barycentric hit coordinate, U.

+

Pointer to a barycentric hit coordinate, V.

+

Pointer to a ray intersection parameter distance.

+

Pointer to an Interface, containing an array of D3DX10_INTERSECT_INFO structures. This is a list of all the hits that occurred in the intersection test.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

This API provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

+
+ + bb173923 + HRESULT ID3DX10Mesh::Intersect([In] D3DXVECTOR3* pRayPos,[In] D3DXVECTOR3* pRayDir,[In] unsigned int* pHitCount,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3D10Blob** ppAllHits) + ID3DX10Mesh::Intersect +
+ + +

Determines if a ray intersects with a subset of this mesh.

+
+

Attribute ID identifying the subset of the mesh.

+

Pointer to a structure, specifying the point where the ray begins.

+

Pointer to a structure, specifying the direction of the ray.

+

The number of times the ray intersected with the mesh.

+

Pointer to an index value of the face closest to the ray origin, if pHit is TRUE.

+

Pointer to a barycentric hit coordinate, U.

+

Pointer to a barycentric hit coordinate, V.

+

Pointer to a ray intersection parameter distance.

+

Pointer to an Interface, containing an array of D3DX10_INTERSECT_INFO structures. This is a list of all the hits that occurred in the intersection test.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

This API provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

+
+ + bb173924 + HRESULT ID3DX10Mesh::IntersectSubset([In] unsigned int AttribId,[In] D3DXVECTOR3* pRayPos,[In] D3DXVECTOR3* pRayDir,[In] unsigned int* pHitCount,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3D10Blob** ppAllHits) + ID3DX10Mesh::IntersectSubset +
+ + +

Commit any changes made to a mesh to the device so that the changes can be rendered. This should be called after a mesh's data is altered and before it is rendered. A mesh cannot be rendered unless it is committed to the device. See remarks.

+
+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

When a mesh is loaded, it's data is loaded into staging resources, meaning the data can be altered but not rendered. When CommitToDevice is called, the data from the staging resources are copied into device resources so that they can be rendered. Although the data is committed to the device, the staging resources remain and can be modified. If any modifications are made to the staging resources, the staging resources must be committed to the device again in order for those changes to be rendered on screen.

+
+ + bb173903 + HRESULT ID3DX10Mesh::CommitToDevice() + ID3DX10Mesh::CommitToDevice +
+ + +

Draws a subset of a mesh.

+
+

Specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.

+
+ + bb173905 + HRESULT ID3DX10Mesh::DrawSubset([In] unsigned int AttribId) + ID3DX10Mesh::DrawSubset +
+ + +

Draw several instances of the same subset of a mesh.

+
+

Specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups. See remarks.

+

Number of instances to render.

+

Which instance to start fetching from in each buffer marked as instance data.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

A mesh contains an attribute table. The attribute table can divide a mesh into subsets, where each subset is identified with an attribute ID. For example, a mesh with 200 faces, divided into three subsets, might have an attribute table that looks like this:

AttribID 0Faces 0 ~ 50
AttribID 1Faces 51 ~ 125
AttribID 2Faces 126 ~ 200

?

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data.

Drawing instances with DrawSubsetInstanced is very similar to the process used with that is outlined in Instancing Sample. The key difference when using DrawSubsetInstanced is that vertex and index buffers must be extracted from the Interface object before the instancing data can be combined.

The following code illustrates extracting the vertex and index buffers from the mesh object.

 * vertexBuffer; pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer); * indexBuffer; pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer); 
+
+ + bb173906 + HRESULT ID3DX10Mesh::DrawSubsetInstanced([In] unsigned int AttribId,[In] unsigned int InstanceCount,[In] unsigned int StartInstanceLocation) + ID3DX10Mesh::DrawSubsetInstanced +
+ + +

Access the mesh's vertex buffer after it has been committed to the device with . This is different from , which returns the vertex buffer before it has been committed to the device.

+
+ No documentation. + No documentation. + + bb173914 + HRESULT ID3DX10Mesh::GetDeviceVertexBuffer([In] unsigned int iBuffer,[In] ID3D10Buffer** ppVertexBuffer) + ID3DX10Mesh::GetDeviceVertexBuffer +
+ + +

Access the mesh's index buffer after it has been committed to the device with . This is different from , which returns the index buffer before it has been committed to the device.

+
+ No documentation. + +

If the mesh's index buffer has not already been committed to the device, this API will automatically commit the index buffer before it returns a reference to the buffer.

+
+ + bb173913 + HRESULT ID3DX10Mesh::GetDeviceIndexBuffer([In] ID3D10Buffer** ppIndexBuffer) + ID3DX10Mesh::GetDeviceIndexBuffer +
+ + + Creates a mesh object using a declarator. + + Pointer to an , the device object to be associated with the mesh. + Array of elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF). + Semantic that identifies which part of the vertex declaration contains position information. + Number of vertices for the mesh. This parameter must be greater than 0. + Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved. + Combination of one or more flags from the , specifying options for the mesh. + HRESULT D3DX10CreateMesh([None] ID3D10Device* pDevice,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDeclaration,[None] int DeclCount,[None] const char* pPositionSemantic,[None] int VertexCount,[None] int FaceCount,[None] int Options,[None] ID3DX10Mesh** ppMesh) + + + + Creates a new mesh and fills it with the data of a previously loaded mesh. + + The semantic name for the position data. + Array of structures, describing the vertex format for the returned mesh. See . + Creation flags to be applied to the new mesh. See . + returns the Mesh cloned. + HRESULT ID3DX10Mesh::CloneMesh([None] int Flags,[None] const char* pPosSemantic,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDesc,[None] int DeclCount,[None] ID3DX10Mesh** ppCloneMesh) + + + + Access the mesh's attribute buffer. + + Returns the attribute buffer. See . + HRESULT ID3DX10Mesh::GetAttributeBuffer([None] ID3DX10MeshBuffer** ppAttribute) + + + + Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh. + + + An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame. + + Returns an array of structures, representing the entries in the mesh's attribute table. + HRESULT ID3DX10Mesh::GetAttributeTable([Out, Buffer, Optional] D3DX10_ATTRIBUTE_RANGE* pAttribTable,[None] int* pAttribTableSize) + + + + Get the mesh's point rep buffer. + + Returns a mesh buffer containing the mesh's point rep data. See . + HRESULT ID3DX10Mesh::GetPointRepBuffer([None] ID3DX10MeshBuffer** ppPointReps) + + + + Optimizes the mesh data. + + Flags indicating which optimizations to perform. + A result code. + + + + Generates a new mesh with reordered faces and vertices to optimize drawing performance. + + + This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling . The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other. This method is very similar to the method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh. + + Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except D3DXMESH_32BIT, D3DXMESH_IB_WRITEONLY, and D3DXMESH_WRITEONLY). + An array of UINTs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. + An array of index for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT ID3DX10Mesh::Optimize([None] int Flags,[Out, Buffer, Optional] int* pFaceRemap,[In] LPD3D10BLOB* ppVertexRemap) + + + + Set the mesh's adjacency data. + + The adjacency data to set + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT ID3DX10Mesh::SetAdjacencyData([In] const int* pAdjacency) + + + + Set the mesh's attribute data. + + The attribute data to set. + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT ID3DX10Mesh::SetAttributeData([In] const int* pData) + + + + Sets the attribute table for a mesh and the number of entries stored in the table. + + + If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling ID3DX10Mesh::Optimize again. + + an array of structures, representing the entries in the mesh attribute table. + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT ID3DX10Mesh::SetAttributeTable([In, Buffer] const D3DX10_ATTRIBUTE_RANGE* pAttribTable,[None] int cAttribTableSize) + + + + Set the mesh's index data. + + The index data. + The number of indices in pData. + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT ID3DX10Mesh::SetIndexData([None] const void* pData,[None] int cIndices) + + + + Set the point rep data for the mesh. + + The point rep data to set. + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT ID3DX10Mesh::SetPointRepData([None] const int* pPointReps) + + + + Set vertex data into one of the mesh's vertex buffers. + + The vertex buffer to be filled with pData. + The vertex data to set. + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT ID3DX10Mesh::SetVertexData([None] int iBuffer,[None] const void* pData) + + + +

Retrieves the number of faces in the mesh.

+
+ + bb173915 + GetFaceCount + GetFaceCount + unsigned int ID3DX10Mesh::GetFaceCount() +
+ + +

Get the number of vertices in the mesh. A mesh may contain multiple vertex buffers (i.e. one vertex buffer may contain all position data, another may contains all texture coordinate data, etc.), however each vertex buffer will contain the same number of elements.

+
+ + bb173921 + GetVertexCount + GetVertexCount + unsigned int ID3DX10Mesh::GetVertexCount() +
+ + +

Get the number of vertex buffers in the mesh.

+
+ + bb173920 + GetVertexBufferCount + GetVertexBufferCount + unsigned int ID3DX10Mesh::GetVertexBufferCount() +
+ + + Access the mesh's creation flags. + + The creation flags passed into the options parameter of when the mesh was created. See {{D3DX10_MESH}}. + int ID3DX10Mesh::GetFlags() + + + +

A mesh buffer is a buffer that contains data about a mesh. It can contain one of five different types of data: vertex data, index data, adjacency data, attribute data, or point rep data. The structure is used to access these five pieces of data through the following five APIs: , , , , or .

+
+ + bb173898 + ID3DX10MeshBuffer + ID3DX10MeshBuffer +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the mesh buffer memory to modify its contents.

+
+

Pointer to the buffer data.

+

Size of the buffer in bytes.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

Differences between Direct3D 9 and Direct3D 10:

Map() in Direct3D 10 is analogous to resource Map() in Direct3D 9.

?

+
+ + bb173900 + HRESULT ID3DX10MeshBuffer::Map([Out] void** ppData,[Out] SIZE_T* pSize) + ID3DX10MeshBuffer::Map +
+ + +

Unmap a buffer.

+
+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ +

Differences between Direct3D 9 and Direct3D 10:

Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.

?

+
+ + bb173901 + HRESULT ID3DX10MeshBuffer::Unmap() + ID3DX10MeshBuffer::Unmap +
+ + +

Get the size of the mesh buffer, in bytes.

+
+

The size of the mesh buffer, in bytes.

+ + bb173899 + SIZE_T ID3DX10MeshBuffer::GetSize() + ID3DX10MeshBuffer::GetSize +
+ + + Get a reference to the mesh buffer memory to modify its contents. + + + Differences between Direct3D 9 and Direct3D 10: Map() in Direct3D 10 is analogous to resource Map() in Direct3D 9. ? + + Returns a reference to the mesh buffer memory to modify its contents + HRESULT ID3DX10MeshBuffer::Map([Out] void** ppData,[Out] SIZE_T* pSize) + + + +

Get the size of the mesh buffer, in bytes.

+
+ + bb173899 + GetSize + GetSize + SIZE_T ID3DX10MeshBuffer::GetSize() +
+ + +

A pixel-shader interface manages an executable program (a pixel shader) that controls the pixel-shader stage.

+
+ +

The pixel-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.

To create a pixel shader interface, call . Before using a pixel shader you must bind it to the device by calling .

This interface is defined in D3D10.h.

+
+ + bb173821 + ID3D10PixelShader + ID3D10PixelShader +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + + + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind an array of shader resources to the pixel shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173606 + void ID3D10Device::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::PSSetShaderResources +
+ + +

Bind an array of shader resources to the pixel shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173606 + void ID3D10Device::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::PSSetShaderResources +
+ + +

Sets a pixel shader to the device.

+
+

Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

+ +

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173605 + void ID3D10Device::PSSetShader([In, Optional] ID3D10PixelShader* pPixelShader) + ID3D10Device::PSSetShader +
+ + +

Set an array of sampler states to the pixel shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MipLODBias0
MaxAnisotropy1
ComparisonFunc
BorderColor[0]1.0f
BorderColor[1]1.0f
BorderColor[2]1.0f
BorderColor[3]1.0f
MinLOD-FLT_MAX
MaxLODFLT_MAX

?

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173604 + void ID3D10Device::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + ID3D10Device::PSSetSamplers +
+ + +

Set an array of sampler states to the pixel shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MipLODBias0
MaxAnisotropy1
ComparisonFunc
BorderColor[0]1.0f
BorderColor[1]1.0f
BorderColor[2]1.0f
BorderColor[3]1.0f
MinLOD-FLT_MAX
MaxLODFLT_MAX

?

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173604 + void ID3D10Device::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + ID3D10Device::PSSetSamplers +
+ + +

Set the constant buffers used by the pixel shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173603 + void ID3D10Device::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + ID3D10Device::PSSetConstantBuffers +
+ + +

Set the constant buffers used by the pixel shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173603 + void ID3D10Device::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + ID3D10Device::PSSetConstantBuffers +
+ + +

Get the pixel shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from.

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173602 + void ID3D10Device::PSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::PSGetShaderResources +
+ + +

Get the pixel shader currently set on the device.

+
+

Address of a reference to a pixel shader (see ) to be returned by the method.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173601 + void ID3D10Device::PSGetShader([Out] ID3D10PixelShader** ppPixelShader) + ID3D10Device::PSGetShader +
+ + +

Get an array of sampler states from the pixel shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173600 + void ID3D10Device::PSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) + ID3D10Device::PSGetSamplers +
+ + +

Get the constant buffers used by the pixel shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173599 + void ID3D10Device::PSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) + ID3D10Device::PSGetConstantBuffers +
+ + +

A predicate interface determines whether geometry should be processed depending on the results of a previous draw call.

+
+ +

A predicate can be created with , and used with .

There are two types of predicates in Direct3D 10: stream-output-overflow predicates and occlusion predicates. Stream-output-overflow predicates will cause any geometry residing in stream-output buffers that were overflowed to not be processed. Occlusion predicates will cause any geometry that did not have a single sample pass the depth/stencil tests to not be processed.

For an example of occlusion-predicated rendering, see Draw Predicated Sample.

+
+ + bb173822 + ID3D10Predicate + ID3D10Predicate +
+ + +

A query interface queries information from the GPU.

+
+ +

A query can be created with .

This interface inherits the functionality of an Interface.

Query data is typically gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of query.

There are, however, some queries that do not require calls to Begin. For a list of possible queries see .

A query is typically executed as shown in the following code:

 queryDesc; ... // Fill out queryDesc structure  * pQuery;	
+            pDevice->CreateQuery(&queryDesc, &pQuery); pQuery->Begin(); ... // Issue graphis commands, do whatever pQuery->End(); UINT64 queryData; // This data type is different depending on the query type while(  != pQuery->GetData(&queryData, sizeof(UINT64), 0) )	
+            {	
+            }	
+            

When using a query that does not require a call to Begin, it still requires a call to End. The call to End causes the data returned by GetData to be accurate up until the last call to End.

+
+ + bb173823 + ID3D10Query + ID3D10Query +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a query description.

+
+

Pointer to a query description (see ).

+ + bb173824 + void ID3D10Query::GetDesc([Out] D3D10_QUERY_DESC* pDesc) + ID3D10Query::GetDesc +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The query description. + The newly created object. + + + +

Get a query description.

+
+ + bb173824 + GetDesc + GetDesc + void ID3D10Query::GetDesc([Out] D3D10_QUERY_DESC* pDesc) +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The query description. + The newly created object. + + + +

A rasterizer-state interface accesses rasterizer state for the rasterizer stage.

+
+ +

A rasterizer-state object is created with and bound to the pipeline with .

+
+ + bb173825 + ID3D10RasterizerState + ID3D10RasterizerState +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the properties of a rasterizer-state object.

+
+

Pointer to a rasterizer-state description (see ).

+ + bb173826 + void ID3D10RasterizerState::GetDesc([Out] D3D10_RASTERIZER_DESC* pDesc) + ID3D10RasterizerState::GetDesc +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + +

Get the properties of a rasterizer-state object.

+
+ + bb173826 + GetDesc + GetDesc + void ID3D10RasterizerState::GetDesc([Out] D3D10_RASTERIZER_DESC* pDesc) +
+ + +

A render-target-view interface identifies the render-target subresources that can be accessed during rendering.

+
+ +

To create a render-target view, call . To bind a render-target view to the pipeline, call .

A rendertarget is a resource that can be written by the output-merger stage at the end of a render pass. Each render-target should also have a corresponding depth-stencil view.

+
+ + bb173827 + ID3D10RenderTargetView + ID3D10RenderTargetView +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the properties of a render target view.

+
+

Pointer to the description of a render target view (see ).

+ + bb173828 + void ID3D10RenderTargetView::GetDesc([Out] D3D10_RENDER_TARGET_VIEW_DESC* pDesc) + ID3D10RenderTargetView::GetDesc +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. + ID3D10Device::CreateRenderTargetView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. + A structure describing the to be created. + ID3D10Device::CreateRenderTargetView + + + +

Get the properties of a render target view.

+
+ + bb173828 + GetDesc + GetDesc + void ID3D10RenderTargetView::GetDesc([Out] D3D10_RENDER_TARGET_VIEW_DESC* pDesc) +
+ + +

A sampler-state interface accesses sampler state for a texture.

+
+ +

Create a sampler-state object by calling .

To initialize sampler state, bind the sampler-state object to the pipeline by calling , , or .

+
+ + bb173833 + ID3D10SamplerState + ID3D10SamplerState +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the sampler state.

+
+

A reference to the sampler state (see ).

+ + bb173834 + void ID3D10SamplerState::GetDesc([Out] D3D10_SAMPLER_DESC* pDesc) + ID3D10SamplerState::GetDesc +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + +

Get the sampler state.

+
+ + bb173834 + GetDesc + GetDesc + void ID3D10SamplerState::GetDesc([Out] D3D10_SAMPLER_DESC* pDesc) +
+ + +

A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.

+
+ +

To create a shader-resource view, call .

A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling , or .

+
+ + bb173854 + ID3D10ShaderResourceView + ID3D10ShaderResourceView +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the shader resource view's description.

+
+

A reference to a structure to be filled with data about the shader resource view.

+ + bb173855 + void ID3D10ShaderResourceView::GetDesc([Out] D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc) + ID3D10ShaderResourceView::GetDesc +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + ID3D10Device::CreateShaderResourceView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + A structure describing the to be created. + ID3D10Device::CreateShaderResourceView + + + + Create a shader-resource view from a file. Read the characteristics of a texture when the texture is loaded. + + A reference to the device (see ) that will use the resource. + Name of the file that contains the shader-resource view. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file. + + A reference to the device (see ) that will use the resource. + Name of the file that contains the shader-resource view. + Identifies the characteristics of a texture (see ) when the data processor is created. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in memory. + + A reference to the device (see ) that will use the resource. + Pointer to a memory location that contains the shader-resource view. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in memory. + + A reference to the device (see ) that will use the resource. + Pointer to a memory location that contains the shader-resource view. + Identifies the characteristics of a texture (see ) when the data processor is created. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in a stream.. + + A reference to the device (see ) that will use the resource. + Pointer to the file in memory that contains the shader-resource view. + Size of the file to read from the stream + Returns a reference to the shader-resource view (see ). + HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in a stream.. + + A reference to the device (see ) that will use the resource. + Pointer to the file in memory that contains the shader-resource view. + Size of the file to read from the stream + Identifies the characteristics of a texture (see ) when the data processor is created. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + +

Get the shader resource view's description.

+
+ + bb173855 + GetDesc + GetDesc + void ID3D10ShaderResourceView::GetDesc([Out] D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc) +
+ + +

A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.

+
+ +

To create a shader-resource view, call .

A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling , or .

This method requires Windows Vista Service Pack 1.

+
+ + bb694557 + ID3D10ShaderResourceView1 + ID3D10ShaderResourceView1 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the shader resource view's description.

+
+

A reference to a structure to be filled with data about the shader resource view.

+ +

This method requires Windows Vista Service Pack 1.

+
+ + bb694558 + void ID3D10ShaderResourceView1::GetDesc1([Out] D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc) + ID3D10ShaderResourceView1::GetDesc1 +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + ID3D10Device1::CreateShaderResourceView1 + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + A structure describing the to be created. + ID3D10Device1::CreateShaderResourceView1 + + + +

Get the shader resource view's description.

+
+ +

This method requires Windows Vista Service Pack 1.

+
+ + bb694558 + GetDesc1 + GetDesc1 + void ID3D10ShaderResourceView1::GetDesc1([Out] D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc) +
+ + +

allows you to optimize, process, and manually set the relationship between bones and vertices in your meshes (see Skeletal Animation on Wikipedia). It is most useful for making .x files exported by DCC Apps (such as 3DS Max and Maya) more hardware-friendly, and for improving the render speed of your skinned meshes in software render mode.

+
+ +

Create a interface with , D3DX10CreateSkinInfoFromBlendedMesh, or D3DX10CreateSkinInfoFVF.

The LPD3DX10SKININFO type is defined as a reference to the interface.

 typedef struct  *LPD3DX10SKININFO;	
+            
+
+ + bb173932 + ID3DX10SkinInfo + ID3DX10SkinInfo +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the number of vertices in .

+
+

The number of vertices in .

+ + bb173945 + unsigned int ID3DX10SkinInfo::GetNumVertices() + ID3DX10SkinInfo::GetNumVertices +
+ + +

Get the number of bones in .

+
+

The number of bones in .

+ + bb173944 + unsigned int ID3DX10SkinInfo::GetNumBones() + ID3DX10SkinInfo::GetNumBones +
+ + +

Get the number of vertices a bone can maximally influence.

+
+

The number of vertices a bone can maximally influence.

+ + bb173943 + unsigned int ID3DX10SkinInfo::GetMaxBoneInfluences() + ID3DX10SkinInfo::GetMaxBoneInfluences +
+ + +

Allocate space for additional vertices.

+
+

The number of vertices to add.

+

If this method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY.

+ + bb173935 + HRESULT ID3DX10SkinInfo::AddVertices([In] unsigned int Count) + ID3DX10SkinInfo::AddVertices +
+ + +

Change which vertices are influenced by which bones.

+
+

The new number of vertices.

+

A reference to an array of vertex indices, which describe the remapping. For example, say SkinInfo contains some vertices such that bone0 is mapped to v0, bone1 to v1, and bone2 to v2, and array with 2,1,0 is specified for pBoneRemap. This will cause bone0 to be mapped to v2, bone1 to v1, and bone2 to v0.

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.

+ + bb173947 + HRESULT ID3DX10SkinInfo::RemapVertices([In] unsigned int NewVertexCount,[In, Buffer] unsigned int* pVertexRemap) + ID3DX10SkinInfo::RemapVertices +
+ + +

Allocate space for more bones.

+
+

The number of bones to add.

+

If this method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY.

+ + bb173934 + HRESULT ID3DX10SkinInfo::AddBones([In] unsigned int Count) + ID3DX10SkinInfo::AddBones +
+ + +

Remove a bone.

+
+

An index that specifies which bone to remove. Must be between 0 and the value returned by .

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

+ + bb173948 + HRESULT ID3DX10SkinInfo::RemoveBone([In] unsigned int Index) + ID3DX10SkinInfo::RemoveBone +
+ + +

Change which bones influence which vertices.

+
+

The new number of bones.

+

A reference to an array of bone indices, which describe the remapping. For example, say SkinInfo contains some bones such that bone0 is mapped to v0, bone1 to v1, and bone2 to v2, and array with 2,1,0 is specified for pBoneRemap. This will cause bone0 to be mapped to v2, bone1 to v1, and bone2 to v0.

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.

+ + bb173946 + HRESULT ID3DX10SkinInfo::RemapBones([In] unsigned int NewBoneCount,[In, Buffer] unsigned int* pBoneRemap) + ID3DX10SkinInfo::RemapBones +
+ + +

Enable an existing bone to influence a group of vertices and define how much influence the bone has on each vertex.

+
+

An index that specifies an existing bone. Must be between 0 and the value returned by .

+

Number of vertices to add to the bone's influence.

+

Pointer to an array of vertex indices. Each member of this array has a corresponding member in pWeights, such that pIndices[i] corresponds to pWeights[i]. The corresponding value in pWeights[i] determines how much influence BoneIndex will have on the vertex indexed by pIndices[i]. The size of the pIndices array must be equal to or greater than InfluenceCount.

+

Pointer to an array of bone weights. Each member of this array has a corresponding member in pIndices, such that pWeights[i] corresponds to pIndices[i]. Each value in pWeights is between 0 and 1 and defines the amount of influence the bone has over each vertex. The size of pWeights must be equal to or greater than InfluenceCount.

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY.

+ + bb173933 + HRESULT ID3DX10SkinInfo::AddBoneInfluences([In] unsigned int BoneIndex,[In] unsigned int InfluenceCount,[In, Buffer] unsigned int* pIndices,[In, Buffer] float* pWeights) + ID3DX10SkinInfo::AddBoneInfluences +
+ + +

Clear a bone's list of vertices that it influences.

+
+

An index that specifies an existing bone. Must be between 0 and the value returned by .

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

+ + bb173936 + HRESULT ID3DX10SkinInfo::ClearBoneInfluences([In] unsigned int BoneIndex) + ID3DX10SkinInfo::ClearBoneInfluences +
+ + +

Get the number of vertices that a given bone influences.

+
+

An index that specifies an existing bone. Must be between 0 and the value returned by .

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

+ + bb173941 + unsigned int ID3DX10SkinInfo::GetBoneInfluenceCount([In] unsigned int BoneIndex) + ID3DX10SkinInfo::GetBoneInfluenceCount +
+ + +

Get a list of vertices that a given bone influences and a list of the amount of influence that bone has on each vertex.

+
+

An index that specifies an existing bone. Must be between 0 and the value returned by .

+

An offset from the top of the bone's list of influenced vertices. This must be between 0 and the value returned by .

+

The number of indices and weights to retrieve. Must be between 0 and the value returned by .

+

A list of indices into the vertex buffer, each one representing a vertex influenced by the bone. These values correspond to the values in pDestWeights, such that pDestIndices[i] corresponds to pDestWeights[i].

+

A list of the amount of influence the bone has on each vertex. These values correspond to the values in pDestIndices, such that pDestWeights[i] corresponds to pDestIndices[i].f

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY.

+ + bb173942 + HRESULT ID3DX10SkinInfo::GetBoneInfluences([In] unsigned int BoneIndex,[In] unsigned int Offset,[In] unsigned int Count,[Out, Buffer] unsigned int* pDestIndices,[Out, Buffer] float* pDestWeights) + ID3DX10SkinInfo::GetBoneInfluences +
+ + +

Find the index that indicates where a given vertex is in a given bone's list of influenced vertices.

+
+

An index that specifies an existing bone. Must be between 0 and the value returned by .

+

The index of the vertex in the vertex buffer.

+

The index of the vertex in the bone's list of influenced vertices.

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

+ + bb173939 + HRESULT ID3DX10SkinInfo::FindBoneInfluenceIndex([In] unsigned int BoneIndex,[In] unsigned int VertexIndex,[In] unsigned int* pInfluenceIndex) + ID3DX10SkinInfo::FindBoneInfluenceIndex +
+ + +

Set the amount of influence a given bone has over a given vertex.

+
+

An index that specifies an existing bone. Must be between 0 and the value returned by .

+

An index into the bone's list of vertices that it influences.

+

The amount of influence, between 0 and 1, that the bone has over the vertex.

+

If the method succeeds, the return value is . If the method fails, the return value can be E_INVALIDARG.

+ + bb173949 + HRESULT ID3DX10SkinInfo::SetBoneInfluence([In] unsigned int BoneIndex,[In] unsigned int InfluenceIndex,[In] float Weight) + ID3DX10SkinInfo::SetBoneInfluence +
+ + +

Get the amount of influence a given bone has over a given vertex.

+
+

An index that specifies an existing bone. Must be between 0 and the value returned by .

+

An index into the bone's list of vertices that it influences.

+

The amount of influence, between 0 and 1, that the bone has over the vertex.

+

If the method succeeds, the return value is . If the method fails, the return value can be E_INVALIDARG.

+ +

Use to find out how many vertices the bone influences.

+
+ + bb173940 + HRESULT ID3DX10SkinInfo::GetBoneInfluence([In] unsigned int BoneIndex,[In] unsigned int InfluenceIndex,[In] float* pWeight) + ID3DX10SkinInfo::GetBoneInfluence +
+ + +

Limit the number of bones that can influence a vertex and/or limit the amount of influence a bone can have on a vertex.

+
+

The maximum number of bones that can influence any given vertex. This value is ignored if it is greater than the value returned by .

+

A flag describing how to scale the remaining weights on a given vertex after some have been chopped off by MinWeight. If D3DX10_SKININFO_NO_SCALING is specified, the weights will not be scaled at all. If D3DX10_SKININFO_SCALE_TO_1 is specified, the weights greater than MinWeight will be scaled up so that they add up to 1.0. If D3DX10_SKININFO_SCALE_TO_TOTAL is specified, the weights greater than MinWeight will be scaled up so that they add up to the original total.

+

The minimum percentage of influence, or weight, that any bone can have on any vertex. This value must be between 0 and 1.

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.

+ + bb173937 + HRESULT ID3DX10SkinInfo::Compact([In] unsigned int MaxPerVertexInfluences,[In] unsigned int ScaleMode,[In] float MinWeight) + ID3DX10SkinInfo::Compact +
+ + +

Do software skinning on an array of vertices.

+
+

A 0-based index into pSrcVertices.

+

Number of vertices to transform.

+

Pointer to an array of vertices to transform.

+

The size, in bytes, of a vertex in pSrcVertices.

+

Pointer to an array of vertices, which will be filled with the transformed vertices.

+

The size, in bytes, of a vertex in pDestVertices.

+

An array of matrices that will be used to transform the points mapped to each bone, such that the vertices mapped to bone[i] will be transformed by pBoneMatrices[i]. This array will be used to transform the matrices only if the IsNormal value in pChannelDescs is set to , otherwise pInverseTransposeBoneMatrices will be used.

+

If this value is null, it will be set equal to pBoneMatrices. This array of matrices will be used to transform the vertices only if the IsNormal value in pChannelDescs is set to TRUE, otherwise pBoneMatrices will be used.

+

Pointer to a structure, which determines the member of the vertex decl the software skinning will be done on.

+

The number of structures in pChannelDescs.

+

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

+ +

Here is an example of how to use software skinning:

 //vertex definition	
+            struct MyVertex	
+            {  Position;  Weight;  TexCoord;	
+            }; //create vertex data	
+            const UINT numVertices = 16;	
+            MyVertex vertices[numVertices] = {...};	
+            MyVertex destVertices[numVertices]; //create bone matrices	
+             boneMatrices[2];	
+            D3DXMatrixIdentity(&boneMatrices[0]);	
+            D3DXMatrixRotationX(&boneMatrices[1], 3.14159f / 180.0f); //create bone indices and weights	
+            UINT boneIndices[numVertices] = {...};	
+            float boneWeights[2][numVertices] = {...}; //create skin info, populate it with bones and vertices, and then map them to each other	
+             *pSkinInfo = null;	
+            (&pSkinInfo);	
+            pSkinInfo->AddBones(2);	
+            pSkinInfo->AddVertices(numVertices);	
+            pSkinInfo->AddBoneInfluences(0, numVertices, boneIndices, boneWeights[0]);	
+            pSkinInfo->AddBoneInfluences(1, numVertices, boneIndices, boneWeights[1]); //create channel desc	
+             channelDesc;	
+            channelDesc.SrcOffset = 0;	
+            channelDesc.DestOffset = 0;	
+            channelDesc.IsNormal = ; //do the skinning	
+            pSkinInfo->DoSoftwareSkinning(0, numVertices, vertices, sizeof(MyVertex),  destVertices, sizeof(MyVertex),  boneMatrices, null,  &channelDesc, 1);	
+            
+
+ + bb173938 + HRESULT ID3DX10SkinInfo::DoSoftwareSkinning([In] unsigned int StartVertex,[In] unsigned int VertexCount,[In] void* pSrcVertices,[In] unsigned int SrcStride,[In] void* pDestVertices,[In] unsigned int DestStride,[In] D3DXMATRIX* pBoneMatrices,[In, Optional] D3DXMATRIX* pInverseTransposeBoneMatrices,[In] D3DX10_SKINNING_CHANNEL* pChannelDescs,[In] unsigned int NumChannels) + ID3DX10SkinInfo::DoSoftwareSkinning +
+ + + Get a list of vertices that a given bone influences and a list of the amount of influence that bone has on each vertex. + + An index that specifies an existing bone. Must be between 0 and the value returned by . + An offset from the top of the bone's list of influenced vertices. This must be between 0 and the value returned by . + The number of indices and weights to retrieve. Must be between 0 and the value returned by ID3DX10SkinInfo::GetBoneInfluenceCount. + A list of indices into the vertex buffer, each one representing a vertex influenced by the bone. These values correspond to the values in pDestWeights, such that pDestIndices[i] corresponds to pDestWeights[i]. + A list of the amount of influence the bone has on each vertex. These values correspond to the values in pDestIndices, such that pDestWeights[i] corresponds to pDestIndices[i].f + If the method succeeds, the return value is S_OK. If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY. + HRESULT ID3DX10SkinInfo::GetBoneInfluences([None] int BoneIndex,[None] int Offset,[None] int Count,[Out, Buffer] int* pDestIndices,[Out, Buffer] float* pDestWeights) + + + +

Get the number of vertices in .

+
+ + bb173945 + GetNumVertices + GetNumVertices + unsigned int ID3DX10SkinInfo::GetNumVertices() +
+ + +

Get the number of bones in .

+
+ + bb173944 + GetNumBones + GetNumBones + unsigned int ID3DX10SkinInfo::GetNumBones() +
+ + +

Get the number of vertices a bone can maximally influence.

+
+ + bb173943 + GetMaxBoneInfluences + GetMaxBoneInfluences + unsigned int ID3DX10SkinInfo::GetMaxBoneInfluences() +
+ + +

The interface provides a set of methods that simplify the process of drawing sprites using Microsoft Direct3D. This interface can operate on a set of many sprites.

+
+ +

The interface is obtained by calling the function.

+
+ + bb205601 + ID3DX10Sprite + ID3DX10Sprite +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Prepare a device for drawing sprites.

+
+

Flags that control how the sprites will be drawn. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

Every call to Begin must be matched with a call to .

+
+ + bb205602 + HRESULT ID3DX10Sprite::Begin([In] D3DX10_SPRITE_FLAG flags) + ID3DX10Sprite::Begin +
+ + +

Add an array of sprites to the batch of sprites to be rendered. This must be called in between calls to and , and must be called before End to send all of the batched sprites to the device for rendering. This draw method is most useful when drawing a small number of sprites that you want buffered into a large batch, such as fonts.

+
+ No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb205603 + HRESULT ID3DX10Sprite::DrawSpritesBuffered([In, Buffer] D3DX10_SPRITE* pSprites,[In] unsigned int cSprites) + ID3DX10Sprite::DrawSpritesBuffered +
+ + +

Force all batched sprites to be submitted to the device. Device states remain as they were after the last call to . The list of batched sprites is then cleared.

+
+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205606 + HRESULT ID3DX10Sprite::Flush() + ID3DX10Sprite::Flush +
+ + +

Draw an array of sprites. This will immediately send the sprites to the device for rendering, which is different from which only adds an array of sprites to a batch of sprites to be rendered when is called. This draw method is most useful when drawing a large number of sprites that have already been sorted on the CPU (or do not need to be sorted), such as in a particle system. This must be called in between calls to and .

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb205604 + HRESULT ID3DX10Sprite::DrawSpritesImmediate([In, Buffer] D3DX10_SPRITE* pSprites,[In] unsigned int cSprites,[In] unsigned int cbSprite,[In] unsigned int flags) + ID3DX10Sprite::DrawSpritesImmediate +
+ + +

Call this after . If was specified when was called, this API will restore the device state to how it was before was called.

+
+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205605 + HRESULT ID3DX10Sprite::End() + ID3DX10Sprite::End +
+ + +

Get the view transform that applies to all sprites.

+
+

Pointer to a D3DX10MATRIX that will be set to the transform of the sprite from the original world space.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205609 + HRESULT ID3DX10Sprite::GetViewTransform([Out] D3DXMATRIX* pViewTransform) + ID3DX10Sprite::GetViewTransform +
+ + +

Set the view transform that applies to all sprites.

+
+

Pointer to a that contains a transform of the sprite from the original world space. Use this transform to scale, rotate, or transform the sprite.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205611 + HRESULT ID3DX10Sprite::SetViewTransform([In] D3DXMATRIX* pViewTransform) + ID3DX10Sprite::SetViewTransform +
+ + +

Get the sprite projection matrix that is applied to all sprites.

+
+

Pointer to a D3DX10MATRIX that will be set to the sprite's projection matrix.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb205608 + HRESULT ID3DX10Sprite::GetProjectionTransform([Out] D3DXMATRIX* pProjectionTransform) + ID3DX10Sprite::GetProjectionTransform +
+ + +

Set the projection matrix for all sprites.

+
+

The projection matrix to be used on all sprites.

+

The return value is one of the values listed in Direct3D 10 Return Codes.

+ + bb205610 + HRESULT ID3DX10Sprite::SetProjectionTransform([In] D3DXMATRIX* pProjectionTransform) + ID3DX10Sprite::SetProjectionTransform +
+ + +

Retrieve the device associated with the sprite object.

+
+

Address of a reference to an interface, representing the Direct3D device object associated with the sprite object.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

Calling this method will increase the internal reference count on the interface.

+
+ + bb205607 + HRESULT ID3DX10Sprite::GetDevice([Out] ID3D10Device** ppDevice) + ID3DX10Sprite::GetDevice +
+ + + Create a sprite for drawing a 2D texture. + + A reference to the device (see ) that will draw the sprite. + The size of the vertex buffer, in number of sprites, that will be sent to the device when or is called. This should be a small number if you know you will be rendering a small number of sprites at a time (to save memory) and a large number if you know you will be rendering a large number of sprites at a time. The maximum value is 4096. If 0 is specified, the vertex buffer size will automatically be set to 4096. + HRESULT D3DX10CreateSprite([None] ID3D10Device* pDevice,[None] int cDeviceBufferSize,[None] LPD3DX10SPRITE* ppSprite) + + + + Add an array of sprites to the batch of sprites to be rendered. This must be called in between calls to and , and must be called before End to send all of the batched sprites to the device for rendering. This draw method is most useful when drawing a small number of sprites that you want buffered into a large batch, such as fonts. + + The array of sprites to draw. See . + If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. + HRESULT ID3DX10Sprite::DrawSpritesBuffered([None] D3DX10_SPRITE* pSprites,[None] int cSprites) + + + + Draw an array of sprites. This will immediately send the sprites to the device for rendering, which is different from which only adds an array of sprites to a batch of sprites to be rendered when is called. This draw method is most useful when drawing a large number of sprites that have already been sorted on the CPU (or do not need to be sorted), such as in a particle system. This must be called in between calls to and . + + The array of sprites to draw. See . + If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. + HRESULT ID3DX10Sprite::DrawSpritesImmediate([In, Buffer] D3DX10_SPRITE* pSprites,[None] int cSprites,[None] int cbSprite,[None] int flags) + + + +

Get or sets the view transform that applies to all sprites.

+
+ + bb205609 + GetViewTransform / SetViewTransform + GetViewTransform + HRESULT ID3DX10Sprite::GetViewTransform([Out] D3DXMATRIX* pViewTransform) +
+ + +

Get or sets the sprite projection matrix that is applied to all sprites.

+
+ + bb205608 + GetProjectionTransform / SetProjectionTransform + GetProjectionTransform + HRESULT ID3DX10Sprite::GetProjectionTransform([Out] D3DXMATRIX* pProjectionTransform) +
+ + +

Retrieve the device associated with the sprite object.

+
+ +

Calling this method will increase the internal reference count on the interface.

+
+ + bb205607 + GetDevice + GetDevice + HRESULT ID3DX10Sprite::GetDevice([Out] ID3D10Device** ppDevice) +
+ + +

A state-block interface encapsulates render states.

+
+ +

To create a state-block interface, call .

This interface can be used to save and restore pipeline state. It can also be used to capture the current state.

+
+ + bb173856 + ID3D10StateBlock + ID3D10StateBlock +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Capture the current value of states that are included in a stateblock.

+
+

Returns one of the following Direct3D 10 Return Codes.

+ +

Capture captures current values for states within an existing state block. It does not capture the entire state of the device. Creating an empty stateblock and calling Capture does nothing if no states have been set.

+
+ + bb173858 + HRESULT ID3D10StateBlock::Capture() + ID3D10StateBlock::Capture +
+ + +

Apply the state block to the current device state.

+
+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173857 + HRESULT ID3D10StateBlock::Apply() + ID3D10StateBlock::Apply +
+ + +

Release all references to device objects.

+
+

Returns one of the following Direct3D 10 Return Codes.

+ +

Each time you return a reference to an interface (by calling ), the internal reference count is incremented; when you are finished using a stateblock, call this method to release all references and avoid a memory leak.

+
+ + cc627127 + HRESULT ID3D10StateBlock::ReleaseAllDeviceObjects() + ID3D10StateBlock::ReleaseAllDeviceObjects +
+ + +

Get the device.

+
+

Pointer to the interface that is returned.

+

Returns one of the following Direct3D 10 Return Codes.

+ + bb173859 + HRESULT ID3D10StateBlock::GetDevice([Out] ID3D10Device** ppDevice) + ID3D10StateBlock::GetDevice +
+ + + Create a state block. + + + A state block is a collection of device state, and is used for saving and restoring device state. Use a state-block mask to enable subsets of state for saving and restoring. The structure can be filled manually or by using any of the D3D10StateBlockMaskXXX APIs. A state block mask can also be obtained by calling or . Differences between Direct3D 9 and Direct3D 10: In Direct3D 10, a state block object does not contain any valid information about the state of the device until is called. In Direct3D 9, state is saved in a state block object, when it is created. ? + + The device for which the state block will be created. + Indicates which parts of the device state will be captured when calling and reapplied when calling . See remarks. + HRESULT D3D10CreateStateBlock([None] ID3D10Device* pDevice,[None] D3D10_STATE_BLOCK_MASK* pStateBlockMask,[None] ID3D10StateBlock** ppStateBlock) + + + +

Get the device.

+
+ + bb173859 + GetDevice + GetDevice + HRESULT ID3D10StateBlock::GetDevice([Out] ID3D10Device** ppDevice) +
+ + +

A switch-to-reference interface (see the switch-to-reference layer) enables an application to switch between a hardware and software device.

+
+ +

This interface is obtained by calling QueryInterface on a Interface created with the flag.

+
+ + bb173860 + ID3D10SwitchToRef + ID3D10SwitchToRef +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Switch between a hardware and a software device.

+
+

A boolean value. Set this to TRUE to change to a software device, set this to to change to a hardware device.

+

The previous value of UseRef.

+ +

This API will fail if the device is not switchable; you must have created a device that is switchable by specifying the flag during device creation (when calling ).

Switching from a software device to a hardware device clears all cached objects from system memory. Switching from a hardware device to a software device causes resources to be downloaded to system memory.

+
+ + bb173862 + BOOL ID3D10SwitchToRef::SetUseRef([In] BOOL UseRef) + ID3D10SwitchToRef::SetUseRef +
+ + +

Get a boolean value that indicates the type of device being used.

+
+

TRUE if the device is a software device, if the device is a hardware device. See remarks.

+ +

A hardware device is commonly referred to as a HAL device, which stands for a hardware accelerated device. This means that the pipeline is rendering all of the pipeline commands in hardware, using the GPU. Operating the pipeline with a HAL device gives the best performance generally, but it can be more difficult to debug since resources exist on the GPU instead of the CPU.

A software device implements rendering in software using the CPU with no hardware acceleration. A software device is commonly referred to as a reference device or REF device. Because a REF device implements rendering on the CPU, it is generally slower, but is easier to debug since it allows access to resources.

+
+ + bb173861 + BOOL ID3D10SwitchToRef::GetUseRef() + ID3D10SwitchToRef::GetUseRef +
+ + +

Get a boolean value that indicates the type of device being used.

+
+ +

A hardware device is commonly referred to as a HAL device, which stands for a hardware accelerated device. This means that the pipeline is rendering all of the pipeline commands in hardware, using the GPU. Operating the pipeline with a HAL device gives the best performance generally, but it can be more difficult to debug since resources exist on the GPU instead of the CPU.

A software device implements rendering in software using the CPU with no hardware acceleration. A software device is commonly referred to as a reference device or REF device. Because a REF device implements rendering on the CPU, it is generally slower, but is easier to debug since it allows access to resources.

+
+ + bb173861 + GetUseRef + GetUseRef + BOOL ID3D10SwitchToRef::GetUseRef() +
+ + +

A 1D texture interface accesses texel data, which is structured memory.

+
+ +

To create an empty 1D texture, call . For more details on creating and loading textures, see Creating Texture Resources.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

+
+ + bb173863 + ID3D10Texture1D + ID3D10Texture1D +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the data contained in a subresource, and deny the GPU access to that subresource.

+
+

Index number of the subresource. See D3D10CalcSubresource for more details.

+

Specifies the CPU's read and write permissions for a resource. For possible values, see .

+

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

+

Pointer to the texture resource data.

+

If this function succeeds, it returns . For other restrictions, and a listing of error values that can be returned by any of the Map methods, see Remarks.

+ + bb173865 + HRESULT ID3D10Texture1D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] void** ppData) + ID3D10Texture1D::Map +
+ + +

Invalidate the reference to a resource that was retrieved by , and re-enable the GPU's access to that resource.

+
+ No documentation. + +

A subresource must be mapped before Unmap is called.

Differences between Direct3D 9 and Direct3D 10:

Unmap in Direct3D 10 is analogous to resource Unlock in Direct3D 9.

?

+
+ + bb173866 + void ID3D10Texture1D::Unmap([In] unsigned int Subresource) + ID3D10Texture1D::Unmap +
+ + +

Get the properties of the texture resource.

+
+

Pointer to a resource description (see ).

+ + bb173864 + void ID3D10Texture1D::GetDesc([Out] D3D10_TEXTURE1D_DESC* pDesc) + ID3D10Texture1D::GetDesc +
+ + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + The initial texture data. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + + + + Maps the texture, providing CPU access to its contents. + + The mip slice to map. + The IO operations to enable on the CPU. + Flags indicating how the CPU should respond when the GPU is busy. + A data stream containing the mapped data. This data stream is invalidated + when the buffer is unmapped. + + + +

Get the properties of the texture resource.

+
+ + bb173864 + GetDesc + GetDesc + void ID3D10Texture1D::GetDesc([Out] D3D10_TEXTURE1D_DESC* pDesc) +
+ + +

A 2D texture interface manages texel data, which is structured memory.

+
+ +

To create an empty Texture2D resource, call . For more details on creating and loading textures, see Creating Texture Resources.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

+
+ + bb173867 + ID3D10Texture2D + ID3D10Texture2D +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the data contained in a subresource, and deny GPU access to that subresource.

+
+

Index number of the subresource. See D3D10CalcSubresource for more details.

+

Integer that specifies the CPU's read and write permissions for a resource. For possible values, see .

+

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

+

Pointer to a structure () that is filled in by the function and contains a reference to the resource data.

+

If this function succeeds, it returns .

All of the Map methods have identical return values and operating restrictions. These are listed in the remarks section of .

+ + bb173869 + HRESULT ID3D10Texture2D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] D3D10_MAPPED_TEXTURE2D* pMappedTex2D) + ID3D10Texture2D::Map +
+ + +

Invalidate the reference to the resource that was retrieved by , and re-enable GPU access to the resource.

+
+ No documentation. + +

A subresource must be mapped before Unmap is called.

Differences between Direct3D 9 and Direct3D 10:

Unmap in Direct3D 10 is analogous to resource Unlock in Direct3D 9.

?

+
+ + bb173870 + void ID3D10Texture2D::Unmap([In] unsigned int Subresource) + ID3D10Texture2D::Unmap +
+ + +

Get the properties of the texture resource.

+
+

Pointer to a resource description (see ).

+ + bb173868 + void ID3D10Texture2D::GetDesc([Out] D3D10_TEXTURE2D_DESC* pDesc) + ID3D10Texture2D::GetDesc +
+ + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + The initial texture data. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + + + + Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture. + + The source height map texture. + The destination texture. + One or more flags that control generation of normal maps. + One or more flag specifying the source of height information. + Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible. + A object describing the result of the operation. + + + + Maps the texture, providing CPU access to its contents. + + The mip slice to map. + The IO operations to enable on the CPU. + Flags indicating how the CPU should respond when the GPU is busy. + A data rectangle containing the mapped data. This data stream is invalidated when the buffer is unmapped. + + + + Maps the texture, providing CPU access to its contents. + + The mip slice to map. + The IO operations to enable on the CPU. + Flags indicating how the CPU should respond when the GPU is busy. + The data stream. + + A data rectangle containing the mapped data. This data stream is invalidated when the buffer is unmapped. + + + + +

Get the properties of the texture resource.

+
+ + bb173868 + GetDesc + GetDesc + void ID3D10Texture2D::GetDesc([Out] D3D10_TEXTURE2D_DESC* pDesc) +
+ + +

A 3D texture interface accesses texel data, which is structured memory.

+
+ +

To create an empty Texture3D resource, call . For more details on creating and loading textures, see Creating Texture Resources.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

+
+ + bb173871 + ID3D10Texture3D + ID3D10Texture3D +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the data contained in a subresource, and deny GPU access to that subresource.

+
+

Index number of the subresource. See D3D10CalcSubresourcefor more details.

+

Specifies the CPU's read and write permissions for a resource. For possible values, see .

+

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

+

Pointer to a structure () that is filled in by the function and contains a reference to the resource data.

+

If this function succeeds, it returns . All of the Map methods have identical return values and operating restrictions. These are listed in the remarks section of .

+ + bb173873 + HRESULT ID3D10Texture3D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] D3D10_MAPPED_TEXTURE3D* pMappedTex3D) + ID3D10Texture3D::Map +
+ + +

Invalidate the reference to the resource retrieved by , and re-enable the GPU's access to the resource.

+
+ No documentation. + +

A subresource must be mapped before Unmap is called.

Differences between Direct3D 9 and Direct3D 10:

Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.

?

+
+ + bb173874 + void ID3D10Texture3D::Unmap([In] unsigned int Subresource) + ID3D10Texture3D::Unmap +
+ + +

Get the properties of the texture resource.

+
+

Pointer to a resource description (see ).

+ + bb173872 + void ID3D10Texture3D::GetDesc([Out] D3D10_TEXTURE3D_DESC* pDesc) + ID3D10Texture3D::GetDesc +
+ + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + The initial texture data. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + + + + Maps the texture, providing CPU access to its contents. + + The mip slice to map. + The IO operations to enable on the CPU. + Flags indicating how the CPU should respond when the GPU is busy. + + A databox containing the mapped data. This data stream is invalidated when the buffer is unmapped. + + + + + Maps the texture, providing CPU access to its contents. + + The mip slice to map. + The IO operations to enable on the CPU. + Flags indicating how the CPU should respond when the GPU is busy. + The data stream. + + A databox containing the mapped data. This data stream is invalidated when the buffer is unmapped. + + + + +

Get the properties of the texture resource.

+
+ + bb173872 + GetDesc + GetDesc + void ID3D10Texture3D::GetDesc([Out] D3D10_TEXTURE3D_DESC* pDesc) +
+ + +

A vertex-shader interface manages an executable program (a vertex shader) that controls the vertex-shader stage.

+
+ +

The vertex-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.

To create a vertex shader interface, call . Before using a vertex shader you must bind it to the device by calling .

This interface is defined in D3D10.h.

+
+ + bb173875 + ID3D10VertexShader + ID3D10VertexShader +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + + + +

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

+
+ +

A device is created using .

+
+ + bb173528 + ID3D10Device + ID3D10Device +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the constant buffers used by the vertex shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173626 + void ID3D10Device::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + ID3D10Device::VSSetConstantBuffers +
+ + +

Set the constant buffers used by the vertex shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173626 + void ID3D10Device::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) + ID3D10Device::VSSetConstantBuffers +
+ + +

Set a vertex shader to the device.

+
+

Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

+ +

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173628 + void ID3D10Device::VSSetShader([In, Optional] ID3D10VertexShader* pVertexShader) + ID3D10Device::VSSetShader +
+ + +

Bind an array of shader resources to the vertex shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173629 + void ID3D10Device::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::VSSetShaderResources +
+ + +

Bind an array of shader resources to the vertex shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173629 + void ID3D10Device::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::VSSetShaderResources +
+ + +

Set an array of sampler states to the vertex shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173627 + void ID3D10Device::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + ID3D10Device::VSSetSamplers +
+ + +

Set an array of sampler states to the vertex shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

+
+ + bb173627 + void ID3D10Device::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) + ID3D10Device::VSSetSamplers +
+ + +

Get the constant buffers used by the vertex shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173622 + void ID3D10Device::VSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) + ID3D10Device::VSGetConstantBuffers +
+ + +

Get the vertex shader currently set on the device.

+
+

Address of a reference to a vertex shader (see ) to be returned by the method.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173624 + void ID3D10Device::VSGetShader([Out] ID3D10VertexShader** ppVertexShader) + ID3D10Device::VSGetShader +
+ + +

Get the vertex shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from.

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173625 + void ID3D10Device::VSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) + ID3D10Device::VSGetShaderResources +
+ + +

Get an array of sampler states from the vertex shader pipeline stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

+
+ + bb173623 + void ID3D10Device::VSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) + ID3D10Device::VSGetSamplers +
+ + +

Describes the blend state.

+
+ +

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
BlendEnable[8] (for all 8)
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask[8] (for all 8)

?

+
+ + bb204893 + D3D10_BLEND_DESC + D3D10_BLEND_DESC +
+ + +

Determines whether or not to use alpha-to-coverage as a multisampling technique when setting a pixel to a rendertarget.

+
+ + bb204893 + BOOL AlphaToCoverageEnable + BOOL AlphaToCoverageEnable +
+ + +

This blend option specifies the first RGB data source and includes an optional pre-blend operation.

+
+ + bb204893 + D3D10_BLEND SrcBlend + D3D10_BLEND SrcBlend +
+ + +

This blend option specifies the second RGB data source and includes an optional pre-blend operation.

+
+ + bb204893 + D3D10_BLEND DestBlend + D3D10_BLEND DestBlend +
+ + +

This blend operation defines how to combine the RGB data sources.

+
+ + bb204893 + D3D10_BLEND_OP BlendOp + D3D10_BLEND_OP BlendOp +
+ + +

This blend option specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

+
+ + bb204893 + D3D10_BLEND SrcBlendAlpha + D3D10_BLEND SrcBlendAlpha +
+ + +

This blend option specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

+
+ + bb204893 + D3D10_BLEND DestBlendAlpha + D3D10_BLEND DestBlendAlpha +
+ + +

This blend operation defines how to combine the alpha data sources.

+
+ + bb204893 + D3D10_BLEND_OP BlendOpAlpha + D3D10_BLEND_OP BlendOpAlpha +
+ + +

Enable (or disable) blending. There are eight elements in this array; these correspond to the eight rendertargets that can be set to output-merger stage at one time.

+
+ + bb204893 + BOOL BlendEnable[8] + BOOL BlendEnable +
+ + +

A per-pixel write mask that allows control over which components can be written (see ).

+
+ + bb204893 + D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask[8] + D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask +
+ + +

Describes the blend state for a Direct3D 10.1 device.

+
+ +

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for the blend description.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

This structure requires Windows Vista Service Pack 1.

If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the device performs the blend in linear space.

+
+ + bb694528 + D3D10_BLEND_DESC1 + D3D10_BLEND_DESC1 +
+ + +

Determines whether or not to use the alpha-to-coverage multisampling technique when setting a render-target pixel.

+
+ + bb694528 + BOOL AlphaToCoverageEnable + BOOL AlphaToCoverageEnable +
+ + +

Set to TRUE to enable independent blending in simultaneous render targets. If set to , only the RenderTarget[0] members are used. RenderTarget[1..7] are ignored.

+
+ + bb694528 + BOOL IndependentBlendEnable + BOOL IndependentBlendEnable +
+ + +

An array of render-target-blend descriptions (see ); these correspond to the eight rendertargets that can be set to the output-merger stage at one time.

+
+ + bb694528 + D3D10_RENDER_TARGET_BLEND_DESC1 RenderTarget[8] + D3D10_RENDER_TARGET_BLEND_DESC1 RenderTarget +
+ + +

Information about the video card's performance counter capabilities.

+
+ +

This structure is returned by .

+
+ + bb204906 + D3D10_COUNTER_INFO + D3D10_COUNTER_INFO +
+ + +

Largest device-dependent counter ID that the device supports. If none are supported, this value will be 0. Otherwise it will be greater than or equal to . See .

+
+ + bb204906 + D3D10_COUNTER LastDeviceDependentCounter + D3D10_COUNTER LastDeviceDependentCounter +
+ + +

Number of counters that can be simultaneously supported.

+
+ + bb204906 + unsigned int NumSimultaneousCounters + unsigned int NumSimultaneousCounters +
+ + +

Number of detectable parallel units that the counter is able to discern. Values are 1 ~ 4. Use NumDetectableParallelUnits to interpret the values of the VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, and OTHER_GPU_PROCESSING counters. See for an equation.

+
+ + bb204906 + unsigned char NumDetectableParallelUnits + unsigned char NumDetectableParallelUnits +
+ + +

Describes a counter.

+
+ + bb204905 + D3D10_COUNTER_DESC + D3D10_COUNTER_DESC +
+ + +

Type of counter (see ).

+
+ + bb204905 + D3D10_COUNTER Counter + D3D10_COUNTER Counter +
+ + +

Reserved.

+
+ + bb204905 + unsigned int MiscFlags + unsigned int MiscFlags +
+ + +

Describes the stencil operations that can be performed based on the results of stencil test.

+
+ +

The stencil operation can be set differently based on the outcome of the stencil test by using the StencilFunc member. This can be done for the stencil test portion of depth-stencil testing.

The structure is a member of the structure.

+
+ + bb205035 + D3D10_DEPTH_STENCILOP_DESC + D3D10_DEPTH_STENCILOP_DESC +
+ + + No documentation. + + + bb205035 + D3D10_STENCIL_OP StencilFailOp + D3D10_STENCIL_OP StencilFailOp + + + + No documentation. + + + bb205035 + D3D10_STENCIL_OP StencilDepthFailOp + D3D10_STENCIL_OP StencilDepthFailOp + + + + No documentation. + + + bb205035 + D3D10_STENCIL_OP StencilPassOp + D3D10_STENCIL_OP StencilPassOp + + + + No documentation. + + + bb205035 + D3D10_COMPARISON_FUNC StencilFunc + D3D10_COMPARISON_FUNC StencilFunc + + + +

Describes depth-stencil state.

+
+ +

Depth-stencil state controls how depth-stencil testing is performed by the output-merger stage.

The formats that support stenciling are and .

+
+ + bb205036 + D3D10_DEPTH_STENCIL_DESC + D3D10_DEPTH_STENCIL_DESC +
+ + +

A Boolean value that enables depth testing. The default value is TRUE.

+
+ + bb205036 + BOOL DepthEnable + BOOL DepthEnable +
+ + +

A member of the enumerated type that identifies a portion of the depth-stencil buffer that can be modified by depth data. The default value is .

+
+ + bb205036 + D3D10_DEPTH_WRITE_MASK DepthWriteMask + D3D10_DEPTH_WRITE_MASK DepthWriteMask +
+ + +

A member of the enumerated type that defines how depth data is compared against existing depth data. The default value is

+
+ + bb205036 + D3D10_COMPARISON_FUNC DepthFunc + D3D10_COMPARISON_FUNC DepthFunc +
+ + +

A Boolean value that enables stencil testing. The default value is .

+
+ + bb205036 + BOOL StencilEnable + BOOL StencilEnable +
+ + +

A value that identifies a portion of the depth-stencil buffer for reading stencil data. The default value is D3D10_DEFAULT_STENCIL_READ_MASK.

+
+ + bb205036 + unsigned char StencilReadMask + unsigned char StencilReadMask +
+ + +

A value that identifies a portion of the depth-stencil buffer for writing stencil data. The default value is D3D10_DEFAULT_STENCIL_WRITE_MASK.

+
+ + bb205036 + unsigned char StencilWriteMask + unsigned char StencilWriteMask +
+ + +

A structure that identifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing toward the camera.

+
+ + bb205036 + D3D10_DEPTH_STENCILOP_DESC FrontFace + D3D10_DEPTH_STENCILOP_DESC FrontFace +
+ + +

A structure that identifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from the camera.

+
+ + bb205036 + D3D10_DEPTH_STENCILOP_DESC BackFace + D3D10_DEPTH_STENCILOP_DESC BackFace +
+ + +

Specifies the subresource(s) from a texture that are accessible using a depth-stencil view.

+
+ +

These are valid formats for a depth-stencil view:

A depth-stencil view cannot use a typeless format. If the format chosen is , then the format of the parent resource is used.

A depth-stencil-view description is needed when calling .

+
+ + bb205037 + D3D10_DEPTH_STENCIL_VIEW_DESC + D3D10_DEPTH_STENCIL_VIEW_DESC +
+ + + No documentation. + + + bb205037 + DXGI_FORMAT Format + DXGI_FORMAT Format + + + + No documentation. + + + bb205037 + D3D10_DSV_DIMENSION ViewDimension + D3D10_DSV_DIMENSION ViewDimension + + + + No documentation. + + + bb205037 + D3D10_TEX1D_DSV Texture1D + D3D10_TEX1D_DSV Texture1D + + + + No documentation. + + + bb205037 + D3D10_TEX1D_ARRAY_DSV Texture1DArray + D3D10_TEX1D_ARRAY_DSV Texture1DArray + + + + No documentation. + + + bb205037 + D3D10_TEX2D_DSV Texture2D + D3D10_TEX2D_DSV Texture2D + + + + No documentation. + + + bb205037 + D3D10_TEX2D_ARRAY_DSV Texture2DArray + D3D10_TEX2D_ARRAY_DSV Texture2DArray + + + + No documentation. + + + bb205037 + D3D10_TEX2DMS_DSV Texture2DMS + D3D10_TEX2DMS_DSV Texture2DMS + + + + No documentation. + + + bb205037 + D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray + D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray + + + +

Specifies the subresource(s) from an array 2D textures that are accessible to a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + bb172470 + D3D10_TEX2D_ARRAY_DSV + D3D10_TEX2D_ARRAY_DSV +
+ + + No documentation. + + + bb172470 + unsigned int MipSlice + unsigned int MipSlice + + + + No documentation. + + + bb172470 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172470 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource(s) from an array of multisampled 2D textures for a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + bb172464 + D3D10_TEX2DMS_ARRAY_DSV + D3D10_TEX2DMS_ARRAY_DSV +
+ + + No documentation. + + + bb172464 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172464 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource(s) from an array of 1D textures to use in a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + bb172458 + D3D10_TEX1D_ARRAY_DSV + D3D10_TEX1D_ARRAY_DSV +
+ + + No documentation. + + + bb172458 + unsigned int MipSlice + unsigned int MipSlice + + + + No documentation. + + + bb172458 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172458 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource from a 1D texture that is accessible to a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + bb172461 + D3D10_TEX1D_DSV + D3D10_TEX1D_DSV +
+ + + No documentation. + + + bb172461 + unsigned int MipSlice + unsigned int MipSlice + + + +

Specifies the subresource from a multisampled 2D texture that is accessible to a depth-stencil view.

+
+ +

Since a multisampled 2D texture contains a single subtexture, there is nothing to specify; this unused member is included so that this structure will compile in C.

+
+ + bb172467 + D3D10_TEX2DMS_DSV + D3D10_TEX2DMS_DSV +
+ + + No documentation. + + + bb172467 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine + + + +

Specifies the subresource from a 2D texture that is accessible to a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + bb172473 + D3D10_TEX2D_DSV + D3D10_TEX2D_DSV +
+ + + No documentation. + + + bb172473 + unsigned int MipSlice + unsigned int MipSlice + + + +

Describes an effect.

+
+ +

To get an effect description, call .

+
+ + bb205047 + D3D10_EFFECT_DESC + D3D10_EFFECT_DESC +
+ + +

TRUE if the effect is a child effect; otherwise .

+
+ + bb205047 + BOOL IsChildEffect + BOOL IsChildEffect +
+ + +

The number of constant buffers.

+
+ + bb205047 + unsigned int ConstantBuffers + unsigned int ConstantBuffers +
+ + +

The number of constant buffers shared in an effect pool.

+
+ + bb205047 + unsigned int SharedConstantBuffers + unsigned int SharedConstantBuffers +
+ + +

The number of global variables.

+
+ + bb205047 + unsigned int GlobalVariables + unsigned int GlobalVariables +
+ + +

The number of global variables shared in an effect pool.

+
+ + bb205047 + unsigned int SharedGlobalVariables + unsigned int SharedGlobalVariables +
+ + +

The number of techniques.

+
+ + bb205047 + unsigned int Techniques + unsigned int Techniques +
+ + +

Describes an effect technique.

+
+ +

To get a technique, call .

+
+ + bb172457 + D3D10_TECHNIQUE_DESC + D3D10_TECHNIQUE_DESC +
+ + +

A string that contains the technique name; otherwise null.

+
+ + bb172457 + const char* Name + char Name +
+ + +

The number of passes in the technique.

+
+ + bb172457 + unsigned int Passes + unsigned int Passes +
+ + +

The number of annotations.

+
+ + bb172457 + unsigned int Annotations + unsigned int Annotations +
+ + +

Describes an effect-variable type.

+
+ +

To get an effect-variable type, call .

+
+ + bb205054 + D3D10_EFFECT_TYPE_DESC + D3D10_EFFECT_TYPE_DESC +
+ + +

A string that contains the variable name.

+
+ + bb205054 + const char* TypeName + char TypeName +
+ + +

The variable class (see D3D10_SHADER_VARIABLE_CLASS).

+
+ + bb205054 + D3D_SHADER_VARIABLE_CLASS Class + D3D_SHADER_VARIABLE_CLASS Class +
+ + +

The variable type (see D3D10_SHADER_VARIABLE_TYPE).

+
+ + bb205054 + D3D_SHADER_VARIABLE_TYPE Type + D3D_SHADER_VARIABLE_TYPE Type +
+ + +

The number of elements if the variable is an array; otherwise 0.

+
+ + bb205054 + unsigned int Elements + unsigned int Elements +
+ + +

The number of members if the variable is a structure; otherwise 0.

+
+ + bb205054 + unsigned int Members + unsigned int Members +
+ + +

The number of rows if the variable is a matrix; otherwise 0.

+
+ + bb205054 + unsigned int Rows + unsigned int Rows +
+ + +

The number of columns if the variable is a matrix; otherwise 0.

+
+ + bb205054 + unsigned int Columns + unsigned int Columns +
+ + +

The number of bytes that the variable consumes when it is packed tightly by the compiler.

+
+ + bb205054 + unsigned int PackedSize + unsigned int PackedSize +
+ + +

The number of bytes that the variable consumes before it is packed by the compiler.

+
+ + bb205054 + unsigned int UnpackedSize + unsigned int UnpackedSize +
+ + +

The number of bytes between elements.

+
+ + bb205054 + unsigned int Stride + unsigned int Stride +
+ + +

Describes an effect variable.

+
+ +

To get an effect-variable description, call .

+
+ + bb205056 + D3D10_EFFECT_VARIABLE_DESC + D3D10_EFFECT_VARIABLE_DESC +
+ + +

A string that contains the variable name.

+
+ + bb205056 + const char* Name + char Name +
+ + +

The semantic attached to the variable; otherwise null.

+
+ + bb205056 + const char* Semantic + char Semantic +
+ + +

Optional flags for effect variables.

+
+ + bb205056 + D3D10_EFFECT_VARIABLE_FLAGS Flags + D3D10_EFFECT_VARIABLE_FLAGS Flags +
+ + +

The number of annotations; otherwise 0.

+
+ + bb205056 + unsigned int Annotations + unsigned int Annotations +
+ + +

The offset between the beginning of the constant buffer and this variable; otherwise 0.

+
+ + bb205056 + unsigned int BufferOffset + unsigned int BufferOffset +
+ + +

The register that this variable is bound to. To bind a variable explicitly use the flag.

+
+ + bb205056 + unsigned int ExplicitBindPoint + unsigned int ExplicitBindPoint +
+ + +

Defines font attributes.

+
+ +

The compiler setting also determines the structure type. If Unicode is defined, the structure type resolves to a ; otherwise the structure type resolves to a D3DX10_FONT_DESCA.

Possible values of the above members are given in the GDI structure.

+
+ + bb172693 + D3DX10_FONT_DESCW + D3DX10_FONT_DESCW +
+ + +

Height, in logical units, of the font's character cell or character.

+
+ + bb172693 + int Height + int Height +
+ + +

Width, in logical units, of characters in the font.

+
+ + bb172693 + unsigned int Width + unsigned int Width +
+ + +

Weight of the font in the range from 0 through 1000.

+
+ + bb172693 + D3DX10_FONT_WEIGHT Weight + D3DX10_FONT_WEIGHT Weight +
+ + +

Number of mipmap levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created. If the value is 1, the texture space is mapped identically to the screen space.

+
+ + bb172693 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Set to TRUE for an Italic font.

+
+ + bb172693 + BOOL Italic + BOOL Italic +
+ + +

Character set.

+
+ + bb172693 + D3DX10_FONT_CHARSET CharSet + D3DX10_FONT_CHARSET CharSet +
+ + +

Output precision. The output precision defines how closely the output must match the requested font height, width, character orientation, escapement, pitch, and font type.

+
+ + bb172693 + D3DX10_FONT_PRECISION OutputPrecision + D3DX10_FONT_PRECISION OutputPrecision +
+ + +

Output quality.

+
+ + bb172693 + D3DX10_FONT_QUALITY Quality + D3DX10_FONT_QUALITY Quality +
+ + +

Pitch and family of the font.

+
+ + bb172693 + D3DX10_FONT_PITCHFAMILY PitchAndFamily + D3DX10_FONT_PITCHFAMILY PitchAndFamily +
+ + +

A null-terminated string that specifies the typeface name of the font. The length of the string must not exceed 32 characters, including the terminating null character. If FaceName is an empty string, the first font that matches the other specified attributes will be used. If the compiler settings require Unicode, the data type TCHAR resolves to WCHAR; otherwise, the data type resolves to CHAR. See Remarks.

+
+ + bb172693 + wchar_t FaceName[32] + wchar_t FaceName +
+ + +

Returns a description of the original contents of an image file.

+
+ + bb172695 + D3DX10_IMAGE_INFO + D3DX10_IMAGE_INFO +
+ + +

Width of original image in pixels.

+
+ + bb172695 + unsigned int Width + unsigned int Width +
+ + +

Height of original image in pixels.

+
+ + bb172695 + unsigned int Height + unsigned int Height +
+ + +

Depth of original image in pixels.

+
+ + bb172695 + unsigned int Depth + unsigned int Depth +
+ + +

Size of the texture array. ArraySize will be 1 for a single image.

+
+ + bb172695 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Number of mipmap levels in original image.

+
+ + bb172695 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Miscellaneous resource properties (see ).

+
+ + bb172695 + D3D10_RESOURCE_MISC_FLAG MiscFlags + D3D10_RESOURCE_MISC_FLAG MiscFlags +
+ + +

A value from the enumerated type that most closely describes the data in the original image.

+
+ + bb172695 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

Represents the type of the texture stored in the file. See .

+
+ + bb172695 + D3D10_RESOURCE_DIMENSION ResourceDimension + D3D10_RESOURCE_DIMENSION ResourceDimension +
+ + +

Represents the format of the image file. See .

+
+ + bb172695 + D3DX10_IMAGE_FILE_FORMAT ImageFileFormat + D3DX10_IMAGE_FILE_FORMAT ImageFileFormat +
+ + + Retrieves information about a given image file. + + File name of image to retrieve information about. + If the function succeeds, returns a filled with the description of the data in the source file. else returns null + HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) + + + + Retrieves information about a given image file from a memory location. + + an array to the image in memory + If the function succeeds, returns a filled with the description of the data from the image memory. else returns null + HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) + + + +

Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX10_DEFAULT for any of these parameters will cause D3DX to automatically use the value from the source file.

+
+ +

When initializing the structure, you may set any member to D3DX10_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.

This structure can be used by APIs that:

  • Create resources, such as and .
  • Create data processors, such as D3DX10CreateAsyncTextureInfoProcessor or + D3DX10CreateAsyncShaderResourceViewProcessor.
+
+ + bb172696 + D3DX10_IMAGE_LOAD_INFO + D3DX10_IMAGE_LOAD_INFO +
+ + + The default value for load options. + + + + +

The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.

+
+ + bb172696 + unsigned int Width + unsigned int Width +
+ + +

The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.

+
+ + bb172696 + unsigned int Height + unsigned int Height +
+ + +

The depth of the texture. This only applies to volume textures.

+
+ + bb172696 + unsigned int Depth + unsigned int Depth +
+ + +

The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.

+
+ + bb172696 + unsigned int FirstMipLevel + unsigned int FirstMipLevel +
+ + +

The maximum number of mipmap levels that the texture will have. Using 0 or D3DX10_DEFAULT will cause a full mipmap chain to be created.

+
+ + bb172696 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

The way the texture resource is intended to be used. See .

+
+ + bb172696 + D3D10_USAGE Usage + D3D10_USAGE Usage +
+ + +

The pipeline stages that the texture will be allowed to bind to. See .

+
+ + bb172696 + D3D10_BIND_FLAG BindFlags + D3D10_BIND_FLAG BindFlags +
+ + +

The access permissions the cpu will have for the texture resource. See .

+
+ + bb172696 + D3D10_CPU_ACCESS_FLAG CpuAccessFlags + D3D10_CPU_ACCESS_FLAG CpuAccessFlags +
+ + +

Miscellaneous resource properties (see ).

+
+ + bb172696 + D3D10_RESOURCE_MISC_FLAG MiscFlags + D3D10_RESOURCE_MISC_FLAG MiscFlags +
+ + +

The format the texture will be in after it is loaded. See .

+
+ + bb172696 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

Filter the texture using the specified filter (only when resampling). See .

+
+ + bb172696 + D3DX10_FILTER_FLAG Filter + D3DX10_FILTER_FLAG Filter +
+ + +

Filter the texture mip levels using the specified filter (only if generating mipmaps). Valid values are , , , or . See .

+
+ + bb172696 + D3DX10_FILTER_FLAG MipFilter + D3DX10_FILTER_FLAG MipFilter +
+ + +

Information about the original image. See . Can be obtained with , , or .

+
+ + bb172696 + D3DX10_IMAGE_INFO* pSrcInfo + D3DX10_IMAGE_INFO pSrcInfo +
+ + + Gets an ImageLoadInformation that is setup with all default values (). + + + + +

Allow or deny certain types of messages to pass through a filter.

+
+ +

is used to define the allow list and deny list in the structure.

+
+ + bb205314 + D3D10_INFO_QUEUE_FILTER + D3D10_INFO_QUEUE_FILTER +
+ + +

Number of message categories to allow or deny.

+
+ + bb205314 + D3D10_INFO_QUEUE_FILTER_DESC AllowList + D3D10_INFO_QUEUE_FILTER_DESC AllowList +
+ + +

Array of message categories to allow or deny. Array must have at least NumCategories members (see ).

+
+ + bb205314 + D3D10_INFO_QUEUE_FILTER_DESC DenyList + D3D10_INFO_QUEUE_FILTER_DESC DenyList +
+ + +

Allow or deny certain types of messages to pass through a filter.

+
+ +

is used to define the allow list and deny list in the structure.

+
+ + bb205314 + D3D10_INFO_QUEUE_FILTER_DESC + D3D10_INFO_QUEUE_FILTER_DESC +
+ + +

Number of message categories to allow or deny.

+
+ + bb205314 + unsigned int NumCategories + unsigned int NumCategories +
+ + +

Array of message categories to allow or deny. Array must have at least NumCategories members (see ).

+
+ + bb205314 + D3D10_MESSAGE_CATEGORY* pCategoryList + D3D10_MESSAGE_CATEGORY pCategoryList +
+ + +

Number of message severity levels to allow or deny.

+
+ + bb205314 + unsigned int NumSeverities + unsigned int NumSeverities +
+ + +

Array of message severity levels to allow or deny. Array must have at least NumSeverities members (see ).

+
+ + bb205314 + D3D10_MESSAGE_SEVERITY* pSeverityList + D3D10_MESSAGE_SEVERITY pSeverityList +
+ + +

Number of message IDs to allow or deny.

+
+ + bb205314 + unsigned int NumIDs + unsigned int NumIDs +
+ + +

Array of message IDs to allow or deny. Array must have at least NumIDs members (see ).

+
+ + bb205314 + D3D10_MESSAGE_ID* pIDList + D3D10_MESSAGE_ID pIDList +
+ + + Gets or sets the categories. + + + The categories. + + + + + Gets or sets the severities. + + + The severities. + + + + + Gets or sets the ids. + + + The ids. + + + + +

A description of a single element for the input-assembler stage.

+
+ +

An input-layout object contains an array of structures, each structure defines one element being read from an input slot. Create an input-layout object by calling . For an example, see Create an input-layout object.

+
+ + bb205316 + D3D10_INPUT_ELEMENT_DESC + D3D10_INPUT_ELEMENT_DESC +
+ + + No documentation. + + + bb205316 + const char* SemanticName + char SemanticName + + + + No documentation. + + + bb205316 + unsigned int SemanticIndex + unsigned int SemanticIndex + + + + No documentation. + + + bb205316 + DXGI_FORMAT Format + DXGI_FORMAT Format + + + + No documentation. + + + bb205316 + unsigned int InputSlot + unsigned int InputSlot + + + + No documentation. + + + bb205316 + unsigned int AlignedByteOffset + unsigned int AlignedByteOffset + + + + No documentation. + + + bb205316 + D3D10_INPUT_CLASSIFICATION InputSlotClass + D3D10_INPUT_CLASSIFICATION InputSlotClass + + + + No documentation. + + + bb205316 + unsigned int InstanceDataStepRate + unsigned int InstanceDataStepRate + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + Identifies the input data class for a single input slot. + The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data. + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + Returns a value that can be used for the offset parameter of an InputElement to indicate that the element + should be aligned directly after the previous element, including any packing if necessary. + + A value used to align input elements. + D3D10_APPEND_ALIGNED_ELEMENT + + + +

Stores an attribute table entry.

+
+ +

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.

The LPD3DX_ATTRIBUTE_RANGE type is defined as a reference to the D3DX_ATTRIBUTE_RANGE structure.

 typedef D3DX_ATTRIBUTE_RANGE* LPD3DX_ATTRIBUTE_RANGE;	
+            
+
+ + bb172688 + D3DX10_ATTRIBUTE_RANGE + D3DX10_ATTRIBUTE_RANGE +
+ + +

Attribute table identifier.

+
+ + bb172688 + unsigned int AttribId + unsigned int AttribId +
+ + +

Starting face.

+
+ + bb172688 + unsigned int FaceStart + unsigned int FaceStart +
+ + +

Face count.

+
+ + bb172688 + unsigned int FaceCount + unsigned int FaceCount +
+ + +

Starting vertex.

+
+ + bb172688 + unsigned int VertexStart + unsigned int VertexStart +
+ + +

Vertex count.

+
+ + bb172688 + unsigned int VertexCount + unsigned int VertexCount +
+ + +

Specifies mesh weight attributes.

+
+ +

This structure describes how a simplification operation will consider vertex data when calculating relative costs between collapsing edges. For example, if the Normal field is 0.0, the simplification operation will ignore the vertex normal component when calculating the error for the collapse. However, if the Normal field is 1.0, the simplification operation will use the vertex normal component. If the Normal field is 2.0, double the amount of errors; if the Normal field is 4.0, then quadruple the number of errors, and so on.

The LPD3DX_ATTRIBUTE_WEIGHTS type is defined as a reference to the D3DX_ATTRIBUTE_WEIGHTS structure.

 typedef D3DX_ATTRIBUTE_WEIGHTS* LPD3DX_ATTRIBUTE_WEIGHTS;	
+            
+
+ + bb172689 + D3DX10_ATTRIBUTE_WEIGHTS + D3DX10_ATTRIBUTE_WEIGHTS +
+ + +

Position.

+
+ + bb172689 + float Position + float Position +
+ + +

Blend weight.

+
+ + bb172689 + float Boundary + float Boundary +
+ + +

Normal.

+
+ + bb172689 + float Normal + float Normal +
+ + +

Diffuse lighting value.

+
+ + bb172689 + float Diffuse + float Diffuse +
+ + +

Specular lighting value.

+
+ + bb172689 + float Specular + float Specular +
+ + +

Tangent.

+
+ + bb172689 + float Tangent + float Tangent +
+ + +

Binormal.

+
+ + bb172689 + float Binormal + float Binormal +
+ + +

Eight texture coordinates.

+
+ + bb172689 + float Texcoord[8] + float Texcoord +
+ + +

Categories of debug messages. This will identify the category of a message when retrieving a message with and when adding a message with . When creating an info queue filter, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.

+
+ +

This is part of the Information Queue feature. See Interface.

+
+ + bb205323 + D3D10_MESSAGE + D3D10_MESSAGE +
+ + + No documentation. + + + bb205323 + D3D10_MESSAGE_CATEGORY Category + D3D10_MESSAGE_CATEGORY Category + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_SEVERITY Severity + D3D10_MESSAGE_SEVERITY Severity + + + + No documentation. + + + bb205323 + D3D10_MESSAGE_ID ID + D3D10_MESSAGE_ID ID + + + + No documentation. + + + bb205323 + const char* pDescription + char pDescription + + + + No documentation. + + + bb205323 + SIZE_T DescriptionByteLength + SIZE_T DescriptionByteLength + + + +

Query information about graphics-pipeline activity in between calls to and .

+
+ + bb172402 + D3D10_QUERY_DATA_PIPELINE_STATISTICS + D3D10_QUERY_DATA_PIPELINE_STATISTICS +
+ + + No documentation. + + + bb172402 + unsigned longlong IAVertices + unsigned longlong IAVertices + + + + No documentation. + + + bb172402 + unsigned longlong IAPrimitives + unsigned longlong IAPrimitives + + + + No documentation. + + + bb172402 + unsigned longlong VSInvocations + unsigned longlong VSInvocations + + + + No documentation. + + + bb172402 + unsigned longlong GSInvocations + unsigned longlong GSInvocations + + + + No documentation. + + + bb172402 + unsigned longlong GSPrimitives + unsigned longlong GSPrimitives + + + + No documentation. + + + bb172402 + unsigned longlong CInvocations + unsigned longlong CInvocations + + + + No documentation. + + + bb172402 + unsigned longlong CPrimitives + unsigned longlong CPrimitives + + + + No documentation. + + + bb172402 + unsigned longlong PSInvocations + unsigned longlong PSInvocations + + + +

Query information about the reliability of a timestamp query.

+
+ +

For a list of query types see .

+
+ + bb172404 + D3D10_QUERY_DATA_TIMESTAMP_DISJOINT + D3D10_QUERY_DATA_TIMESTAMP_DISJOINT +
+ + +

How frequently the GPU counter increments in Hz.

+
+ + bb172404 + unsigned longlong Frequency + unsigned longlong Frequency +
+ + +

If this is TRUE, something occurred in between the query's and calls that caused the timestamp counter to become discontinuous or disjoint, such as unplugging the AC chord on a laptop, overheating, or throttling up/down due to laptop savings events. The timestamp returned by for a timestamp query is only reliable if Disjoint is .

+
+ + bb172404 + BOOL Disjoint + BOOL Disjoint +
+ + +

Describes a query.

+
+ + bb172405 + D3D10_QUERY_DESC + D3D10_QUERY_DESC +
+ + +

Type of query (see ).

+
+ + bb172405 + D3D10_QUERY Query + D3D10_QUERY Query +
+ + +

Miscellaneous flags (see ).

+
+ + bb172405 + D3D10_QUERY_MISC_FLAG MiscFlags + D3D10_QUERY_MISC_FLAG MiscFlags +
+ + +

Describes the rasterizer state.

+
+ +

Rasterizer state defines the behavior of the rasterizer stage. To create a rasterizer-state object, call . To set rasterizer state, call .

Note??For feature levels 9.1, 9.2, 9.3, and 10.0, if you set MultisampleEnable to , the runtime renders all points, lines, and triangles without anti-aliasing even for render targets with a sample count greater than 1. For feature level 10.1, the setting of MultisampleEnable has no effect on points and triangles with regard to MSAA and impacts only the selection of the line-rendering algorithm as shown in this table:

Line-rendering algorithmMultisampleEnableAntialiasedLineEnable
Aliased
Alpha antialiasedTRUE
QuadrilateralTRUE
QuadrilateralTRUETRUE

?

The settings of the MultisampleEnable and AntialiasedLineEnable members apply only to multisample antialiasing (MSAA) render targets (that is, render targets with sample counts greater than 1). Because of the differences in feature-level behavior and as long as you aren?t performing any line drawing or don?t mind that lines render as quadrilaterals, we recommend that you always set MultisampleEnable to TRUE whenever you render on MSAA render targets.

+
+ + bb172408 + D3D10_RASTERIZER_DESC + D3D10_RASTERIZER_DESC +
+ + +

A member of the enumerated type that determines the fill mode to use when rendering. The default value is .

+
+ + bb172408 + D3D10_FILL_MODE FillMode + D3D10_FILL_MODE FillMode +
+ + +

A member of the enumerated type that indicates whether triangles facing the specified direction are drawn. The default value is .

+
+ + bb172408 + D3D10_CULL_MODE CullMode + D3D10_CULL_MODE CullMode +
+ + +

Determines if a triangle is front-facing or back-facing. If this parameter is TRUE, then a triangle is considered front-facing if its vertices are counter-clockwise on the render target, and considered back-facing if they are clockwise. If this parameter is , then the opposite is true. The default value is .

+
+ + bb172408 + BOOL FrontCounterClockwise + BOOL FrontCounterClockwise +
+ + +

Specifies the depth value added to a given pixel. The default value is 0. For info about depth bias, see Depth Bias.

+
+ + bb172408 + int DepthBias + int DepthBias +
+ + +

Specifies the maximum depth bias of a pixel. The default value is 0.0f. For info about depth bias, see Depth Bias.

+
+ + bb172408 + float DepthBiasClamp + float DepthBiasClamp +
+ + +

Specifies a scalar on a given pixel's slope. The default value is 0.0f. For info about depth bias, see Depth Bias.

+
+ + bb172408 + float SlopeScaledDepthBias + float SlopeScaledDepthBias +
+ + +

Enables or disables clipping based on distance. The default value is TRUE.

The hardware always performs x and y clipping of rasterized coordinates. When DepthClipEnable is set to the default value, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm). +

0 < w + -w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + -w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + 0 <= z <= w +

When you set DepthClipEnable to , the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the "0 < w" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane. +

+
+ + bb172408 + BOOL DepthClipEnable + BOOL DepthClipEnable +
+ + +

Enable or disables scissor-rectangle culling. All pixels outside an active scissor rectangle are culled. The default value is . For more information, see Set the Scissor Rectangle.

+
+ + bb172408 + BOOL ScissorEnable + BOOL ScissorEnable +
+ + +

Specifies whether to use the quadrilateral or alpha line anti-aliasing algorithm on multisample antialiasing (MSAA) render targets. The default value is . Set to TRUE to use the quadrilateral line anti-aliasing algorithm and to to use the alpha line anti-aliasing algorithm. For more info about this member, see Remarks.

+
+ + bb172408 + BOOL MultisampleEnable + BOOL MultisampleEnable +
+ + +

Specifies whether to enable line antialiasing; only applies when alpha blending is enabled, you are drawing lines, and the MultisampleEnable member is . The default value is . For more info about this member, see Remarks.

+
+ + bb172408 + BOOL AntialiasedLineEnable + BOOL AntialiasedLineEnable +
+ + +

Describes the blend state for a render target for a Direct3D 10.1 device

+
+ +

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for blend state.

StateDefault Value
BlendEnable
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask

?

+
+ + bb694533 + D3D10_RENDER_TARGET_BLEND_DESC1 + D3D10_RENDER_TARGET_BLEND_DESC1 +
+ + +

Enable (or disable) blending.

+
+ + bb694533 + BOOL BlendEnable + BOOL BlendEnable +
+ + +

This blend option specifies the first RGB data source and includes an optional pre-blend operation.

+
+ + bb694533 + D3D10_BLEND SrcBlend + D3D10_BLEND SrcBlend +
+ + +

This blend option specifies the second RGB data source and includes an optional pre-blend operation.

+
+ + bb694533 + D3D10_BLEND DestBlend + D3D10_BLEND DestBlend +
+ + +

This blend operation defines how to combine the RGB data sources.

+
+ + bb694533 + D3D10_BLEND_OP BlendOp + D3D10_BLEND_OP BlendOp +
+ + +

This blend option specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

+
+ + bb694533 + D3D10_BLEND SrcBlendAlpha + D3D10_BLEND SrcBlendAlpha +
+ + +

This blend option specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

+
+ + bb694533 + D3D10_BLEND DestBlendAlpha + D3D10_BLEND DestBlendAlpha +
+ + +

This blend operation defines how to combine the alpha data sources.

+
+ + bb694533 + D3D10_BLEND_OP BlendOpAlpha + D3D10_BLEND_OP BlendOpAlpha +
+ + +

A write mask.

+
+ + bb694533 + D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask + D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask +
+ + +

Specifies the subresource(s) from a resource that are accessible using a render-target view.

+
+ +

A render-target-view description is passed into to create a render target.

A render-target-view cannot use the following formats:

  • Any typeless format.
  • if the view will be used to bind a buffer (vertex, index, constant, or stream-output).

If the format is set to , then the format of the resource that the view binds to the pipeline will be used.

+
+ + bb172410 + D3D10_RENDER_TARGET_VIEW_DESC + D3D10_RENDER_TARGET_VIEW_DESC +
+ + + No documentation. + + + bb172410 + DXGI_FORMAT Format + DXGI_FORMAT Format + + + + No documentation. + + + bb172410 + D3D10_RTV_DIMENSION ViewDimension + D3D10_RTV_DIMENSION ViewDimension + + + + No documentation. + + + bb172410 + D3D10_BUFFER_RTV Buffer + D3D10_BUFFER_RTV Buffer + + + + No documentation. + + + bb172410 + D3D10_TEX1D_RTV Texture1D + D3D10_TEX1D_RTV Texture1D + + + + No documentation. + + + bb172410 + D3D10_TEX1D_ARRAY_RTV Texture1DArray + D3D10_TEX1D_ARRAY_RTV Texture1DArray + + + + No documentation. + + + bb172410 + D3D10_TEX2D_RTV Texture2D + D3D10_TEX2D_RTV Texture2D + + + + No documentation. + + + bb172410 + D3D10_TEX2D_ARRAY_RTV Texture2DArray + D3D10_TEX2D_ARRAY_RTV Texture2DArray + + + + No documentation. + + + bb172410 + D3D10_TEX2DMS_RTV Texture2DMS + D3D10_TEX2DMS_RTV Texture2DMS + + + + No documentation. + + + bb172410 + D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray + D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray + + + + No documentation. + + + bb172410 + D3D10_TEX3D_RTV Texture3D + D3D10_TEX3D_RTV Texture3D + + + +

Specifies the subresource(s) from a 3D texture to use in a render-target view.

+
+ +

This structure is one member of a render target view. See .

+
+ + bb172476 + D3D10_TEX3D_RTV + D3D10_TEX3D_RTV +
+ + + No documentation. + + + bb172476 + unsigned int MipSlice + unsigned int MipSlice + + + + No documentation. + + + bb172476 + unsigned int FirstWSlice + unsigned int FirstWSlice + + + + No documentation. + + + bb172476 + unsigned int WSize + unsigned int WSize + + + +

Specifies the subresource(s) from an array of 2D textures to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + bb172471 + D3D10_TEX2D_ARRAY_RTV + D3D10_TEX2D_ARRAY_RTV +
+ + + No documentation. + + + bb172471 + unsigned int MipSlice + unsigned int MipSlice + + + + No documentation. + + + bb172471 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172471 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource(s) from a an array of multisampled 2D textures to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + bb172465 + D3D10_TEX2DMS_ARRAY_RTV + D3D10_TEX2DMS_ARRAY_RTV +
+ + + No documentation. + + + bb172465 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172465 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the elements from a buffer resource to use in a render-target view.

+
+ +

A render-target view is a member of a render-target-view description (see ). Create a render-target view by calling .

+
+ + bb204897 + D3D10_BUFFER_RTV + D3D10_BUFFER_RTV +
+ + + No documentation. + + + bb204897 + unsigned int FirstElement + unsigned int FirstElement + + + + No documentation. + + + bb204897 + unsigned int ElementOffset + unsigned int ElementOffset + + + + No documentation. + + + bb204897 + unsigned int NumElements + unsigned int NumElements + + + + No documentation. + + + bb204897 + unsigned int ElementWidth + unsigned int ElementWidth + + + +

Specifies the subresource from a 1D texture to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + bb172462 + D3D10_TEX1D_RTV + D3D10_TEX1D_RTV +
+ + + No documentation. + + + bb172462 + unsigned int MipSlice + unsigned int MipSlice + + + +

Specifies the subresource(s) from an array of 1D textures to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + bb172459 + D3D10_TEX1D_ARRAY_RTV + D3D10_TEX1D_ARRAY_RTV +
+ + + No documentation. + + + bb172459 + unsigned int MipSlice + unsigned int MipSlice + + + + No documentation. + + + bb172459 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172459 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource from a 2D texture to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + bb172474 + D3D10_TEX2D_RTV + D3D10_TEX2D_RTV +
+ + + No documentation. + + + bb172474 + unsigned int MipSlice + unsigned int MipSlice + + + +

Specifies the subresource from a multisampled 2D texture to use in a render-target view.

+
+ +

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

+
+ + bb172468 + D3D10_TEX2DMS_RTV + D3D10_TEX2DMS_RTV +
+ + + No documentation. + + + bb172468 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine + + + +

Defines a 3D box.

+
+ +

The following diagram shows a 3D box, where the origin is the left, front, top corner.

+
+ + bb204895 + D3D10_BOX + D3D10_BOX +
+ + +

The x position of the left hand side of the box.

+
+ + bb204895 + unsigned int left + unsigned int left +
+ + +

The y position of the top of the box.

+
+ + bb204895 + unsigned int top + unsigned int top +
+ + +

The z position of the front of the box.

+
+ + bb204895 + unsigned int front + unsigned int front +
+ + +

The x position of the right hand side of the box.

+
+ + bb204895 + unsigned int right + unsigned int right +
+ + +

The y position of the bottom of the box.

+
+ + bb204895 + unsigned int bottom + unsigned int bottom +
+ + +

The z position of the back of the box.

+
+ + bb204895 + unsigned int back + unsigned int back +
+ + +

Describes a sampler state.

+
+ +

These are the default values for sampler state.

StateDefault Value
FilterMin_Mag_Mip_Point
AddressUClamp
AddressVClamp
AddressWClamp
MinLOD0.0f
MaxLOD3.402823466e+38F (FLT_MAX)
MipMapLODBias0.0f
MaxAnisotropy16
ComparisonFuncNever
BorderColorfloat4(0.0f, 0.0f, 0.0f, 0.0f)
TextureN/A

?

+
+ + bb172415 + D3D10_SAMPLER_DESC + D3D10_SAMPLER_DESC +
+ + +

Filtering method to use when sampling a texture (see ).

+
+ + bb172415 + D3D10_FILTER Filter + D3D10_FILTER Filter +
+ + +

Method to use for resolving a u texture coordinate that is outside the 0 to 1 range (see ).

+
+ + bb172415 + D3D10_TEXTURE_ADDRESS_MODE AddressU + D3D10_TEXTURE_ADDRESS_MODE AddressU +
+ + +

Method to use for resolving a v texture coordinate that is outside the 0 to 1 range.

+
+ + bb172415 + D3D10_TEXTURE_ADDRESS_MODE AddressV + D3D10_TEXTURE_ADDRESS_MODE AddressV +
+ + +

Method to use for resolving a w texture coordinate that is outside the 0 to 1 range.

+
+ + bb172415 + D3D10_TEXTURE_ADDRESS_MODE AddressW + D3D10_TEXTURE_ADDRESS_MODE AddressW +
+ + +

Offset from the calculated mipmap level. For example, if Direct3D calculates that a texture should be sampled at mipmap level 3 and MipLODBias is 2, then the texture will be sampled at mipmap level 5.

+
+ + bb172415 + float MipLODBias + float MipLODBias +
+ + +

Clamping value used if or is specified in Filter. Valid values are between 1 and 16.

+
+ + bb172415 + unsigned int MaxAnisotropy + unsigned int MaxAnisotropy +
+ + +

A function that compares sampled data against existing sampled data. The function options are listed in .

+
+ + bb172415 + D3D10_COMPARISON_FUNC ComparisonFunc + D3D10_COMPARISON_FUNC ComparisonFunc +
+ + +

Border color to use if is specified for AddressU, AddressV, or AddressW. Range must be between 0.0 and 1.0 inclusive.

+
+ + bb172415 + SHARPDX_COLOR4 BorderColor + SHARPDX_COLOR4 BorderColor +
+ + +

Lower end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed.

+
+ + bb172415 + float MinLOD + float MinLOD +
+ + +

Upper end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed. This value must be greater than or equal to MinLOD. To have no upper limit on LOD set this to a large value such as D3D10_FLOAT32_MAX.

+
+ + bb172415 + float MaxLOD + float MaxLOD +
+ + +

Describes a shader constant-buffer.

+
+ +

Constants are supplied to shaders in a shader-constant buffer. Get the description of a shader-constant-buffer by calling ID3D10ShaderReflectionConstantBuffer::GetDesc.

+
+ + bb172417 + D3D10_SHADER_BUFFER_DESC + D3D10_SHADER_BUFFER_DESC +
+ + +

The name of the buffer.

+
+ + bb172417 + const char* Name + char Name +
+ + +

The intended use of the constant data. See D3D10_CBUFFER_TYPE.

+
+ + bb172417 + D3D_CBUFFER_TYPE Type + D3D_CBUFFER_TYPE Type +
+ + +

The number of unique variables.

+
+ + bb172417 + unsigned int Variables + unsigned int Variables +
+ + +

Buffer size (in bytes).

+
+ + bb172417 + unsigned int Size + unsigned int Size +
+ + +

Shader buffer properties. See D3D10_SHADER_CBUFFER_FLAGS.

+
+ + bb172417 + D3D_SHADER_CBUFFER_FLAGS uFlags + D3D_SHADER_CBUFFER_FLAGS uFlags +
+ + +

Describes a shader signature.

+
+ +

A shader can take n inputs and can produce m outputs. The order of the input (or output) parameters, their associated types, and any attached semantics make up the shader signature. Each shader has an input and an output signature.

When compiling a shader or an effect, some API calls validate shader signatures (such as D3D10CompileShader and ). That is, they compare the output signature of one shader (like a vertex shader) with the input signature of another shader (like a pixel shader). This ensures that a shader outputs data that is compatible with a downstream shader that is consuming that data. Compatible means that a shader signature is a exact-match subset of the preceding shader stage. Exact match means parameter types and semantics must exactly match. Subset means that a parameter that is not required by a downstream stage, does not need to include that parameter in its shader signature.

Get a shader-signature from a shader or an effect by calling APIs such as ID3D10ShaderReflection::GetInputParameterDesc or .

+
+ + bb172446 + D3D10_SIGNATURE_PARAMETER_DESC + D3D10_SIGNATURE_PARAMETER_DESC +
+ + +

A per-parameter string that identifies how the data will be used. See Semantics (DirectX HLSL).

+
+ + bb172446 + const char* SemanticName + char SemanticName +
+ + +

Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.

+
+ + bb172446 + unsigned int SemanticIndex + unsigned int SemanticIndex +
+ + +

The register that will contain this variable's data.

+
+ + bb172446 + unsigned int Register + unsigned int Register +
+ + +

A predefined string that determines the functionality of certain pipeline stages. See D3D10_NAME.

+
+ + bb172446 + D3D_NAME SystemValueType + D3D_NAME SystemValueType +
+ + +

The per-component-data type that is stored in a register. See D3D10_REGISTER_COMPONENT_TYPE. Each register can store up to four-components of data.

+
+ + bb172446 + D3D_REGISTER_COMPONENT_TYPE ComponentType + D3D_REGISTER_COMPONENT_TYPE ComponentType +
+ + +

Mask which indicates which components of a register are used.

+
+ + bb172446 + unsigned char Mask + unsigned char Mask +
+ + +

Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature). The mask is a combination of D3D10_REGISTER_COMPONENT_TYPE values.

+
+ + bb172446 + unsigned char ReadWriteMask + unsigned char ReadWriteMask +
+ + +

Describes a shader-resource view.

+
+ +

A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read. For more information about how views work, see Views

When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a resource can be viewed with one of these typed formats: , , and , since these typed formats are compatible with the typeless resource.

Create a shader-resource-view description by calling . To view a shader-resource-view description, call .

+
+ + bb172437 + D3D10_SHADER_RESOURCE_VIEW_DESC + D3D10_SHADER_RESOURCE_VIEW_DESC +
+ + +

The viewing format. See remarks.

+
+ + bb172437 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

The resource type of the view. See D3D10_SRV_DIMENSION. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.

+
+ + bb172437 + D3D_SRV_DIMENSION ViewDimension + D3D_SRV_DIMENSION ViewDimension +
+ + +

View the resource as a buffer using information from a shader-resource view (see ).

+
+ + bb172437 + D3D10_BUFFER_SRV Buffer + D3D10_BUFFER_SRV Buffer +
+ + +

View the resource as a 1D texture using information from a shader-resource view (see ).

+
+ + bb172437 + D3D10_TEX1D_SRV Texture1D + D3D10_TEX1D_SRV Texture1D +
+ + +

View the resource as a 1D-texture array using information from a shader-resource view (see .

+
+ + bb172437 + D3D10_TEX1D_ARRAY_SRV Texture1DArray + D3D10_TEX1D_ARRAY_SRV Texture1DArray +
+ + +

View the resource as a 2D-texture using information from a shader-resource view (see .

+
+ + bb172437 + D3D10_TEX2D_SRV Texture2D + D3D10_TEX2D_SRV Texture2D +
+ + +

View the resource as a 2D-texture array using information from a shader-resource view (see .

+
+ + bb172437 + D3D10_TEX2D_ARRAY_SRV Texture2DArray + D3D10_TEX2D_ARRAY_SRV Texture2DArray +
+ + +

View the resource as a 2D-multisampled texture using information from a shader-resource view (see .

+
+ + bb172437 + D3D10_TEX2DMS_SRV Texture2DMS + D3D10_TEX2DMS_SRV Texture2DMS +
+ + +

View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see .

+
+ + bb172437 + D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray + D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray +
+ + +

View the resource as a 3D texture using information from a shader-resource view (see .

+
+ + bb172437 + D3D10_TEX3D_SRV Texture3D + D3D10_TEX3D_SRV Texture3D +
+ + +

View the resource as a 3D-cube texture using information from a shader-resource view (see ).

+
+ + bb172437 + D3D10_TEXCUBE_SRV TextureCube + D3D10_TEXCUBE_SRV TextureCube +
+ + +

Specifies the elements in a buffer resource to use in a shader-resource view.

+
+ +

The structure is a member of the structure, which represents a shader-resource view description. You can create a shader-resource view by calling the method.

+
+ + bb204898 + D3D10_BUFFER_SRV + D3D10_BUFFER_SRV +
+ + + No documentation. + + + bb204898 + unsigned int FirstElement + unsigned int FirstElement + + + + No documentation. + + + bb204898 + unsigned int ElementOffset + unsigned int ElementOffset + + + + No documentation. + + + bb204898 + unsigned int NumElements + unsigned int NumElements + + + + No documentation. + + + bb204898 + unsigned int ElementWidth + unsigned int ElementWidth + + + +

Specifies the subresource from a 1D texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + bb172463 + D3D10_TEX1D_SRV + D3D10_TEX1D_SRV +
+ + + No documentation. + + + bb172463 + unsigned int MostDetailedMip + unsigned int MostDetailedMip + + + + No documentation. + + + bb172463 + unsigned int MipLevels + unsigned int MipLevels + + + +

Specifies the subresource(s) from an array of 1D textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + bb172460 + D3D10_TEX1D_ARRAY_SRV + D3D10_TEX1D_ARRAY_SRV +
+ + + No documentation. + + + bb172460 + unsigned int MostDetailedMip + unsigned int MostDetailedMip + + + + No documentation. + + + bb172460 + unsigned int MipLevels + unsigned int MipLevels + + + + No documentation. + + + bb172460 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172460 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource from a 2D texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + bb172475 + D3D10_TEX2D_SRV + D3D10_TEX2D_SRV +
+ + + No documentation. + + + bb172475 + unsigned int MostDetailedMip + unsigned int MostDetailedMip + + + + No documentation. + + + bb172475 + unsigned int MipLevels + unsigned int MipLevels + + + +

Specifies the subresource(s) from an array of 2D textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + bb172472 + D3D10_TEX2D_ARRAY_SRV + D3D10_TEX2D_ARRAY_SRV +
+ + + No documentation. + + + bb172472 + unsigned int MostDetailedMip + unsigned int MostDetailedMip + + + + No documentation. + + + bb172472 + unsigned int MipLevels + unsigned int MipLevels + + + + No documentation. + + + bb172472 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172472 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource(s) from a multisampled 2D texture to use in a shader-resource view.

+
+ +

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

+
+ + bb172469 + D3D10_TEX2DMS_SRV + D3D10_TEX2DMS_SRV +
+ + + No documentation. + + + bb172469 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine + + + +

Specifies the subresource(s) from an array of multisampled 2D textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + bb172466 + D3D10_TEX2DMS_ARRAY_SRV + D3D10_TEX2DMS_ARRAY_SRV +
+ + + No documentation. + + + bb172466 + unsigned int FirstArraySlice + unsigned int FirstArraySlice + + + + No documentation. + + + bb172466 + unsigned int ArraySize + unsigned int ArraySize + + + +

Specifies the subresource(s) from a 3D texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + bb172477 + D3D10_TEX3D_SRV + D3D10_TEX3D_SRV +
+ + + No documentation. + + + bb172477 + unsigned int MostDetailedMip + unsigned int MostDetailedMip + + + + No documentation. + + + bb172477 + unsigned int MipLevels + unsigned int MipLevels + + + +

Specifies the subresource from a cube texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + bb172478 + D3D10_TEXCUBE_SRV + D3D10_TEXCUBE_SRV +
+ + + No documentation. + + + bb172478 + unsigned int MostDetailedMip + unsigned int MostDetailedMip + + + + No documentation. + + + bb172478 + unsigned int MipLevels + unsigned int MipLevels + + + +

Describes a shader-resource view.

+
+ +

A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read. For more information about how views work, see Views

When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a resource can be viewed with one of these typed formats: , , and , since these typed formats are compatible with the typeless resource.

Create a shader-resource-view description by calling . To view a shader-resource-view description, call .

This structure requires Windows Vista Service Pack 1.

+
+ + bb694534 + D3D10_SHADER_RESOURCE_VIEW_DESC1 + D3D10_SHADER_RESOURCE_VIEW_DESC1 +
+ + +

The viewing format. See remarks.

+
+ + bb694534 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

The resource type of the view. See D3D10_SRV_DIMENSION1. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.

+
+ + bb694534 + D3D_SRV_DIMENSION ViewDimension + D3D_SRV_DIMENSION ViewDimension +
+ + +

View the resource as a buffer using information from a shader-resource view (see ).

+
+ + bb694534 + D3D10_BUFFER_SRV Buffer + D3D10_BUFFER_SRV Buffer +
+ + +

View the resource as a 1D texture using information from a shader-resource view (see ).

+
+ + bb694534 + D3D10_TEX1D_SRV Texture1D + D3D10_TEX1D_SRV Texture1D +
+ + +

View the resource as a 1D-texture array using information from a shader-resource view (see .

+
+ + bb694534 + D3D10_TEX1D_ARRAY_SRV Texture1DArray + D3D10_TEX1D_ARRAY_SRV Texture1DArray +
+ + +

View the resource as a 2D-texture using information from a shader-resource view (see .

+
+ + bb694534 + D3D10_TEX2D_SRV Texture2D + D3D10_TEX2D_SRV Texture2D +
+ + +

View the resource as a 2D-texture array using information from a shader-resource view (see .

+
+ + bb694534 + D3D10_TEX2D_ARRAY_SRV Texture2DArray + D3D10_TEX2D_ARRAY_SRV Texture2DArray +
+ + +

View the resource as a 2D-multisampled texture using information from a shader-resource view (see .

+
+ + bb694534 + D3D10_TEX2DMS_SRV Texture2DMS + D3D10_TEX2DMS_SRV Texture2DMS +
+ + +

View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see .

+
+ + bb694534 + D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray + D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray +
+ + +

View the resource as a 3D texture using information from a shader-resource view (see .

+
+ + bb694534 + D3D10_TEX3D_SRV Texture3D + D3D10_TEX3D_SRV Texture3D +
+ + +

View the resource as a 3D-cube texture using information from a shader-resource view (see ).

+
+ + bb694534 + D3D10_TEXCUBE_SRV TextureCube + D3D10_TEXCUBE_SRV TextureCube +
+ + +

View the resource as an array of cube textures using information from a shader-resource view (see ).

+
+ + bb694534 + D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray + D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray +
+ + +

Specifies the subresource(s) from an array of cube textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

This structure requires Windows Vista Service Pack 1.

+
+ + bb694536 + D3D10_TEXCUBE_ARRAY_SRV1 + D3D10_TEXCUBE_ARRAY_SRV1 +
+ + + No documentation. + + + bb694536 + unsigned int MostDetailedMip + unsigned int MostDetailedMip + + + + No documentation. + + + bb694536 + unsigned int MipLevels + unsigned int MipLevels + + + + No documentation. + + + bb694536 + unsigned int First2DArrayFace + unsigned int First2DArrayFace + + + + No documentation. + + + bb694536 + unsigned int NumCubes + unsigned int NumCubes + + + +

The member of the vertex decl to do the software skinning on. This is used with the API.

+
+ + bb172702 + D3DX10_SKINNING_CHANNEL + D3DX10_SKINNING_CHANNEL +
+ + + No documentation. + + + bb172702 + unsigned int SrcOffset + unsigned int SrcOffset + + + + No documentation. + + + bb172702 + unsigned int DestOffset + unsigned int DestOffset + + + + No documentation. + + + bb172702 + BOOL IsNormal + BOOL IsNormal + + + +

Defines position, texture, and color information about a sprite.

+
+ + bb172703 + D3DX10_SPRITE + D3DX10_SPRITE +
+ + +

The sprite's model-world transformation. This defines the position and orientation of the sprite in world space.

+
+ + bb172703 + D3DXMATRIX matWorld + D3DXMATRIX matWorld +
+ + +

Offset from the upper-left corner of the texture indicating where the sprite image should start in the texture. TexCoord is in texture coordinates.

+
+ + bb172703 + D3DXVECTOR2 TexCoord + D3DXVECTOR2 TexCoord +
+ + +

A vector containing the width and height of the sprite in texture coordinates.

+
+ + bb172703 + D3DXVECTOR2 TexSize + D3DXVECTOR2 TexSize +
+ + +

A color that will be multiplied with the pixel color before rendering.

+
+ + bb172703 + D3DXCOLOR ColorModulate + D3DXCOLOR ColorModulate +
+ + +

Pointer to a shader-resource view representing the sprite's texture. See Interface.

+
+ + bb172703 + ID3D10ShaderResourceView* pTexture + ID3D10ShaderResourceView pTexture +
+ + +

The index of the texture. If pTexture does not represent a texture array, then this should be 0.

+
+ + bb172703 + unsigned int TextureIndex + unsigned int TextureIndex +
+ + + Gets or sets the texture. + + The texture. + + + +

Indicates the device state.

+
+ +

A state-block mask indicates the device states that a pass or a technique changes. The D3D10StateBlockMaskEnableCapture function provides a convenient way of setting a range of bitmasks for the array members of .

+
+ + bb172453 + D3D10_STATE_BLOCK_MASK + D3D10_STATE_BLOCK_MASK +
+ + +

Boolean value indicating whether to save the vertex shader state.

+
+ + bb172453 + bool VS + bool VS +
+ + +

Boolean value indicating whether to save the geometry shader state.

+
+ + bb172453 + bool GS + bool GS +
+ + +

Boolean value indicating whether to save the pixel shader state.

+
+ + bb172453 + bool PS + bool PS +
+ + +

Boolean value indicating whether to save the index buffer state.

+
+ + bb172453 + bool IAIndexBuffer + bool IAIndexBuffer +
+ + +

Boolean value indicating whether to save the input layout state.

+
+ + bb172453 + bool IAInputLayout + bool IAInputLayout +
+ + +

Boolean value indicating whether to save the primitive topology state.

+
+ + bb172453 + bool IAPrimitiveTopology + bool IAPrimitiveTopology +
+ + +

Boolean value indicating whether to save the render targets states.

+
+ + bb172453 + bool OMRenderTargets + bool OMRenderTargets +
+ + +

Boolean value indicating whether to save the depth-stencil state.

+
+ + bb172453 + bool OMDepthStencilState + bool OMDepthStencilState +
+ + +

Boolean value indicating whether to save the blend state.

+
+ + bb172453 + bool OMBlendState + bool OMBlendState +
+ + +

Boolean value indicating whether to save the viewports states.

+
+ + bb172453 + bool RSViewports + bool RSViewports +
+ + +

Boolean value indicating whether to save the scissor rectangles states.

+
+ + bb172453 + bool RSScissorRects + bool RSScissorRects +
+ + +

Boolean value indicating whether to save the rasterizer state.

+
+ + bb172453 + bool RSRasterizerState + bool RSRasterizerState +
+ + +

Boolean value indicating whether to save the stream-out buffers states.

+
+ + bb172453 + bool SOBuffers + bool SOBuffers +
+ + +

Boolean value indicating whether to save the predication state.

+
+ + bb172453 + bool Predication + bool Predication +
+ + +

Array of vertex-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + bb172453 + bool VSSamplers[2] + bool VSSamplers +
+ + +

Array of vertex-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + bb172453 + bool VSShaderResources[16] + bool VSShaderResources +
+ + +

Array of vertex-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

+
+ + bb172453 + bool VSConstantBuffers[2] + bool VSConstantBuffers +
+ + +

Array of geometry-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + bb172453 + bool GSSamplers[2] + bool GSSamplers +
+ + +

Array of geometry-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + bb172453 + bool GSShaderResources[16] + bool GSShaderResources +
+ + +

Array of geometry-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.

+
+ + bb172453 + bool GSConstantBuffers[2] + bool GSConstantBuffers +
+ + +

Array of pixel-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + bb172453 + bool PSSamplers[2] + bool PSSamplers +
+ + +

Array of pixel-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + bb172453 + bool PSShaderResources[16] + bool PSShaderResources +
+ + +

Array of pixel-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

+
+ + bb172453 + bool PSConstantBuffers[2] + bool PSConstantBuffers +
+ + +

Array of vertex buffers. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + bb172453 + bool IAVertexBuffers[2] + bool IAVertexBuffers +
+ + +

Description of a vertex element in a vertex buffer in an output slot.

+
+ + bb172450 + D3D10_SO_DECLARATION_ENTRY + D3D10_SO_DECLARATION_ENTRY +
+ + +

Type of output element. Possible values: "POSITION", "NORMAL", or "TEXCOORD0".

+
+ + bb172450 + const char* SemanticName + char SemanticName +
+ + +

Output element's zero-based index. Should be used if, for example, you have more than one texture coordinate stored in each vertex.

+
+ + bb172450 + unsigned int SemanticIndex + unsigned int SemanticIndex +
+ + +

Which component of the entry to begin writing out to. Valid values are 0 ~ 3. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.

+
+ + bb172450 + unsigned char StartComponent + unsigned char StartComponent +
+ + +

The number of components of the entry to write out to. Valid values are 1 ~ 4. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.

+
+ + bb172450 + unsigned char ComponentCount + unsigned char ComponentCount +
+ + +

The output slot that contains the vertex buffer that contains this output entry.

+
+ + bb172450 + unsigned char OutputSlot + unsigned char OutputSlot +
+ + + Initializes a new instance of the struct. + + Name of the semantic. + Index of the semantic. + The start component. + The component count. + The output slot. + + + +

Query information about the amount of data streamed out to the stream-output buffers in between and .

+
+ + bb172403 + D3D10_QUERY_DATA_SO_STATISTICS + D3D10_QUERY_DATA_SO_STATISTICS +
+ + + No documentation. + + + bb172403 + unsigned longlong NumPrimitivesWritten + unsigned longlong NumPrimitivesWritten + + + + No documentation. + + + bb172403 + unsigned longlong PrimitivesStorageNeeded + unsigned longlong PrimitivesStorageNeeded + + + +

Describes a 1D texture.

+
+ +

This structure is used in a call to . A helpful derived structure CD3D10_TEXTURE1D_DESC is declared in D3D10.h, to help create a texture description.

+
+ + bb172479 + D3D10_TEXTURE1D_DESC + D3D10_TEXTURE1D_DESC +
+ + + No documentation. + + + bb172479 + unsigned int Width + unsigned int Width + + + + No documentation. + + + bb172479 + unsigned int MipLevels + unsigned int MipLevels + + + + No documentation. + + + bb172479 + unsigned int ArraySize + unsigned int ArraySize + + + + No documentation. + + + bb172479 + DXGI_FORMAT Format + DXGI_FORMAT Format + + + + No documentation. + + + bb172479 + D3D10_USAGE Usage + D3D10_USAGE Usage + + + + No documentation. + + + bb172479 + D3D10_BIND_FLAG BindFlags + D3D10_BIND_FLAG BindFlags + + + + No documentation. + + + bb172479 + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + + + + No documentation. + + + bb172479 + D3D10_RESOURCE_MISC_FLAG MiscFlags + D3D10_RESOURCE_MISC_FLAG MiscFlags + + + +

Describes a 2D texture.

+
+ +

This structure is used in a call to . A helpful derived structure CD3D10_TEXTURE2D_DESC is declared in D3D10.h, to help create a texture description.

The device places some size restrictions (must be multiples of a minimum size) for a subsampled, block compressed, or bit-format resource.

+
+ + bb172480 + D3D10_TEXTURE2D_DESC + D3D10_TEXTURE2D_DESC +
+ + + No documentation. + + + bb172480 + unsigned int Width + unsigned int Width + + + + No documentation. + + + bb172480 + unsigned int Height + unsigned int Height + + + + No documentation. + + + bb172480 + unsigned int MipLevels + unsigned int MipLevels + + + + No documentation. + + + bb172480 + unsigned int ArraySize + unsigned int ArraySize + + + + No documentation. + + + bb172480 + DXGI_FORMAT Format + DXGI_FORMAT Format + + + + No documentation. + + + bb172480 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc + + + + No documentation. + + + bb172480 + D3D10_USAGE Usage + D3D10_USAGE Usage + + + + No documentation. + + + bb172480 + D3D10_BIND_FLAG BindFlags + D3D10_BIND_FLAG BindFlags + + + + No documentation. + + + bb172480 + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + + + + No documentation. + + + bb172480 + D3D10_RESOURCE_MISC_FLAG MiscFlags + D3D10_RESOURCE_MISC_FLAG MiscFlags + + + +

Describes a 3D texture.

+
+ +

This structure is used in a call to . A helpful derived structure CD3D10_TEXTURE3D_DESC is declared in D3D10.h, to help create a texture description.

The device restricts the size of subsampled, block compressed (see Block Compression (Direct3D 10)), and bit format resources to be multiples of sizes specific to each format.

+
+ + bb172481 + D3D10_TEXTURE3D_DESC + D3D10_TEXTURE3D_DESC +
+ + + No documentation. + + + bb172481 + unsigned int Width + unsigned int Width + + + + No documentation. + + + bb172481 + unsigned int Height + unsigned int Height + + + + No documentation. + + + bb172481 + unsigned int Depth + unsigned int Depth + + + + No documentation. + + + bb172481 + unsigned int MipLevels + unsigned int MipLevels + + + + No documentation. + + + bb172481 + DXGI_FORMAT Format + DXGI_FORMAT Format + + + + No documentation. + + + bb172481 + D3D10_USAGE Usage + D3D10_USAGE Usage + + + + No documentation. + + + bb172481 + D3D10_BIND_FLAG BindFlags + D3D10_BIND_FLAG BindFlags + + + + No documentation. + + + bb172481 + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + D3D10_CPU_ACCESS_FLAG CPUAccessFlags + + + + No documentation. + + + bb172481 + D3D10_RESOURCE_MISC_FLAG MiscFlags + D3D10_RESOURCE_MISC_FLAG MiscFlags + + + +

Describes parameters used to load a texture from another texture.

+
+ +

This structure is used in a call to .

+
+ + bb172705 + D3DX10_TEXTURE_LOAD_INFO + D3DX10_TEXTURE_LOAD_INFO +
+ + +

Source texture box (see ).

+
+ + bb172705 + D3D10_BOX* pSrcBox + D3D10_BOX pSrcBox +
+ + +

Destination texture box (see ).

+
+ + bb172705 + D3D10_BOX* pDstBox + D3D10_BOX pDstBox +
+ + +

Source texture mipmap level, see D3D10CalcSubresource for more detail.

+
+ + bb172705 + unsigned int SrcFirstMip + unsigned int SrcFirstMip +
+ + +

Destination texture mipmap level, see D3D10CalcSubresource for more detail.

+
+ + bb172705 + unsigned int DstFirstMip + unsigned int DstFirstMip +
+ + +

Number of mipmap levels in the source texture.

+
+ + bb172705 + unsigned int NumMips + unsigned int NumMips +
+ + +

First element of the source texture.

+
+ + bb172705 + unsigned int SrcFirstElement + unsigned int SrcFirstElement +
+ + +

First element of the destination texture.

+
+ + bb172705 + unsigned int DstFirstElement + unsigned int DstFirstElement +
+ + +

Number of elements to load.

+
+ + bb172705 + unsigned int NumElements + unsigned int NumElements +
+ + +

Filtering options during resampling (see ).

+
+ + bb172705 + D3DX10_FILTER_FLAG Filter + D3DX10_FILTER_FLAG Filter +
+ + +

Filtering options when generating mip levels (see ).

+
+ + bb172705 + D3DX10_FILTER_FLAG MipFilter + D3DX10_FILTER_FLAG MipFilter +
+ + + Source texture box (see ). + + D3D11_BOX* pSrcBox + + + + Destination texture box (see ). + + D3D11_BOX* pDstBox + + + + The namespace provides a managed Direct3D10 API. + + bb205066 + Direct3D10 + Direct3D10 + + + + Properties defining the way a buffer is bound to the pipeline as a target for stream output operations. + + + + + Initializes a new instance of the struct. + + The buffer being bound. + The offset to the first vertex (in bytes). + + + + Gets or sets the buffer being bound. + + + + + Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). + + + + + Properties defining the way a buffer (containing vertex data) is bound + to the pipeline for rendering. + + + + + Initializes a new instance of the struct. + + The buffer being bound. + The stride between vertex element (in bytes). + The offset to the first vertex (in bytes). + + + + Gets or sets the buffer being bound. + + + + + Gets or sets the stride between vertex elements in the buffer (in bytes). + + + + + Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). + + +
+
diff --git a/distribution/SharpDX.Direct3D11.Effects.dll b/distribution/SharpDX.Direct3D11.Effects.dll new file mode 100644 index 0000000000000000000000000000000000000000..3dce8ee852e7a8387ecab71943903eebdc22a934 GIT binary patch literal 58880 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 literal 0 HcmV?d00001 diff --git a/distribution/SharpDX.Direct3D11.Effects.xml b/distribution/SharpDX.Direct3D11.Effects.xml new file mode 100644 index 00000000..edcf79da --- /dev/null +++ b/distribution/SharpDX.Direct3D11.Effects.xml @@ -0,0 +1,5129 @@ + + + + SharpDX.Direct3D11.Effects + + + + + The assembly provides Effects11 managed API for Direct3D11. + + ff476080 + Direct3D11 + Direct3D11 + + + +

An interface manages a set of state objects, resources, and shaders for implementing a rendering effect.

+
+ +

An effect is created by calling .

The effect system groups the information required for rendering into an effect which contains: state objects for assigning state changes in groups, resources for supplying input data and storing output data, and programs that control how the rendering is done called shaders.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

Note??

If you call QueryInterface on an object to retrieve the interface, QueryInterface returns E_NOINTERFACE. To work around this issue, use the following code:

 * pIUnknown = (*)pEffect; pIUnknown->AddRef();	
+            
+
+ + ff476652 + ID3DX11Effect + ID3DX11Effect +
+ + + Initializes a new instance of the class. + + The device. + The effect byte code. + Effect compile options + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Test an effect to see if it contains valid syntax.

+
+

TRUE if the code syntax is valid; otherwise .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476844 + BOOL ID3DX11Effect::IsValid() + ID3DX11Effect::IsValid +
+ + +

Get the device that created the effect.

+
+

A reference to an .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

An effect is created for a specific device, by calling a function such as .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476835 + HRESULT ID3DX11Effect::GetDevice([Out] ID3D11Device** ppDevice) + ID3DX11Effect::GetDevice +
+ + +

Get an effect description.

+
+

A reference to an effect description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476834 + HRESULT ID3DX11Effect::GetDesc([Out] D3DX11_EFFECT_DESC* pDesc) + ID3DX11Effect::GetDesc +
+ + +

Get a constant buffer by index.

+
+

A zero-based index.

+

A reference to a .

+ +

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476832 + ID3DX11EffectConstantBuffer* ID3DX11Effect::GetConstantBufferByIndex([In] unsigned int Index) + ID3DX11Effect::GetConstantBufferByIndex +
+ + +

Get a constant buffer by name.

+
+

The constant-buffer name.

+

A reference to the constant buffer indicated by the Name. See .

+ +

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476833 + ID3DX11EffectConstantBuffer* ID3DX11Effect::GetConstantBufferByName([In] const char* Name) + ID3DX11Effect::GetConstantBufferByName +
+ + +

Get a variable by index.

+
+

A zero-based index.

+

A reference to a .

+ +

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access any local non-static effect variable using its name or with an index.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the index exists.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476840 + ID3DX11EffectVariable* ID3DX11Effect::GetVariableByIndex([In] unsigned int Index) + ID3DX11Effect::GetVariableByIndex +
+ + +

Get a variable by name.

+
+

The variable name.

+

A reference to an . Returns an invalid variable if the specified name cannot be found.

+ +

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access an effect variable using its name or with an index.

The method returns a reference to an effect-variable interface whether or not a variable is found. should be called to verify whether or not the name exists.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476841 + ID3DX11EffectVariable* ID3DX11Effect::GetVariableByName([In] const char* Name) + ID3DX11Effect::GetVariableByName +
+ + +

Get a variable by semantic.

+
+

The semantic name.

+

A reference to the effect variable indicated by the Semantic. See .

+ +

Each effect variable can have a semantic attached, which is a user defined metadata string. Some system-value semantics are reserved words that trigger built in functionality by pipeline stages.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the semantic exists.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476842 + ID3DX11EffectVariable* ID3DX11Effect::GetVariableBySemantic([In] const char* Semantic) + ID3DX11Effect::GetVariableBySemantic +
+ + +

Gets an effect group by index.

+
+

Index of the effect group.

+

A reference to an interface.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476836 + ID3DX11EffectGroup* ID3DX11Effect::GetGroupByIndex([In] unsigned int Index) + ID3DX11Effect::GetGroupByIndex +
+ + +

Gets an effect group by name.

+
+

Name of the effect group.

+

A reference to an interface.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476837 + ID3DX11EffectGroup* ID3DX11Effect::GetGroupByName([In] const char* Name) + ID3DX11Effect::GetGroupByName +
+ + +

Get a technique by index.

+
+

A zero-based index.

+

A reference to an .

+ +

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476838 + ID3DX11EffectTechnique* ID3DX11Effect::GetTechniqueByIndex([In] unsigned int Index) + ID3DX11Effect::GetTechniqueByIndex +
+ + +

Get a technique by name.

+
+

The name of the technique.

+

A reference to an . If a technique with the appropriate name is not found an invalid technique is returned. should be called on the returned technique to determine whether it is valid.

+ +

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476839 + ID3DX11EffectTechnique* ID3DX11Effect::GetTechniqueByName([In] const char* Name) + ID3DX11Effect::GetTechniqueByName +
+ + +

Gets a class linkage interface.

+
+

Returns a reference to an interface.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476831 + ID3D11ClassLinkage* ID3DX11Effect::GetClassLinkage() + ID3DX11Effect::GetClassLinkage +
+ + +

Creates a copy of an effect interface.

+
+

Flags affecting the creation of the cloned effect. Can be 0 or one of the following values.

FlagDescription
D3DX11_EFFECT_CLONE_FORCE_NONSINGLEIgnore all "single" qualifiers on cbuffers. All cbuffers will have their own s created in the cloned effect.

?

+

Pointer to an reference that will be set to the copy of the effect.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476830 + HRESULT ID3DX11Effect::CloneEffect([In] unsigned int Flags,[In] ID3DX11Effect** ppClonedEffect) + ID3DX11Effect::CloneEffect +
+ + +

Minimize the amount of memory required for an effect.

+
+

Returns one of the following Direct3D 11 Return Codes.

+ +

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. API methods to read variables will no longer work once reflection data has been removed.

The following methods will fail after Optimize has been called on an effect.

Note??References retrieved with these methods before calling are still valid after is called. This allows the application to get all the variables, techniques, and passes it will use, call Optimize, and then use the effect.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476845 + HRESULT ID3DX11Effect::Optimize() + ID3DX11Effect::Optimize +
+ + +

Test an effect to see if the reflection metadata has been removed from memory.

+
+

TRUE if the effect is optimized; otherwise .

+ +

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476843 + BOOL ID3DX11Effect::IsOptimized() + ID3DX11Effect::IsOptimized +
+ + +

Test an effect to see if it contains valid syntax.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476844 + IsValid + IsValid + BOOL ID3DX11Effect::IsValid() +
+ + +

Get the device that created the effect.

+
+ +

An effect is created for a specific device, by calling a function such as .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476835 + GetDevice + GetDevice + HRESULT ID3DX11Effect::GetDevice([Out] ID3D11Device** ppDevice) +
+ + +

Get an effect description.

+
+ +

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476834 + GetDesc + GetDesc + HRESULT ID3DX11Effect::GetDesc([Out] D3DX11_EFFECT_DESC* pDesc) +
+ + +

Gets a class linkage interface.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476831 + GetClassLinkage + GetClassLinkage + ID3D11ClassLinkage* ID3DX11Effect::GetClassLinkage() +
+ + +

Test an effect to see if the reflection metadata has been removed from memory.

+
+ +

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476843 + IsOptimized + IsOptimized + BOOL ID3DX11Effect::IsOptimized() +
+ + +

The blend-variable interface accesses blend state.

+
+ +

An interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476653 + ID3DX11EffectBlendVariable + ID3DX11EffectBlendVariable +
+ + +

The interface is the base class for all effect variables.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476788 + ID3DX11EffectVariable + ID3DX11EffectVariable +
+ + + Set data. + + A reference to the variable. + size in bytes of data to write. + + Returns one of the following {{Direct3D 10 Return Codes}}. + + + This method does no conversion or type checking; it is therefore a very quick way to access array items. + + HRESULT ID3D11EffectVariable::SetRawValue([None] void* pData,[None] int Offset,[None] int Count) + + + + Get data. + + + This method does no conversion or type checking; it is therefore a very quick way to access array items. + + The number of bytes to get. + Returns a filled with the value. + HRESULT ID3D11EffectVariable::GetRawValue([None] void* pData,[None] int Offset,[None] int Count) + + + + Get a scalar variable. + + + AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a scalar variable. See . + ID3D11EffectScalarVariable* ID3D11EffectVariable::AsScalar() + + + + Get a vector variable. + + + AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a vector variable. See . + ID3D11EffectVectorVariable* ID3D11EffectVariable::AsVector() + + + + Get a matrix variable. + + + AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a matrix variable. See . + ID3D11EffectMatrixVariable* ID3D11EffectVariable::AsMatrix() + + + + Get a string variable. + + + AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a string variable. See . + ID3D11EffectStringVariable* ID3D11EffectVariable::AsString() + + + + Get a shader-resource variable. + + + AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a shader-resource variable. See . + ID3D11EffectShaderResourceVariable* ID3D11EffectVariable::AsShaderResource() + + + + Get a render-target-view variable. + + + This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a render-target-view variable. See . + ID3D11EffectRenderTargetViewVariable* ID3D11EffectVariable::AsRenderTargetView() + + + + Get a depth-stencil-view variable. + + + This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a depth-stencil-view variable. See . + ID3D11EffectDepthStencilViewVariable* ID3D11EffectVariable::AsDepthStencilView() + + + + Get a class instance variable. + + A reference to a . + ID3D11EffectClassInstanceVariable* ID3D11EffectVariable::AsClassInstance() + + + + Get an interface variable. + + A reference to a . + ID3D11EffectClassInstanceVariable* ID3D11EffectVariable::AsInterface() + + + + Get an unordered access view variable. + + A reference to a . + ID3D11EffectUnorderedAccessViewVariable* ID3D11EffectVariable::AsDepthStencilView() + + + + Get a constant buffer. + + + AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a constant buffer. See . + ID3D11EffectConstantBuffer* ID3D11EffectVariable::AsConstantBuffer() + + + + Get a shader variable. + + + AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a shader variable. See . + ID3D11EffectShaderVariable* ID3D11EffectVariable::AsShader() + + + + Get a effect-blend variable. + + + AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to an effect blend variable. See . + ID3D11EffectBlendVariable* ID3D11EffectVariable::AsBlend() + + + + Get a depth-stencil variable. + + + AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a depth-stencil variable. See . + ID3D11EffectDepthStencilVariable* ID3D11EffectVariable::AsDepthStencil() + + + + Get a rasterizer variable. + + + AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a rasterizer variable. See . + ID3D11EffectRasterizerVariable* ID3D11EffectVariable::AsRasterizer() + + + + Get a sampler variable. + + + AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data. Applications can test the returned object for validity by calling {{IsValid}}. + + A reference to a sampler variable. See . + ID3D11EffectSamplerVariable* ID3D11EffectVariable::AsSampler() + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Compare the data type with the data stored.

+
+

TRUE if the syntax is valid; otherwise .

+ +

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476815 + BOOL ID3DX11EffectVariable::IsValid() + ID3DX11EffectVariable::IsValid +
+ + +

Get type information.

+
+

A reference to an .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476814 + ID3DX11EffectType* ID3DX11EffectVariable::GetType() + ID3DX11EffectVariable::GetType +
+ + +

Get a description.

+
+

A reference to an effect-variable description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476807 + HRESULT ID3DX11EffectVariable::GetDesc([Out] D3DX11_EFFECT_VARIABLE_DESC* pDesc) + ID3DX11EffectVariable::GetDesc +
+ + +

Get an annotation by index.

+
+

A zero-based index.

+

A reference to an .

+ +

Annonations can be attached to a technique, a pass, or a global variable.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476805 + ID3DX11EffectVariable* ID3DX11EffectVariable::GetAnnotationByIndex([In] unsigned int Index) + ID3DX11EffectVariable::GetAnnotationByIndex +
+ + +

Get an annotation by name.

+
+

The annotation name.

+

A reference to an . Note that if the annotation is not found the returned will be empty. The method should be called to determine whether the annotation was found.

+ +

Annonations can be attached to a technique, a pass, or a global variable.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476806 + ID3DX11EffectVariable* ID3DX11EffectVariable::GetAnnotationByName([In] const char* Name) + ID3DX11EffectVariable::GetAnnotationByName +
+ + +

Get a structure member by index.

+
+

A zero-based index.

+

A reference to an .

+ +

If the effect variable is an structure, use this method to look up a member by index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476809 + ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberByIndex([In] unsigned int Index) + ID3DX11EffectVariable::GetMemberByIndex +
+ + +

Get a structure member by name.

+
+

Member name.

+

A reference to an .

+ +

If the effect variable is an structure, use this method to look up a member by name.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476810 + ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberByName([In] const char* Name) + ID3DX11EffectVariable::GetMemberByName +
+ + +

Get a structure member by semantic.

+
+

The semantic.

+

A reference to an .

+ +

If the effect variable is an structure, use this method to look up a member by attached semantic.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476811 + ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberBySemantic([In] const char* Semantic) + ID3DX11EffectVariable::GetMemberBySemantic +
+ + +

Get an array element.

+
+

A zero-based index; otherwise 0.

+

A reference to an .

+ +

If the effect variable is an array, use this method to return one of the elements.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476808 + ID3DX11EffectVariable* ID3DX11EffectVariable::GetElement([In] unsigned int Index) + ID3DX11EffectVariable::GetElement +
+ + +

Get a constant buffer.

+
+

A reference to a .

+ +

Effect variables are read-from or written-to a constant buffer.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476812 + ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::GetParentConstantBuffer() + ID3DX11EffectVariable::GetParentConstantBuffer +
+ + +

Get a scalar variable.

+
+

A reference to a scalar variable. See .

+ +

AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476799 + ID3DX11EffectScalarVariable* ID3DX11EffectVariable::AsScalar() + ID3DX11EffectVariable::AsScalar +
+ + +

Get a vector variable.

+
+

A reference to a vector variable. See .

+ +

AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476804 + ID3DX11EffectVectorVariable* ID3DX11EffectVariable::AsVector() + ID3DX11EffectVariable::AsVector +
+ + +

Get a matrix variable.

+
+

A reference to a matrix variable. See .

+ +

AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476795 + ID3DX11EffectMatrixVariable* ID3DX11EffectVariable::AsMatrix() + ID3DX11EffectVariable::AsMatrix +
+ + +

Get a string variable.

+
+

A reference to a string variable. See .

+ +

AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476802 + ID3DX11EffectStringVariable* ID3DX11EffectVariable::AsString() + ID3DX11EffectVariable::AsString +
+ + +

Get a class-instance variable.

+
+

A reference to class-instance variable. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476790 + ID3DX11EffectClassInstanceVariable* ID3DX11EffectVariable::AsClassInstance() + ID3DX11EffectVariable::AsClassInstance +
+ + +

Get an interface variable.

+
+

A reference to an interface variable. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476794 + ID3DX11EffectInterfaceVariable* ID3DX11EffectVariable::AsInterface() + ID3DX11EffectVariable::AsInterface +
+ + +

Get a shader-resource variable.

+
+

A reference to a shader-resource variable. See .

+ +

AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476801 + ID3DX11EffectShaderResourceVariable* ID3DX11EffectVariable::AsShaderResource() + ID3DX11EffectVariable::AsShaderResource +
+ + +

Get an unordered-access-view variable.

+
+

A reference to an unordered-access-view variable. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476803 + ID3DX11EffectUnorderedAccessViewVariable* ID3DX11EffectVariable::AsUnorderedAccessView() + ID3DX11EffectVariable::AsUnorderedAccessView +
+ + +

Get a render-target-view variable.

+
+

A reference to a render-target-view variable. See .

+ +

This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476797 + ID3DX11EffectRenderTargetViewVariable* ID3DX11EffectVariable::AsRenderTargetView() + ID3DX11EffectVariable::AsRenderTargetView +
+ + +

Get a depth-stencil-view variable.

+
+

A reference to a depth-stencil-view variable. See .

+ +

This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476793 + ID3DX11EffectDepthStencilViewVariable* ID3DX11EffectVariable::AsDepthStencilView() + ID3DX11EffectVariable::AsDepthStencilView +
+ + +

Get a constant buffer.

+
+

A reference to a constant buffer. See .

+ +

AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476791 + ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::AsConstantBuffer() + ID3DX11EffectVariable::AsConstantBuffer +
+ + +

Get a shader variable.

+
+

A reference to a shader variable. See .

+ +

AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476800 + ID3DX11EffectShaderVariable* ID3DX11EffectVariable::AsShader() + ID3DX11EffectVariable::AsShader +
+ + +

Get a effect-blend variable.

+
+

A reference to an effect blend variable. See .

+ +

AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476789 + ID3DX11EffectBlendVariable* ID3DX11EffectVariable::AsBlend() + ID3DX11EffectVariable::AsBlend +
+ + +

Get a depth-stencil variable.

+
+

A reference to a depth-stencil variable. See .

+ +

AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476792 + ID3DX11EffectDepthStencilVariable* ID3DX11EffectVariable::AsDepthStencil() + ID3DX11EffectVariable::AsDepthStencil +
+ + +

Get a rasterizer variable.

+
+

A reference to a rasterizer variable. See .

+ +

AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476796 + ID3DX11EffectRasterizerVariable* ID3DX11EffectVariable::AsRasterizer() + ID3DX11EffectVariable::AsRasterizer +
+ + +

Get a sampler variable.

+
+

A reference to a sampler variable. See .

+ +

AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476798 + ID3DX11EffectSamplerVariable* ID3DX11EffectVariable::AsSampler() + ID3DX11EffectVariable::AsSampler +
+ + +

Set data.

+
+

A reference to the variable.

+

The offset (in bytes) from the beginning of the reference to the data.

+

The number of bytes to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

This method does no conversion or type checking; it is therefore a very quick way to access array items.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476816 + HRESULT ID3DX11EffectVariable::SetRawValue([In] const void* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVariable::SetRawValue +
+ + +

Get data.

+
+

A reference to the variable.

+

The offset (in bytes) from the beginning of the reference to the data.

+

The number of bytes to get.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

This method does no conversion or type checking; it is therefore a very quick way to access array items.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476813 + HRESULT ID3DX11EffectVariable::GetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVariable::GetRawValue +
+ + +

Compare the data type with the data stored.

+
+ +

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476815 + IsValid + IsValid + BOOL ID3DX11EffectVariable::IsValid() +
+ + +

Get type information.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476814 + GetType + GetType + ID3DX11EffectType* ID3DX11EffectVariable::GetType() +
+ + +

Get a description.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476807 + GetDesc + GetDesc + HRESULT ID3DX11EffectVariable::GetDesc([Out] D3DX11_EFFECT_VARIABLE_DESC* pDesc) +
+ + +

Get a constant buffer.

+
+ +

Effect variables are read-from or written-to a constant buffer.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476812 + GetParentConstantBuffer + GetParentConstantBuffer + ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::GetParentConstantBuffer() +
+ + + Get a pointer to a blend-state interface. + + Returns . + HRESULT ID3D10EffectBlendVariable::GetBlendState([None] int Index,[Out] ID3D10BlendState** ppBlendState) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a blend-state interface.

+
+

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

+

The address of a reference to a blend-state interface (see ).

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476655 + HRESULT ID3DX11EffectBlendVariable::GetBlendState([In] unsigned int Index,[Out] ID3D11BlendState** ppBlendState) + ID3DX11EffectBlendVariable::GetBlendState +
+ + +

Sets an effect's blend-state.

+
+

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

+

A reference to an interface containing the blend-state to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476656 + HRESULT ID3DX11EffectBlendVariable::SetBlendState([In] unsigned int Index,[In] ID3D11BlendState* pBlendState) + ID3DX11EffectBlendVariable::SetBlendState +
+ + +

Reverts a previously set blend-state.

+
+

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476657 + HRESULT ID3DX11EffectBlendVariable::UndoSetBlendState([In] unsigned int Index) + ID3DX11EffectBlendVariable::UndoSetBlendState +
+ + +

Get a reference to a blend-state variable.

+
+

Index into an array of blend-state descriptions. If there is only one blend-state variable in the effect, use 0.

+

A reference to a blend-state description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476654 + HRESULT ID3DX11EffectBlendVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_BLEND_DESC* pBlendDesc) + ID3DX11EffectBlendVariable::GetBackingStore +
+ + +

A depth-stencil-variable interface accesses depth-stencil state.

+
+ +

An interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476677 + ID3DX11EffectDepthStencilVariable + ID3DX11EffectDepthStencilVariable +
+ + + Get a pointer to a depth-stencil interface. + + Returns a pointer to a blend-state interface (see ). + HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([None] int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a depth-stencil interface.

+
+

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

+

The address of a reference to a blend-state interface (see ).

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476679 + HRESULT ID3DX11EffectDepthStencilVariable::GetDepthStencilState([In] unsigned int Index,[Out] ID3D11DepthStencilState** ppDepthStencilState) + ID3DX11EffectDepthStencilVariable::GetDepthStencilState +
+ + +

Sets the depth stencil state.

+
+

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

+

Pointer to an interface containing the new depth stencil state.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476680 + HRESULT ID3DX11EffectDepthStencilVariable::SetDepthStencilState([In] unsigned int Index,[In] ID3D11DepthStencilState* pDepthStencilState) + ID3DX11EffectDepthStencilVariable::SetDepthStencilState +
+ + +

Reverts a previously set depth stencil state.

+
+

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476681 + HRESULT ID3DX11EffectDepthStencilVariable::UndoSetDepthStencilState([In] unsigned int Index) + ID3DX11EffectDepthStencilVariable::UndoSetDepthStencilState +
+ + +

Get a reference to a variable that contains depth-stencil state.

+
+

Index into an array of depth-stencil-state descriptions. If there is only one depth-stencil variable in the effect, use 0.

+

A reference to a depth-stencil-state description (see ).

+ +

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476678 + HRESULT ID3DX11EffectDepthStencilVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc) + ID3DX11EffectDepthStencilVariable::GetBackingStore +
+ + +

A depth-stencil-view-variable interface accesses a depth-stencil view.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476682 + ID3DX11EffectDepthStencilViewVariable + ID3DX11EffectDepthStencilViewVariable +
+ + + Set an array of depth-stencil-view resources. + + A pointer to an array of depth-stencil-view interfaces. See . + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Set an array of depth-stencil-view resources. + + A pointer to an array of depth-stencil-view interfaces. See . + The zero-based array index to set the first interface. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of depth-stencil-view resources. + + The number of elements in the array. + Returns an array of depth-stencil-view interfaces. See . + HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of depth-stencil-view resources. + + The zero-based array index to get the first interface. + The number of elements in the array. + Returns an array of depth-stencil-view interfaces. See . + HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a depth-stencil-view resource.

+
+

A reference to a depth-stencil-view interface. See .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476685 + HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencil([In] ID3D11DepthStencilView* pResource) + ID3DX11EffectDepthStencilViewVariable::SetDepthStencil +
+ + +

Get a depth-stencil-view resource.

+
+

The address of a reference to a depth-stencil-view interface. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476683 + HRESULT ID3DX11EffectDepthStencilViewVariable::GetDepthStencil([In] ID3D11DepthStencilView** ppResource) + ID3DX11EffectDepthStencilViewVariable::GetDepthStencil +
+ + +

Set an array of depth-stencil-view resources.

+
+

A reference to an array of depth-stencil-view interfaces. See .

+

The zero-based array index to set the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476686 + HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray +
+ + +

Set an array of depth-stencil-view resources.

+
+

A reference to an array of depth-stencil-view interfaces. See .

+

The zero-based array index to set the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476686 + HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray +
+ + +

Get an array of depth-stencil-view resources.

+
+

A reference to an array of depth-stencil-view interfaces. See .

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476684 + HRESULT ID3DX11EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectDepthStencilViewVariable::GetDepthStencilArray +
+ + +

A matrix-variable interface accesses a matrix.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476697 + ID3DX11EffectMatrixVariable + ID3DX11EffectMatrixVariable +
+ + + Set a floating-point matrix. + + A pointer to the first element in the matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrix([In] float* pData) + + + + Get a matrix. + + A reference to the first element in a matrix. + + Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) + + + + Get a matrix. + + A reference to the first element in a matrix. + + Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) + + + + Set a floating-point matrix. + + A pointer to the first element in the matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrix([In] float* pData) + + + + Set an array of floating-point matrices. + + A pointer to the first matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an array of floating-point matrices. + + A pointer to the first matrix. + The number of matrix elements to skip from the start of the array. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of matrices. + + The number of matrices in the returned array. + Returns an array of matrix. + HRESULT ID3D11EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of matrices. + + The offset (in number of matrices) between the start of the array and the first matrix returned. + The number of matrices in the returned array. + Returns an array of matrix. + HRESULT ID3D11EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and set a floating-point matrix. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to the first element of a matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrixTranspose([In] float* pData) + + + + Transpose and set a floating-point matrix. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to the first element of a matrix. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrixTranspose([In] float* pData) + + + + Transpose and set an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to an array of matrices. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and set an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + A pointer to an array of matrices. + The offset (in number of matrices) between the start of the array and the first matrix to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and get a floating-point matrix. + + The transposed matrix. + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) + + + + Transpose and get a floating-point matrix. + + The transposed matrix. + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. + + HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) + + + + Transpose and get an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + The number of matrices in the array to get. + Returns an array of transposed . + HRESULT ID3D11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Transpose and get an array of floating-point matrices. + + + Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). + + The offset (in number of matrices) between the start of the array and the first matrix to get. + The number of matrices in the array to get. + Returns an array of transposed . + HRESULT ID3D11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a floating-point matrix.

+
+

A reference to the first element in the matrix.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476702 + HRESULT ID3DX11EffectMatrixVariable::SetMatrix([In] const SHARPDX_MATRIX* pData) + ID3DX11EffectMatrixVariable::SetMatrix +
+ + +

Get a matrix.

+
+

A reference to the first element in a matrix.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476698 + HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) + ID3DX11EffectMatrixVariable::GetMatrix +
+ + +

Set an array of floating-point matrices.

+
+

A reference to the first matrix.

+

The number of matrix elements to skip from the start of the array.

+

The number of elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476703 + HRESULT ID3DX11EffectMatrixVariable::SetMatrixArray([In, Buffer] const SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectMatrixVariable::SetMatrixArray +
+ + +

Get an array of matrices.

+
+

A reference to the first element of the first matrix in an array of matrices.

+

The offset (in number of matrices) between the start of the array and the first matrix returned.

+

The number of matrices in the returned array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476699 + HRESULT ID3DX11EffectMatrixVariable::GetMatrixArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectMatrixVariable::GetMatrixArray +
+ + +

Transpose and set a floating-point matrix.

+
+

A reference to the first element of a matrix.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476704 + HRESULT ID3DX11EffectMatrixVariable::SetMatrixTranspose([In] const SHARPDX_MATRIX* pData) + ID3DX11EffectMatrixVariable::SetMatrixTranspose +
+ + +

Transpose and get a floating-point matrix.

+
+

A reference to the first element of a transposed matrix.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476700 + HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) + ID3DX11EffectMatrixVariable::GetMatrixTranspose +
+ + +

Transpose and set an array of floating-point matrices.

+
+

A reference to an array of matrices.

+

The offset (in number of matrices) between the start of the array and the first matrix to set.

+

The number of matrices in the array to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476705 + HRESULT ID3DX11EffectMatrixVariable::SetMatrixTransposeArray([In, Buffer] const SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectMatrixVariable::SetMatrixTransposeArray +
+ + +

Transpose and get an array of floating-point matrices.

+
+

A reference to the first element of an array of tranposed matrices.

+

The offset (in number of matrices) between the start of the array and the first matrix to get.

+

The number of matrices in the array to get.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476701 + HRESULT ID3DX11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectMatrixVariable::GetMatrixTransposeArray +
+ + +

An interface encapsulates state assignments within a technique.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ +

A pass is a block of code that sets render-state objects and shaders. A pass is declared within a technique.

To get an effect-pass interface, call a method like .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476706 + ID3DX11EffectPass + ID3DX11EffectPass +
+ + + Set the state contained in a pass to the device. + + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT Apply([None] UINT Flags) + + + + Set the state contained in a pass to the device. + + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT Apply([None] UINT Flags) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Test a pass to see if it contains valid syntax.

+
+

TRUE if the code syntax is valid; otherwise .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476718 + BOOL ID3DX11EffectPass::IsValid() + ID3DX11EffectPass::IsValid +
+ + +

Get a pass description.

+
+

A reference to a pass description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476712 + HRESULT ID3DX11EffectPass::GetDesc([Out] D3DX11_PASS_DESC* pDesc) + ID3DX11EffectPass::GetDesc +
+ + +

Get a vertex-shader description.

+
+

A reference to a vertex-shader description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476717 + HRESULT ID3DX11EffectPass::GetVertexShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) + ID3DX11EffectPass::GetVertexShaderDesc +
+ + +

Get a geometry-shader description.

+
+

A reference to a geometry-shader description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476714 + HRESULT ID3DX11EffectPass::GetGeometryShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) + ID3DX11EffectPass::GetGeometryShaderDesc +
+ + +

Get a pixel-shader description.

+
+

A reference to a pixel-shader description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476716 + HRESULT ID3DX11EffectPass::GetPixelShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) + ID3DX11EffectPass::GetPixelShaderDesc +
+ + +

Get hull-shader description.

+
+

A reference to a hull-shader description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476715 + HRESULT ID3DX11EffectPass::GetHullShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) + ID3DX11EffectPass::GetHullShaderDesc +
+ + +

Get a domain-shader description.

+
+

A reference to a domain-shader description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476713 + HRESULT ID3DX11EffectPass::GetDomainShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) + ID3DX11EffectPass::GetDomainShaderDesc +
+ + +

Get a compute-shader description.

+
+

A reference to a compute-shader description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476711 + HRESULT ID3DX11EffectPass::GetComputeShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) + ID3DX11EffectPass::GetComputeShaderDesc +
+ + +

Get an annotation by index.

+
+

A zero-based index.

+

A reference to an .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476709 + ID3DX11EffectVariable* ID3DX11EffectPass::GetAnnotationByIndex([In] unsigned int Index) + ID3DX11EffectPass::GetAnnotationByIndex +
+ + +

Get an annotation by name.

+
+

The name of the annotation.

+

A reference to an .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476710 + ID3DX11EffectVariable* ID3DX11EffectPass::GetAnnotationByName([In] const char* Name) + ID3DX11EffectPass::GetAnnotationByName +
+ + +

Set the state contained in a pass to the device.

+
+

Unused.

+

The to apply the pass to.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476707 + HRESULT ID3DX11EffectPass::Apply([In] unsigned int Flags,[In] ID3D11DeviceContext* pContext) + ID3DX11EffectPass::Apply +
+ + +

Generate a mask for allowing/preventing state changes.

+
+

A reference to a state-block mask (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476708 + HRESULT ID3DX11EffectPass::ComputeStateBlockMask([In] D3DX11_STATE_BLOCK_MASK* pStateBlockMask) + ID3DX11EffectPass::ComputeStateBlockMask +
+ + +

Test a pass to see if it contains valid syntax.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476718 + IsValid + IsValid + BOOL ID3DX11EffectPass::IsValid() +
+ + +

Get a pass description.

+
+ +

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476712 + GetDesc + GetDesc + HRESULT ID3DX11EffectPass::GetDesc([Out] D3DX11_PASS_DESC* pDesc) +
+ + +

Get a vertex-shader description.

+
+ +

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476717 + GetVertexShaderDesc + GetVertexShaderDesc + HRESULT ID3DX11EffectPass::GetVertexShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) +
+ + +

Get a geometry-shader description.

+
+ +

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476714 + GetGeometryShaderDesc + GetGeometryShaderDesc + HRESULT ID3DX11EffectPass::GetGeometryShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) +
+ + +

Get a pixel-shader description.

+
+ +

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476716 + GetPixelShaderDesc + GetPixelShaderDesc + HRESULT ID3DX11EffectPass::GetPixelShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) +
+ + +

Get hull-shader description.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476715 + GetHullShaderDesc + GetHullShaderDesc + HRESULT ID3DX11EffectPass::GetHullShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) +
+ + +

Get a domain-shader description.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476713 + GetDomainShaderDesc + GetDomainShaderDesc + HRESULT ID3DX11EffectPass::GetDomainShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) +
+ + +

Get a compute-shader description.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476711 + GetComputeShaderDesc + GetComputeShaderDesc + HRESULT ID3DX11EffectPass::GetComputeShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) +
+ + +

Describes an effect pass, which contains pipeline state.

+
+ +

is used with .

+
+ + ff476319 + D3DX11_PASS_DESC + D3DX11_PASS_DESC +
+ + +

Name of this pass (null if not anonymous).

+
+ + ff476319 + const char* Name + char Name +
+ + +

Number of annotations on this pass.

+
+ + ff476319 + unsigned int Annotations + unsigned int Annotations +
+ + +

Signature from the vertex shader or geometry shader (if there is no vertex shader) or null if neither exists.

+
+ + ff476319 + unsigned char* pIAInputSignature + unsigned char pIAInputSignature +
+ + +

Singature size in bytes.

+
+ + ff476319 + SIZE_T IAInputSignatureSize + SIZE_T IAInputSignatureSize +
+ + +

The stencil-reference value used in the depth-stencil state.

+
+ + ff476319 + unsigned int StencilRef + unsigned int StencilRef +
+ + +

The sample mask for the blend state.

+
+ + ff476319 + unsigned int SampleMask + unsigned int SampleMask +
+ + +

The per-component blend factors (RGBA) for the blend state.

+
+ + ff476319 + SHARPDX_COLOR4 BlendFactor + SHARPDX_COLOR4 BlendFactor +
+ + + Returns the signature of this Effect pass. + + + + + Returns true if this Effect pass has a Signature (eg: if a VertexShader or Geometry Shader is present), false otherwise + + + + +

Describes an effect pass.

+
+ +

is used with Get*ShaderDesc methods.

If this is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. It's name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, pShaderVariable != null, but pShaderVariable->IsValid() == .

+
+ + ff476320 + D3DX11_PASS_SHADER_DESC + D3DX11_PASS_SHADER_DESC +
+ + +

The variable that this shader came from.

+
+ + ff476320 + ID3DX11EffectShaderVariable* pShaderVariable + ID3DX11EffectShaderVariable pShaderVariable +
+ + +

The element of pShaderVariable (if an array) or 0 if not applicable.

+
+ + ff476320 + unsigned int ShaderIndex + unsigned int ShaderIndex +
+ + + A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. Its name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called. + + ID3D10EffectShaderVariable* pShaderVariable + + + +

A rasterizer-variable interface accesses rasterizer state.

+
+ +

An interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476719 + ID3DX11EffectRasterizerVariable + ID3DX11EffectRasterizerVariable +
+ + + Get a pointer to a rasterizer interface. + + Returns a pointer to a rasterizer interface (see ). + HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([None] int Index,[Out] ID3D10RasterizerState** ppRasterizerState) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a rasterizer interface.

+
+

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

+

The address of a reference to a rasterizer interface (see ).

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476721 + HRESULT ID3DX11EffectRasterizerVariable::GetRasterizerState([In] unsigned int Index,[Out] ID3D11RasterizerState** ppRasterizerState) + ID3DX11EffectRasterizerVariable::GetRasterizerState +
+ + +

Sets the rasterizer state.

+
+

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

+

Pointer to an interface.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476722 + HRESULT ID3DX11EffectRasterizerVariable::SetRasterizerState([In] unsigned int Index,[In] ID3D11RasterizerState* pRasterizerState) + ID3DX11EffectRasterizerVariable::SetRasterizerState +
+ + +

Reverts a previously set rasterizer state.

+
+

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476723 + HRESULT ID3DX11EffectRasterizerVariable::UndoSetRasterizerState([In] unsigned int Index) + ID3DX11EffectRasterizerVariable::UndoSetRasterizerState +
+ + +

Get a reference to a variable that contains rasteriser state.

+
+

Index into an array of rasteriser-state descriptions. If there is only one rasteriser variable in the effect, use 0.

+

A reference to a rasteriser-state description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476720 + HRESULT ID3DX11EffectRasterizerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_RASTERIZER_DESC* pRasterizerDesc) + ID3DX11EffectRasterizerVariable::GetBackingStore +
+ + +

A render-target-view interface accesses a render target.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476724 + ID3DX11EffectRenderTargetViewVariable + ID3DX11EffectRenderTargetViewVariable +
+ + + Set an array of render-targets. + + Set an array of render-target-view interfaces. See . + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Set an array of render-targets. + + Set an array of render-target-view interfaces. See . + The zero-based array index to store the first interface. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of render-targets. + + The number of elements in the array. + Returns an array of . + HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of render-targets. + + The zero-based array index to get the first interface. + The number of elements in the array. + Returns an array of . + HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a render-target.

+
+

A reference to a render-target-view interface. See .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476727 + HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTarget([In] ID3D11RenderTargetView* pResource) + ID3DX11EffectRenderTargetViewVariable::SetRenderTarget +
+ + +

Get a render-target.

+
+

The address of a reference to a render-target-view interface. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476725 + HRESULT ID3DX11EffectRenderTargetViewVariable::GetRenderTarget([Out] ID3D11RenderTargetView** ppResource) + ID3DX11EffectRenderTargetViewVariable::GetRenderTarget +
+ + +

Set an array of render-targets.

+
+

Set an array of render-target-view interfaces. See .

+

The zero-based array index to store the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476728 + HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray +
+ + +

Set an array of render-targets.

+
+

Set an array of render-target-view interfaces. See .

+

The zero-based array index to store the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476728 + HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray +
+ + +

Get an array of render-targets.

+
+

A reference to an array of render-target-view interfaces. See .

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476726 + HRESULT ID3DX11EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectRenderTargetViewVariable::GetRenderTargetArray +
+ + +

Revert a previously set sampler state.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476733 + ID3DX11EffectSamplerVariable + ID3DX11EffectSamplerVariable +
+ + + Get a reference to a sampler interface. + + Returns a reference to a sampler interface (see ). + HRESULT ID3D10EffectSamplerVariable::GetSampler([None] int Index,[Out] ID3D10SamplerState** ppSampler) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to a sampler interface.

+
+

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

+

The address of a reference to a sampler interface (see ).

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476731 + HRESULT ID3DX11EffectSamplerVariable::GetSampler([In] unsigned int Index,[Out] ID3D11SamplerState** ppSampler) + ID3DX11EffectSamplerVariable::GetSampler +
+ + +

Set sampler state.

+
+

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

+

Pointer to an interface containing the sampler state.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476732 + HRESULT ID3DX11EffectSamplerVariable::SetSampler([In] unsigned int Index,[In] ID3D11SamplerState* pSampler) + ID3DX11EffectSamplerVariable::SetSampler +
+ + +

Revert a previously set sampler state.

+
+

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476733 + HRESULT ID3DX11EffectSamplerVariable::UndoSetSampler([In] unsigned int Index) + ID3DX11EffectSamplerVariable::UndoSetSampler +
+ + +

Get a reference to a variable that contains sampler state.

+
+

Index into an array of sampler descriptions. If there is only one sampler variable in the effect, use 0.

+

A reference to a sampler description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476730 + HRESULT ID3DX11EffectSamplerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_SAMPLER_DESC* pSamplerDesc) + ID3DX11EffectSamplerVariable::GetBackingStore +
+ + +

An effect-scalar-variable interface accesses scalar values.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476734 + ID3DX11EffectScalarVariable + ID3DX11EffectScalarVariable +
+ + + Set a floating-point variable. + + A reference to the variable. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetFloat([None] float Value) + + + + Set an array of floating-point variables. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an array of floating-point variables. + + A reference to the start of the data to set. + Must be set to 0; this is reserved for future use. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of floating-point variables. + + The number of array elements to set. + Returns an array of floats. + HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of floating-point variables. + + Must be set to 0; this is reserved for future use. + The number of array elements to set. + Returns an array of floats. + HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an unsigned integer variable. + + A reference to the variable. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value) + + + + Set an array of unsigned integer variables. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Set an integer variable. + + A reference to the variable. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value) + + + + Set an array of integer variables. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Set an array of integer variables. + + A reference to the start of the data to set. + Must be set to 0; this is reserved for future use. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Get an array of integer variables. + + The number of array elements to set. + Returns an array of integer variables. + HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Get an array of integer variables. + + Must be set to 0; this is reserved for future use. + The number of array elements to set. + Returns an array of integer variables. + HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Set a boolean variable. + + A reference to the variable. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetBool([None] BOOL Value) + + + + Get a boolean variable. + + Returns a boolean. + HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue) + + + + Set an array of boolean variables. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Set an array of boolean variables. + + A reference to the start of the data to set. + Must be set to 0; this is reserved for future use. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Get an array of boolean variables. + + Must be set to 0; this is reserved for future use. + The number of array elements to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a floating-point variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476743 + HRESULT ID3DX11EffectScalarVariable::SetFloat([In] const float Value) + ID3DX11EffectScalarVariable::SetFloat +
+ + +

Get a floating-point variable.

+
+

A reference to the variable.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476737 + HRESULT ID3DX11EffectScalarVariable::GetFloat([Out] float* pValue) + ID3DX11EffectScalarVariable::GetFloat +
+ + +

Set an array of floating-point variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476744 + HRESULT ID3DX11EffectScalarVariable::SetFloatArray([In, Buffer] const float* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectScalarVariable::SetFloatArray +
+ + +

Get an array of floating-point variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476738 + HRESULT ID3DX11EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectScalarVariable::GetFloatArray +
+ + +

Set an integer variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476745 + HRESULT ID3DX11EffectScalarVariable::SetInt([In] const int Value) + ID3DX11EffectScalarVariable::SetInt +
+ + +

Get an integer variable.

+
+

A reference to the variable.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476739 + HRESULT ID3DX11EffectScalarVariable::GetInt([Out] int* pValue) + ID3DX11EffectScalarVariable::GetInt +
+ + +

Set an array of integer variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476746 + HRESULT ID3DX11EffectScalarVariable::SetIntArray([In, Buffer] const int* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectScalarVariable::SetIntArray +
+ + +

Get an array of integer variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476740 + HRESULT ID3DX11EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectScalarVariable::GetIntArray +
+ + +

Set a boolean variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476741 + HRESULT ID3DX11EffectScalarVariable::SetBool([In] const BOOL Value) + ID3DX11EffectScalarVariable::SetBool +
+ + +

Get a boolean variable.

+
+

A reference to the variable.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476735 + HRESULT ID3DX11EffectScalarVariable::GetBool([Out] BOOL* pValue) + ID3DX11EffectScalarVariable::GetBool +
+ + +

Set an array of boolean variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476742 + HRESULT ID3DX11EffectScalarVariable::SetBoolArray([In, Buffer] const BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectScalarVariable::SetBoolArray +
+ + +

Get an array of boolean variables.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476736 + HRESULT ID3DX11EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectScalarVariable::GetBoolArray +
+ + +

Describes an effect shader.

+
+ +

is used with .

+
+ + ff476304 + D3DX11_EFFECT_SHADER_DESC + D3DX11_EFFECT_SHADER_DESC +
+ + +

Passed into CreateInputLayout. Only valid on a vertex shader or geometry shader. See .

+
+ + ff476304 + const unsigned char* pInputSignature + unsigned char pInputSignature +
+ + +

TRUE is the shader is defined inline; otherwise .

+
+ + ff476304 + BOOL IsInline + BOOL IsInline +
+ + +

Shader bytecode.

+
+ + ff476304 + const unsigned char* pBytecode + unsigned char pBytecode +
+ + +

The length of pBytecode.

+
+ + ff476304 + unsigned int BytecodeLength + unsigned int BytecodeLength +
+ + +

Indicates which stream is rasterized. D3D11 geometry shaders can output up to four streams of data, one of which can be rasterized.

+
+ + ff476304 + unsigned int RasterizedStream + unsigned int RasterizedStream +
+ + +

Number of entries in the input signature.

+
+ + ff476304 + unsigned int NumInputSignatureEntries + unsigned int NumInputSignatureEntries +
+ + +

Number of entries in the output signature.

+
+ + ff476304 + unsigned int NumOutputSignatureEntries + unsigned int NumOutputSignatureEntries +
+ + +

Number of entries in the patch constant signature.

+
+ + ff476304 + unsigned int NumPatchConstantSignatureEntries + unsigned int NumPatchConstantSignatureEntries +
+ + + Gets the signature passed into InputLayout. Only valid on a vertex shader or geometry shader. + + The signature. + + + + Gets the bytecode from the compiled shader. + + The bytecode. + + + +

Stream out declaration string (for geometry shader with SO).

+
+ + ff476304 + const void* SODecls[4] + void SODecls +
+ + +

A shader-resource interface accesses a shader resource.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476747 + ID3DX11EffectShaderResourceVariable + ID3DX11EffectShaderResourceVariable +
+ + + Set an array of shader resources. + + The address of an array of shader-resource-view interfaces. See . + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Set an array of shader resources. + + The address of an array of shader-resource-view interfaces. See . + The zero-based array index to get the first interface. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of shader resources. + + The number of elements in the array. + Returns an array of shader-resource-view interfaces. See . + HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Get an array of shader resources. + + The zero-based array index to get the first interface. + The number of elements in the array. + Returns an array of shader-resource-view interfaces. See . + HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a shader resource.

+
+

The address of a reference to a shader-resource-view interface. See .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476750 + HRESULT ID3DX11EffectShaderResourceVariable::SetResource([In] ID3D11ShaderResourceView* pResource) + ID3DX11EffectShaderResourceVariable::SetResource +
+ + +

Get a shader resource.

+
+

The address of a reference to a shader-resource-view interface. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476748 + HRESULT ID3DX11EffectShaderResourceVariable::GetResource([Out] ID3D11ShaderResourceView** ppResource) + ID3DX11EffectShaderResourceVariable::GetResource +
+ + +

Set an array of shader resources.

+
+

The address of an array of shader-resource-view interfaces. See .

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476751 + HRESULT ID3DX11EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectShaderResourceVariable::SetResourceArray +
+ + +

Set an array of shader resources.

+
+

The address of an array of shader-resource-view interfaces. See .

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476751 + HRESULT ID3DX11EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectShaderResourceVariable::SetResourceArray +
+ + +

Get an array of shader resources.

+
+

The address of an array of shader-resource-view interfaces. See .

+

The zero-based array index to get the first interface.

+

The number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476749 + HRESULT ID3DX11EffectShaderResourceVariable::GetResourceArray([Out, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectShaderResourceVariable::GetResourceArray +
+ + +

A string-variable interface accesses a string variable.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476763 + ID3DX11EffectStringVariable + ID3DX11EffectStringVariable +
+ + + Get the string. + + Returns a reference to the string. + HRESULT ID3D10EffectStringVariable::GetString([Out] const char** ppString) + + + + Get an array of strings. + + The number of strings in the returned array. + Returns a reference to the first string in the array. + HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) + + + + Get an array of strings. + + The offset (in number of strings) between the start of the array and the first string to get. + The number of strings in the returned array. + Returns a reference to the first string in the array. + HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the string.

+
+

A reference to the string.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476764 + HRESULT ID3DX11EffectStringVariable::GetString([Out] const void** ppString) + ID3DX11EffectStringVariable::GetString +
+ + +

Get an array of strings.

+
+

A reference to the first string in the array.

+

The offset (in number of strings) between the start of the array and the first string to get.

+

The number of strings in the returned array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476765 + HRESULT ID3DX11EffectStringVariable::GetStringArray([Out, Buffer] const void** ppStrings,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectStringVariable::GetStringArray +
+ + +

Accesses an unordered access view.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476783 + ID3DX11EffectUnorderedAccessViewVariable + ID3DX11EffectUnorderedAccessViewVariable +
+ + + Sets the specified view. + + The view. + A object describing the result of the operation. + HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + + + + Sets the specified data ref. + + The data ref. + The offset. + A object describing the result of the operation. + HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + + + + Sets the specified data ref. + + The data ref. + A object describing the result of the operation. + HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + + + + Sets the specified data ref. + + The data ref. + The offset. + A object describing the result of the operation. + HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + + + + Gets the unordered access view array. + + The count. + A object describing the result of the operation. + HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + + + + Gets the unordered access view array. + + The offset. + The count. + A object describing the result of the operation. + HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set an unordered-access-view.

+
+

Pointer to an .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476786 + HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessView([In] ID3D11UnorderedAccessView* pResource) + ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessView +
+ + +

Get an unordered-access-view.

+
+

Pointer to an reference that will be set on return.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476784 + HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessView([In] ID3D11UnorderedAccessView** ppResource) + ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessView +
+ + +

Set an array of unordered-access-views.

+
+

An array of references.

+

Index of the first unordered-access-view.

+

Number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476787 + HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray +
+ + +

Set an array of unordered-access-views.

+
+

An array of references.

+

Index of the first unordered-access-view.

+

Number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476787 + HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray +
+ + +

Get an array of unordered-access-views.

+
+

Pointer to an reference that will be set to the UAV array on return.

+

Index of the first interface.

+

Number of elements in the array.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476785 + HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray +
+ + +

A vector-variable interface accesses a four-component vector.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476817 + ID3DX11EffectVectorVariable + ID3DX11EffectVectorVariable +
+ + + Get a four-component vector that contains integer data. + + Returns a four-component vector that contains integer data + HRESULT ID3D11EffectVectorVariable::GetIntVector([Out] int* pData) + + + + Get a four-component vector that contains floating-point data. + + Returns a four-component vector that contains floating-point data. + HRESULT ID3D11EffectVectorVariable::GetFloatVector([Out] float* pData) + + + + Get a four-component vector that contains boolean data. + + a four-component vector that contains boolean data. + HRESULT ID3D11EffectVectorVariable::GetBoolVector([Out, Buffer] BOOL* pData) + + + + Get a four-component vector. + + Type of the four-component vector + a four-component vector. + HRESULT ID3D11EffectVectorVariable::GetFloatVector([Out, Buffer] BOOL* pData) + + + + Set an array of four-component vectors that contain integer data. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetIntVectorArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Set an array of four-component vectors that contain floating-point data. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set an array of four-component vectors that contain floating-point data. + + Type of the four-component vector + A reference to the start of the data to set. + + Returns one of the following {{Direct3D 10 Return Codes}}. + + HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Set a x-component vector. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a x-component vector. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a two-component vector that contains floating-point data. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a three-component vector that contains floating-point data. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set a four-component color that contains floating-point data. + + A reference to the first component. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) + + + + Set an array of four-component color that contain floating-point data. + + A reference to the start of the data to set. + Returns one of the following {{Direct3D 10 Return Codes}}. + HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain integer data. + + The number of array elements to set. + Returns an array of four-component vectors that contain integer data. + HRESULT ID3D11EffectVectorVariable::GetIntVectorArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain floating-point data. + + The number of array elements to set. + Returns an array of four-component vectors that contain floating-point data. + HRESULT ID3D11EffectVectorVariable::GetFloatVectorArray([None] float* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain boolean data. + + The number of array elements to set. + an array of four-component vectors that contain boolean data. + HRESULT ID3D11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Get an array of four-component vectors that contain boolean data. + + The number of array elements to set. + an array of four-component vectors that contain boolean data. + HRESULT ID3D11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a four-component vector that contains boolean data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476824 + HRESULT ID3DX11EffectVectorVariable::SetBoolVector([In] const SHARPDX_BOOL4* pData) + ID3DX11EffectVectorVariable::SetBoolVector +
+ + +

Set a four-component vector that contains integer data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476828 + HRESULT ID3DX11EffectVectorVariable::SetIntVector([In] const SHARPDX_INT4* pData) + ID3DX11EffectVectorVariable::SetIntVector +
+ + +

Set a four-component vector that contains floating-point data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476826 + HRESULT ID3DX11EffectVectorVariable::SetFloatVector([In] const float* pData) + ID3DX11EffectVectorVariable::SetFloatVector +
+ + +

Get a four-component vector that contains boolean data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476818 + HRESULT ID3DX11EffectVectorVariable::GetBoolVector([Out] SHARPDX_BOOL4* pData) + ID3DX11EffectVectorVariable::GetBoolVector +
+ + +

Get a four-component vector that contains integer data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476822 + HRESULT ID3DX11EffectVectorVariable::GetIntVector([Out] SHARPDX_INT4* pData) + ID3DX11EffectVectorVariable::GetIntVector +
+ + +

Get a four-component vector that contains floating-point data.

+
+

A reference to the first component.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476820 + HRESULT ID3DX11EffectVectorVariable::GetFloatVector([Out] SHARPDX_VECTOR4* pData) + ID3DX11EffectVectorVariable::GetFloatVector +
+ + +

Set an array of four-component vectors that contain boolean data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476825 + HRESULT ID3DX11EffectVectorVariable::SetBoolVectorArray([In, Buffer] const SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVectorVariable::SetBoolVectorArray +
+ + +

Set an array of four-component vectors that contain integer data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476829 + HRESULT ID3DX11EffectVectorVariable::SetIntVectorArray([In, Buffer] const SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVectorVariable::SetIntVectorArray +
+ + +

Set an array of four-component vectors that contain floating-point data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476827 + HRESULT ID3DX11EffectVectorVariable::SetFloatVectorArray([In, Buffer] const SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVectorVariable::SetFloatVectorArray +
+ + +

Get an array of four-component vectors that contain boolean data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476819 + HRESULT ID3DX11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVectorVariable::GetBoolVectorArray +
+ + +

Get an array of four-component vectors that contain integer data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476823 + HRESULT ID3DX11EffectVectorVariable::GetIntVectorArray([Out, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVectorVariable::GetIntVectorArray +
+ + +

Get an array of four-component vectors that contain floating-point data.

+
+

A reference to the start of the data to set.

+

Must be set to 0; this is reserved for future use.

+

The number of array elements to set.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476821 + HRESULT ID3DX11EffectVectorVariable::GetFloatVectorArray([Out, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) + ID3DX11EffectVectorVariable::GetFloatVectorArray +
+ + +

Describes an effect variable.

+
+ +

is used with .

+
+ + ff476306 + D3DX11_EFFECT_VARIABLE_FLAGS + D3DX11_EFFECT_VARIABLE_FLAGS +
+ + +

Name of this variable, annotation, or structure member.

+
+ + ff476306 + D3DX11_EFFECT_VARIABLE_ANNOTATION + D3DX11_EFFECT_VARIABLE_ANNOTATION +
+ + +

Semantic string of this variable or structure member (null for annotations or if not present).

+
+ + ff476306 + D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT + D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT +
+ + + None. + + + None + None + + + + Functions + + + + + + DLLs loaders + + + + +

Creates an effect from a binary effect or file.

+
+

Blob of compiled effect data.

+

Length of the data blob.

+

No effect flags exist. Set to zero.

+

Pointer to the on which to create Effect resources.

+

Address of the newly created interface.

+

The return value is one of the values listed in Direct3D 11 Return Codes.

+ +

Note??You must use Effects 11 source to build your effects-type application. For more info about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476273 + HRESULT D3DX11CreateEffectFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D11Device* pDevice,[Out, Fast] ID3DX11Effect** ppEffect) + D3DX11CreateEffectFromMemory +
+ + +

Accesses a class instance.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476658 + ID3DX11EffectClassInstanceVariable + ID3DX11EffectClassInstanceVariable +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets a class instance.

+
+

Pointer to an reference that will be set to class instance.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476659 + HRESULT ID3DX11EffectClassInstanceVariable::GetClassInstance([In] ID3D11ClassInstance** ppClassInstance) + ID3DX11EffectClassInstanceVariable::GetClassInstance +
+ + +

Gets a class instance.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476659 + GetClassInstance + GetClassInstance + HRESULT ID3DX11EffectClassInstanceVariable::GetClassInstance([In] ID3D11ClassInstance** ppClassInstance) +
+ + +

A constant-buffer interface accesses constant buffers or texture buffers.

+
+ +

Use constant buffers to store many effect constants; grouping constants into buffers based on their frequency of update. This allows you to minimize the number of state changes as well as make the fewest API calls to change state. Both of these factors lead to better performance.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476670 + ID3DX11EffectConstantBuffer + ID3DX11EffectConstantBuffer +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a constant-buffer.

+
+

A reference to a constant-buffer interface. See .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476673 + HRESULT ID3DX11EffectConstantBuffer::SetConstantBuffer([In] ID3D11Buffer* pConstantBuffer) + ID3DX11EffectConstantBuffer::SetConstantBuffer +
+ + +

Reverts a previously set constant buffer.

+
+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476675 + HRESULT ID3DX11EffectConstantBuffer::UndoSetConstantBuffer() + ID3DX11EffectConstantBuffer::UndoSetConstantBuffer +
+ + +

Get a constant-buffer.

+
+

The address of a reference to a constant-buffer interface. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476671 + HRESULT ID3DX11EffectConstantBuffer::GetConstantBuffer([Out] ID3D11Buffer** ppConstantBuffer) + ID3DX11EffectConstantBuffer::GetConstantBuffer +
+ + +

Set a texture-buffer.

+
+

A reference to a shader-resource-view interface for accessing a texture buffer.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476674 + HRESULT ID3DX11EffectConstantBuffer::SetTextureBuffer([In] ID3D11ShaderResourceView* pTextureBuffer) + ID3DX11EffectConstantBuffer::SetTextureBuffer +
+ + +

Reverts a previously set texture buffer.

+
+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476676 + HRESULT ID3DX11EffectConstantBuffer::UndoSetTextureBuffer() + ID3DX11EffectConstantBuffer::UndoSetTextureBuffer +
+ + +

Get a texture-buffer.

+
+

The address of a reference to a shader-resource-view interface for accessing a texture buffer. See .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476672 + HRESULT ID3DX11EffectConstantBuffer::GetTextureBuffer([Out] ID3D11ShaderResourceView** ppTextureBuffer) + ID3DX11EffectConstantBuffer::GetTextureBuffer +
+ + +

The interface accesses an Effect group.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ +

To get an interface, call a method like .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476687 + ID3DX11EffectGroup + ID3DX11EffectGroup +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Test an effect to see if it contains valid syntax.

+
+

TRUE if the code syntax is valid; otherwise .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476693 + BOOL ID3DX11EffectGroup::IsValid() + ID3DX11EffectGroup::IsValid +
+ + +

Gets a group description.

+
+

A reference to a structure.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476690 + HRESULT ID3DX11EffectGroup::GetDesc([Out] D3DX11_GROUP_DESC* pDesc) + ID3DX11EffectGroup::GetDesc +
+ + +

Get an annotation by index.

+
+

Index of the annotation.

+

Pointer to an interface.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476688 + ID3DX11EffectVariable* ID3DX11EffectGroup::GetAnnotationByIndex([In] unsigned int Index) + ID3DX11EffectGroup::GetAnnotationByIndex +
+ + +

Get an annotation by name.

+
+

The name of the annotation.

+

A reference to an . Note that if the annotation is not found the returned will be empty. The method should be called to determine whether the annotation was found.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476689 + ID3DX11EffectVariable* ID3DX11EffectGroup::GetAnnotationByName([In] const char* Name) + ID3DX11EffectGroup::GetAnnotationByName +
+ + +

Get a technique by index.

+
+

A zero-based index.

+

A reference to an .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476691 + ID3DX11EffectTechnique* ID3DX11EffectGroup::GetTechniqueByIndex([In] unsigned int Index) + ID3DX11EffectGroup::GetTechniqueByIndex +
+ + +

Get a technique by name.

+
+

The name of the technique.

+

A reference to an , or null if the technique is not found.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476692 + ID3DX11EffectTechnique* ID3DX11EffectGroup::GetTechniqueByName([In] const char* Name) + ID3DX11EffectGroup::GetTechniqueByName +
+ + +

Test an effect to see if it contains valid syntax.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476693 + IsValid + IsValid + BOOL ID3DX11EffectGroup::IsValid() +
+ + +

Gets a group description.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476690 + GetDesc + GetDesc + HRESULT ID3DX11EffectGroup::GetDesc([Out] D3DX11_GROUP_DESC* pDesc) +
+ + +

Accesses an interface variable.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476694 + ID3DX11EffectInterfaceVariable + ID3DX11EffectInterfaceVariable +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets a class instance.

+
+

Pointer to an interface.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476696 + HRESULT ID3DX11EffectInterfaceVariable::SetClassInstance([In] ID3DX11EffectClassInstanceVariable* pEffectClassInstance) + ID3DX11EffectInterfaceVariable::SetClassInstance +
+ + +

Get a class instance.

+
+

Pointer to an reference that will be set to the class instance.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476695 + HRESULT ID3DX11EffectInterfaceVariable::GetClassInstance([In] ID3DX11EffectClassInstanceVariable** ppEffectClassInstance) + ID3DX11EffectInterfaceVariable::GetClassInstance +
+ + +

Get or sets a class instance.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476695 + GetClassInstance / SetClassInstance + GetClassInstance + HRESULT ID3DX11EffectInterfaceVariable::GetClassInstance([In] ID3DX11EffectClassInstanceVariable** ppEffectClassInstance) +
+ + +

A shader-variable interface accesses a shader variable.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476752 + ID3DX11EffectShaderVariable + ID3DX11EffectShaderVariable +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a shader description.

+
+

A zero-based index.

+

A reference to a shader description (see ).

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476761 + HRESULT ID3DX11EffectShaderVariable::GetShaderDesc([In] unsigned int ShaderIndex,[Out] D3DX11_EFFECT_SHADER_DESC* pDesc) + ID3DX11EffectShaderVariable::GetShaderDesc +
+ + +

Get a vertex shader.

+
+

A zero-based index.

+

A reference to an reference that will be set to the vertex shader on return.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476762 + HRESULT ID3DX11EffectShaderVariable::GetVertexShader([In] unsigned int ShaderIndex,[Out] ID3D11VertexShader** ppVS) + ID3DX11EffectShaderVariable::GetVertexShader +
+ + +

Get a geometry shader.

+
+

A zero-based index.

+

A reference to an reference that will be set to the geometry shader on return.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476755 + HRESULT ID3DX11EffectShaderVariable::GetGeometryShader([In] unsigned int ShaderIndex,[Out] ID3D11GeometryShader** ppGS) + ID3DX11EffectShaderVariable::GetGeometryShader +
+ + +

Get a pixel shader.

+
+

A zero-based index.

+

A reference to an reference that will be set to the pixel shader on return.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476760 + HRESULT ID3DX11EffectShaderVariable::GetPixelShader([In] unsigned int ShaderIndex,[Out] ID3D11PixelShader** ppPS) + ID3DX11EffectShaderVariable::GetPixelShader +
+ + +

Get a hull shader.

+
+

Index of the shader.

+

A reference to an reference that will be set to the hull shader on return.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476756 + HRESULT ID3DX11EffectShaderVariable::GetHullShader([In] unsigned int ShaderIndex,[In] ID3D11HullShader** ppPS) + ID3DX11EffectShaderVariable::GetHullShader +
+ + +

Get a domain shader.

+
+

Index of the domain shader.

+

Pointer to an reference that will be set to the domain shader on return.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476754 + HRESULT ID3DX11EffectShaderVariable::GetDomainShader([In] unsigned int ShaderIndex,[In] ID3D11DomainShader** ppPS) + ID3DX11EffectShaderVariable::GetDomainShader +
+ + +

Get a compute shader.

+
+

Index of the compute shader.

+

Pointer to an reference that will be set to the compute shader on return.

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476753 + HRESULT ID3DX11EffectShaderVariable::GetComputeShader([In] unsigned int ShaderIndex,[In] ID3D11ComputeShader** ppPS) + ID3DX11EffectShaderVariable::GetComputeShader +
+ + +

Get an input-signature description.

+
+

A zero-based shader index.

+

A zero-based shader-element index.

+

A reference to a parameter description (see ).

+ +

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476757 + HRESULT ID3DX11EffectShaderVariable::GetInputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) + ID3DX11EffectShaderVariable::GetInputSignatureElementDesc +
+ + +

Get an output-signature description.

+
+

A zero-based shader index.

+

A zero-based element index.

+

A reference to a parameter description (see ).

+ +

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476758 + HRESULT ID3DX11EffectShaderVariable::GetOutputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) + ID3DX11EffectShaderVariable::GetOutputSignatureElementDesc +
+ + +

Get a patch constant signature description.

+
+

A zero-based shader index.

+

A zero-based element index.

+

A reference to a parameter description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476759 + HRESULT ID3DX11EffectShaderVariable::GetPatchConstantSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[In] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) + ID3DX11EffectShaderVariable::GetPatchConstantSignatureElementDesc +
+ + +

An interface is a collection of passes.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ +

An effect contains one or more techniques; each technique contains one or more passes; each pass contains state assignments.

To get an effect-technique interface, call a method such as .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476766 + ID3DX11EffectTechnique + ID3DX11EffectTechnique +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Test a technique to see if it contains valid syntax.

+
+

TRUE if the code syntax is valid; otherwise .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476773 + BOOL ID3DX11EffectTechnique::IsValid() + ID3DX11EffectTechnique::IsValid +
+ + +

Get a technique description.

+
+

A reference to a technique description (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476770 + HRESULT ID3DX11EffectTechnique::GetDesc([Out] D3DX11_TECHNIQUE_DESC* pDesc) + ID3DX11EffectTechnique::GetDesc +
+ + +

Get an annotation by index.

+
+

The zero-based index of the interface reference.

+

A reference to an .

+ +

Use an annotation to attach a piece of metadata to a technique.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476768 + ID3DX11EffectVariable* ID3DX11EffectTechnique::GetAnnotationByIndex([In] unsigned int Index) + ID3DX11EffectTechnique::GetAnnotationByIndex +
+ + +

Get an annotation by name.

+
+

Name of the annotation.

+

A reference to an .

+ +

Use an annotation to attach a piece of metadata to a technique.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476769 + ID3DX11EffectVariable* ID3DX11EffectTechnique::GetAnnotationByName([In] const char* Name) + ID3DX11EffectTechnique::GetAnnotationByName +
+ + +

Get a pass by index.

+
+

A zero-based index.

+

A reference to a .

+ +

A technique contains one or more passes; get a pass using a name or an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476771 + ID3DX11EffectPass* ID3DX11EffectTechnique::GetPassByIndex([In] unsigned int Index) + ID3DX11EffectTechnique::GetPassByIndex +
+ + +

Get a pass by name.

+
+

The name of the pass.

+

A reference to an .

+ +

A technique contains one or more passes; get a pass using a name or an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476772 + ID3DX11EffectPass* ID3DX11EffectTechnique::GetPassByName([In] const char* Name) + ID3DX11EffectTechnique::GetPassByName +
+ + +

Compute a state-block mask to allow/prevent state changes.

+
+

A reference to a state-block mask (see ).

+

Returns one of the following Direct3D 11 Return Codes.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476767 + HRESULT ID3DX11EffectTechnique::ComputeStateBlockMask([In] D3DX11_STATE_BLOCK_MASK* pStateBlockMask) + ID3DX11EffectTechnique::ComputeStateBlockMask +
+ + +

Test a technique to see if it contains valid syntax.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476773 + IsValid + IsValid + BOOL ID3DX11EffectTechnique::IsValid() +
+ + +

Get a technique description.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476770 + GetDesc + GetDesc + HRESULT ID3DX11EffectTechnique::GetDesc([Out] D3DX11_TECHNIQUE_DESC* pDesc) +
+ + +

The interface accesses effect variables by type.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
+
+ +

To get information about an effect type from an effect variable, call .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476774 + ID3DX11EffectType + ID3DX11EffectType +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Tests that the effect type is valid.

+
+

TRUE if it is valid; otherwise .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476782 + BOOL ID3DX11EffectType::IsValid() + ID3DX11EffectType::IsValid +
+ + +

Get an effect-type description.

+
+

A reference to an effect-type description. See .

+

Returns one of the following Direct3D 11 Return Codes.

+ +

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476775 + HRESULT ID3DX11EffectType::GetDesc([Out] D3DX11_EFFECT_TYPE_DESC* pDesc) + ID3DX11EffectType::GetDesc +
+ + +

Get a member type by index.

+
+

A zero-based index.

+

A reference to an .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476779 + ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeByIndex([In] unsigned int Index) + ID3DX11EffectType::GetMemberTypeByIndex +
+ + +

Get an member type by name.

+
+

A member's name.

+

A reference to an .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476780 + ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeByName([In] const char* Name) + ID3DX11EffectType::GetMemberTypeByName +
+ + +

Get a member type by semantic.

+
+

A semantic.

+

A reference to an .

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476781 + ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeBySemantic([In] const char* Semantic) + ID3DX11EffectType::GetMemberTypeBySemantic +
+ + +

Get the name of a member.

+
+

A zero-based index.

+

The name of the member.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476776 + const char* ID3DX11EffectType::GetMemberName([In] unsigned int Index) + ID3DX11EffectType::GetMemberName +
+ + +

Get the semantic attached to a member.

+
+

A zero-based index.

+

A string that contains the semantic.

+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476778 + const char* ID3DX11EffectType::GetMemberSemantic([In] unsigned int Index) + ID3DX11EffectType::GetMemberSemantic +
+ + +

Tests that the effect type is valid.

+
+ +

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476782 + IsValid + IsValid + BOOL ID3DX11EffectType::IsValid() +
+ + +

Get an effect-type description.

+
+ +

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

+
+ + ff476775 + GetDesc + GetDesc + HRESULT ID3DX11EffectType::GetDesc([Out] D3DX11_EFFECT_TYPE_DESC* pDesc) +
+ + +

Describes an effect.

+
+ +

is used with .

+
+ + ff476303 + D3DX11_EFFECT_DESC + D3DX11_EFFECT_DESC +
+ + +

Number of constant buffers in this effect.

+
+ + ff476303 + unsigned int ConstantBuffers + unsigned int ConstantBuffers +
+ + +

Number of global variables in this effect.

+
+ + ff476303 + unsigned int GlobalVariables + unsigned int GlobalVariables +
+ + +

Number of global interfaces in this effect.

+
+ + ff476303 + unsigned int InterfaceVariables + unsigned int InterfaceVariables +
+ + +

Number of techniques in this effect.

+
+ + ff476303 + unsigned int Techniques + unsigned int Techniques +
+ + +

Number of groups in this effect.

+
+ + ff476303 + unsigned int Groups + unsigned int Groups +
+ + +

Describes an effect group.

+
+ +

is used with .

+
+ + ff476314 + D3DX11_GROUP_DESC + D3DX11_GROUP_DESC +
+ + +

Name of this group (only null if global).

+
+ + ff476314 + const char* Name + char Name +
+ + +

Number of techniques contained in group.

+
+ + ff476314 + unsigned int Techniques + unsigned int Techniques +
+ + +

Number of annotations on this group.

+
+ + ff476314 + unsigned int Annotations + unsigned int Annotations +
+ + +

Describes an effect technique.

+
+ +

is used with .

+
+ + ff476326 + D3DX11_TECHNIQUE_DESC + D3DX11_TECHNIQUE_DESC +
+ + +

Name of this technique (null if not anonymous).

+
+ + ff476326 + const char* Name + char Name +
+ + +

Number of passes contained in the technique.

+
+ + ff476326 + unsigned int Passes + unsigned int Passes +
+ + +

Number of annotations on this technique.

+
+ + ff476326 + unsigned int Annotations + unsigned int Annotations +
+ + +

Describes an effect-variable type.

+
+ +

is used with

+
+ + ff476305 + D3DX11_EFFECT_TYPE_DESC + D3DX11_EFFECT_TYPE_DESC +
+ + +

Name of the type, for example "float4" or "MyStruct".

+
+ + ff476305 + const char* TypeName + char TypeName +
+ + +

The variable class (see D3D10_SHADER_VARIABLE_CLASS).

+
+ + ff476305 + D3D_SHADER_VARIABLE_CLASS Class + D3D_SHADER_VARIABLE_CLASS Class +
+ + +

The variable type (see D3D10_SHADER_VARIABLE_TYPE).

+
+ + ff476305 + D3D_SHADER_VARIABLE_TYPE Type + D3D_SHADER_VARIABLE_TYPE Type +
+ + +

Number of elements in this type (0 if not an array).

+
+ + ff476305 + unsigned int Elements + unsigned int Elements +
+ + +

Number of members (0 if not a structure).

+
+ + ff476305 + unsigned int Members + unsigned int Members +
+ + +

Number of rows in this type (0 if not a numeric primitive).

+
+ + ff476305 + unsigned int Rows + unsigned int Rows +
+ + +

Number of columns in this type (0 if not a numeric primitive).

+
+ + ff476305 + unsigned int Columns + unsigned int Columns +
+ + +

Number of bytes required to represent this data type, when tightly packed.

+
+ + ff476305 + unsigned int PackedSize + unsigned int PackedSize +
+ + +

Number of bytes occupied by this data type, when laid out in a constant buffer.

+
+ + ff476305 + unsigned int UnpackedSize + unsigned int UnpackedSize +
+ + +

Number of bytes to seek between elements, when laid out in a constant buffer.

+
+ + ff476305 + unsigned int Stride + unsigned int Stride +
+ + +

Describes an effect variable.

+
+ +

is used with .

+
+ + ff476306 + D3DX11_EFFECT_VARIABLE_DESC + D3DX11_EFFECT_VARIABLE_DESC +
+ + +

Name of this variable, annotation, or structure member.

+
+ + ff476306 + const char* Name + char Name +
+ + +

Semantic string of this variable or structure member (null for annotations or if not present).

+
+ + ff476306 + const char* Semantic + char Semantic +
+ + +

Optional flags for effect variables.

+
+ + ff476306 + D3DX11_EFFECT_VARIABLE_FLAGS Flags + D3DX11_EFFECT_VARIABLE_FLAGS Flags +
+ + +

Number of annotations on this variable (always 0 for annotations).

+
+ + ff476306 + unsigned int Annotations + unsigned int Annotations +
+ + +

Offset into containing cbuffer or tbuffer (always 0 for annotations or variables not in constant buffers).

+
+ + ff476306 + unsigned int BufferOffset + unsigned int BufferOffset +
+ + +

Used if the variable has been explicitly bound using the register keyword. Check Flags for .

+
+ + ff476306 + unsigned int ExplicitBindPoint + unsigned int ExplicitBindPoint +
+ + +

Indicates the device state.

+
+ +

A state-block mask indicates the device states that a pass or a technique changes.

+
+ + ff476325 + D3DX11_STATE_BLOCK_MASK + D3DX11_STATE_BLOCK_MASK +
+ + +

Boolean value indicating whether to save the vertex shader state.

+
+ + ff476325 + unsigned char VS + unsigned char VS +
+ + +

Boolean value indicating whether to save the hull shader state.

+
+ + ff476325 + unsigned char HS + unsigned char HS +
+ + +

Boolean value indicating whether to save the domain shader state.

+
+ + ff476325 + unsigned char DS + unsigned char DS +
+ + +

Boolean value indicating whether to save the geometry shader state.

+
+ + ff476325 + unsigned char GS + unsigned char GS +
+ + +

Boolean value indicating whether to save the pixel shader state.

+
+ + ff476325 + unsigned char PS + unsigned char PS +
+ + +

Boolean value indicating whether to save the pixel shader unordered access views.

+
+ + ff476325 + unsigned char PSUnorderedAccessViews + unsigned char PSUnorderedAccessViews +
+ + +

Boolean value indicating whether to save the compute shader state.

+
+ + ff476325 + unsigned char CS + unsigned char CS +
+ + +

Boolean value indicating whether to save the compute shader unordered access views.

+
+ + ff476325 + unsigned char CSUnorderedAccessViews + unsigned char CSUnorderedAccessViews +
+ + +

Boolean value indicating whether to save the index buffer state.

+
+ + ff476325 + unsigned char IAIndexBuffer + unsigned char IAIndexBuffer +
+ + +

Boolean value indicating whether to save the input layout state.

+
+ + ff476325 + unsigned char IAInputLayout + unsigned char IAInputLayout +
+ + +

Boolean value indicating whether to save the primitive topology state.

+
+ + ff476325 + unsigned char IAPrimitiveTopology + unsigned char IAPrimitiveTopology +
+ + +

Boolean value indicating whether to save the render targets states.

+
+ + ff476325 + unsigned char OMRenderTargets + unsigned char OMRenderTargets +
+ + +

Boolean value indicating whether to save the depth-stencil state.

+
+ + ff476325 + unsigned char OMDepthStencilState + unsigned char OMDepthStencilState +
+ + +

Boolean value indicating whether to save the blend state.

+
+ + ff476325 + unsigned char OMBlendState + unsigned char OMBlendState +
+ + +

Boolean value indicating whether to save the viewports states.

+
+ + ff476325 + unsigned char RSViewports + unsigned char RSViewports +
+ + +

Boolean value indicating whether to save the scissor rectangles states.

+
+ + ff476325 + unsigned char RSScissorRects + unsigned char RSScissorRects +
+ + +

Boolean value indicating whether to save the rasterizer state.

+
+ + ff476325 + unsigned char RSRasterizerState + unsigned char RSRasterizerState +
+ + +

Boolean value indicating whether to save the stream-out buffers states.

+
+ + ff476325 + unsigned char SOBuffers + unsigned char SOBuffers +
+ + +

Boolean value indicating whether to save the predication state.

+
+ + ff476325 + unsigned char Predication + unsigned char Predication +
+ + +

Array of vertex-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + ff476325 + unsigned char VSSamplers[2] + unsigned char VSSamplers +
+ + +

Array of vertex-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + ff476325 + unsigned char VSShaderResources[16] + unsigned char VSShaderResources +
+ + +

Array of vertex-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

+
+ + ff476325 + unsigned char VSConstantBuffers[2] + unsigned char VSConstantBuffers +
+ + +

Array of vertex-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

+
+ + ff476325 + unsigned char VSInterfaces[32] + unsigned char VSInterfaces +
+ + +

Array of hull-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + ff476325 + unsigned char HSSamplers[2] + unsigned char HSSamplers +
+ + +

Array of hull-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + ff476325 + unsigned char HSShaderResources[16] + unsigned char HSShaderResources +
+ + +

Array of hull-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

+
+ + ff476325 + unsigned char HSConstantBuffers[2] + unsigned char HSConstantBuffers +
+ + +

Array of hull-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

+
+ + ff476325 + unsigned char HSInterfaces[32] + unsigned char HSInterfaces +
+ + +

Array of domain-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + ff476325 + unsigned char DSSamplers[2] + unsigned char DSSamplers +
+ + +

Array of domain-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + ff476325 + unsigned char DSShaderResources[16] + unsigned char DSShaderResources +
+ + +

Array of domain-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.

+
+ + ff476325 + unsigned char DSConstantBuffers[2] + unsigned char DSConstantBuffers +
+ + +

Array of domain-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

+
+ + ff476325 + unsigned char DSInterfaces[32] + unsigned char DSInterfaces +
+ + +

Array of geometry-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + ff476325 + unsigned char GSSamplers[2] + unsigned char GSSamplers +
+ + +

Array of geometry-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + ff476325 + unsigned char GSShaderResources[16] + unsigned char GSShaderResources +
+ + +

Array of geometry-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.

+
+ + ff476325 + unsigned char GSConstantBuffers[2] + unsigned char GSConstantBuffers +
+ + +

Array of geometry-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

+
+ + ff476325 + unsigned char GSInterfaces[32] + unsigned char GSInterfaces +
+ + +

Array of pixel-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + ff476325 + unsigned char PSSamplers[2] + unsigned char PSSamplers +
+ + +

Array of pixel-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + ff476325 + unsigned char PSShaderResources[16] + unsigned char PSShaderResources +
+ + +

Array of pixel-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

+
+ + ff476325 + unsigned char PSConstantBuffers[2] + unsigned char PSConstantBuffers +
+ + +

Array of pixel-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

+
+ + ff476325 + unsigned char PSInterfaces[32] + unsigned char PSInterfaces +
+ + +

Array of compute-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

+
+ + ff476325 + unsigned char CSSamplers[2] + unsigned char CSSamplers +
+ + +

Array of compute-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + ff476325 + unsigned char CSShaderResources[16] + unsigned char CSShaderResources +
+ + +

Array of compute-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

+
+ + ff476325 + unsigned char CSConstantBuffers[2] + unsigned char CSConstantBuffers +
+ + +

Array of compute-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

+
+ + ff476325 + unsigned char CSInterfaces[32] + unsigned char CSInterfaces +
+ + +

Array of vertex buffers. The array is a multi-byte bitmask where each bit represents one resource slot.

+
+ + ff476325 + unsigned char IAVertexBuffers[4] + unsigned char IAVertexBuffers +
+
+
diff --git a/distribution/SharpDX.Direct3D11.dll b/distribution/SharpDX.Direct3D11.dll new file mode 100644 index 0000000000000000000000000000000000000000..a07984f64c8da2cf60382b9b7c6624cf24edf426 GIT binary patch literal 171520 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

_W5FQt%14b%1>wE}^faG=3T72TFL_K1o+ z&*BS3t+mRH`h$A2&8#k^KJR;4`FovKzRJg7h&mbz)I`uDUWu;X#&S0jsA(;Q6$mYR zKo^z-Bo1^63#{Efhz4{YosaSgqrAeVyaMP^!|`Pjqc{+5Uz~%m91|8qSWbLdd+BX4 zWJqtTcW|{8V}UJEe=N8K6a7#$T$2+GH?*nGwQ1CoPgGlNQ|Xn9rDMm+VgGn>sJcZU zW^#civ(a5j9F-0e`HagMIPn}4ax@h zEj`&S&nhlkUVmJccZ%qiNAAy)<(>XDEerG826>dJt1||8Cv_OK%ovcVm7dc`UB=2f z7BKZq_mTznu8?!Fts?7uO>Xg_+OZpxdLez;Fvu}|tw$U049nG~gWhKf$ytwQ&tJB= z+-!KKL`OQ=kchG$Dezz~i#0 zzE&I62U^jP_6+Ms4j+!0D?KS3<>&{yk$xgHE>E->Pb*xhLa(qiMzuU?K~3Q zy6kR8%lf!AN}4P|ELE19X$NUrtx=3)7O!|zlXmV{Q91?wsk<} z_T1m{&b>S}D&dJNH7aupzaO?^cpOjfPKrOT=F@7)$kCyIZ0ht+#OzAQZvP=0q@z$l^6&oIiY1O$6Yb@XVJW-bY5{ zZkq%7Ia$}PoK0cBKyO51ZmhS`K19usX)pKeB;U3er(^Dn-WJYl(J4e`>%)~uYO@X< zOe(UT2l+W3j$z!09WNBF4ZUb>`fs#;kz!P z7h`)&=PRgYLiRY&X(i*#?al0TM8)x*@*NLu%!~W_L&1<+a_34Z>D>x!I7K>^Wrp$E z5o+KHE_9?QpX2_BlP76Ms8>qz?|1T#Vc}oK08aP>hGXm4##tl6zsd-o$ndk>@PB&3 z+nDnAXLJvc9_VXKWk^yOwfJT~R zx2=$`_wH+{fut9x#V8ih^nWouTGNvr>HlJStQns4NXs7I$Hvx@b^&aAyx103<5WqJ zRg2MAdP51rN{?Y^_Y#Wp7bjGyDjXZdYca;6g-hLYD_<=}BKS$&^Hx5?D&>1;1P2~4 zIvJbSVQh-bW_r?|PGEaD*J%%l<`@X1ej`19X(9?rbkleBPXsTT!j#{DaTWx7`j z#RIp55{1Gn`9M#nP7=AM*ONVsa4=MQi`%yU0qH><0lYHiEWq<*vCA(t4zw@E-mj=2 z_iXa3b7FqIq|Qgu9ewd?X$Iy{N#Am>#hy3Df_#1V1LJkpzBDG8L|=M~)0d{b%2aWP zrz1QC*{OOmozKkFoH2cfhy7Gxhb=;CE^Ohnzh7cZG%941Q$4z!0Wnw+WKI<^!g8wUuQ?RAzx(=gLh`nco}e`t<}<^b%Xuq!PaI89toIYj z?`)5LQb&G9`Qc^TeJj6d`>q34Bw2J=?7d4Fw`(_o%V*A|eC7>NnFnG9C2K+S#k|ah z#m;%?m4a2gx6oQTD5cIYmjf^hIUYW9vBHQXFtAIfM!xo%k8TK*cL&htgB_y~?{Wl` ztV1Rv9bYYa=3rS_9VWPV83DUNn1$gu5%a_drV=7wmbNHIzr33#?_WVTEQcwJLFh{Y zYJY^Cg)qE6gEdGCyp@DEXUidk*Q*;U+QIhw5~piDeO+?+W)?&!+(4F_#j^b=w=GT+ zjy^Vy`+V?E;1x5DS$gd_RqLWJcdA5Z1m;GAMOHl~wGmkNP1J^Zysha^VBQ*;a29fj z3LZHo#QcP~7HV1sWMNX75tVgX))PM(7ae`WxB>1-V3rCy#*xLYP&*Qpvv*P3S9=)B zgO}4?eYO1qd_PjsluIMQ+CJcu0uzH#NUoEw?a*zS@X5{|UxPE(6aomqhMXKkDhx@g z*Fu2pn>qUYh!|aP3d794}W#;YwiI6q#{2)@5b9*T5?UTKy%%5Pt=3ePA{dslzly?mGmT z1!&2A7VP_3sFTnQ)$%yV!?{AGT(3T{rX)1?Bt%J|lItc?V+X6u@vxYcMq`% ziw1qB-qNgRh;rnCB|SX)R)0fIJyu9tfNeyc+>XjadkErHBq?4zq(b2#bt9qWUoQ#! z>(J*(K%;D^cR8vpWW%D6Ex9$qowpXGYQrxTQREH;%t(JvZkJWtTnQIqXy6XIa*8H;0F$Kd4e*us{ZXK2m#9Q23& z+La(W*kwrxEbt{zeIt0$K5;CvTGkzrgekt;LQBdE)?5eI8lAx>wWp=w-u3=Ak~^)mvfFoM@$T83;lKAh2Vh9!={0 zjYgFiNa5mdCrXiN?&sr3+RKP9VgwU|$s+z~jE8s`XM;!#A&dB@F&^q=94rzKBa8T_ zF`^--bbJg%;s~;ce;VUZFXQ{jUt$FjUiRvo2COr2R{s%+K&$HhweuE(V_j& zwQD~*v>%2E?MH|9L)WhT=+J)X3bh{{+7HcF`_ZBO&~<1(I%Ytcu#X@pw(8XMGlX{;yr||BMbYLqaoi9GKz_U^xM&Zv%#Nj2_yYtYQx`q z-if^{vrDSKMzPJLpH+&ZllMRp6MESQlRm2hbdocFDUpAebc-}J+Oq{qkw>R;;haXNnIXfSMe4vAI_VlwQZMF!b=C;p>3hznC1&HhH zKJS%Hy{91;>I}@)nRBw}-3*^C9D60#yCrVQYOmsXcf(D*hV|FG-L32IUdi@ubsO1o zXLk;4UXP3wg!Ql#hC@alj7perM|@ceft4&8#2LT74C!59M?*$bgNrDRO*?tkDM&t6 z<-?q4s8nM7HI;0}_Gj8Yac7TE%wbp;6X}?fyj8dnbC&{KLv zN6`a45ic^f+nfI5AWuA}|JbWG(9;ufo=#Bq_zprHnGdoFwH=jvc_dtnC_FHde)uTJ zkiRBm__LO`Of?;4AE&J#Bk3g7az$ez@X(^SHK;~)b`3) zj{vDM*j@>FPDR3@x|Nt^$mJqgcx3dE=XfHskIV?K%?y|Icx&i(2~yHocMLGy!@3Be zsq;AD$G&g||G6H1@A;k1dnx$!ev>H`&%xsiPs~ff$8iI<47|Ax)^*mocHbb9^@Wyw z8REztJsgci@EnR~uG}5OvnFaB-m?cxuFG)IjR$m4LqDC1^Ydk(WCoK(0#GiJ*By9vL`&JYW|R%m4+G~%($EI zn*(Wk=e@lvkQbbHBo@M7%17eP(?#X-EHONndUzHXp1tYIy!Wx3zD)X)1EHV% znVOrrF^NVHF&8SFR^z>AbtUwXyuD*0W*@(unBHquOBwTG6VKuB-t57Iz>KRudai$z zr+G=XGB<0NnudjQnH;qh`Yr>L`?`>)_C)=;xT_dS-6}Q3j!UI1cHB|Kn;9{AZN6) z+~6hrieo+EqzLrK6Y$^np{aLX$cL(@mZ$Og z$)@`*KR*<64Z`J&(4TmQEkgE%a}n=a=l>z5?9ly-PdUMFxx#_z$Wc2^sK@jmE)HDwt+lb(#@DqdhSyA zOfqUYo6WdwgPdY)nV}ZVViAY8KcsDBmkkCxHjGj%T0gXPZ(NPTZw4Cbq{`zjKD@ z!x_FW)zp9LwHlwC;p=_+fG#a(ULj>`+FDIWe~dA$Xz$VL=z4Q&N;hoKs_PLKXT9-U zf6ZYSP;&7=SZ7vyjZ2jdtXAQjPnefVc)@orR*w^ z?vI>d-zm(JKlE%YXXursoZ-uI4kj1@y#IfkVJGf|{yf8$IZ^_4E z^ynyFI!Kk3Oj|Hd3RHK_@$}AU`pP|SQNBe9x!Etc{Mt7DMY8E~)>`?OH4D9XYo_j?uQs5;Mj zAaeAV<0s_V$FVS-2RTkW3A?$HDJ!p`Ec(k>njYVc2aPBw?fzKid*rg?EOXG$%{|sA8SE1(c@5jaH>ZUK_>Z`eqVDBZ^UyEQ!l<^3sS?XrcSmt1! zqTks%6ON|#R19x}Efsg|>%B00noex5*1q0rv9okM(eX~`_#2S!Y#`M$n70WX%b3Yw z>Yc%g@t&EJ7*uW)ZnoS3 zuF-5k*`s8kItab3KkQkoW+qbJAh6E4Na8F&*(E>DId6#HO!Ca9cb9fXPul3TdZH)W zjZdpFhxU|3kl#wX4MsBah}4@SsV)6U9>IFkq`_o;ktLG$e zk34_8tIuB@Ojk!_IN!5sY;Qo$?Yw&fcOxB?OX79-i#=s;V7<|AZ`S?Qp2{PuGl)<( zIbBlP&UTH5b38e-^L1>%Cv(4nkeiwh>jXU8U?+GYi5i)!&AU_Ubp5`)AC_FV3fFE=o-n-KKIF#I1h!Jp^lm$ofBd+M>gp7(FW4|1eH z!8F42btX^D$Z?j1jvy&pk&!K2gh+TRyIu-X=5I+l;3w@~%2~oQ>&B-N4|6%3MSm$y z;r+sumH4OQ_YdPIWnTk1K`DEE{AR{(?>lk#BUGPq!UiRhw9LIL5pTX5&qVXS{zvIr+Q)eb2-8KG2VgFX)jJMO65pbcu-eP#05Ir4Mo7P#8_mi1 z(5Ca!n0x?V&bZ%#eh)X)k6JeJ0z9?Eb+qDOG*TRDT2s9D4o$KAhqBN#7TSXENhSW{ z=*ySdLr@rFNpT<=&R7Is*yKm*8sq}ik2BI}uKw)0`HpB#os&KHjd!Ula?br*@G!@h8wJ?Eq)yRL^BsF(wWJdcp2Xo#f*CI(>2NN zag)VG8c7xU=tTV)#%Y+S^k20|^AVHRixFM=@CbC4d90iFysUYL2Kd;u6jQ>&5Th%U z#1A9BtBqx}Y49zHpJ`{Glhn_(v!CA!M_X~uGqX1x;<4a73!)$UygZz{`zWbh^wLN%0;9*2G z*rLJW4=Yiu26y2^HRdRSS$uwjPQtu{;^`!$Z^9g3z5y)b1Fp>BbQilA{6Y-6ad`s@ zXL(q7nxMQ%kt9#6@|7NM!aHmh*1o<>NABgsVrjhNUN zSI5q%z1A-M9-NHJ{w;|Xj#~Vtkojn~KV$mfR^rq*go1Kcg>}K$pngI%?KurPuZ9g|4u$^8#^6`m z7xRMb4Lh5C(ZI4^@=COKw8|Bsy*XKNmJ~=^fBy!1_UI!`@yl)epG3h*)2+w0Fp0|W&d^*nt;rSuO zvt4+`rSp`Az;i6Xr1dsskqi#G0i*Vskdmv^4e@aT4i6o12ao@Mu07Ulnwcb?Dm=qKg#GitZ5 zcO8c4eU^;!YpQQJ*tB68w@0FktC4xnE7JS)+bV0Ijhs2izM8bPOxX>N*w7(a4S%FX z?qA^rK)Hn_KXvp6BUSf#Xd7Akrom13P2O+N{crmw@7L>o$-XIz+(!Bw@0ZY;>YKdZ zGjnaWmwnSQ|E;<${o_9NO`|-zHPSapEBT-GO~-lk`wf zCuhX{8Dn(g?O-4KkW)OmHPVMjZT_G2A*Xuu`Qnt7gMp0(zAfqBj|&&Bc-S(l3gvSj}B3Udvwvb@c~85aa#QerWmNC6RYK3F5uTQ$_sshl z1oB*6pTRfa^{x+pjMsaF>)~ykO^39jS;I`5>UZlJ=#lo5RC~kk{T92IKfrV8XOV5$ zC%ZzQzttAWJ{j*UU=PgLIPJsfT^%Fm;<&B0(7OXB`$fH>yOfuE*3BIn_i($y`$~S+ zgJ{H`n^s5_-dFBfF=P#&Uf&!=y)W0xB0jyoH6G9V5;tBgE)U;T3P zDD|bmK1GH1T`#jy!TRzObo72tpa~uKraZmh9N5e9^sYbLyk;*???gUZxinS}yl=Z@ zi}w?3<-M}ggsn2lvq5JjbuW8)dV4T$d4~Bt@lw=cob^P|#k;#60ln?%RC;eO_MB7c zGj~FzEC-^Vh`e-h>B79-9JZ@<3(62CvN}N)_l5QSCih)%Z`ZfRiSO?AN?+V~T<>D+ zr^fXz(6Yx3@O?3?pfm1dRe0~+KaXIH0(wkqgFI&8_g<&p8-DMNc$Yu({Y>xmcg)Xa zn+~?pbta{QQ{>*S>8^EDCco_0zX+c=f8-T+WqCk@ixFpGunub9#QCUAHTZ3f-KAHd z+s~=;{5CS)wm|nS1tt;XXS#)@2)~)!5nX*4^L!uoGhRX(b1z`6bW)g+nSx#7mF)iN zvhdXvLt0)qR2!pI$!nu>XYZw4;cFnbsWq0oyeexPr)})z9*z7KUdE5<+O-%*fAo&& z)oyyf{C*QEmYe>CC>E(dnfDmw15A=%_ug^Zw?(}z_Y~GZnScFH_N?Vy1q)v+n=o#~ z0jE(Fe*bJ3@+5z{6=c0d*Yuus7P*bA>Ab(NLt`|;=bbo^?(+%_J z*2tPpYV-eWO?RY6zn^KleO}Xz*moU1s*eZgyunrYR-d|V& ze`nm1xl|$i(Z63S(|R*;aDSlP+tTG_0okX{{N3o+O#0G)GEK`&xdBGR8YafMHQ zb9%ieZe!`$8yg6y;@9+@q4v8w5c&nYOz=M zSB>tEW!L?-Y`X829U)j06AtA(#cgPHB3j2SQ_~h7Q90Zt~i^tyz_U|{EV~)>)-dqixqalFZMyYP1*37 zeYRml)iul;@38Ns4I8mS7SnEMkX?Kap1;G6ZXgkntTff`WJl6lck!+P`?43|pQSIm zJzL#vs@=UV@;EzX)7R||ixz2jPd3u-@C`MzI~^+X!WOXQCXwTlxv-7M`U(=?hH0)9 z6~1!ty+J;IT}#L?lVV(@(M&Qg=mDP1;PJ(m$!TAn9oD}Rg13k`TbBvBq@eGKGlfE= zAlL4=zmDan+R{Y)%#_{8h$r8|iQx&|VtAJ+(Hc5N>|o+mDFcT4`1={qH`E0do&p!M(Of=w6REhPtHpSko+78?K%e(pgExYE< zI3IVQ>aa44%=Y^yM1oiLg6_Hck*6Q|__TQ_jNjxEQ(xH!;kbj0k7)FZ;ccpALgNS2 zZ&L{5Ge2&aB(h@&nmTmHWq{IoH*CZuhn+_rHiT=xn5a z@U+86_O0BXV7WIe1MM&S3i4hubx6nuz;zjPNG}8VD7ae&lDEaCemimtVTFz%Tfe60 z$=f?7Z(n%w=9zy#mMw2hjal!Cyv#8RZCb{xr;JXSbH$6Hn-eO!H#X<~r&}(+{Qd(r z9^L(i1<*&vluX;nm!hR!WZ!@A&O&8Lr_X=>C;JcHBa>fp{~?RqM)noF10{{o2%mSN zOTM45|8T^AYyB!Z+>i1<9i_;sjGtaJKV_A=!`JlhgberS*2w;Y)aL)${=;aGeq#4u zbnj*sY&Q-aQL2jb)JJnVoDc6}K>F5kXmVF$Z8KUCE|k`y1^ zk9+x=HQ*B;;cJEO&10LFd&lP^Z+{fIzWU|}PR0Rt!a}hA+F!&srvQ!#JxX2+r~))85HqJNl1%@ZBj}7NE(PO z;**jP+#)_H3029IMzz4)wlkF4iM+_!^JN$$^_a&s53bJRdjJbj-g!IoJM2`lEW*K9 zi<~Nad&5z$o%^~uPn2^G8Mr#%d6CqtOHWmiLXTF?a=Au?~F=1 zcx6MjiytrU7eP!q>?JL_x)%bcw{cMRcM52^4iqMQw&nRU&iulS)I*c+$q8uVonlp;fjFMy& zyvre}h_C#RMRf<-*suPo)l@#MNDW$pD8$d&a-x^&5Yl9oOpQd))Y{Q7imOhy7a57B_uKWcQ32DRSNkkNVb-o=aSXmJxusf~@qGxjRg zrb>?{^bQjn6$5HB?zXDpRq7>tMs~4iVaKa{wOBDnHZ7G#-W#sO5)**m zs-)-sQq%OF*j306dTVrnlAT&~osmee@=DbE3HaO(yb_2JIob6~Wr@70fH{(z4CXnK zr3}ARzA^q7_16It7-u80IA)VurXxr|@+tuB=vRj!wLig* zGd{xJM02s96$!@edXc|Gx?B91r(G{8FOmLwMX=ni7oC`JpU-e|6`nG;@$)x8sbgta zO>dRbQRFTufX38O#4o{?f!0w{F%)!^w3fge2y1TFONu6}g6B3u$lN^)>ZB1uUOZb>95$-ym&Bqcd% zV^TiMi$6(a16og%4|PPpO#RRwr*s?Y>NZEB)?N*h`Rq9ozjnEHiyn@@2&%nC`-?Eg zEduElJcJ~uEjxL0! zzqq?<_rc=srriU?-Cer}io1t)4-)r*+C5m@2Z?)5PvGv-TU`}AqkT*(rFmpIQf<%a z(9!N(56Ps?H0!CxN!pVy;PmrmWgbnl7@fKmbe&iwFa zlxm9&#Wi^Lz{YLcV`t8oa?Y7`!toV8+P)+Qeq)YR^KQ4~j7YUTe9TY`R_ZFye;x>W z@Y%J_xC(Fn*(j6a-n*kBrxnQWtnTuGJJDhk{y&TVu#P&?r_^8Z1h2XW|5y5zT8pRf ziTp13k8w%KJ~d8-&j~S!yRAgxj%_8QVSd)a&hqe@B&I^J>BV#8_w1vv+s#nE=G^c=nXI6Nqm<{Qbj0)%-C@@yZv4 z=XPLF-SeXGod3G`_t+{D{cw}tZn;$d$K&na}*6K^6uM%?`NS8oSZ;2kNKX77Ceu#|VL zfGPb#brDXW1E6gDFI4Y<%7@EG>QG-f+JueYhR?zF$@QRmgDO$^pvI#v_D0O+`^<})09En$^j$qh4Pf zE+KWjp%#2>Vd;A!WOvJ|?xSqFkMZRj*}93e79a zapQTM$|JR@jih&mYDMb6jv{4-I-k^jU4)veE+ch7ccCs)&ygwuXCA1{q_*}DT`t1c zDL|^~p5^LIHBWs*su!&LCg!V}dWKD^QcoFb zS|5q`qM;U(T4$)iOntqf{IL9+xC5bed4-%?4VBwh!nPZ#3#oSv^%$uS3{{Jgep7v7 zsJ}4mQ$t1jN!Z^EHI39)hPs2)*M{0a>N`Uf_Lq3O4fP+U;J37%bqos`s^0+NY;LGk zqz*7t7jo7Zs$!6E4mH$pQpXr-E~(Lmx|-B+hWZ1k;|(=wut=F~s22ANHPWv&8%b)6 zq3TIZGSs!CPBc{42PEEfLmf$KwxOnwnro>s68K?kG9uTCtKRzl&7TSyyNdoY8I$Ipt_UVQlrBTCe`lga&@rU=^sog z)KS8A`bUuJg|NY(Mv@u}Dj(EDQZck!;ao~;HD&JfUrnm-^W|9I?(|RUr?BK5tY{zhsys2Di=uMIu6b zP(hhzy)Nm^4ODuIFmT zvV94Z`R%){H%(+?_D2P45=4EqB8b#GM| z>`kh8n@~lDN|0)9sG~`>10}WRG*Gw$11cr6cd$S0(&{ada!BxCT0(1mq@lFsk1~|b z-!X>LRvKj}oxfuZrR_2nl+3}7MhXEn9+Z^PT&6cZIFQu4q$UOr^##-y>UqpbfA5Rg zLG=dEr~d3Kg*)XFRKxu<(W9I~oI$*pxSY6x_z3ZN;MjTZ`Y!~2M)U{7-HOcgo%d-o$(_HsU^8NG;zZ&M;^oA9i5rQ3BL-VYtP0{m z#1o0LiN7MgNZduVTMB<0VjtpI;!NU|#8t$N#9hSii5>QnxQ7uZ5tGCli1!dXRtnEB z;tb+a;_ry-h~E(NS_@|{;&9?g#O1`hh%W;zwX;n;W~palg8y#Q3|P{(6|igDw!mZB z?hib-Z4Gc)+b+Nd+V%jx(zX}yqqhBlzIKCSW9JR+C@G#!Jdb!i@gd?X#4m`kPQuxl zIFfiOah~??B3k{WM@{o!aBxrNx99j4W9N+lIzCf+ejgY+?>yqg#H)#auMz*@e!<)5 z^8j%S(22Xg=c$mkiTF10FT^i_4$n$!8h8S|1apX`#00Si@o?fe;&kGC;;)Ebcayje z(7lHECh<#Ru=g}Kt*YKvfwL2_JFz!$0C7yutH^mmXzaYI-q(S%JFye7H}QC&qxspr z$AfbQ@qA*Ecqwri@kZjEKquC^-YX&b4dP#j`F+HvC9yYg9Pt$5n4T-$6ff*^uj{_P zPb55c-YvvCiK~E4D!=Pv1;@^Nf;grpdJj{+V|vbl&d>G{Tnlvk-|h1Zboi9`9nkS_ z)AxD!CxDL6u)gcyGm1EgIF&eyxR7`g(BXfr?|SgRO&rs6z3acy8Vwze?~NYJ==Pt! zZ-6t1B%ydwq(9z`5OJb`!$@hsvD;%wr4;$_4e ziMJB(20D_D7;r3Q9_#uf!{gxd_yEB-h@TQi^%b9~#2@Gr8Yn)+#8$*=;$Y%&#EHb= ze&IZW?%R5bdpg~7h|7pK5br0xK-@yyMf^K4JV@e>fdohY&V%N`r#rDHu`h7|aR~7U zpu>OCpvB-n2k7`*I%pYXE^~dJ=yNT6enH7&dSlS9;Qt}#GgBTksp@WI16Xy_bBCaNGA$~!O3={qXh(m~{5El~f zCvG7AotSr|@K+Ou63-wmAl^xQf%qOVXSndUCmv3mOk6~~o4B6%Z(@rP!atCB67gc< z9mE%i9}vSwQFG!E#50MP6YnFwO#BNmdbIHOA|6k?n7D$tmiQ4dFp@eGhY_a|7ZdL# zzDE3v7&%7xtBE6tvx&D7*AhP@21g0!{=~zHXA+kXA0VzL{*@R%R`>@I&m>+=e1f=( z7#%Gf8seA4ipjz=ig*$64&v*?ABc%5!ZVI|G4Vm-pNRHZ655tH zkT{)qD{&L?Kg61;!g(Tb3Gp%F2gKsDCA2?rGVx~Ov&1in71M<0P~v3bb;M_gZxR1P zY<`Y#4kb<}{))Jk_#LsbR(Osfo=;pxyp#Ae@onPg#GL8EpCAq*P9)Y7ZzeuUe4Y3? zF?6oPYE2wOJcT%$cpdRk;s)X;#Lx_;MI1;xm3TGrcf_}eKM-5j34b@@;lxSAbBWgx zA0R$We2w@CF=wX4?L-_yTtIw~_!{w_#FAOUc_48NaVGIr;?uPK=fT8oNbANiIa&-iK~ep5c4h+&VIxx#1+I3 zhiJ^MxMx08#hWIpb8}Tb*@f_joLp+Xn0r3Xn%fv5umX--*pGl2}I&XA|!ut|R`9xSLo! zPdNJ#&n7M>t|q=q+(YazUpR*oPbDrVt|D$EenULqV&R-XTtxgG@t?%~7f9$x;&kG2 z;$y_Oh{1)z(~UThcm;7a@l#^_65%DVGD;>+BwkH?k@#0)=yKtyA&w%RPP~BlYvLb>e<4;Z7XIUj z*AQPLenH&t3JD!VJezn8@k!!NqP0YL+7ZVRmk^&PenV`1rSJ?R))Q9|UnYJ?j4TzN z8sbP|l6W_98*vY@W|?qKBrYUAM0|&sf0cv|B%VN=LtIIGnfN(zzpI6FC~-FNPU2Q# zV7Y{LAxo;JBWWImR%>I z?TKB9Zx@NrK)R14?xD|ky3ZuGEEb*%=w3wZO`jX+zLPkXKEJ1X1Myz^d_wp4#8>H4 za=l19fOuAkxChZaia51Ye9oYI7I86sE~WcM;zNwJitgu#!^ra{-5(ME#k9VmJA8x4 zY(YGLcp&j3#u`HRvBY>>I8Ud$o_HGu6fq_rXrA)ZCNocI87 z6Y-zK_)Ws!hj=`3G4c1rkBG5f3r~OIxx_n(Yl$Ba^KKTNuEcS~%ZQH=KOq+XMtBY( z&LZAU+)51GBB8yA(}<4{KO~mlDxrOeClN0vK1SR@4BaL?-HCO?HN?Q};(su47I7u< zb>i2=#0udVPD~OXByJ`CKs?|M;W?T(lXwg972>~%l`DnkNMb$l7UB!UPl&~L3Qu?9 zWa2f%XNjK@Tihi)hZAdwHxt(rzat)WxA4p)-c9_Nxc@!kKa@C~cn$Fd;^)NDdxfVn z@fhN{#AU=Mh&zeC`-HPM@m%6P#4W@<#K`@(xce>D_s^&rJMSQ3KjILevm0~Dfb$W0 z7I8N5#QW((9MkiBmvhnm^T9c$=X}@amirgMXC?7L;%efn#6J?hAcj^6XM5ry#L2`( z#QTY_5I-m8J+R14Wmw-U5H}eX97Xpe;#A@+;zHt0#2*G+;l`ctz*UHK3K4tVuK%#U z*HNb6D7vQ-e;9C`%d_l(Aoi1QC58ry`!2elCT=4BiTHP-dQf=A^u)%q+1>rO?`xbC zw0uyo1F;j(2|eV&n~?fY;s~JQf6{}u!hbT*@mb$NndCAdG`or!~p#}X$HPXju!=0Efd_-79gTtxR0 z;x#~r=fQ`bN9bze^ThSUZNyzbhjaCV>%f`wu;A7_!7)A8xuL`Qu7^)DEI5kpNyMqd zS;QX(NND$mFSHL*6Q8`f=pZ$dcr)?$#21L~5bTfi+qHZc z57Pat$ETrx!OOz$<(vs0pSt|zPay49x*wxk{DW!_&{9>e2o5Gr0BX*lDxuE|;uXY| z4E-a}r#^c{WPbk&PCZoURh)?^@eiuDuZpy8#3977#L2|j#3jUAhz}E=CvGKvLi~=H z|C&gvBz7krMjTH(n|Kj%Iq^>7YT|3eoy0GR{`DfQj95kNPaH`+6_}o*8`evSzekL3 zkP@uefHMN6-NQEE98I0OL3l1FKCnR~{EpbBuef!2JxL#Z+OBKDln2lgstTSXyv@*t zaX+QMj@#JTy_QzjA15#Bn+<~Y#xHRj^WVNR@ftz5jh6uX5xZ?%PWSSjK6TPYDZyHB z`c#tcC3N3J_X@Zzb>GGtdRpqGjlTiDzwr*ll~}kTfY2ag1(n1KDv1?T5-X?{zPimS%fk8JVjhj+)4a`XuTn!MZ`A59>l|lK6O|)N((ds4o zy!i&sg4Lgh&&V0H`Ul;<&Enr|v-ot}j1ykB2f*lwJHZbj-BEoX1y1Vw1aNBKXMwZ& zz5qON-OJ*$ZUgX#0h@sh+qG`{Ui7y5?>3A5Lt6w(iEW6Qe-PcrcznEZr_+BH@!38i z;X=AEBCe%R9Zn(fOQu^eDyc_^PZ8H{k-HzSlk-noq~H5$%b%dX+A99JM5ibG3jWFP zx4=<-cLOK&_4O7zgn_gA<^xY$S0p~`%78x%XbB7rYz-W_wFB_vt<}KBayoabXs+9i z*R3t-^|_mztBGF!#@t?8d3n74Ubogzm%{jUm^0v}zv$*|DWz}9IMR;To#^nS+DJp5 zkKdHq`yZn2J#>C`pQG*ESij-zZ5qbvzilFHyEk!lFQ+9mm7-78Z zT524rMdiQ3Z&+IDBu#}cvpxj%u%R|vKY;pz)LQkiW#fmuRcnR6wJOgJ;gcXGq~@#6 z_7nIBLl06S)3*F-AgSxa$J#|!K#kL3;c0d`-jJ9{YJs}it^u`1hpFG%$66ufZzCxz zQXksW@D9fjhKl+YSo!KkO(BJ6tpfG1OW9UTJxxl|d&w$NTXk6YRNos`vHFbE0#)aG z7gU$FlEU>E$2!_2>d&MWsomf#Q6t+i^|0SR6k!*TTA)gCBe_J)GgLQFrD}(v27-#K zUh--X-Ulf4KY=$e`jOI>!21}aM6;{xa&?jp3oi}aY&TOE80zN0w|Hx4o}qplSb;Ek zS5;)b6nMaHuGSdp&j@Rwb{Q%^_$_V}7j_WN>s9aIX1k?oX{d98U)!zJ5iXVIt5h>x zs;955`rf6+`Z}n~_SaH=9X!F8P}h=Lr2ZJ3>Z?(=nXrP;EMI4}%1{S|Zt!(iU%AwM zz5`V+c>xN#929!o*GtWGskOeo>QR^a$k$&@I>6!F?Za#2@-ijkMf`)+jV=}UAF6s( z>#$2g9sP%^(Js}?KTOSZsl)t7scT(or2iQ8sGedIq`jdQ85{HLmUF16c#hI-khN&-_<7y0Ojl6aj1)745+ z*Q@-T;{q3`%1%1<{G3^VdFmdQx*>3x`pTtN2Ch&?;Kflb#kQ8J(WIpI{5G&movp)A zub&QFr52Ksdi@7bYutFb!K>95F126q29+nTu&G7iPjfz0zfq$N^&e68mdR+wBYS(m7z`p zb%*+plvwHZAl{2{DcibB`MZe}N&W8N-Kr(2Me6>@Q^9-GWuz9U_abiv?^B=YFi2@0 zdRQINUE=8$_d7M3lt^h8dQ_dQDYW;gp~qBB4~O#!^n^V~Nnda=!k%`+Z0j-gvJQik zOGCd`yL4Fik-Ts5d&_?&wLm>bs^maN=HsEqRgFv8))T51DbZz3=t(tFhoSt|hn`ZC zNr}xigSyRx&B!kZKdtW3Vd47xQc#bYu!Z^Gs%O;GChRx)E9_^~%O>pi`5)qq#!V*d zx%?kM?J!|4BkVc#p$XfJu;CM+SUuIA1TRu-|$*B+Hj7Fev9{-CK>9~=nDHqHQ7)zqlblG zQu7RTar8(~OGqtHSAlb#T5G5~A?0QDg`plp*vl%>Q?y>7HY4m6HQG?`L&_`aHbZ?M zJt_RE`i9gZ6)!k5{F*uf-%dd7QC$nBh1aWvhB_Ky8`M@!p`P6v-l#rvDciyuSEM9= zzYV{k3i&4MB9!gp;mu0k2-fZ4X;3HWFt)KR>TFUH?;qiaC8Vxb z(+fY&`Bb%Ysc&-ru6npsB=VIS;!+in@6>2gS0i5Eh_Y6aTBM#TJS!5iF6+k>RB3Dh zE_gp`sGhMKBRSSLhN_Ld8i`m-`fJWBV(&$Atq)0EuXe`1j^tZsA1q-){Sb*-Um40* zRG3?6^}-+|VZNeLP;*Ev3Rf3xS262RL&*#&X88vS=c2I8kYd&lQhH8QWSvcFz8X~2 zCAZjGLrV8cW!8F9QYr`MmRld{u<%huLvov0pBd`JqM@L^GSs<6M}zv_P?r~t230;t z;crp+mLkj4OPYHaa~xgD&_40TEI$GHbsg+p}My~Uxt8tXoY^0RWd8Dr#0>{9rjSk{Jg%_T0`w9c{*=^wd-&lHmvlGyd$jPM`&tl=^yikTdNJV zxb!c1BdvD)Xu|^aK?u%d3{@N3o_~S$ zz2TJEZ@o3}C>>8`zjLjHhLYLud}}MI1?rOWA-M}I|Iu2r>&l0M>S3t6%8v#$*-+1v zf1kg=del%Km9MZDT3;B-YWA(V#Ht*rrJUbvO!N|K6{$t)&Sob@FSGt^sPmiEMi*Pd zkI|ZKXqJp#VV$ih_Ge413rI=5UKqX7x{A~Sb$+w!qD!qchT72V{^-@#z)>P)A>&Lw&bjr-B=;RffuM)wAFxYloq_x4J)iv-O2b9b9mW z6+Tw$c~+}o1-Dtf43%s(s$hjR+@&TKth7!u)bdu73+}S6HPmlgO)t2|TIo_37Tjlv zM5SH`eYfADf>kc{`F>XwJmgZZ?RQhbBi5sCyhR0%StX+--XiteR`(aIb~%6B>WPA< ztac_W+3Ko-XRU=UwWi-!NTpRZ(#<^67!gs8*U8-~8 z4r?K)mz1Qp)4G<_3$~>9CpY!B6)g)t@=(#jKfBZ&72g&7)wNG`ltYd^&`@IQJbSXCq)rsrpOIRicC`Mq zu*jZ1UdOwmA`&aL6B9Hg^`+ciWhkjHE$l86B}~tSTiK&ErP{O`9;>jY8){IyV`G)} z9G5yh*4n<&P@~(O6KiX)bg5afcJ{+Am5jBwpLVGmV*A@)xYS*-1MEC`e{^+>tqi%)Vy{ZVqNUB4fSrjKgD|4a|~74-dEJ$UgJ{nqC@QOUFv|Mp?0t1 zbqba32NfM{Pj{(fijK8!bg6|!!3s?BOo;UD3JrOhdKmP*Ob0Uitr6I}`Y-inIUEJ=WoPFSJkP1~??}4il?$c(fxS<2@ zfmEjAMh{$AJ z+=ByOOjxIFRB>Ae?uWEP#kCB4E8#(HkBWPH;5(4^tGJH`9!^-VwW+w{13!XvSjAa` zK2O-7btoxe&<|pRc2r6tb8k*6WV?y zZ5ouHxJ5guq!WWKPTZ-b`lXlC2hUF2t<6$W8l-2mRV*zL8H2A(d{*mFaZ?80nD~O$ zXRb`wI2d<5TAq@w8$8>)SF2ajen|VY%}V;q;O`P%(%O`C`dPER`!&Zr^0Gt>JL~bp z*R+*NsyyqZxIbz~SXw5&?%$SpP%AE%`7Jx^XyOOjE+xHu)^~{?YR8mh8zOrARU1?x zEp0k}gX7 z0haAbnwz$&$2VGDKzdmwtv1-_io|@jF zq-)aW_O$DLswuxEVm;Ei^wCP%n_kn?t*>BdnP^L2(bJ;`YRGb#_$YmS&p3TQOG~iV zvZZIDep1Cv$!P7_L-$-MEvIB0?AcS#2}z&y?4=he>GF(kdM4`uB`wR)d!42)RT9mH zee@kl+LW;yzslOGqy@)QdvW1-%CAO(E&hUT5jeA!%-}q59^KRM#s*ZwpD+^~%wWx}eXMy>j(IA?f~J zd3tV0dc4RPYg-F>Q$&O zRuZiert2$0(pA19eV3AGm2k0sG$b|qF43DB$S3ZBGLQF~rI*hSO0h|$`hF!|o~Pq++=edaII#WR*fXuB5ZGeh>?EY}4a!nWG5l7U-juRFzeo)Tqx?($cJY zNQ9T}vYtv> zuD7$aM4%@p-K?)#M3zg$TUlQu-Ky`oN=lb!{Frp7p3)?xWf`%_tMz)8mWgrM8Odw( z=8!ZJ(jFz1Wlv1LTR#$#E`VfQO$7Q!AZ`GG7XWAFF%St03;-XH3Vm2@NGKGs)+q&s?lrf*?snOHTvx%c1ngG$-~>8O4p6t}7O zmwM9ml>0L5Zf@%RcRg21j(3M|@BOttnx*R;Uk=|5sX)f@x&4PelO<}wmfqj!H7cDk z;+5XV^+qN281Xu!rAiurxNr3pN*al{Z}l}SEfJF-eW$l6$q&o#^^;0!K-~9w&Jrr; z5^)FOPUyu-`YGoGq`ajv?x!5j4dkeu5E2Y zW`*Kj+xF)n#l{I0_vN-vhm?il#P;upTw&DQBzot#s(EFl6@6$bozH4OMCi9#9bpN4; zLvam=``BpZxYc;dHfrdRP+aTNeu(|VPnkPKTv-Aw0?cZ56d@KDv9pqCz`vIM0fM&ne9rVyZI?**=m_?ecz&Cg=U|- zq(t}cGt6cs(f#{HX6hP>lQp`;%wUOXR5I*Rb5ba-xBW76Lr5wgcDZ>nBx$xX({VR> zp>&T8^P4Fw?bE1abInOg>eqMMunO~FNP2Eqz)ZV`(#g74n?*{Z`qi3EN}_T$nBrb( zxxVj#VU6Z4B~fj!GV|8TII7<@W(!NQM%S4KSfY}>KkRz5BNW%$zQi1TAElF)%gh3n z$TB|tMzf41S+eEk3MKXHo1A`&nRLI*uV3HP^xMoDB~htwH`geM>b}ZsQ4*E&E;IiD znQndG?DTuglS-me-)AmvmT^?uX462=J#6MHX&XxgN_vl_A|-vv(kvyN_8g@vQ_{reeh?3v0VU00sa{FfK39Pojpm>SseVgD@8|D~d(13S z(zz@xR#GWTo0Zha(qSb%#FA&d^wP#s9!tx_r_V1DPse9Stc%Gsa#1_FDy-e!rY^z#fW>-Jj@c_`gq|7NS=pey2oJoq*=_;67dr9 z+hT51afgs@o4H>}U$P_~mg%e(ipy0}O3TvpZRQFkx8;@e=ghQ?GTkRFAEv)x&Qj8M zEuW^hm@Aaz-1}wvUULsiOGMAT)6!ow+m)2Qw;+9=>Dwf|eEeK;#y+!NN%j|pWwe?H zl=KoysgJTHuX|d}43?-T&&znpoD_92_Gxt8zHbJUMAz+MbCr_l zy8Ww}^tiNK-}j#xADeATqU-ikv*-yKN7wBU^AJn&y8WBk!4j3soq5zeDdX@AGb!^+ zGx14EN6#?NfKm01>&G}|$=h9&YcJM(LEc_?l`=0D8lkfhm;o0~(HD>J_} zTV)*byDRfM^Ds-4-&#nCTPSzRZ++(XW?D$nY(JQ}EKzCVINW*rDg|H}NQc_buhHk);vCGvT8mS%aja_;asF-x~nSt6fPAkC6-DA|Qs zhE*SuH2kQ}VwT9uZCQ3}jf@j_w*Dc@VYMmgiPlY7PAhjC=OF&p`f8Tf+8`zPJe<|T z+7*&CTawkv68ZFICtHVAI`Y}uO585J^nWQe`!s8nl;9;d`%G&?NYZTmtSu~&mx}CE zYrl*`{pM%)x7t~v`ZYmH+QB~I8DnLzM73QF zDInvJ?*5#y*3yvlL{7eSI3zujGttU@I@m5R<(y{~vh=c`x0$9`OG9y*t z=M2Bx>QK^|JBx>xSxvixUNqZ0YdK3)miva6Tg@^KWqEXXg|&+%D$5o~$3y9M4ga0x zc_!#(@9=a?8B3JIPs8i1CK-nuTqEkORV+~sK1c^b>CSUDSSLc# zuSP7e5}ys`r`Z-+DJ+rC-;TJ-$_>T!wl`U;LXu{?)@lw}t{$=2+Qrg7Ue{e`wJWJ# z-}^=^wE}x62U@9a9C4%7sw8?|b+dI;Ni@>lY9&4=EosDDX{}Mx`o2$(xYH_pUdGY5 zyV^RaBpPY&wr0LSamySB_8%Lu)>^EjPg&Z?61~0nE#kH)DGSnlR!$40TOvk7y5HKR zBzn*B0c#IS%N)Mfj*WQ0>IlWfjeNj5s-!FhadDksGZwN=kj}1xOo| zl>OE#BR5%_mGtYk-h{M^B`VpwBOkR|l#~VOF{`{aSh9CVZnlbFB1x9)ajTpq`4;Kp z)`5_8M(*R*K_z7wXXHL%6}}wwaz^fx)_#^&J3e@8K<*an088ZaEJ(&H!5l{AK5gZN zr2O1HRt-y^*^IWL+!o8TpDbS%M%xv+d#%w*8rt@Qc+on{(rU*xh!JIBIfR ztrINCQon2^y(&wVWn7c{vbCJ0m&KyC4)Kb0m?bLNA97!@(q5DKQQTYB9+oKXz1+8~ zqb$*Td0*weV>P}mefBUiM!jP#R#FzEcdcVe8V%_^Yt{j>Brmz64p}Q$`pCBFouW~H zu{v0i<@~Efq#Dko@7o$IW;kjODjDu=oHq);(x2LiEZrX8BiB{K|{R3spS8E_<{ANo${5I zJrUN$8K5B|a~#7qvLqCa&b_2tjZK8@Bg6km+Li42u87>j8Y8L&!unudVNKAoYaPkP zCfp8c?L<%)eL)*j6QejBjMWf(DQhCnwG2PTY313Mn&-P{s1~|-4SGYgfu{HXw8Uqi zUHk(KmRx!xdxPywwzt^c&i0Ndd-A4>#~ePNA?~vKd?r%)d}QzQk-g9Nf3xpeyGTv2 zCsQAmy`4&~amjTqxgoA}QhlkW_+A&+^fqWTu^QCH2G9_@+2&2q5{JR)>u9hm>_6W{ zX^TLcsEG(u%ZF1@cn`7nuaY; zb-lOq*m5e$a?039pON;>UdrVq=HI3hSpF zy9W3u-%(5oYeMEunqWAr*Tn@Pdl?(lMB3c#({RQMbq(!LW1aLLwC@@lnU?$;f^6`A z!{Nc|#>3CskT;!cVQ^_p_J;4n!JA!qdy{K1D2~cT z(|As?a%PdSopX%tSJIxY9Zh@|Pi6ZSlvh(w6PwUklh#EunKjj*##bV~E7nExKo?C* z7tKeku_uzBKAr4$6IX*8Yw%q(j(y-1`qnObTMzOU51Qh1&=SKyyBGyJ z*qc*yO(k=g1)J`2Z#sqkzEkM;vVJg+4BsJ)|E}AUJP!jkF_y!X9KM#r4{>-0hub*( zA&0-?u)Pm`ls$^5i5J-Bdh|U_{GDyShsF^2w@C{PB9LoK1m*CBCLxl*0lTw>lW(I_<4TtJLdJt0|@J)9yG)X);ELEE!I^NdA_!Cs>pNk zT!iM-Ia1we%n9ZdS$EkJPUTsy7IIRlUbOC#49>h^4e4nNnH92(wCNnCu}E6d-GRn; z2R0$YtKmTx8$pBhrr4QE>&XM4UAzrC#JikJq`kbq_zHSc&6u>t(0Fx?Z_lFS_&@9Y zDRy!!&DwJ9{r}g7{L{=%tBYUaU#{n688&iS@?fwBQ+bf{sf?v>q8j1|7(5G~$I@DH zV}DwE>jP-*?Ex*(YrrqHk!=|CL#cuqJ`0>}68@a^KY+S$pG7_+EhF3c0AHJL z^R-4-q9w+|-Y$wjhbZN=(w_7-5t&w=qpP5gJV!QhH#C}f7}UkHoaz(Se9z&&Lnw9x zh}k(Jd>MzUL7aUM_u8OM{DCQ3es?GwT@osr!DSAP7~jGY*KQh(mIKqs&til%v6jPf zRq)U-((eW}v5&)2e+Xe+dG#i5)X$>vsAQd$~g*K#T|gVS<5&>UeCht43I%Z89XfLKj5vdz62;j+m&@hR5q zXTA?=LTY6Af1uH$G+iyj9yG4CF1pU4kv_?T&XyRld3KX|QLSZKL*+=8kvY59AGgV&HZnEw=+KqAvd$WnIwU+1TzgtV>XHs4Tpv=n z)(`ka2hgt85C5sVjG$+5>55_0paGms=X*hEC;_c}YF3-@5bv%ThhWp2Nf*dq@)uxAU3mdhVot<_OCD z2Ihkx?o&Wrw19?q=V$eluO_}?o5=7vTS%{VX%LoeXo~3wTf9eP7o`Y0@N_`K-FMX% z4gXJ9Z(ZOo%eVhl%GZgN zt&7Xx<}!Hx&t-6n3%An$sJ;xu8UWM;^}XO3r?s>x9!2h!*u^&gzP{0ZpjL3zz3v&=B%zWA`n9|DgvPjccuQt&N{8bFiGJI(Pq3}sJ`@+q`Ue?wsu!PKVRR-*si6T zgt`ZFl;^IirfZH;^YiD9p5O#M|99uEJ>njJ58f5Ci7!D-{4b~r^Lf(z6rv`QUWnGn z*l2xK3wc-o;=KjX5KBNCYcv&>HqS=rWti+WA;V-NQ(;eo!-MydhDsQH?R4&M-N$zS zgu3hblKbtEeXpzLzdK*_B<{aIU(|c$+XAw_(a*1`O}f+ne5%f|zx)|@cX?46Hnb9- z0X6Y5sEap1LwpFDq66$M_9Vx~yhP(IS=yDQeCsB>s*FCfKcCmx>`mqv_7nE-OY1Ic z8u@Myg;6gs*ydySnVqzxaC9u~tLu2rBy1nn1m7=;977sV@>7>np7(J3(|aso&lG!V zjT@Hq-VW_8$esLPzMWg+m*>*er@SAho$%m0R5YuaJgZtfs|N3^pFvHr-oyIsKd*1s zd{0%Ef7h$St#_)Oims#a5tKZ5Ez428tETJN^6$nCIt%nxK+v<9LS_3Ue)<_?`SX;0 zSoYPfmhBO9fed%G>8d&U7L}IXy9>SrM|-~}KaaM=*NC-?A3^-*?VqviE|&JF@upcD zaWGTvchOE4-tz%9-t`LBdfXpLGab~$<)9&|K~r1<;#Ye?yLbq6h}~e&gWNq^_9wC@ z&nEAo;rGR%33`sK^*QfQF6V)G{|7XLA2dZhXo)4DP5hY|nM#J+BU)I#Cm{F9BlR*Y zV^a=ME^E_o6Vt`x;s@+z&>PBe%)z3M?M*QX;XjHqMXv3T7$eTN9Tt;CqwTK;~J{Vw%`)I}Xh&Hu?=&`X!oV{(as{#6XQS^sR$YVxs1;m5A%L(-Fq+G1|@)4{1}t z_wn1kCE}#kV5@-TPhuhT12wWK)~1Pp#$4?>F~oXVD-m<7WB3)^yM?8fh?^|@-VH2o z*Vl<6``2Qfn1x@So+c{nsm4~Z(cWO&DxR^I8)Q>yOct-&>x@m}kM@Ol=h}lD_i|ou zi@O{RwpS7U(nw{`qr?`6$2Lt^&gmxUHQQwIfa@vieS{P3RF~Z%S)A_umE$^&O&0rO zk7;QLTlx*L4Zci$Jqm%!&wqQdq<|F!W~+8)x@#h1aGrI&Fz%eb5Y z)&y7+V9h$)E!huh>ujr-Yncy&cf(tC@>VYAZe}8+M#D-nBaXg!CU zm`j;=qegKVccW*Xm9c^~`JkoeFkiJ%yT86HMv>=Aa65RV?b7$|8RgWdY;hp^8<=qRU=C-p zeiU;Ib24)p^ActWvx0dgb0PCO=1rj8c00HmBUPSg(i~#6xDL!0%fLy@0&xq%h0G$> z%;a#Jc*N-thwvM)4slp~=yiy8)^v!E5kA6xj*8C_KF0dvYbBM49b;u-rzq4%iA2uCZMR*0W6`vx&KwOR|*1%b6?K zawT&WYxXk_a5>v-HKs!xWFBJ8VXj>}hdY=@IQA%qzvS>S4u8$z;~f5$!zZ}3KXCXb zrlC)@Tc$sn_UyHEK-= zH)(YC7i)CZmU2m!Yu7=)LR$u|)NTRSa4u^(muB|AfxT^H`^_k)DRyZ0oQ54~Z7sM* zyB}=Pn!#4>!PDZ!t6Y}@?5B|~hSCrvspxh9XICS8@I%^P4pi7gA*vWRn;$(mx;l$ms9 z%h^MKJ=Bp27EasBY4>y516=+#F8@I;{~>cdYH`@45vJXw5vIeWes#p8es$EO5$2dl zBg}D=`q&AR`q)WxBT@=WW|9qt)Ad4>ol;~ zN&(BP{$ROv78tP7!5S+EthYvijn+9}lQj-pY)t}}T2sK~)^u=%buqZongy=1O29SN zTyU**1=wuWfEz68pBt?Pgg0A@z%ACb;0|jkxXZc;++*Dawpe$9t=1ZFzjYsYziPa^%U4{JqvbNE#MLBCGe>A8hFfl3p{Qe1W#CWb)U4}M_AbZ0vh&D zK!^PZ=&^qZ`t1Jz6YbxFN%oUqAG_@gw7=Z~Q|)eWklhES*?WK)_TFHQy)T$+PX+Vr zgTc}EVPL*J8=Pd%1q8-g9pEbaUEmt~T5zp>9oTGt7~Ei|k!>S> z5)kcge+-%}_ATHJJB@O?>@>>lvG0Tizvd6N+Ft?Vm$)%zhL+Zl}@mgq=pqllHHn5svRb!|@~NaM0JUJPs4| zIb2|(BNj|@B!Yb$$zY1(3^3Kv4;x52M(`s{vF}FIlR_+JSAS-$Kht@572LL z((Jj>`A>v5v3|2tKhq%|=kOM%1L3V4-r4aErlz9u+2qvH(XaDY;xG)nhy_77kTiwu7cj@S_~$- zZUB>9H-pJ+*~j&JSf0+7DXvw}r@HP22f6MC(_HJp4A(|5$MrZYhqGm_Ya29quBXA# zu03GBYcDv-^)guCdL1luwSh&hcfgsh55QTjzk70$cM4lZ_iz@@G@aJj1|xWaWBxYCsZu5$GU*SO9C*SgZdW>*fl!8Hop=sE}7 z>>3AdaZLhuxTb)+T+_ilu8YAI*DSErRRZpJ%>@s*t^nIyHQ+&419-@_2t4e%7HoGd z1v^|ffk#}ofk$0;g2!BIz~ip_z!RK;hmD8t$#2!~GQKaX$V6(d(+~8gaZggJ*ZgwvLx44&sJKVQ|yWDqx zd)#+{E$+2ot9u=|-~BLn!2KB5=H3DxbngTYxt{?KyI%m?-K}7U`&ICW`%Unu`%mC8 z_aX4O`$O=A`(yB=`*Touj)I2gYtZ5O4)l0_1brS%HzLtvf=M11*vAtKrg##;R8KNE z$a4mm=IIA!cm{zvo}pl_CkxE;j08t}X#Je;$wPROXAD^2nE)1g&IgM;h2Tujh2SjD zrC_mVHdy8<1Is-XV8Bxa)_Cf`dQT(R=(!qf@>~xt_S^_A^{fDwdu|6;cvgceJ@<4#w-T?P_{s^{s-UC}bhr#`x zkH7<-&%id%-@t>OW8fjrx8PyV|AOtFe}Nqyqd(f;;{=a-yx=iU0(jh$1fKAm4xaS< z3KTH|K_ey&bi`zWo|qA!FXq=^V$5hTDP}y_C+0jbC1xs^8dC%gin#<#i@6-kh$#hg zV#>kX7`j`@i>X9-bWAOnAF}|Q6w?G2#9Rj!#w-JiVr~Iv#;gQq#ry#*j=2Xci+KPn zkJ$hQVm5&_F;9T?G26k$m|b8~%yZ!4m>0pNF|UBjV-A2TV%`Q<#=Hxziup6RCZ-)+ z8}ljH9P>ZmhM2#D8)J@xn`3?ex5WGt+!3P>K>Noyz&$ZBU`tFq*c#Id+#k~iJP>mx z*cLMYJQyy;o`{(Vo{ae|D7S!3^*HV2*b^nCsmL=6N3nM|-z{`QE3&N!~qRfp;%h=zSS1^1cqv^tOSsyzhX; z-VeYs?_a@kZwDCgegW2azXI#M-++zY6JV3~CvdS>8;CRFwS&vO9&m*>ZlFip$|YRs z?TPU1-i66HJKoa}yT+RWuJ!f@?_-;0?^y_M@TP+sy*c1!?OS03E1YH3m)`d0Uq+!fQP*e1LLu?NiEs#T?9>s_ge6XcPV(( zdlPufdmDJ%dnb6py9PYzy$=+z4}wPQBcLO8Gw6xk3i@K70uy7O1(RZ1z&^1rfhn=C zfvK@?frDZXf@!hugBh`Z0drzM0dr%IfO)ZBf}>;q0p`bk4^E0b2^PfK2I0KKT3}JE z8=M*I182qd0E=ULgJrRO!SdKtFc3Q!tce{4*2iXpjj_34Q|xcR#j#_-rLhyi<*^0e zir8u3%Gis*Rk4?WYhsJRwXuG%IrewphS+LwV{ARRId&nqCH5L{N9+=CSL||dPwcH= zOY9wBYwTU%{@AtPf!K9mTkON&!Pv*ZL$O=H!?8QT_Sk2@j@TE#BeAXE(b!kPW3g|7 z$7BBlo`^jJo{aqv6uyr^!}mGp@Erv`zOO-_?>jKj_am6(6NAzIJ`+swxxiFkEI7!Q z2&Vax!3^ISV2-aJnClw^=J|$#qkUOmzHcNr$(IKf_{M;Rz6oHF?|g8kuMnK&yAUk) zT?&@@W`pIvGBDt)0Bd|zV7;#nZ1gpPO}?wa#lGvorM?@%<-Qf*3g7MEO5bX5mG53~ zjjtJ8>w5@n_B{%2@I47`^z8sQ`*wp{e9wbBeEYy%zWv}H-y2|y?~h=s?>%t8?=X14 z_Yv6U`wTqj`x|)3cMLr2`xb2X{V&+z`xkh`XPkxh_c_61J}-FOmjIsdC4nb>r-LHy zSD+C$5Ol<)fu6Wb&=)rXOpN=QR0Oo=-WOpTig4vH%R)8Z}xGvY1>bK*+D z+_-WuFRl{IkE5${QXK7E6~xi*Q(+wKU(Jl8y}Ma)w0Bn=*96P5INBL2kE5AAz^Upv zRU?NNGncYvIr~|`epbfOKG>=_+QnKEM>|w&<7kJfIgWOyHpI~m)y6p5CEFZFyJTD9 zXqRk99PKjgilbeoJ#nhe$o7ZW{xI8ju>T`$bChk4vCVO| zIl(p}fm<(uTQ7my&67YakjPBp*ghPal0a>n$~J=%s77fCRECTMs!@3Y)gr*LH3`(J z^&DKZO5mY-LS7_-pgkb4dRwbIQ3CKFNFp%r-xOKEZqhbenm< z8759M_aHpPd<*P{wBtkqo&c7L?P8T}3HZ6~6Yw!Zw`~`1nB%|&Rw?+gwFErNz7PK& z_c@_!+r_Q+eqg)36uj241l;df4|<*Zz^k2~fPK8WzFlnhmNJ(x*E9DqKVj;|cA@p| z2d1Ak&bR_kD@vLBn4d8FnWSIB+{gULq>_BXVVgzaGnxJH|7f2RV>n#GT*8|5%u+kW zu4n2F4m0;L`#DKd%G6yP%Pe(o7q($b!0q1k;KE`1IQ$9NK1}zJz90CTjB((ij8gEi zj3umJ4-U`V2hPp>1l*D-VyLt>rXI6h__9(sd?vFWG-X+%IXs3r4w{avVh)!uOQAV8 zdohQvV=jRvDW{pk>zM1Ixg@8B!+V+gpm{H+ox>k7KY^xhxbSj$n7Vhn_|xzd4xh>F z2Tk^fabVeqQgFMswa<1uKTSQI*glZbib2E_=4fUyb1}1-*}`mRiotBp9L+3dE@n0} zTbS)kaTeP%M>98MQ|@IsT$16$juAv7mo=k^t>+L^&aJ~aEoL?|+nFh&SY-gs7Wj(W*+0INE$9iTnvz?ie&w6Gvvz?hTp7qRTrZJn!**u5p*urdQic+pM zb2PKHlxtT;?C>+^5?ki&GuDmjn8&dd%-<1>D~PRi#C1=Qx4q1dn63NS@>OETYeWa$ zV465u@E>02;yjt{HjBkH(O9XF}tqw4sWI&N0S zCse(jR5HFU$A9=j82@ck#~tdpQyuYT8~(%BN%#+6;NU-e`GNoNMF#%kpCuKViPsG= zPf=SMrUx{c7SqmjFr7@7Nr@llR8MfKCz)HATbbLK+nGC$+83BD>|rnSMb^B} z;SbpI&& z$2Hw`vumB}ZPyW(>F(nm?7qa^=-%Oe$NinVmnYpb*)z{`tLG7q6*E2NikL+)D`M8f ztdDs!=Hr;pW4?+x9y7r^*So-bvv;lcL2s|vfwAjjzl^=qSL<8qyVJMT_pI*~-*MkR zeG}qtj9VACHSVjpy!bise~ABUyp=E|;md@d65NS{6GtUZN%SXPowzb_b>iB@y@?+s zCickeF{a1(9y5AW^l0jFeUF=a{JF;$J$~xZw`W$*@jYktZ0vb=&)0h%?)g>EfA)0s zdcW7lz3fS&lPZ!HC*7CyTvA)o2T6|PLCNPPUz9vMxgz<7>6_Er(%(t{HvOk` zBO@gvKJ%l@Z!^bat<8ESt4DTC_R{RTv$tlyl>Jfm^dWc?N5{UN&MT$6G zq=_@Iw(Bdh@m^+*xJ-=1yMMXDk2lTciLs(wj1v`jmn$H~i%Ky;REdeAT1*l(cqj2n zah|wVoG-2uQ^X2!fw&FtZa#;1Kc5#x=ywD3Tk!s9hW>l-X8mKZz^K%OnB!Q7&KYn# z0^Y3eM}KW{k>yRyJ6r(_Ff#(QslyxLIES#wY9EV5!FV>xP|2d-nX|NwT1U!Q&{fyn4lOaSAb3XGf<|gK! zm_P0%&+#u3hrE~z`dA54d&1hLi}sLXQU8` zuM+#cMl5^_okCppmK~h?mKPk=wg|l1v44~h2j8Q7Wq9Br3X?|mN_ux+$2-U_^h^zX z(GK>+yTN$MB;4q^ebGblTN=y>A{OEE&}%jHs|4@@^jJ+yMSs=MFO$K!;xweHKxz%W z^K^u-fDe4vAGD#5o{4Y(w4tB&L%0gGp|AEwxCXR|1~CxfdJw-%AO<7c2;zHwVhF;E zn9Idbgl`q;;GH59+=MFxzX>FUBm5|H3$7J>Hy!USYhoMzWw?fWk>9{(r#Khk9iR>G z4~{|jT+k-Q+QuO~2E=bR*v2C~4z!60wuuOj2W@!Aa5BOZL7OEVn|R$e58>B9oA?6nTI2T^ zKz!TDb_K#mL7VuytrFp{n3-BNG?!~vLi1bZY^@IAVyyuz(H4Mnw1r@)b`@BrT@CuR zYmsUm-r2@^XRgzhAiPPt0enKc5!|8O1h#6ofNk2X;5*vy!M|v?gGaPG!M|&N0B!nR zpr+pq+Vy+kxu<>~!aYFzeuMr1!o5J7=#BTlHIdBhr>}=*jQ$Wbqe1+0as3g5$AUO_ z`X+?OgE)8kV+c#Te^+&ixnnzue!%=K0R` zeGxx3X~?kk!(8d_WZX6)ePoYZp?{<4!)FYrN0LaYo-=q@QTq%E$AKPx(027`dDDGmKmKc(L&fA1^b; zKBEg`F?}1s!gxU6JD^Vzh~Xmiw;op?{ROQkyqSIu1b@-GJl0tlRTkpM-T2&t&%OAp#pgbJ?#Jgry#K!* zpAGmtgwMnHJc7?gd^X|pC_azjvl*W!aDI2-x_=5+{nPmD!e=)=&*1YcKJ=F(h8?2g zM0K33j_0f6#p-y8I$oxZzg5S1>R6$U)qG4s&B$*OeurKjZ&1e@`6$HcHkt1@J|^K! zc4;?R9jB<{RCV;L<2-e&RL5!@hl@9~k^Jeej}$}j$4TZ04^}mOFn9F9Y|;m_M;};@!pt!WE1Xf7J4Rv6(?_j&Mq&OK zg*DG8%pjvMx1v0{(Nvu+q}{>RK_TuFhXM zC$KQTx>QV^^E;G4%ve}g@2`Xb#gD75tf>h2YbW}v{IweBGTj9wm43lildI|r>ube4fBozUB^7~&T9gDus+uRpSJu=o6jMrS>&i>efLx7G z@sP}4TU`?>9efm3%YMGbD=f^osuDhTi5SUskU0#Zm;==lhKt+88Dkf7ERZp52 zsGd_22qiD@SIw(07j-CE*wg%yK!aagP*Ptp-(Of=L8Z8`ri@xrR0qnU^di5auBN)q zFUt5xRhoQZ)fH9M3#!ms0e=ail!y`I1K7msk>dE8eO63vpg|!v)QG@)F`VujZ&K&AfGNWRV zf4YAzhv_)3++TXd_}W@@q8ZUig4SG|=oW~!nPrz#tDg>Y9K8}L_^&8SD2 zge)`;b)~fxHT4zMRjSrunQIsp$&?D5ACV;NFj9LFoy($yHMl1U)RdPLRgbHlkE>#y ze|%NRoPb}9t*#D;$yH_k8WhK0RnJ~j-0bP3t1T+2MbAZEb4$4Q2db<5T)?R4*|SwI zo>1%ei&|>U>Y9a9{FT+U3q?d^b!Av8szxV?$YS#rYMQhLSMhPiY7wPHeT zb!9lNE@V}KKF}y=_@X{poXLi2T;-*R|O45!CD57Y+9qnwdwv63=y^dl1duD`5%>?L^L&lUmJfQTz9Kc85BcYEUW{(y=a3q#$I`&flMUrMt|U;}5WrA1qhU_) zQlT-Uky>E}Ms2?+;r`D-=wuUxlHqdV{N}(b2QH|tr@`5eUW-{}d}FC!4twN|uAxvj z6kYn3>PpmhW2+kl9aY;<P$$FHTqGGr3pbR~*`+o@b`@oq!BNnu80BzYaHeIkB1c||pIjwR$Az5F*ib&> zY8u8wWHmJ+D|qjcRcW;OxIjr=-Q=pe`jRTNe4wK03aUjZX=$YAYXm)>;_GF(rp}#< zF@P=uR$hcPQ+2IUs(!1ax)M4s!8mHtU`Fhg6rnsw;Ib5`B24txN6D&aG#w)<%29_hp~t4fhR%1Ou~Dp#6-)H;XUa9l8%Y^9(S%sf~a*{9_h?Iu|; zJ1R#o3Du33kyu?~RgBqEjH#X1K>eDAvvAMG`VNuQ8%nFudGgWW%V*U4t4b>ZGiVVI z*>fh>akQL;%cLz|p;Jogu8<;SSyEe3hXHJIo$?d3S0Y{9oIuH84;YE6>L<_|g~nzM zP)pR+Kt+q{=_Pd-0?~bIyA%y0T>#5*ti@0}4ot3NcjKzDruNs43sje0v7mxheN@A- z6(zK&Rv|QLWsR5-sIKwPC@l&2%R(`z1c%23Dr$n&K)p&U>guX%!-^?be^kgG8di?M zS{{o?3@v5ohiY9@hP#A?Ri)*qX>~)LTu#wQL4ynW1dkdN4h2;CaW1(YQ~dQMJa**K zNk8X`*|Vvsu)Lj6;m5r}-lUS+vIQlz{$RB!RaYx&)vnqLt19a2x~e03K$pmQ>ayb* zk4nTf>aGxM(QO3zpaQ8`69Lk2VOSLoMU+HvX5IQ@Uow$g;PQf3Ol$DhE)1=LY0~3- zCSa7r_^F0dWE`cSk`!VMg3Bh~A1IM4mM8^TL@XVmB&<`Syj9X=GO?2qMo|tc(UZ|n zF(j7Nk#STcj3Y7&u2a;w)J+VH0$6ERpv$03$h8JM)6hzZru%EEYwHVeJ0)96-o@03 zxjgA~N;sjqmL}nn`qFX{RjsHJ^5vqgY`#iEE7glC{0pc;!HF7cak=cFLQ*q^BF2Q5 zw+KdhWFNtFBI2^+{;t-(Vsd4rzpNr$W!xd><2DPcC+eYP;oz9Ek{S#S0+$pYRkh?Q zVXo{MYQ0@pQd?5Vi|O#Kk{pmPuE2;HJQX4oitMa)!RSckn6fgQ1Ai^XTE6x>U*V*-iI&!;9Xp{bAbojV~bLygB%6qY`-qcxOpQb`@(9CHF0k{wO0Fe@-jV`8Bh zg05k?K;h}0SA6OYAv0g71yp8!m&mM8WLDS6>`-KOM5J6q1iMhwbx5VCn@*~5Mi*99 z*J53PJuW_ZY~L^@+9vW=S~@I>Ht2HYmqn~jqD?1PVWm@0valLsNd<++%SAk0J#?By zRYRpxp{qr$dFcA(7HuqBrjt{0QA!J6wFD&@ z15n63>|~<9y3$`?yHL5A7bTJz=B(^2)itAydF0`HEZCvWqHb!wAGu<45nVJ`>nhw9 z;Lc0-6M2siY!M}i+Tg+}cvmMoTwz6{KcLE06Ap*VJ_(C06<;0-hNJVVD{-%_49X&e zuu0UggZqGp1#5&+L_?~E2yZG0+?lHlD>~VH?n0WdkI23x=cUNb6igYZW2>-(PK(cQ zo7DyrhgwlCPs2%P$a@!=t-6s3CQ@Rj%y_gCSJILtXvjj?Cnnvpic-46s|kjJmLWyh zTFotJU|vNAEtMFy!(N&n<8oQ2wSpY&%AzAFRe5kgz+{dqr^=804@{`M&nTydsF{RS z5wrF*xy!1iSlJX@R2s)sna7pXl*|ck7ptj?DCx#f!N$-0;EI>KcHJUg1Xf{H z8NPF?TO=2S4YbUSR8wmN_czPJ;joFC)YQZh9C*8GgRA(cS%Ydq19NE7fTFuO1L`hQ zMn$KE3^h5HfYEbCZ3&i(@(jU8blfSXxKLTTD@d18M7zY8fvp#m1OpCwEpG5pBDob? zN29Eqr7*}&RZ1#!HQ(p+xd~aT5h)m_MB0nMih-BDL9ZAj@LWTVBPvUIMNRk5!!p5N zOQQ%jf2*)!P}f>G27LuLPm!ArA?vXfvXcolXO64Jq&2;yY96{(88$o6Oj9u1V&4^m zFsd8u?6^}5C9JFoXB8?$s0n%c?wVgHKDuCGPgH1CsPO^01ELnUawBOzZgjh^QytQU z%Y^kvSzV#OmNpgyZIV?tV1v4EJCI1)|DI-x{ZpeVsxW)Ey#pG^@38||I}6oqS~NSuZi***`8fbWj85hYjuD6 zF2F`TjaI?4+g+EFTm4bzQP#iv+NrjQ7%J+*8*ITQ2o=08x+`}RA6ehdRq(2Mako1TRqx1f4yII+-?d zDClZc7ut*r4rFLLzVAc-mjOHnfOAzVQ76j~p+ZrEQ0~eZjRAISJk$cQMp+u}qRbxaKpOn=7Lpz~z z3hAas;T{^?=mI)LV5chbP&EaBb~_k>SvtD88hl)i%c&EpGzYPq2|Duk-F#_MHeh$tm*1G z%1c!9Qp<8{MdqXOzLdI4H)rfreY11d+IC6!#AVI0J5BW`Q!c=aorG-6XFFY-3D%MNW` z#7$h+NS;yEdn^9huJO_Ln_c5kN?cb{{CE)GP3p*{V%N0c8>+5x;Ty}YagleGU1OuJ z^e)j8aCy{~!zQ@JMB_0YIpNt^32vpZ+mBt9G4t^*48MdhmA7k2M|Sj*!93dWfgF5L zNAD5@2WyNnH4CxGf+;_=rwbLEK~jj&D~*cA9Y^q)Z^TnfQC3$!lW+;)Qr<)j%%|s^ zLGSchMnuApTJF|O@&{_Lu_>Pg2A}p#DXEEcP)W~ArdKa0te`Djeq1Vpc!omTAp9s> zz4{|xG>pG8wEOs<-b2R(R_r>wrti?KGKJ7eX|55HoM2zMUwLs$` zw{cXIi%amt2)p0;wIvJCzp2iM3f`UJ-IvOe8s5^xQQq&!w|^q*R2!@g-^t7B)XMYF z#dt=^Ts(BBE#*g{7<|LHAx35k5f6PSqGm>IDR&q+ z4z(@9y#FA}gLjpJ-G>@7^77>e9#IOih`5B=AX1j60vBQEDrS@D3!A%b^tH@ZomAv2 z@``4gCHT{ipF5tx_>uEBlJ3m1$1;|qoQc+^HjTe!ulM#AnO}OJwpSZ9J zy2$PlQHbCp-^kLSF9y}2=eZI21>>TM6;zf*mM_xLSX>2FqJ*A4QklkAmC>9^U6r?N zs_>d08jEDvP*{uw_n4?PLYqq5$%9)?a(kMpGp3=w8c$h5jTbCTKJ~{4 zC7p%nDQ~tI-{>#JIzDm&FAY!Tk3@KOlh8p)DRE(>j*srN5AjqK&}Y7VYCR6Jh#!)_C{K8mVq&|&8-q)zF_ zx^WEN@hZn7kc!ffOO*%hxuKHswWHwE8yf7@Uf<7{$?L9=E_ij5L6yd~56`?ZRuxQo z>8|9#F)X685m|O^not!Z5}>0;W>BYwXPKSa?8F;{wOCKk_QZUCMidnrodg#Yzvjgw z=sZkye45mguewfhs6e4Mrxabal&-55MUQk|5q`wR!$w3&dEbD|F`>%B%gI%S$z1LL z({`Bw8X6H#Cg?ihJ@d{(dR>=6zRTzvWg&};8yk8m zEFW6%ZET(XHR+#t;Pg!Jh$R_3OM{bJ9T*H+L zPZr1*<2}vj^s2`M$}=cn+)-+J9j6o*$~?Sq0t5B>TS$i?Nxl#lsX;Ro_~+u0Gy)iX z_&B{{Ub)nat*)=f3s`8D&dx-DQei|8wQN1-l$PAXf`!F5!xoAK6=nF&NV%UAVoh-= z?id>{4ON4(3)-t!OG14ibed$KHuykXKFX!Dfo;)n;!w*_Omr>eC4}~(YY0?lQu>W_ z5{wA9T{tPb<-$!sNhaVHv;wQX+LEfexp<%|X3tTp$txSMwx*Xl>jYj)Dk&|O18yCz zZmf8)=Ad0qya<9Rv$mvmp^Bx&yow8I*`dfq z$~;>}V@;3u5zE45=V?S{OSQx55gE>)H;j0%QTCI_ z!FvX-%BnJ4r;&vXp0@7dIwgoIZMSjw@=H~fKY#`;L!;r#bQAGTdX@YNmMCbzn8~m1 zb8SNJWy}6C24AG4(Luf4eF2>kQGiV{!C#i+pbWt$Dp*U8a-tMc7!z1fvXCAoM?8^1 zKaF_ba15q~ic;zTGKAX#dUHF}H)yOQ3t1Zf4BEe)%I^UDzxKX8&aUe!@62c(SEKQ0 z?v)*ngXG*KN}?pX%6-or$4WHPNVZ}<#+s2OCnEBFj>evs=g!y~N5IVBfI}Q&z<@(c zFu_1VLr_Cn47I7Drge(b+TaG$2I`j31_%Y3kQ#8}e&5=ApR>>7-WliDKiXf>j+(xeTEsQmLR>KMwPnS zdmWo!uFOE?<8OAp7KsROd^&yBSlFwRKuzZi<{J%ILbH#Bavy@oQ)v!b)ba8Z^gXh? z*01smH=ced3ypFq!|;SIHo5Wfk!vzPW7jdv9!UsuR_Rji&M3Bj=Ai~yn66r#Ss?XZ zFQ+^L5&67Lx&!e>(s+6EdAk{M%Ol#mT{6Ns_wn$Rf#+kFhN?)__#`Gr7uh5?c{uau zskYu@p?`!7#>XBQ!nr&|M6~UO(|5sup;p(vNCsc7Hd5o303XhIfz3~?^&2~#?dj1;jqahD$KcI zy5XFGhp0}(kYc()J5%lfV0cm0!yb!oMnNX;$IY&sOdijaVOjo|`qS{tNNv>s+( zk|W*R@`5yNY~f0xW#MHyW(W>=W6F*R9(qH*U_LJ|MxA%OJU6|-L#52I(l_%-C+(;i z?4^8+(1M{Yx6K>N_b`8IS`ehPQ^8mp(=uCz9Hgv zoGq>O25kM5?RcVlK#N!Q1YqjZSosRe?f^ijEk!j6JW;(o0b>aegko`V8OMBTlNY8r z|I}}Cu&0heEEC}dyZaDbF2W7lCLy{)gj+GfZ8*ZM6yY`!;g;c4GnA32oMfW1l8MSo zCMq)-D>u@2sZBVxBHc37Su!}BTyC6f=mX_p*+=!NF7Wgmk2m8~9W?(4r0z=z()(J~ zrb1Y)E0R9YbX05DJf+)iHWMTu>6;0nMx@1NByFg9wn=>p+V<%W1=>swLV?=mA-ds4 zX4l_sw8?7}Vf&2wLu@9O{t#`mXlYl`-ExeH%wC|clWE1KsqIzMrUUu9)5tWTE5({c z4whihizLB#iA@)CXU%b}y=C;5kghY77PS50iTBpN?u9(jVdV^}-;3%CSTRgN2~nOE z{jZf2yWdgjOEoh*Jx6Wl)Ex9?H9hmOy>(JmjbdED#1dCdh`!MdscuSWu?-JR5uFb0sV7TPArai&m7~89bYL!C)Xg&yLEEO<+&geeP6+u5 z*s8J!UtUxIRhoM?Cn92h%hlVd6TUc(@s=PcuTJVotm2~A2$?avj(yT$Q8e9ir=q9Q z>|Fv~LVgKyeeDQrA&Mjj)?Xx1q!>g}2J6Ko(n)U5NfWh9llBjbRWO>6WCaO=!WH)S zw~C;Dq=>mht)$E)h!!;0yR8IeH!-AcWXIY{P(}{ zLHf25lxr_RxfT-SU&~YXV~;kz;Vew5i#9yMwj|voL!+5C^N5!G%p6@0sA0Ov`FW^g zR?M{|YUmD=>6}E?K$yB!RoJuRwnZ5xjBcDkx|Rjrg3wpoEoeew-GVMq)IqAqf({b3 zE9M|=t3tNdEo}=qNZ7LQS`hjQuLVu0@LJFX3NJ_%S$ILBc7+$DZB=-p9Z}j7i$u2` z%Tp)FSWJcqbYgsEWQ9LESLH_U(lnIZ4SUM#qmdP!7%i%H8TJ&H=CS!D+)06b;t(0O z^A@-l-h}0&kjzduu@8*HC?QgvVlhJ{Gg%2j123zsaLk6Y-V1I;CU)2~p9wP>TUM%P z?5pCe5R6m9B&X-F4sF({{-5R+26vC;{*W*!=LZul8DWTQVpVI-pM+8yJ-e_qSz&Ro zeNExH*Ph668x>7UI@y|0G=2?FI4-|`yV%-Lwu~=$%gILZ2kAGTp0*)3ojx7k3At=f zu3m{M#b8`Y8>F;jP3*bV>dSM>IDn*O$zO26z^CWx7Z+e`#+&QVkkomrO@%!C9fs4% zMZ-;-s5cd#E*vlTrb2P=A7)6<6|=D}z+jBF(wiw(9UphW#Av)qtBqF^63Vs3C3c4r z92Zl$&##)*4dsOzcd@W#g$(h0 zk|&m|F0>Vy)nj-n;U@LLnj0^zltY-R0HTR_q2-1|GK1iymT3Lhylux1L+ApOYP{yM zM&p_aufmKB5IL_2Br}QU&&C`+1O$cJH=TSVTi;sz-&t=o~~VCD{jgfQ)rcir4p+RV{J?9kGd_X zy|xNA9xoA*W$bxJ7p~sNvfHS(=u&x%@P}RIBFr>S>(XjXam$7jXIfK08#6Osv-+lp zc(nDVYsCah8(9uSkaE0GhO1V~i=fk%p*)k=l9!G)nkKRq?1-Z4LGF7yxwv4?)oM{! z*TAWiv>?Ig=G!m|l6h0ZjVOaDi?&{I4_ui;TR7Yy$N6l{Qwz(NHeqFAgxRhvlb|Mvlz87E&K=@GzJOqutfn^hG%Wk7XGS^4taHV|AP)nQh3q zZ83GPaayY5P4L%ui$xW@Ur;xZm{5R? zlM@PJ5@LRBNw5VS$L{<7qk>Qr4A;~>u zPE6`P*7R-aW`tSXj9|3NM*8%96vkOy52QV<2`vsm84}q3$%RAa-4{g7T3;PCO}sbe z*_OmkDVMr!iFF!XI+GEdYvnB*0zQ$k1ZZsL>h7QBY4`S|_T{<>au(Gl$Yf@1x;kYS z-t=xiva(^MK*g?L2fLVViff+irSme#q@1fjafwa$g@6_E?u z+m{RRh|Gofw8;g{5ZdNK6L`4@-&m~#9hwT55TY}~s*qpevkq_Qk2lSTXz+OpIv~m^<+bCQYJTC2?zICSlV-&OHGjI zE>zl59Iw2v%Y5xj<&gJDsp%E2J?1fy2JY|Gy{Yf6DMa0h0t#1NBh{XbCNk$)TJb_O zypZZUq;8o=dj<($AEmmNJnifj8Fu6SHL;TlON>Q@&6@l|3_o;JhzHLPytN0J;>lQSGr-m8kNBX)iYL zBI37+BD}37eJFm*&p-TnNw7#FnENO0qT6s4G78QG549(?2BT;~dktn5U@UxYBG2Q3Ep@-8SN1l&Dn8MkotlL4 zy%KLLYpR&kfh}84JvLu&vd)#|w5Xxc^|uH(hR;B#WEeth5pvJ>M(h&WT+^DtDb5bd zGZtGTLoh* za#z8&qQ$Ov(Abq^lr{{f>jV^>%&M)0CJtig@^t%CdvMTwwAsr$2OYp_)Ms$;RX$-I$$5ix@gA3pRcOg@1)tA|Su+c&|Lsq$MC6I{;7z0u zHE#+IMi08$jSKcRsUeUp3%Q=u$}4YTP#?GvpE2BkG&g13Xg}eFa!s`?x6ukrHRk73 zn7gLshBw|O-1PV!#_7XouJCCcUg8CX?mpGEs^Un=!og@G+jx`@!bJF~xqpNQzD#RR zS1i4iYH%%vVI$va7*Yqn?XvVbcb&M?xK5>U2*Y)K(HcK+T_POjbfXRKe%NytT-2;* zIGf&C(J`wpb|pS*j10#h~9=Ddy%b9{dM6q;n3RUD#Og*TqL^t!JSIX)p)DQcHdk9!fDh+I5j zNV==ucH8ox+>L}fH>)UB_-dMpHl^dWhFB!21r4TxG@>>^980JyPC+VFaHaxI%*$mh zuAvCjQ~WIXiFsQnaOs#e1LZLSoqvyut0oEfxC4Qe3sPH zsI~!4%=6+3E}y1wU4xRG_S=#e#MQh=a&M*~Sa<7h)mlTSPK`UHwrFahc`rMg(c0~p zCCpVJA^d*R588 zb&8LX>ralSu-;P?vLSEHS**0H&Poe{H;hBnW)?1#C()Yj!p-rx$w>=>TcBRk^ghdb z93$sJ+#<&nsdovr^Z}5X`o$T2tGA+4%NBk_Nz&&RCsq#0&_^DdzZ(`s(L4Q~sQ`)5 zHyp%wIr%BFd0wTh8LPb-=^i|@0hNX$Gf-q+l#ffbO2rXg3o8vzF6UR_-dkUsH|%}a zt1;cY^JIc_oH-ZSvxS?i)sE~|VT##p+GBU46B3cuvwmFLB6&g#R;nsp08*E%MgYj;%>NF2r0?!>GNLqJu|!`$>;Frc_) zeg=lVL5i`9Q`1VmPnB*c9W0HOu%elxjG&}2vGMoSzH0RM>Hb-~Zv=94zLhOIkx-uF+IPEdD`JT^V$ecd4qDiRMd%oG+l&W?l7~ zO>nRd#otKIZrgH65x){^bt(Q!WmP(8X=n=HYCC33az`Ex%=KE+{&t_-Ib&Pvnm`m9 zb(NSoHRhXPnB&4xLqVu_HeUoYd)z$Yz;vqCF0&k^tMOgF<8OK`HkxFyFVYh}HP=W_F= z_4kj$G@+Gxh{O~|FhQHD5LJh-vf>Zx&+V%6X&;YIT&%IWeJGtLCD;;5EttG(|2YZt zk14*plYE4Jjk>uz%10956?rR&FF=52WB^q@UNEbsbcuU@mb`@gbU2m9fMLGJ!AHeK zbSpl-M!0dgvY%@zqYy7L6n~%ubo4&$X*+s7?Xay)eB@>=XMUpzp^peuot4~R-as5k zblXIbcN;?_`@0hxNMnFBkO(8V*2km6{2~RcJ>SS6x=*v>3QMKUHY}I6uTSOzlG&2Z zlFbO32L&jv+inL!PiEz-M_LHX;OXlDY`WH4OjwWzCq?0If}5!*w$5}Mcv@o57WT32EyBKP zf@ZnphZ$0=c-HIg8Gb!$XYF`mVao(Bk(P75mT;JzZ7+mGZP>S^w0YZ^2CAs#`^9)(QmE5d#fT6OTNMh;O42kWeWI%U=s>s#wZHR3zPfcKa zEf>ih_2OEGF3K%KXP2n*P!XGEij%vtAW*-EK0m zjQDZotxC9cH@?dPRy*z|jD;-f>R+AoXfHA3F_S|1Y8m&Pjmkr8*brMZRa9r>&NuW3 zWK=g{CSuKDyhX*f0gcRqLTT}_k$da{B$(FGw86v_MPmDLM*$pF z1lN#o-&5;|^oZdz>cesE zrCG*l)&W{{_te4ZPZAp14LC+mnA>xX4kIdeUu-&~via$@PA_}byh1PAqC!Wm09zAU z6YVG>yZTMl2Qup)ne6jaK8Bl{Yi|%FVzM0!(Qb-SR?u-L-?wxO&C>rs@8N{ zgKkTGRuSVSbV#~g`9+#jB~5NCaU;eSO=Y?t&8;;dMk!;bvmvc-o3IVb;H_g3q`sb7 z-D{+J$aWjZ*wv0;WqQr;I6N0}GcbF^@N;seMy0=5vwR1M!5#Xz6h&QG?-L4iK2eE} z?3gY2do{t7a7DzTg~BX-eG1_Sa;ul$h*WQAn`_~sN4bb7Or^;w!DaLPsdAMT8FxY0 zZ3DMWF`Zx&(fYrL0O$t;sjvfVRB(2ia~r1Kd}V4QOMxnM-k`;a4K`=_X|ggdVm6ha z*K;bZLE08Nhycfc9zwB#z?jDG?ThQU&FXSvO2fjN8yc4oQ_n#YqpVvJ`%}=4(y$0_ zkJ;;*$i~y+;3<|#w1t?*exW+NS__;_)r%;PC_KMZ9UxL*&Y-A*3`iCwQMDV+Y|J!M z7fu8%Hv`>s2Gn&#&;%FLy3cCO)ZI+oIQ~&se6wc_j`R`9P+#)GmH3;Wb;mV4U|icc z9jZlauFOucls1tFRbx@s;1Rh~#PUtCO)*!cfm=9U1$F2PYOf;fq1lBdzp#d1*pJG$ z)m}wt?5e-oAii(3X%m@O5hFs>e9VYpQ^;9hGgFkj>poo#0_tq9 z&tJ?zTl(tIR8rtegEW=WN+OQsOxlCDvvZ4=7ELNy(qS%WI?&CG#x3@lvT zp}mSwI)|H&%`*IhQ2;(uw749ef8cam*^JmKZ>_sptFPXrhB!^x@`lpAYo zMdm8uFbP>wCfTysKFkm6IbM)S%-Eraz;$Kr6J+uBd4?LFUZ~?}gBXZILpNP*dI4Sj z4n)TN3K(TXQ`*j^t!@-Zg-QEZhQdY>dGRXW%w|~liGnP$n_=N63bM#;hD8orMKH2k zREL7t5Zv(_KD_S$q9h-Ez?WE+c5HtD%gjshX+`JkZ-+dC84{u%^dH25ZjAMF%^H5ywvsU&N_M7@Vv8s)9m>nHqljwPu;) z-;85XXsi0O8xaJ?UcaRwzn)#XNp$$}b=K_+^uEYt6?=JTlt{2DQCzYZa8YgEBSnX# zNgTcZqwfQgbl+Py1mzR zdvEaL!QKd|3RF!lqo_QIrDYx3VeJkmqU0-usy}rD#wH1#Ag}L zohCb!KvB@w&zde?l2Gcpm;65p7Aqqopmj$D;i8At>wn7CXP2qnB}1Pb7rYSxXdj#lfTd` zo}U=hXC;(~Q<|HLRd;U(6FO{0DJfrAo?Q_C5F6Gw^aMPgMglw2;px2>r<+vFg78tx z5L=JZQFflr#Em#Idpp!Z?1V8UJ95m(sj4@|y@<5%7hmy{--`ZKX$ponDG0iA_JN^w za{k5}X67s9nbULAx(xLoz@#C=>ge%>iNz|0k7bP67{$4N#saZRAtKZn6Sr!`Q54Pu z4nb&-$$4E*s2%OZY}POX)iZ5AVo>&?jtFhyjPP=xR+0~_vbufQLySfQRGwN;&T z&{h!nWmgIxe>W#aq;w-yfKmTi$SfDJTeM5z! zgUuO=nfPZ%2bgbCYKQZsx_tccT&s#aExsV-91!ncj#Wi69RZQGQQ-1nW z0Zl#A#GFL*!A-P~`Pur?;)-g&D#6~qvUwXl{AA5h(@Z~|`FcL+y1 ztMX-)t7ysm*+cD_ppFh8jl{fA+O#_ju8-B{rnmuvubS7FtYUUc$(PFjQFL7>M&VR} zyWi1`BT!tySlU&Dms_h?u-^71+Z;G)NJZ<+`Y0UbWQ64J2Q9dEJc}&XvZ6%xnU%IvI zI=m20zEa;bO4aEahb?2-z^Xttp^Grzus0#m01jf#e#gnVLxx91A8+-%Tve^-baaf; z6AbD(xj{T91YvUvw7?1-$SdffQ)r3X#?8i}h;B2Xw&8?aTDBIOdAp|4Ld*hH>(yg0 z7g=mTr@0Rztj-7>UrOM!2iH zZZ;KVB3tW#` zo|&mrS)w}`O=#x`1`Yai57O|03VxfEUySiI|3dC};+I|m1ezaf+s8^y5bFZL?XeS% z^(+@ucn)S&3)TOETw7thGGjvN`Uh^efK)7&ajO2Fx);Eub))mMaGkAP6ZcX<2oq$p zc4WFf!^;M+8wrIJ`Uh+)ni!B3bQaT1X|^zuLIT_O@OnPr z&xHF)m}0*RbM1G@hg=FFmtx3eIOI|axr~Hduon}I9vd?ur*N_};dE!h3D1O6o(U&C z6Ha?3ocK&Q_1SRhv*FZd!>P}PQ=bi|J{wMbHk|rwIQ7|Z>a*e0=fbJaWgLAPgi;4R zTPA(h+>@;K!bMx+9cE~b;|e}(_;TmW-Pl(B0ge!q)u5I?>*G4VjNt(yF28I()7-F> zt!hPo61(eGGL%MJ8_8hg(;9Bf%ltmAf@C=r^O0t4_U;wZxQ+!!nHDjEVmES;qn+$T zAf?(}j#N=gglXR_7MfJ0m>ZtYOxKn!I5*a(r!FjUtkB!sLPt%OO-mJ-e`d#b9C6nk_W?Z=Of$@}##tLD4zIDej>Q^W8iLzQ#A%PGR|Xf5o>ZqDN;Di`aOz8**M zwO;89p5n}37D!d^+Cb?jD_l-(tRN(l3A645ouh|w3%X2UZo`JUzNMO~MfXK1X{en; z1Y(^>WrQ&k@w>BzzU~#3e5(T&3@KqnXa>sOGM2AA5%t49z2B#)Wg&- z!kA>-@>lBz<|D$K>F6jn9AVg`W$7sH(xNue99wj5nSeT0Us|SQ=Y|NEK%hgxFoyyJ z;~^e5hFr!%E{8%cat2ezS!2ZInrQ)L}^0)?A9(nwQ%Pr-L(?DchxXv?)$X zAyRWDWRp;wSop?pP&p`1>k2E2!gBQL1lp>*Zdz~!s6DTr^E8mtP@op zg9RDkYi5#WmB7t%SsQ30wZm9Hs+~*vm@;vW&vW%h`#5aEOv9?tqY11mICy2%YDg@h z$VS(X&pOOyjn2h2bTqYmR60mlbHYgM9x-e~Ru&h=&cX&rJ4$~#!Fy0W&6E42B2>B> z>6x1niR!AGb}w#Tw3nYBmoC&7i+;AVhRH0ptK<~ptO-S4+Ks%-qoUGplg`OXV;O2PHWMowE0{~n z?!(k!28tPWbF!Z`B{$Co&F#jf%Tse`_cTyeWS9id6td}@!h8=s3ELYDQmG@d%=Jd~ zCoZ{BvB=)jOMo)Rh1PhsjvF}d@I17MpJu!dMZ#qOXB~zcs;359Sucq3n4Dh1y}54c zjk8t%o+s>HaS1dgQMX{3fiZ4!-t#j7C0BEi`N5ZGrk2%N#BexhQfla0>|7a^oa5^( zdErjfmzSUwGaX^`7;dy(#zMlQFomLrFj;NsgnLA%X}OLmChL$BKF`N-?woWkIMYtk zNjkF*ERgUv@6_<7+~)AMByY3Mf-?gOQq92)8{Kekz<&|H45vcef!{gtn}=@_zUaO{ zwT!1Ko}FDy(3U|_hs!}{MR-*uR`|YiqK$779LnHsQdI$uB;J;hvKhy@<20U|cw4|< zrpu)A2GDDc)JD9hn+Kc zI*EFD51tPp%!K1)CQ+L62*y%Tw@Bg{1LZiJ{fx8sQ^LFwGtDh*@cdIbNO zs>4X}dBkxNshGsuS)fYYIDXF{HIvSb@I5W=M!b{26QL~R_wU)G@Wjzc05sx=-*95uw+fP}DQ*}gA= z-fAVon~9rcHwo_NQM;7eN%RieV9 z6K?rT;Sr>d{pSgk4Qt(bqra6itqr7fU+M0qCB-;$QnszzVF*<9Y|WSzZEk>kcYyfGx{@Hr#niF(fJ=j#yu0~k5J$8pw{ zk0O$T(t)rcA4Vi)M92=M<|slANqZ55&Cm?(UI<0QXh_4ZnTcj%DGbvHgRfe;{1r75 zLTbxaVsJs(-udch+C`{$E=BdggN%-*S5S__sdxLw|h5 z@BZD}nkOdqEPS*4yI(1Nbn>RZ`sCN&_QQuSy!e~FuYKU}Cucr_uD5r~_U>3bzNIIAO?R@RV>`V&J9`GYoQ{DZJP&N??HIyK=Rju4~PaCS!X)3gR!BmUcC2d0#NlPw{*m>i7`P#TRXStaJ|V+xF)XHvd0 zLy}xP?|}nZ4i_rLQlnf>>TPw`q%b!BP(lrx=`vdIDlC%D*#SCQXw(aX{@`m z1I5^r?&!D{_1Q-p?C8AKNsPw&d$$b5<5$HGcf{9s_v+uCK~fHBqH_b?y`3PU%`Qrmz$5-!< zuU?L??Tz)I(UTw^~rI4Nr3gC^uSmhUc~ zFPcpvNhYjchQ}ikr(ZxD-^~V+l%~F$Wr{qpP3&eX-^~)rmkPt_N~wSns@GHbMzxkI zXA9|6y^<@WhqKvAIya2A)`Q#uR_`ZV=Ih>gvIo^;XSxqAiM<1?6z2c<_AbW0hp{L2 zBKE{yX{gUiLw#0tk9&0^eHI;@?iN}6Lxb_-?A-QBeLl;SmW$QeF#DrQx-y)~m$Qx3 zNIq9gm5Rk|xmXw;8Ln2)As~N=bBuQ{dX=srL?4f%2k$`t)|uEdfRt?+g3}e9z0#jD zvD-VCa!Ge$kBCjJQ2@7cYNU|QrSipkK2@dwHL~g9a=K9;Za|OepkqhV*wx*Q^bQOt zDS_bcW#s80DcnY(k{K!1Q`Kw*UFb-mo~qQ+nN+3$MQE;6&yN&Gq;OZCX1PAn+0)IU z{WAOGJgOc5=dTbx-`Ueo=j-WwJ)=0FqCh>>(x|meJyS^KvxQP>q&k9eppwbua*blG zmP4t;RL8&e0t1ez{_+K>h8J}CzaRzu0#jYAm#X=ZMkQ6w4QEpM;o&qIO+KB$=OLRrQ8TQmrOB*Flay&lge-d0y9#p)GPILsa^w@t-6a@dr^%n_?0S2 z?Cg_1h286mjOwhaoEN2XKqMpBi&8l+GP;pQty~?+mQ$J1Fmhk2=2GQGxt7WnDkJ$u zDPJC`6j3=zbQ_rIEHK^iJEf?XDFpF5bt2?=~OzWNbPH`WK^>;3W77cs3; z-h(LFPRvtC+K+yqV_?@#NJA%Rgw0M(w-Y53j}LYZb`JDnnwVHXQN%k@AQFBB!*nNd zu+oQ_&Wd=WXK~^yJxJL~Vj1~NtbM*yM*Po9rqRtLF<`lwW(A)UVO)`>@hs&sPN`ZT z&$=3n@xH?uKy{#>RwE2Xi(bsJv_CtYc>M|?Sbq|am~7~`r{wK%{r0rHJ&7qneEnYV z){~lhx3jACcztA_$ml&3f&{#Mwk| zFJ^hy$KZoh$M}rG+Kwp;Cf2I|Ra4=CWH+aUB~Ttutlf7-XSet&&uu6~y6;V_J#9TN zUDMl#FptG{Y5qEj$9Bc8?Cf*H*oEC-|?Sp9|w_BSBdTV-9qoS^5xtnee8DbmTOBuz6e2$3HBT32x zrhivr4@$iYA*DcfII*6q5*N7I0qx)p2mXVs7I`AK9gfP-9;rrgjxp8p#8kTkojV-i zl}LAC`Q~)J@(N2aNkDO{B78~}*;Aa*vpKNuVVORK2Ft|K0rkx0t4ro7EWISZB1#-h zSumidn9N|^EMfvV+1A-j!4Qd2!ozlTE4D3Xg(wR7bb#$EL z3&$*E4KDH3`$#dJIM6H0)x?3V=?;2u(EtY1Ql*`p&<^yWUm+oaz~@@04}@542@9@- zu|P<7Y*9S%!lLDhZUTDTEto|}a?!ja?SRjFh2glkvI-#D#>aX`=ERN$B1FuE2Bi+%{ft*Vob$-PS zYb4vvOw-mc>9O(>rA`=eKu{dlFI~~wshO~B2httAF7sGthjK8SW1W2{QVALByaMYC z^%!5j)QR;8G)Q~XM`XHE~GrAjMhYelhx z@qr;o;C*I^7~jvvpICbcQ@T!S?>J7aUmEP(Ds7XD5OjNomT$azg*(vMtB9oW#~^-I z6F|wEo&mw7Lrk*E;joQaPJHzV_4HJH^|#!o-|3TVAjbY~&J+@73D}OE4l+PKXb1NM4f1i+mKgjZc@vaaC}E4h#my-M!GDKxc-!jjzAd*NZwB z+8*1k(!{CTOHc=4TtP=DUF|N`jf}9nFpyJTmpEs^>`kPKotL~Y)n5>S`U0Ksa)p)! z)sZT3z;w(AH%I+*jqerA#IZ?iX^?O#0F>8-(L+-q1j6R?wQyG`} zz_7A}kV!UO21LTt5NAAfs9iC7Dldt3JNt4sTx!z#xX6#CVJj_kgg|u5ymjfc;yx8 zgT|@)*$%ZbM{davYIrLr56o^%bqp?N(QYx*loZLek}E9<7;;qG!~%fQAd>Y2Thkz6 z90i0Xv-(9*bFY4pV$4_V{G4)rPCGvbS&FYdhksjDx#CG0`xm#Od+L`zU5>N*ZdFWQ zbg8~bxguX_ewS49dsv#^!%7_Sg7&O5;aHRm_I8n6H55KkS_dVi%Ii7T>p9o!IcYo( z_n-n+S4HX6D3r3*Lb{YnH$(-KhUR1h^Zgujh}C+wSgJNSorWswWs&@a_c=pG9(ka**AxACTn$5z2>fFs6e$q6if=~L zy$9q9F=OS1Zf5Oetdsh=_Ne3!& zZ=IYML$US%lpyNq!LA-YZ6$0Y#0d$)4g!cDB0LPOTPL*RXdZlhl<+ACjdK9d;Q%^? z_%V7sPI!{=6an*AEbs`=6J8*EneZavt6f(zqN@m}32TIV2_GapK==^?cLckBobVqA z2>Ug}E3^AvrXWTbBqRw32)7B{Uz7M7T}UY0PzYVlDgg+<#vOpWNlq8(Uh3-SBc5Ic ztnq1$9&0f|f7ccCeGTDi!Vuva!fOfNMc7H$MYxvmI>PG-Zy>ypu$%BE!kYpH?a3D*<$ z6W&F5H(``;kZ_1FMmS73Lb!o&BjG6FJ%pPG#|W^saJo(qP7=lmHxpni<8)0BCJDC? z&JfNLZY8{z@IJyh!gmwiPdHDwjZh|32vtIjP$x79Q-lkIX~OMVny1B6Qi>{mNo-%I#D!aCvm2|qyiLBf564-tNd z@L|IJgpUw@nD9};j}m^2@DqfeBs@g;7~!V~A16Fa_-Vo?2tPx3gz&S3PZEBP@F?Nu z3BN%2MZ%{DpCSTxJ>w`gwGLvmGF7OKO_8e!mkk?Bm6qyHwgcN z@HpWK!fz7(CE-cJZxMc*@UI9@5q^j8uL=K#@HF8Ignvu;UBWYjFB1M8;olRUB|Jy? zJ;Lu3o+o^X@CSq!2!BZUkA(k3_%h*-2!BlY&x98V|Ap{h34cQP3gJ%)|Bdk93121r z8R5?fe?j;f;V%jQgYZ{`zb5<*;eQgoPWT4lZwcQd{4c^wguf&FJ>ee+FB85+_%`7c zLPrMxD?F%$2s9|@>L&CMdI>SYRze?P8=;?Y1z~`&oq%mWbmoKvVF%$#!c~OV5UwT+ z5w0P;mhfGKorGP4YYDF-Bnhu4yn*mW!fwKw2yZ65g|LT!aS44G;q8RIgcM;P;T;6* za-a_*WC=M!o=_kZ3B!aEVT5oU;hlu*3Hu4}BD|Y$fG|opNH|0oBOE3iA>2T?k#Lmo z9>Pt8V}#>`6NHn5al*}nQ-le^B;hpS7Qz|AS;DP^_Y&SmI7j$y!utv53AYi-gbJZb zs1fRf24RYDfiO+Dop1+XhA>N*Bg_*P2zL?|2~ENhVVQ6j;cmi3!V2LY!UqVK2;W2a zUc&bgRtal_b;9=(?j?MX@B@S&B-}^%5aEXiA12&S_z2;L2_GdqK=={Dj}m^2@F3yG z2|q#jNy0;fj}d-~@NvS!gr6pSg77nhM+iSl_$1-y2#*qep70BV4i5gEge?SWP%+N| z^bmRpF~U|tA7LAzpKt|XfUun~NQe^>gdKz{30DzbL%5nSM7W0VTEce`b`o|Gt|h#V zkR-gG@CL#g3A+hzBD|UK7Q!CFTM2I?yq&O@kRt3Oyn~P?WC&S8j*ur52t~p$p+p!V zTt|2(;d;V;LWh%NfdRGj>{8Tu<0fco*T_gad?8!a>3z!WiK&;RxXd!i|KZ zg!d3`A{-+eC!8RhB#aYoCY&Nn5GDzy3AYf=5Y7^ACA^pLKEgS|cN5-EI8V5ZP$pCe zRYHwWCo~9CgbRde!tI1R2s4CP!W?0qut2zzut;bUmI%v)y9jp^E)rG<_YginxJ39K z!uJxskFZKuBdim?pKveXgM=R-{2<{z!iNYyMEEe_e!@oxKTP;2;Q_*r5Pp>KV}u6@ zKTh}w!cP(&B7BVSQ-qHb9wz)W;S+?PAv{9(S;8j?KSy|!@biRUAp9cXQ-n_weu?l; z2%jPRGU2m?Um;v3{8Pf`2)|1BJmH@a{yE{-2#*ndo$woke?fSh@C4yE3ICGtB;mIR zzfJg8gr^9 zK=?z#e+Atb;36Ye@pl#;eQccBK#fU?+O1vc$x4m!nX;p5S$J`2LWrkLBf?? zFlmt2A-?V;Bni6-dk8d_St}8)CmbM*b$y##c6hpxaEvfcm?Wqj>J@J08qLSbHBKK? z&e*gcQq~YqAD|`jpsIpI&-ZPgDt^2 zl(^&~h8qhoi0BehVWYI`!Ul>IVUt+<)K&~8ibLFio|7@V+^=wGEkzf`4W$hI6KkJ| z!2}QPG-c(M08K#GcdL@PnoM9TcU>h#|_wpbUqztbl6H=GCFuwk5JkD@pCc6GiVkfhRQZ{U^kSZ{Ra#g4jn3jYTEXoy)3hJYN zJSo|dM8O(PCk5%*n#A5!d;ou_Ia`|%^v)CKwzA-e05^!NiwBf6(+-Maek=0eDK-&X7J{9)jH5e1>r6JjufjKLUHL%&6 z*!xy!(sHF7&76v~NuK;$2%3P8U_YYfEmtYfJuk z#Y@L~NwQahA$2ib%%qChQW;viQXMu7#XJnWU^QB;CtRTpeKVPFjLg||Lz!_Y6Wz6TrH$Gf4v$I~9C5A(qIe%4_T z7L~P11?GAc81Ch>4H%SHO4(F>WVl`(&gWo}QG_u7h3&o}(HSc#C^2w7Pdk!Y6_wI} zm3ul1Eov=WOu@Xplr87#>EX(-4t&2I;ppTh$+!RzBpdaYPZ zr-$=sDM%yjG+_!_%EKrW?I>L;6w~Dfgi2EIkR*MiUV$ZJt(F>T(2}NBf~9K))~}^X zxl(ArbTrLICIKE6ld|h67lZNZWq1D^3`G(5^^6*3H+htC1_hmgJk!{*Qb-q5jcPid zO{Xixdfk-TBPu&*B|F?0V|K7fqU@vB&q^achyHZ^tYq!1WUWy{Gb|3LU`LD$m5K#q zvQSCYhAa6(rdX|Jig}&VM-~57;lHZ+ubSdo6`rfYvs`S{%Y{s;P|Ty^@}*()F3_Ae z(zP_~i1PJZxuAJ|N=`0d+*cdYdW_;;7bXOl32*}!{{~cXmjY^@K9Zpq?73|YAutifw=a2Diq}<5XF|y^+ zSM;!FdR)c+l*Im&j-94Um>k5{W&2hhu*3GJsty5oIg^Q`_4T%2?Q-Ur0 z#pu5FxNIt}KgF~a8<|2GsYunb*mZ+h-3UyTE0CVjNCEcWxqM^9r0q$Swx=a+PwTWj zZPNC%NzT(I?@yCIjQs1cqlbJKiV*i)VK`MT!9H%JR>r7Ttm8z0Dfy=q|L2AO^P2zj zu1r4f$>j4=w$GD42GVMykRC}5HwtLZr3TIRGZ{3eOfj8Fmy5YlT9@t9();DGJC>KaJG?iJMO2YQl8Nr_tRd-{dAz?rWbbcv2*khPX50} z_$uKm1a3mDeS`4QmY!YQ><8eO630XKgD_j{Qi}wI=wMyH*j1c&B~ANFs&|CVI;5gs5sN_d3uDZ+z< z&k!WW`}y<`;j&KgV-mqYtQ&ur2bezq2LzR+(CW89zt+J(mvo?KdFl)&VXk#V1}@R> z%LGd6`U`{?3120At;d16&FTlQ?r;+3E+6Z*7zbvDNeFWy$vE){BZZ_4c(7jG-{EvR zlLNi_^1(OG)TheTmE^_QnWVYoM{ZPava=Ug1T=96z7~&>3IB}y zxfOZa`bu(XKDmS&ev>9`Z%f{Np+1+a&n?ehCz!m8S6DZb3-}BtE>Q6zaIW_=d;@N) z!^dxvZ7xNz0$|Xei{OwOCv*?aefLwAE zpGhmv;WDfwZzi9?g&G~sTlbwfJn7y8vsYh^vj499zVu$)^wPkEDfHnIwPghFcy`SN*Siw!^62owN%3qtZb!P z#9^o5a=n^Qwx=}1&kA z8K-mQdKw3<^1~zbVVudq3Z_)TT(MCsm$AG^MVUr#ri^xDRs)KGx?_%T33b z>VTrr>kr@Awg+2~79x#on%6YpPX79JNn9UTp7nQQlbr*?NWObk!A(&exBBBrwT-7K zSJQ5iGdc^qN58HG=j)P3aSb=VYlOaM0oQr0;CqyF_?~5SNBsY-v@PW*IxCeiB8W)e^`gixMnVy?_L)6~nY_mGQI5S<@n>0NzI$-|Y zn>>Wu!|}Pg{d4M?s=Z0K2b-L~qdvF4GCW)^R14@w(E72+yQ*Wda}eKdS^y{a##50E z=W{QOPf|!Yti2ciANgFT^T>mpxa?qT;>`!X^x*6N{7c6^{3~Dl{g3adeUc##U3ZQ* zS)J1@{2cCDJEyy6Om)>a)KhcyrF`0u?6Z2@g<1tXcK@mxMDggni_b|uh5w{2I>$MW zZ%2>K;Iq*9n5dLZy}qwDgCPrlUU`#~JRnd1Zvr=saRl0NR{iPcxb8SuHH6$rcO(9v zeX`RT>f)RFGbA=xw>Z4}hWFB(!qZXQQF8+C>eiH#Lij}2U%}#|14}*D#TNJX-I@f1x(y9InKO#Gc&pf~T$Qo{aasU(-n7G8YE&#q z$G)@cEND{rZ@Za$y!N(m-{)lD!<^Oddl+}i@YXAJ?-uX>;!S1rXtIl?d1aB<#!8WSw#7He6qOVtcd>@FcA0Epk*yHHH(tJ87uXhiE|%HOzw#TzXj*b z;CBqXrjXwmsm%r4Tt#V^!Zk8WpkWRB-IC6yQ6^bPK?eU*`Y8vujmqwSP>zdHdF~$bns_n<*DWi`=j-{Ct8nV%J9r2BsYm65l$^K509Q b>mUF8UsM8@JDq+cXPk}fAOHM+R|5YVNTLmq literal 0 HcmV?d00001 diff --git a/distribution/SharpDX.Direct3D11.xml b/distribution/SharpDX.Direct3D11.xml new file mode 100644 index 00000000..9a1d8347 --- /dev/null +++ b/distribution/SharpDX.Direct3D11.xml @@ -0,0 +1,22957 @@ + + + + SharpDX.Direct3D11 + + + +

+ The assembly provides managed Direct3D11 API. + + ff476080 + Direct3D11 + Direct3D11 + + + +

The blend-state interface holds a description for blending state that you can bind to the output-merger stage.

+
+ +

Blending applies a simple function to combine output values from a pixel shader with data in a render target. You have control over how the pixels are blended by using a predefined set of blending operations and preblending operations.

To create a blend-state object, call . To bind the blend-state object to the output-merger stage, call .

Windows?Phone?8: This API is supported.

+
+ + ff476349 + ID3D11BlendState + ID3D11BlendState +
+ + +

A device-child interface accesses data used by a device.

+
+ +

There are several types of device child interfaces, all of which inherit this interface. They include shaders, state objects, and input layouts.

Windows?Phone?8: This API is supported.

+
+ + ff476380 + ID3D11DeviceChild + ID3D11DeviceChild +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the device that created this interface.

+
+

Address of a reference to a device (see ).

+ +

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

Windows?Phone?8: This API is supported.

+
+ + ff476381 + void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice) + ID3D11DeviceChild::GetDevice +
+ + +

Get application-defined data from a device child.

+
+

Guid associated with the data.

+

A reference to a variable that on input contains the size, in bytes, of the buffer that pData points to, and on output contains the size, in bytes, of the amount of data that GetPrivateData retrieved.

+

A reference to a buffer that GetPrivateData fills with data from the device child if pDataSize points to a value that specifies a buffer large enough to hold the data.

+

This method returns one of the codes described in the topic Direct3D 11 Return Codes.

+ +

The data stored in the device child is set by calling .

Windows?Phone?8: This API is supported.

+
+ + ff476382 + HRESULT ID3D11DeviceChild::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) + ID3D11DeviceChild::GetPrivateData +
+ + +

Set application-defined data to a device child and associate that data with an application-defined guid.

+
+

Guid associated with the data.

+

Size of the data.

+

Pointer to the data to be stored with this device child. If pData is null, DataSize must also be 0, and any data previously associated with the specified guid will be destroyed.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

The data stored in the device child with this method can be retrieved with .

The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

 static const char c_szName[] = "My name";	
+            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
+            

Windows?Phone?8: This API is supported.

+
+ + ff476383 + HRESULT ID3D11DeviceChild::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) + ID3D11DeviceChild::SetPrivateData +
+ + +

Associate an -derived interface with this device child and associate that interface with an application-defined guid.

+
+

Guid associated with the interface.

+

Pointer to an -derived interface to be associated with the device child.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

When this method is called ::addref() will be called on the -derived interface, and when the device child is detroyed ::release() will be called on the -derived interface.

Windows?Phone?8: This API is supported.

+
+ + ff476384 + HRESULT ID3D11DeviceChild::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) + ID3D11DeviceChild::SetPrivateDataInterface +
+ + + Gets or sets the debug-name for this object. + + + The debug name. + + + + +

Get a reference to the device that created this interface.

+
+ +

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

Windows?Phone?8: This API is supported.

+
+ + ff476381 + GetDevice + GetDevice + void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice) +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the description for blending state that you used to create the blend-state object.

+
+

A reference to a structure that receives a description of the blend state.

+ +

You use the description for blending state in a call to the method to create the blend-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476350 + void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc) + ID3D11BlendState::GetDesc +
+ + +

Gets the description for blending state that you used to create the blend-state object.

+
+ +

You use the description for blending state in a call to the method to create the blend-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476350 + GetDesc + GetDesc + void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc) +
+ + +

Describes the blend state that you use in a call to to create a blend-state object.

+
+ +

Here are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

Note?? is identical to .

If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the display device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the display device performs the blend in linear space, which is ideal.

+
+ + ff476087 + D3D11_BLEND_DESC + D3D11_BLEND_DESC +
+ + + Returns default values for . + + + See MSDN documentation for default values. + + + + + Clones this instance. + + A copy of this instance. + + Because this structure contains an array, it is not possible to modify it without making an explicit clone method. + + + + + No documentation. + + + ff476087 + BOOL AlphaToCoverageEnable + BOOL AlphaToCoverageEnable + + + + No documentation. + + + ff476087 + BOOL IndependentBlendEnable + BOOL IndependentBlendEnable + + + + No documentation. + + + ff476087 + D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[8] + D3D11_RENDER_TARGET_BLEND_DESC RenderTarget + + + +

A buffer interface accesses a buffer resource, which is unstructured memory. Buffers typically store vertex or index data.

+
+ +

There are three types of buffers: vertex, index, or a shader-constant buffer. Create a buffer resource by calling .

A buffer must be bound to the pipeline before it can be accessed. Buffers can be bound to the input-assembler stage by calls to and , to the stream-output stage by a call to , and to a shader stage by calling the appropriate shader method (such as for example).

Buffers can be bound to multiple pipeline stages simultaneously for reading. A buffer can also be bound to a single pipeline stage for writing; however, the same buffer cannot be bound for reading and writing simultaneously.

Windows?Phone?8: This API is supported.

+
+ + ff476351 + ID3D11Buffer + ID3D11Buffer +
+ + +

A resource interface provides common actions on all resources.

+
+ +

You don't directly create a resource interface; instead, you create buffers and textures that inherit from a resource interface. For more info, see How to: Create a Vertex Buffer, How to: Create an Index Buffer, How to: Create a Constant Buffer, and How to: Create a Texture.

Windows?Phone?8: This API is supported.

+
+ + ff476584 + ID3D11Resource + ID3D11Resource +
+ + Constant MaximumMipLevels. + D3D11_REQ_MIP_LEVELS + + + Constant ResourceSizeInMegabytes. + D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM + + + Constant MaximumTexture1DArraySize. + D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION + + + Constant MaximumTexture2DArraySize. + D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION + + + Constant MaximumTexture1DSize. + D3D11_REQ_TEXTURE1D_U_DIMENSION + + + Constant MaximumTexture2DSize. + D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION + + + Constant MaximumTexture3DSize. + D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION + + + Constant MaximumTextureCubeSize. + D3D11_REQ_TEXTURECUBE_DIMENSION + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the type of the resource.

+
+

Pointer to the resource type (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476586 + void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension) + ID3D11Resource::GetType +
+ + +

Set the eviction priority of a resource.

+
+

Eviction priority for the resource, which is one of the following values:

+ +

Resource priorities determine which resource to evict from video memory when the system has run out of video memory. The resource will not be lost; it will be removed from video memory and placed into system memory, or possibly placed onto the hard drive. The resource will be loaded back into video memory when it is required.

A resource that is set to the maximum priority, , is only evicted if there is no other way of resolving the incoming memory request. The Windows Display Driver Model (WDDM) tries to split an incoming memory request to its minimum size and evict lower-priority resources before evicting a resource with maximum priority.

Changing the priorities of resources should be done carefully. The wrong eviction priorities could be a detriment to performance rather than an improvement.

Windows?Phone?8: This API is supported.

+
+ + ff476587 + void ID3D11Resource::SetEvictionPriority([In] unsigned int EvictionPriority) + ID3D11Resource::SetEvictionPriority +
+ + +

Get the eviction priority of a resource.

+
+

One of the following values, which specifies the eviction priority for the resource:

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476585 + unsigned int ID3D11Resource::GetEvictionPriority() + ID3D11Resource::GetEvictionPriority +
+ + + Gets a swap chain back buffer. + + The type of the buffer. + The swap chain to get the buffer from. + The index of the desired buffer. + The buffer interface, or null on failure. + + + + Loads a texture from an image file. + + The device used to load the texture. + Path to the file on disk. + The loaded texture object. + + + + Loads a texture from an image file. + + The device used to load the texture. + Path to the file on disk. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from an image file. + + The device used to load the texture. + Path to the file on disk. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from an image file. + + The device used to load the texture. + Path to the file on disk. + The loaded texture object. + + + + Load a texture from a texture. + + A reference to a valid + Pointer to the source texture. See . + Pointer to the destination texture. See . + Pointer to texture loading parameters. See . + The return value is one of the values listed in {{Direct3D 10 Return Codes}}. + HRESULT D3DX10LoadTextureFromTexture([None] ID3D10Resource* pSrcTexture,[None] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[None] ID3D10Resource* pDstTexture) + + + + Generates mipmap chain using a particular texture filter for this texture instance. + + A reference to an object. + The mipmap level whose data is used to generate the rest of the mipmap chain. + Flags controlling how each miplevel is filtered (or D3DX11_DEFAULT for ). See . + The return value is one of the values listed in Direct3D 11 Return Codes. + HRESULT D3DX11FilterTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter) + + + + Saves a texture to file. + + The device used to save the texture. + The texture to save. + The format the texture will be saved as. + Name of the destination output file where the texture will be saved. + A object describing the result of the operation. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Array of memory containing the image data to load. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Array of memory containing the image data to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Pointer to unmanaged memory containing the image data to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Pointer to unmanaged memory containing the image data to load. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Array of memory containing the image data to load. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Array of memory containing the image data to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Pointer to unmanaged memory containing the image data to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from an image in memory. + + The device used to load the texture. + Pointer to unmanaged memory containing the image data to load. + The loaded texture object. + + + + Loads a texture from a stream of data. + + The device used to load the texture. + A stream containing the image data to load. + Size of the image to load. + The loaded texture object. + + + + Loads a texture from a stream of data. + + The device used to load the texture. + A stream containing the image data to load. + Size of the image to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Loads a texture from a stream of data. + + The device used to load the texture. + A stream containing the image data to load. + Size of the image to load. + The loaded texture object. + + + + Loads a texture from a stream of data. + + The device used to load the texture. + A stream containing the image data to load. + Size of the image to load. + Specifies information used to load the texture. + The loaded texture object. + + + + Saves a texture to a stream. + + The device used to save the texture. + The texture to save. + The format the texture will be saved as. + Destination memory stream where the image will be saved. + A object describing the result of the operation. + + + + Calculates the sub resource index from a miplevel. + + A zero-based index for the mipmap level to address; 0 indicates the first, most detailed mipmap level. + The zero-based index for the array level to address; always use 0 for volume (3D) textures. + Number of mipmap levels in the resource. + + The index which equals MipSlice + (ArraySlice * MipLevels). + + D3D11CalcSubresource + + + + Calculates the resulting size at a single level for an original size. + + The mip level to get the size. + Size of the base. + + Size of the mipLevel + + + + + Calculates the sub resource index for a particular mipSlice and arraySlice. + + The mip slice. + The array slice. + The size of slice. This values is resource dependent. Texture1D -> mipSize of the Width. Texture2D -> mipSize of the Height. Texture3D -> mipsize of the Depth + The resulting miplevel calulated for this instance with this mipSlice and arraySlice. + + + +

Get the type of the resource.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476586 + GetType + GetType + void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension) +
+ + +

Get or sets the eviction priority of a resource.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476585 + GetEvictionPriority / SetEvictionPriority + GetEvictionPriority + unsigned int ID3D11Resource::GetEvictionPriority() +
+ + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The description of the buffer. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description of the buffer. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The data pointer. + The description of the buffer. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The size, in bytes, of the buffer. + The usage pattern for the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. + The usage pattern for the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. + The usage pattern for the buffer. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + An initialized buffer + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. If 0 is specified, sizeof(T) * data.Length is used. + The usage pattern for the buffer. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + An initialized buffer + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description. + + An initialized buffer + + + If the is at 0, sizeof(T) is used. + + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description. + + An initialized buffer + + + If the is at 0, sizeof(T) * data.Length is used. + + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the properties of a buffer resource.

+
+

Pointer to a resource description (see ) filled in by the method.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476352 + void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc) + ID3D11Buffer::GetDesc +
+ + +

Get the properties of a buffer resource.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476352 + GetDesc + GetDesc + void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc) +
+ + +

Describes a buffer resource.

+
+ +

This structure is used by to create buffer resources.

In addition to this structure, you can also use the CD3D11_BUFFER_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a buffer description.

If the bind flag is , you must set the ByteWidth value in multiples of 16, and less than or equal to D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

+
+ + ff476092 + D3D11_BUFFER_DESC + D3D11_BUFFER_DESC +
+ + + Initializes a new instance of the struct. + + The size in bytes. + The usage. + The bind flags. + The CPU access flags. + The option flags. + The structure byte stride. + + + +

Size of the buffer in bytes.

+
+ + ff476092 + unsigned int ByteWidth + unsigned int ByteWidth +
+ + +

Identify how the buffer is expected to be read from and written to. Frequency of update is a key factor. The most common value is typically ; see for all possible values.

+
+ + ff476092 + D3D11_USAGE Usage + D3D11_USAGE Usage +
+ + +

Identify how the buffer will be bound to the pipeline. Flags (see ) can be combined with a logical OR.

+
+ + ff476092 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
+ + +

CPU access flags (see ) or 0 if no CPU access is necessary. Flags can be combined with a logical OR.

+
+ + ff476092 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
+ + +

Miscellaneous flags (see ) or 0 if unused. Flags can be combined with a logical OR.

+
+ + ff476092 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
+ + +

The size of each element in the buffer structure (in bytes) when the buffer represents a structured buffer. For more info about structured buffers, see Structured Buffer.

The size value in StructureByteStride must match the size of the format that you use for views of the buffer. For example, if you use a shader resource view (SRV) to read a buffer in a pixel shader, the SRV format size must match the size value in StructureByteStride.

+
+ + ff476092 + unsigned int StructureByteStride + unsigned int StructureByteStride +
+ + +

This interface encapsulates an HLSL class.

+
+ +

This interface is created by calling . The interface is used when binding shader resources to the pipeline using APIs such as .

Windows?Phone?8: This API is supported.

+
+ + ff476353 + ID3D11ClassInstance + ID3D11ClassInstance +
+ + + Initializes a class-instance object that represents an HLSL class instance. + + + Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in. For more information about using the interface, see {{Dynamic Linking}}. + + An instance of . + The type name of a class to initialize. + Identifies the constant buffer that contains the class data. + The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset. + The texture slot for the first texture; there may be multiple textures following the offset. + The sampler slot for the first sampler; there may be multiple samplers following the offset. + Returns S_OK if successful; otherwise, returns one of the following {{Direct3D 11 Return Codes}}. + HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] int ConstantBufferOffset,[In] int ConstantVectorOffset,[In] int TextureOffset,[In] int SamplerOffset,[Out] ID3D11ClassInstance** ppInstance) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the object associated with the current HLSL class.

+
+ No documentation. + +

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

+
+ + ff476354 + void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage) + ID3D11ClassInstance::GetClassLinkage +
+ + +

Gets a description of the current HLSL class.

+
+

A reference to a structure that describes the current HLSL class.

+ +

For more information about using the interface, see Dynamic Linking.

An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.

  • A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name DefaultShader would work in any shader that contained a type DefaultShader even though several shaders could describe a different type.
  • A gotten instance maps directly to an instance name/index in a shader. A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.

An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.

Windows?Phone?8: This API is supported.

+
+ + ff476355 + void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc) + ID3D11ClassInstance::GetDesc +
+ + +

Gets the instance name of the current HLSL class.

+
+

The instance name of the current HLSL class.

+

The length of the pInstanceName parameter.

+ +

GetInstanceName will return a valid name only for instances acquired using .

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

+
+ + ff476356 + void ID3D11ClassInstance::GetInstanceName([Out, Buffer, Optional] char* pInstanceName,[InOut] SIZE_T* pBufferLength) + ID3D11ClassInstance::GetInstanceName +
+ + +

Gets the type of the current HLSL class.

+
+

Type of the current HLSL class.

+

The length of the pTypeName parameter.

+ +

GetTypeName will return a valid name only for instances acquired using .

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

+
+ + ff476357 + void ID3D11ClassInstance::GetTypeName([Out, Buffer, Optional] char* pTypeName,[InOut] SIZE_T* pBufferLength) + ID3D11ClassInstance::GetTypeName +
+ + + Gets the instance name of the current HLSL class. + + + GetInstanceName will return a valid name only for instances acquired using .For more information about using the interface, see {{Dynamic Linking}}. + + The instance name of the current HLSL class. + void GetInstanceName([Out, Buffer, Optional] LPSTR pInstanceName,[InOut] SIZE_T* pBufferLength) + + + + Gets the type of the current HLSL class. + + + GetTypeName will return a valid name only for instances acquired using .For more information about using the interface, see {{Dynamic Linking}}. + + Type of the current HLSL class. + void GetTypeName([Out, Buffer, Optional] LPSTR pTypeName,[InOut] SIZE_T* pBufferLength) + + + +

Gets the object associated with the current HLSL class.

+
+ +

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

+
+ + ff476354 + GetClassLinkage + GetClassLinkage + void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage) +
+ + +

Gets a description of the current HLSL class.

+
+ +

For more information about using the interface, see Dynamic Linking.

An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.

  • A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name DefaultShader would work in any shader that contained a type DefaultShader even though several shaders could describe a different type.
  • A gotten instance maps directly to an instance name/index in a shader. A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.

An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.

Windows?Phone?8: This API is supported.

+
+ + ff476355 + GetDesc + GetDesc + void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc) +
+ + +

This interface encapsulates an HLSL dynamic linkage.

+
+ +

A class linkage object can hold up to 64K gotten instances. A gotten instance is a handle that references a variable name in any shader that is created with that linkage object. When you create a shader with a class linkage object, the runtime gathers these instances and stores them in the class linkage object. For more information about how a class linkage object is used, see Storing Variables and Types for Shaders to Share.

An object is created using the method.

Windows?Phone?8: This API is supported.

+
+ + ff476358 + ID3D11ClassLinkage + ID3D11ClassLinkage +
+ + + Create a new instance of . + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the class-instance object that represents the specified HLSL class.

+
+

The name of a class for which to get the class instance.

+

The index of the class instance.

+

The address of a reference to an interface to initialize.

+ +

For more information about using the interface, see Dynamic Linking.

A class instance must have at least 1 data member in order to be available for the runtime to use with . Any instance with no members will be optimized out of a compiled shader blob as a zero-sized object. If you have a class with no data members, use instead.

Windows?Phone?8: This API is supported.

+
+ + ff476360 + HRESULT ID3D11ClassLinkage::GetClassInstance([In] const char* pClassInstanceName,[In] unsigned int InstanceIndex,[Out] ID3D11ClassInstance** ppInstance) + ID3D11ClassLinkage::GetClassInstance +
+ + +

Initializes a class-instance object that represents an HLSL class instance.

+
+

The type name of a class to initialize.

+

Identifies the constant buffer that contains the class data.

+

The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset.

+

The texture slot for the first texture; there may be multiple textures following the offset.

+

The sampler slot for the first sampler; there may be multiple samplers following the offset.

+

The address of a reference to an interface to initialize.

+

Returns if successful; otherwise, returns one of the following Direct3D 11 Return Codes.

+ +

Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in.

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

+
+ + ff476359 + HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] unsigned int ConstantBufferOffset,[In] unsigned int ConstantVectorOffset,[In] unsigned int TextureOffset,[In] unsigned int SamplerOffset,[Out, Fast] ID3D11ClassInstance** ppInstance) + ID3D11ClassLinkage::CreateClassInstance +
+ + +

A compute-shader interface manages an executable program (a compute shader) that controls the compute-shader stage.

+
+ +

The compute-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a compute-shader interface, call . Before using a compute shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

+
+ + ff476363 + ID3D11ComputeShader + ID3D11ComputeShader +
+ + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Describes depth-stencil state.

+
+ +

Pass a reference to to the method to create the depth-stencil state object.

Depth-stencil state controls how depth-stencil testing is performed by the output-merger stage.

The following table shows the default values of depth-stencil states.

StateDefault Value
DepthEnableTRUE
DepthWriteMask
DepthFunc
StencilEnable
StencilReadMaskD3D11_DEFAULT_STENCIL_READ_MASK
StencilWriteMaskD3D11_DEFAULT_STENCIL_WRITE_MASK

FrontFace.StencilFunc

and

BackFace.StencilFunc

FrontFace.StencilDepthFailOp

and

BackFace.StencilDepthFailOp

FrontFace.StencilPassOp

and

BackFace.StencilPassOp

FrontFace.StencilFailOp

and

BackFace.StencilFailOp

?

The formats that support stenciling are and .

+
+ + ff476110 + D3D11_DEPTH_STENCIL_DESC + D3D11_DEPTH_STENCIL_DESC +
+ + + Returns default values for . + + + See MSDN documentation for default values. + + + + +

Enable depth testing.

+
+ + ff476110 + BOOL DepthEnable + BOOL DepthEnable +
+ + +

Identify a portion of the depth-stencil buffer that can be modified by depth data (see ).

+
+ + ff476110 + D3D11_DEPTH_WRITE_MASK DepthWriteMask + D3D11_DEPTH_WRITE_MASK DepthWriteMask +
+ + +

A function that compares depth data against existing depth data. The function options are listed in .

+
+ + ff476110 + D3D11_COMPARISON_FUNC DepthFunc + D3D11_COMPARISON_FUNC DepthFunc +
+ + +

Enable stencil testing.

+
+ + ff476110 + BOOL StencilEnable + BOOL StencilEnable +
+ + +

Identify a portion of the depth-stencil buffer for reading stencil data.

+
+ + ff476110 + unsigned char StencilReadMask + unsigned char StencilReadMask +
+ + +

Identify a portion of the depth-stencil buffer for writing stencil data.

+
+ + ff476110 + unsigned char StencilWriteMask + unsigned char StencilWriteMask +
+ + +

Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing towards the camera (see ).

+
+ + ff476110 + D3D11_DEPTH_STENCILOP_DESC FrontFace + D3D11_DEPTH_STENCILOP_DESC FrontFace +
+ + +

Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from the camera (see ).

+
+ + ff476110 + D3D11_DEPTH_STENCILOP_DESC BackFace + D3D11_DEPTH_STENCILOP_DESC BackFace +
+ + + The namespace provides a managed Direct3D11 API. + + ff476080 + Direct3D11 + Direct3D11 + + + +

Describes rasterizer state.

+
+ +

Rasterizer state defines the behavior of the rasterizer stage. To create a rasterizer-state object, call . To set rasterizer state, call .

If you do not specify some rasterizer state, the Direct3D runtime uses the following default values for rasterizer state.

StateDefault Value
FillModeSolid
CullModeBack
FrontCounterClockwise
DepthBias0
SlopeScaledDepthBias0.0f
DepthBiasClamp0.0f
DepthClipEnableTRUE
ScissorEnable
MultisampleEnable
AntialiasedLineEnable

?

Note??For feature levels 9.1, 9.2, 9.3, and 10.0, if you set MultisampleEnable to , the runtime renders all points, lines, and triangles without anti-aliasing even for render targets with a sample count greater than 1. For feature levels 10.1 and higher, the setting of MultisampleEnable has no effect on points and triangles with regard to MSAA and impacts only the selection of the line-rendering algorithm as shown in this table:

Line-rendering algorithmMultisampleEnableAntialiasedLineEnable
Aliased
Alpha antialiasedTRUE
QuadrilateralTRUE
QuadrilateralTRUETRUE

?

The settings of the MultisampleEnable and AntialiasedLineEnable members apply only to multisample antialiasing (MSAA) render targets (that is, render targets with sample counts greater than 1). Because of the differences in feature-level behavior and as long as you aren?t performing any line drawing or don?t mind that lines render as quadrilaterals, we recommend that you always set MultisampleEnable to TRUE whenever you render on MSAA render targets.

+
+ + ff476198 + D3D11_RASTERIZER_DESC + D3D11_RASTERIZER_DESC +
+ + + Returns default values for . + + + See MSDN documentation for default values. + + + + +

Determines the fill mode to use when rendering (see ).

+
+ + ff476198 + D3D11_FILL_MODE FillMode + D3D11_FILL_MODE FillMode +
+ + +

Indicates triangles facing the specified direction are not drawn (see ).

+
+ + ff476198 + D3D11_CULL_MODE CullMode + D3D11_CULL_MODE CullMode +
+ + +

Determines if a triangle is front- or back-facing. If this parameter is TRUE, a triangle will be considered front-facing if its vertices are counter-clockwise on the render target and considered back-facing if they are clockwise. If this parameter is , the opposite is true.

+
+ + ff476198 + BOOL FrontCounterClockwise + BOOL FrontCounterClockwise +
+ + +

Depth value added to a given pixel. For info about depth bias, see Depth Bias.

+
+ + ff476198 + int DepthBias + int DepthBias +
+ + +

Maximum depth bias of a pixel. For info about depth bias, see Depth Bias.

+
+ + ff476198 + float DepthBiasClamp + float DepthBiasClamp +
+ + +

Scalar on a given pixel's slope. For info about depth bias, see Depth Bias.

+
+ + ff476198 + float SlopeScaledDepthBias + float SlopeScaledDepthBias +
+ + +

Enable clipping based on distance.

The hardware always performs x and y clipping of rasterized coordinates. When DepthClipEnable is set to the default?TRUE, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm). +

0 < w + -w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + -w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + 0 <= z <= w +

When you set DepthClipEnable to , the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the "0 < w" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane. +

+
+ + ff476198 + BOOL DepthClipEnable + BOOL DepthClipEnable +
+ + +

Enable scissor-rectangle culling. All pixels outside an active scissor rectangle are culled.

+
+ + ff476198 + BOOL ScissorEnable + BOOL ScissorEnable +
+ + +

Specifies whether to use the quadrilateral or alpha line anti-aliasing algorithm on multisample antialiasing (MSAA) render targets. Set to TRUE to use the quadrilateral line anti-aliasing algorithm and to to use the alpha line anti-aliasing algorithm. For more info about this member, see Remarks.

+
+ + ff476198 + BOOL MultisampleEnable + BOOL MultisampleEnable +
+ + +

Specifies whether to enable line antialiasing; only applies if doing line drawing and MultisampleEnable is . For more info about this member, see Remarks.

+
+ + ff476198 + BOOL AntialiasedLineEnable + BOOL AntialiasedLineEnable +
+ + +

This interface encapsulates methods for measuring GPU performance.

+
+ +

A counter can be created with .

This is a derived class of .

Counter data is gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of counter. The call to End causes the data returned by GetData to be accurate up until the last call to End.

Counters are best suited for profiling.

For a list of the types of performance counters, see .

Windows?Phone?8: This API is supported.

+
+ + ff476364 + ID3D11Counter + ID3D11Counter +
+ + +

This interface encapsulates methods for retrieving data from the GPU asynchronously.

+
+ +

There are three types of asynchronous interfaces, all of which inherit this interface:

  • - Queries information from the GPU.
  • - Determines whether a piece of geometry should be processed or not depending on the results of a previous draw call.
  • - Measures GPU performance.

Windows?Phone?8: This API is supported.

+
+ + ff476347 + ID3D11Asynchronous + ID3D11Asynchronous +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the size of the data (in bytes) that is output when calling .

+
+

Size of the data (in bytes) that is output when calling GetData.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476348 + unsigned int ID3D11Asynchronous::GetDataSize() + ID3D11Asynchronous::GetDataSize +
+ + +

Get the size of the data (in bytes) that is output when calling .

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476348 + GetDataSize + GetDataSize + unsigned int ID3D11Asynchronous::GetDataSize() +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The counter description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a counter description.

+
+

Pointer to a counter description (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476365 + void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc) + ID3D11Counter::GetDesc +
+ + +

Get a counter description.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476365 + GetDesc + GetDesc + void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc) +
+ + + Counter metadata that contains the type, name, units of measure, and a description of an existing counter. + + + + + Gets the data type of a counter (see ). + + The type. + + + + Gets the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters. + + The hardware counter count. + + + + Gets a brief name for the counter. + + The name. + + + + Gets the units a counter measures. + + The units. + + + + Gets a description of the counter. + + The description. + + + +

A debug interface controls debug settings, validates pipeline state and can only be used if the debug layer is turned on.

+
+ +

This interface is obtained by querying it from the using IUnknown::QueryInterface.

For more information about the debug layer, see Debug Layer.

Windows?Phone?8: This API is supported.

+
+ + ff476366 + ID3D11Debug + ID3D11Debug +
+ + + Initializes a new instance of the class. + + The device. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set a bit field of flags that will turn debug features on and off.

+
+

A combination of feature-mask flags that are combined by using a bitwise OR operation. If a flag is present, that feature will be set to on, otherwise the feature will be set to off. For descriptions of the feature-mask flags, see Remarks.

+

This method returns one of the Direct3D 11 Return Codes.

+ +

Note??If you call this API in a Session 0 process, it returns .

Setting one of the following feature-mask flags will cause a rendering-operation method (listed below) to do some extra task when called.

(0x2)Application will wait for the GPU to finish processing the rendering operation before continuing.
(0x1)Runtime will additionally call .
(0x4)Runtime will call . Presentation of render buffers will occur according to the settings established by prior calls to and .

?

These feature-mask flags apply to the following rendering-operation methods:

By setting one of the following feature-mask flags, you can control the behavior of the IDXGIDevice2::OfferResources and IDXGIDevice2::ReclaimResources methods to aid in testing and debugging.

Note??These flags are supported by the Direct3D 11.1 runtime, which is available starting with Windows?8.

D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE (0x8)When you call IDXGIDevice2::OfferResources to offer resources while this flag is enabled, their content is always discarded. Use this flag to test code paths that regenerate resource content on reclaim. You cannot use this flag in combination with D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE.
D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE (0x10)When you call IDXGIDevice2::OfferResources to offer resources while this flag is enabled, their content is never discarded. Use this flag to test code paths that do not need to regenerate resource content on reclaim. You cannot use this flag in combination with D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE.

?

The behavior of the IDXGIDevice2::OfferResources and IDXGIDevice2::ReclaimResources methods depends on system-wide memory pressure. Therefore, the scenario where content is lost and must be regenerated is uncommon for most applications. The preceding new options in the Direct3D debug layer let you simulate that scenario consistently and test code paths.

The following flag is supported by the Direct3D 11.1 runtime.

D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS (0x40)Disables the following default debugging behavior.

?

When the debug layer is enabled, it performs certain actions to reveal application problems. By setting the D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS feature-mask flag, you can enable the debug layer without getting the following default debugging behavior:

  • If an application calls ID3D11DeviceContext1::DiscardView, the runtime fills in the resource with a random color.
  • If an application calls IDXGISwapChain1::Present1 with partial presentation parameters, the runtime ignores the partial presentation information.

The following flag is supported by the Direct3D 11.2 runtime.

D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION (0x80)Disables the following default debugging behavior.

?

By default (that is, without D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION set), the debug layer validates the proper usage of all tile mappings for tiled resources for bound resources for every operation performed on the device context (for example, draw, copy, and so on). Depending on the size of the tiled resources used (if any), this validation can be processor intensive and slow. Apps might want to initially run with tiled resource tile mapping validation on; then, when they determine that the calling pattern is safe, they can disable the validation by setting D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION.

If D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION is set when a tiled resource is created, the debug layer never performs the tracking of tile mapping for that resource for its entire lifetime. Alternatively, if D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION is set for any given device context method call (like draw or copy calls) involving tiled resources, the debug layer skips all tile mapping validation for the call.

Windows?Phone?8: This API is supported.

+
+ + ff476371 + HRESULT ID3D11Debug::SetFeatureMask([In] unsigned int Mask) + ID3D11Debug::SetFeatureMask +
+ + +

Get a bitfield of flags that indicates which debug features are on or off.

+
+

Mask of feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See for a list of possible feature-mask flags.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476367 + unsigned int ID3D11Debug::GetFeatureMask() + ID3D11Debug::GetFeatureMask +
+ + +

Set the number of milliseconds to sleep after is called.

+
+ No documentation. +

This method returns one of the following Direct3D 11 Return Codes.

+ +

Note??If you call this API in a Session 0 process, it returns .

The application will only sleep if is a set in the feature mask. If that flag is not set the number of milliseconds is set but ignored and the application does not sleep. 10ms is used as a default value if this method is never called.

Windows?Phone?8: This API is supported.

+
+ + ff476372 + HRESULT ID3D11Debug::SetPresentPerRenderOpDelay([In] unsigned int Milliseconds) + ID3D11Debug::SetPresentPerRenderOpDelay +
+ + +

Get the number of milliseconds to sleep after is called.

+
+

Number of milliseconds to sleep after Present is called.

+ +

Value is set with .

Windows?Phone?8: This API is supported.

+
+ + ff476368 + unsigned int ID3D11Debug::GetPresentPerRenderOpDelay() + ID3D11Debug::GetPresentPerRenderOpDelay +
+ + +

Sets a swap chain that the runtime will use for automatically calling .

+
+ No documentation. +

This method returns one of the following Direct3D 11 Return Codes.

+ +

Note??If you call this API in a Session 0 process, it returns .

The swap chain set by this method will only be used if is set in the feature mask.

Windows?Phone?8: This API is supported.

+
+ + ff476373 + HRESULT ID3D11Debug::SetSwapChain([In, Optional] IDXGISwapChain* pSwapChain) + ID3D11Debug::SetSwapChain +
+ + +

Get the swap chain that the runtime will use for automatically calling .

+
+ No documentation. +

This method returns one of the following Direct3D 11 Return Codes.

+ +

The swap chain retrieved by this method will only be used if is set in the feature mask.

Windows?Phone?8: This API is supported.

+
+ + ff476369 + HRESULT ID3D11Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) + ID3D11Debug::GetSwapChain +
+ + +

Check to see if the draw pipeline state is valid.

+
+

A reference to the , that represents a device context.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Use validate prior to calling a draw method (for example, ); validation requires the debug layer.

Windows?Phone?8: This API is supported.

+
+ + ff476374 + HRESULT ID3D11Debug::ValidateContext([In] ID3D11DeviceContext* pContext) + ID3D11Debug::ValidateContext +
+ + +

Report information about a device object's lifetime.

+
+

A value from the enumeration.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

ReportLiveDeviceObjects uses the value in Flags to determine the amount of information to report about a device object's lifetime.

Windows?Phone?8: This API is supported.

+
+ + ff476370 + HRESULT ID3D11Debug::ReportLiveDeviceObjects([In] D3D11_RLDO_FLAGS Flags) + ID3D11Debug::ReportLiveDeviceObjects +
+ + +

Verifies whether the dispatch pipeline state is valid.

+
+

A reference to the that represents a device context.

+

This method returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

Use this method before you call a dispatch method (for example, ). Validation requires the debug layer.

Windows?Phone?8: This API is supported.

+
+ + ff728740 + HRESULT ID3D11Debug::ValidateContextForDispatch([In] ID3D11DeviceContext* pContext) + ID3D11Debug::ValidateContextForDispatch +
+ + + Gets or sets the feature flags that indicates which debug features are on or off. + + The feature flags. + + + +

Get or sets the number of milliseconds to sleep after is called.

+
+ +

Value is set with .

Windows?Phone?8: This API is supported.

+
+ + ff476368 + GetPresentPerRenderOpDelay / SetPresentPerRenderOpDelay + GetPresentPerRenderOpDelay + unsigned int ID3D11Debug::GetPresentPerRenderOpDelay() +
+ + +

Get or sets the swap chain that the runtime will use for automatically calling .

+
+ +

The swap chain retrieved by this method will only be used if is set in the feature mask.

Windows?Phone?8: This API is supported.

+
+ + ff476369 + GetSwapChain / SetSwapChain + GetSwapChain + HRESULT ID3D11Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) +
+ + +

The depth-stencil-state interface holds a description for depth-stencil state that you can bind to the output-merger stage.

+
+ +

To create a depth-stencil-state object, call . To bind the depth-stencil-state object to the output-merger stage, call .

Windows?Phone?8: This API is supported.

+
+ + ff476375 + ID3D11DepthStencilState + ID3D11DepthStencilState +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + ff476506 + HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState) + ID3D11Device::CreateDepthStencilState + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the description for depth-stencil state that you used to create the depth-stencil-state object.

+
+

A reference to a structure that receives a description of the depth-stencil state.

+ +

You use the description for depth-stencil state in a call to the method to create the depth-stencil-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476376 + void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc) + ID3D11DepthStencilState::GetDesc +
+ + +

Gets the description for depth-stencil state that you used to create the depth-stencil-state object.

+
+ +

You use the description for depth-stencil state in a call to the method to create the depth-stencil-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476376 + GetDesc + GetDesc + void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc) +
+ + +

A depth-stencil-view interface accesses a texture resource during depth-stencil testing.

+
+ +

To create a depth-stencil view, call .

To bind a depth-stencil view to the pipeline, call .

Windows?Phone?8: This API is supported.

+
+ + ff476377 + ID3D11DepthStencilView + ID3D11DepthStencilView +
+ + +

A view interface specifies the parts of a resource the pipeline can access during rendering.

+
+ +

A view interface is the base interface for all views. There are four types of views; a depth-stencil view, a render-target view, a shader-resource view, and an unordered-access view.

  • To create a render-target view, call .
  • To create a depth-stencil view, call .
  • To create a shader-resource view, call .
  • To create an unordered-access view, call .

All resources must be bound to the pipeline before they can be accessed.

  • To bind a render-target view or a depth-stencil view, call .
  • To bind a shader resource, call .

Windows?Phone?8: This API is supported.

+
+ + ff476642 + ID3D11View + ID3D11View +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the resource that is accessed through this view.

+
+

Address of a reference to the resource that is accessed through this view. (See .)

+ +

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

Windows?Phone?8: This API is supported.

+
+ + ff476643 + void ID3D11View::GetResource([Out] void** ppResource) + ID3D11View::GetResource +
+ + +

Get the resource that is accessed through this view.

+
+ +

This function increments the reference count of the resource by one, so it is necessary to call Dispose on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

+
+ ff476643 + GetResource + GetResource + void ID3D11View::GetResource([Out] ID3D11Resource** ppResource) +
+ + +

Get the resource that is accessed through this view.

+
+ +

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

+
+ ff476643 + GetResource + GetResource + void ID3D11View::GetResource([Out] ID3D11Resource** ppResource) +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. + ID3D11Device::CreateDepthStencilView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. + A structure describing the to be created. + ID3D11Device::CreateDepthStencilView + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the depth-stencil view.

+
+

Pointer to a depth-stencil-view description (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476378 + void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc) + ID3D11DepthStencilView::GetDesc +
+ + +

Get the depth-stencil view.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476378 + GetDesc + GetDesc + void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc) +
+ + +

The device interface represents a virtual adapter; it is used to create resources.

+
+ +

A device is created using .

Windows?Phone?8: This API is supported.

+
+ + ff476379 + ID3D11Device + ID3D11Device +
+ + Constant MultisampleCountMaximum. + D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT + + + + Initializes a new instance of the class. + + + Type of the driver. + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Initializes a new instance of the class. + + + The adapter. + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + Type of the driver. + The flags. + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + + + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + + + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Initializes a new instance of the class along with a new used for rendering. + + The type of device to create. + A list of runtime layers to enable. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + Initializes a new instance of the class along with a new used for rendering. + + The video adapter on which the device should be created. + A list of runtime layers to enable. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + Initializes a new instance of the class along with a new used for rendering. + + The type of device to create. + A list of runtime layers to enable. + A list of feature levels which determine the order of feature levels to attempt to create. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + Initializes a new instance of the class along with a new used for rendering. + + The video adapter on which the device should be created. + A list of runtime layers to enable. + A list of feature levels which determine the order of feature levels to attempt to create. + Details used to create the swap chain. + When the method completes, contains the created device instance. + When the method completes, contains the created swap chain instance. + A object describing the result of the operation. + + + + This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type. + + + + + Get the type, name, units of measure, and a description of an existing counter. + + The counter description. + Description of the counter + + + + Give a device access to a shared resource created on a different Direct3d device. + + The type of the resource we are gaining access to. + A resource handle. See remarks. + + This method returns a reference to the resource we are gaining access to. + + + To share a resource between two Direct3D 10 devices the resource must have been created with the flag, if it was created using the ID3D10Device interface. If it was created using the IDXGIDevice interface, then the resource is always shared. The REFIID, or GUID, of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof(ID3D10Buffer) will get the GUID of the interface to a buffer resource. When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling {{GetSharedHandle}}. + IDXGIResource* pOtherResource(NULL); + hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource ); + HANDLE sharedHandle; + pOtherResource->GetSharedHandle(&sharedHandle); + The only resources that can be shared are 2D non-mipmapped textures. To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using the pSharedHandle argument of {{CreateTexture}}. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument. The following code illustrates the method calls involved. + sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9 + pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); + ... + pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10)); + tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10)); + tempResource10->Release(); + // now use pTex2D_10 with pDevice10 + Textures being shared from D3D9 to D3D10 have the following restrictions. Textures must be 2D Only 1 mip level is allowed Texture must have default usage Texture must be write only MSAA textures are not allowed Bind flags must have SHADER_RESOURCE and RENDER_TARGET set Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed If a shared texture is updated on one device must be called on that device. + + HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] GUID* ReturnedInterface,[Out, Optional] void** ppResource) + + + + Check if this device is supporting compute shaders for the specified format. + + The format for which to check support. + Flags indicating usage contexts in which the specified format is supported. + + + + Check if this device is supporting a feature. + + The feature to check. + + Returns true if this device supports this feature, otherwise false. + + + + + Check if this device is supporting threading. + + Support concurrent resources. + Support command lists. + + A object describing the result of the operation. + + + + + Check if a feature level is supported by a primary adapter. + + The feature level. + true if the primary adapter is supporting this feature level; otherwise, false. + + + + Check if a feature level is supported by a particular adapter. + + The adapter. + The feature level. + true if the specified adapter is supporting this feature level; otherwise, false. + + + + Gets the highest supported hardware feature level of the primary adapter. + + The highest supported hardware feature level. + + + + Gets the highest supported hardware feature level of the primary adapter. + + The adapter. + + The highest supported hardware feature level. + + + + + Internal CreateDevice + + + + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Creates a buffer (vertex buffer, index buffer, or shader-constant buffer).

+
+

A reference to a structure that describes the buffer.

+

A reference to a structure that describes the initialization data; use null to allocate space only (with the exception that it cannot be null if the usage flag is ).

If you don't pass anything to pInitialData, the initial content of the memory for the buffer is undefined. In this case, you need to write the buffer content some other way before the resource is read.

+

Address of a reference to the interface for the buffer object created. Set this parameter to null to validate the other input parameters (S_FALSE indicates a pass).

+

This method returns E_OUTOFMEMORY if there is insufficient memory to create the buffer. See Direct3D 11 Return Codes for other possible return values.

+ +

For example code, see How to: Create a Vertex Buffer, How to: Create an Index Buffer or How to: Create a Constant Buffer.

For a constant buffer (BindFlags of set to ), you must set the ByteWidth value of in multiples of 16, and less than or equal to D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

The Direct3D 11.1 runtime, which is available on Windows?8 and later operating systems, provides the following new functionality for CreateBuffer.

You can create a constant buffer that is larger than the maximum constant buffer size that a shader can access (4096 32-bit*4-component constants ? 64KB). When you bind the constant buffer to the pipeline (for example, via PSSetConstantBuffers or PSSetConstantBuffers1), you can define a range of the buffer that the shader can access that fits within the 4096 constant limit.

The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher. On existing drivers that are implemented to feature level 10 and higher, a call to CreateBuffer to request a constant buffer that is larger than 4096 fails.

Windows?Phone?8: This API is supported.

+
+ + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer +
+ + +

Create an array of 2D textures.

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

+ +

CreateTexture2D creates a 2D texture resource, which can contain a number of 2D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or it may use one of the D3DX texture functions such as .

For a 32 x 32 texture with a full mipmap chain, the pInitialData array has the following 6 elements: +

  • pInitialData[0] = 32x32
  • pInitialData[1] = 16x16
  • pInitialData[2] = 8x8
  • pInitialData[3] = 4x4 +
  • pInitialData[4] = 2x2 +
  • pInitialData[5] = 1x1 +

Windows?Phone?8: This API is supported.

+
+ + ff476521 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D +
+ + +

Create an array of 2D textures.

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

+ +

CreateTexture2D creates a 2D texture resource, which can contain a number of 2D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or it may use one of the D3DX texture functions such as .

For a 32 x 32 texture with a full mipmap chain, the pInitialData array has the following 6 elements: +

  • pInitialData[0] = 32x32
  • pInitialData[1] = 16x16
  • pInitialData[2] = 8x8
  • pInitialData[3] = 4x4 +
  • pInitialData[4] = 2x2 +
  • pInitialData[5] = 1x1 +

Windows?Phone?8: This API is supported.

+
+ + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D +
+ + +

Create a single 3D texture.

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

+ +

CreateTexture3D creates a 3D texture resource, which can contain a number of 3D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or they can use one of the D3DX texture functions such as .

Each element of pInitialData provides all of the slices that are defined for a given miplevel. For example, for a 32 x 32 x 4 volume texture with a full mipmap chain, the array has the following 6 elements:

  • pInitialData[0] = 32x32 with 4 slices
  • pInitialData[1] = 16x16 with 2 slices
  • pInitialData[2] = 8x8 with 1 slice
  • pInitialData[3] = 4x4 + with 1 slice
  • pInitialData[4] = 2x2 + with 1 slice
  • pInitialData[5] = 1x1 + with 1 slice

Windows?Phone?8: This API is supported.

+
+ + ff476522 + HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D) + ID3D11Device::CreateTexture3D +
+ + +

Create a shader-resource view for accessing data in a resource.

+
+

Pointer to the resource that will serve as input to a shader. This resource must have been created with the flag.

+

Pointer to a shader-resource view description (see ). Set this parameter to null to create a view that accesses the entire resource (using the format the resource was created with).

+

Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

A resource is made up of one or more subresources; a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: , and .

Because a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.

Note??To successfully create a shader-resource view from a typeless buffer (for example, ), you must set the flag when you create the buffer.

The Direct3D 11.1 runtime, which is available starting with Windows?8, allows you to use CreateShaderResourceView for the following new purpose.

You can create shader-resource views of video resources so that Direct3D shaders can process those shader-resource views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created shader-resource view must match the type of video resource, D3D11_SRV_DIMENSION_TEXTURE2D for Texture2D and D3D11_SRV_DIMENSION_TEXTURE2DARRAY for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

Windows?Phone?8: This API is supported.

+
+ + ff476519 + HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) + ID3D11Device::CreateShaderResourceView +
+ + +

Creates a view for accessing an unordered access resource.

+
+ No documentation. + No documentation. + No documentation. +

This method returns one of the Direct3D 11 Return Codes.

+ +

The Direct3D 11.1 runtime, which is available starting with Windows?8, allows you to use CreateUnorderedAccessView for the following new purpose.

You can create unordered-access views of video resources so that Direct3D shaders can process those unordered-access views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created unordered-access view must match the type of video resource, for Texture2D and for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

Windows?Phone?8: This API is supported.

+
+ + ff476523 + HRESULT ID3D11Device::CreateUnorderedAccessView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc,[Out, Fast] ID3D11UnorderedAccessView** ppUAView) + ID3D11Device::CreateUnorderedAccessView +
+ + +

Creates a render-target view for accessing resource data.

+
+

Pointer to a that represents a render target. This resource must have been created with the flag.

+

Pointer to a that represents a render-target view description. Set this parameter to null to create a view that accesses all of the subresources in mipmap level 0.

+

Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

+

This method returns one of the Direct3D 11 Return Codes.

+ +

A render-target view can be bound to the output-merger stage by calling .

The Direct3D 11.1 runtime, which is available starting with Windows?8, allows you to use CreateRenderTargetView for the following new purpose.

You can create render-target views of video resources so that Direct3D shaders can process those render-target views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created render-target view must match the type of video resource, for Texture2D and for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

Windows?Phone?8: This API is supported.

+
+ + ff476517 + HRESULT ID3D11Device::CreateRenderTargetView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_RENDER_TARGET_VIEW_DESC* pDesc,[Out, Fast] ID3D11RenderTargetView** ppRTView) + ID3D11Device::CreateRenderTargetView +
+ + +

Create a depth-stencil view for accessing resource data.

+
+

Pointer to the resource that will serve as the depth-stencil surface. This resource must have been created with the flag.

+

Pointer to a depth-stencil-view description (see ). Set this parameter to null to create a view that accesses mipmap level 0 of the entire resource (using the format the resource was created with).

+

Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

A depth-stencil view can be bound to the output-merger stage by calling .

Windows?Phone?8: This API is supported.

+
+ + ff476507 + HRESULT ID3D11Device::CreateDepthStencilView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc,[Out, Fast] ID3D11DepthStencilView** ppDepthStencilView) + ID3D11Device::CreateDepthStencilView +
+ + +

Create an input-layout object to describe the input-buffer data for the input-assembler stage.

+
+

An array of the input-assembler stage input data types; each type is described by an element description (see ).

+

The number of input-data types in the array of input-elements.

+

A reference to the compiled shader. The compiled shader code contains a input signature which is validated against the array of elements. See remarks.

+

Size of the compiled shader.

+

A reference to the input-layout object created (see ). To validate the other input parameters, set this reference to be null and verify that the method returns S_FALSE.

+

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

+ +

After creating an input layout object, it must be bound to the input-assembler stage before calling a draw API.

Once an input-layout object is created from a shader signature, the input-layout object can be reused with any other shader that has an identical input signature (semantics included). This can simplify the creation of input-layout objects when you are working with many shaders with identical inputs.

If a data type in the input-layout declaration does not match the data type in a shader-input signature, CreateInputLayout will generate a warning during compilation. The warning is simply to call attention to the fact that the data may be reinterpreted when read from a register. You may either disregard this warning (if reinterpretation is intentional) or make the data types match in both declarations to eliminate the warning.

Windows?Phone?8: This API is supported.

+
+ + ff476512 + HRESULT ID3D11Device::CreateInputLayout([In, Buffer] const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs,[In] unsigned int NumElements,[In] const void* pShaderBytecodeWithInputSignature,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D11InputLayout** ppInputLayout) + ID3D11Device::CreateInputLayout +
+ + +

Create a vertex-shader object from a compiled shader.

+
+

A reference to the compiled shader.

+

Size of the compiled vertex shader.

+

A reference to a class linkage interface (see ); the value can be null.

+

Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

+

This method returns one of the Direct3D 11 Return Codes.

+ +

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateVertexShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a vertex shader, you can successfully pass the compiled vertex shader to pShaderBytecode. That is, the call to CreateVertexShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateVertexShader fails. CreateVertexShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

+
+ + ff476524 + HRESULT ID3D11Device::CreateVertexShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11VertexShader** ppVertexShader) + ID3D11Device::CreateVertexShader +
+ + +

Create a geometry shader.

+
+

A reference to the compiled shader.

+

Size of the compiled geometry shader.

+

A reference to a class linkage interface (see ); the value can be null.

+

Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

After it is created, the shader can be set to the device by calling .

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateGeometryShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to pShaderBytecode. That is, the call to CreateGeometryShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateGeometryShader fails. CreateGeometryShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

+
+ + ff476509 + HRESULT ID3D11Device::CreateGeometryShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader) + ID3D11Device::CreateGeometryShader +
+ + +

Creates a geometry shader that can write to streaming output buffers.

+
+

A reference to the compiled geometry shader for a standard geometry shader plus stream output. For info on how to get this reference, see Getting a Pointer to a Compiled Shader.

To create the stream output without using a geometry shader, pass a reference to the output signature for the prior stage. To obtain this output signature, call the compiler function. You can also pass a reference to the compiled shader for the prior stage (for example, the vertex-shader stage or domain-shader stage). This compiled shader provides the output signature for the data.

+

Size of the compiled geometry shader.

+

Pointer to a array. Cannot be null if NumEntries > 0.

+

The number of entries in the stream output declaration ( ranges from 0 to * ).

+

An array of buffer strides; each stride is the size of an element for that buffer.

+

The number of strides (or buffers) in pBufferStrides (ranges from 0 to ).

+

The index number of the stream to be sent to the rasterizer stage (ranges from 0 to - 1). Set to if no stream is to be rasterized.

+

A reference to a class linkage interface (see ); the value can be null.

+

Address of a reference to an interface, representing the geometry shader that was created. Set this to null to validate the other parameters; if validation passes, the method will return S_FALSE instead of .

+

This method returns one of the Direct3D 11 Return Codes.

+ +

For more info about using CreateGeometryShaderWithStreamOutput, see Create a Geometry-Shader Object with Stream Output.

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateGeometryShaderWithStreamOutput.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to pShaderBytecode. That is, the call to CreateGeometryShaderWithStreamOutput succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateGeometryShaderWithStreamOutput fails. CreateGeometryShaderWithStreamOutput also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

+
+ + ff476510 + HRESULT ID3D11Device::CreateGeometryShaderWithStreamOutput([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Buffer, Optional] const D3D11_SO_DECLARATION_ENTRY* pSODeclaration,[In] unsigned int NumEntries,[In, Buffer, Optional] const unsigned int* pBufferStrides,[In] unsigned int NumStrides,[In] unsigned int RasterizedStream,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader) + ID3D11Device::CreateGeometryShaderWithStreamOutput +
+ + +

Create a pixel shader.

+
+

A reference to the compiled shader.

+

Size of the compiled pixel shader.

+

A reference to a class linkage interface (see ); the value can be null.

+

Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

After creating the pixel shader, you can set it to the device using .

Windows?Phone?8: This API is supported.

+
+ + ff476513 + HRESULT ID3D11Device::CreatePixelShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11PixelShader** ppPixelShader) + ID3D11Device::CreatePixelShader +
+ + +

Create a hull shader.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

This method returns one of the Direct3D 11 Return Codes.

+ +

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateHullShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a hull shader, you can successfully pass the compiled hull shader to pShaderBytecode. That is, the call to CreateHullShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateHullShader fails. CreateHullShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

+
+ + ff476511 + HRESULT ID3D11Device::CreateHullShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11HullShader** ppHullShader) + ID3D11Device::CreateHullShader +
+ + +

Create a domain shader .

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

This method returns one of the following Direct3D 11 Return Codes.

+ +

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateDomainShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a domain shader, you can successfully pass the compiled domain shader to pShaderBytecode. That is, the call to CreateDomainShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateDomainShader fails. CreateDomainShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

+
+ + ff476508 + HRESULT ID3D11Device::CreateDomainShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11DomainShader** ppDomainShader) + ID3D11Device::CreateDomainShader +
+ + +

Create a compute shader.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader. See Direct3D 11 Return Codes for other possible return values.

+ +

For an example, see How To: Create a Compute Shader and HDRToneMappingCS11 Sample.

Windows?Phone?8: This API is supported.

+
+ + ff476503 + HRESULT ID3D11Device::CreateComputeShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11ComputeShader** ppComputeShader) + ID3D11Device::CreateComputeShader +
+ + +

Creates class linkage libraries to enable dynamic shader linkage.

+
+

A reference to a class-linkage interface reference (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

The interface returned in ppLinkage is associated with a shader by passing it as a parameter to one of the create shader methods such as .

Windows?Phone?8: This API is supported.

+
+ + ff476502 + HRESULT ID3D11Device::CreateClassLinkage([Out, Fast] ID3D11ClassLinkage** ppLinkage) + ID3D11Device::CreateClassLinkage +
+ + +

Create a blend-state object that encapsules blend state for the output-merger stage.

+
+

Pointer to a blend-state description (see ).

+

Address of a reference to the blend-state object created (see ).

+

This method returns E_OUTOFMEMORY if there is insufficient memory to create the blend-state object. See Direct3D 11 Return Codes for other possible return values.

+ +

An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

Windows?Phone?8: This API is supported.

+
+ + ff476500 + HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState) + ID3D11Device::CreateBlendState +
+ + +

Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.

+
+

Pointer to a depth-stencil state description (see ).

+

Address of a reference to the depth-stencil state object created (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

4096 unique depth-stencil state objects can be created on a device at a time.

If an application attempts to create a depth-stencil-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique depth-stencil state objects will stay the same.

Windows?Phone?8: This API is supported.

+
+ + ff476506 + HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState) + ID3D11Device::CreateDepthStencilState +
+ + +

Create a rasterizer state object that tells the rasterizer stage how to behave.

+
+

Pointer to a rasterizer state description (see ).

+

Address of a reference to the rasterizer state object created (see ).

+

This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader. See Direct3D 11 Return Codes for other possible return values.

+ +

4096 unique rasterizer state objects can be created on a device at a time.

If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.

Windows?Phone?8: This API is supported.

+
+ + ff476516 + HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState) + ID3D11Device::CreateRasterizerState +
+ + +

Create a sampler-state object that encapsulates sampling information for a texture.

+
+

Pointer to a sampler state description (see ).

+

Address of a reference to the sampler state object created (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

4096 unique sampler state objects can be created on a device at a time.

If an application attempts to create a sampler-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique sampler state objects will stay the same.

Windows?Phone?8: This API is supported.

+
+ + ff476518 + HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState) + ID3D11Device::CreateSamplerState +
+ + +

This interface encapsulates methods for querying information from the GPU.

+
+

Pointer to a query description (see ).

+

Address of a reference to the query object created (see ).

+

This method returns E_OUTOFMEMORY if there is insufficient memory to create the query object. See Direct3D 11 Return Codes for other possible return values.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476515 + HRESULT ID3D11Device::CreateQuery([In] const D3D11_QUERY_DESC* pQueryDesc,[Out, Fast] ID3D11Query** ppQuery) + ID3D11Device::CreateQuery +
+ + +

Creates a predicate.

+
+

Pointer to a query description where the type of query must be a or (see ).

+

Address of a reference to a predicate (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476514 + HRESULT ID3D11Device::CreatePredicate([In] const D3D11_QUERY_DESC* pPredicateDesc,[Out, Fast] ID3D11Predicate** ppPredicate) + ID3D11Device::CreatePredicate +
+ + +

Create a counter object for measuring GPU performance.

+
+

Pointer to a counter description (see ).

+

Address of a reference to a counter (see ).

+

If this function succeeds, it will return . If it fails, possible return values are: S_FALSE, E_OUTOFMEMORY, , , or E_INVALIDARG.

is returned whenever the application requests to create a well-known counter, but the current device does not support it.

indicates that another device object is currently using the counters, so they cannot be used by this device at the moment.

E_INVALIDARG is returned whenever an out-of-range well-known or device-dependent counter is requested, or when the simulataneously active counters have been exhausted.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476504 + HRESULT ID3D11Device::CreateCounter([In] const D3D11_COUNTER_DESC* pCounterDesc,[Out, Fast] ID3D11Counter** ppCounter) + ID3D11Device::CreateCounter +
+ + +

Creates a deferred context, which can record command lists.

+
+

Reserved for future use. Pass 0.

+

Upon completion of the method, the passed reference to an interface reference is initialized.

+

Returns if successful; otherwise, returns one of the following:

  • Returns if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.
  • Returns if the CreateDeferredContext method cannot be called from the current context. For example, if the device was created with the value, CreateDeferredContext returns .
  • Returns E_INVALIDARG if the ContextFlags parameter is invalid.
  • Returns E_OUTOFMEMORY if the application has exhausted available memory.
+ +

A deferred context is a thread-safe context that you can use to record graphics commands on a thread other than the main rendering thread. Using a deferred context, you can record graphics commands into a command list that is encapsulated by the interface. After all scene items are recorded, you can then submit them to the main render thread for final rendering. In this manner, you can perform rendering tasks concurrently across multiple threads and potentially improve performance in multi-core CPU scenarios.

You can create multiple deferred contexts.

Note??If you use the value to create the device that is represented by , the CreateDeferredContext method will fail, and you will not be able to create a deferred context.

For more information about deferred contexts, see Immediate and Deferred Rendering.

Windows?Phone?8: This API is supported.

+
+ + ff476505 + HRESULT ID3D11Device::CreateDeferredContext([In] unsigned int ContextFlags,[Out, Fast] ID3D11DeviceContext** ppDeferredContext) + ID3D11Device::CreateDeferredContext +
+ + +

Give a device access to a shared resource created on a different device.

+
+

A resource handle. See remarks.

+

The globally unique identifier () for the resource interface. See remarks.

+

Address of a reference to the resource we are gaining access to.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

The unique handle of the resource is obtained differently depending on the type of device that originally created the resource.

To share a resource between two Direct3D 11 devices the resource must have been created with the flag, if it was created using the interface. If it was created using a DXGI device interface, then the resource is always shared.

The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

When sharing a resource between two Direct3D 10/11 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling GetSharedHandle.

 * pOtherResource(null);	
+            hr = pOtherDeviceResource->QueryInterface( __uuidof(), (void**)&pOtherResource );	
+            HANDLE sharedHandle;	
+            pOtherResource->GetSharedHandle(&sharedHandle); 

The only resources that can be shared are 2D non-mipmapped textures.

To share a resource between a Direct3D 9 device and a Direct3D 11 device the texture must have been created using the pSharedHandle argument of CreateTexture. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument.

The following code illustrates the method calls involved.

 sharedHandle = null; // must be set to null to create, can use a valid handle here to open in D3D9 	
+            pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); 	
+            ... 	
+            pDevice11->OpenSharedResource(sharedHandle, __uuidof(), (void**)(&tempResource11)); 	
+            tempResource11->QueryInterface(__uuidof(), (void**)(&pTex2D_11)); 	
+            tempResource11->Release(); 	
+            // now use pTex2D_11 with pDevice11    

Textures being shared from D3D9 to D3D11 have the following restrictions.

  • Textures must be 2D
  • Only 1 mip level is allowed
  • Texture must have default usage
  • Texture must be write only
  • MSAA textures are not allowed
  • Bind flags must have SHADER_RESOURCE and RENDER_TARGET set
  • Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed

If a shared texture is updated on one device must be called on that device.

Windows?Phone?8: This API is supported.

+
+ + ff476531 + HRESULT ID3D11Device::OpenSharedResource([In] void* hResource,[In] const GUID& ReturnedInterface,[Out, Optional] void** ppResource) + ID3D11Device::OpenSharedResource +
+ + +

Get the support of a given format on the installed video device.

+
+

A enumeration that describes a format for which to check for support.

+

A bitfield of enumeration values describing how the specified format is supported on the installed device. The values are ORed together.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476498 + HRESULT ID3D11Device::CheckFormatSupport([In] DXGI_FORMAT Format,[Out] D3D11_FORMAT_SUPPORT* pFormatSupport) + ID3D11Device::CheckFormatSupport +
+ + +

Get the number of quality levels available during multisampling.

+
+

The texture format. See .

+

The number of samples during multisampling.

+

Number of quality levels supported by the adapter. See remarks.

+ +

When multisampling a texture, the number of quality levels available for an adapter is dependent on the texture format used and the number of samples requested. The maximum number of quality levels is defined by in D3D11.h. If this method returns 0, the format and sample count combination is not supported for the installed adapter.

Furthermore, the definition of a quality level is up to each hardware vendor to define, however no facility is provided by Direct3D to help discover this information.

Note that FEATURE_LEVEL_10_1 devices are required to support 4x MSAA for all render targets except R32G32B32A32 and R32G32B32. FEATURE_LEVEL_11_0 devices are required to support 4x MSAA for all render target formats, and 8x MSAA for all render target formats except R32G32B32A32 formats.

Windows?Phone?8: This API is supported.

+
+ + ff476499 + HRESULT ID3D11Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels) + ID3D11Device::CheckMultisampleQualityLevels +
+ + +

Get a counter's information.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476496 + void ID3D11Device::CheckCounterInfo([Out] D3D11_COUNTER_INFO* pCounterInfo) + ID3D11Device::CheckCounterInfo +
+ + +

Get the type, name, units of measure, and a description of an existing counter.

+
+

Pointer to a counter description (see ). Specifies which counter information is to be retrieved about.

+

Pointer to the data type of a counter (see ). Specifies the data type of the counter being retrieved.

+

Pointer to the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.

+

String to be filled with a brief name for the counter. May be null if the application is not interested in the name of the counter.

+

Length of the string returned to szName. Can be null.

+

Name of the units a counter measures, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

+

Length of the string returned to szUnits. Can be null.

+

A description of the counter, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

+

Length of the string returned to szDescription. Can be null.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Length parameters can be null, which indicates the application is not interested in the length nor the corresponding string value. When a length parameter is non-null and the corresponding string is null, the input value of the length parameter is ignored, and the length of the corresponding string (including terminating null) will be returned through the length parameter. When length and the corresponding parameter are both non-null, the input value of length is checked to ensure there is enough room, and then the length of the string (including terminating null character) is passed out through the length parameter.

Windows?Phone?8: This API is supported.

+
+ + ff476495 + HRESULT ID3D11Device::CheckCounter([In] const D3D11_COUNTER_DESC* pDesc,[Out] D3D11_COUNTER_TYPE* pType,[Out] unsigned int* pActiveCounters,[Out, Buffer, Optional] char* szName,[InOut, Optional] unsigned int* pNameLength,[Out, Buffer, Optional] char* szUnits,[InOut, Optional] unsigned int* pUnitsLength,[Out, Buffer, Optional] char* szDescription,[InOut, Optional] unsigned int* pDescriptionLength) + ID3D11Device::CheckCounter +
+ + +

Gets information about the features that are supported by the current graphics driver.

+
+

A member of the enumerated type that describes which feature to query for support.

+

Upon completion of the method, the passed structure is filled with data that describes the feature support.

+

The size of the structure passed to the pFeatureSupportData parameter.

+

Returns if successful; otherwise, returns E_INVALIDARG if an unsupported data type is passed to the pFeatureSupportData parameter or a size mismatch is detected for the FeatureSupportDataSize parameter.

+ +

To query for multi-threading support, pass the value to the Feature parameter, pass the structure to the pFeatureSupportData parameter, and pass the size of the structure to the FeatureSupportDataSize parameter.

Calling CheckFeatureSupport with Feature set to causes the method to return the same information that would be returned by .

Windows?Phone?8: This API is supported.

+
+ + ff476497 + HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize) + ID3D11Device::CheckFeatureSupport +
+ + +

Get application-defined data from a device.

+
+

Guid associated with the data.

+

A reference to a variable that on input contains the size, in bytes, of the buffer that pData points to, and on output contains the size, in bytes, of the amount of data that GetPrivateData retrieved.

+

A reference to a buffer that GetPrivateData fills with data from the device if pDataSize points to a value that specifies a buffer large enough to hold the data.

+

This method returns one of the codes described in the topic Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476530 + HRESULT ID3D11Device::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) + ID3D11Device::GetPrivateData +
+ + +

Set data to a device and associate that data with a guid.

+
+

Guid associated with the data.

+

Size of the data.

+

Pointer to the data to be stored with this device. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

The data stored in the device with this method can be retrieved with .

The data and guid set with this method will typically be application-defined.

The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

 static const char c_szName[] = "My name";	
+            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
+            

Windows?Phone?8: This API is supported.

+
+ + ff476533 + HRESULT ID3D11Device::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) + ID3D11Device::SetPrivateData +
+ + +

Associate an -derived interface with this device child and associate that interface with an application-defined guid.

+
+

Guid associated with the interface.

+

Pointer to an -derived interface to be associated with the device child.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476534 + HRESULT ID3D11Device::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) + ID3D11Device::SetPrivateDataInterface +
+ + +

Gets the feature level of the hardware device.

+
+

A member of the enumerated type that describes the feature level of the hardware device.

+ +

Feature levels determine the capabilities of your device.

Windows?Phone?8: This API is supported.

+
+ + ff476528 + D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel() + ID3D11Device::GetFeatureLevel +
+ + +

Get the flags used during the call to create the device with .

+
+

A bitfield containing the flags used to create the device. See .

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476525 + unsigned int ID3D11Device::GetCreationFlags() + ID3D11Device::GetCreationFlags +
+ + +

Get the reason why the device was removed.

+
+

Possible return values include:

For more detail on these return codes, see DXGI_ERROR.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476526 + HRESULT ID3D11Device::GetDeviceRemovedReason() + ID3D11Device::GetDeviceRemovedReason +
+ + +

Gets an immediate context, which can play back command lists.

+
+

Upon completion of the method, the passed reference to an interface reference is initialized.

+ +

The GetImmediateContext method returns an object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

The GetImmediateContext method increments the reference count of the immediate context by one. Therefore, you must call Release on the returned interface reference when you are done with it to avoid a memory leak.

Windows?Phone?8: This API is supported.

+
+ + ff476529 + void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext) + ID3D11Device::GetImmediateContext +
+ + +

Get the exception-mode flags.

+
+

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D11_RAISE_FLAG. A default value of 0 means there are no flags.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Set an exception-mode flag to elevate an error condition to a non-continuable exception.

Whenever an error occurs, a Direct3D device enters the DEVICEREMOVED state and if the appropriate exception flag has been set, an exception is raised. A raised exception is designed to terminate an application. Before termination, the last chance an application has to persist data is by using an UnhandledExceptionFilter (see Structured Exception Handling). In general, UnhandledExceptionFilters are leveraged to try to persist data when an application is crashing (to disk, for example). Any code that executes during an UnhandledExceptionFilter is not guaranteed to reliably execute (due to possible process corruption). Any data that the UnhandledExceptionFilter manages to persist, before the UnhandledExceptionFilter crashes again, should be treated as suspect, and therefore inspected by a new, non-corrupted process to see if it is usable.

Windows?Phone?8: This API is supported.

+
+ + ff476532 + HRESULT ID3D11Device::SetExceptionMode([In] unsigned int RaiseFlags) + ID3D11Device::SetExceptionMode +
+ + +

Get the exception-mode flags.

+
+

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D11_RAISE_FLAG. A default value of 0 means there are no flags.

+ +

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

Windows?Phone?8: This API is supported.

+
+ + ff476527 + unsigned int ID3D11Device::GetExceptionMode() + ID3D11Device::GetExceptionMode +
+ + + Gets a value indicating whether the current device is using the reference rasterizer. + + + + + Gets or sets the debug-name for this object. + + + The debug name. + + + + +

Gets the feature level of the hardware device.

+
+ +

Feature levels determine the capabilities of your device.

Windows?Phone?8: This API is supported.

+
+ + ff476528 + GetFeatureLevel + GetFeatureLevel + D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel() +
+ + +

Get the flags used during the call to create the device with .

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476525 + GetCreationFlags + GetCreationFlags + unsigned int ID3D11Device::GetCreationFlags() +
+ + +

Get the reason why the device was removed.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476526 + GetDeviceRemovedReason + GetDeviceRemovedReason + HRESULT ID3D11Device::GetDeviceRemovedReason() +
+ + +

Gets an immediate context, which can play back command lists.

+
+ +

The GetImmediateContext method returns an object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

The GetImmediateContext method increments the reference count of the immediate context by one. Therefore, you must call Release on the returned interface reference when you are done with it to avoid a memory leak.

Windows?Phone?8: This API is supported.

+
+ + ff476529 + GetImmediateContext + GetImmediateContext + void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext) +
+ + +

Get or sets the exception-mode flags.

+
+ +

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

Windows?Phone?8: This API is supported.

+
+ + ff476527 + GetExceptionMode / SetExceptionMode + GetExceptionMode + unsigned int ID3D11Device::GetExceptionMode() +
+ + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + +

Set the target output buffers for the stream-output stage of the pipeline.

+
+

The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to null. See Remarks.

+

The array of output buffers (see ) to bind to the device. The buffers must have been created with the flag.

+

Array of offsets to the output buffers from ppSOTargets, one offset for each buffer. The offset values must be in bytes.

+ +

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

+
+ ff476484 + void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) + ID3D11DeviceContext::SOSetTargets +
+ + + Sets the stream output targets bound to the StreamOutput stage. + + The buffer to bind on the first stream output slot. + An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. + ff476484 + void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) + ID3D11DeviceContext::SOSetTargets + + + + Set the target output {{buffers}} for the {{StreamOutput}} stage, which enables/disables the pipeline to stream-out data. + + + Call ID3D10Device::SOSetTargets (before any draw calls) to stream data out; call SOSetTargets with NULL to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output render targets before calling draw methods in the RenderInstanceToStream function. An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. Calling this method using a buffer that is currently bound for writing will effectively bind NULL instead because a buffer cannot be bound as both an input and an output at the same time. The {{DeviceDebug Layer}} will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime. The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device. + + an array of output buffers (see ) to bind to the device. The buffers must have been created with the flag. + void SOSetTargets([In] int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const int* pOffsets) + ff476484 + void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) + ID3D11DeviceContext::SOSetTargets + + + + Get the target output {{buffers}} for the {{StreamOutput}} stage of the pipeline. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of buffers to get. A maximum of four output buffers can be retrieved. + an array of output buffers (see ) to bind to the device. + void SOGetTargets([In] int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] int* pOffsets) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the target output buffers for the stream-output stage of the pipeline.

+
+

The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to null. See Remarks.

+

The array of output buffers (see ) to bind to the device. The buffers must have been created with the flag.

+

Array of offsets to the output buffers from ppSOTargets, one offset for each buffer. The offset values must be in bytes.

+ +

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476484 + void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppSOTargets,[In, Buffer, Optional] const void* pOffsets) + ID3D11DeviceContext::SOSetTargets +
+ + +

Get the target output buffers for the stream-output stage of the pipeline.

+
+

Number of buffers to get.

+

An array of output buffers (see ) to be retrieved from the device.

+ +

A maximum of four output buffers can be retrieved.

The offsets to the output buffers pointed to in the returned ppSOTargets array may be assumed to be -1 (append), as defined for use in .

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476483 + void ID3D11DeviceContext::SOGetTargets([In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppSOTargets) + ID3D11DeviceContext::SOGetTargets +
+ + + Common Shader class. Provides a common set of methods for a Shader Stage. + TODO: check if usage of abstract is not introducing an unacceptable overhead... + + Type of the shader + + Functions + + + + + Constant SamplerRegisterComponents. + D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS + + + Constant SamplerRegisterCount. + D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT + + + Constant ConstantBufferComponentBitCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT + + + Constant TextureCoordRangeReductionMinimum. + D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN + + + Constant InputResourceSlotCount. + D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT + + + Constant TempRegisterComponents. + D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS + + + Constant ImmediateValueComponentBitCount. + D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT + + + Constant ImmediateConstantBufferRegisterCount. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT + + + Constant TextureElOffsetMaximumPositive. + D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE + + + Constant ConstantBufferComponents. + D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS + + + Constant TempRegisterReadsPerInst. + D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST + + + Constant SubRoutineNestingLimit. + D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT + + + Constant ImmediateConstantBufferRegisterReadPorts. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS + + + Constant ConstantBufferApiSlotCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT + + + Constant InputResourceRegisterReadPorts. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS + + + Constant ImmediateConstantBufferRegisterReadsPerInst. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST + + + Constant InputResourceRegisterCount. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT + + + Constant InputResourceRegisterReadsPerInst. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST + + + Constant ConstantBufferRegisterReadPorts. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS + + + Constant FlowcontrolNestingLimit. + D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT + + + Constant SamplerRegisterReadsPerInst. + D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST + + + Constant TempRegisterComponentBitCount. + D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT + + + Constant SamplerRegisterReadPorts. + D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS + + + Constant TextureElOffsetMaximumNegative. + D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE + + + Constant TextureCoordRangeReductionMaximum. + D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX + + + Constant TempRegisterCount. + D3D11_COMMONSHADER_TEMP_REGISTER_COUNT + + + Constant ConstantBufferRegisterCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT + + + Constant ImmediateConstantBufferRegisterComponents. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS + + + Constant InputResourceRegisterComponents. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS + + + Constant TempRegisterReadPorts. + D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS + + + Constant ConstantBufferRegisterComponents. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS + + + Constant ConstantBufferHwSlotCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT + + + Constant SamplerSlotCount. + D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT + + + Constant ConstantBufferRegisterReadsPerInst. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST + + + + Initializes a new instance of the class. + + The pointer. + + + + Gets the constant buffers used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving constant buffers. + Number of buffers to retrieve. + An array of constant buffers. + + + + Gets the sampler states used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving samplers. + Number of samplers to retrieve. + An array of sampler states. + + + + Gets the shader resources used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving shader resources. + Number of resources to retrieve. + An array of shader resources. + + + + Sets a single constant buffer to be used by the shader stage. + + Index into the device's zero-based array to which to set the constant buffer. + constant buffer to set + + + + Sets an array of constant buffers to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of constant buffers. + An array of constant buffer to set + + + + Sets an array of constant buffers to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of constant buffers. + An array of constant buffer to set + + + + Sets a single sampler to be used by the shader stage. + + Index into the device's zero-based array to which to set the sampler. + sampler state to set + + + + Sets an array of samplers to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of sampler states. + An array of sampler state to set + + + + Sets an array of samplers to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of sampler states. + An array of sampler state to set + + + + Sets a single shader resource to be used by the shader stage. + + Index into the device's zero-based array to which to set the resource. + Resource view to attach + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Array of {{shader resource view}} interfaces to set to the device. + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Array of {{shader resource view}} interfaces to set to the device. + + + + Get the shader resources. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to be returned by the device. + void PSGetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Get an array of sampler states from the shader pipeline stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into a zero-based array to begin getting samplers from (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Array of sampler-state interface pointers (see ) to be returned by the device. + void PSGetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + + + + Get the constant buffers used by the shader pipeline stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to retrieve (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffer interface pointers (see ) to be returned by the method. + void PSGetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Set an array of sampler states to the shader pipeline stage. + + + Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Pointer to an array of sampler-state interfaces (see ). See Remarks. + void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers) + + + + Set an array of sampler states to the shader pipeline stage. + + + Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Pointer to an array of sampler-state interfaces (see ). See Remarks. + void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers) + + + + Set the constant buffers used by the shader pipeline stage. + + + The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffers (see ) being given to the device. + void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers) + + + + Set the constant buffers used by the shader pipeline stage. + + + The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffers (see ) being given to the device. + void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers) + + + + Common Shader class. Provides a common set of methods for a Shader Stage. + TODO: check if usage of abstract is not introducing an unacceptable overhead... + + Type of the shader + + + + Initializes a new instance of the class. + + The pointer. + + + + Gets the shader currently assigned to the device. + + The shader (null if no shader is assigned). + + + + Gets the shader currently assigned to the device. + + An array that will be used to contain any class instances currently active. + The shader (null if no shader is assigned). + + + + Assigns a compute shader to the device. + + The shader to assign to the device. Assign null to disable the compute shader. + + + + Assigns a compute shader to the device. + + The shader to assign to the device. Assign null to disable the compute shader. + An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled. + + + + Assigns a compute shader to the device. + + The shader to assign to the device. Assign null to disable the compute shader. + An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled. + + + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + Constant UnorderedAccessViewSlotCount. + D3D11_PS_CS_UAV_REGISTER_COUNT + + + Constant DispatchMaximumThreadGroupsPerDimension. + D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION + + + Constant ThreadLocalTempRegisterPool. + D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL + + + Constant ThreadGroupSharedMemoryRegisterCount. + D3D11_CS_TGSM_REGISTER_COUNT + + + Constant ThreadGroupMaximumY. + D3D11_CS_THREAD_GROUP_MAX_Y + + + Constant ThreadGroupSharedMemoryResourceRegisterReadPorts. + D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS + + + Constant ThreadGroupMinimumY. + D3D11_CS_THREAD_GROUP_MIN_Y + + + Constant ThreadGroupSharedMemoryRegisterReadsPerInst. + D3D11_CS_TGSM_REGISTER_READS_PER_INST + + + Constant ThreadGroupMaximumZ. + D3D11_CS_THREAD_GROUP_MAX_Z + + + Constant ThreadGroupMinimumX. + D3D11_CS_THREAD_GROUP_MIN_X + + + Constant ThreadGroupSharedMemoryResourceRegisterComponents. + D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS + + + Constant ThreadGroupMaximumX. + D3D11_CS_THREAD_GROUP_MAX_X + + + Constant ThreadGroupMaximumThreadsPerGroup. + D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP + + + Constant ThreadGroupMinimumZ. + D3D11_CS_THREAD_GROUP_MIN_Z + + + + Gets an array of views for an unordered resource. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). + Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). + void CSGetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[Out, Buffer] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. uAVInitialCount is only relevant for UAVs which have the flag, otherwise the argument is ignored. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. pUAVInitialCounts is only relevant for UAVs which have the flag, otherwise the argument is ignored. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind an array of shader resources to the compute-shader stage.

+
+

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

+

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to set to the device.

+ +

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. +

Windows?Phone?8: This API is supported.

+
+ + ff476403 + void ID3D11DeviceContext::CSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) + ID3D11DeviceContext::CSSetShaderResources +
+ + +

Sets an array of views for an unordered resource.

+
+

Index of the first element in the zero-based array to begin setting (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - 1). D3D11_1_UAV_SLOT_COUNT is defined as 64.

+

Number of views to set (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - StartSlot).

+

A reference to an array of references to be set by the method.

+

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is only relevant for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476404 + void ID3D11DeviceContext::CSSetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[In, Buffer] const void** ppUnorderedAccessViews,[In, Buffer] const void* pUAVInitialCounts) + ID3D11DeviceContext::CSSetUnorderedAccessViews +
+ + +

Set a compute shader to the device.

+
+

Pointer to a compute shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476402 + void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::CSSetShader +
+ + +

Set a compute shader to the device.

+
+

Pointer to a compute shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476402 + void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::CSSetShader +
+ + +

Set an array of sampler states to the compute-shader stage.

+
+

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

+

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ). See Remarks.

+ +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476401 + void ID3D11DeviceContext::CSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) + ID3D11DeviceContext::CSSetSamplers +
+ + +

Sets the constant buffers used by the compute-shader stage.

+
+

Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

+

Number of buffers to set (ranges from 0 to - StartSlot).

+

Array of constant buffers (see ) being given to the device.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the CSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

+
+ + ff476400 + void ID3D11DeviceContext::CSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) + ID3D11DeviceContext::CSSetConstantBuffers +
+ + +

Get the compute-shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476398 + void ID3D11DeviceContext::CSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::CSGetShaderResources +
+ + +

Gets an array of views for an unordered resource.

+
+

Index of the first element in the zero-based array to return (ranges from 0 to - 1).

+

Number of views to get (ranges from 0 to - StartSlot).

+

A reference to an array of interface references (see ) to get.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476399 + void ID3D11DeviceContext::CSGetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[Out, Buffer] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + ID3D11DeviceContext::CSGetUnorderedAccessViews +
+ + +

Get the compute shader currently set on the device.

+
+

Address of a reference to a Compute shader (see ) to be returned by the method.

+

Pointer to an array of class instance interfaces (see ).

+

The number of class-instance elements in the array.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476397 + void ID3D11DeviceContext::CSGetShader([Out] ID3D11ComputeShader** ppComputeShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::CSGetShader +
+ + +

Get an array of sampler state interfaces from the compute-shader stage.

+
+

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

+

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ).

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476396 + void ID3D11DeviceContext::CSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::CSGetSamplers +
+ + +

Get the constant buffers used by the compute-shader stage.

+
+

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

+

Number of buffers to retrieve (ranges from 0 to - StartSlot).

+

Array of constant buffer interface references (see ) to be returned by the method.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476395 + void ID3D11DeviceContext::CSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::CSGetConstantBuffers +
+ + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + + Constructs a new deferred context . + + The device with which to associate the state object. + The newly created object. + + + + Create a command list and record graphics commands into it. + + A flag indicating whether the immediate context state is saved (prior) and restored (after) the execution of a command list. + The created command list containing the queued rendering commands. + + + + Determines whether asynchronous query data is available. + + The data. + + true if asynchronous query data is available; otherwise, false. + + HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) + + + + Determines whether asynchronous query data is available. + + The data. + Optional flags + + true if asynchronous query data is available; otherwise, false. + + HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + + The asynchronous data provider. + The data retrieved from the GPU. + + True if result contains valid data, false otherwise. + + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + Flags specifying how the command should operate. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + Flags specifying how the command should operate. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + + The asynchronous data provider. + Flags specifying how the command should operate. + The data retrieved from the GPU. + + True if result contains valid data, false otherwise. + + + + + Copy the entire contents of the source resource to the destination resource using the GPU. + + + This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources: Must be different resources. Must be the same type. Must have identical dimensions (including width, height, depth, and size as appropriate). Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions. Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. Might not be currently mapped. You cannot use an {{Immutable}} resource as a destination. You can use a {{depth-stencil}} resource as either a source or a destination. Resources created with multisampling capability (see ) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled the call to ID3D11DeviceContext::CopyResource fails. The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. An application that only needs to copy a portion of the data in a resource should use instead. + + A reference to the source resource (see ). + A reference to the destination resource (see ). + void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) + ff476392 + void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) + ID3D11DeviceContext::CopyResource + + + + Copy a region from a source resource to a destination resource. + + + The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D11CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources: Must be different subresources (although they can be from the same resource). Must be the same type. Must have compatible DXGI formats (identical or from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently mapped. CopySubresourceRegion only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use instead. CopySubresourceRegion is an asynchronous call which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details. Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a region (10,20),(90,140) in a destination texture. + D3D11_BOX sourceRegion; + sourceRegion.left = 120; + sourceRegion.right = 200; + sourceRegion.top = 100; + sourceRegion.bottom = 220; + sourceRegion.front = 0; + sourceRegion.back = 1; pd3dDeviceContext->CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &sourceRegion ); + + Notice, that for a 2D texture, front and back are set to 0 and 1 respectively. + + A reference to the source resource (see ). + Source subresource index. + A reference to a 3D box (see ) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. + A reference to the destination resource (see ). + Destination subresource index. + The x-coordinate of the upper left corner of the destination region. + The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero. + The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. + ff476394 + void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox) + ID3D11DeviceContext::CopySubresourceRegion + + + + Copy a multisampled resource into a non-multisampled resource. + + + This API is most useful when re-using the resulting render target of one render pass as an input to a second render pass. The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this: ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and destination must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT could be specified in the Format parameter). For example, given the DXGI_FORMAT_R16G16B16A16_TYPELESS format: The source (or dest) format could be DXGI_FORMAT_R16G16B16A16_UNORM The dest (or source) format could be DXGI_FORMAT_R16G16B16A16_FLOAT ? + + Source resource. Must be multisampled. + >The source subresource of the source resource. + Destination resource. Must be a created with the flag and be single-sampled. See . + A zero-based index, that identifies the destination subresource. Use {{D3D11CalcSubresource}} to calculate the index. + A that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks. + void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + Size of the selected miplevel. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The subresource. + The mode. + The flags. + The output stream containing the pointer. + The locked + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + +

Gets a reference to the data contained in a subresource, and denies the GPU access to that subresource.

+
+

A reference to a interface.

+

Index number of the subresource.

+

Specifies the CPU's read and write permissions for a resource. For possible values, see .

+

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

+

A reference to the mapped subresource (see ).

+ The mapped subresource (see ). If is used and the resource is still being used by the GPU, this method return an empty DataBox whose property returns true.

This method also throws an exception with the code if MapType allows any CPU read access and the video card has been removed.

For more information about these error codes, see DXGI_ERROR.

+ +

If you call Map on a deferred context, you can only pass , , or both to the MapType parameter. Other -typed values are not supported for a deferred context.

The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can map shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers.

+ If is used and the resource is still being used by the GPU, this method return an empty DataBox whose property returns true. +
+ ff476457 + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + ID3D11DeviceContext::Map +
+ + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The destination subresource. + The row pitch. + The depth pitch. + The region + + This method is implementing the
workaround for deferred context. + + ff476486 + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + ID3D11DeviceContext::UpdateSubresource + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The destination subresource. + The row pitch. + The depth pitch. + A region that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. + ff476486 + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + ID3D11DeviceContext::UpdateSubresource + This method is implementing the workaround for deferred context. + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The destination subresource. + + This method is implementing the workaround for deferred context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The destination subresource. + The destination region within the resource. + + This method is implementing the workaround for deferred context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + The row pitch. + The depth pitch. + if set to true the resource is a block/compressed resource + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + This method is implementing the workaround for deferred context. + + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + The row pitch. + The depth pitch. + if set to true the resource is a block/compressed resource + + This method is implementing the workaround for deferred context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + if set to true the resource is a block/compressed resource + + This method is implementing the workaround for deferred context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + The destination region within the resource. + if set to true the resource is a block/compressed resource + + This method is implementing the workaround for deferred context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Updates the subresource safe method. + + The DST resource ref. + The DST subresource. + The DST box ref. + The p SRC data. + The SRC row pitch. + The SRC depth pitch. + The size in bytes per pixel/block element. + if set to true the resource is a block/compressed resource + + + This method is implementing the workaround for deferred context. + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + Update nested inner interfaces pointer + + + +

Draw indexed, non-instanced primitives.

+
+

Number of indices to draw.

+

The location of the first index read by the GPU from the index buffer.

+

A value added to each index before reading a vertex from the vertex buffer.

+ +

A draw API submits work to the rendering pipeline.

If the sum of both indices is negative, the result of the function call is undefined.

Windows?Phone?8: This API is supported.

+
+ + ff476409 + void ID3D11DeviceContext::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation) + ID3D11DeviceContext::DrawIndexed +
+ + +

Draw non-indexed, non-instanced primitives.

+
+

Number of vertices to draw.

+

Index of the first vertex, which is usually an offset in a vertex buffer.

+ +

Draw submits work to the rendering pipeline.

The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline.

Even without any vertex buffer bound to the pipeline, you can generate your own vertex data in your vertex shader by using the SV_VertexID system-value semantic to determine the current vertex that the runtime is processing.

Windows?Phone?8: This API is supported.

+
+ + ff476407 + void ID3D11DeviceContext::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation) + ID3D11DeviceContext::Draw +
+ + +

Gets a reference to the data contained in a subresource, and denies the GPU access to that subresource.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

This method returns one of the Direct3D 11 Return Codes.

This method also returns if MapFlags specifies and the GPU is not yet finished with the resource.

This method also returns if MapType allows any CPU read access and the video card has been removed.

For more information about these error codes, see DXGI_ERROR.

+ +

If you call Map on a deferred context, you can only pass , , or both to the MapType parameter. Other -typed values are not supported for a deferred context.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

For info about how to use Map, see How to: Use dynamic resources.

+
+ + ff476457 + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + ID3D11DeviceContext::Map +
+ + +

Invalidate the reference to a resource and reenable the GPU's access to that resource.

+
+

A reference to a interface.

+

A subresource to be unmapped.

+ +

For info about how to use Unmap, see How to: Use dynamic resources.

Windows?Phone?8: This API is supported.

+
+ + ff476485 + void ID3D11DeviceContext::Unmap([In] ID3D11Resource* pResource,[In] unsigned int Subresource) + ID3D11DeviceContext::Unmap +
+ + +

Draw indexed, instanced primitives.

+
+

Number of indices read from the index buffer for each instance.

+

Number of instances to draw.

+

The location of the first index read by the GPU from the index buffer.

+

A value added to each index before reading a vertex from the vertex buffer.

+

A value added to each index before reading per-instance data from a vertex buffer.

+ +

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Instancing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data.

Windows?Phone?8: This API is supported.

+
+ + ff476410 + void ID3D11DeviceContext::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation) + ID3D11DeviceContext::DrawIndexedInstanced +
+ + +

Draw non-indexed, instanced primitives.

+
+

Number of vertices to draw.

+

Number of instances to draw.

+

Index of the first vertex.

+

A value added to each index before reading per-instance data from a vertex buffer.

+ +

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors.

The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).

Windows?Phone?8: This API is supported.

+
+ + ff476412 + void ID3D11DeviceContext::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation) + ID3D11DeviceContext::DrawInstanced +
+ + +

Mark the beginning of a series of commands.

+
+

A reference to an interface.

+ +

Use to mark the ending of the series of commands.

Windows?Phone?8: This API is supported.

+
+ + ff476386 + void ID3D11DeviceContext::Begin([In] ID3D11Asynchronous* pAsync) + ID3D11DeviceContext::Begin +
+ + +

Mark the end of a series of commands.

+
+

A reference to an interface.

+ +

Use to mark the beginning of the series of commands.

Windows?Phone?8: This API is supported.

+
+ + ff476422 + void ID3D11DeviceContext::End([In] ID3D11Asynchronous* pAsync) + ID3D11DeviceContext::End +
+ + +

Get data from the graphics processing unit (GPU) asynchronously.

+
+

A reference to an interface for the object about which GetData retrieves data.

+

Address of memory that will receive the data. If null, GetData will be used only to check status. The type of data output depends on the type of asynchronous interface.

+

Size of the data to retrieve or 0. Must be 0 when pData is null.

+

Optional flags. Can be 0 or any combination of the flags enumerated by .

+

This method returns one of the Direct3D 11 Return Codes. A return value of indicates that the data at pData is available for the calling application to access. A return value of S_FALSE indicates that the data is not yet available. If the data is not yet available, the application must call GetData until the data is available.

+ +

Queries in a deferred context are limited to predicated drawing. That is, you cannot call on a deferred context to get data about a query; you can only call GetData on the immediate context to get data about a query. For predicated drawing, the results of a predication-type query are used by the GPU and not returned to an application. For more information about predication and predicated drawing, see D3D11DeviceContext::SetPredication.

GetData retrieves the data that the runtime collected between calls to and . Certain queries only require a call to in which case the data returned by GetData is accurate up to the last call to . For information about the queries that only require a call to and about the type of data that GetData retrieves for each query, see .

If DataSize is 0, GetData is only used to check status.

An application gathers counter data by calling , issuing some graphics commands, calling , and then calling to get data about what happened in between the Begin and End calls. For information about performance counter types, see .

Windows?Phone?8: This API is supported.

+
+ + ff476428 + HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) + ID3D11DeviceContext::GetData +
+ + +

Set a rendering predicate.

+
+

A reference to the interface that represents the rendering predicate. A null value indicates "no" predication; in this case, the value of PredicateValue is irrelevant but will be preserved for .

+

If TRUE, rendering will be affected by when the predicate's conditions are met. If , rendering will be affected when the conditions are not met.

+ +

The predicate must be in the "issued" or "signaled" state to be used for predication. While the predicate is set for predication, calls to and are invalid.

Use this method to denote that subsequent rendering and resource manipulation commands are not actually performed if the resulting predicate data of the predicate is equal to the PredicateValue. However, some predicates are only hints, so they may not actually prevent operations from being performed.

The primary usefulness of predication is to allow an application to issue rendering and resource manipulation commands without taking the performance hit of spinning, waiting for to return. So, predication can occur while returns S_FALSE. Another way to think of it: an application can also use predication as a fallback, if it is possible that returns S_FALSE. If returns , the application can skip calling the rendering and resource manipulation commands manually with it's own application logic.

Rendering and resource manipulation commands for Direct3D?11 include these Draw, Dispatch, Copy, Update, Clear, Generate, and Resolve operations.

  • Draw
  • DrawAuto
  • DrawIndexed
  • DrawIndexedInstanced
  • DrawIndexedInstancedIndirect
  • DrawInstanced
  • DrawInstancedIndirect
  • Dispatch
  • DispatchIndirect
  • CopyResource
  • CopyStructureCount
  • CopySubresourceRegion
  • CopySubresourceRegion1
  • CopyTiles
  • CopyTileMappings
  • UpdateSubresource
  • UpdateSubresource1
  • UpdateTiles
  • UpdateTileMappings
  • ClearRenderTargetView
  • ClearUnorderedAccessViewFloat
  • ClearUnorderedAccessViewUint
  • ClearView
  • GenerateMips
  • ResolveSubresource

You can set a rendering predicate on an immediate or a deferred context. For info about immediate and deferred contexts, see Immediate and Deferred Rendering.

Windows?Phone?8: This API is supported.

+
+ + ff476481 + void ID3D11DeviceContext::SetPredication([In, Optional] ID3D11Predicate* pPredicate,[In] BOOL PredicateValue) + ID3D11DeviceContext::SetPredication +
+ + +

Draw geometry of an unknown size.

+
+ +

A draw API submits work to the rendering pipeline. This API submits work of an unknown size that was processed by the input assembler, vertex shader, and stream-output stages; the work may or may not have gone through the geometry-shader stage.

After data has been streamed out to stream-output stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.

The following diagram shows the DrawAuto process.

Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.

DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, and .

This API does not support indexing or instancing.

If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using .

Windows?Phone?8: This API is supported.

+
+ + ff476408 + void ID3D11DeviceContext::DrawAuto() + ID3D11DeviceContext::DrawAuto +
+ + +

Draw indexed, instanced, GPU-generated primitives.

+
+

A reference to an , which is a buffer containing the GPU generated primitives.

+

Offset in pBufferForArgs to the start of the GPU generated primitives.

+ +

When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

Windows?Phone?8: This API is supported.

+
+ + ff476411 + void ID3D11DeviceContext::DrawIndexedInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) + ID3D11DeviceContext::DrawIndexedInstancedIndirect +
+ + +

Draw instanced, GPU-generated primitives.

+
+

A reference to an , which is a buffer containing the GPU generated primitives.

+

Offset in pBufferForArgs to the start of the GPU generated primitives.

+ +

When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

Windows?Phone?8: This API is supported.

+
+ + ff476413 + void ID3D11DeviceContext::DrawInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) + ID3D11DeviceContext::DrawInstancedIndirect +
+ + +

Execute a command list from a thread group.

+
+

The number of groups dispatched in the x direction. ThreadGroupCountX must be less than or equal to (65535).

+

The number of groups dispatched in the y direction. ThreadGroupCountY must be less than or equal to (65535).

+

The number of groups dispatched in the z direction. ThreadGroupCountZ must be less than or equal to (65535). In feature level 10 the value for ThreadGroupCountZ must be 1.

+ +

You call the Dispatch method to execute commands in a compute shader. A compute shader can be run on many threads in parallel, within a thread group. Index a particular thread, within a thread group using a 3D vector given by (x,y,z).

In the following illustration, assume a thread group with 50 threads where the size of the group is given by (5,5,2). A single thread is identified from a thread group with 50 threads in it, using the vector (4,1,1).

The following illustration shows the relationship between the parameters passed to , Dispatch(5,3,2), the values specified in the numthreads attribute, numthreads(10,8,3), and values that will passed to the compute shader for the thread-related system values + (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).

Windows?Phone?8: This API is supported.

+
+ + ff476405 + void ID3D11DeviceContext::Dispatch([In] unsigned int ThreadGroupCountX,[In] unsigned int ThreadGroupCountY,[In] unsigned int ThreadGroupCountZ) + ID3D11DeviceContext::Dispatch +
+ + +

Execute a command list over one or more thread groups.

+
+

A reference to an , which must be loaded with data that matches the argument list for .

+

A byte-aligned offset between the start of the buffer and the arguments.

+ +

You call the DispatchIndirect method to execute commands in a compute shader.

When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

Windows?Phone?8: This API is supported.

+
+ + ff476406 + void ID3D11DeviceContext::DispatchIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) + ID3D11DeviceContext::DispatchIndirect +
+ + +

Copy a region from a source resource to a destination resource.

+
+

A reference to the destination resource (see ).

+

Destination subresource index.

+

The x-coordinate of the upper left corner of the destination region.

+

The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero.

+

The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero.

+

A reference to the source resource (see ).

+

Source subresource index.

+

A reference to a 3D box (see ) that defines the source subresource that can be copied. If null, the entire source subresource is copied. The box must fit within the source resource.

An empty box results in a no-op. A box is empty if the top value is greater than or equal to the bottom value, or the left value is greater than or equal to the right value, or the front value is greater than or equal to the back value. When the box is empty, CopySubresourceRegion doesn't perform a copy operation.

+ +

The source box must be within the size of the source resource. The destination offsets, (x, y, and z), allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If you try and copy outside the destination resource or specify a source box that is larger than the source resource, the behavior of CopySubresourceRegion is undefined. If you created a device that supports the debug layer, the debug output reports an error on this invalid CopySubresourceRegion call. Invalid parameters to CopySubresourceRegion cause undefined behavior and might result in incorrect rendering, clipping, no copy, or even the removal of the rendering device.

If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. D3D11CalcSubresource is a helper function for calculating subresource indexes.

CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources:

  • Must be different subresources (although they can be from the same resource).
  • Must be the same type.
  • Must have compatible DXGI formats (identical or from the same type group). For example, a texture can be copied to an texture since both of these formats are in the group. CopySubresourceRegion can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • May not be currently mapped.

CopySubresourceRegion only supports copy; it does not support any stretch, color key, or blend. CopySubresourceRegion can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

If your app needs to copy an entire resource, we recommend to use instead.

CopySubresourceRegion is an asynchronous call, which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. For more information about pipeline stalls, see performance considerations.

Note??Applies only to feature level 9_x hardware If you use or CopySubresourceRegion to copy from a staging resource to a default resource, you can corrupt the destination contents. This occurs if you pass a null source box and if the source resource has different dimensions from those of the destination resource or if you use destination offsets, (x, y, and z). In this situation, always pass a source box that is the full size of the source resource.

Note??Applies only to feature level 9_x hardware You can't use CopySubresourceRegion to copy mipmapped volume textures.

Note??Applies only to feature levels 9_x Subresources created with the flag can only be used as a source for CopySubresourceRegion.

Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and null to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values.

+
+ + ff476394 + void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox) + ID3D11DeviceContext::CopySubresourceRegion +
+ + +

Copy the entire contents of the source resource to the destination resource using the GPU.

+
+

A reference to the interface that represents the destination resource.

+

A reference to the interface that represents the source resource.

+ +

This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:

  • Must be different resources.
  • Must be the same type.
  • Must have identical dimensions (including width, height, depth, and size as appropriate).
  • Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a texture can be copied to an texture since both of these formats are in the group. CopyResource can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • Can't be currently mapped.

CopyResource only supports copy; it doesn't support any stretch, color key, or blend. CopyResource can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

You can't use an Immutable resource as a destination. You can use a depth-stencil resource as either a source or a destination provided that the feature level is or greater. For feature levels 9_x, resources created with the flag can only be used as a source for CopyResource. Resources created with multisampling capability (see ) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled, the call to fails. Use to resolve a multisampled resource to a resource that is not multisampled.

The method is an asynchronous call, which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. For more info, see performance considerations.

We recommend to use instead if you only need to copy a portion of the data in a resource.

Windows?Phone?8: This API is supported.

+
+ + ff476392 + void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) + ID3D11DeviceContext::CopyResource +
+ + +

The CPU copies data from memory to a subresource created in non-mappable memory.

+
+

A reference to the destination resource (see ).

+

A zero-based index, that identifies the destination subresource. See D3D11CalcSubresource for more details.

+

A reference to a box that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. If null, the data is written to the destination subresource with no offset. The dimensions of the source must fit the destination (see ).

An empty box results in a no-op. A box is empty if the top value is greater than or equal to the bottom value, or the left value is greater than or equal to the right value, or the front value is greater than or equal to the back value. When the box is empty, UpdateSubresource doesn't perform an update operation.

+

A reference to the source data in memory.

+

The size of one row of the source data.

+

The size of one depth slice of source data.

+ +

For a shader-constant buffer; set pDstBox to null. It is not possible to use this method to partially update a shader-constant buffer.

A resource cannot be used as a destination if:

  • the resource is created with immutable or dynamic usage.
  • the resource is created as a depth-stencil resource.
  • the resource is created with multisampling capability (see ).

When UpdateSubresource returns, the application is free to change or even free the data pointed to by pSrcData because the method has already copied/snapped away the original contents.

The performance of UpdateSubresource depends on whether or not there is contention for the destination resource. For example, contention for a vertex buffer resource occurs when the application executes a Draw call and later calls UpdateSubresource on the same vertex buffer before the Draw call is actually executed by the GPU.

  • When there is contention for the resource, UpdateSubresource will perform 2 copies of the source data. First, the data is copied by the CPU to a temporary storage space accessible by the command buffer. This copy happens before the method returns. A second copy is then performed by the GPU to copy the source data into non-mappable memory. This second copy happens asynchronously because it is executed by GPU when the command buffer is flushed.
  • When there is no resource contention, the behavior of UpdateSubresource is dependent on which is faster (from the CPU's perspective): copying the data to the command buffer and then having a second copy execute when the command buffer is flushed, or having the CPU copy the data to the final resource location. This is dependent on the architecture of the underlying system.

Note??Applies only to feature level 9_x hardware If you use UpdateSubresource or to copy from a staging resource to a default resource, you can corrupt the destination contents. This occurs if you pass a null source box and if the source resource has different dimensions from those of the destination resource or if you use destination offsets, (x, y, and z). In this situation, always pass a source box that is the full size of the source resource.

To better understand the source row pitch and source depth pitch parameters, the following illustration shows a 3D volume texture.

Each block in this visual represents an element of data, and the size of each element is dependent on the resource's format. For example, if the resource format is , the size of each element would be 128 bits, or 16 bytes. This 3D volume texture has a width of two, a height of three, and a depth of four.

To calculate the source row pitch and source depth pitch for a given resource, use the following formulas:

  • Source Row Pitch = [size of one element in bytes] * [number of elements in one row]
  • Source Depth Pitch = [Source Row Pitch] * [number of rows (height)]

In the case of this example 3D volume texture where the size of each element is 16 bytes, the formulas are as follows:

  • Source Row Pitch = 16 * 2 = 32
  • Source Depth Pitch = 16 * 2 * 3 = 96

The following illustration shows the resource as it is laid out in memory.

For example, the following code snippet shows how to specify a destination region in a 2D texture. Assume the destination texture is 512x512 and the operation will copy the data pointed to by pData to [(120,100)..(200,220)] in the destination texture. Also assume that rowPitch has been initialized with the proper value (as explained above). front and back are set to 0 and 1 respectively, because by having front equal to back, the box is technically empty.

  destRegion;	
+            destRegion.left = 120;	
+            destRegion.right = 200;	
+            destRegion.top = 100;	
+            destRegion.bottom = 220;	
+            destRegion.front = 0;	
+            destRegion.back = 1; pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
+            

The 1D case is similar. The following snippet shows how to specify a destination region in a 1D texture. Use the same assumptions as above, except that the texture is 512 in length.

  destRegion;	
+            destRegion.left = 120;	
+            destRegion.right = 200;	
+            destRegion.top = 0;	
+            destRegion.bottom = 1;	
+            destRegion.front = 0;	
+            destRegion.back = 1; pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
+            

For info about various resource types and how UpdateSubresource might work with each resource type, see Introduction to a Resource in Direct3D 11.

+
+ + ff476486 + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + ID3D11DeviceContext::UpdateSubresource +
+ + +

Copies data from a buffer holding variable length data.

+
+

Pointer to . This can be any buffer resource that other copy commands, such as or , are able to write to.

+

Offset from the start of pDstBuffer to write 32-bit UINT structure (vertex) count from pSrcView.

+

Pointer to an of a Structured Buffer resource created with either or specified when the UAV was created. These types of resources have hidden counters tracking "how many" records have been written.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476393 + void ID3D11DeviceContext::CopyStructureCount([In] ID3D11Buffer* pDstBuffer,[In] unsigned int DstAlignedByteOffset,[In] ID3D11UnorderedAccessView* pSrcView) + ID3D11DeviceContext::CopyStructureCount +
+ + +

Set all the elements in a render target to one value.

+
+

Pointer to the render target.

+

A 4-component array that represents the color to fill the render target with.

+ +

Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method. The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.

Differences between Direct3D 9 and Direct3D 11/10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

When using D3D_FEATURE_LEVEL_9_x, ClearRenderTargetView only clears the first array slice in the render target view. This can impact (for example) cube map rendering scenarios. Applications should create a render target view for each face or array slice, then clear each view individually.

Windows?Phone?8: This API is supported.

+
+ + ff476388 + void ID3D11DeviceContext::ClearRenderTargetView([In] ID3D11RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA) + ID3D11DeviceContext::ClearRenderTargetView +
+ + +

Clears an unordered access resource with bit-precise values.

+
+ No documentation. + No documentation. + +

This API copies the lower ni bits from each array element i to the corresponding channel, where ni is the number of bits in the ith channel of the resource format (for example, R8G8B8_FLOAT has 8 bits for the first 3 channels). This works on any UAV with no format conversion. For a raw or structured buffer view, only the first array element value is used.

Windows?Phone?8: This API is supported.

+
+ + ff476391 + void ID3D11DeviceContext::ClearUnorderedAccessViewUint([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_INT4* Values) + ID3D11DeviceContext::ClearUnorderedAccessViewUint +
+ + +

Clears an unordered access resource with a float value.

+
+ No documentation. + No documentation. + +

This API works on FLOAT, UNORM, and SNORM unordered access views (UAVs), with format conversion from FLOAT to *NORM where appropriate. On other UAVs, the operation is invalid and the call will not reach the driver.

Windows?Phone?8: This API is supported.

+
+ + ff476390 + void ID3D11DeviceContext::ClearUnorderedAccessViewFloat([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_VECTOR4* Values) + ID3D11DeviceContext::ClearUnorderedAccessViewFloat +
+ + +

Clears the depth-stencil resource.

+
+

Pointer to the depth stencil to be cleared.

+

Identify the type of data to clear (see ).

+

Clear the depth buffer with this value. This value will be clamped between 0 and 1.

+

Clear the stencil buffer with this value.

+ +

Differences between Direct3D 9 and Direct3D 11/10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

Windows?Phone?8: This API is supported.

+
+ + ff476387 + void ID3D11DeviceContext::ClearDepthStencilView([In] ID3D11DepthStencilView* pDepthStencilView,[In] D3D11_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil) + ID3D11DeviceContext::ClearDepthStencilView +
+ + +

Generates mipmaps for the given shader resource.

+
+

A reference to an interface that represents the shader resource.

+ +

You can call GenerateMips on any shader-resource view to generate the lower mipmap levels for the shader resource. GenerateMips uses the largest mipmap level of the view to recursively generate the lower levels of the mip and stops with the smallest level that is specified by the view. If the base resource wasn't created with , , and , the call to GenerateMips has no effect.

Feature levels 9.1, 9.2, and 9.3 can't support automatic generation of mipmaps for 3D (volume) textures.

Video adapters that support feature level 9.1 and higher support generating mipmaps if you use any of these formats:

 	
+            	
+            	
+            	
+            	
+            	
+            	
+            

Video adapters that support feature level 9.2 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature level 9.1:

 	
+            	
+            	
+            	
+            	
+            

Video adapters that support feature level 9.3 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1 and 9.2:

 	
+            DXGI_FORMAT_B4G4R4A4 (optional)	
+            

Video adapters that support feature level 10 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1, 9.2, and 9.3:

  (optional)	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+            	
+             (optional)	
+            

For all other unsupported formats, GenerateMips will silently fail.

Windows?Phone?8: This API is supported.

+
+ + ff476426 + void ID3D11DeviceContext::GenerateMips([In] ID3D11ShaderResourceView* pShaderResourceView) + ID3D11DeviceContext::GenerateMips +
+ + +

Sets the minimum level-of-detail (LOD) for a resource.

+
+

A reference to an that represents the resource.

+

The level-of-detail, which ranges between 0 and the maximum number of mipmap levels of the resource. For example, the maximum number of mipmap levels of a 1D texture is specified in the MipLevels member of the structure.

+ +

To use a resource with SetResourceMinLOD, you must set the flag when you create that resource.

For Direct3D 10 and Direct3D 10.1, when sampling from a texture resource in a shader, the sampler can define a minimum LOD clamp to force sampling from less detailed mip levels. For Direct3D 11, this functionality is extended from the sampler to the entire resource. Therefore, the application can specify the highest-resolution mip level of a resource that is available for access. This restricts the set of mip levels that are required to be resident in GPU memory, thereby saving memory.

The set of mip levels resident per-resource in GPU memory can be specified by the user.

Minimum LOD affects all of the resident mip levels. Therefore, only the resident mip levels can be updated and read from.

All methods that access texture resources must adhere to minimum LOD clamps.

Empty-set accesses are handled as out-of-bounds cases.

Windows?Phone?8: This API is supported.

+
+ + ff476482 + void ID3D11DeviceContext::SetResourceMinLOD([In] ID3D11Resource* pResource,[In] float MinLOD) + ID3D11DeviceContext::SetResourceMinLOD +
+ + +

Gets the minimum level-of-detail (LOD).

+
+

A reference to an which represents the resource.

+

Returns the minimum LOD.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476430 + float ID3D11DeviceContext::GetResourceMinLOD([In] ID3D11Resource* pResource) + ID3D11DeviceContext::GetResourceMinLOD +
+ + +

Copy a multisampled resource into a non-multisampled resource.

+
+

Destination resource. Must be a created with the flag and be single-sampled. See .

+

A zero-based index, that identifies the destination subresource. Use D3D11CalcSubresource to calculate the index.

+

Source resource. Must be multisampled.

+

The source subresource of the source resource.

+

A that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks.

+ +

This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.

The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this:

ScenarioRequirements
Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter.
One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is and the typeless resource is ). The format of the typed resource must be specified in the Format parameter.
Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have ), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are then could be specified in the Format parameter).

For example, given the format:

  • The source (or dest) format could be
  • The dest (or source) format could be

?

Windows?Phone?8: This API is supported.

+
+ + ff476474 + void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In] DXGI_FORMAT Format) + ID3D11DeviceContext::ResolveSubresource +
+ + +

Queues commands from a command list onto a device.

+
+

A reference to an interface that encapsulates a command list.

+

A Boolean flag that determines whether the target context state is saved prior to and restored after the execution of a command list. Use TRUE to indicate that the runtime needs to save and restore the state. Use to indicate that no state shall be saved or restored, which causes the target context to return to its default state after the command list executes. Applications should typically use unless they will restore the state to be nearly equivalent to the state that the runtime would restore if TRUE were passed. When applications use , they can avoid unnecessary and inefficient state transitions.

+ +

Use this method to play back a command list that was recorded by a deferred context on any thread.

A call to ExecuteCommandList of a command list from a deferred context onto the immediate context is required for the recorded commands to be executed on the graphics processing unit (GPU). A call to ExecuteCommandList of a command list from a deferred context onto another deferred context can be used to merge recorded lists. But to run the commands from the merged deferred command list on the GPU, you need to execute them on the immediate context.

This method performs some runtime validation related to queries. Queries that are begun in a device context cannot be manipulated indirectly by executing a command list (that is, Begin or End was invoked against the same query by the deferred context which generated the command list). If such a condition occurs, the ExecuteCommandList method does not execute the command list. However, the state of the device context is still maintained, as would be expected ( is performed, unless the application indicates to preserve the device context state).

Windows?Phone?8: This API is supported.

+
+ + ff476423 + void ID3D11DeviceContext::ExecuteCommandList([In] ID3D11CommandList* pCommandList,[In] BOOL RestoreContextState) + ID3D11DeviceContext::ExecuteCommandList +
+ + +

Get the rendering predicate state.

+
+

Address of a boolean to fill with the predicate comparison value. upon device creation.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476429 + void ID3D11DeviceContext::GetPredication([Out, Optional] ID3D11Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue) + ID3D11DeviceContext::GetPredication +
+ + +

Restore all default settings.

+
+ +

This method resets any device context to the default settings. This sets all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to null. The primitive topology is set to UNDEFINED.

For a scenario where you would like to clear a list of commands recorded so far, call and throw away the resulting .

Windows?Phone?8: This API is supported.

+
+ + ff476389 + void ID3D11DeviceContext::ClearState() + ID3D11DeviceContext::ClearState +
+ + +

Sends queued-up commands in the command buffer to the graphics processing unit (GPU).

+
+ +

Most applications don't need to call this method. If an application calls this method when not necessary, it incurs a performance penalty. Each call to Flush incurs a significant amount of overhead.

When Microsoft Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer. Flush sends those commands to the GPU for processing. Typically, the Direct3D runtime sends these commands to the GPU automatically whenever the runtime determines that they need to be sent, such as when the command buffer is full or when an application maps a resource. Flush sends the commands manually.

We recommend that you use Flush when the CPU waits for an arbitrary amount of time (such as when you call the Sleep function).

Because Flush operates asynchronously, it can return either before or after the GPU finishes executing the queued graphics commands. However, the graphics commands eventually always complete. You can call the method with the value to create an event query; you can then use that event query in a call to the method to determine when the GPU is finished processing the graphics commands. +

Microsoft Direct3D?11 defers the destruction of objects. Therefore, an application can't rely upon objects immediately being destroyed. By calling Flush, you destroy any objects whose destruction was deferred. If an application requires synchronous destruction of an object, we recommend that the application release all its references, call , and then call Flush.

+
+ + ff476425 + void ID3D11DeviceContext::Flush() + ID3D11DeviceContext::Flush +
+ + +

Gets the type of device context.

+
+

A member of that indicates the type of device context.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476431 + D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType() + ID3D11DeviceContext::GetType +
+ + +

Gets the initialization flags associated with the current deferred context.

+
+ No documentation. + +

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

Windows?Phone?8: This API is supported.

+
+ + ff476427 + unsigned int ID3D11DeviceContext::GetContextFlags() + ID3D11DeviceContext::GetContextFlags +
+ + +

Create a command list and record graphics commands into it.

+
+

A Boolean flag that determines whether the runtime saves deferred context state before it executes FinishCommandList and restores it afterwards. Use TRUE to indicate that the runtime needs to save and restore the state. Use to indicate that the runtime will not save or restore any state. In this case, the deferred context will return to its default state after the call to FinishCommandList completes. For information about default state, see . Typically, use unless you restore the state to be nearly equivalent to the state that the runtime would restore if you passed TRUE. When you use , you can avoid unnecessary and inefficient state transitions.

Note??This parameter does not affect the command list that the current call to FinishCommandList returns. However, this parameter affects the command list of the next call to FinishCommandList on the same deferred context.

+

Upon completion of the method, the passed reference to an interface reference is initialized with the recorded command list information. The resulting object is immutable and can only be used with .

+

Returns if successful; otherwise, returns one of the following:

  • Returns if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.
  • Returns if FinishCommandList cannot be called from the current context. See remarks.
  • Returns E_OUTOFMEMORY if the application has exhausted available memory.
+ +

Create a command list from a deferred context and record commands into it by calling FinishCommandList. Play back a command list with an immediate context by calling .

Immediate context state is cleared before and after a command list is executed. A command list has no concept of inheritance. Each call to FinishCommandList will record only the state set since any previous call to FinishCommandList.

For example, the state of a device context is its render state or pipeline state. To retrieve device context state, an application can call or .

For more information about how to use FinishCommandList, see How to: Record a Command List.

Windows?Phone?8: This API is supported.

+
+ + ff476424 + HRESULT ID3D11DeviceContext::FinishCommandList([In] BOOL RestoreDeferredContextState,[Out, Optional] ID3D11CommandList** ppCommandList) + ID3D11DeviceContext::FinishCommandList +
+ + Inner interface giving access to VertexShaderStage methods. + + + Inner interface giving access to PixelShaderStage methods. + + + Inner interface giving access to InputAssemblerStage methods. + + + Inner interface giving access to GeometryShaderStage methods. + + + Inner interface giving access to OutputMergerStage methods. + + + Inner interface giving access to StreamOutputStage methods. + + + Inner interface giving access to RasterizerStage methods. + + + Inner interface giving access to HullShaderStage methods. + + + Inner interface giving access to DomainShaderStage methods. + + + Inner interface giving access to ComputeShaderStage methods. + + + +

Gets the type of device context.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476431 + GetType + GetType + D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType() +
+ + +

Gets the initialization flags associated with the current deferred context.

+
+ +

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

Windows?Phone?8: This API is supported.

+
+ + ff476427 + GetContextFlags + GetContextFlags + unsigned int ID3D11DeviceContext::GetContextFlags() +
+ + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + Constant IndexInputResourceSlotCount. + D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT + + + Constant VertexIdBitCount. + D3D11_IA_VERTEX_ID_BIT_COUNT + + + Constant DefaultIndexBufferOffsetInBytes. + D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES + + + Constant DefaultPrimitiveTopology. + D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY + + + Constant IntegerArithmeticBitCount. + D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT + + + Constant VertexInputStructureElementsComponents. + D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS + + + Constant VertexInputStructureElementCount. + D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT + + + Constant PatchMaximumControlPointCount. + D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT + + + Constant DefaultVertexBufferOffsetInBytes. + D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES + + + Constant InstanceIdBitCount. + D3D11_IA_INSTANCE_ID_BIT_COUNT + + + Constant VertexInputResourceSlotCount. + D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT + + + Constant PrimitiveIdBitCount. + D3D11_IA_PRIMITIVE_ID_BIT_COUNT + + + +

Bind a single vertex buffer to the input-assembler stage.

+
+

The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

+

A . The vertex buffer must have been created with the flag.

/// +

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

+
+ ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
+ + +

Bind an array of vertex buffers to the input-assembler stage.

+
+

The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

+

A reference to an array of . The vertex buffers must have been created with the flag.

/// +

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

+
+ ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
+ + +

Bind an array of vertex buffers to the input-assembler stage.

+
+

The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

+

A reference to an array of vertex buffers (see ). The vertex buffers must have been created with the flag.

+

Pointer to an array of stride values; one stride value for each buffer in the vertex-buffer array. Each stride is the size (in bytes) of the elements that are to be used from that vertex buffer.

+

Pointer to an array of offset values; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.

+ +

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

+
+ ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind an input-layout object to the input-assembler stage.

+
+

A reference to the input-layout object (see ), which describes the input buffers that will be read by the IA stage.

+ +

Input-layout objects describe how vertex buffer data is streamed into the IA pipeline stage. To create an input-layout object, call .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476454 + void ID3D11DeviceContext::IASetInputLayout([In, Optional] ID3D11InputLayout* pInputLayout) + ID3D11DeviceContext::IASetInputLayout +
+ + +

Bind an array of vertex buffers to the input-assembler stage.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

For info about creating vertex buffers, see How to: Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (that is, bound to the stream output pipeline stage) will effectively bind null instead because a buffer can't be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
+ + +

Bind an index buffer to the input-assembler stage.

+
+

A reference to an object, that contains indices. The index buffer must have been created with the flag.

+

A that specifies the format of the data in the index buffer. The only formats allowed for index buffer data are 16-bit () and 32-bit () integers.

+

Offset (in bytes) from the start of the index buffer to the first index to use.

+ +

For information about creating index buffers, see How to: Create an Index Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476453 + void ID3D11DeviceContext::IASetIndexBuffer([In, Optional] ID3D11Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset) + ID3D11DeviceContext::IASetIndexBuffer +
+ + +

Bind information about the primitive type, and data order that describes input data for the input assembler stage.

+
+

The type of primitive and ordering of the primitive data (see D3D11_PRIMITIVE_TOPOLOGY).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476455 + void ID3D11DeviceContext::IASetPrimitiveTopology([In] D3D_PRIMITIVE_TOPOLOGY Topology) + ID3D11DeviceContext::IASetPrimitiveTopology +
+ + +

Get a reference to the input-layout object that is bound to the input-assembler stage.

+
+

A reference to the input-layout object (see ), which describes the input buffers that will be read by the IA stage.

+ +

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476450 + void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout) + ID3D11DeviceContext::IAGetInputLayout +
+ + +

Get the vertex buffers bound to the input-assembler stage.

+
+

The input slot of the first vertex buffer to get. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

+

The number of vertex buffers to get starting at the offset. The number of buffers (plus the starting slot) cannot exceed the total number of IA-stage input slots.

+

A reference to an array of vertex buffers returned by the method (see ).

+

Pointer to an array of stride values returned by the method; one stride value for each buffer in the vertex-buffer array. Each stride value is the size (in bytes) of the elements that are to be used from that vertex buffer.

+

Pointer to an array of offset values returned by the method; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476452 + void ID3D11DeviceContext::IAGetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppVertexBuffers,[Out, Buffer, Optional] unsigned int* pStrides,[Out, Buffer, Optional] unsigned int* pOffsets) + ID3D11DeviceContext::IAGetVertexBuffers +
+ + +

Get a reference to the index buffer that is bound to the input-assembler stage.

+
+

A reference to an index buffer returned by the method (see ).

+

Specifies format of the data in the index buffer (see ). These formats provide the size and type of the data in the buffer. The only formats allowed for index buffer data are 16-bit () and 32-bit () integers.

+

Offset (in bytes) from the start of the index buffer, to the first index to use.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476449 + void ID3D11DeviceContext::IAGetIndexBuffer([Out, Optional] ID3D11Buffer** pIndexBuffer,[Out, Optional] DXGI_FORMAT* Format,[Out, Optional] unsigned int* Offset) + ID3D11DeviceContext::IAGetIndexBuffer +
+ + +

Get information about the primitive type, and data order that describes input data for the input assembler stage.

+
+

A reference to the type of primitive, and ordering of the primitive data (see D3D11_PRIMITIVE_TOPOLOGY).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476451 + void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) + ID3D11DeviceContext::IAGetPrimitiveTopology +
+ + +

Get or sets a reference to the input-layout object that is bound to the input-assembler stage.

+
+ +

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476450 + IAGetInputLayout / IASetInputLayout + IAGetInputLayout + void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout) +
+ + +

Get or sets information about the primitive type, and data order that describes input data for the input assembler stage.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476451 + IAGetPrimitiveTopology / IASetPrimitiveTopology + IAGetPrimitiveTopology + void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) +
+ + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + Constant SimultaneousRenderTargetCount. + D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT + + + + Get references to the render targets that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + a depth-stencil view (see ) to be filled with the depth-stencil information from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get references to the render targets that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of render targets to retrieve. + an array of render targets views (see ) to be filled with the render targets from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get references to the render targets and the depth-stencil buffer that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of render targets to retrieve. + Pointer to a depth-stencil view (see ) to be filled with the depth-stencil information from the device. + an array of render targets views (see ) to be filled with the render targets from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get the {{blend state}} of the output-merger stage. + + + The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak. + + Array of blend factors, one for each RGBA component. + Pointer to a {{sample mask}}. + a reference to a blend-state interface (see ). + void OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] float BlendFactor[4],[Out, Optional] int* pSampleMask) + + + + Gets the {{depth-stencil}} state of the output-merger stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Pointer to the stencil reference value used in the {{depth-stencil}} test. + a reference to a depth-stencil state interface (see ) to be filled with information from the device. + void OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] int* pStencilRef) + + + + Gets an array of views for an unordered resource. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). + Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). + void OMGetRenderTargetsAndUnorderedAccessViews([In] int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] int UAVStartSlot,[In] int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + + + + Unbinds all depth-stencil buffer and render targets from the output-merger stage. + + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets + + + +

Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.

+
+ A set of render target views to bind. + +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
+ + + Binds a single render target to the output-merger stage. + + A view of the render target to bind. + +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
+ + + Binds a depth-stencil buffer and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A set of render target views to bind. + +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
+ + + Binds a depth-stencil buffer and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + The render target count. + A set of render target views to bind. + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ + + Binds a depth-stencil buffer and a single render target to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A view of the render target to bind. + +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
+ + + Binds a depth-stencil buffer and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A set of render target views to bind. + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
+ + + Binds a set of render targets to the output-merger stage and clear the depth stencil view. + + A set of render target views to bind. + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

+
+ ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
+ + + Binds a set of unordered access views and a single render target to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a set of unordered access views and a set of render targets to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a set of unordered access views and a single render target to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a set of unordered access views and a set of render targets to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + + + + Binds a depth stencil view and a render target view to the output-merger stage keeping existing unordered access views bindings. + + A view of the depth-stencil buffer to bind. + A view to a render target to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a render target view to the output-merger stage keeping existing unordered access views bindings. + + A view to a render target to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth stencil view and a render target view to the output-merger stage keeping existing unordered access views bindings. + + A view of the depth-stencil buffer to bind. + A set of render target views to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Sets an array of views for an unordered resource keeping existing render targets bindings. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Sets an array of views for an unordered resource keeping existing render targets bindings. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. uAVInitialCount is only relevant for UAVs which have the flag, otherwise the argument is ignored. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Sets an array of views for an unordered resource keeping existing render targets bindings. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Sets an array of views for an unordered resource keeping existing render targets bindings. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. pUAVInitialCounts is only relevant for UAVs which have the flag, otherwise the argument is ignored. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + +

Binds resources to the output-merger stage.

+
+

Number of render-target views (ppRenderTargetViews) and depth-stencil view (ppDepthStencilView) to bind. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

+

Pointer to an array of s, which represent render-target views. Specify null to set none.

+

Pointer to a , which represents a depth-stencil view. Specify null to set none.

+

Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

+

Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

+

Pointer to an array of s, which represent unordered-access views.

+

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

+ +

For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

Two RTVs conflict if they share a subresource (and therefore share the same resource).

Two UAVs conflict if they share a subresource (and therefore share the same resource).

An RTV conflicts with a UAV if they share a subresource or share a bind point.

OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

  1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • UAVStartSlot >= NumViews
    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

    • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
    • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
  2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All RTVs in slots >= UAVStartSlot
    • All RTVs that conflict with any UAVs in ppUnorderedAccessView
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

    OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • There must be no conflicts in ppRenderTargetViews.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All UAVs in slots < NumViews
    • All UAVs that conflict with any RTVs in ppRenderTargetViews
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

    OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

+
+ ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews +
+ + +

Binds resources to the output-merger stage.

+
+

Number of render-target views (ppRenderTargetViews) and depth-stencil view (ppDepthStencilView) to bind. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

+

Pointer to an array of s, which represent render-target views. Specify null to set none.

+

Pointer to a , which represents a depth-stencil view. Specify null to set none.

+

Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

+

Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

+

Pointer to an array of s, which represent unordered-access views.

+

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

+ +

For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

Two RTVs conflict if they share a subresource (and therefore share the same resource).

Two UAVs conflict if they share a subresource (and therefore share the same resource).

An RTV conflicts with a UAV if they share a subresource or share a bind point.

OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

  1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • UAVStartSlot >= NumViews
    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

    • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
    • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
  2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All RTVs in slots >= UAVStartSlot
    • All RTVs that conflict with any UAVs in ppUnorderedAccessView
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

    OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • There must be no conflicts in ppRenderTargetViews.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All UAVs in slots < NumViews
    • All UAVs that conflict with any RTVs in ppRenderTargetViews
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

    OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

+
+ ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews +
+ + + Set the blend state of the output-merger stage. + + Pointer to a blend-state interface (see ). Passing in null implies a default blend state. See remarks for further details. + Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the option. + 32-bit sample coverage. The default value is 0xffffffff. See remarks. + + Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the blend operation to control where the two pixel values come from and how they are mathematically combined.To create a blend-state interface, call .Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.StateDefault Value AlphaToCoverageEnableFALSE BlendEnableFALSE[8] SrcBlendD3D11_BLEND_ONE DstBlendD3D11_BLEND_ZERO BlendOpD3D11_BLEND_OP_ADD SrcBlendAlphaD3D11_BLEND_ONE DstBlendAlphaD3D11_BLEND_ZERO BlendOpAlphaD3D11_BLEND_OP_ADD RenderTargetWriteMask[8][8]?A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.

+
+ No documentation. + No documentation. + No documentation. + +

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called . It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

Windows?Phone?8: This API is supported.

+
+ + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
+ + +

Binds resources to the output-merger stage.

+
+

Number of render targets to bind (ranges between 0 and ). If this parameter is nonzero, the number of entries in the array to which ppRenderTargetViews points must equal the number in this parameter. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

+

Pointer to an array of s that represent the render targets to bind to the device. If this parameter is null and NumViews is 0, no render targets are bound.

+

Pointer to a that represents the depth-stencil view to bind to the device. If this parameter is null, the depth-stencil state is not bound.

+

Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

For the Direct3D 11.1 runtime, which is available starting with Windows?8, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

+

Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

For the Direct3D 11.1 runtime, which is available starting with Windows?8, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

+

Pointer to an array of s that represent the unordered-access views to bind to the device. If this parameter is null and NumUAVs is 0, no unordered-access views are bound.

+

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

+ +

For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

Two RTVs conflict if they share a subresource (and therefore share the same resource).

Two UAVs conflict if they share a subresource (and therefore share the same resource).

An RTV conflicts with a UAV if they share a subresource or share a bind point.

OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

  1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • UAVStartSlot >= NumViews
    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

    • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
    • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
  2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All RTVs in slots >= UAVStartSlot
    • All RTVs that conflict with any UAVs in ppUnorderedAccessView
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

    OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • There must be no conflicts in ppRenderTargetViews.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All UAVs in slots < NumViews
    • All UAVs that conflict with any RTVs in ppRenderTargetViews
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

    OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

Windows?Phone?8: This API is supported.

+
+ + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const void** ppUnorderedAccessViews,[In, Buffer, Optional] const void* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews +
+ + +

Set the blend state of the output-merger stage.

+
+

Pointer to a blend-state interface (see ). Pass null for a default blend state. For more info about default blend state, see Remarks.

+

Array of blend factors, one for each RGBA component. The blend factors modulate values for the pixel shader, render target, or both. If you created the blend-state object with or , the blending stage uses the non-null array of blend factors. If you didn't create the blend-state object with or , the blending stage does not use the non-null array of blend factors; the runtime stores the blend factors, and you can later call to retrieve the blend factors. If you pass null, the runtime uses or stores a blend factor equal to { 1, 1, 1, 1 }.

+

32-bit sample coverage. The default value is 0xffffffff. See remarks.

+ +

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

To create a blend-state interface, call .

Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476462 + void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) + ID3D11DeviceContext::OMSetBlendState +
+ + +

Sets the depth-stencil state of the output-merger stage.

+
+

Pointer to a depth-stencil state interface (see ) to bind to the device. Set this to null to use the default state listed in .

+

Reference value to perform against when doing a depth-stencil test. See remarks.

+ +

To create a depth-stencil state interface, call .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476463 + void ID3D11DeviceContext::OMSetDepthStencilState([In, Optional] ID3D11DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef) + ID3D11DeviceContext::OMSetDepthStencilState +
+ + +

Get references to the resources bound to the output-merger stage.

+
+

Number of render targets to retrieve.

+

Pointer to an array of s which represent render target views. Specify null for this parameter when retrieval of a render target is not needed.

+

Pointer to a , which represents a depth-stencil view. Specify null for this parameter when retrieval of the depth-stencil view is not needed.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476460 + void ID3D11DeviceContext::OMGetRenderTargets([In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView) + ID3D11DeviceContext::OMGetRenderTargets +
+ + +

Get references to the resources bound to the output-merger stage.

+
+

The number of render-target views to retrieve.

+

Pointer to an array of s, which represent render-target views. Specify null for this parameter when retrieval of render-target views is not required.

+

Pointer to a , which represents a depth-stencil view. Specify null for this parameter when retrieval of the depth-stencil view is not required.

+

Index into a zero-based array to begin retrieving unordered-access views (ranges from 0 to - 1). For pixel shaders UAVStartSlot should be equal to the number of render-target views that are bound.

+

Number of unordered-access views to return in ppUnorderedAccessViews. This number ranges from 0 to - UAVStartSlot.

+

Pointer to an array of s, which represent unordered-access views that are retrieved. Specify null for this parameter when retrieval of unordered-access views is not required.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476461 + void ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews +
+ + +

Get the blend state of the output-merger stage.

+
+

Address of a reference to a blend-state interface (see ).

+

Array of blend factors, one for each RGBA component.

+

Pointer to a sample mask.

+ +

The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak.

Windows?Phone?8: This API is supported.

+
+ + ff476458 + void ID3D11DeviceContext::OMGetBlendState([Out, Optional] ID3D11BlendState** ppBlendState,[Out, Optional] SHARPDX_COLOR4* BlendFactor,[Out, Optional] unsigned int* pSampleMask) + ID3D11DeviceContext::OMGetBlendState +
+ + +

Gets the depth-stencil state of the output-merger stage.

+
+

Address of a reference to a depth-stencil state interface (see ) to be filled with information from the device.

+

Pointer to the stencil reference value used in the depth-stencil test.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476459 + void ID3D11DeviceContext::OMGetDepthStencilState([Out, Optional] ID3D11DepthStencilState** ppDepthStencilState,[Out, Optional] unsigned int* pStencilRef) + ID3D11DeviceContext::OMGetDepthStencilState +
+ + + Gets or sets the blend factor. + + The blend factor. + + + + Gets or sets the blend sample mask. + + The blend sample mask. + + + + Gets or sets the state of the blend. + + The state of the blend. + + + + Gets or sets the depth stencil reference. + + The depth stencil reference. + + + + Gets or sets the state of the depth stencil. + + The state of the depth stencil. + + + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + + Get the array of {{viewports}} bound to the {{rasterizer stage}} + + An array of viewports (see ). + void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) + ff476477 + void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) + ID3D11DeviceContext::RSGetViewports + + + + Get the array of {{viewports}} bound to the {{rasterizer stage}} + + An array of viewports (see ). + void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) + ff476477 + void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) + ID3D11DeviceContext::RSGetViewports + + + + Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. + + An array of scissor rectangles (see ). + void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) + ff476475 + void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) + ID3D11DeviceContext::RSGetScissorRects + + + + Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. + + An array of scissor rectangles (see ). + void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) + ff476475 + void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) + ID3D11DeviceContext::RSGetScissorRects + + + + Binds a single scissor rectangle to the rasterizer stage. + + The left. + The top. + The right. + The bottom. + +

All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

+
+ ff476478 + void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) + ID3D11DeviceContext::RSSetScissorRects +
+ + + Binds a set of scissor rectangles to the rasterizer stage. + + The set of scissor rectangles to bind. + +

All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

+
+ ff476478 + void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) + ID3D11DeviceContext::RSSetScissorRects +
+ + + Binds a single viewport to the rasterizer stage. + + The x coordinate of the viewport. + The y coordinate of the viewport. + The width. + The height. + The min Z. + The max Z. + +

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

+
+ ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +
+ + + Binds a single viewport to the rasterizer stage. + + The viewport. + +

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

+
+ ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +
+ + + Binds a set of viewports to the rasterizer stage. + + The set of viewports to bind. + The number of viewport to set. + ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

+
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the rasterizer state for the rasterizer stage of the pipeline.

+
+ No documentation. + +

To create a rasterizer state interface, call .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476479 + void ID3D11DeviceContext::RSSetState([In, Optional] ID3D11RasterizerState* pRasterizerState) + ID3D11DeviceContext::RSSetState +
+ + +

Bind an array of viewports to the rasterizer stage of the pipeline.

+
+

Number of viewports to bind.

+

An array of structures to bind to the device. See the structure page for details about how the viewport size is dependent on the device feature level which has changed between Direct3D 11 and Direct3D 10.

+ +

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

Note??Even though you specify float values to the members of the structure for the pViewports array in a call to for feature levels 9_x, RSSetViewports uses DWORDs internally. Because of this behavior, when you use a negative top left corner for the viewport, the call to RSSetViewports for feature levels 9_x fails. This failure occurs because RSSetViewports for 9_x casts the floating point values into unsigned integers without validation, which results in integer overflow.

Windows?Phone?8: This API is supported.

+
+ + ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +
+ + +

Bind an array of scissor rectangles to the rasterizer stage.

+
+

Number of scissor rectangles to bind.

+

An array of scissor rectangles (see D3D11_RECT).

+ +

All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

Windows?Phone?8: This API is supported.

+
+ + ff476478 + void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) + ID3D11DeviceContext::RSSetScissorRects +
+ + +

Get the rasterizer state from the rasterizer stage of the pipeline.

+
+ No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476476 + void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState) + ID3D11DeviceContext::RSGetState +
+ + +

Gets the array of viewports bound to the rasterizer stage.

+
+

A reference to a variable that, on input, specifies the number of viewports (ranges from 0 to D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) in the pViewports array; on output, the variable contains the actual number of viewports that are bound to the rasterizer stage. If pViewports is null, RSGetViewports fills the variable with the number of viewports currently bound.

Note??In some versions of the Windows SDK, a debug device will raise an exception if the input value in the variable to which pNumViewports points is greater than D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE even if pViewports is null. The regular runtime ignores the value in the variable to which pNumViewports points when pViewports is null. This behavior of a debug device might be corrected in a future release of the Windows SDK.

+

An array of structures for the viewports that are bound to the rasterizer stage. If the number of viewports (in the variable to which pNumViewports points) is greater than the actual number of viewports currently bound, unused elements of the array contain 0. For info about how the viewport size depends on the device feature level, which has changed between Direct3D 11 and Direct3D 10, see .

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476477 + void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) + ID3D11DeviceContext::RSGetViewports +
+ + +

Get the array of scissor rectangles bound to the rasterizer stage.

+
+

The number of scissor rectangles (ranges between 0 and D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) bound; set pRects to null to use pNumRects to see how many rectangles would be returned.

+

An array of scissor rectangles (see D3D11_RECT). If NumRects is greater than the number of scissor rects currently bound, then unused members of the array will contain 0.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476475 + void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) + ID3D11DeviceContext::RSGetScissorRects +
+ + +

Get or sets the rasterizer state from the rasterizer stage of the pipeline.

+
+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476476 + RSGetState / RSSetState + RSGetState + void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState) +
+ + +

A domain-shader interface manages an executable program (a domain shader) that controls the domain-shader stage.

+
+ +

The domain-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a domain-shader interface, call . Before using a domain shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

+
+ + ff476535 + ID3D11DomainShader + ID3D11DomainShader +
+ + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Encapsulates forward and inverse FFTs.

+
+ + ff476846 + ID3DX11FFT + ID3DX11FFT +
+ + + Initializes a new instance of the class. + + The device context used to create the FFT. + Information that describes the shape of the FFT data as well as the scaling factors that should be used for forward and inverse transforms. + + + + Initializes a new instance of the class. + + The device context used to create the FFT. + Information that describes the shape of the FFT data as well as the scaling factors that should be used for forward and inverse transforms. + Flag affecting the behavior of the FFT. + + + + Attaches buffers to an FFT context and performs any required precomputations. + + + The buffers must be no smaller than the corresponding buffer sizes returned by D3DX11CreateFFT*(). Temporary buffers can be shared between multiple contexts, though care should be taken not to concurrently execute multiple FFTs which share temp buffers. + + Temporary buffers to attach. + Buffers to hold precomputed data. + Returns one of the return codes described in the topic {{Direct3D 11 Return Codes}}. + HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes) + + + + Creates a new one-dimensional complex FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + an interface reference. + HRESULT D3DX11CreateFFT1DComplex([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new one-dimensional complex FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . + an interface reference. + HRESULT D3DX11CreateFFT1DComplex([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new one-dimensional real FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new one-dimensional real FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new two-dimensional complex FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new two-dimensional complex FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new two-dimensional real FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new two-dimensional real FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new three-dimensional complex FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + Length of the third dimension of the FFT. + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new three-dimensional complex FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + Length of the third dimension of the FFT. + Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new three-dimensional real FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + Length of the third dimension of the FFT. + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Creates a new three-dimensional real FFT. + + Pointer to the interface to use for the FFT. + Length of the first dimension of the FFT. + Length of the second dimension of the FFT. + Length of the third dimension of the FFT. + Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . + an interface reference. + HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + + + + Performs a forward FFT. + + Pointer to onto the input buffer. + + Returns the computation in a temp buffers; in addition, the last buffer written to is returned. + + HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) + + ForwardTransform can be called after buffers have been attached to the context using . The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.The format of complex data is interleaved components (for example, (Real0, Imag0), (Real1, Imag1) ... , and so on). Data is stored in row major order. + + + + + Performs an inverse FFT. + + Pointer to onto the input buffer. + + Returns the computation in a temp buffers; in addition, the last buffer written to is returned. + + HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) + + + + Performs a forward FFT. + + Pointer to onto the input buffer. + Buffer reference used as the output buffer. + Returns one of the return codes described in the topic Direct3D 11 Return Codes. + HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) + + ForwardTransform can be called after buffers have been attached to the context using . The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.The format of complex data is interleaved components (for example, (Real0, Imag0), (Real1, Imag1) ... , and so on). Data is stored in row major order. + + + + + Performs an inverse FFT. + + Pointer to onto the input buffer. + Buffer reference used as the output buffer. + Returns one of the return codes described in the topic Direct3D 11 Return Codes. + HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets the scale used for forward transforms.

+
+

The scale to use for forward transforms. Setting ForwardScale to 0 causes the default values of 1 to be used.

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

SetForwardScale sets the scale used by .

+
+ + ff476852 + HRESULT ID3DX11FFT::SetForwardScale([In] float ForwardScale) + ID3DX11FFT::SetForwardScale +
+ + +

Gets the scale for forward transforms.

+
+

Scale for forward transforms.

+ + ff476849 + float ID3DX11FFT::GetForwardScale() + ID3DX11FFT::GetForwardScale +
+ + +

Sets the scale used for inverse transforms.

+
+

Scale used for inverse transforms. Setting InverseScale to 0 causes the default value of 1/N to be used, where N is the product of the transformed dimension lengths.

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

SetInverseScale sets the scale used by .

+
+ + ff476853 + HRESULT ID3DX11FFT::SetInverseScale([In] float InverseScale) + ID3DX11FFT::SetInverseScale +
+ + +

Get the scale for inverse transforms.

+
+

Scale for inverse transforms.

+ + ff476850 + float ID3DX11FFT::GetInverseScale() + ID3DX11FFT::GetInverseScale +
+ + +

Attaches buffers to an FFT context and performs any required precomputations.

+
+

Number of buffers in ppTempBuffers.

+

A reference to an array of references for the temporary buffers to attach. The FFT object might use these temporary buffers for its algorithm.

+

Number of buffers in ppPrecomputeBuffers.

+

A reference to an array of references for the precompute buffers to attach. The FFT object might store precomputed data in these buffers.

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

The structure is initialized by a call to one of the create-FFT functions (for example, ). For more create-FFT functions, see D3DCSX 11 Functions.

Use the info in to allocate raw buffers of the specified (or larger) sizes and then call the AttachBuffersAndPrecompute to register the buffers with the FFT object.

Although you can share temporary buffers between multiple device contexts, we recommend not to concurrently execute multiple FFT objects that share temporary buffers.

Some FFT algorithms benefit from precomputing sin and cos. The FFT object might store precomputed data in the user-supplied precompute buffers.

+
+ + ff476847 + HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] unsigned int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] unsigned int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes) + ID3DX11FFT::AttachBuffersAndPrecompute +
+ + +

Attaches buffers to an FFT context and performs any required precomputations.

+
+

Number of buffers in ppTempBuffers.

+

A reference to an array of references for the temporary buffers to attach. The FFT object might use these temporary buffers for its algorithm.

+

Number of buffers in ppPrecomputeBuffers.

+

A reference to an array of references for the precompute buffers to attach. The FFT object might store precomputed data in these buffers.

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

The structure is initialized by a call to one of the create-FFT functions (for example, ). For more create-FFT functions, see D3DCSX 11 Functions.

Use the info in to allocate raw buffers of the specified (or larger) sizes and then call the AttachBuffersAndPrecompute to register the buffers with the FFT object.

Although you can share temporary buffers between multiple device contexts, we recommend not to concurrently execute multiple FFT objects that share temporary buffers.

Some FFT algorithms benefit from precomputing sin and cos. The FFT object might store precomputed data in the user-supplied precompute buffers.

+
+ + ff476847 + HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] unsigned int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] unsigned int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes) + ID3DX11FFT::AttachBuffersAndPrecompute +
+ + +

Performs a forward FFT.

+
+

Pointer to onto the input buffer.

+

Pointer to a reference. If *ppOutputBuffer is null, the computation will switch between temp buffers; in addition, the last buffer written to is stored at *ppOutputBuffer. Otherwise, *ppOutputBuffer is used as the output buffer (which might incur an extra copy).

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

ForwardTransform can be called after buffers have been attached to the context using . The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.

The format of complex data is interleaved components (for example, (Real0, Imag0), (Real1, Imag1) ... , and so on). Data is stored in row major order.

+
+ + ff476848 + HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) + ID3DX11FFT::ForwardTransform +
+ + +

Performs an inverse FFT.

+
+

Pointer to onto the input buffer.

+

Pointer to a reference. If *ppOutput is null, then the computation will switch between temp buffers; in addition, the last buffer written to is stored at *ppOutput. Otherwise, *ppOutput is used as the output buffer (which might incur an extra copy).

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ + ff476851 + HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) + ID3DX11FFT::InverseTransform +
+ + + Gets the buffer requirements. + + The buffer requirements. + + + +

Gets or sets the scale for forward transforms.

+
+ + ff476849 + GetForwardScale / SetForwardScale + GetForwardScale + float ID3DX11FFT::GetForwardScale() +
+ + +

Get or sets the scale for inverse transforms.

+
+ + ff476850 + GetInverseScale / SetInverseScale + GetInverseScale + float ID3DX11FFT::GetInverseScale() +
+ + +

Optional flags that control the behavior of .

+
+ + ff476084 + D3D11_ASYNC_GETDATA_FLAG + D3D11_ASYNC_GETDATA_FLAG +
+ + + No documentation. + + + ff476084 + D3D11_ASYNC_GETDATA_DONOTFLUSH + D3D11_ASYNC_GETDATA_DONOTFLUSH + + + + None. + + + None + None + + + +

Identifies how to bind a resource to the pipeline.

+
+ +

In general, binding flags can be combined using a logical OR (except the constant-buffer flag); however, you should use a single flag to allow the device to optimize the resource usage.

This enumeration is used by a:

  • Buffer description when creating a buffer.
  • Texture description when creating a texture (see or or ).

A shader-resource buffer is NOT a constant buffer; rather, it is a texture or buffer resource that is bound to a shader, that contains texture or buffer data (it is not limited to a single element type in the buffer). A shader-resource buffer is created with the flag and is bound to the pipeline using one of these APIs: , , or . Furthermore, a shader-resource buffer cannot use the flag.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

+
+ + ff476085 + D3D11_BIND_FLAG + D3D11_BIND_FLAG +
+ + +

Bind a buffer as a vertex buffer to the input-assembler stage.

+
+ + ff476085 + D3D11_BIND_VERTEX_BUFFER + D3D11_BIND_VERTEX_BUFFER +
+ + +

Bind a buffer as an index buffer to the input-assembler stage.

+
+ + ff476085 + D3D11_BIND_INDEX_BUFFER + D3D11_BIND_INDEX_BUFFER +
+ + +

Bind a buffer as a constant buffer to a shader stage; this flag may NOT be combined with any other bind flag.

+
+ + ff476085 + D3D11_BIND_CONSTANT_BUFFER + D3D11_BIND_CONSTANT_BUFFER +
+ + +

Bind a buffer or texture to a shader stage; this flag cannot be used with the flag.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

+
+ + ff476085 + D3D11_BIND_SHADER_RESOURCE + D3D11_BIND_SHADER_RESOURCE +
+ + +

Bind an output buffer for the stream-output stage.

+
+ + ff476085 + D3D11_BIND_STREAM_OUTPUT + D3D11_BIND_STREAM_OUTPUT +
+ + +

Bind a texture as a render target for the output-merger stage.

+
+ + ff476085 + D3D11_BIND_RENDER_TARGET + D3D11_BIND_RENDER_TARGET +
+ + +

Bind a texture as a depth-stencil target for the output-merger stage.

+
+ + ff476085 + D3D11_BIND_DEPTH_STENCIL + D3D11_BIND_DEPTH_STENCIL +
+ + +

Bind an unordered access resource.

+
+ + ff476085 + D3D11_BIND_UNORDERED_ACCESS + D3D11_BIND_UNORDERED_ACCESS +
+ + + None. + + + None + None + + + +

RGB or alpha blending operation.

+
+ +

The runtime implements RGB blending and alpha blending separately. Therefore, blend state requires separate blend operations for RGB data and alpha data. These blend operations are specified in a blend description. The two sources ?source 1 and source 2? are shown in the blending block diagram.

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

+
+ + ff476088 + D3D11_BLEND_OP + D3D11_BLEND_OP +
+ + +

Add source 1 and source 2.

+
+ + ff476088 + D3D11_BLEND_OP_ADD + D3D11_BLEND_OP_ADD +
+ + +

Subtract source 1 from source 2.

+
+ + ff476088 + D3D11_BLEND_OP_SUBTRACT + D3D11_BLEND_OP_SUBTRACT +
+ + +

Subtract source 2 from source 1.

+
+ + ff476088 + D3D11_BLEND_OP_REV_SUBTRACT + D3D11_BLEND_OP_REV_SUBTRACT +
+ + +

Find the minimum of source 1 and source 2.

+
+ + ff476088 + D3D11_BLEND_OP_MIN + D3D11_BLEND_OP_MIN +
+ + +

Find the maximum of source 1 and source 2.

+
+ + ff476088 + D3D11_BLEND_OP_MAX + D3D11_BLEND_OP_MAX +
+ + +

Describes the blend state that you use in a call to to create a blend-state object.

+
+ +

Here are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

Note?? is identical to .

If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the display device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the display device performs the blend in linear space, which is ideal.

+
+ + ff476087 + D3D11_BLEND + D3D11_BLEND +
+ + + No documentation. + + + ff476087 + D3D11_BLEND_ZERO + D3D11_BLEND_ZERO + + + + No documentation. + + + ff476087 + D3D11_BLEND_ONE + D3D11_BLEND_ONE + + + + No documentation. + + + ff476087 + D3D11_BLEND_SRC_COLOR + D3D11_BLEND_SRC_COLOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_INV_SRC_COLOR + D3D11_BLEND_INV_SRC_COLOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_SRC_ALPHA + D3D11_BLEND_SRC_ALPHA + + + + No documentation. + + + ff476087 + D3D11_BLEND_INV_SRC_ALPHA + D3D11_BLEND_INV_SRC_ALPHA + + + + No documentation. + + + ff476087 + D3D11_BLEND_DEST_ALPHA + D3D11_BLEND_DEST_ALPHA + + + + No documentation. + + + ff476087 + D3D11_BLEND_INV_DEST_ALPHA + D3D11_BLEND_INV_DEST_ALPHA + + + + No documentation. + + + ff476087 + D3D11_BLEND_DEST_COLOR + D3D11_BLEND_DEST_COLOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_INV_DEST_COLOR + D3D11_BLEND_INV_DEST_COLOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_SRC_ALPHA_SAT + D3D11_BLEND_SRC_ALPHA_SAT + + + + No documentation. + + + ff476087 + D3D11_BLEND_BLEND_FACTOR + D3D11_BLEND_BLEND_FACTOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_INV_BLEND_FACTOR + D3D11_BLEND_INV_BLEND_FACTOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_SRC1_COLOR + D3D11_BLEND_SRC1_COLOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_INV_SRC1_COLOR + D3D11_BLEND_INV_SRC1_COLOR + + + + No documentation. + + + ff476087 + D3D11_BLEND_SRC1_ALPHA + D3D11_BLEND_SRC1_ALPHA + + + + No documentation. + + + ff476087 + D3D11_BLEND_INV_SRC1_ALPHA + D3D11_BLEND_INV_SRC1_ALPHA + + + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

These flags are used by functions which operate on one or more channels in a texture.

+
+ + ff476302 + D3DX11_CHANNEL_FLAG + D3DX11_CHANNEL_FLAG +
+ + +

Indicates the red channel should be used.

+
+ + ff476302 + D3DX11_CHANNEL_RED + D3DX11_CHANNEL_RED +
+ + +

Indicates the blue channel should be used.

+
+ + ff476302 + D3DX11_CHANNEL_BLUE + D3DX11_CHANNEL_BLUE +
+ + +

Indicates the green channel should be used.

+
+ + ff476302 + D3DX11_CHANNEL_GREEN + D3DX11_CHANNEL_GREEN +
+ + +

Indicates the alpha channel should be used.

+
+ + ff476302 + D3DX11_CHANNEL_ALPHA + D3DX11_CHANNEL_ALPHA +
+ + +

Indicates the luminaces of the red, green, and blue channels should be used.

+
+ + ff476302 + D3DX11_CHANNEL_LUMINANCE + D3DX11_CHANNEL_LUMINANCE +
+ + + None. + + + None + None + + + +

Identify which components of each pixel of a render target are writable during blending.

+
+ +

These flags can be combined with a bitwise OR.

+
+ + ff476100 + D3D11_COLOR_WRITE_ENABLE + D3D11_COLOR_WRITE_ENABLE +
+ + +

Allow data to be stored in the red component.

+
+ + ff476100 + D3D11_COLOR_WRITE_ENABLE_RED + D3D11_COLOR_WRITE_ENABLE_RED +
+ + +

Allow data to be stored in the green component.

+
+ + ff476100 + D3D11_COLOR_WRITE_ENABLE_GREEN + D3D11_COLOR_WRITE_ENABLE_GREEN +
+ + +

Allow data to be stored in the blue component.

+
+ + ff476100 + D3D11_COLOR_WRITE_ENABLE_BLUE + D3D11_COLOR_WRITE_ENABLE_BLUE +
+ + +

Allow data to be stored in the alpha component.

+
+ + ff476100 + D3D11_COLOR_WRITE_ENABLE_ALPHA + D3D11_COLOR_WRITE_ENABLE_ALPHA +
+ + +

Allow data to be stored in all components.

+
+ + ff476100 + D3D11_COLOR_WRITE_ENABLE_ALL + D3D11_COLOR_WRITE_ENABLE_ALL +
+ + +

Comparison options.

+
+ +

A comparison option determines whether how the runtime compares source (new) data against destination (existing) data before storing the new data. The comparison option is declared in a description before an object is created. The API allows you to set a comparison option for a depth-stencil buffer (see ), depth-stencil operations (see ), or sampler state (see ).

+
+ + ff476101 + D3D11_COMPARISON_FUNC + D3D11_COMPARISON_FUNC +
+ + +

Never pass the comparison.

+
+ + ff476101 + D3D11_COMPARISON_NEVER + D3D11_COMPARISON_NEVER +
+ + +

If the source data is less than the destination data, the comparison passes.

+
+ + ff476101 + D3D11_COMPARISON_LESS + D3D11_COMPARISON_LESS +
+ + +

If the source data is equal to the destination data, the comparison passes.

+
+ + ff476101 + D3D11_COMPARISON_EQUAL + D3D11_COMPARISON_EQUAL +
+ + +

If the source data is less than or equal to the destination data, the comparison passes.

+
+ + ff476101 + D3D11_COMPARISON_LESS_EQUAL + D3D11_COMPARISON_LESS_EQUAL +
+ + +

If the source data is greater than the destination data, the comparison passes.

+
+ + ff476101 + D3D11_COMPARISON_GREATER + D3D11_COMPARISON_GREATER +
+ + +

If the source data is not equal to the destination data, the comparison passes.

+
+ + ff476101 + D3D11_COMPARISON_NOT_EQUAL + D3D11_COMPARISON_NOT_EQUAL +
+ + +

If the source data is greater than or equal to the destination data, the comparison passes.

+
+ + ff476101 + D3D11_COMPARISON_GREATER_EQUAL + D3D11_COMPARISON_GREATER_EQUAL +
+ + +

Always pass the comparison.

+
+ + ff476101 + D3D11_COMPARISON_ALWAYS + D3D11_COMPARISON_ALWAYS +
+ + +

Unordered resource support options for a compute shader resource (see ).

+
+ + ff476135 + D3D11_FORMAT_SUPPORT2 + D3D11_FORMAT_SUPPORT2 +
+ + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD + + + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS + + + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE + + + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE + + + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX + + + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX + + + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD + D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD + + + + No documentation. + + + ff476135 + D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE + D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE + + + + None. + + + None + None + + + +

Options for performance counters.

+
+ +

Independent hardware vendors may define their own set of performance counters for their devices, by giving the enumeration value a number that is greater than the value for .

This enumeration is used by and .

+
+ + ff476102 + D3D11_COUNTER + D3D11_COUNTER +
+ + +

Define a performance counter that is dependent on the hardware device.

+
+ + ff476102 + D3D11_COUNTER_DEVICE_DEPENDENT_0 + D3D11_COUNTER_DEVICE_DEPENDENT_0 +
+ + +

Data type of a performance counter.

+
+ +

These flags are an output parameter in .

+
+ + ff476105 + D3D11_COUNTER_TYPE + D3D11_COUNTER_TYPE +
+ + +

32-bit floating point.

+
+ + ff476105 + D3D11_COUNTER_TYPE_FLOAT32 + D3D11_COUNTER_TYPE_FLOAT32 +
+ + +

16-bit unsigned integer.

+
+ + ff476105 + D3D11_COUNTER_TYPE_UINT16 + D3D11_COUNTER_TYPE_UINT16 +
+ + +

32-bit unsigned integer.

+
+ + ff476105 + D3D11_COUNTER_TYPE_UINT32 + D3D11_COUNTER_TYPE_UINT32 +
+ + +

64-bit unsigned integer.

+
+ + ff476105 + D3D11_COUNTER_TYPE_UINT64 + D3D11_COUNTER_TYPE_UINT64 +
+ + +

Specifies the types of CPU access allowed for a resource.

+
+ +

This enumeration is used in , , , .

Applications may combine one or more of these flags with a logical OR. When possible, create resources with no CPU access flags, as this enables better resource optimization.

The cannot be used when creating resources with D3D11_CPU_ACCESS flags.

+
+ + ff476106 + D3D11_CPU_ACCESS_FLAG + D3D11_CPU_ACCESS_FLAG +
+ + +

The resource is to be mappable so that the CPU can change its contents. Resources created with this flag cannot be set as outputs of the pipeline and must be created with either dynamic or staging usage (see ).

+
+ + ff476106 + D3D11_CPU_ACCESS_WRITE + D3D11_CPU_ACCESS_WRITE +
+ + +

The resource is to be mappable so that the CPU can read its contents. Resources created with this flag cannot be set as either inputs or outputs to the pipeline and must be created with staging usage (see ).

+
+ + ff476106 + D3D11_CPU_ACCESS_READ + D3D11_CPU_ACCESS_READ +
+ + + None. + + + None + None + + + +

Indicates triangles facing a particular direction are not drawn.

+
+ +

This enumeration is part of a rasterizer-state object description (see ).

+
+ + ff476108 + D3D11_CULL_MODE + D3D11_CULL_MODE +
+ + +

Always draw all triangles.

+
+ + ff476108 + D3D11_CULL_NONE + D3D11_CULL_NONE +
+ + +

Do not draw triangles that are front-facing.

+
+ + ff476108 + D3D11_CULL_FRONT + D3D11_CULL_FRONT +
+ + +

Do not draw triangles that are back-facing.

+
+ + ff476108 + D3D11_CULL_BACK + D3D11_CULL_BACK +
+ + + No documentation. + + + D3D11_DEBUG_FEATURE_FLAGS + D3D11_DEBUG_FEATURE_FLAGS + + + + No documentation. + + + D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP + D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP + + + + No documentation. + + + D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP + D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP + + + + No documentation. + + + D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP + D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP + + + +

Specifies the parts of the depth stencil to clear.

+
+ +

These flags are used when calling ; the flags can be combined with a bitwise OR.

+
+ + ff476099 + D3D11_CLEAR_FLAG + D3D11_CLEAR_FLAG +
+ + +

Clear the depth buffer.

+
+ + ff476099 + D3D11_CLEAR_DEPTH + D3D11_CLEAR_DEPTH +
+ + +

Clear the stencil buffer.

+
+ + ff476099 + D3D11_CLEAR_STENCIL + D3D11_CLEAR_STENCIL +
+ + +

Specifies how to access a resource used in a depth-stencil view.

+
+ +

This enumeration is used in to create a depth-stencil view.

+
+ + ff476115 + D3D11_DSV_DIMENSION + D3D11_DSV_DIMENSION +
+ + +

is not a valid value for and is not used.

+
+ + ff476115 + D3D11_DSV_DIMENSION_UNKNOWN + D3D11_DSV_DIMENSION_UNKNOWN +
+ + +

The resource will be accessed as a 1D texture.

+
+ + ff476115 + D3D11_DSV_DIMENSION_TEXTURE1D + D3D11_DSV_DIMENSION_TEXTURE1D +
+ + +

The resource will be accessed as an array of 1D textures.

+
+ + ff476115 + D3D11_DSV_DIMENSION_TEXTURE1DARRAY + D3D11_DSV_DIMENSION_TEXTURE1DARRAY +
+ + +

The resource will be accessed as a 2D texture.

+
+ + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2D + D3D11_DSV_DIMENSION_TEXTURE2D +
+ + +

The resource will be accessed as an array of 2D textures.

+
+ + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2DARRAY + D3D11_DSV_DIMENSION_TEXTURE2DARRAY +
+ + +

The resource will be accessed as a 2D texture with multisampling.

+
+ + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2DMS + D3D11_DSV_DIMENSION_TEXTURE2DMS +
+ + +

The resource will be accessed as an array of 2D textures with multisampling.

+
+ + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY + D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY +
+ + +

Depth-stencil view options.

+
+ +

This enumeration is used by .

Limiting a depth-stencil buffer to read-only access allows more than one depth-stencil view to be bound to the pipeline simultaneously, since it is not possible to have a read/write conflicts between separate views.

+
+ + ff476116 + D3D11_DSV_FLAG + D3D11_DSV_FLAG +
+ + +

Indicates that depth values are read only.

+
+ + ff476116 + D3D11_DSV_READ_ONLY_DEPTH + D3D11_DSV_READ_ONLY_DEPTH +
+ + +

Indicates that stencil values are read only.

+
+ + ff476116 + D3D11_DSV_READ_ONLY_STENCIL + D3D11_DSV_READ_ONLY_STENCIL +
+ + + None. + + + None + None + + + +

Identify the portion of a depth-stencil buffer for writing depth data.

+
+ + ff476113 + D3D11_DEPTH_WRITE_MASK + D3D11_DEPTH_WRITE_MASK +
+ + +

Turn off writes to the depth-stencil buffer.

+
+ + ff476113 + D3D11_DEPTH_WRITE_MASK_ZERO + D3D11_DEPTH_WRITE_MASK_ZERO +
+ + +

Turn on writes to the depth-stencil buffer.

+
+ + ff476113 + D3D11_DEPTH_WRITE_MASK_ALL + D3D11_DEPTH_WRITE_MASK_ALL +
+ + +

Device context options.

+
+ +

This enumeration is used by .

+
+ + ff476114 + D3D11_DEVICE_CONTEXT_TYPE + D3D11_DEVICE_CONTEXT_TYPE +
+ + +

The device context is an immediate context.

+
+ + ff476114 + D3D11_DEVICE_CONTEXT_IMMEDIATE + D3D11_DEVICE_CONTEXT_IMMEDIATE +
+ + +

The device context is a deferred context.

+
+ + ff476114 + D3D11_DEVICE_CONTEXT_DEFERRED + D3D11_DEVICE_CONTEXT_DEFERRED +
+ + +

Describes parameters that are used to create a device.

+
+ +

Device creation flags are used by and .

An application might dynamically create (and destroy) threads to improve performance especially on a machine with multiple CPU cores. There may be cases, however, when an application needs to prevent extra threads from being created. This can happen when you want to simplify debugging, profile code or develop a tool for instance. For these cases, use to request that the runtime and video driver not create any additional threads that might interfere with the application.

+
+ + ff476107 + D3D11_CREATE_DEVICE_FLAG + D3D11_CREATE_DEVICE_FLAG +
+ + +

Use this flag if your application will only call methods of Direct3D?11 interfaces from a single thread. By default, the object is thread-safe. By using this flag, you can increase performance. However, if you use this flag and your application calls methods of Direct3D?11 interfaces from multiple threads, undefined behavior might result.

+
+ + ff476107 + D3D11_CREATE_DEVICE_SINGLETHREADED + D3D11_CREATE_DEVICE_SINGLETHREADED +
+ + +

Creates a device that supports the debug layer.

To use this flag, you must have D3D11*SDKLayers.dll installed; otherwise, device creation fails. To get D3D11_1SDKLayers.dll, install the SDK for Windows?8.

+
+ + ff476107 + D3D11_CREATE_DEVICE_DEBUG + D3D11_CREATE_DEVICE_DEBUG +
+ + +

Note??This flag is not supported in Direct3D?11.

+
+ + ff476107 + D3D11_CREATE_DEVICE_SWITCH_TO_REF + D3D11_CREATE_DEVICE_SWITCH_TO_REF +
+ + +

Prevents multiple threads from being created. When this flag is used with a Windows Advanced Rasterization Platform (WARP) device, no additional threads will be created by WARP and all rasterization will occur on the calling thread. This flag is not recommended for general use. See remarks.

+
+ + ff476107 + D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS + D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS +
+ + +

Required for Direct2D interoperability with Direct3D resources.

+
+ + ff476107 + D3D11_CREATE_DEVICE_BGRA_SUPPORT + D3D11_CREATE_DEVICE_BGRA_SUPPORT +
+ + + None. + + + None + None + + + +

FFT creation flags.

+
+ + ff476309 + D3DX11_FFT_CREATE_FLAG + D3DX11_FFT_CREATE_FLAG +
+ + +

Do not AddRef or Release temp and precompute buffers, caller is responsible for holding references to these buffers.

+
+ + ff476309 + D3DX11_FFT_CREATE_FLAG_NO_PRECOMPUTE_BUFFERS + D3DX11_FFT_CREATE_FLAG_NO_PRECOMPUTE_BUFFERS +
+ + + None. + + + None + None + + + +

FFT data types.

+
+ + ff476310 + D3DX11_FFT_DATA_TYPE + D3DX11_FFT_DATA_TYPE +
+ + +

Real numbers.

+
+ + ff476310 + D3DX11_FFT_DATA_TYPE_REAL + D3DX11_FFT_DATA_TYPE_REAL +
+ + +

Complex numbers.

+
+ + ff476310 + D3DX11_FFT_DATA_TYPE_COMPLEX + D3DX11_FFT_DATA_TYPE_COMPLEX +
+ + +

Number of dimensions for FFT data.

+
+ + ff476312 + D3DX11_FFT_DIM_MASK + D3DX11_FFT_DIM_MASK +
+ + +

One dimension.

+
+ + ff476312 + D3DX11_FFT_DIM_MASK_1D + D3DX11_FFT_DIM_MASK_1D +
+ + +

Two dimensions.

+
+ + ff476312 + D3DX11_FFT_DIM_MASK_2D + D3DX11_FFT_DIM_MASK_2D +
+ + +

Three dimensions.

+
+ + ff476312 + D3DX11_FFT_DIM_MASK_3D + D3DX11_FFT_DIM_MASK_3D +
+ + +

Direct3D 11 feature options.

+
+ +

This enumeration is used when querying a driver about support for these features by calling . Each value in this enumeration has a corresponding data structure that is required to be passed to the pFeatureSupportData parameter of .

The following table shows the structures associated with each enumeration value.

EnumerantAssociated Structure
D3D11_FEATURE_D3D11_OPTIONS D3D11_FEATURE_DATA_D3D11_OPTIONS
D3D11_FEATURE_ARCHITECTURE_INFO D3D11_FEATURE_DATA_ARCHITECTURE_INFO
D3D11_FEATURE_D3D9_OPTIONS D3D11_FEATURE_DATA_D3D9_OPTIONS
D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT
D3D11_FEATURE_D3D9_SHADOW_SUPPORT D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT
D3D11_FEATURE_D3D11_OPTIONS1 D3D11_FEATURE_DATA_D3D11_OPTIONS1
D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT
D3D11_FEATURE_MARKER_SUPPORT + D3D11_FEATURE_DATA_MARKER_SUPPORT
D3D11_FEATURE_D3D9_OPTIONS1 D3D11_FEATURE_DATA_D3D9_OPTIONS1

?

+
+ + ff476124 + D3D11_FEATURE + D3D11_FEATURE +
+ + +

The driver supports multithreading. To see an example of testing a driver for multithread support, see How To: Check for Driver Support.

+
+ + ff476124 + D3D11_FEATURE_THREADING + D3D11_FEATURE_THREADING +
+ + +

Supports the use of the double-precision shaders in HLSL.

+
+ + ff476124 + D3D11_FEATURE_DOUBLES + D3D11_FEATURE_DOUBLES +
+ + +

Supports the formats in .

+
+ + ff476124 + D3D11_FEATURE_FORMAT_SUPPORT + D3D11_FEATURE_FORMAT_SUPPORT +
+ + +

Supports the formats in .

+
+ + ff476124 + D3D11_FEATURE_FORMAT_SUPPORT2 + D3D11_FEATURE_FORMAT_SUPPORT2 +
+ + +

Supports compute shaders and raw and structured buffers.

+
+ + ff476124 + D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS + D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS +
+ + +

Determines the fill mode to use when rendering triangles.

+
+ +

This enumeration is part of a rasterizer-state object description (see ).

+
+ + ff476131 + D3D11_FILL_MODE + D3D11_FILL_MODE +
+ + +

Draw lines connecting the vertices. Adjacent vertices are not drawn.

+
+ + ff476131 + D3D11_FILL_WIREFRAME + D3D11_FILL_WIREFRAME +
+ + +

Fill the triangles formed by the vertices. Adjacent vertices are not drawn.

+
+ + ff476131 + D3D11_FILL_SOLID + D3D11_FILL_SOLID +
+ + +

Filtering options during texture sampling.

+
+ +

Note??If you use different filter types for min versus mag filter, undefined behavior occurs in certain cases where the choice between whether magnification or minification happens is ambiguous. To prevent this undefined behavior, use filter modes that use similar filter operations for both min and mag (or use anisotropic filtering, which avoids the issue as well).

During texture sampling, one or more texels are read and combined (this is calling filtering) to produce a single value. Point sampling reads a single texel while linear sampling reads two texels (endpoints) and linearly interpolates a third value between the endpoints.

HLSL texture-sampling functions also support comparison filtering during texture sampling. Comparison filtering compares each sampled texel against a comparison value. The boolean result is blended the same way that normal texture filtering is blended.

You can use HLSL intrinsic texture-sampling functions that implement texture filtering only or companion functions that use texture filtering with comparison filtering.

Texture Sampling FunctionTexture Sampling Function with Comparison Filtering
samplesamplecmp or samplecmplevelzero

?

Comparison filters only work with textures that have the following DXGI formats: R32_FLOAT_X8X24_TYPELESS, R32_FLOAT, R24_UNORM_X8_TYPELESS, R16_UNORM.

+
+ + ff476132 + D3D11_FILTER + D3D11_FILTER +
+ + +

Use point sampling for minification, magnification, and mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_MAG_MIP_POINT + D3D11_FILTER_MIN_MAG_MIP_POINT +
+ + +

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR + D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR +
+ + +

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT + D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT +
+ + +

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR + D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR +
+ + +

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT + D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT +
+ + +

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR + D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR +
+ + +

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT + D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT +
+ + +

Use linear interpolation for minification, magnification, and mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_MIN_MAG_MIP_LINEAR + D3D11_FILTER_MIN_MAG_MIP_LINEAR +
+ + +

Use anisotropic interpolation for minification, magnification, and mip-level sampling.

+
+ + ff476132 + D3D11_FILTER_ANISOTROPIC + D3D11_FILTER_ANISOTROPIC +
+ + +

Use point sampling for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT +
+ + +

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR +
+ + +

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT +
+ + +

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR +
+ + +

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT +
+ + +

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR +
+ + +

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT +
+ + +

Use linear interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR +
+ + +

Use anisotropic interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

+
+ + ff476132 + D3D11_FILTER_COMPARISON_ANISOTROPIC + D3D11_FILTER_COMPARISON_ANISOTROPIC +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Texture filtering flags.

+
+ +

D3DX11 automatically performs gamma correction (to convert color data from RGB space to standard RGB space) when loading texture data. This is automatically done for instance when RGB data is loaded from a .png file into an sRGB texture. Use the SRGB filter flags to indicate if the data does not need to be converted into sRGB space.

+
+ + ff476313 + D3DX11_FILTER_FLAG + D3DX11_FILTER_FLAG +
+ + +

No scaling or filtering will take place. Pixels outside the bounds of the source image are assumed to be transparent black.

+
+ + ff476313 + D3DX11_FILTER_NONE + D3DX11_FILTER_NONE +
+ + +

Each destination pixel is computed by sampling the nearest pixel from the source image.

+
+ + ff476313 + D3DX11_FILTER_POINT + D3DX11_FILTER_POINT +
+ + +

Each destination pixel is computed by sampling the four nearest pixels from the source image. This filter works best when the scale on both axes is less than two.

+
+ + ff476313 + D3DX11_FILTER_LINEAR + D3DX11_FILTER_LINEAR +
+ + +

Every pixel in the source image contributes equally to the destination image. This is the slowest of the filters.

+
+ + ff476313 + D3DX11_FILTER_TRIANGLE + D3DX11_FILTER_TRIANGLE +
+ + +

Each pixel is computed by averaging a 2x2(x2) box of pixels from the source image. This filter works only when the dimensions of the destination are half those of the source, as is the case with mipmaps.

+
+ + ff476313 + D3DX11_FILTER_BOX + D3DX11_FILTER_BOX +
+ + +

Pixels off the edge of the texture on the u-axis should be mirrored, not wrapped.

+
+ + ff476313 + D3DX11_FILTER_MIRROR_U + D3DX11_FILTER_MIRROR_U +
+ + +

Pixels off the edge of the texture on the v-axis should be mirrored, not wrapped.

+
+ + ff476313 + D3DX11_FILTER_MIRROR_V + D3DX11_FILTER_MIRROR_V +
+ + +

Pixels off the edge of the texture on the w-axis should be mirrored, not wrapped.

+
+ + ff476313 + D3DX11_FILTER_MIRROR_W + D3DX11_FILTER_MIRROR_W +
+ + +

Specifying this flag is the same as specifying the , , and flags.

+
+ + ff476313 + D3DX11_FILTER_MIRROR + D3DX11_FILTER_MIRROR +
+ + +

The resulting image must be dithered using a 4x4 ordered dither algorithm. This happens when converting from one format to another.

+
+ + ff476313 + D3DX11_FILTER_DITHER + D3DX11_FILTER_DITHER +
+ + +

Do diffuse dithering on the image when changing from one format to another.

+
+ + ff476313 + D3DX11_FILTER_DITHER_DIFFUSION + D3DX11_FILTER_DITHER_DIFFUSION +
+ + +

Input data is in standard RGB (sRGB) color space. See remarks.

+
+ + ff476313 + D3DX11_FILTER_SRGB_IN + D3DX11_FILTER_SRGB_IN +
+ + +

Output data is in standard RGB (sRGB) color space. See remarks.

+
+ + ff476313 + D3DX11_FILTER_SRGB_OUT + D3DX11_FILTER_SRGB_OUT +
+ + +

Same as specifying | . See remarks.

+
+ + ff476313 + D3DX11_FILTER_SRGB + D3DX11_FILTER_SRGB +
+ + +

Types of magnification or minification sampler filters.

+
+ + ff476133 + D3D11_FILTER_TYPE + D3D11_FILTER_TYPE +
+ + +

Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture.

+
+ + ff476133 + D3D11_FILTER_TYPE_POINT + D3D11_FILTER_TYPE_POINT +
+ + +

Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures.

+
+ + ff476133 + D3D11_FILTER_TYPE_LINEAR + D3D11_FILTER_TYPE_LINEAR +
+ + +

Which resources are supported for a given format and given device (see and ).

+
+ + ff476134 + D3D11_FORMAT_SUPPORT + D3D11_FORMAT_SUPPORT +
+ + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_BUFFER + D3D11_FORMAT_SUPPORT_BUFFER + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER + D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER + D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_SO_BUFFER + D3D11_FORMAT_SUPPORT_SO_BUFFER + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_TEXTURE1D + D3D11_FORMAT_SUPPORT_TEXTURE1D + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_TEXTURE2D + D3D11_FORMAT_SUPPORT_TEXTURE2D + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_TEXTURE3D + D3D11_FORMAT_SUPPORT_TEXTURE3D + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_TEXTURECUBE + D3D11_FORMAT_SUPPORT_TEXTURECUBE + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_SHADER_LOAD + D3D11_FORMAT_SUPPORT_SHADER_LOAD + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_MIP + D3D11_FORMAT_SUPPORT_MIP + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_MIP_AUTOGEN + D3D11_FORMAT_SUPPORT_MIP_AUTOGEN + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_RENDER_TARGET + D3D11_FORMAT_SUPPORT_RENDER_TARGET + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_BLENDABLE + D3D11_FORMAT_SUPPORT_BLENDABLE + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_DEPTH_STENCIL + D3D11_FORMAT_SUPPORT_DEPTH_STENCIL + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_CPU_LOCKABLE + D3D11_FORMAT_SUPPORT_CPU_LOCKABLE + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_DISPLAY + D3D11_FORMAT_SUPPORT_DISPLAY + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT + D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD + D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_SHADER_GATHER + D3D11_FORMAT_SUPPORT_SHADER_GATHER + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST + D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW + D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW + + + + No documentation. + + + ff476134 + D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON + D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON + + + + None. + + + None + None + + + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Image file formats supported by D3DX11Createxxx and D3DX11Savexxx functions.

+
+ +

See Types of Bitmaps (GDI+) for more information on some of these formats.

+
+ + ff476315 + D3DX11_IMAGE_FILE_FORMAT + D3DX11_IMAGE_FILE_FORMAT +
+ + +

Windows bitmap (BMP) file format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette. The file extension for this format is .bmp.

+
+ + ff476315 + D3DX11_IFF_BMP + D3DX11_IFF_BMP +
+ + +

Joint Photographic Experts Group (JPEG) compressed file format. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files. The file extension for this format is .jpg.

+
+ + ff476315 + D3DX11_IFF_JPG + D3DX11_IFF_JPG +
+ + +

Portable Network Graphics (PNG) file format. A non-proprietary bitmap format using lossless compression. The file extension for this format is .png.

+
+ + ff476315 + D3DX11_IFF_PNG + D3DX11_IFF_PNG +
+ + +

DirectDraw surface (DDS) file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. The file extension for this format is .dds.

+
+ + ff476315 + D3DX11_IFF_DDS + D3DX11_IFF_DDS +
+ + +

Tagged Image File Format (TIFF). The file extensions for this format are .tif and .tiff.

+
+ + ff476315 + D3DX11_IFF_TIFF + D3DX11_IFF_TIFF +
+ + +

Graphics Interchange Format (GIF). The file extension for this format is .gif.

+
+ + ff476315 + D3DX11_IFF_GIF + D3DX11_IFF_GIF +
+ + +

Windows Media Photo format (WMP). This format is also known as HD Photo and JPEG XR. The file extensions for this format are .hdp, .jxr, and .wdp.

To work properly, requires that you initialize COM. Therefore, call CoInitialize or CoInitializeEx in your application before you call D3DX.

+
+ + ff476315 + D3DX11_IFF_WMP + D3DX11_IFF_WMP +
+ + +

Type of data contained in an input slot.

+
+ +

Use these values to specify the type of data for a particular input element (see ) of an input-layout object.

+
+ + ff476179 + D3D11_INPUT_CLASSIFICATION + D3D11_INPUT_CLASSIFICATION +
+ + +

Input data is per-vertex data.

+
+ + ff476179 + D3D11_INPUT_PER_VERTEX_DATA + D3D11_INPUT_PER_VERTEX_DATA +
+ + +

Input data is per-instance data.

+
+ + ff476179 + D3D11_INPUT_PER_INSTANCE_DATA + D3D11_INPUT_PER_INSTANCE_DATA +
+ + +

Specifies how the CPU should respond when an application calls the method on a resource that is being used by the GPU.

+
+ +

This enumeration is used by .

cannot be used with or D3D11_MAP_WRITE_NOOVERWRITE.

+
+ + ff476183 + D3D11_MAP_FLAG + D3D11_MAP_FLAG +
+ + + No documentation. + + + ff476183 + D3D11_MAP_FLAG_DO_NOT_WAIT + D3D11_MAP_FLAG_DO_NOT_WAIT + + + + None. + + + None + None + + + +

Identifies a resource to be accessed for reading and writing by the CPU. Applications may combine one or more of these flags.

+
+ +

This enumeration is used in .

These remarks are divided into the following topics:

  • Meaning
  • Common
+
+ + ff476181 + D3D11_MAP + D3D11_MAP +
+ + +

Resource is mapped for reading. The resource must have been created with read access (see ).

+
+ + ff476181 + D3D11_MAP_READ + D3D11_MAP_READ +
+ + +

Resource is mapped for writing. The resource must have been created with write access (see ).

+
+ + ff476181 + D3D11_MAP_WRITE + D3D11_MAP_WRITE +
+ + +

Resource is mapped for reading and writing. The resource must have been created with read and write access (see and ).

+
+ + ff476181 + D3D11_MAP_READ_WRITE + D3D11_MAP_READ_WRITE +
+ + +

Resource is mapped for writing; the previous contents of the resource will be undefined. The resource must have been created with write access and dynamic usage (See and ).

+
+ + ff476181 + D3D11_MAP_WRITE_DISCARD + D3D11_MAP_WRITE_DISCARD +
+ + +

Resource is mapped for writing; the existing contents of the resource cannot be overwritten (see Remarks). This flag is only valid on vertex and index buffers. The resource must have been created with write access (see ). Cannot be used on a resource created with the flag.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

+
+ + ff476181 + D3D11_MAP_WRITE_NO_OVERWRITE + D3D11_MAP_WRITE_NO_OVERWRITE +
+ + +

Categories of debug messages. This will identify the category of a message when retrieving a message with and when adding a message with . When creating an info queue filter, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.

+
+ +

This is part of the Information Queue feature. See Interface.

+
+ + ff476185 + D3D11_MESSAGE_CATEGORY + D3D11_MESSAGE_CATEGORY +
+ + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED + D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_MISCELLANEOUS + D3D11_MESSAGE_CATEGORY_MISCELLANEOUS + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_INITIALIZATION + D3D11_MESSAGE_CATEGORY_INITIALIZATION + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_CLEANUP + D3D11_MESSAGE_CATEGORY_CLEANUP + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_COMPILATION + D3D11_MESSAGE_CATEGORY_COMPILATION + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_STATE_CREATION + D3D11_MESSAGE_CATEGORY_STATE_CREATION + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_STATE_SETTING + D3D11_MESSAGE_CATEGORY_STATE_SETTING + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_STATE_GETTING + D3D11_MESSAGE_CATEGORY_STATE_GETTING + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + + + + No documentation. + + + ff476185 + D3D11_MESSAGE_CATEGORY_EXECUTION + D3D11_MESSAGE_CATEGORY_EXECUTION + + + +

A debug message in the Information Queue.

+
+ +

This structure is returned from as part of the Information Queue feature (see Interface).

+
+ + ff476184 + D3D11_MESSAGE_ID + D3D11_MESSAGE_ID +
+ + +

The category of the message. See .

+
+ + ff476184 + D3D11_MESSAGE_ID_UNKNOWN + D3D11_MESSAGE_ID_UNKNOWN +
+ + +

The severity of the message. See .

+
+ + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD +
+ + +

The ID of the message. See .

+
+ + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD +
+ + +

The message string.

+
+ + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD + D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD +
+ + +

The length of pDescription in bytes.

+
+ + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD + D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD +
+ + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD + D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD + D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD + D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD + D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD + D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_STRING_FROM_APPLICATION + D3D11_MESSAGE_ID_STRING_FROM_APPLICATION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_THIS + D3D11_MESSAGE_ID_CORRUPTED_THIS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15 + D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING + D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY + D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA + D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA + D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN + D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS + D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS + D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY + D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS + D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC + D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION + D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC + D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION + D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC + D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION + D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC + D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION + D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE + D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE + D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK + D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC + D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER + D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER + D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER + D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT + D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR + D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH + D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY + D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY + D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID + D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE + D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE + D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE + D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE + D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE + D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX + D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE + D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID + D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE + D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS + D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED + D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN + D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED + D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE + D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS + D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED + D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN + D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED + D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE + D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS + D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED + D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN + D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED + D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE + D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS + D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED + D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN + D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED + D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED + D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED + D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS + D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN + D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN + D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE + D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_THREADING_MODE + D3D11_MESSAGE_ID_REF_THREADING_MODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION + D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION + D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION + D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE + D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER + D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY + D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_INFO + D3D11_MESSAGE_ID_REF_INFO + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS + D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL + D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT + D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED + D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY + D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE + D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER + D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING + D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 + D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT + D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT + D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT + D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN + D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN + D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET + D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH + D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY + D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY + D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER + D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED + D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN + D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC + D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER + D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE + D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED + D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION + D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE + D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS + D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION + D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS + D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN + D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE + D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS + D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL + D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN + D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE + D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_D3D10_MESSAGES_END + D3D11_MESSAGE_ID_D3D10_MESSAGES_END + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START + D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED + D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS + D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS + D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS + D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND + D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D + D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE + D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE + D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX + D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS + D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS + D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY + D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK + D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK + D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT + D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE + D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE + D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET + D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER + D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE + D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE + D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT + D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS + D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES + D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED + D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED + D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED + D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED + D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED + D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND + D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED + D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED + D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 + D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED + D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO + D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION + D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED + D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR + D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA + D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP + D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED + D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT + D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END + D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_D3D11_MESSAGES_START + D3D11_MESSAGE_ID_D3D11_MESSAGES_START + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS + D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE + D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE + D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT + D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN + D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES + D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD + D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD + D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE + D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD + D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD + D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE + D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT + D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER + D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE + D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS + D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED + D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN + D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD + D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE + D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED + D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS + D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH + D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_CONTEXT + D3D11_MESSAGE_ID_CREATE_CONTEXT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_CONTEXT + D3D11_MESSAGE_ID_LIVE_CONTEXT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_CONTEXT + D3D11_MESSAGE_ID_DESTROY_CONTEXT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_BUFFER + D3D11_MESSAGE_ID_CREATE_BUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_BUFFER + D3D11_MESSAGE_ID_LIVE_BUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_BUFFER + D3D11_MESSAGE_ID_DESTROY_BUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_TEXTURE1D + D3D11_MESSAGE_ID_CREATE_TEXTURE1D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_TEXTURE1D + D3D11_MESSAGE_ID_LIVE_TEXTURE1D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_TEXTURE1D + D3D11_MESSAGE_ID_DESTROY_TEXTURE1D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_TEXTURE2D + D3D11_MESSAGE_ID_CREATE_TEXTURE2D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_TEXTURE2D + D3D11_MESSAGE_ID_LIVE_TEXTURE2D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_TEXTURE2D + D3D11_MESSAGE_ID_DESTROY_TEXTURE2D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_TEXTURE3D + D3D11_MESSAGE_ID_CREATE_TEXTURE3D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_TEXTURE3D + D3D11_MESSAGE_ID_LIVE_TEXTURE3D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_TEXTURE3D + D3D11_MESSAGE_ID_DESTROY_TEXTURE3D + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW + D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW + D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW + D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW + D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW + D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW + D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW + D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW + D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW + D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_VERTEXSHADER + D3D11_MESSAGE_ID_CREATE_VERTEXSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_VERTEXSHADER + D3D11_MESSAGE_ID_LIVE_VERTEXSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER + D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_HULLSHADER + D3D11_MESSAGE_ID_CREATE_HULLSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_HULLSHADER + D3D11_MESSAGE_ID_LIVE_HULLSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_HULLSHADER + D3D11_MESSAGE_ID_DESTROY_HULLSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_DOMAINSHADER + D3D11_MESSAGE_ID_CREATE_DOMAINSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_DOMAINSHADER + D3D11_MESSAGE_ID_LIVE_DOMAINSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER + D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER + D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER + D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER + D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_PIXELSHADER + D3D11_MESSAGE_ID_CREATE_PIXELSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_PIXELSHADER + D3D11_MESSAGE_ID_LIVE_PIXELSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_PIXELSHADER + D3D11_MESSAGE_ID_DESTROY_PIXELSHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT + D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT + D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT + D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_SAMPLER + D3D11_MESSAGE_ID_CREATE_SAMPLER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_SAMPLER + D3D11_MESSAGE_ID_LIVE_SAMPLER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_SAMPLER + D3D11_MESSAGE_ID_DESTROY_SAMPLER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_BLENDSTATE + D3D11_MESSAGE_ID_CREATE_BLENDSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_BLENDSTATE + D3D11_MESSAGE_ID_LIVE_BLENDSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_BLENDSTATE + D3D11_MESSAGE_ID_DESTROY_BLENDSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE + D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE + D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE + D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE + D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE + D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE + D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_QUERY + D3D11_MESSAGE_ID_CREATE_QUERY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_QUERY + D3D11_MESSAGE_ID_LIVE_QUERY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_QUERY + D3D11_MESSAGE_ID_DESTROY_QUERY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_PREDICATE + D3D11_MESSAGE_ID_CREATE_PREDICATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_PREDICATE + D3D11_MESSAGE_ID_LIVE_PREDICATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_PREDICATE + D3D11_MESSAGE_ID_DESTROY_PREDICATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_COUNTER + D3D11_MESSAGE_ID_CREATE_COUNTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_COUNTER + D3D11_MESSAGE_ID_LIVE_COUNTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_COUNTER + D3D11_MESSAGE_ID_DESTROY_COUNTER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_COMMANDLIST + D3D11_MESSAGE_ID_CREATE_COMMANDLIST + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_COMMANDLIST + D3D11_MESSAGE_ID_LIVE_COMMANDLIST + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_COMMANDLIST + D3D11_MESSAGE_ID_DESTROY_COMMANDLIST + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE + D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE + D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE + D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE + D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE + D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE + D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_DEVICE + D3D11_MESSAGE_ID_LIVE_DEVICE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY + D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_COMPUTESHADER + D3D11_MESSAGE_ID_CREATE_COMPUTESHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_COMPUTESHADER + D3D11_MESSAGE_ID_LIVE_COMPUTESHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER + D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW + D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW + D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW + D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA + D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS + D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL + D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE + D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE + D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN + D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD + D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD + D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE + D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER + D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED + D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED + D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED + D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED + D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED + D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED + D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED + D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE + D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS + D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP + D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH + D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY + D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS + D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS + D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT + D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE + D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD + D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT + D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE + D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT + D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY + D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED + D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP + D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED + D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW + D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO + D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH + D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE + D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED + D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS + D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT + D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED + D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_REF_WARNING + D3D11_MESSAGE_ID_REF_WARNING + + + + No documentation. + + + ff476184 + D3D11_MESSAGE_ID_D3D11_MESSAGES_END + D3D11_MESSAGE_ID_D3D11_MESSAGES_END + + + +

Debug message severity levels for an information queue.

+
+ +

Use these values to allow or deny message categories to pass through the storage and retrieval filters for an information queue (see ). This API is used by .

+
+ + ff476187 + D3D11_MESSAGE_SEVERITY + D3D11_MESSAGE_SEVERITY +
+ + +

Defines some type of corruption which has occurred.

+
+ + ff476187 + D3D11_MESSAGE_SEVERITY_CORRUPTION + D3D11_MESSAGE_SEVERITY_CORRUPTION +
+ + +

Defines an error message.

+
+ + ff476187 + D3D11_MESSAGE_SEVERITY_ERROR + D3D11_MESSAGE_SEVERITY_ERROR +
+ + +

Defines a warning message.

+
+ + ff476187 + D3D11_MESSAGE_SEVERITY_WARNING + D3D11_MESSAGE_SEVERITY_WARNING +
+ + +

Defines an information message.

+
+ + ff476187 + D3D11_MESSAGE_SEVERITY_INFO + D3D11_MESSAGE_SEVERITY_INFO +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Normal map options. You can combine any number of these flags by using a bitwise OR operation.

+
+ +

These flags are used by .

+
+ + ff476318 + D3DX11_NORMALMAP_FLAG + D3DX11_NORMALMAP_FLAG +
+ + +

Indicates that pixels off the edge of the texture on the U-axis should be mirrored, not wraped.

+
+ + ff476318 + D3DX11_NORMALMAP_MIRROR_U + D3DX11_NORMALMAP_MIRROR_U +
+ + +

Indicates that pixels off the edge of the texture on the V-axis should be mirrored, not wraped.

+
+ + ff476318 + D3DX11_NORMALMAP_MIRROR_V + D3DX11_NORMALMAP_MIRROR_V +
+ + +

Same as | .

+
+ + ff476318 + D3DX11_NORMALMAP_MIRROR + D3DX11_NORMALMAP_MIRROR +
+ + +

Inverts the direction of each normal.

+
+ + ff476318 + D3DX11_NORMALMAP_INVERTSIGN + D3DX11_NORMALMAP_INVERTSIGN +
+ + +

Computes the per pixel occlusion term and encodes it into the alpha. An Alpha of 1 means that the pixel is not obscured in any way, and an alpha of 0 would mean that the pixel is completly obscured.

+
+ + ff476318 + D3DX11_NORMALMAP_COMPUTE_OCCLUSION + D3DX11_NORMALMAP_COMPUTE_OCCLUSION +
+ + + None. + + + None + None + + + +

Flags that describe miscellaneous query behavior.

+
+ +

This flag is part of a query description (see ).

+
+ + ff476196 + D3D11_QUERY_MISC_FLAG + D3D11_QUERY_MISC_FLAG +
+ + +

Tell the hardware that if it is not yet sure if something is hidden or not to draw it anyway. This is only used with an occlusion predicate. Predication data cannot be returned to your application via when using this flag.

+
+ + ff476196 + D3D11_QUERY_MISC_PREDICATEHINT + D3D11_QUERY_MISC_PREDICATEHINT +
+ + + None. + + + None + None + + + +

Query types.

+
+ +

Create a query with .

+
+ + ff476191 + D3D11_QUERY + D3D11_QUERY +
+ + +

Determines whether or not the GPU is finished processing commands. When the GPU is finished processing commands will return , and pData will point to a with a value of TRUE. When using this type of query, is disabled.

+
+ + ff476191 + D3D11_QUERY_EVENT + D3D11_QUERY_EVENT +
+ + +

Get the number of samples that passed the depth and stencil tests in between and . returns a UINT64. If a depth or stencil test is disabled, then each of those tests will be counted as a pass.

+
+ + ff476191 + D3D11_QUERY_OCCLUSION + D3D11_QUERY_OCCLUSION +
+ + +

Get a timestamp value where returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See . When using this type of query, is disabled.

+
+ + ff476191 + D3D11_QUERY_TIMESTAMP + D3D11_QUERY_TIMESTAMP +
+ + +

Determines whether or not a is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. will return a . This type of query should only be invoked once per frame or less.

+
+ + ff476191 + D3D11_QUERY_TIMESTAMP_DISJOINT + D3D11_QUERY_TIMESTAMP_DISJOINT +
+ + +

Get pipeline statistics, such as the number of pixel shader invocations in between and . will return a .

+
+ + ff476191 + D3D11_QUERY_PIPELINE_STATISTICS + D3D11_QUERY_PIPELINE_STATISTICS +
+ + +

Similar to , except returns a indicating whether or not any samples passed the depth and stencil tests - TRUE meaning at least one passed, meaning none passed.

+
+ + ff476191 + D3D11_QUERY_OCCLUSION_PREDICATE + D3D11_QUERY_OCCLUSION_PREDICATE +
+ + +

Get streaming output statistics, such as the number of primitives streamed out in between and . will return a structure.

+
+ + ff476191 + D3D11_QUERY_SO_STATISTICS + D3D11_QUERY_SO_STATISTICS +
+ + +

Determines whether or not any of the streaming output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

+
+ + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE + D3D11_QUERY_SO_OVERFLOW_PREDICATE +
+ + +

Get streaming output statistics for stream 0, such as the number of primitives streamed out in between and . will return a structure.

+
+ + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM0 + D3D11_QUERY_SO_STATISTICS_STREAM0 +
+ + +

Determines whether or not the stream 0 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

+
+ + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 +
+ + +

Get streaming output statistics for stream 1, such as the number of primitives streamed out in between and . will return a structure.

+
+ + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM1 + D3D11_QUERY_SO_STATISTICS_STREAM1 +
+ + +

Determines whether or not the stream 1 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

+
+ + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 +
+ + +

Get streaming output statistics for stream 2, such as the number of primitives streamed out in between and . will return a structure.

+
+ + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM2 + D3D11_QUERY_SO_STATISTICS_STREAM2 +
+ + +

Determines whether or not the stream 2 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

+
+ + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 +
+ + +

Get streaming output statistics for stream 3, such as the number of primitives streamed out in between and . will return a structure.

+
+ + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM3 + D3D11_QUERY_SO_STATISTICS_STREAM3 +
+ + +

Determines whether or not the stream 3 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

+
+ + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 +
+ + +

These flags identify the type of resource that will be viewed as a render target.

+
+ +

This enumeration is used in to create a render-target view.

+
+ + ff476206 + D3D11_RTV_DIMENSION + D3D11_RTV_DIMENSION +
+ + +

Do not use this value, as it will cause to fail.

+
+ + ff476206 + D3D11_RTV_DIMENSION_UNKNOWN + D3D11_RTV_DIMENSION_UNKNOWN +
+ + +

The resource will be accessed as a buffer.

+
+ + ff476206 + D3D11_RTV_DIMENSION_BUFFER + D3D11_RTV_DIMENSION_BUFFER +
+ + +

The resource will be accessed as a 1D texture.

+
+ + ff476206 + D3D11_RTV_DIMENSION_TEXTURE1D + D3D11_RTV_DIMENSION_TEXTURE1D +
+ + +

The resource will be accessed as an array of 1D textures.

+
+ + ff476206 + D3D11_RTV_DIMENSION_TEXTURE1DARRAY + D3D11_RTV_DIMENSION_TEXTURE1DARRAY +
+ + +

The resource will be accessed as a 2D texture.

+
+ + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2D + D3D11_RTV_DIMENSION_TEXTURE2D +
+ + +

The resource will be accessed as an array of 2D textures.

+
+ + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2DARRAY + D3D11_RTV_DIMENSION_TEXTURE2DARRAY +
+ + +

The resource will be accessed as a 2D texture with multisampling.

+
+ + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2DMS + D3D11_RTV_DIMENSION_TEXTURE2DMS +
+ + +

The resource will be accessed as an array of 2D textures with multisampling.

+
+ + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY + D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY +
+ + +

The resource will be accessed as a 3D texture.

+
+ + ff476206 + D3D11_RTV_DIMENSION_TEXTURE3D + D3D11_RTV_DIMENSION_TEXTURE3D +
+ + +

Options for the amount of information to report about a device object's lifetime.

+
+ +

This enumeration is used by .

Several inline functions exist to combine the options using operators, see the D3D11SDKLayers.h header file for details.

+
+ + ff476205 + D3D11_RLDO_FLAGS + D3D11_RLDO_FLAGS +
+ + +

Specifies to obtain a summary about a device object's lifetime.

+
+ + ff476205 + D3D11_RLDO_SUMMARY + D3D11_RLDO_SUMMARY +
+ + +

Specifies to obtain detailed information about a device object's lifetime.

+
+ + ff476205 + D3D11_RLDO_DETAIL + D3D11_RLDO_DETAIL +
+ + + None. + + + None + None + + + +

Identifies the type of resource being used.

+
+ +

This enumeration is used in .

+
+ + ff476202 + D3D11_RESOURCE_DIMENSION + D3D11_RESOURCE_DIMENSION +
+ + +

Resource is of unknown type.

+
+ + ff476202 + D3D11_RESOURCE_DIMENSION_UNKNOWN + D3D11_RESOURCE_DIMENSION_UNKNOWN +
+ + +

Resource is a buffer.

+
+ + ff476202 + D3D11_RESOURCE_DIMENSION_BUFFER + D3D11_RESOURCE_DIMENSION_BUFFER +
+ + +

Resource is a 1D texture.

+
+ + ff476202 + D3D11_RESOURCE_DIMENSION_TEXTURE1D + D3D11_RESOURCE_DIMENSION_TEXTURE1D +
+ + +

Resource is a 2D texture.

+
+ + ff476202 + D3D11_RESOURCE_DIMENSION_TEXTURE2D + D3D11_RESOURCE_DIMENSION_TEXTURE2D +
+ + +

Resource is a 3D texture.

+
+ + ff476202 + D3D11_RESOURCE_DIMENSION_TEXTURE3D + D3D11_RESOURCE_DIMENSION_TEXTURE3D +
+ + +

Identifies options for resources.

+
+ +

This enumeration is used in , , , .

These flags can be combined by bitwise OR.

The cannot be used when creating resources with D3D11_CPU_ACCESS flags.

+
+ + ff476203 + D3D11_RESOURCE_MISC_FLAG + D3D11_RESOURCE_MISC_FLAG +
+ + +

Enables MIP map generation by using on a texture resource. The resource must be created with the bind flags that specify that the resource is a render target and a shader resource.

+
+ + ff476203 + D3D11_RESOURCE_MISC_GENERATE_MIPS + D3D11_RESOURCE_MISC_GENERATE_MIPS +
+ + +

Enables resource data sharing between two or more Direct3D devices. The only resources that can be shared are 2D non-mipmapped textures.

and are mutually exclusive.

WARP and REF devices do not support shared resources. If you try to create a resource with this flag on either a WARP or REF device, the create method will return an E_OUTOFMEMORY error code.

Note??Starting with Windows?8, WARP devices fully support shared resources.

Note??Starting with Windows?8, we recommend that you enable resource data sharing between two or more Direct3D devices by using a combination of the D3D11_RESOURCE_MISC_SHARED_NTHANDLE and flags instead.

+
+ + ff476203 + D3D11_RESOURCE_MISC_SHARED + D3D11_RESOURCE_MISC_SHARED +
+ + +

Sets a resource to be a cube texture created from a Texture2DArray that contains 6 textures.

+
+ + ff476203 + D3D11_RESOURCE_MISC_TEXTURECUBE + D3D11_RESOURCE_MISC_TEXTURECUBE +
+ + +

Enables instancing of GPU-generated content.

+
+ + ff476203 + D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS + D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS +
+ + +

Enables a resource as a byte address buffer.

+
+ + ff476203 + D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS + D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS +
+ + +

Enables a resource as a structured buffer.

+
+ + ff476203 + D3D11_RESOURCE_MISC_BUFFER_STRUCTURED + D3D11_RESOURCE_MISC_BUFFER_STRUCTURED +
+ + +

Enables a resource with MIP map clamping for use with .

+
+ + ff476203 + D3D11_RESOURCE_MISC_RESOURCE_CLAMP + D3D11_RESOURCE_MISC_RESOURCE_CLAMP +
+ + +

Enables the resource to be synchronized by using the and APIs. The following Direct3D?11 resource creation APIs, that take parameters, have been extended to support the new flag.

If you call any of these methods with the flag set, the interface returned will support the interface. You can retrieve a reference to the interface from the resource by using IUnknown::QueryInterface. The interface implements the and APIs to synchronize access to the surface. The device that creates the surface, and any other device that opens the surface by using OpenSharedResource, must call before they issue any rendering commands to the surface. When those devices finish rendering, they must call .

and are mutually exclusive.

WARP and REF devices do not support shared resources. If you try to create a resource with this flag on either a WARP or REF device, the create method will return an E_OUTOFMEMORY error code.

Note??Starting with Windows?8, WARP devices fully support shared resources.

+
+ + ff476203 + D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX + D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX +
+ + +

Enables a resource compatible with GDI. You must set the flag on surfaces that you use with GDI. Setting the flag allows GDI rendering on the surface via . +

Consider the following programming tips for using when you create a texture or use that texture in a swap chain:

  • and are mutually exclusive. Therefore, do not use them together.
  • and are mutually exclusive. Therefore, do not use them together.
  • You must bind the texture as a render target for the output-merger stage. For example, set the flag in the BindFlags member of the structure.
  • You must set the maximum number of MIP map levels to 1. For example, set the MipLevels member of the structure to 1.
  • You must specify that the texture requires read and write access by the GPU. For example, set the Usage member of the structure to .
  • You must set the texture format to one of the following types.

    • +
    • +
    For example, set the Format member of the structure to one of these types.
  • You cannot use with multisampling. Therefore, set the Count member of the structure to 1. Then, set the SampleDesc member of the structure to this structure.
+
+ + ff476203 + D3D11_RESOURCE_MISC_GDI_COMPATIBLE + D3D11_RESOURCE_MISC_GDI_COMPATIBLE +
+ + + None. + + + None + None + + + +

Identifies expected resource use during rendering. The usage directly reflects whether a resource is accessible by the CPU and/or the graphics processing unit (GPU).

+
+ +

An application identifies the way a resource is intended to be used (its usage) in a resource description. There are several structures for creating resources including: , , , and .

Differences between Direct3D 9 and Direct3D 10/11:

In Direct3D 9, you specify the type of memory a resource should be created in at resource creation time (using ). It was an application's job to decide what memory pool would provide the best combination of functionality and performance.

In Direct3D 10/11, an application no longer specifies what type of memory (the pool) to create a resource in. Instead, you specify the intended usage of the resource, and let the runtime (in concert with the driver and a memory manager) choose the type of memory that will achieve the best performance.

?

+
+ + ff476259 + D3D11_USAGE + D3D11_USAGE +
+ + +

A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.

+
+ + ff476259 + D3D11_USAGE_DEFAULT + D3D11_USAGE_DEFAULT +
+ + +

A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.

+
+ + ff476259 + D3D11_USAGE_IMMUTABLE + D3D11_USAGE_IMMUTABLE +
+ + +

A resource that is accessible by both the GPU (read only) and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To update a dynamic resource, use a Map method.

For info about how to use dynamic resources, see How to: Use dynamic resources.

+
+ + ff476259 + D3D11_USAGE_DYNAMIC + D3D11_USAGE_DYNAMIC +
+ + +

A resource that supports data transfer (copy) from the GPU to the CPU.

+
+ + ff476259 + D3D11_USAGE_STAGING + D3D11_USAGE_STAGING +
+ + +

Type for scan data.

+
+ + ff476322 + D3DX11_SCAN_DATA_TYPE + D3DX11_SCAN_DATA_TYPE +
+ + +

FLOAT data.

+
+ + ff476322 + D3DX11_SCAN_DATA_TYPE_FLOAT + D3DX11_SCAN_DATA_TYPE_FLOAT +
+ + +

INT data.

+
+ + ff476322 + D3DX11_SCAN_DATA_TYPE_INT + D3DX11_SCAN_DATA_TYPE_INT +
+ + +

UINT data.

+
+ + ff476322 + D3DX11_SCAN_DATA_TYPE_UINT + D3DX11_SCAN_DATA_TYPE_UINT +
+ + +

Direction to perform scan in.

+
+ + ff476323 + D3DX11_SCAN_DIRECTION + D3DX11_SCAN_DIRECTION +
+ + +

Scan forward.

+
+ + ff476323 + D3DX11_SCAN_DIRECTION_FORWARD + D3DX11_SCAN_DIRECTION_FORWARD +
+ + +

Scan backward.

+
+ + ff476323 + D3DX11_SCAN_DIRECTION_BACKWARD + D3DX11_SCAN_DIRECTION_BACKWARD +
+ + +

Scan opcodes.

+
+ + ff476324 + D3DX11_SCAN_OPCODE + D3DX11_SCAN_OPCODE +
+ + +

Add values.

+
+ + ff476324 + D3DX11_SCAN_OPCODE_ADD + D3DX11_SCAN_OPCODE_ADD +
+ + +

Take the minimum value.

+
+ + ff476324 + D3DX11_SCAN_OPCODE_MIN + D3DX11_SCAN_OPCODE_MIN +
+ + +

Take the maximum value.

+
+ + ff476324 + D3DX11_SCAN_OPCODE_MAX + D3DX11_SCAN_OPCODE_MAX +
+ + +

Multiply the values.

+
+ + ff476324 + D3DX11_SCAN_OPCODE_MUL + D3DX11_SCAN_OPCODE_MUL +
+ + +

Perform a logical AND on the values.

+
+ + ff476324 + D3DX11_SCAN_OPCODE_AND + D3DX11_SCAN_OPCODE_AND +
+ + +

Perform a logical OR on the values.

+
+ + ff476324 + D3DX11_SCAN_OPCODE_OR + D3DX11_SCAN_OPCODE_OR +
+ + +

Perform a logical XOR on the values.

+
+ + ff476324 + D3DX11_SCAN_OPCODE_XOR + D3DX11_SCAN_OPCODE_XOR +
+ + +

Identifies how to view a buffer resource.

+
+ +

This enumeration is used by

+
+ + ff476091 + D3D11_BUFFEREX_SRV_FLAG + D3D11_BUFFEREX_SRV_FLAG +
+ + +

View the buffer as raw. For more info about raw viewing of buffers, see Raw Views of Buffers.

+
+ + ff476091 + D3D11_BUFFEREX_SRV_FLAG_RAW + D3D11_BUFFEREX_SRV_FLAG_RAW +
+ + + None. + + + None + None + + + +

Specifies a multi-sample pattern type.

+
+ +

An app calls to get the number of quality levels available during multisampling. A 0 quality level means the hardware does not support multisampling for the particular format. If the number of quality levels is greater than 0 and the hardware supports the fixed sample patterns for the sample count, the app can request the fixed patterns by specifying quality level as either or . The app can call to check for support of the standard fixed patterns. If the hardware only supports the fixed patterns but no additional vendor-specific patterns, the runtime can report the number of quality levels as 1, and the hardware can pretend 0 quality level behaves the same as quality level equal to .

The runtime defines the following standard sample patterns for 1(trivial), 2, 4, 8, and 16 sample counts. Hardware must support 1, 4, and 8 sample counts. Hardware vendors can expose more sample counts beyond these. However, if vendors support 2, 4(required), 8(required), or 16, they must also support the corresponding standard pattern or center pattern for each of those sample counts.

+
+ + ff476218 + D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS + D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS +
+ + +

Pre-defined multi-sample patterns required for Direct3D?11 and Direct3D?10.1 hardware.

+
+ + ff476218 + D3D11_STANDARD_MULTISAMPLE_PATTERN + D3D11_STANDARD_MULTISAMPLE_PATTERN +
+ + +

Pattern where all of the samples are located at the pixel center.

+
+ + ff476218 + D3D11_CENTER_MULTISAMPLE_PATTERN + D3D11_CENTER_MULTISAMPLE_PATTERN +
+ + +

The stencil operations that can be performed during depth-stencil testing.

+
+ + ff476219 + D3D11_STENCIL_OP + D3D11_STENCIL_OP +
+ + +

Keep the existing stencil data.

+
+ + ff476219 + D3D11_STENCIL_OP_KEEP + D3D11_STENCIL_OP_KEEP +
+ + +

Set the stencil data to 0.

+
+ + ff476219 + D3D11_STENCIL_OP_ZERO + D3D11_STENCIL_OP_ZERO +
+ + +

Set the stencil data to the reference value set by calling .

+
+ + ff476219 + D3D11_STENCIL_OP_REPLACE + D3D11_STENCIL_OP_REPLACE +
+ + +

Increment the stencil value by 1, and clamp the result.

+
+ + ff476219 + D3D11_STENCIL_OP_INCR_SAT + D3D11_STENCIL_OP_INCR_SAT +
+ + +

Decrement the stencil value by 1, and clamp the result.

+
+ + ff476219 + D3D11_STENCIL_OP_DECR_SAT + D3D11_STENCIL_OP_DECR_SAT +
+ + +

Invert the stencil data.

+
+ + ff476219 + D3D11_STENCIL_OP_INVERT + D3D11_STENCIL_OP_INVERT +
+ + +

Increment the stencil value by 1, and wrap the result if necessary.

+
+ + ff476219 + D3D11_STENCIL_OP_INCR + D3D11_STENCIL_OP_INCR +
+ + +

Decrement the stencil value by 1, and wrap the result if necessary.

+
+ + ff476219 + D3D11_STENCIL_OP_DECR + D3D11_STENCIL_OP_DECR +
+ + +

Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.

+
+ + ff476256 + D3D11_TEXTURE_ADDRESS_MODE + D3D11_TEXTURE_ADDRESS_MODE +
+ + +

Tile the texture at every (u,v) integer junction. For example, for u values between 0 and 3, the texture is repeated three times.

+
+ + ff476256 + D3D11_TEXTURE_ADDRESS_WRAP + D3D11_TEXTURE_ADDRESS_WRAP +
+ + +

Flip the texture at every (u,v) integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on.

+
+ + ff476256 + D3D11_TEXTURE_ADDRESS_MIRROR + D3D11_TEXTURE_ADDRESS_MIRROR +
+ + +

Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.

+
+ + ff476256 + D3D11_TEXTURE_ADDRESS_CLAMP + D3D11_TEXTURE_ADDRESS_CLAMP +
+ + +

Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in or HLSL code.

+
+ + ff476256 + D3D11_TEXTURE_ADDRESS_BORDER + D3D11_TEXTURE_ADDRESS_BORDER +
+ + +

Similar to and . Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.

+
+ + ff476256 + D3D11_TEXTURE_ADDRESS_MIRROR_ONCE + D3D11_TEXTURE_ADDRESS_MIRROR_ONCE +
+ + +

The different faces of a cube texture.

+
+ + ff476255 + D3D11_TEXTURECUBE_FACE + D3D11_TEXTURECUBE_FACE +
+ + +

Positive X face.

+
+ + ff476255 + D3D11_TEXTURECUBE_FACE_POSITIVE_X + D3D11_TEXTURECUBE_FACE_POSITIVE_X +
+ + +

Negative X face.

+
+ + ff476255 + D3D11_TEXTURECUBE_FACE_NEGATIVE_X + D3D11_TEXTURECUBE_FACE_NEGATIVE_X +
+ + +

Positive Y face.

+
+ + ff476255 + D3D11_TEXTURECUBE_FACE_POSITIVE_Y + D3D11_TEXTURECUBE_FACE_POSITIVE_Y +
+ + +

Negative Y face.

+
+ + ff476255 + D3D11_TEXTURECUBE_FACE_NEGATIVE_Y + D3D11_TEXTURECUBE_FACE_NEGATIVE_Y +
+ + +

Positive Z face.

+
+ + ff476255 + D3D11_TEXTURECUBE_FACE_POSITIVE_Z + D3D11_TEXTURECUBE_FACE_POSITIVE_Z +
+ + +

Negative Z face.

+
+ + ff476255 + D3D11_TEXTURECUBE_FACE_NEGATIVE_Z + D3D11_TEXTURECUBE_FACE_NEGATIVE_Z +
+ + +

Identifies unordered-access view options for a buffer resource.

+
+ + ff476096 + D3D11_BUFFER_UAV_FLAG + D3D11_BUFFER_UAV_FLAG +
+ + +

Resource contains raw, unstructured data. Requires the UAV format to be . For more info about raw viewing of buffers, see Raw Views of Buffers.

+
+ + ff476096 + D3D11_BUFFER_UAV_FLAG_RAW + D3D11_BUFFER_UAV_FLAG_RAW +
+ + +

Allow data to be appended to the end of the buffer. flag must also be used for any view that will be used as a AppendStructuredBuffer or a ConsumeStructuredBuffer. Requires the UAV format to be .

+
+ + ff476096 + D3D11_BUFFER_UAV_FLAG_APPEND + D3D11_BUFFER_UAV_FLAG_APPEND +
+ + +

Adds a counter to the unordered-access-view buffer. can only be used on a UAV that is a RWStructuredBuffer and it enables the functionality needed for the IncrementCounter and DecrementCounter methods in HLSL. Requires the UAV format to be .

+
+ + ff476096 + D3D11_BUFFER_UAV_FLAG_COUNTER + D3D11_BUFFER_UAV_FLAG_COUNTER +
+ + + None. + + + None + None + + + +

Unordered-access view options.

+
+ +

This enumeration is used by a unordered access-view description (see ).

+
+ + ff476257 + D3D11_UAV_DIMENSION + D3D11_UAV_DIMENSION +
+ + +

The view type is unknown.

+
+ + ff476257 + D3D11_UAV_DIMENSION_UNKNOWN + D3D11_UAV_DIMENSION_UNKNOWN +
+ + +

View the resource as a buffer.

+
+ + ff476257 + D3D11_UAV_DIMENSION_BUFFER + D3D11_UAV_DIMENSION_BUFFER +
+ + +

View the resource as a 1D texture.

+
+ + ff476257 + D3D11_UAV_DIMENSION_TEXTURE1D + D3D11_UAV_DIMENSION_TEXTURE1D +
+ + +

View the resource as a 1D texture array.

+
+ + ff476257 + D3D11_UAV_DIMENSION_TEXTURE1DARRAY + D3D11_UAV_DIMENSION_TEXTURE1DARRAY +
+ + +

View the resource as a 2D texture.

+
+ + ff476257 + D3D11_UAV_DIMENSION_TEXTURE2D + D3D11_UAV_DIMENSION_TEXTURE2D +
+ + +

View the resource as a 2D texture array.

+
+ + ff476257 + D3D11_UAV_DIMENSION_TEXTURE2DARRAY + D3D11_UAV_DIMENSION_TEXTURE2DARRAY +
+ + +

View the resource as a 3D texture array.

+
+ + ff476257 + D3D11_UAV_DIMENSION_TEXTURE3D + D3D11_UAV_DIMENSION_TEXTURE3D +
+ + + Functions + + + + + Constant SdkVersion. + D3D11_SDK_VERSION + + + +

Creates a device that represents the display adapter.

+
+

A reference to the video adapter to use when creating a device. Pass null to use the default adapter, which is the first adapter that is enumerated by IDXGIFactory1::EnumAdapters.

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

+

The , which represents the driver type to create.

+

A handle to a DLL that implements a software rasterizer. If DriverType is , Software must not be null. Get the handle by calling LoadLibrary, LoadLibraryEx , or GetModuleHandle.

+

The runtime layers to enable (see ); values can be bitwise OR'd together.

+

A reference to an array of s, which determine the order of feature levels to attempt to create. If pFeatureLevels is set to null, this function uses the following array of feature levels:

 { , , , , , ,}; 

Note??If the Direct3D 11.1 runtime is present on the computer and pFeatureLevels is set to null, this function won't create a D3D_FEATURE_LEVEL_11_1 device. To create a D3D_FEATURE_LEVEL_11_1 device, you must explicitly provide a array that includes D3D_FEATURE_LEVEL_11_1. If you provide a array that contains D3D_FEATURE_LEVEL_11_1 on a computer that doesn't have the Direct3D 11.1 runtime installed, this function immediately fails with E_INVALIDARG.

+

The number of elements in pFeatureLevels.

+

The SDK version; use .

+

Returns the address of a reference to an object that represents the device created.

+

If successful, returns the first from the pFeatureLevels array which succeeded. Otherwise, returns 0.

+

Returns the address of a reference to an object that represents the device context.

+

This method can return one of the Direct3D 11 Return Codes.

This method returns E_INVALIDARG if you set the pAdapter parameter to a non-null value and the DriverType parameter to the value.

+ +

This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to Windows Vista (KB971644).

To create a Direct3D 11.1 device (ID3D11Device1), which is available on Windows?8, Windows Server?2012, and Windows?7 and Windows Server?2008?R2 with the Platform Update for Windows 7 installed, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device1 interface. +

To create a Direct3D 11.2 device (ID3D11Device2), which is available on Windows?8.1 and Windows Server?2012?R2, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device2 interface. +

Set ppDevice and ppImmediateContext to null to determine which feature level is supported by looking at pFeatureLevel without creating a device.

For an example, see How To: Create a Device and Immediate Context; to create a device and a swap chain at the same time, use .

If you set the pAdapter parameter to a non-null value, you must also set the DriverType parameter to the value. If you set the pAdapter parameter to a non-null value and the DriverType parameter to the value, returns an of E_INVALIDARG.

Differences between Direct3D 10 and Direct3D 11:

In Direct3D 10, the presence of pAdapter dictated which adapter to use and the DriverType could mismatch what the adapter was.

In Direct3D 11, if you are trying to create a hardware or a software device, set pAdapter != null which constrains the other inputs to be:

  • DriverType must be
  • Software must be null.

On the other hand, if pAdapter == null, the DriverType cannot be set to ; it can be set to either:

  • If DriverType == , Software cannot be null.
  • If DriverType == , the adapter used will be the default adapter, which is the first adapter that is enumerated by IDXGIFactory1::EnumAdapters

?

Windows?Phone?8: This API is supported.

Windows Phone 8.1: This API is supported.

+
+ + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice +
+ + +

Creates a device that represents the display adapter and a swap chain used for rendering.

+
+

A reference to the video adapter to use when creating a device. Pass null to use the default adapter, which is the first adapter enumerated by IDXGIFactory1::EnumAdapters.

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

+

The , which represents the driver type to create.

+

A handle to a DLL that implements a software rasterizer. If DriverType is , Software must not be null. Get the handle by calling LoadLibrary, LoadLibraryEx , or GetModuleHandle. The value should be non-null when is and null otherwise.

+

The runtime layers to enable (see ); values can be bitwise OR'd together.

+

A reference to an array of s, which determine the order of feature levels to attempt to create. If pFeatureLevels is set to null, this function uses the following array of feature levels:

 { , , , , , ,}; 

Note??If the Direct3D 11.1 runtime is present on the computer and pFeatureLevels is set to null, this function won't create a D3D_FEATURE_LEVEL_11_1 device. To create a D3D_FEATURE_LEVEL_11_1 device, you must explicitly provide a array that includes D3D_FEATURE_LEVEL_11_1. If you provide a array that contains D3D_FEATURE_LEVEL_11_1 on a computer that doesn't have the Direct3D 11.1 runtime installed, this function immediately fails with E_INVALIDARG.

+

The number of elements in pFeatureLevels.

+

The SDK version; use .

+

A reference to a swap chain description (see ) that contains initialization parameters for the swap chain.

+

Returns the address of a reference to the object that represents the swap chain used for rendering.

+

Returns the address of a reference to an object that represents the device created. Supply null as an input to return the highest supported feature level in pFeatureLevel.

+

Returns a reference to a , which represents the first element in an array of feature levels supported by the device.

+

Returns the address of a reference to an object that represents the device context.

+

This method can return one of the Direct3D 11 Return Codes.

This method returns if you call it in a Session 0 process.

This method returns E_INVALIDARG if you set the pAdapter parameter to a non-null value and the DriverType parameter to the value.

+ +

Note??If you call this method in a Session 0 process, it returns .

This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to Windows Vista (KB971644).

To create a Direct3D 11.1 device (ID3D11Device1), which is available on Windows?8, Windows Server?2012, and Windows?7 and Windows Server?2008?R2 with the Platform Update for Windows 7 installed, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device1 interface. +

To create a Direct3D 11.2 device (ID3D11Device2), which is available on Windows?8.1 and Windows Server?2012?R2, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device2 interface. +

Also, see the remarks section in for details about input parameter dependencies. To create a device without creating a swap chain, use the function.

If you set the pAdapter parameter to a non-null value, you must also set the DriverType parameter to the value. If you set the pAdapter parameter to a non-null value and the DriverType parameter to the value, returns an of E_INVALIDARG.

+
+ + ff476083 + HRESULT D3D11CreateDeviceAndSwapChain([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[In] const DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out, Optional] IDXGISwapChain** ppSwapChain,[Out, Optional] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDeviceAndSwapChain +
+ + + Functions + + + + + +

Creates an COM interface object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476277 + HRESULT D3DX11CreateFFT2DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + D3DX11CreateFFT2DComplex +
+ + +

Creates an COM interface object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476276 + HRESULT D3DX11CreateFFT1DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + D3DX11CreateFFT1DReal +
+ + +

Creates an COM interface object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476274 + HRESULT D3DX11CreateFFT([In] ID3D11DeviceContext* pDeviceContext,[In] const D3DX11_FFT_DESC* pDesc,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out, Fast] ID3DX11FFT** ppFFT) + D3DX11CreateFFT +
+ + +

Creates an COM interface object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476278 + HRESULT D3DX11CreateFFT2DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + D3DX11CreateFFT2DReal +
+ + +

Creates a scan context.

+
+

The the scan is associated with.

+

Maximum single scan size, in elements (FLOAT, UINT, or INT)

+

Maximum number of scans in multiscan.

+

Pointer to a Interface reference that will be set to the created interface object.

+

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476281 + HRESULT D3DX11CreateScan([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int MaxElementScanSize,[In] unsigned int MaxScanCount,[Out, Fast] ID3DX11Scan** ppScan) + D3DX11CreateScan +
+ + +

Creates an COM interface object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476279 + HRESULT D3DX11CreateFFT3DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Z,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + D3DX11CreateFFT3DComplex +
+ + +

Creates an COM interface object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476275 + HRESULT D3DX11CreateFFT1DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + D3DX11CreateFFT1DComplex +
+ + +

Creates a segmented scan context.

+
+

Pointer to an interface.

+

Maximum single scan size, in elements (FLOAT, UINT, or INT).

+

Pointer to a Interface reference that will be set to the created interface object.

+

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476282 + HRESULT D3DX11CreateSegmentedScan([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int MaxElementScanSize,[Out, Fast] ID3DX11SegmentedScan** ppScan) + D3DX11CreateSegmentedScan +
+ + +

Creates an COM interface object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476280 + HRESULT D3DX11CreateFFT3DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Z,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) + D3DX11CreateFFT3DReal +
+ + + Functions + + + + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT D3DX11CheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DX11SdkVersion) + D3DX11CheckVersion + + + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), + LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateShaderResourceView

Create a shader-resource view from a file in memory.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476284 + HRESULT D3DX11CreateShaderResourceViewFromMemory([In] ID3D11Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) + D3DX11CreateShaderResourceViewFromMemory +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the Spherical Harmonics Math library, SHProjectCubeMap.

Projects a function represented in a cube map into spherical harmonics.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476300 + HRESULT D3DX11SHProjectCubeMap([In] ID3D11DeviceContext* pContext,[In] unsigned int Order,[In] ID3D11Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut) + D3DX11SHProjectCubeMap +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use resource functions, then these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), + LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateTexture

Create a texture from another resource.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476288 + HRESULT D3DX11CreateTextureFromResourceW([In] ID3D11Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) + D3DX11CreateTextureFromResourceW +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, CaptureTexture then SaveToXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Save a texture to memory.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476299 + HRESULT D3DX11SaveTextureToMemory([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_IMAGE_FILE_FORMAT DestFormat,[Out] ID3D10Blob** ppDestBuf,[In] unsigned int Flags) + D3DX11SaveTextureToMemory +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use resource functions, then use DirectXTex library (tools), + LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Retrieves information about a given image in a resource.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DX11GetImageInfoFromResourceA because ANSI strings are being used.

+
+ + ff476293 + HRESULT D3DX11GetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) + D3DX11GetImageInfoFromResourceW +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromFile (where XXX is DDS or WIC)
  • DirectXTex library (tools), + LoadFromXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateShaderResourceView

Create a shader-resource view from a file.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ +

For a list of supported image formats, see .

+
+ + ff476283 + HRESULT D3DX11CreateShaderResourceViewFromFileW([In] ID3D11Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) + D3DX11CreateShaderResourceViewFromFileW +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromFile (where XXX is DDS or WIC)
  • DirectXTex library (tools), + LoadFromXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateTexture

Create a texture resource from a file.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476286 + HRESULT D3DX11CreateTextureFromFileW([In] ID3D11Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) + D3DX11CreateTextureFromFileW +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, GenerateMipMaps and GenerateMipMaps3D.

Generates mipmap chain using a particular texture filter.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476290 + HRESULT D3DX11FilterTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter) + D3DX11FilterTexture +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, GetMetadataFromXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Retrieves information about a given image file.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ +

This function supports both Unicode and ANSI strings.

+
+ + ff476291 + HRESULT D3DX11GetImageInfoFromFileW([In] const wchar_t* pSrcFile,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) + D3DX11GetImageInfoFromFileW +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use resource functions, then these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), + LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateShaderResourceView

Create a shader-resource view from a resource.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476285 + HRESULT D3DX11CreateShaderResourceViewFromResourceW([In] ID3D11Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) + D3DX11CreateShaderResourceViewFromResourceW +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, Resize, Convert, Compress, Decompress, and/or CopyRectangle.

Load a texture from a texture.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476294 + HRESULT D3DX11LoadTextureFromTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_TEXTURE_LOAD_INFO* pLoadInfo,[In] ID3D11Resource* pDstTexture) + D3DX11LoadTextureFromTexture +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, GetMetadataFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Get information about an image already loaded into memory.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476292 + HRESULT D3DX11GetImageInfoFromMemory([In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) + D3DX11GetImageInfoFromMemory +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), + LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateTexture

Create a texture resource from a file residing in system memory.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes.

+ + ff476287 + HRESULT D3DX11CreateTextureFromMemory([In] ID3D11Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) + D3DX11CreateTextureFromMemory +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, ComputeNormalMap.

Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be the following value: .

+ +

This method computes the normal by using the central difference with a kernel size of 3x3. RGB channels in the destination contain biased (x,y,z) components of the normal. The central differencing denominator is hardcoded to 2.0.

+
+ + ff476264 + HRESULT D3DX11ComputeNormalMap([In] ID3D11DeviceContext* pContext,[In] ID3D11Texture2D* pSrcTexture,[In] D3DX11_NORMALMAP_FLAG Flags,[In] D3DX11_CHANNEL_FLAG Channel,[In] float Amplitude,[In] ID3D11Texture2D* pDestTexture) + D3DX11ComputeNormalMap +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, CaptureTexture then SaveToXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games). For the simplified scenario of creating a screen shot from a render target texture, we recommend that you use the DirectXTK library, SaveDDSTextureToFile or SaveWICTextureToFile.

Save a texture to a file.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

The return value is one of the values listed in Direct3D 11 Return Codes; use the return value to see if the DestFormat is supported.

+ +

writes out the extra DDS_HEADER_DXT10 structure for the input texture only if necessary (for example, because the input texture is in standard RGB (sRGB) format). If writes out the DDS_HEADER_DXT10 structure, it sets the dwFourCC member of the DDS_PIXELFORMAT structure for the texture to DX10 to indicate the prescense of the DDS_HEADER_DXT10 extended header.

+
+ + ff476298 + HRESULT D3DX11SaveTextureToFileW([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_IMAGE_FILE_FORMAT DestFormat,[In] const wchar_t* pDestFile) + D3DX11SaveTextureToFileW +
+ + + Functions + + + + + Constant TooManyUniqueViewObjects. + D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS + + + Constant DeferredContextMapWithoutInitialDiscard. + D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD + + + Constant TooManyUniqueStateObjects. + D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS + + + Constant FileNotFound. + D3D11_ERROR_FILE_NOT_FOUND + + + Constant CannotModifyIndexBuffer. + D3DX11_ERR_CANNOT_MODIFY_INDEX_BUFFER + + + Constant CannotAttrSort. + D3DX11_ERR_CANNOT_ATTR_SORT + + + Constant SkinningNotSupported. + D3DX11_ERR_SKINNING_NOT_SUPPORTED + + + Constant LoadedMeshHasNoData. + D3DX11_ERR_LOADED_MESH_HAS_NO_DATA + + + Constant CannotRemoveLastItem. + D3DX11_ERR_CANNOT_REMOVE_LAST_ITEM + + + Constant DuplicateNamedFragment. + D3DX11_ERR_DUPLICATE_NAMED_FRAGMENT + + + Constant InvalidMesh. + D3DX11_ERR_INVALID_MESH + + + Constant InvalidData. + D3DX11_ERR_INVALID_DATA + + + Constant TooManyInfluences. + D3DX11_ERR_TOO_MANY_INFLUENCES + + + +

The interface encapsulates a list of graphics commands for play back.

+
+ +

There is no explicit creation method, simply declare an interface, then call to record commands or to play back commands.

+
+ + ff476361 + ID3D11CommandList + ID3D11CommandList +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the initialization flags associated with the deferred context that created the command list.

+
+

The context flag is reserved for future use and is always 0.

+ +

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

+
+ + ff476362 + unsigned int ID3D11CommandList::GetContextFlags() + ID3D11CommandList::GetContextFlags +
+ + +

Gets the initialization flags associated with the deferred context that created the command list.

+
+ +

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

+
+ + ff476362 + GetContextFlags + GetContextFlags + unsigned int ID3D11CommandList::GetContextFlags() +
+ + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind an array of shader resources to the domain-shader stage.

+
+

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

+

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to set to the device.

+ +

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476421 + void ID3D11DeviceContext::DSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) + ID3D11DeviceContext::DSSetShaderResources +
+ + +

Set a domain shader to the device.

+
+

Pointer to a domain shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476420 + void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::DSSetShader +
+ + +

Set a domain shader to the device.

+
+

Pointer to a domain shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476420 + void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::DSSetShader +
+ + +

Set an array of sampler states to the domain-shader stage.

+
+

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

+

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ). See Remarks.

+ +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476419 + void ID3D11DeviceContext::DSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) + ID3D11DeviceContext::DSSetSamplers +
+ + +

Sets the constant buffers used by the domain-shader stage.

+
+

Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

+

Number of buffers to set (ranges from 0 to - StartSlot).

+

Array of constant buffers (see ) being given to the device.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the DSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

+
+ + ff476418 + void ID3D11DeviceContext::DSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) + ID3D11DeviceContext::DSSetConstantBuffers +
+ + +

Get the domain-shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476417 + void ID3D11DeviceContext::DSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::DSGetShaderResources +
+ + +

Get the domain shader currently set on the device.

+
+

Address of a reference to a domain shader (see ) to be returned by the method.

+

Pointer to an array of class instance interfaces (see ).

+

The number of class-instance elements in the array.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476416 + void ID3D11DeviceContext::DSGetShader([Out] ID3D11DomainShader** ppDomainShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::DSGetShader +
+ + +

Get an array of sampler state interfaces from the domain-shader stage.

+
+

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

+

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ).

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476415 + void ID3D11DeviceContext::DSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::DSGetSamplers +
+ + +

Get the constant buffers used by the domain-shader stage.

+
+

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

+

Number of buffers to retrieve (ranges from 0 to - StartSlot).

+

Array of constant buffer interface references (see ) to be returned by the method.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476414 + void ID3D11DeviceContext::DSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::DSGetConstantBuffers +
+ + +

A geometry-shader interface manages an executable program (a geometry shader) that controls the geometry-shader stage.

+
+ +

The geometry-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a geometry shader interface, call either or . Before using a geometry shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

+
+ + ff476536 + ID3D11GeometryShader + ID3D11GeometryShader +
+ + Constant StreamOutputNoRasterizedStream. + D3D11_SO_NO_RASTERIZED_STREAM + + + Constant StreamOutputStreamCount. + D3D11_SO_STREAM_COUNT + + + Constant StreamOutputOutputComponentCount. + D3D11_SO_OUTPUT_COMPONENT_COUNT + + + Constant StreamOutputBufferSlotCount. + D3D11_SO_BUFFER_SLOT_COUNT + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + An array of instances describing the layout of the output buffers. + An array of buffer strides; each stride is the size of an element for that buffer. + The index number of the stream to be sent to the rasterizer stage. Set to NoRasterizedStream if no stream is to be rasterized. + A dynamic class linkage interface. + + + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets the constant buffers used by the geometry shader pipeline stage.

+
+

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

+

Number of buffers to set (ranges from 0 to - StartSlot).

+

Array of constant buffers (see ) being given to the device.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

You can't use the interface to get information about what is currently bound to the pipeline in the device context. But you can use to get information from a compiled shader. For example, you can use and to determine the slot in which a geometry shader expects a constant buffer. You can then pass this slot number to GSSetConstantBuffers to set the constant buffer. You can call the D3D11Reflect function to retrieve the address of a reference to the interface and then call to get a reference to .

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the GSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

+
+ + ff476436 + void ID3D11DeviceContext::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) + ID3D11DeviceContext::GSSetConstantBuffers +
+ + +

Set a geometry shader to the device.

+
+

Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476438 + void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::GSSetShader +
+ + +

Set a geometry shader to the device.

+
+

Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476438 + void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::GSSetShader +
+ + +

Bind an array of shader resources to the geometry shader stage.

+
+

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

+

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to set to the device.

+ +

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476439 + void ID3D11DeviceContext::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) + ID3D11DeviceContext::GSSetShaderResources +
+ + +

Set an array of sampler states to the geometry shader pipeline stage.

+
+

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

+

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ). See Remarks.

+ +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476437 + void ID3D11DeviceContext::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) + ID3D11DeviceContext::GSSetSamplers +
+ + +

Get the constant buffers used by the geometry shader pipeline stage.

+
+

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

+

Number of buffers to retrieve (ranges from 0 to - StartSlot).

+

Array of constant buffer interface references (see ) to be returned by the method.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476432 + void ID3D11DeviceContext::GSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::GSGetConstantBuffers +
+ + +

Get the geometry shader currently set on the device.

+
+

Address of a reference to a geometry shader (see ) to be returned by the method.

+

Pointer to an array of class instance interfaces (see ).

+

The number of class-instance elements in the array.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476434 + void ID3D11DeviceContext::GSGetShader([Out] ID3D11GeometryShader** ppGeometryShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::GSGetShader +
+ + +

Get the geometry shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476435 + void ID3D11DeviceContext::GSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::GSGetShaderResources +
+ + +

Get an array of sampler state interfaces from the geometry shader pipeline stage.

+
+

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

+

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ).

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476433 + void ID3D11DeviceContext::GSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::GSGetSamplers +
+ + +

A hull-shader interface manages an executable program (a hull shader) that controls the hull-shader stage.

+
+ +

The hull-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a hull-shader interface, call . Before using a hull shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

+
+ + ff476537 + ID3D11HullShader + ID3D11HullShader +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind an array of shader resources to the hull-shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476448 + void ID3D11DeviceContext::HSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) + ID3D11DeviceContext::HSSetShaderResources +
+ + +

Set a hull shader to the device.

+
+

Pointer to a hull shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476447 + void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::HSSetShader +
+ + +

Set a hull shader to the device.

+
+

Pointer to a hull shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476447 + void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::HSSetShader +
+ + +

Set an array of sampler states to the hull-shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476446 + void ID3D11DeviceContext::HSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) + ID3D11DeviceContext::HSSetSamplers +
+ + +

Set the constant buffers used by the hull-shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the HSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

+
+ + ff476445 + void ID3D11DeviceContext::HSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) + ID3D11DeviceContext::HSSetConstantBuffers +
+ + +

Get the hull-shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476443 + void ID3D11DeviceContext::HSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::HSGetShaderResources +
+ + +

Get the hull shader currently set on the device.

+
+

Address of a reference to a hull shader (see ) to be returned by the method.

+

Pointer to an array of class instance interfaces (see ).

+

The number of class-instance elements in the array.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476442 + void ID3D11DeviceContext::HSGetShader([Out] ID3D11HullShader** ppHullShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::HSGetShader +
+ + +

Get an array of sampler state interfaces from the hull-shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476441 + void ID3D11DeviceContext::HSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::HSGetSamplers +
+ + +

Get the constant buffers used by the hull-shader stage.

+
+ No documentation. + No documentation. + No documentation. + +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476440 + void ID3D11DeviceContext::HSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::HSGetConstantBuffers +
+ + +

An information-queue interface stores, retrieves, and filters debug messages. The queue consists of a message queue, an optional storage filter stack, and a optional retrieval filter stack.

+
+ +

To get this interface, turn on debug layer and use IUnknown::QueryInterface from the .

Windows?Phone?8: This API is supported.

+
+ + ff476538 + ID3D11InfoQueue + ID3D11InfoQueue +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Set the maximum number of messages that can be added to the message queue.

+
+

Maximum number of messages that can be added to the message queue. -1 means no limit.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

Windows?Phone?8: This API is supported.

+
+ + ff476573 + HRESULT ID3D11InfoQueue::SetMessageCountLimit([In] unsigned longlong MessageCountLimit) + ID3D11InfoQueue::SetMessageCountLimit +
+ + +

Clear all messages from the message queue.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476545 + void ID3D11InfoQueue::ClearStoredMessages() + ID3D11InfoQueue::ClearStoredMessages +
+ + +

Get a message from the message queue.

+
+

Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with ). 0 is the message at the front of the message queue.

+

Returned message (see ).

+

Size of pMessage in bytes, including the size of the message string that the pMessage points to.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

This method does not remove any messages from the message queue.

This method gets messages from the message queue after an optional retrieval filter has been applied.

Applications should call this method twice to retrieve a message - first to obtain the size of the message and second to get the message. Here is a typical example:

 // Get the size of the message	
+             messageLength = 0;	
+             hr = pInfoQueue->GetMessage(0, null, &messageLength); // Allocate space and get the message	
+             * pMessage = (*)malloc(messageLength);	
+            hr = pInfoQueue->GetMessage(0, pMessage, &messageLength);	
+            

For an overview see Information Queue Overview.

Windows?Phone?8: This API is supported.

+
+ + ff476549 + HRESULT ID3D11InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength) + ID3D11InfoQueue::GetMessageW +
+ + +

Get the number of messages that were allowed to pass through a storage filter.

+
+

Number of messages allowed by a storage filter.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476552 + unsigned longlong ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter() + ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter +
+ + +

Get the number of messages that were denied passage through a storage filter.

+
+

Number of messages denied by a storage filter.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476553 + unsigned longlong ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter() + ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter +
+ + +

Get the number of messages currently stored in the message queue.

+
+

Number of messages currently stored in the message queue.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476556 + unsigned longlong ID3D11InfoQueue::GetNumStoredMessages() + ID3D11InfoQueue::GetNumStoredMessages +
+ + +

Get the number of messages that are able to pass through a retrieval filter.

+
+

Number of messages allowed by a retrieval filter.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476557 + unsigned longlong ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() + ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter +
+ + +

Get the number of messages that were discarded due to the message count limit.

+
+

Number of messages discarded.

+ +

Get and set the message count limit with and , respectively.

Windows?Phone?8: This API is supported.

+
+ + ff476554 + unsigned longlong ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() + ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit +
+ + +

Get the maximum number of messages that can be added to the message queue.

+
+

Maximum number of messages that can be added to the queue. -1 means no limit.

+ +

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

Windows?Phone?8: This API is supported.

+
+ + ff476550 + unsigned longlong ID3D11InfoQueue::GetMessageCountLimit() + ID3D11InfoQueue::GetMessageCountLimit +
+ + +

Add storage filters to the top of the storage-filter stack.

+
+

Array of storage filters (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476542 + HRESULT ID3D11InfoQueue::AddStorageFilterEntries([In] D3D11_INFO_QUEUE_FILTER* pFilter) + ID3D11InfoQueue::AddStorageFilterEntries +
+ + +

Get the storage filter at the top of the storage-filter stack.

+
+

Storage filter at the top of the storage-filter stack.

+

Size of the storage filter in bytes. If pFilter is null, the size of the storage filter will be output to this parameter.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476560 + HRESULT ID3D11InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) + ID3D11InfoQueue::GetStorageFilter +
+ + +

Remove a storage filter from the top of the storage-filter stack.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476544 + void ID3D11InfoQueue::ClearStorageFilter() + ID3D11InfoQueue::ClearStorageFilter +
+ + +

Push an empty storage filter onto the storage-filter stack.

+
+

This method returns one of the following Direct3D 11 Return Codes.

+ +

An empty storage filter allows all messages to pass through.

Windows?Phone?8: This API is supported.

+
+ + ff476567 + HRESULT ID3D11InfoQueue::PushEmptyStorageFilter() + ID3D11InfoQueue::PushEmptyStorageFilter +
+ + +

Push a copy of storage filter currently on the top of the storage-filter stack onto the storage-filter stack.

+
+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476565 + HRESULT ID3D11InfoQueue::PushCopyOfStorageFilter() + ID3D11InfoQueue::PushCopyOfStorageFilter +
+ + +

Push a storage filter onto the storage-filter stack.

+
+

Pointer to a storage filter (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476569 + HRESULT ID3D11InfoQueue::PushStorageFilter([In] D3D11_INFO_QUEUE_FILTER* pFilter) + ID3D11InfoQueue::PushStorageFilter +
+ + +

Pop a storage filter from the top of the storage-filter stack.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476563 + void ID3D11InfoQueue::PopStorageFilter() + ID3D11InfoQueue::PopStorageFilter +
+ + +

Get the size of the storage-filter stack in bytes.

+
+

Size of the storage-filter stack in bytes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476561 + unsigned int ID3D11InfoQueue::GetStorageFilterStackSize() + ID3D11InfoQueue::GetStorageFilterStackSize +
+ + +

Add storage filters to the top of the retrieval-filter stack.

+
+

Array of retrieval filters (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

The following code example shows how to use :

  cats[] = { ..., ..., ... };	
+             sevs[] = { ..., ..., ... };	
+            UINT ids[] = { ..., ..., ... };  filter;	
+            memset( &filter, 0, sizeof(filter) ); // To set the type of messages to allow, 	
+            // set filter.AllowList as follows:	
+            filter.AllowList.NumCategories = sizeof(cats / sizeof()); 	
+            filter.AllowList.pCategoryList = cats;	
+            filter.AllowList.NumSeverities = sizeof(sevs / sizeof()); 	
+            filter.AllowList.pSeverityList = sevs;	
+            filter.AllowList.NumIDs = sizeof(ids) / sizeof(UINT);	
+            filter.AllowList.pIDList = ids; // To set the type of messages to deny, set filter.DenyList 	
+            // similarly to the preceding filter.AllowList. // The following single call sets all of the preceding information.	
+            hr = infoQueue->AddRetrievalFilterEntries( &filter );	
+            

Windows?Phone?8: This API is supported.

+
+ + ff476541 + HRESULT ID3D11InfoQueue::AddRetrievalFilterEntries([In] D3D11_INFO_QUEUE_FILTER* pFilter) + ID3D11InfoQueue::AddRetrievalFilterEntries +
+ + +

Get the retrieval filter at the top of the retrieval-filter stack.

+
+

Retrieval filter at the top of the retrieval-filter stack.

+

Size of the retrieval filter in bytes. If pFilter is null, the size of the retrieval filter will be output to this parameter.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476558 + HRESULT ID3D11InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) + ID3D11InfoQueue::GetRetrievalFilter +
+ + +

Remove a retrieval filter from the top of the retrieval-filter stack.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476543 + void ID3D11InfoQueue::ClearRetrievalFilter() + ID3D11InfoQueue::ClearRetrievalFilter +
+ + +

Push an empty retrieval filter onto the retrieval-filter stack.

+
+

This method returns one of the following Direct3D 11 Return Codes.

+ +

An empty retrieval filter allows all messages to pass through.

Windows?Phone?8: This API is supported.

+
+ + ff476566 + HRESULT ID3D11InfoQueue::PushEmptyRetrievalFilter() + ID3D11InfoQueue::PushEmptyRetrievalFilter +
+ + +

Push a copy of retrieval filter currently on the top of the retrieval-filter stack onto the retrieval-filter stack.

+
+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476564 + HRESULT ID3D11InfoQueue::PushCopyOfRetrievalFilter() + ID3D11InfoQueue::PushCopyOfRetrievalFilter +
+ + +

Push a retrieval filter onto the retrieval-filter stack.

+
+

Pointer to a retrieval filter (see ).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476568 + HRESULT ID3D11InfoQueue::PushRetrievalFilter([In] D3D11_INFO_QUEUE_FILTER* pFilter) + ID3D11InfoQueue::PushRetrievalFilter +
+ + +

Pop a retrieval filter from the top of the retrieval-filter stack.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476562 + void ID3D11InfoQueue::PopRetrievalFilter() + ID3D11InfoQueue::PopRetrievalFilter +
+ + +

Get the size of the retrieval-filter stack in bytes.

+
+

Size of the retrieval-filter stack in bytes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476559 + unsigned int ID3D11InfoQueue::GetRetrievalFilterStackSize() + ID3D11InfoQueue::GetRetrievalFilterStackSize +
+ + +

Add a debug message to the message queue and send that message to debug output.

+
+

Category of a message (see ).

+

Severity of a message (see ).

+

Unique identifier of a message (see ).

+

User-defined message.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

This method is used by the runtime's internal mechanisms to add debug messages to the message queue and send them to debug output. For applications to add their own custom messages to the message queue and send them to debug output, call .

Windows?Phone?8: This API is supported.

+
+ + ff476540 + HRESULT ID3D11InfoQueue::AddMessage([In] D3D11_MESSAGE_CATEGORY Category,[In] D3D11_MESSAGE_SEVERITY Severity,[In] D3D11_MESSAGE_ID ID,[In] const char* pDescription) + ID3D11InfoQueue::AddMessage +
+ + +

Add a user-defined message to the message queue and send that message to debug output.

+
+

Severity of a message (see ).

+

Message string.

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476539 + HRESULT ID3D11InfoQueue::AddApplicationMessage([In] D3D11_MESSAGE_SEVERITY Severity,[In] const char* pDescription) + ID3D11InfoQueue::AddApplicationMessage +
+ + +

Set a message category to break on when a message with that category passes through the storage filter.

+
+

Message category to break on (see ).

+

Turns this breaking condition on or off (true for on, false for off).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476570 + HRESULT ID3D11InfoQueue::SetBreakOnCategory([In] D3D11_MESSAGE_CATEGORY Category,[In] BOOL bEnable) + ID3D11InfoQueue::SetBreakOnCategory +
+ + +

Set a message severity level to break on when a message with that severity level passes through the storage filter.

+
+

A , which represents a message severity level to break on.

+

Turns this breaking condition on or off (true for on, false for off).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476572 + HRESULT ID3D11InfoQueue::SetBreakOnSeverity([In] D3D11_MESSAGE_SEVERITY Severity,[In] BOOL bEnable) + ID3D11InfoQueue::SetBreakOnSeverity +
+ + +

Set a message identifier to break on when a message with that identifier passes through the storage filter.

+
+

Message identifier to break on (see ).

+

Turns this breaking condition on or off (true for on, false for off).

+

This method returns one of the following Direct3D 11 Return Codes.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476571 + HRESULT ID3D11InfoQueue::SetBreakOnID([In] D3D11_MESSAGE_ID ID,[In] BOOL bEnable) + ID3D11InfoQueue::SetBreakOnID +
+ + +

Get a message category to break on when a message with that category passes through the storage filter.

+
+

Message category to break on (see ).

+

Whether this breaking condition is turned on or off (true for on, false for off).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476546 + BOOL ID3D11InfoQueue::GetBreakOnCategory([In] D3D11_MESSAGE_CATEGORY Category) + ID3D11InfoQueue::GetBreakOnCategory +
+ + +

Get a message severity level to break on when a message with that severity level passes through the storage filter.

+
+

Message severity level to break on (see ).

+

Whether this breaking condition is turned on or off (true for on, false for off).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476548 + BOOL ID3D11InfoQueue::GetBreakOnSeverity([In] D3D11_MESSAGE_SEVERITY Severity) + ID3D11InfoQueue::GetBreakOnSeverity +
+ + +

Get a message identifier to break on when a message with that identifier passes through the storage filter.

+
+

Message identifier to break on (see ).

+

Whether this breaking condition is turned on or off (true for on, false for off).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476547 + BOOL ID3D11InfoQueue::GetBreakOnID([In] D3D11_MESSAGE_ID ID) + ID3D11InfoQueue::GetBreakOnID +
+ + +

Set a boolean that turns the debug output on or off.

+
+

Disable/Enable the debug output (TRUE to disable or mute the output, to enable the output).

+ +

This will stop messages that pass the storage filter from being printed out in the debug output, however those messages will still be added to the message queue.

Windows?Phone?8: This API is supported.

+
+ + ff476574 + void ID3D11InfoQueue::SetMuteDebugOutput([In] BOOL bMute) + ID3D11InfoQueue::SetMuteDebugOutput +
+ + +

Get a boolean that turns the debug output on or off.

+
+

Whether the debug output is on or off (true for on, false for off).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476551 + BOOL ID3D11InfoQueue::GetMuteDebugOutput() + ID3D11InfoQueue::GetMuteDebugOutput +
+ + +

Get a message from the message queue.

+
+

Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with ). 0 is the message at the front of the message queue.

+ Returned message (see ) + ff476549 + HRESULT ID3D11InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength) + ID3D11InfoQueue::GetMessageW +
+ + +

Get the storage filter at the top of the storage-filter stack.

+
+ The storage filter at the top of the storage-filter stack. + ff476560 + HRESULT ID3D11InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) + ID3D11InfoQueue::GetStorageFilter +
+ + +

Get the retrieval filter at the top of the retrieval-filter stack.

+
+ The retrieval filter at the top of the retrieval-filter stack. + ff476558 + HRESULT ID3D11InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) + ID3D11InfoQueue::GetRetrievalFilter +
+ + +

Get or sets the maximum number of messages that can be added to the message queue.

+
+ +

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

Windows?Phone?8: This API is supported.

+
+ + ff476550 + GetMessageCountLimit / SetMessageCountLimit + GetMessageCountLimit + unsigned longlong ID3D11InfoQueue::GetMessageCountLimit() +
+ + +

Get the number of messages that were allowed to pass through a storage filter.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476552 + GetNumMessagesAllowedByStorageFilter + GetNumMessagesAllowedByStorageFilter + unsigned longlong ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter() +
+ + +

Get the number of messages that were denied passage through a storage filter.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476553 + GetNumMessagesDeniedByStorageFilter + GetNumMessagesDeniedByStorageFilter + unsigned longlong ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter() +
+ + +

Get the number of messages currently stored in the message queue.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476556 + GetNumStoredMessages + GetNumStoredMessages + unsigned longlong ID3D11InfoQueue::GetNumStoredMessages() +
+ + +

Get the number of messages that are able to pass through a retrieval filter.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476557 + GetNumStoredMessagesAllowedByRetrievalFilter + GetNumStoredMessagesAllowedByRetrievalFilter + unsigned longlong ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() +
+ + +

Get the number of messages that were discarded due to the message count limit.

+
+ +

Get and set the message count limit with and , respectively.

Windows?Phone?8: This API is supported.

+
+ + ff476554 + GetNumMessagesDiscardedByMessageCountLimit + GetNumMessagesDiscardedByMessageCountLimit + unsigned longlong ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() +
+ + +

Get the size of the storage-filter stack in bytes.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476561 + GetStorageFilterStackSize + GetStorageFilterStackSize + unsigned int ID3D11InfoQueue::GetStorageFilterStackSize() +
+ + +

Get the size of the retrieval-filter stack in bytes.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476559 + GetRetrievalFilterStackSize + GetRetrievalFilterStackSize + unsigned int ID3D11InfoQueue::GetRetrievalFilterStackSize() +
+ + +

Get or sets a boolean that turns the debug output on or off.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476551 + GetMuteDebugOutput / SetMuteDebugOutput + GetMuteDebugOutput + BOOL ID3D11InfoQueue::GetMuteDebugOutput() +
+ + +

An input-layout interface holds a definition of how to feed vertex data that is laid out in memory into the input-assembler stage of the graphics pipeline.

+
+ +

To create an input-layout object, call . To bind the input-layout object to the input-assembler stage, call .

Windows?Phone?8: This API is supported.

+
+ + ff476575 + ID3D11InputLayout + ID3D11InputLayout +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the object to describe the + input-buffer data for the input-assembler stage. + + ID3D11Device::CreateInputLayout + The device used to create the layout. + An array of input elements describing the layout of the input data. + The compiled shader used to validate the input elements. + + + +

A pixel-shader interface manages an executable program (a pixel shader) that controls the pixel-shader stage.

+
+ +

The pixel-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in are implemented from a common set of features referred to as the common-shader core..

To create a pixel shader interface, call . Before using a pixel shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

Windows?Phone?8: This API is supported.

+
+ + ff476576 + ID3D11PixelShader + ID3D11PixelShader +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + Constant InputRegisterComponentBitCount. + D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT + + + Constant OutputRegisterComponentBitCount. + D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT + + + Constant PixelCenterFractionalComponent. + D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT + + + Constant OutputRegisterComponents. + D3D11_PS_OUTPUT_REGISTER_COMPONENTS + + + Constant OutputMaskRegisterComponents. + D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS + + + Constant InputRegisterComponents. + D3D11_PS_INPUT_REGISTER_COMPONENTS + + + Constant LegacyPixelCenterFractionalComponent. + D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT + + + Constant OutputMaskRegisterComponentBitCount. + D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT + + + Constant OutputMaskRegisterCount. + D3D11_PS_OUTPUT_MASK_REGISTER_COUNT + + + Constant FrontfacingTrueValue. + D3D11_PS_FRONTFACING_TRUE_VALUE + + + Constant OutputDepthRegisterCount. + D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT + + + Constant OutputDepthRegisterComponents. + D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS + + + Constant InputRegisterReadsPerInst. + D3D11_PS_INPUT_REGISTER_READS_PER_INST + + + Constant OutputRegisterCount. + D3D11_PS_OUTPUT_REGISTER_COUNT + + + Constant OutputDepthRegisterComponentBitCount. + D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT + + + Constant FrontfacingDefaultValue. + D3D11_PS_FRONTFACING_DEFAULT_VALUE + + + Constant FrontfacingFalseValue. + D3D11_PS_FRONTFACING_FALSE_VALUE + + + Constant InputRegisterCount. + D3D11_PS_INPUT_REGISTER_COUNT + + + Constant InputRegisterReadPorts. + D3D11_PS_INPUT_REGISTER_READ_PORTS + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Bind an array of shader resources to the pixel shader stage.

+
+

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

+

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to set to the device.

+ +

If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476473 + void ID3D11DeviceContext::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) + ID3D11DeviceContext::PSSetShaderResources +
+ + +

Sets a pixel shader to the device.

+
+

Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Set ppClassInstances to null if no interfaces are used in the shader. If it is not null, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.

Windows?Phone?8: This API is supported.

+
+ + ff476472 + void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::PSSetShader +
+ + +

Sets a pixel shader to the device.

+
+

Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Set ppClassInstances to null if no interfaces are used in the shader. If it is not null, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.

Windows?Phone?8: This API is supported.

+
+ + ff476472 + void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::PSSetShader +
+ + +

Set an array of sampler states to the pixel shader pipeline stage.

+
+

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

+

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ). See Remarks.

+ +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MipLODBias0
MaxAnisotropy1
ComparisonFunc
BorderColor[0]1.0f
BorderColor[1]1.0f
BorderColor[2]1.0f
BorderColor[3]1.0f
MinLOD-FLT_MAX
MaxLODFLT_MAX

?

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476471 + void ID3D11DeviceContext::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) + ID3D11DeviceContext::PSSetSamplers +
+ + +

Sets the constant buffers used by the pixel shader pipeline stage.

+
+

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

+

Number of buffers to set (ranges from 0 to - StartSlot).

+

Array of constant buffers (see ) being given to the device.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available on Windows?8 and later operating systems, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the PSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

+
+ + ff476470 + void ID3D11DeviceContext::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) + ID3D11DeviceContext::PSSetConstantBuffers +
+ + +

Bind an array of shader resources to the pixel shader stage.

+
+

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

+

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to set to the device.

+ +

If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476473 + void ID3D11DeviceContext::PSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::PSGetShaderResources +
+ + +

Get the pixel shader currently set on the device.

+
+

Address of a reference to a pixel shader (see ) to be returned by the method.

+

Pointer to an array of class instance interfaces (see ).

+

The number of class-instance elements in the array.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476468 + void ID3D11DeviceContext::PSGetShader([Out] ID3D11PixelShader** ppPixelShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::PSGetShader +
+ + +

Get an array of sampler states from the pixel shader pipeline stage.

+
+

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

+

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Arry of sampler-state interface references (see ) to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476467 + void ID3D11DeviceContext::PSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::PSGetSamplers +
+ + +

Get the constant buffers used by the pixel shader pipeline stage.

+
+

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

+

Number of buffers to retrieve (ranges from 0 to - StartSlot).

+

Array of constant buffer interface references (see ) to be returned by the method.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476466 + void ID3D11DeviceContext::PSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::PSGetConstantBuffers +
+ + +

A predicate interface determines whether geometry should be processed depending on the results of a previous draw call.

+
+ +

To create a predicate object, call . To set the predicate object, call .

There are two types of predicates: stream-output-overflow predicates and occlusion predicates. Stream-output-overflow predicates cause any geometry residing in stream-output buffers that were overflowed to not be processed. Occlusion predicates cause any geometry that did not have a single sample pass the depth/stencil tests to not be processed.

Windows?Phone?8: This API is supported.

+
+ + ff476577 + ID3D11Predicate + ID3D11Predicate +
+ + +

A query interface queries information from the GPU.

+
+ +

A query can be created with .

Query data is typically gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of query.

There are, however, some queries that do not require calls to Begin. For a list of possible queries see .

A query is typically executed as shown in the following code:

  queryDesc;	
+            ... // Fill out queryDesc structure	
+             * pQuery;	
+            pDevice->CreateQuery(&queryDesc, &pQuery);	
+            pDeviceContext->Begin(pQuery); ... // Issue graphics commands pDeviceContext->End(pQuery);	
+            UINT64 queryData; // This data type is different depending on the query type while(  != pDeviceContext->GetData(pQuery, &queryData, sizeof(UINT64), 0) )	
+            {	
+            }	
+            

When using a query that does not require a call to Begin, it still requires a call to End. The call to End causes the data returned by GetData to be accurate up until the last call to End.

Windows?Phone?8: This API is supported.

+
+ + ff476578 + ID3D11Query + ID3D11Query +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a query description.

+
+

Pointer to a query description (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476579 + void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc) + ID3D11Query::GetDesc +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The query description. + The newly created object. + + + +

Get a query description.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476579 + GetDesc + GetDesc + void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc) +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The query description. + The newly created object. + + + +

The rasterizer-state interface holds a description for rasterizer state that you can bind to the rasterizer stage.

+
+ +

To create a rasterizer-state object, call . To bind the rasterizer-state object to the rasterizer stage, call .

Windows?Phone?8: This API is supported.

+
+ + ff476580 + ID3D11RasterizerState + ID3D11RasterizerState +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the description for rasterizer state that you used to create the rasterizer-state object.

+
+

A reference to a structure that receives a description of the rasterizer state.

+ +

You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476581 + void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc) + ID3D11RasterizerState::GetDesc +
+ + +

Create a rasterizer state object that tells the rasterizer stage how to behave.

+
+ The device with which to associate the state object. + A rasterizer state description + +

4096 unique rasterizer state objects can be created on a device at a time.

If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.

+
+ ff476516 + HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState) + ID3D11Device::CreateRasterizerState +
+ + +

Gets the description for rasterizer state that you used to create the rasterizer-state object.

+
+ +

You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476581 + GetDesc + GetDesc + void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc) +
+ + +

A render-target-view interface identifies the render-target subresources that can be accessed during rendering.

+
+ +

To create a render-target view, call . To bind a render-target view to the pipeline, call .

A rendertarget is a resource that can be written by the output-merger stage at the end of a render pass. Each render-target should also have a corresponding depth-stencil view.

Windows?Phone?8: This API is supported.

+
+ + ff476582 + ID3D11RenderTargetView + ID3D11RenderTargetView +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the properties of a render target view.

+
+

Pointer to the description of a render target view (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476583 + void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc) + ID3D11RenderTargetView::GetDesc +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. + ID3D11Device::CreateRenderTargetView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. + A structure describing the to be created. + ID3D11Device::CreateRenderTargetView + + + +

Get the properties of a render target view.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476583 + GetDesc + GetDesc + void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc) +
+ + +

The sampler-state interface holds a description for sampler state that you can bind to any shader stage of the pipeline for reference by texture sample operations.

+
+ +

To create a sampler-state object, call .

To bind a sampler-state object to any pipeline shader stage, call the following methods:

You can bind the same sampler-state object to multiple shader stages simultaneously.

Windows?Phone?8: This API is supported.

+
+ + ff476588 + ID3D11SamplerState + ID3D11SamplerState +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the description for sampler state that you used to create the sampler-state object.

+
+

A reference to a structure that receives a description of the sampler state.

+ +

You use the description for sampler state in a call to the method to create the sampler-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476589 + void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc) + ID3D11SamplerState::GetDesc +
+ + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + ff476518 + HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState) + ID3D11Device::CreateSamplerState + + + +

Gets the description for sampler state that you used to create the sampler-state object.

+
+ +

You use the description for sampler state in a call to the method to create the sampler-state object.

Windows?Phone?8: This API is supported.

+
+ + ff476589 + GetDesc + GetDesc + void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc) +
+ + +

Sets which direction to perform scans in.

+
+ +

SetScanDirection sets the direction and will performed scans in.

+
+ + ff476857 + ID3DX11Scan + ID3DX11Scan +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets which direction to perform scans in.

+
+

Direction to perform scans in. See .

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

SetScanDirection sets the direction and will performed scans in.

+
+ + ff476857 + HRESULT ID3DX11Scan::SetScanDirection([In] D3DX11_SCAN_DIRECTION Direction) + ID3DX11Scan::SetScanDirection +
+ + +

Performs an unsegmented scan of a sequence.

+
+

The type of element in the sequence. See for more information.

+

The binary operation to perform. See for more information.

+

Size of scan in elements.

+

Input sequence on the device. Set pSrc and pDst to the same value for in-place scans.

+

Output sequence on the device.

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

+
+ + ff476856 + HRESULT ID3DX11Scan::Scan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pDst) + ID3DX11Scan::Scan +
+ + +

Performs a multiscan of a sequence.

+
+

The type of element in the sequence. See for more information.

+

The binary operation to perform. See for more information.

+

Size of scan in elements.

+

Pitch of the next scan in elements.

+

Number of scans in the multiscan.

+

Input sequence on the device. Set pSrc and pDst to the same value for in-place scans.

+

Output sequence on the device.

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

+
+ + ff476855 + HRESULT ID3DX11Scan::Multiscan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In] unsigned int ElementScanPitch,[In] unsigned int ScanCount,[In] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pDst) + ID3DX11Scan::Multiscan +
+ + + Creates a scan context. + + The the scan is associated with. + Maximum single scan size, in elements (FLOAT, UINT, or INT) + Maximum number of scans in multiscan. + HRESULT D3DX11CreateScan([In] ID3D11DeviceContext* pDeviceContext,[None] int MaxElementScanSize,[None] int MaxScanCount,[Out] ID3DX11Scan** ppScan) + + + +

Performs a segmented scan of a sequence.

+
+ +

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

The format of the resource view to which the pSrcElementFlags parameter points must be .

+
+ + ff476859 + ID3DX11SegmentedScan + ID3DX11SegmentedScan +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets which direction to perform scans in.

+
+

Direction to perform scans in. See .

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

SetScanDirection sets the direction will performed scans in.

+
+ + ff476860 + HRESULT ID3DX11SegmentedScan::SetScanDirection([In] D3DX11_SCAN_DIRECTION Direction) + ID3DX11SegmentedScan::SetScanDirection +
+ + +

Performs a segmented scan of a sequence.

+
+

The type of element in the sequence. See for more information.

+

The binary operation to perform. See for more information.

+

Size of scan in elements.

+

Input sequence on the device. Set pSrc and pDst to the same value for in-place scans.

+

Compact array of bits with one bit per element of pSrc. A set value indicates the start of a new segment.

+

Output sequence on the device.

+

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

+ +

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

The format of the resource view to which the pSrcElementFlags parameter points must be .

+
+ + ff476859 + HRESULT ID3DX11SegmentedScan::SegScan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In, Optional] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pSrcElementFlags,[In] ID3D11UnorderedAccessView* pDst) + ID3DX11SegmentedScan::SegScan +
+ + + Creates a segmented scan context. + + Pointer to an interface. + Maximum single scan size, in elements (FLOAT, UINT, or INT). + HRESULT D3DX11CreateSegmentedScan([In] ID3D11DeviceContext* pDeviceContext,[None] int MaxElementScanSize,[Out] ID3DX11SegmentedScan** ppScan) + + + +

A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, and a texture.

+
+ +

To create a shader-resource view, call .

A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling , or .

Windows?Phone?8: This API is supported.

+
+ + ff476628 + ID3D11ShaderResourceView + ID3D11ShaderResourceView +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the shader resource view's description.

+
+

A reference to a structure to be filled with data about the shader resource view.

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476629 + void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc) + ID3D11ShaderResourceView::GetDesc +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + ff476519 + HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) + ID3D11Device::CreateShaderResourceView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + A structure describing the to be created. + ff476519 + HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) + ID3D11Device::CreateShaderResourceView + + + + Create a shader-resource view from a file. Read the characteristics of a texture when the texture is loaded. + + A reference to the device (see ) that will use the resource. + Name of the file that contains the shader-resource view. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX11CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file. + + A reference to the device (see ) that will use the resource. + Name of the file that contains the shader-resource view. + Identifies the characteristics of a texture (see ) when the data processor is created. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX11CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in memory. + + A reference to the device (see ) that will use the resource. + Pointer to a memory location that contains the shader-resource view. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in memory. + + A reference to the device (see ) that will use the resource. + Pointer to a memory location that contains the shader-resource view. + Identifies the characteristics of a texture (see ) when the data processor is created. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in a stream.. + + A reference to the device (see ) that will use the resource. + Pointer to the file in memory that contains the shader-resource view. + Size of the file to read from the stream + Returns a reference to the shader-resource view (see ). + HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + + Create a shader-resource view from a file in a stream.. + + A reference to the device (see ) that will use the resource. + Pointer to the file in memory that contains the shader-resource view. + Size of the file to read from the stream + Identifies the characteristics of a texture (see ) when the data processor is created. + Returns a reference to the shader-resource view (see ). + HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) + + + +

Get the shader resource view's description.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476629 + GetDesc + GetDesc + void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc) +
+ + +

Note??The interface and its methods are not supported in Direct3D 11.

+
+ + ff476630 + ID3D11SwitchToRef + ID3D11SwitchToRef +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Note??The interface and its methods are not supported in Direct3D 11.

+
+ No documentation. +

Reserved.

+ + ff476632 + BOOL ID3D11SwitchToRef::SetUseRef([In] BOOL UseRef) + ID3D11SwitchToRef::SetUseRef +
+ + +

Note??The interface and its methods are not supported in Direct3D 11.

+
+

Reserved.

+ + ff476631 + BOOL ID3D11SwitchToRef::GetUseRef() + ID3D11SwitchToRef::GetUseRef +
+ + +

Note??The interface and its methods are not supported in Direct3D 11.

+
+ + ff476631 + GetUseRef + GetUseRef + BOOL ID3D11SwitchToRef::GetUseRef() +
+ + +

A 1D texture interface accesses texel data, which is structured memory.

+
+ +

To create an empty 1D texture, call . For info about how to create a 2D texture, which is similar to creating a 1D texture, see How to: Create a Texture.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

Windows?Phone?8: This API is supported.

+
+ + ff476633 + ID3D11Texture1D + ID3D11Texture1D +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the properties of the texture resource.

+
+

Pointer to a resource description (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476634 + void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc) + ID3D11Texture1D::GetDesc +
+ + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + + + +

Get the properties of the texture resource.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476634 + GetDesc + GetDesc + void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc) +
+ + +

A 2D texture interface manages texel data, which is structured memory.

+
+ +

To create an empty Texture2D resource, call . For info about how to create a 2D texture, see How to: Create a Texture.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

Windows?Phone?8: This API is supported.

+
+ + ff476635 + ID3D11Texture2D + ID3D11Texture2D +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the properties of the texture resource.

+
+

Pointer to a resource description (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476636 + void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc) + ID3D11Texture2D::GetDesc +
+ + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D + + + + + + + Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture. + + The device used to create the normal map. + The source height map texture. + The destination texture. + One or more flags that control generation of normal maps. + One or more flag specifying the source of height information. + Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible. + A object describing the result of the operation. + + + + Projects a function represented in a cube map into spherical harmonics. + + A reference to an object. + A reference to an that represents a cubemap that is going to be projected into spherical harmonics. + Order of the SH evaluation, generates Order^2 coefficients whose degree is Order-1. Valid range is between 2 and 6. + An array of SH Vector for red, green and blue components with a length Order^2. + HRESULT D3DX11SHProjectCubeMap([In] ID3D11DeviceContext* pContext,[In] unsigned int Order,[In] ID3D11Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut) + + + +

Get the properties of the texture resource.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476636 + GetDesc + GetDesc + void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc) +
+ + +

A 3D texture interface accesses texel data, which is structured memory.

+
+ +

To create an empty Texture3D resource, call . For info about how to create a 2D texture, which is similar to creating a 3D texture, see How to: Create a Texture.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

Windows?Phone?8: This API is supported.

+
+ + ff476637 + ID3D11Texture3D + ID3D11Texture3D +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the properties of the texture resource.

+
+

Pointer to a resource description (see ).

+ +

Windows?Phone?8: This API is supported.

+
+ + ff476636 + void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc) + ID3D11Texture3D::GetDesc +
+ + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + + + + + + +

Get the properties of the texture resource.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476636 + GetDesc + GetDesc + void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc) +
+ + +

A view interface specifies the parts of a resource the pipeline can access during rendering.

+
+ +

To create a view for an unordered access resource, call .

All resources must be bound to the pipeline before they can be accessed. Call to bind an unordered access view to a compute shader; call to bind an unordered access view to a pixel shader.

+
+ + ff476639 + ID3D11UnorderedAccessView + ID3D11UnorderedAccessView +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a description of the resource.

+
+

Pointer to a resource description (see .)

+ + ff476640 + void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc) + ID3D11UnorderedAccessView::GetDesc +
+ + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the UnorderedAccess flag. + ID3D11Device::CreateUnorderedAccessView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the UnorderedAccess flag. + A structure describing the to be created. + ID3D11Device::CreateUnorderedAccessView + + + +

Get a description of the resource.

+
+ + ff476640 + GetDesc + GetDesc + void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc) +
+ + +

A vertex-shader interface manages an executable program (a vertex shader) that controls the vertex-shader stage.

+
+ +

The vertex-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a vertex shader interface, call . Before using a vertex shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

Windows?Phone?8: This API is supported.

+
+ + ff476641 + ID3D11VertexShader + ID3D11VertexShader +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + +

The interface represents a device context which generates rendering commands.

+
+ +

Windows?Phone?8: This API is supported.

+
+ + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets the constant buffers used by the vertex shader pipeline stage.

+
+

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

+

Number of buffers to set (ranges from 0 to - StartSlot).

+

Array of constant buffers (see ) being given to the device.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the VSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

+
+ + ff476491 + void ID3D11DeviceContext::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) + ID3D11DeviceContext::VSSetConstantBuffers +
+ + +

Set a vertex shader to the device.

+
+

Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476493 + void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::VSSetShader +
+ + +

Set a vertex shader to the device.

+
+

Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

+

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

+

The number of class-instance interfaces in the array.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

+
+ + ff476493 + void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::VSSetShader +
+ + +

Bind an array of shader resources to the vertex-shader stage.

+
+

Index into the device's zero-based array to begin setting shader resources to (range is from 0 to - 1).

+

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (range is from 0 to - StartSlot).

+

Array of shader resource view interfaces to set to the device.

+ +

If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476494 + void ID3D11DeviceContext::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) + ID3D11DeviceContext::VSSetShaderResources +
+ + +

Set an array of sampler states to the vertex shader pipeline stage.

+
+

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

+

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Pointer to an array of sampler-state interfaces (see ). See Remarks.

+ +

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
+             SamplerDesc;	
+            SamplerDesc.Filter = ;	
+            SamplerDesc.AddressU = ;	
+            SamplerDesc.AddressV = ;	
+            SamplerDesc.AddressW = ;	
+            SamplerDesc.MipLODBias = 0;	
+            SamplerDesc.MaxAnisotropy = 1;	
+            SamplerDesc.ComparisonFunc = ;	
+            SamplerDesc.BorderColor[0] = 1.0f;	
+            SamplerDesc.BorderColor[1] = 1.0f;	
+            SamplerDesc.BorderColor[2] = 1.0f;	
+            SamplerDesc.BorderColor[3] = 1.0f;	
+            SamplerDesc.MinLOD = -FLT_MAX;	
+            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

+
+ + ff476492 + void ID3D11DeviceContext::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) + ID3D11DeviceContext::VSSetSamplers +
+ + +

Sets the constant buffers used by the vertex shader pipeline stage.

+
+

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

+

Number of buffers to set (ranges from 0 to - StartSlot).

+

Array of constant buffers (see ) being given to the device.

+ +

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the VSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

+
+ + ff476491 + void ID3D11DeviceContext::VSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::VSGetConstantBuffers +
+ + +

Get the vertex shader currently set on the device.

+
+

Address of a reference to a vertex shader (see ) to be returned by the method.

+

Pointer to an array of class instance interfaces (see ).

+

The number of class-instance elements in the array.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476489 + void ID3D11DeviceContext::VSGetShader([Out] ID3D11VertexShader** ppVertexShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::VSGetShader +
+ + +

Get the vertex shader resources.

+
+

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

+

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

+

Array of shader resource view interfaces to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476490 + void ID3D11DeviceContext::VSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::VSGetShaderResources +
+ + +

Get an array of sampler states from the vertex shader pipeline stage.

+
+

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

+

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

+

Arry of sampler-state interface references (see ) to be returned by the device.

+ +

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

+
+ + ff476488 + void ID3D11DeviceContext::VSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::VSGetSamplers +
+ + +

Describes an HLSL class instance.

+
+ +

The structure is returned by the method.

The members of this structure except InstanceIndex are valid (non default values) if they describe a class instance aquired using . The InstanceIndex member is only valid when the class instance is aquired using .

+
+ + ff476098 + D3D11_CLASS_INSTANCE_DESC + D3D11_CLASS_INSTANCE_DESC +
+ + +

The instance ID of an HLSL class; the default value is 0.

+
+ + ff476098 + unsigned int InstanceId + unsigned int InstanceId +
+ + +

The instance index of an HLSL class; the default value is 0.

+
+ + ff476098 + unsigned int InstanceIndex + unsigned int InstanceIndex +
+ + +

The type ID of an HLSL class; the default value is 0.

+
+ + ff476098 + unsigned int TypeId + unsigned int TypeId +
+ + +

Describes the constant buffer associated with an HLSL class; the default value is 0.

+
+ + ff476098 + unsigned int ConstantBuffer + unsigned int ConstantBuffer +
+ + +

The base constant buffer offset associated with an HLSL class; the default value is 0.

+
+ + ff476098 + unsigned int BaseConstantBufferOffset + unsigned int BaseConstantBufferOffset +
+ + +

The base texture associated with an HLSL class; the default value is 127.

+
+ + ff476098 + unsigned int BaseTexture + unsigned int BaseTexture +
+ + +

The base sampler associated with an HLSL class; the default value is 15.

+
+ + ff476098 + unsigned int BaseSampler + unsigned int BaseSampler +
+ + +

True if the class was created; the default value is false.

+
+ + ff476098 + BOOL Created + BOOL Created +
+ + +

Information about the video card's performance counter capabilities.

+
+ +

This structure is returned by .

+
+ + ff476104 + D3D11_COUNTER_INFO + D3D11_COUNTER_INFO +
+ + +

Largest device-dependent counter ID that the device supports. If none are supported, this value will be 0. Otherwise it will be greater than or equal to . See .

+
+ + ff476104 + D3D11_COUNTER LastDeviceDependentCounter + D3D11_COUNTER LastDeviceDependentCounter +
+ + +

Number of counters that can be simultaneously supported.

+
+ + ff476104 + unsigned int NumSimultaneousCounters + unsigned int NumSimultaneousCounters +
+ + +

Number of detectable parallel units that the counter is able to discern. Values are 1 ~ 4. Use NumDetectableParallelUnits to interpret the values of the VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, and OTHER_GPU_PROCESSING counters.

+
+ + ff476104 + unsigned char NumDetectableParallelUnits + unsigned char NumDetectableParallelUnits +
+ + +

Describes a counter.

+
+ +

This structure is used by , and .

+
+ + ff476103 + D3D11_COUNTER_DESC + D3D11_COUNTER_DESC +
+ + +

Type of counter (see ).

+
+ + ff476103 + D3D11_COUNTER Counter + D3D11_COUNTER Counter +
+ + +

Reserved.

+
+ + ff476103 + unsigned int MiscFlags + unsigned int MiscFlags +
+ + +

Stencil operations that can be performed based on the results of stencil test.

+
+ +

All stencil operations are specified as a . The stencil operation can be set differently based on the outcome of the stencil test (which is referred to as StencilFunc in the stencil test portion of depth-stencil testing.

This structure is a member of a depth-stencil description.

+
+ + ff476109 + D3D11_DEPTH_STENCILOP_DESC + D3D11_DEPTH_STENCILOP_DESC +
+ + +

The stencil operation to perform when stencil testing fails.

+
+ + ff476109 + D3D11_STENCIL_OP StencilFailOp + D3D11_STENCIL_OP StencilFailOp +
+ + +

The stencil operation to perform when stencil testing passes and depth testing fails.

+
+ + ff476109 + D3D11_STENCIL_OP StencilDepthFailOp + D3D11_STENCIL_OP StencilDepthFailOp +
+ + +

The stencil operation to perform when stencil testing and depth testing both pass.

+
+ + ff476109 + D3D11_STENCIL_OP StencilPassOp + D3D11_STENCIL_OP StencilPassOp +
+ + +

A function that compares stencil data against existing stencil data. The function options are listed in .

+
+ + ff476109 + D3D11_COMPARISON_FUNC StencilFunc + D3D11_COMPARISON_FUNC StencilFunc +
+ + +

Specifies the subresources of a texture that are accessible from a depth-stencil view.

+
+ +

These are valid formats for a depth-stencil view:

A depth-stencil view cannot use a typeless format. If the format chosen is , then the format of the parent resource is used.

A depth-stencil-view description is needed when calling .

+
+ + ff476112 + D3D11_DEPTH_STENCIL_VIEW_DESC + D3D11_DEPTH_STENCIL_VIEW_DESC +
+ + +

Resource data format (see ). See remarks for allowable formats.

+
+ + ff476112 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

Type of resource (see ). Specifies how a depth-stencil resource will be accessed; the value is stored in the union in this structure.

+
+ + ff476112 + D3D11_DSV_DIMENSION ViewDimension + D3D11_DSV_DIMENSION ViewDimension +
+ + +

A value that describes whether the texture is read only. Pass 0 to specify that it is not read only; otherwise, pass one of the members of the enumerated type.

+
+ + ff476112 + D3D11_DSV_FLAG Flags + D3D11_DSV_FLAG Flags +
+ + +

Specifies a 1D texture subresource (see ).

+
+ + ff476112 + D3D11_TEX1D_DSV Texture1D + D3D11_TEX1D_DSV Texture1D +
+ + +

Specifies an array of 1D texture subresources (see ).

+
+ + ff476112 + D3D11_TEX1D_ARRAY_DSV Texture1DArray + D3D11_TEX1D_ARRAY_DSV Texture1DArray +
+ + +

Specifies a 2D texture subresource (see ).

+
+ + ff476112 + D3D11_TEX2D_DSV Texture2D + D3D11_TEX2D_DSV Texture2D +
+ + +

Specifies an array of 2D texture subresources (see ).

+
+ + ff476112 + D3D11_TEX2D_ARRAY_DSV Texture2DArray + D3D11_TEX2D_ARRAY_DSV Texture2DArray +
+ + +

Specifies a multisampled 2D texture (see ).

+
+ + ff476112 + D3D11_TEX2DMS_DSV Texture2DMS + D3D11_TEX2DMS_DSV Texture2DMS +
+ + +

Specifies an array of multisampled 2D textures (see ).

+
+ + ff476112 + D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray + D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray +
+ + +

Specifies the subresource from a 2D texture that is accessible to a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + ff476243 + D3D11_TEX2D_DSV + D3D11_TEX2D_DSV +
+ + +

The index of the first mipmap level to use.

+
+ + ff476243 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

Specifies the subresources from an array of 1D textures to use in a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + ff476225 + D3D11_TEX1D_ARRAY_DSV + D3D11_TEX1D_ARRAY_DSV +
+ + +

The index of the first mipmap level to use.

+
+ + ff476225 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476225 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures to use.

+
+ + ff476225 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Specifies the subresource from a 1D texture that is accessible to a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + ff476229 + D3D11_TEX1D_DSV + D3D11_TEX1D_DSV +
+ + +

The index of the first mipmap level to use.

+
+ + ff476229 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

Specifies the subresources from an array 2D textures that are accessible to a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + ff476239 + D3D11_TEX2D_ARRAY_DSV + D3D11_TEX2D_ARRAY_DSV +
+ + +

The index of the first mipmap level to use.

+
+ + ff476239 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476239 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures to use.

+
+ + ff476239 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Specifies the subresource from a multisampled 2D texture that is accessible to a depth-stencil view.

+
+ +

Because a multisampled 2D texture contains a single subtexture, there is nothing to specify; this unused member is included so that this structure will compile in C.

+
+ + ff476236 + D3D11_TEX2DMS_DSV + D3D11_TEX2DMS_DSV +
+ + +

Unused.

+
+ + ff476236 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine +
+ + +

Specifies the subresources from an array of multisampled 2D textures for a depth-stencil view.

+
+ +

This structure is one member of a depth-stencil-view description (see ).

+
+ + ff476233 + D3D11_TEX2DMS_ARRAY_DSV + D3D11_TEX2DMS_ARRAY_DSV +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476233 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures to use.

+
+ + ff476233 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Describes buffer requirements for an FFT.

+
+ +

The structure is initialized by a call to one of the create-FFT functions (for example, ). For more create-FFT functions, see D3DCSX 11 Functions.

Use the info in to allocate raw buffers of the specified (or larger) sizes and then call the method to register the buffers with the FFT object.

Some FFT algorithms benefit from precomputing sin and cos. The FFT object might store precomputed data in the user-supplied buffers.

+
+ + ff476308 + D3DX11_FFT_BUFFER_INFO + D3DX11_FFT_BUFFER_INFO +
+ + +

Number of temporary buffers needed. Allowed range is 0 to D3DX11_FFT_MAX_TEMP_BUFFERS.

+
+ + ff476308 + unsigned int NumTempBufferSizes + unsigned int NumTempBufferSizes +
+ + +

Number of precompute buffers required. Allowed range is 0 to D3DX11_FFT_MAX_PRECOMPUTE_BUFFERS.

+
+ + ff476308 + unsigned int NumPrecomputeBufferSizes + unsigned int NumPrecomputeBufferSizes +
+ + +

Minimum sizes (in FLOATs) of temporary buffers.

+
+ + ff476308 + unsigned int TempBufferFloatSizes[4] + unsigned int TempBufferFloatSizes +
+ + +

Minimum sizes (in FLOATs) for precompute buffers.

+
+ + ff476308 + unsigned int PrecomputeBufferFloatSizes[4] + unsigned int PrecomputeBufferFloatSizes +
+ + +

Describes an FFT.

+
+ + ff476311 + D3DX11_FFT_DESC + D3DX11_FFT_DESC +
+ + +

Number of dimension in the FFT.

+
+ + ff476311 + unsigned int NumDimensions + unsigned int NumDimensions +
+ + +

Combination of flags indicating the dimensions to transform.

+
+ + ff476311 + D3DX11_FFT_DIM_MASK DimensionMask + D3DX11_FFT_DIM_MASK DimensionMask +
+ + +

flag indicating the type of data being transformed.

+
+ + ff476311 + D3DX11_FFT_DATA_TYPE Type + D3DX11_FFT_DATA_TYPE Type +
+ + +

Length of each dimension in the FFT.

+
+ + ff476311 + unsigned int ElementLengths[32] + unsigned int ElementLengths +
+ + +

Describes compute shader and raw and structured buffer support in the current graphics driver.

+
+ +

Direct3D 11 devices () are required to support Compute Shader model 5.0. Direct3D 10.x devices (, ) can optionally support Compute Shader model 4.0 or 4.1.

+
+ + ff476126 + D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS + D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS +
+ + +

TRUE if compute shaders and raw and structured buffers are supported; otherwise .

+
+ + ff476126 + BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x + BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x +
+ + +

Describes double data type support in the current graphics driver.

+
+ +

If the runtime sets DoublePrecisionFloatShaderOps to TRUE, the hardware and driver support the following Shader Model 5 instructions:

  • dadd
  • dmax
  • dmin
  • dmul
  • deq
  • dge
  • dlt
  • dne
  • dmov
  • dmovc
  • dtof
  • ftod

Note??If DoublePrecisionFloatShaderOps is TRUE, the hardware and driver do not necessarily support double-precision division.

+
+ + ff476127 + D3D11_FEATURE_DATA_DOUBLES + D3D11_FEATURE_DATA_DOUBLES +
+ + +

Specifies whether double types are allowed. If TRUE, double types are allowed; otherwise . The runtime must set DoublePrecisionFloatShaderOps to TRUE in order for you to use any HLSL shader that is compiled with a double type.

+
+ + ff476127 + BOOL DoublePrecisionFloatShaderOps + BOOL DoublePrecisionFloatShaderOps +
+ + +

Describes which resources are supported by the current graphics driver for a given format.

+
+ + ff476128 + D3D11_FEATURE_DATA_FORMAT_SUPPORT + D3D11_FEATURE_DATA_FORMAT_SUPPORT +
+ + +

to return information on.

+
+ + ff476128 + DXGI_FORMAT InFormat + DXGI_FORMAT InFormat +
+ + +

Combination of flags indicating which resources are supported.

+
+ + ff476128 + D3D11_FORMAT_SUPPORT OutFormatSupport + D3D11_FORMAT_SUPPORT OutFormatSupport +
+ + +

Describes which unordered resource options are supported by the current graphics driver for a given format.

+
+ + ff476129 + D3D11_FEATURE_DATA_FORMAT_SUPPORT2 + D3D11_FEATURE_DATA_FORMAT_SUPPORT2 +
+ + +

to return information on.

+
+ + ff476129 + DXGI_FORMAT InFormat + DXGI_FORMAT InFormat +
+ + +

Combination of flags indicating which unordered resource options are supported.

+
+ + ff476129 + D3D11_FORMAT_SUPPORT2 OutFormatSupport2 + D3D11_FORMAT_SUPPORT2 OutFormatSupport2 +
+ + +

Describes the multi-threading features that are supported by the current graphics driver.

+
+ +

Use the structure with the method to determine multi-threading support.

+
+ + ff476130 + D3D11_FEATURE_DATA_THREADING + D3D11_FEATURE_DATA_THREADING +
+ + +

TRUE means resources can be created concurrently on multiple threads while drawing; means that the presence of coarse synchronization will prevent concurrency.

+
+ + ff476130 + BOOL DriverConcurrentCreates + BOOL DriverConcurrentCreates +
+ + +

TRUE means command lists are supported by the current driver; means that the API will emulate deferred contexts and command lists with software.

+
+ + ff476130 + BOOL DriverCommandLists + BOOL DriverCommandLists +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX11_DEFAULT for any of these parameters will cause D3DX to automatically use the value from the source file.

+
+ +

When initializing the structure, you may set any member to D3DX11_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.

This structure can be used by APIs that:

  • Create resources, such as and .
  • Create data processors, such as D3DX11CreateAsyncTextureInfoProcessor or + D3DX11CreateAsyncShaderResourceViewProcessor.

The default values are:

 Width = D3DX11_DEFAULT; Height = D3DX11_DEFAULT; Depth = D3DX11_DEFAULT; FirstMipLevel = D3DX11_DEFAULT; MipLevels = D3DX11_DEFAULT; Usage = () D3DX11_DEFAULT; BindFlags = D3DX11_DEFAULT; CpuAccessFlags = D3DX11_DEFAULT; MiscFlags = D3DX11_DEFAULT; Format = DXGI_FORMAT_FROM_FILE; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT; pSrcInfo = null;	
+            

Here is a brief example that uses this structure to supply the pixel format when loading a texture. For the complete code, see HDRFormats10.cpp in HDRToneMappingCS11 Sample.

 * pCubeRV = null;	
+            WCHAR strPath[MAX_PATH];	
+             LoadInfo; DXUTFindDXSDKMediaFileCch( strPath, MAX_PATH,  L"Light Probes\\uffizi_cross.dds" ); LoadInfo.Format = ; hr = ( pd3dDevice, strPath,  &LoadInfo, null, &pCubeRV, null );	
+            
+
+ + ff476317 + D3DX11_IMAGE_INFO + D3DX11_IMAGE_INFO +
+ + +

The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.

+
+ + ff476317 + unsigned int Width + unsigned int Width +
+ + +

The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.

+
+ + ff476317 + unsigned int Height + unsigned int Height +
+ + +

The depth of the texture. This only applies to volume textures.

+
+ + ff476317 + unsigned int Depth + unsigned int Depth +
+ + +

The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.

+
+ + ff476317 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

The maximum number of mipmap levels in the texture. See the remarks in . Using 0 or D3DX11_DEFAULT will cause a full mipmap chain to be created.

+
+ + ff476317 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Miscellaneous resource properties (see ).

+
+ + ff476317 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
+ + +

A enumeration indicating the format the texture will be in after it is loaded.

+
+ + ff476317 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

The access permissions the cpu will have for the texture resource. See .

+
+ + ff476317 + D3D11_RESOURCE_DIMENSION ResourceDimension + D3D11_RESOURCE_DIMENSION ResourceDimension +
+ + +

Miscellaneous resource properties (see ).

+
+ + ff476317 + D3DX11_IMAGE_FILE_FORMAT ImageFileFormat + D3DX11_IMAGE_FILE_FORMAT ImageFileFormat +
+ + + Retrieves information about a given image file. + + File name of image to retrieve information about. + If the function succeeds, returns a filled with the description of the data in the source file. else returns null + HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) + + + + Retrieves information about a given image file from a memory location. + + an array to the image in memory + If the function succeeds, returns a filled with the description of the data from the image memory. else returns null + HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) + + + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX11_DEFAULT for any of these parameters will cause D3DX to automatically use the value from the source file.

+
+ +

When initializing the structure, you may set any member to D3DX11_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.

This structure can be used by APIs that:

  • Create resources, such as and .
  • Create data processors, such as D3DX11CreateAsyncTextureInfoProcessor or + D3DX11CreateAsyncShaderResourceViewProcessor.

The default values are:

 Width = D3DX11_DEFAULT; Height = D3DX11_DEFAULT; Depth = D3DX11_DEFAULT; FirstMipLevel = D3DX11_DEFAULT; MipLevels = D3DX11_DEFAULT; Usage = () D3DX11_DEFAULT; BindFlags = D3DX11_DEFAULT; CpuAccessFlags = D3DX11_DEFAULT; MiscFlags = D3DX11_DEFAULT; Format = DXGI_FORMAT_FROM_FILE; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT; pSrcInfo = null;	
+            

Here is a brief example that uses this structure to supply the pixel format when loading a texture. For the complete code, see HDRFormats10.cpp in HDRToneMappingCS11 Sample.

 * pCubeRV = null;	
+            WCHAR strPath[MAX_PATH];	
+             LoadInfo; DXUTFindDXSDKMediaFileCch( strPath, MAX_PATH,  L"Light Probes\\uffizi_cross.dds" ); LoadInfo.Format = ; hr = ( pd3dDevice, strPath,  &LoadInfo, null, &pCubeRV, null );	
+            
+
+ + ff476317 + D3DX11_IMAGE_LOAD_INFO + D3DX11_IMAGE_LOAD_INFO +
+ + + The default value for load options. + + + + +

The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.

+
+ + ff476317 + unsigned int Width + unsigned int Width +
+ + +

The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.

+
+ + ff476317 + unsigned int Height + unsigned int Height +
+ + +

The depth of the texture. This only applies to volume textures.

+
+ + ff476317 + unsigned int Depth + unsigned int Depth +
+ + +

The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.

+
+ + ff476317 + unsigned int FirstMipLevel + unsigned int FirstMipLevel +
+ + +

The maximum number of mipmap levels in the texture. See the remarks in . Using 0 or D3DX11_DEFAULT will cause a full mipmap chain to be created.

+
+ + ff476317 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

The way the texture resource is intended to be used. See .

+
+ + ff476317 + D3D11_USAGE Usage + D3D11_USAGE Usage +
+ + +

The pipeline stages that the texture will be allowed to bind to. See .

+
+ + ff476317 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
+ + +

The access permissions the cpu will have for the texture resource. See .

+
+ + ff476317 + D3D11_CPU_ACCESS_FLAG CpuAccessFlags + D3D11_CPU_ACCESS_FLAG CpuAccessFlags +
+ + +

Miscellaneous resource properties (see ).

+
+ + ff476317 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
+ + +

A enumeration indicating the format the texture will be in after it is loaded.

+
+ + ff476317 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

Filter the texture using the specified filter (only when resampling). See .

+
+ + ff476317 + D3DX11_FILTER_FLAG Filter + D3DX11_FILTER_FLAG Filter +
+ + +

Filter the texture mip levels using the specified filter (only if generating mipmaps). Valid values are , , , or . See .

+
+ + ff476317 + D3DX11_FILTER_FLAG MipFilter + D3DX11_FILTER_FLAG MipFilter +
+ + +

Information about the original image. See . Can be obtained with , , or .

+
+ + ff476317 + D3DX11_IMAGE_INFO* pSrcInfo + D3DX11_IMAGE_INFO pSrcInfo +
+ + + Gets an ImageLoadInformation that is setup with all default values (). + + + + +

Debug message filter; contains a lists of message types to allow or deny.

+
+ +

For use with an Interface.

+
+ + ff476177 + D3D11_INFO_QUEUE_FILTER + D3D11_INFO_QUEUE_FILTER +
+ + +

Types of messages that you want to allow. See .

+
+ + ff476177 + D3D11_INFO_QUEUE_FILTER_DESC AllowList + D3D11_INFO_QUEUE_FILTER_DESC AllowList +
+ + +

Types of messages that you want to deny.

+
+ + ff476177 + D3D11_INFO_QUEUE_FILTER_DESC DenyList + D3D11_INFO_QUEUE_FILTER_DESC DenyList +
+ + +

Allow or deny certain types of messages to pass through a filter.

+
+ + ff476178 + D3D11_INFO_QUEUE_FILTER_DESC + D3D11_INFO_QUEUE_FILTER_DESC +
+ + +

Number of message categories to allow or deny.

+
+ + ff476178 + unsigned int NumCategories + unsigned int NumCategories +
+ + +

Array of message categories to allow or deny. Array must have at least NumCategories members (see ).

+
+ + ff476178 + D3D11_MESSAGE_CATEGORY* pCategoryList + D3D11_MESSAGE_CATEGORY pCategoryList +
+ + +

Number of message severity levels to allow or deny.

+
+ + ff476178 + unsigned int NumSeverities + unsigned int NumSeverities +
+ + +

Array of message severity levels to allow or deny. Array must have at least NumSeverities members (see ).

+
+ + ff476178 + D3D11_MESSAGE_SEVERITY* pSeverityList + D3D11_MESSAGE_SEVERITY pSeverityList +
+ + +

Number of message IDs to allow or deny.

+
+ + ff476178 + unsigned int NumIDs + unsigned int NumIDs +
+ + +

Array of message IDs to allow or deny. Array must have at least NumIDs members (see ).

+
+ + ff476178 + D3D11_MESSAGE_ID* pIDList + D3D11_MESSAGE_ID pIDList +
+ + + Gets or sets the categories. + + + The categories. + + + + + Gets or sets the severities. + + + The severities. + + + + + Gets or sets the ids. + + + The ids. + + + + +

Type of data contained in an input slot.

+
+ +

Use these values to specify the type of data for a particular input element (see ) of an input-layout object.

+
+ + ff476179 + D3D11_INPUT_ELEMENT_DESC + D3D11_INPUT_ELEMENT_DESC +
+ + +

Input data is per-vertex data.

+
+ + ff476179 + const char* SemanticName + char SemanticName +
+ + +

Input data is per-instance data.

+
+ + ff476179 + unsigned int SemanticIndex + unsigned int SemanticIndex +
+ + + No documentation. + + + ff476179 + DXGI_FORMAT Format + DXGI_FORMAT Format + + + + No documentation. + + + ff476179 + unsigned int InputSlot + unsigned int InputSlot + + + + No documentation. + + + ff476179 + unsigned int AlignedByteOffset + unsigned int AlignedByteOffset + + + + No documentation. + + + ff476179 + D3D11_INPUT_CLASSIFICATION InputSlotClass + D3D11_INPUT_CLASSIFICATION InputSlotClass + + + + No documentation. + + + ff476179 + unsigned int InstanceDataStepRate + unsigned int InstanceDataStepRate + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + Identifies the input data class for a single input slot. + The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data. + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + Returns a value that can be used for the offset parameter of an InputElement to indicate that the element + should be aligned directly after the previous element, including any packing if neccessary. + + A value used to align input elements. + D3D11_APPEND_ALIGNED_ELEMENT + + + +

A debug message in the Information Queue.

+
+ +

This structure is returned from as part of the Information Queue feature (see Interface).

+
+ + ff476184 + D3D11_MESSAGE + D3D11_MESSAGE +
+ + +

The category of the message. See .

+
+ + ff476184 + D3D11_MESSAGE_CATEGORY Category + D3D11_MESSAGE_CATEGORY Category +
+ + +

The severity of the message. See .

+
+ + ff476184 + D3D11_MESSAGE_SEVERITY Severity + D3D11_MESSAGE_SEVERITY Severity +
+ + +

The ID of the message. See .

+
+ + ff476184 + D3D11_MESSAGE_ID ID + D3D11_MESSAGE_ID ID +
+ + +

The message string.

+
+ + ff476184 + const char* pDescription + char pDescription +
+ + +

The length of pDescription in bytes.

+
+ + ff476184 + SIZE_T DescriptionByteLength + SIZE_T DescriptionByteLength +
+ + +

Query information about graphics-pipeline activity in between calls to and .

+
+ + ff476192 + D3D11_QUERY_DATA_PIPELINE_STATISTICS + D3D11_QUERY_DATA_PIPELINE_STATISTICS +
+ + + No documentation. + + + ff476192 + unsigned longlong IAVertices + unsigned longlong IAVertices + + + + No documentation. + + + ff476192 + unsigned longlong IAPrimitives + unsigned longlong IAPrimitives + + + + No documentation. + + + ff476192 + unsigned longlong VSInvocations + unsigned longlong VSInvocations + + + + No documentation. + + + ff476192 + unsigned longlong GSInvocations + unsigned longlong GSInvocations + + + + No documentation. + + + ff476192 + unsigned longlong GSPrimitives + unsigned longlong GSPrimitives + + + + No documentation. + + + ff476192 + unsigned longlong CInvocations + unsigned longlong CInvocations + + + + No documentation. + + + ff476192 + unsigned longlong CPrimitives + unsigned longlong CPrimitives + + + + No documentation. + + + ff476192 + unsigned longlong PSInvocations + unsigned longlong PSInvocations + + + + No documentation. + + + ff476192 + unsigned longlong HSInvocations + unsigned longlong HSInvocations + + + + No documentation. + + + ff476192 + unsigned longlong DSInvocations + unsigned longlong DSInvocations + + + + No documentation. + + + ff476192 + unsigned longlong CSInvocations + unsigned longlong CSInvocations + + + +

Query information about the reliability of a timestamp query.

+
+ +

For a list of query types see .

+
+ + ff476194 + D3D11_QUERY_DATA_TIMESTAMP_DISJOINT + D3D11_QUERY_DATA_TIMESTAMP_DISJOINT +
+ + +

How frequently the GPU counter increments in Hz.

+
+ + ff476194 + unsigned longlong Frequency + unsigned longlong Frequency +
+ + +

If this is TRUE, something occurred in between the query's and calls that caused the timestamp counter to become discontinuous or disjoint, such as unplugging the AC cord on a laptop, overheating, or throttling up/down due to laptop savings events. The timestamp returned by for a timestamp query is only reliable if Disjoint is .

+
+ + ff476194 + BOOL Disjoint + BOOL Disjoint +
+ + +

Describes a query.

+
+ + ff476195 + D3D11_QUERY_DESC + D3D11_QUERY_DESC +
+ + +

Type of query (see ).

+
+ + ff476195 + D3D11_QUERY Query + D3D11_QUERY Query +
+ + +

Miscellaneous flags (see ).

+
+ + ff476195 + D3D11_QUERY_MISC_FLAG MiscFlags + D3D11_QUERY_MISC_FLAG MiscFlags +
+ + +

Describes the blend state for a render target.

+
+ +

You specify an array of structures in the RenderTarget member of the structure to describe the blend states for render targets; you can bind up to eight render targets to the output-merger stage at one time.

For info about how blending is done, see the output-merger stage.

Here are the default values for blend state.

StateDefault Value
BlendEnable
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask

?

+
+ + ff476200 + D3D11_RENDER_TARGET_BLEND_DESC + D3D11_RENDER_TARGET_BLEND_DESC +
+ + +

Enable (or disable) blending.

+
+ + ff476200 + BOOL BlendEnable + BOOL BlendEnable +
+ + +

This blend option specifies the operation to perform on the RGB value that the pixel shader outputs. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

+
+ + ff476200 + D3D11_BLEND SrcBlend + D3D11_BLEND SrcBlend +
+ + +

This blend option specifies the operation to perform on the current RGB value in the render target. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

+
+ + ff476200 + D3D11_BLEND DestBlend + D3D11_BLEND DestBlend +
+ + +

This blend operation defines how to combine the SrcBlend and DestBlend operations.

+
+ + ff476200 + D3D11_BLEND_OP BlendOp + D3D11_BLEND_OP BlendOp +
+ + +

This blend option specifies the operation to perform on the alpha value that the pixel shader outputs. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

+
+ + ff476200 + D3D11_BLEND SrcBlendAlpha + D3D11_BLEND SrcBlendAlpha +
+ + +

This blend option specifies the operation to perform on the current alpha value in the render target. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

+
+ + ff476200 + D3D11_BLEND DestBlendAlpha + D3D11_BLEND DestBlendAlpha +
+ + +

This blend operation defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

+
+ + ff476200 + D3D11_BLEND_OP BlendOpAlpha + D3D11_BLEND_OP BlendOpAlpha +
+ + +

A write mask.

+
+ + ff476200 + D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask + D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask +
+ + + Initializes a new instance of the struct. + + The is blend enabled. + The source blend. + The destination blend. + The blend operation. + The source alpha blend. + The destination alpha blend. + The alpha blend operation. + The render target write mask. + + + +

Specifies the subresources from a resource that are accessible using a render-target view.

+
+ +

A render-target-view description is passed into to create a render target.

A render-target-view cannot use the following formats:

  • Any typeless format.
  • DXGI_FORMAT_R32G32B32 if the view will be used to bind a buffer (vertex, index, constant, or stream-output).

If the format is set to , then the format of the resource that the view binds to the pipeline will be used.

+
+ + ff476201 + D3D11_RENDER_TARGET_VIEW_DESC + D3D11_RENDER_TARGET_VIEW_DESC +
+ + +

The data format (see ).

+
+ + ff476201 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

The resource type (see ), which specifies how the render-target resource will be accessed.

+
+ + ff476201 + D3D11_RTV_DIMENSION ViewDimension + D3D11_RTV_DIMENSION ViewDimension +
+ + +

Specifies which buffer elements can be accessed (see ).

+
+ + ff476201 + D3D11_BUFFER_RTV Buffer + D3D11_BUFFER_RTV Buffer +
+ + +

Specifies the subresources in a 1D texture that can be accessed (see ).

+
+ + ff476201 + D3D11_TEX1D_RTV Texture1D + D3D11_TEX1D_RTV Texture1D +
+ + +

Specifies the subresources in a 1D texture array that can be accessed (see ).

+
+ + ff476201 + D3D11_TEX1D_ARRAY_RTV Texture1DArray + D3D11_TEX1D_ARRAY_RTV Texture1DArray +
+ + +

Specifies the subresources in a 2D texture that can be accessed (see ).

+
+ + ff476201 + D3D11_TEX2D_RTV Texture2D + D3D11_TEX2D_RTV Texture2D +
+ + +

Specifies the subresources in a 2D texture array that can be accessed (see ).

+
+ + ff476201 + D3D11_TEX2D_ARRAY_RTV Texture2DArray + D3D11_TEX2D_ARRAY_RTV Texture2DArray +
+ + +

Specifies a single subresource because a multisampled 2D texture only contains one subresource (see ).

+
+ + ff476201 + D3D11_TEX2DMS_RTV Texture2DMS + D3D11_TEX2DMS_RTV Texture2DMS +
+ + +

Specifies the subresources in a multisampled 2D texture array that can be accessed (see ).

+
+ + ff476201 + D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray + D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray +
+ + +

Specifies subresources in a 3D texture that can be accessed (see ).

+
+ + ff476201 + D3D11_TEX3D_RTV Texture3D + D3D11_TEX3D_RTV Texture3D +
+ + +

Specifies the subresource from a multisampled 2D texture to use in a render-target view.

+
+ +

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

+
+ + ff476237 + D3D11_TEX2DMS_RTV + D3D11_TEX2DMS_RTV +
+ + +

Integer of any value. See remarks.

+
+ + ff476237 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine +
+ + +

Specifies the subresources from a an array of multisampled 2D textures to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + ff476234 + D3D11_TEX2DMS_ARRAY_RTV + D3D11_TEX2DMS_ARRAY_RTV +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476234 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures to use.

+
+ + ff476234 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Specifies the subresource from a 1D texture to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + ff476230 + D3D11_TEX1D_RTV + D3D11_TEX1D_RTV +
+ + +

The index of the mipmap level to use mip slice.

+
+ + ff476230 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

Specifies the subresource from a 2D texture to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + ff476244 + D3D11_TEX2D_RTV + D3D11_TEX2D_RTV +
+ + +

The index of the mipmap level to use mip slice.

+
+ + ff476244 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

Specifies the subresources from an array of 1D textures to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + ff476226 + D3D11_TEX1D_ARRAY_RTV + D3D11_TEX1D_ARRAY_RTV +
+ + +

The index of the mipmap level to use mip slice.

+
+ + ff476226 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476226 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures to use.

+
+ + ff476226 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Specifies the elements in a buffer resource to use in a render-target view.

+
+ +

A render-target view is a member of a render-target-view description (see ). Create a render-target view by calling .

+
+ + ff476093 + D3D11_BUFFER_RTV + D3D11_BUFFER_RTV +
+ + +

Number of bytes between the beginning of the buffer and the first element to access.

+
+ + ff476093 + unsigned int FirstElement + unsigned int FirstElement +
+ + +

The offset of the first element in the view to access, relative to element 0.

+
+ + ff476093 + unsigned int ElementOffset + unsigned int ElementOffset +
+ + +

The total number of elements in the view.

+
+ + ff476093 + unsigned int NumElements + unsigned int NumElements +
+ + +

The width of each element (in bytes). This can be determined from the format stored in the render-target-view description.

+
+ + ff476093 + unsigned int ElementWidth + unsigned int ElementWidth +
+ + +

Specifies the subresources from a 3D texture to use in a render-target view.

+
+ +

This structure is one member of a render target view. See .

+
+ + ff476247 + D3D11_TEX3D_RTV + D3D11_TEX3D_RTV +
+ + +

The index of the mipmap level to use mip slice.

+
+ + ff476247 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

First depth level to use.

+
+ + ff476247 + unsigned int FirstWSlice + unsigned int FirstWSlice +
+ + +

Number of depth levels to use in the render-target view, starting from FirstWSlice. A value of -1 indicates all of the slices along the w axis, starting from FirstWSlice.

+
+ + ff476247 + unsigned int WSize + unsigned int WSize +
+ + +

Specifies the subresources from an array of 2D textures to use in a render-target view.

+
+ +

This structure is one member of a render-target-view description (see ).

+
+ + ff476240 + D3D11_TEX2D_ARRAY_RTV + D3D11_TEX2D_ARRAY_RTV +
+ + +

The index of the mipmap level to use mip slice.

+
+ + ff476240 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476240 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures in the array to use in the render target view, starting from FirstArraySlice.

+
+ + ff476240 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Defines a 3D box.

+
+ +

The following diagram shows a 3D box, where the origin is the left, front, top corner.

The values for right, bottom, and back are each one pixel past the end of the pixels that are included in the box region. That is, the values for left, top, and front are included in the box region while the values for right, bottom, and back are excluded from the box region. For example, for a box that is one pixel wide, (right - left) == 1; the box region includes the left pixel but not the right pixel.

Coordinates of a box are in bytes for buffers and in texels for textures.

+
+ + ff476089 + D3D11_BOX + D3D11_BOX +
+ + +

The x position of the left hand side of the box.

+
+ + ff476089 + unsigned int left + unsigned int left +
+ + +

The y position of the top of the box.

+
+ + ff476089 + unsigned int top + unsigned int top +
+ + +

The z position of the front of the box.

+
+ + ff476089 + unsigned int front + unsigned int front +
+ + +

The x position of the right hand side of the box.

+
+ + ff476089 + unsigned int right + unsigned int right +
+ + +

The y position of the bottom of the box.

+
+ + ff476089 + unsigned int bottom + unsigned int bottom +
+ + +

The z position of the back of the box.

+
+ + ff476089 + unsigned int back + unsigned int back +
+ + + Initialize a new instance of struct. + + Left coordinates (inclusive) + Top coordinates (inclusive) + Front coordinates (inclusive) + Right coordinates (exclusive) + Bottom coordinates (exclusive) + Back coordinates (exclusive) + +
    +
  • For a Width of 1 pixels, (right - left) = 1. If left = 0, right = Width.
  • +
  • For a Height of 1 pixels, (bottom - top) = 1. If top = 0, bottom = Height.
  • +
  • For a Depth of 1 pixels, (back - front) = 1. If front = 0, back = Depth.
  • +
+
+
+ + +

Describes a sampler state.

+
+ +

These are the default values for sampler state.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MinLOD-3.402823466e+38F (-FLT_MAX)
MaxLOD3.402823466e+38F (FLT_MAX)
MipMapLODBias0.0f
MaxAnisotropy1
ComparisonFunc
BorderColorfloat4(1.0f,1.0f,1.0f,1.0f)
TextureN/A

?

+
+ + ff476207 + D3D11_SAMPLER_DESC + D3D11_SAMPLER_DESC +
+ + +

Filtering method to use when sampling a texture (see ).

+
+ + ff476207 + D3D11_FILTER Filter + D3D11_FILTER Filter +
+ + +

Method to use for resolving a u texture coordinate that is outside the 0 to 1 range (see ).

+
+ + ff476207 + D3D11_TEXTURE_ADDRESS_MODE AddressU + D3D11_TEXTURE_ADDRESS_MODE AddressU +
+ + +

Method to use for resolving a v texture coordinate that is outside the 0 to 1 range.

+
+ + ff476207 + D3D11_TEXTURE_ADDRESS_MODE AddressV + D3D11_TEXTURE_ADDRESS_MODE AddressV +
+ + +

Method to use for resolving a w texture coordinate that is outside the 0 to 1 range.

+
+ + ff476207 + D3D11_TEXTURE_ADDRESS_MODE AddressW + D3D11_TEXTURE_ADDRESS_MODE AddressW +
+ + +

Offset from the calculated mipmap level. For example, if Direct3D calculates that a texture should be sampled at mipmap level 3 and MipLODBias is 2, then the texture will be sampled at mipmap level 5.

+
+ + ff476207 + float MipLODBias + float MipLODBias +
+ + +

Clamping value used if or is specified in Filter. Valid values are between 1 and 16.

+
+ + ff476207 + unsigned int MaxAnisotropy + unsigned int MaxAnisotropy +
+ + +

A function that compares sampled data against existing sampled data. The function options are listed in .

+
+ + ff476207 + D3D11_COMPARISON_FUNC ComparisonFunc + D3D11_COMPARISON_FUNC ComparisonFunc +
+ + +

Border color to use if is specified for AddressU, AddressV, or AddressW. Range must be between 0.0 and 1.0 inclusive.

+
+ + ff476207 + SHARPDX_COLOR4 BorderColor + SHARPDX_COLOR4 BorderColor +
+ + +

Lower end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed.

+
+ + ff476207 + float MinLOD + float MinLOD +
+ + +

Upper end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed. This value must be greater than or equal to MinLOD. To have no upper limit on LOD set this to a large value such as D3D11_FLOAT32_MAX.

+
+ + ff476207 + float MaxLOD + float MaxLOD +
+ + + Returns default values for . + + + See MSDN documentation for default values. + + + + +

Describes a shader-resource view.

+
+ +

A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read.

When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a resource can be viewed with one of these typed formats: , , and , since these typed formats are compatible with the typeless resource.

Create a shader-resource-view description by calling . To view a shader-resource-view description, call .

+
+ + ff476211 + D3D11_SHADER_RESOURCE_VIEW_DESC + D3D11_SHADER_RESOURCE_VIEW_DESC +
+ + +

A specifying the viewing format. See remarks.

+
+ + ff476211 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

The resource type of the view. See D3D11_SRV_DIMENSION. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.

+
+ + ff476211 + D3D_SRV_DIMENSION ViewDimension + D3D_SRV_DIMENSION ViewDimension +
+ + +

View the resource as a buffer using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_BUFFER_SRV Buffer + D3D11_BUFFER_SRV Buffer +
+ + +

View the resource as a 1D texture using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEX1D_SRV Texture1D + D3D11_TEX1D_SRV Texture1D +
+ + +

View the resource as a 1D-texture array using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEX1D_ARRAY_SRV Texture1DArray + D3D11_TEX1D_ARRAY_SRV Texture1DArray +
+ + +

View the resource as a 2D-texture using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEX2D_SRV Texture2D + D3D11_TEX2D_SRV Texture2D +
+ + +

View the resource as a 2D-texture array using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEX2D_ARRAY_SRV Texture2DArray + D3D11_TEX2D_ARRAY_SRV Texture2DArray +
+ + +

View the resource as a 2D-multisampled texture using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEX2DMS_SRV Texture2DMS + D3D11_TEX2DMS_SRV Texture2DMS +
+ + +

View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray + D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray +
+ + +

View the resource as a 3D texture using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEX3D_SRV Texture3D + D3D11_TEX3D_SRV Texture3D +
+ + +

View the resource as a 3D-cube texture using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEXCUBE_SRV TextureCube + D3D11_TEXCUBE_SRV TextureCube +
+ + +

View the resource as a 3D-cube-texture array using information from a shader-resource view (see ).

+
+ + ff476211 + D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray + D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray +
+ + +

View the resource as a raw buffer using information from a shader-resource view (see ). For more info about raw viewing of buffers, see Raw Views of Buffers.

+
+ + ff476211 + D3D11_BUFFEREX_SRV BufferEx + D3D11_BUFFEREX_SRV BufferEx +
+ + +

Specifies the elements in a buffer resource to use in a shader-resource view.

+
+ +

The structure is a member of the structure, which represents a shader-resource view description. You can create a shader-resource view by calling the method.

+
+ + ff476094 + D3D11_BUFFER_SRV + D3D11_BUFFER_SRV +
+ + +

Number of bytes between the beginning of the buffer and the first element to access.

+
+ + ff476094 + unsigned int FirstElement + unsigned int FirstElement +
+ + +

The offset of the first element in the view to access, relative to element 0.

+
+ + ff476094 + unsigned int ElementOffset + unsigned int ElementOffset +
+ + +

The total number of elements in the view.

+
+ + ff476094 + unsigned int NumElements + unsigned int NumElements +
+ + +

The width of each element (in bytes). This can be determined from the format stored in the shader-resource-view description.

+
+ + ff476094 + unsigned int ElementWidth + unsigned int ElementWidth +
+ + +

Specifies the subresource from a cube texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + ff476251 + D3D11_TEXCUBE_SRV + D3D11_TEXCUBE_SRV +
+ + +

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original TextureCube for which creates a view) -1.

+
+ + ff476251 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
+ + +

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

+
+ + ff476251 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Specifies the subresource from a 1D texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

As an example, assuming MostDetailedMip = 6 and MipLevels = 2, the view will have access to 2 mipmap levels, 6 and 7, of the original texture for which creates the view. In this situation, MostDetailedMip is greater than the MipLevels in the view. However, MostDetailedMip is not greater than the MipLevels in the original resource.

+
+ + ff476231 + D3D11_TEX1D_SRV + D3D11_TEX1D_SRV +
+ + +

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture1D for which creates a view) -1.

+
+ + ff476231 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
+ + +

The maximum number of mipmap levels for the view of the texture. See the remarks.

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

+
+ + ff476231 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Specifies the subresources from a multisampled 2D texture to use in a shader-resource view.

+
+ +

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

+
+ + ff476238 + D3D11_TEX2DMS_SRV + D3D11_TEX2DMS_SRV +
+ + +

Integer of any value. See remarks.

+
+ + ff476238 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine +
+ + +

Specifies the subresources from an array of cube textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + ff476250 + D3D11_TEXCUBE_ARRAY_SRV + D3D11_TEXCUBE_ARRAY_SRV +
+ + +

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original TextureCube for which creates a view) -1.

+
+ + ff476250 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
+ + +

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

+
+ + ff476250 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Index of the first 2D texture to use.

+
+ + ff476250 + unsigned int First2DArrayFace + unsigned int First2DArrayFace +
+ + +

Number of cube textures in the array.

+
+ + ff476250 + unsigned int NumCubes + unsigned int NumCubes +
+ + +

Specifies the subresources from a 3D texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + ff476248 + D3D11_TEX3D_SRV + D3D11_TEX3D_SRV +
+ + +

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture3D for which creates a view) -1.

+
+ + ff476248 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
+ + +

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

+
+ + ff476248 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Specifies the subresource from a 2D texture to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + ff476245 + D3D11_TEX2D_SRV + D3D11_TEX2D_SRV +
+ + +

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture2D for which creates a view) -1.

+
+ + ff476245 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
+ + +

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

+
+ + ff476245 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Specifies the subresources from an array of 1D textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + ff476227 + D3D11_TEX1D_ARRAY_SRV + D3D11_TEX1D_ARRAY_SRV +
+ + +

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture1D for which creates a view) -1.

+
+ + ff476227 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
+ + +

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

+
+ + ff476227 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476227 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures in the array.

+
+ + ff476227 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Specifies the subresources from an array of 2D textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + ff476241 + D3D11_TEX2D_ARRAY_SRV + D3D11_TEX2D_ARRAY_SRV +
+ + +

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture2D for which creates a view) -1.

+
+ + ff476241 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
+ + +

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

+
+ + ff476241 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476241 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures in the array.

+
+ + ff476241 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Specifies the subresources from an array of multisampled 2D textures to use in a shader-resource view.

+
+ +

This structure is one member of a shader-resource-view description (see ).

+
+ + ff476235 + D3D11_TEX2DMS_ARRAY_SRV + D3D11_TEX2DMS_ARRAY_SRV +
+ + +

The index of the first texture to use in an array of textures.

+
+ + ff476235 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

Number of textures to use.

+
+ + ff476235 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Describes the elements in a raw buffer resource to use in a shader-resource view.

+
+ +

This structure is used by to create a raw view of a buffer.

+
+ + ff476090 + D3D11_BUFFEREX_SRV + D3D11_BUFFEREX_SRV +
+ + +

The index of the first element to be accessed by the view.

+
+ + ff476090 + unsigned int FirstElement + unsigned int FirstElement +
+ + +

The number of elements in the resource.

+
+ + ff476090 + unsigned int NumElements + unsigned int NumElements +
+ + +

A -typed value that identifies view options for the buffer. Currently, the only option is to identify a raw view of the buffer. For more info about raw viewing of buffers, see Raw Views of Buffers.

+
+ + ff476090 + D3D11_BUFFEREX_SRV_FLAG Flags + D3D11_BUFFEREX_SRV_FLAG Flags +
+ + +

Description of a vertex element in a vertex buffer in an output slot.

+
+ + ff476216 + D3D11_SO_DECLARATION_ENTRY + D3D11_SO_DECLARATION_ENTRY +
+ + +

Zero-based, stream number.

+
+ + ff476216 + unsigned int Stream + unsigned int Stream +
+ + +

Type of output element; possible values include: "POSITION", "NORMAL", or "TEXCOORD0". Note that if SemanticName is null then ComponentCount can be greater than 4 and the described entry will be a gap in the stream out where no data will be written.

+
+ + ff476216 + const char* SemanticName + char SemanticName +
+ + +

Output element's zero-based index. Should be used if, for example, you have more than one texture coordinate stored in each vertex.

+
+ + ff476216 + unsigned int SemanticIndex + unsigned int SemanticIndex +
+ + +

Which component of the entry to begin writing out to. Valid values are 0 to 3. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.

+
+ + ff476216 + unsigned char StartComponent + unsigned char StartComponent +
+ + +

The number of components of the entry to write out to. Valid values are 1 to 4. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2. Note that if SemanticName is null then ComponentCount can be greater than 4 and the described entry will be a gap in the stream out where no data will be written.

+
+ + ff476216 + unsigned char ComponentCount + unsigned char ComponentCount +
+ + +

The associated stream output buffer that is bound to the pipeline (see ). The valid range for OutputSlot is 0 to 3.

+
+ + ff476216 + unsigned char OutputSlot + unsigned char OutputSlot +
+ + + Initializes a new instance of the struct. + + Zero-based, stream number + Name of the semantic. + Index of the semantic. + The start component. + The component count. + The output slot. + + + +

Query information about the amount of data streamed out to the stream-output buffers in between and .

+
+ + ff476193 + D3D11_QUERY_DATA_SO_STATISTICS + D3D11_QUERY_DATA_SO_STATISTICS +
+ + + No documentation. + + + ff476193 + unsigned longlong NumPrimitivesWritten + unsigned longlong NumPrimitivesWritten + + + + No documentation. + + + ff476193 + unsigned longlong PrimitivesStorageNeeded + unsigned longlong PrimitivesStorageNeeded + + + +

Describes a 1D texture.

+
+ +

This structure is used in a call to .

In addition to this structure, you can also use the CD3D11_TEXTURE1D_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a texture description.

The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to (8192) when you create your 1D texture.

+
+ + ff476252 + D3D11_TEXTURE1D_DESC + D3D11_TEXTURE1D_DESC +
+ + +

Texture width (in texels). The range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476252 + unsigned int Width + unsigned int Width +
+ + +

The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

+
+ + ff476252 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Number of textures in the array. The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476252 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Texture format (see ).

+
+ + ff476252 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

+
+ + ff476252 + D3D11_USAGE Usage + D3D11_USAGE Usage +
+ + +

Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR. For a 1D texture, the allowable values are: , and .

+
+ + ff476252 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
+ + +

Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

+
+ + ff476252 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
+ + +

Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.

+
+ + ff476252 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
+ + +

Describes a 2D texture.

+
+ +

This structure is used in a call to .

In addition to this structure, you can also use the CD3D11_TEXTURE2D_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a texture description.

The device places some size restrictions (must be multiples of a minimum size) for a subsampled, block compressed, or bit-format resource.

The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to (8192) when you create your 2D texture.

+
+ + ff476253 + D3D11_TEXTURE2D_DESC + D3D11_TEXTURE2D_DESC +
+ + +

Texture width (in texels). The range is from 1 to (16384). For a texture cube-map, the range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476253 + unsigned int Width + unsigned int Width +
+ + +

Texture height (in texels). The range is from 1 to (16384). For a texture cube-map, the range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476253 + unsigned int Height + unsigned int Height +
+ + +

The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

+
+ + ff476253 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Number of textures in the texture array. The range is from 1 to (2048). For a texture cube-map, this value is a multiple of 6 (that is, 6 times the value in the NumCubes member of ), and the range is from 6 to 2046. The range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476253 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Texture format (see ).

+
+ + ff476253 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

Structure that specifies multisampling parameters for the texture. See .

+
+ + ff476253 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc +
+ + +

Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

+
+ + ff476253 + D3D11_USAGE Usage + D3D11_USAGE Usage +
+ + +

Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR.

+
+ + ff476253 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
+ + +

Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

+
+ + ff476253 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
+ + +

Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined by using a logical OR. For a texture cube-map, set the flag. Cube-map arrays (that is, ArraySize > 6) require feature level or higher.

+
+ + ff476253 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
+ + +

Describes a 3D texture.

+
+ +

This structure is used in a call to .

In addition to this structure, you can also use the CD3D11_TEXTURE3D_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a texture description.

The device restricts the size of subsampled, block compressed, and bit format resources to be multiples of sizes specific to each format.

The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to (2048) when you create your 3D texture.

+
+ + ff476254 + D3D11_TEXTURE3D_DESC + D3D11_TEXTURE3D_DESC +
+ + +

Texture width (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476254 + unsigned int Width + unsigned int Width +
+ + +

Texture height (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476254 + unsigned int Height + unsigned int Height +
+ + +

Texture depth (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

+
+ + ff476254 + unsigned int Depth + unsigned int Depth +
+ + +

The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

+
+ + ff476254 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Texture format (see ).

+
+ + ff476254 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

+
+ + ff476254 + D3D11_USAGE Usage + D3D11_USAGE Usage +
+ + +

Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR.

+
+ + ff476254 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
+ + +

Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

+
+ + ff476254 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
+ + +

Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.

+
+ + ff476254 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
+ + +

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Describes parameters used to load a texture from another texture.

+
+ +

This structure is used in a call to .

The default values are:

 pSrcBox = null; pDstBox = null; SrcFirstMip = 0; DstFirstMip = 0; NumMips = D3DX11_DEFAULT; SrcFirstElement = 0; DstFirstElement = 0; NumElements = D3DX11_DEFAULT; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT;	
+            
+
+ + ff476327 + D3DX11_TEXTURE_LOAD_INFO + D3DX11_TEXTURE_LOAD_INFO +
+ + +

Source texture box (see ).

+
+ + ff476327 + D3D11_BOX* pSrcBox + D3D11_BOX pSrcBox +
+ + +

Destination texture box (see ).

+
+ + ff476327 + D3D11_BOX* pDstBox + D3D11_BOX pDstBox +
+ + +

Source texture mipmap level, see D3D11CalcSubresource for more detail.

+
+ + ff476327 + unsigned int SrcFirstMip + unsigned int SrcFirstMip +
+ + +

Destination texture mipmap level, see D3D11CalcSubresource for more detail.

+
+ + ff476327 + unsigned int DstFirstMip + unsigned int DstFirstMip +
+ + +

Number of mipmap levels in the source texture.

+
+ + ff476327 + unsigned int NumMips + unsigned int NumMips +
+ + +

First element of the source texture.

+
+ + ff476327 + unsigned int SrcFirstElement + unsigned int SrcFirstElement +
+ + +

First element of the destination texture.

+
+ + ff476327 + unsigned int DstFirstElement + unsigned int DstFirstElement +
+ + +

Number of elements to load.

+
+ + ff476327 + unsigned int NumElements + unsigned int NumElements +
+ + +

Filtering options during resampling (see ).

+
+ + ff476327 + D3DX11_FILTER_FLAG Filter + D3DX11_FILTER_FLAG Filter +
+ + +

Filtering options when generating mip levels (see ).

+
+ + ff476327 + D3DX11_FILTER_FLAG MipFilter + D3DX11_FILTER_FLAG MipFilter +
+ + + Source texture box (see ). + + D3D11_BOX* pSrcBox + + + + Destination texture box (see ). + + D3D11_BOX* pDstBox + + + +

Specifies the subresources from a resource that are accessible using an unordered-access view.

+
+ +

An unordered-access-view description is passed into to create a view.

+
+ + ff476258 + D3D11_UNORDERED_ACCESS_VIEW_DESC + D3D11_UNORDERED_ACCESS_VIEW_DESC +
+ + +

The data format (see ).

+
+ + ff476258 + DXGI_FORMAT Format + DXGI_FORMAT Format +
+ + +

The resource type (see ), which specifies how the resource will be accessed.

+
+ + ff476258 + D3D11_UAV_DIMENSION ViewDimension + D3D11_UAV_DIMENSION ViewDimension +
+ + +

Specifies which buffer elements can be accessed (see ).

+
+ + ff476258 + D3D11_BUFFER_UAV Buffer + D3D11_BUFFER_UAV Buffer +
+ + +

Specifies the subresources in a 1D texture that can be accessed (see ).

+
+ + ff476258 + D3D11_TEX1D_UAV Texture1D + D3D11_TEX1D_UAV Texture1D +
+ + +

Specifies the subresources in a 1D texture array that can be accessed (see ).

+
+ + ff476258 + D3D11_TEX1D_ARRAY_UAV Texture1DArray + D3D11_TEX1D_ARRAY_UAV Texture1DArray +
+ + +

Specifies the subresources in a 2D texture that can be accessed (see ).

+
+ + ff476258 + D3D11_TEX2D_UAV Texture2D + D3D11_TEX2D_UAV Texture2D +
+ + +

Specifies the subresources in a 2D texture array that can be accessed (see ).

+
+ + ff476258 + D3D11_TEX2D_ARRAY_UAV Texture2DArray + D3D11_TEX2D_ARRAY_UAV Texture2DArray +
+ + +

Specifies subresources in a 3D texture that can be accessed (see ).

+
+ + ff476258 + D3D11_TEX3D_UAV Texture3D + D3D11_TEX3D_UAV Texture3D +
+ + +

Describes an array of unordered-access 1D texture resources.

+
+ +

This structure is used by a .

+
+ + ff476228 + D3D11_TEX1D_ARRAY_UAV + D3D11_TEX1D_ARRAY_UAV +
+ + +

The mipmap slice index.

+
+ + ff476228 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

The zero-based index of the first array slice to be accessed.

+
+ + ff476228 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

The number of slices in the array.

+
+ + ff476228 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Describes the elements in a buffer to use in a unordered-access view.

+
+ +

This structure is used by a .

+
+ + ff476095 + D3D11_BUFFER_UAV + D3D11_BUFFER_UAV +
+ + +

The zero-based index of the first element to be accessed.

+
+ + ff476095 + unsigned int FirstElement + unsigned int FirstElement +
+ + +

The number of elements in the resource. For structured buffers, this is the number of structures in the buffer.

+
+ + ff476095 + unsigned int NumElements + unsigned int NumElements +
+ + +

View options for the resource (see ).

+
+ + ff476095 + D3D11_BUFFER_UAV_FLAG Flags + D3D11_BUFFER_UAV_FLAG Flags +
+ + +

Describes a unordered-access 2D texture resource.

+
+ +

This structure is used by a .

+
+ + ff476246 + D3D11_TEX2D_UAV + D3D11_TEX2D_UAV +
+ + +

The mipmap slice index.

+
+ + ff476246 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

Describes a unordered-access 1D texture resource.

+
+ +

This structure is used by a .

+
+ + ff476232 + D3D11_TEX1D_UAV + D3D11_TEX1D_UAV +
+ + +

The mipmap slice index.

+
+ + ff476232 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

Describes an array of unordered-access 2D texture resources.

+
+ +

This structure is used by a .

+
+ + ff476242 + D3D11_TEX2D_ARRAY_UAV + D3D11_TEX2D_ARRAY_UAV +
+ + +

The mipmap slice index.

+
+ + ff476242 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

The zero-based index of the first array slice to be accessed.

+
+ + ff476242 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
+ + +

The number of slices in the array.

+
+ + ff476242 + unsigned int ArraySize + unsigned int ArraySize +
+ + +

Describes a unordered-access 3D texture resource.

+
+ +

This structure is used by a .

+
+ + ff476249 + D3D11_TEX3D_UAV + D3D11_TEX3D_UAV +
+ + +

The mipmap slice index.

+
+ + ff476249 + unsigned int MipSlice + unsigned int MipSlice +
+ + +

The zero-based index of the first depth slice to be accessed.

+
+ + ff476249 + unsigned int FirstWSlice + unsigned int FirstWSlice +
+ + +

The number of depth slices.

+
+ + ff476249 + unsigned int WSize + unsigned int WSize +
+ + + Internal class used to initialize this assembly. + + + + + Initializes this assembly. + + + This method is called when the assembly is loaded. + + + + + Properties defining the way a buffer is bound to the pipeline as a target for stream output operations. + + + + + Initializes a new instance of the struct. + + The buffer being bound. + The offset to the first vertex (in bytes). + + + + Gets or sets the buffer being bound. + + + + + Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). + + + + + Properties defining the way a buffer (containing vertex data) is bound + to the pipeline for rendering. + + + + + Initializes a new instance of the struct. + + The buffer being bound. + The stride between vertex element (in bytes). + The offset to the first vertex (in bytes). + + + + Gets or sets the buffer being bound. + + + + + Gets or sets the stride between vertex elements in the buffer (in bytes). + + + + + Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). + + + + diff --git a/distribution/SharpDX.Direct3D9.dll b/distribution/SharpDX.Direct3D9.dll new file mode 100644 index 0000000000000000000000000000000000000000..6fda0fd038b7ae6225af48c9a6ec33cba89028c8 GIT binary patch literal 349696 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

;`=N>wtjTV~E)3>QMFre{sHgAobin;dU=7@- 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

4p_m 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®>NH0G*#F;2Od*gM;er9r4MOb&l#i-#|Hkp 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 bzxnh3MGjo(@di+@S)L;CZ~pxMjsyQU3*S>v literal 0 HcmV?d00001 diff --git a/distribution/SharpDX.Direct3D9.xml b/distribution/SharpDX.Direct3D9.xml new file mode 100644 index 00000000..fe7e6044 --- /dev/null +++ b/distribution/SharpDX.Direct3D9.xml @@ -0,0 +1,36476 @@ + + + + SharpDX.Direct3D9 + + + +

+ A collection of . + + + + +

Contains information identifying the adapter.

+
+ +

The following pseudocode example illustrates the version format encoded in the DriverVersion, DriverVersionLowPart, and DriverVersionHighPart members.

 Product = HIWORD(DriverVersion.HighPart)	
+            Version = LOWORD(DriverVersion.HighPart)	
+            SubVersion = HIWORD(DriverVersion.LowPart)	
+            Build = LOWORD(DriverVersion.LowPart)	
+            

See the Platform SDK for more information about the HIWORD macro, the LOWORD macro, and the structure.

MAX_DEVICE_IDENTIFIER_STRING is a constant with the following definition.

#define MAX_DEVICE_IDENTIFIER_STRING        512

The VendorId, DeviceId, SubSysId, and Revision members can be used in tandem to identify particular chip sets. However, use these members with caution.

+
+ + bb172505 + D3DADAPTER_IDENTIFIER9 + D3DADAPTER_IDENTIFIER9 +
+ + +

Used for presentation to the user. This should not be used to identify particular drivers, because many different strings might be associated with the same device and driver from different vendors.

+
+ + bb172505 + char Driver[512] + char Driver +
+ + +

Used for presentation to the user.

+
+ + bb172505 + char Description[512] + char Description +
+ + +

Device name for GDI.

+
+ + bb172505 + char DeviceName[32] + char DeviceName +
+ + +

Identify the version of the Direct3D driver. It is legal to do less than and greater than comparisons on the 64-bit signed integer value. However, exercise caution if you use this element to identify problematic drivers. Instead, you should use DeviceIdentifier. See Remarks.

+
+ + bb172505 + LARGE_INTEGER DriverVersion + LARGE_INTEGER DriverVersion +
+ + +

Can be used to help identify a particular chip set. Query this member to identify the manufacturer. The value can be zero if unknown.

+
+ + bb172505 + unsigned int VendorId + unsigned int VendorId +
+ + +

Can be used to help identify a particular chip set. Query this member to identify the type of chip set. The value can be zero if unknown.

+
+ + bb172505 + unsigned int DeviceId + unsigned int DeviceId +
+ + +

Can be used to help identify a particular chip set. Query this member to identify the subsystem, typically the particular board. The value can be zero if unknown.

+
+ + bb172505 + unsigned int SubSysId + unsigned int SubSysId +
+ + +

Can be used to help identify a particular chip set. Query this member to identify the revision level of the chip set. The value can be zero if unknown.

+
+ + bb172505 + unsigned int Revision + unsigned int Revision +
+ + +

Can be queried to check changes in the driver and chip set. This is a unique identifier for the driver and chip set pair. Query this member to track changes to the driver and chip set in order to generate a new profile for the graphics subsystem. DeviceIdentifier can also be used to identify particular problematic drivers.

+
+ + bb172505 + GUID DeviceIdentifier + GUID DeviceIdentifier +
+ + +

Used to determine the Windows Hardware Quality Labs (WHQL) validation level for this driver and device pair. The DWORD is a packed date structure defining the date of the release of the most recent WHQL test passed by the driver. It is legal to perform < and > operations on this value. The following illustrates the date format.

Bits
31-16The year, a decimal number from 1999 upwards.
15-8The month, a decimal number from 1 to 12.
7-0The day, a decimal number from 1 to 31.

?

The following values are also used.

0Not certified.
1WHQL validated, but no date information is available.

?

Differences between Direct3D 9 and Direct3D 9Ex:

For Direct3D9Ex running on Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 (or more current operating system), returns 1 for the WHQL level without checking the status of the driver.

+
+ + bb172505 + unsigned int WHQLLevel + unsigned int WHQLLevel +
+ + + Gets a value indicating whether the adapter is WHQL certified. + + + true if certified; otherwise, false. + + + + + Gets the driver version. + + + + + Gets the certification date. + + + + + Adapter information. + + + + + Gets the capabilities of this adapter. + + The type. + The capabilities + + + + Gets the display modes supported by this adapter. + + The format. + The display modes supported by this adapter. + + + + Gets the adapter ordinal. + + + + + Gets the current display mode. + + + + + Gets the details. + + + + + Gets the monitor. + + + + + The assembly provides managed Direct3D9 API. + + bb219837 + Direct3D9 + Direct3D9 + + + + No documentation. + + + bb280470 + ID3DXBaseEffect + ID3DXBaseEffect + + + + Gets the string. + + The parameter. + + HRESULT ID3DXBaseEffect::GetString([In] D3DXHANDLE hParameter,[Out] const void** ppString) + + + + Gets the value of the specified parameter. + + Handle of the parameter. + The value of the parameter. + HRESULT ID3DXBaseEffect::GetValue([In] D3DXHANDLE hParameter,[In] void* pData,[In] unsigned int Bytes) + + + + Gets the value of the specified parameter. + + + Handle of the parameter. + The count. + + The value of the parameter. + + HRESULT ID3DXBaseEffect::GetValue([In] D3DXHANDLE hParameter,[In] void* pData,[In] unsigned int Bytes) + + + + Sets a bool value. + + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetBool([In] D3DXHANDLE hConstant,[In] BOOL b) + + + + Sets a float value. + + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetFloat([In] D3DXHANDLE hConstant,[In] float f) + + + + Sets an int value. + + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetInt([In] D3DXHANDLE hConstant,[In] int n) + + + + Sets a matrix. + + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetMatrix([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix) + + + + Sets a 4D vector. + + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetVector([In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector) + + + + Sets a typed value. + + Type of the value to set + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetValue([In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes) + + + + Sets an array of bools. + + The effect handle. + The values. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetBoolArray([In] D3DXHANDLE hConstant,[In, Buffer] const BOOL* pb,[In] unsigned int Count) + + + + Sets an array of floats. + + The effect handle. + The values. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetFloatArray([In] D3DXHANDLE hConstant,[In, Buffer] const float* pf,[In] unsigned int Count) + + + + Sets an array of ints. + + The effect handle. + The values. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetIntArray([In] D3DXHANDLE hConstant,[In, Buffer] const int* pn,[In] unsigned int Count) + + + + Sets an array of matrices. + + The effect handle. + The values. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetMatrixArray([In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + + + + Sets an array of 4D vectors. + + The effect handle. + The values. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetVectorArray([In] D3DXHANDLE hConstant,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count) + + + + Sets an array of elements. + + Type of the array element + The effect handle. + The values. + + A object describing the result of the operation. + + HRESULT ID3DXBaseEffect::SetValue([In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the effect description.

+
+

Returns a description of the effect. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205681 + HRESULT ID3DXBaseEffect::GetDesc([Out] D3DXEFFECT_DESC* pDesc) + ID3DXBaseEffect::GetDesc +
+ + +

Gets a parameter or annotation description.

+
+

Parameter or annotation handle. See Handles (Direct3D 9).

+

Returns a description of the specified parameter or annotation. See .

+ + bb205698 + HRESULT ID3DXBaseEffect::GetParameterDesc([In] D3DXHANDLE hParameter,[Out] D3DXPARAMETER_DESC* pDesc) + ID3DXBaseEffect::GetParameterDesc +
+ + +

Gets a technique description.

+
+

Technique handle. See Handles (Direct3D 9).

+

Returns a description of the technique. See .

+ + bb205707 + HRESULT ID3DXBaseEffect::GetTechniqueDesc([In] D3DXHANDLE hTechnique,[Out] D3DXTECHNIQUE_DESC* pDesc) + ID3DXBaseEffect::GetTechniqueDesc +
+ + +

Gets a pass description.

+
+

Pass handle. See Handles (Direct3D 9).

+

Returns a description of the specified pass. See .

+ +

Note??If an effect is created with , this method will return null references (in ) to the shader functions.

+
+ + bb205702 + HRESULT ID3DXBaseEffect::GetPassDesc([In] D3DXHANDLE hPass,[Out] D3DXPASS_DESC* pDesc) + ID3DXBaseEffect::GetPassDesc +
+ + +

Gets a function description.

+
+

Function handle. See Handles (Direct3D 9).

+

Returns a description of the function. See .

+ + bb205686 + HRESULT ID3DXBaseEffect::GetFunctionDesc([In] D3DXHANDLE hShader,[Out] D3DXFUNCTION_DESC* pDesc) + ID3DXBaseEffect::GetFunctionDesc +
+ + +

Gets the handle of a top-level parameter or a structure member parameter.

+
+

Handle of the parameter, or null for top-level parameters. See Handles (Direct3D 9).

+

Parameter index.

+

Returns the handle of the specified parameter, or null if the index was invalid. See Handles (Direct3D 9).

+ + bb205695 + D3DXHANDLE ID3DXBaseEffect::GetParameter([In] D3DXHANDLE hParameter,[In] unsigned int Index) + ID3DXBaseEffect::GetParameter +
+ + +

Gets the handle of a top-level parameter or a structure member parameter by looking up its name.

+
+

Handle of the parameter, or null for top-level parameters. See Handles (Direct3D 9).

+

String containing the parameter name.

+

Returns the handle of the specified parameter, or null if the index was invalid. See Handles (Direct3D 9).

+ + bb205696 + D3DXHANDLE ID3DXBaseEffect::GetParameterByName([In] D3DXHANDLE hParameter,[In] const char* pName) + ID3DXBaseEffect::GetParameterByName +
+ + +

Gets the handle of a top-level parameter or a structure member parameter by looking up its semantic with a case-insensitive search.

+
+

Handle of the parameter, or null for top-level parameters. See Handles (Direct3D 9).

+

String containing the semantic name.

+

Returns the handle of the first parameter that matches the specified semantic, or null if the semantic was not found. See Handles (Direct3D 9).

+ + bb205697 + D3DXHANDLE ID3DXBaseEffect::GetParameterBySemantic([In] D3DXHANDLE hParameter,[In] const char* pSemantic) + ID3DXBaseEffect::GetParameterBySemantic +
+ + +

Get the handle of an array element parameter.

+
+

Handle of the array. See Handles (Direct3D 9).

+

Array element index.

+

Returns the handle of the specified parameter, or null if either hParameter or ElementIndex is invalid. See Handles (Direct3D 9).

+ +

This method is used to get an element of a parameter that is an array.

+
+ + bb205699 + D3DXHANDLE ID3DXBaseEffect::GetParameterElement([In] D3DXHANDLE hParameter,[In] unsigned int Index) + ID3DXBaseEffect::GetParameterElement +
+ + +

Gets the handle of a technique.

+
+

Technique index.

+

Returns the handle of the specified technique, or null if the index was invalid. See Handles (Direct3D 9).

+ + bb205705 + D3DXHANDLE ID3DXBaseEffect::GetTechnique([In] unsigned int Index) + ID3DXBaseEffect::GetTechnique +
+ + +

Gets the handle of a technique by looking up its name.

+
+

String containing the technique name.

+

Returns the handle of the first technique that has the specified name, or null if the name was not found. See Handles (Direct3D 9).

+ + bb205706 + D3DXHANDLE ID3DXBaseEffect::GetTechniqueByName([In] const char* pName) + ID3DXBaseEffect::GetTechniqueByName +
+ + +

Gets the handle of a pass.

+
+

Handle of the parent technique. See Handles (Direct3D 9).

+

Index for the pass.

+

Returns the handle of the specified pass inside the specified technique, or null if the index was invalid. See Handles (Direct3D 9).

+ + bb205700 + D3DXHANDLE ID3DXBaseEffect::GetPass([In] D3DXHANDLE hTechnique,[In] unsigned int Index) + ID3DXBaseEffect::GetPass +
+ + +

Gets the handle of a pass by looking up its name.

+
+

Handle of the parent technique. See Handles (Direct3D 9).

+

String containing the pass name.

+

Returns the handle of the first pass inside the specified technique that has the specified name, or null if the name was not found. See Handles (Direct3D 9).

+ + bb205701 + D3DXHANDLE ID3DXBaseEffect::GetPassByName([In] D3DXHANDLE hTechnique,[In] const char* pName) + ID3DXBaseEffect::GetPassByName +
+ + +

Gets the handle of a function.

+
+

Function index.

+

Returns the handle of the specified function, or null if the index was invalid. See Handles (Direct3D 9).

+ + bb205684 + D3DXHANDLE ID3DXBaseEffect::GetFunction([In] unsigned int Index) + ID3DXBaseEffect::GetFunction +
+ + +

Gets the handle of a function by looking up its name.

+
+

String containing the function name.

+

Returns the handle of the specified function, or null if the name was not found. See Handles (Direct3D 9).

+ + bb205685 + D3DXHANDLE ID3DXBaseEffect::GetFunctionByName([In] const char* pName) + ID3DXBaseEffect::GetFunctionByName +
+ + +

Gets the handle of an annotation.

+
+

Handle of a technique, pass, or top-level parameter. See Handles (Direct3D 9).

+

Annotation index.

+

Returns the handle of the specified annotation, or null if the index was invalid. See Handles (Direct3D 9).

+ +

Annotations are user-specific data that can be attached to any technique, pass, or parameter. See Handles (Direct3D 9).

+
+ + bb205677 + D3DXHANDLE ID3DXBaseEffect::GetAnnotation([In] D3DXHANDLE hObject,[In] unsigned int Index) + ID3DXBaseEffect::GetAnnotation +
+ + +

Gets the handle of an annotation by looking up its name.

+
+

Handle of a technique, pass, or top-level parameter. See Handles (Direct3D 9).

+

String containing the annotation name.

+

Returns the handle of the specified annotation, or null if the name was not found. See Handles (Direct3D 9).

+ + bb205678 + D3DXHANDLE ID3DXBaseEffect::GetAnnotationByName([In] D3DXHANDLE hObject,[In] const char* pName) + ID3DXBaseEffect::GetAnnotationByName +
+ + +

Set the value of an arbitrary parameter or annotation, including simple types, structs, arrays, strings, shaders and textures.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Pointer to a buffer containing data.

+

[in] Number of bytes in the buffer. Pass in D3DX_DEFAULT if you know your buffer is large enough to contain the entire parameter, and you want to skip size validation.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method can be used in place of nearly all the effect set API calls.

+
+ + bb205728 + HRESULT ID3DXBaseEffect::SetValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int Bytes) + ID3DXBaseEffect::SetValue +
+ + +

Get the value of an arbitrary parameter or annotation, including simple types, structs, arrays, strings, shaders and textures. This method can be used in place of nearly all the Getxxx calls in .

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205709 + HRESULT ID3DXBaseEffect::GetValue([In] D3DXHANDLE hParameter,[In] void* pData,[In] unsigned int Bytes) + ID3DXBaseEffect::GetValue +
+ + +

Sets a value.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Boolean value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205714 + HRESULT ID3DXBaseEffect::SetBool([In] D3DXHANDLE hParameter,[In] BOOL b) + ID3DXBaseEffect::SetBool +
+ + +

Gets a value.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a Boolean value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205679 + HRESULT ID3DXBaseEffect::GetBool([In] D3DXHANDLE hParameter,[Out] BOOL* pb) + ID3DXBaseEffect::GetBool +
+ + +

Sets an array of Boolean values.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of Boolean values.

+

Number of Boolean values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205715 + HRESULT ID3DXBaseEffect::SetBoolArray([In] D3DXHANDLE hParameter,[In, Buffer] const BOOL* pb,[In] unsigned int Count) + ID3DXBaseEffect::SetBoolArray +
+ + +

Gets an array of values.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns an array of Boolean values.

+

Number of Boolean values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205680 + HRESULT ID3DXBaseEffect::GetBoolArray([In] D3DXHANDLE hParameter,[Out, Buffer] BOOL* pb,[In] unsigned int Count) + ID3DXBaseEffect::GetBoolArray +
+ + +

Sets an integer.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Integer value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205718 + HRESULT ID3DXBaseEffect::SetInt([In] D3DXHANDLE hParameter,[In] int n) + ID3DXBaseEffect::SetInt +
+ + +

Gets an integer.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns an integer.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205687 + HRESULT ID3DXBaseEffect::GetInt([In] D3DXHANDLE hParameter,[Out] int* pn) + ID3DXBaseEffect::GetInt +
+ + +

Sets an array of integers.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of integers.

+

Number of integers in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205719 + HRESULT ID3DXBaseEffect::SetIntArray([In] D3DXHANDLE hParameter,[In, Buffer] const int* pn,[In] unsigned int Count) + ID3DXBaseEffect::SetIntArray +
+ + +

Gets an array of integers.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns an array of integers.

+

Number of integers in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205688 + HRESULT ID3DXBaseEffect::GetIntArray([In] D3DXHANDLE hParameter,[Out, Buffer] int* pn,[In] unsigned int Count) + ID3DXBaseEffect::GetIntArray +
+ + +

Sets a floating point value.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Floating point value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205716 + HRESULT ID3DXBaseEffect::SetFloat([In] D3DXHANDLE hParameter,[In] float f) + ID3DXBaseEffect::SetFloat +
+ + +

Gets a floating point value.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a floating point value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205682 + HRESULT ID3DXBaseEffect::GetFloat([In] D3DXHANDLE hParameter,[Out] float* pf) + ID3DXBaseEffect::GetFloat +
+ + +

Sets an array of floating point values.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of floating point values.

+

Number of floating point values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205717 + HRESULT ID3DXBaseEffect::SetFloatArray([In] D3DXHANDLE hParameter,[In, Buffer] const float* pf,[In] unsigned int Count) + ID3DXBaseEffect::SetFloatArray +
+ + +

Gets an array of floating point values.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns an array of floating point values.

+

Number of floating point values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205683 + HRESULT ID3DXBaseEffect::GetFloatArray([In] D3DXHANDLE hParameter,[Out, Buffer] float* pf,[In] unsigned int Count) + ID3DXBaseEffect::GetFloatArray +
+ + +

Sets a vector.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Pointer to a 4D vector.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If the destination vector is smaller than the source vector, the additional components of the source vector will be ignored.

+
+ + bb205729 + HRESULT ID3DXBaseEffect::SetVector([In] D3DXHANDLE hParameter,[In] const D3DXVECTOR4* pVector) + ID3DXBaseEffect::SetVector +
+ + +

Gets a vector.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a 4D vector.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If the destination vector is larger than the source vector, only the initial components of the destination vector will be filled, and the remaining components will be set to zero.

+
+ + bb205710 + HRESULT ID3DXBaseEffect::GetVector([In] D3DXHANDLE hParameter,[Out] D3DXVECTOR4* pVector) + ID3DXBaseEffect::GetVector +
+ + +

Sets an array of vectors.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of 4D floating point vectors.

+

Number of vectors in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If the destination vectors are smaller than the source vectors, the additional components of the source vectors will be ignored.

+
+ + bb205730 + HRESULT ID3DXBaseEffect::SetVectorArray([In] D3DXHANDLE hParameter,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count) + ID3DXBaseEffect::SetVectorArray +
+ + +

Gets an array of vectors.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns an array of 4D floating point vectors.

+

Number of vectors in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If the destination vectors are larger than the source vectors, only the initial components of each destination vector will be filled, and the remaining destination vector components will be set to zero.

+
+ + bb205711 + HRESULT ID3DXBaseEffect::GetVectorArray([In] D3DXHANDLE hParameter,[Out, Buffer] D3DXVECTOR4* pVector,[In] unsigned int Count) + ID3DXBaseEffect::GetVectorArray +
+ + +

Sets a non-transposed matrix.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Pointer to a nontransposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A non-transposed matrix contains row-major data. In other words, each vector is contained in a row.

If the destination matrix is smaller than the source matrix, the additional components of the source matrix will be ignored.

+
+ + bb205720 + HRESULT ID3DXBaseEffect::SetMatrix([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX* pMatrix) + ID3DXBaseEffect::SetMatrix +
+ + +

Gets a nontransposed matrix.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a nontransposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A nontransposed matrix contains row-major data; that is, each vector is contained in a row.

If the destination matrix is larger than the source matrix, only the upper-left components of the destination matrix will be filled, and the remaining components will be set to zero.

+
+ + bb205689 + HRESULT ID3DXBaseEffect::GetMatrix([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX* pMatrix) + ID3DXBaseEffect::GetMatrix +
+ + +

Sets an array of nontransposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of nontransposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A nontransposed matrix contains row-major data; that is, each vector is contained in a row.

If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.

+
+ + bb205721 + HRESULT ID3DXBaseEffect::SetMatrixArray([In] D3DXHANDLE hParameter,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXBaseEffect::SetMatrixArray +
+ + +

Gets an array of nontransposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns an array of nontransposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A nontransposed matrix contains row-major data; that is, each vector is contained in a row.

If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.

+
+ + bb205690 + HRESULT ID3DXBaseEffect::GetMatrixArray([In] D3DXHANDLE hParameter,[Out, Buffer] D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXBaseEffect::GetMatrixArray +
+ + +

Sets an array of references to nontransposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of references to nontransposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A nontransposed matrix contains row-major data; that is, each vector is contained in a row.

If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.

+
+ + bb205722 + HRESULT ID3DXBaseEffect::SetMatrixPointerArray([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXBaseEffect::SetMatrixPointerArray +
+ + +

Gets an array of references to nontransposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of references to nontransposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A nontransposed matrix contains row-major data; that is, each vector is contained in a row.

If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.

+
+ + bb205691 + HRESULT ID3DXBaseEffect::GetMatrixPointerArray([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXBaseEffect::GetMatrixPointerArray +
+ + +

Sets a transposed matrix.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Pointer to a transposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

If the destination matrix is smaller than the source matrix, the additional components of the source matrix will be ignored.

+
+ + bb205723 + HRESULT ID3DXBaseEffect::SetMatrixTranspose([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX* pMatrix) + ID3DXBaseEffect::SetMatrixTranspose +
+ + +

Gets a transposed matrix.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a transposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

If the destination matrix is larger than the source matrix, only the upper-left elements of the destination matrix will be filled, and the remaining destination matrix components will be set to zero.

+
+ + bb205692 + HRESULT ID3DXBaseEffect::GetMatrixTranspose([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX* pMatrix) + ID3DXBaseEffect::GetMatrixTranspose +
+ + +

Sets an array of transposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.

+
+ + bb205724 + HRESULT ID3DXBaseEffect::SetMatrixTransposeArray([In] D3DXHANDLE hParameter,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXBaseEffect::SetMatrixTransposeArray +
+ + +

Gets an array of transposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns an array of transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.

+
+ + bb205693 + HRESULT ID3DXBaseEffect::GetMatrixTransposeArray([In] D3DXHANDLE hParameter,[Out, Buffer] D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXBaseEffect::GetMatrixTransposeArray +
+ + +

Sets an array of references to transposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of references to transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

If the destination matrices are smaller than the source matrices, the additional components of the source matrices will be ignored.

+
+ + bb205725 + HRESULT ID3DXBaseEffect::SetMatrixTransposePointerArray([In] D3DXHANDLE hParameter,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXBaseEffect::SetMatrixTransposePointerArray +
+ + +

Gets an array of references to transposed matrices.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Array of references to transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

If the destination matrices are larger than the source matrices, only the upper-left components of each destination matrix will be filled, and the remaining destination matrix components will be set to zero.

+
+ + bb205694 + HRESULT ID3DXBaseEffect::GetMatrixTransposePointerArray([In] D3DXHANDLE hParameter,[Out] D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXBaseEffect::GetMatrixTransposePointerArray +
+ + +

Sets a string.

+
+

Unique identifier. See Handles (Direct3D 9).

+

String to set.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205726 + HRESULT ID3DXBaseEffect::SetString([In] D3DXHANDLE hParameter,[In] const char* pString) + ID3DXBaseEffect::SetString +
+ + +

Gets a string.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a string identified by hParameter.

+ + bb205704 + HRESULT ID3DXBaseEffect::GetString([In] D3DXHANDLE hParameter,[Out] const void** ppString) + ID3DXBaseEffect::GetString +
+ + +

Sets a texture.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Texture object. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205727 + HRESULT ID3DXBaseEffect::SetTexture([In] D3DXHANDLE hParameter,[In] IDirect3DBaseTexture9* pTexture) + ID3DXBaseEffect::SetTexture +
+ + +

Gets a texture.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a texture object. See .

+ + bb205708 + HRESULT ID3DXBaseEffect::GetTexture([In] D3DXHANDLE hParameter,[Out] IDirect3DBaseTexture9** ppTexture) + ID3DXBaseEffect::GetTexture +
+ + +

Gets a pixel shader.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a pixel shader object. See object.

+ + bb205703 + HRESULT ID3DXBaseEffect::GetPixelShader([In] D3DXHANDLE hParameter,[Out] IDirect3DPixelShader9** ppPShader) + ID3DXBaseEffect::GetPixelShader +
+ + +

Gets a vertex shader.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Returns a vertex shader object. See .

+ + bb205712 + HRESULT ID3DXBaseEffect::GetVertexShader([In] D3DXHANDLE hParameter,[Out] IDirect3DVertexShader9** ppVShader) + ID3DXBaseEffect::GetVertexShader +
+ + +

Set the range of an array to pass to the device.

+
+

Unique identifier. See Handles (Direct3D 9).

+

Start index.

+

Stop index.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205713 + HRESULT ID3DXBaseEffect::SetArrayRange([In] D3DXHANDLE hParameter,[In] unsigned int uStart,[In] unsigned int uEnd) + ID3DXBaseEffect::SetArrayRange +
+ + +

Gets the effect description.

+
+ + bb205681 + GetDesc + GetDesc + HRESULT ID3DXBaseEffect::GetDesc([Out] D3DXEFFECT_DESC* pDesc) +
+ + +

Applications use the methods of the interface to manipulate texture resources including cube and volume textures.

+
+ +

The interface assigned to a particular stage for a device is obtained by calling the GetTexture method.

The LPDIRECT3DBASETEXTURE9 and PDIRECT3DBASETEXTURE9 types are defined as references to the interface.

typedef struct  *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
+
+ + bb174322 + IDirect3DBaseTexture9 + IDirect3DBaseTexture9 +
+ + +

Applications use the methods of the interface to query and prepare resources.

+
+ +

To create a texture resource, you can call one of the following methods.

To create a geometry-oriented resource, you can call one of the following methods.

This interface, like all COM interfaces, inherits from the interface.

The LPDIRECT3DRESOURCE9 and PDIRECT3DRESOURCE9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;	
+            
+
+ + bb205878 + IDirect3DResource9 + IDirect3DResource9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the device associated with a resource.

+
+

Address of a reference to an interface to fill with the device reference, if the query succeeds.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method allows navigation to the owning device object.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205880 + HRESULT IDirect3DResource9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DResource9::GetDevice +
+ + +

Associates data with the resource that is intended for use by the application, not by Direct3D. Data is passed by value, and multiple sets of data can be associated with a single resource.

+
+

Reference to the globally unique identifier that identifies the private data to set.

+

Pointer to a buffer that contains the data to be associated with the resource.

+

Size of the buffer at pData, in bytes.

+

Value that describes the type of data being passed, or indicates to the application that the data should be invalidated when the resource changes.

ItemDescription

(none)

If no flags are specified, Direct3D allocates memory to hold the data within the buffer and copies the data into the new buffer. The buffer allocated by Direct3D is automatically freed, as appropriate.

D3DSPD_IUNKNOWN

The data at pData is a reference to an interface. SizeOfData must be set to the size of a reference to , that is, sizeof(*). Direct3D automatically callsIUnknown through pData when the private data is destroyed. Private data will be destroyed by a subsequent call to with the same , a subsequent call to , or when the object is released. For more information, see Remarks.

?

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Direct3D does not manage the memory at pData. If this buffer was dynamically allocated, it is the calling application's responsibility to free the memory.

+
+ + bb205886 + HRESULT IDirect3DResource9::SetPrivateData([In] const GUID& refguid,[In] const void* pData,[In] unsigned int SizeOfData,[In] unsigned int Flags) + IDirect3DResource9::SetPrivateData +
+ + +

Copies the private data associated with the resource to a provided buffer.

+
+

The globally unique identifier that identifies the private data to retrieve.

+

Pointer to a previously allocated buffer to fill with the requested private data if the call succeeds. The application calling this method is responsible for allocating and releasing this buffer. If this parameter is null, this method will return the buffer size in pSizeOfData.

+

Pointer to the size of the buffer at pData, in bytes. If this value is less than the actual size of the private data (such as 0), the method sets this parameter to the required buffer size and the method returns .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , .

+ +

This method is inherited by the following interfaces: , , , , , , .

+
+ + bb205882 + HRESULT IDirect3DResource9::GetPrivateData([In] const GUID& refguid,[In] void* pData,[InOut] unsigned int* pSizeOfData) + IDirect3DResource9::GetPrivateData +
+ + +

Frees the specified private data associated with this resource.

+
+

Reference to the globally unique identifier that identifies the private data to free.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , .

+ +

Direct3D calls this method automatically when a resource is released.

+
+ + bb205879 + HRESULT IDirect3DResource9::FreePrivateData([In] const GUID& refguid) + IDirect3DResource9::FreePrivateData +
+ + +

Assigns the priority of a resource for scheduling purposes.

+
+

Priority to assign to a resource.

Differences between Direct3D 9 and Direct3D 9 for Windows Vista

The priority can be any DWORD value; Direct3D 9 for Windows Vista also supports any of these pre-defined values D3D9_RESOURCE_PRIORITY.

?

+

Returns the previous priority value for the resource.

+ +

This method is used to change the priority of managed resources (resources created with the flag). This method returns 0 on non-managed resources.

Priorities are used to determine when managed resources are to be removed from memory. A resource assigned a low priority is removed before a resource with a high priority. If two resources have the same priority, the resource that was used more recently is kept in memory; the other resource is removed. Managed resources have a default priority of 0.

Windows Vista only - When this method is called using an interface, only resources created with the flag will be affected.

+
+ + bb205885 + unsigned int IDirect3DResource9::SetPriority([In] unsigned int PriorityNew) + IDirect3DResource9::SetPriority +
+ + +

Retrieves the priority for this resource.

+
+

Returns a DWORD value, indicating the priority of the resource.

+ +

is used for priority control of managed resources. This method returns 0 on nonmanaged resources.

Priorities are used to determine when managed resources are to be removed from memory. A resource assigned a low priority is removed before a resource with a high priority. If two resources have the same priority, the resource that was used more recently is kept in memory; the other resource is removed. Managed resources have a default priority of 0.

+
+ + bb205881 + unsigned int IDirect3DResource9::GetPriority() + IDirect3DResource9::GetPriority +
+ + +

Preloads a managed resource.

+
+ +

Calling this method indicates that the application will need this managed resource shortly. This method has no effect on nonmanaged resources.

detects "thrashing" conditions where more resources are being used in each frame than can fit in video memory simultaneously. Under such circumstances silently does nothing.

+
+ + bb205884 + void IDirect3DResource9::PreLoad() + IDirect3DResource9::PreLoad +
+ + +

Returns the type of the resource.

+
+

Returns a member of the enumerated type, identifying the type of the resource.

+ + bb205883 + D3DRESOURCETYPE IDirect3DResource9::GetType() + IDirect3DResource9::GetType +
+ + +

Retrieves the device associated with a resource.

+
+ +

This method allows navigation to the owning device object.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205880 + GetDevice + GetDevice + HRESULT IDirect3DResource9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Retrieves the priority for this resource.

+
+ +

is used for priority control of managed resources. This method returns 0 on nonmanaged resources.

Priorities are used to determine when managed resources are to be removed from memory. A resource assigned a low priority is removed before a resource with a high priority. If two resources have the same priority, the resource that was used more recently is kept in memory; the other resource is removed. Managed resources have a default priority of 0.

+
+ + bb205881 + GetPriority + GetPriority + unsigned int IDirect3DResource9::GetPriority() +
+ + +

Returns the type of the resource.

+
+ + bb205883 + GetType + GetType + D3DRESOURCETYPE IDirect3DResource9::GetType() +
+ + + Gets or sets the debug-name for this object. + + + The debug name. + + + + + Filters mipmap levels of a texture. + + The source level. + The filter. + + A object describing the result of the operation. + + HRESULT D3DXFilterTexture([In] IDirect3DBaseTexture9* pBaseTexture,[In, Buffer] const PALETTEENTRY* pPalette,[In] unsigned int SrcLevel,[In] D3DX_FILTER Filter) + + + + Filters mipmap levels of a texture. + + The source level. + The filter. + The palette. + + A object describing the result of the operation. + + HRESULT D3DXFilterTexture([In] IDirect3DBaseTexture9* pBaseTexture,[In, Buffer] const PALETTEENTRY* pPalette,[In] unsigned int SrcLevel,[In] D3DX_FILTER Filter) + + + + Saves a texture to a file. + + The texture. + Name of the file. + The format. + + A object describing the result of the operation. + + HRESULT D3DXSaveTextureToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette) + + + + Saves a texture to a file. + + The texture. + Name of the file. + The format. + The palette. + A object describing the result of the operation. + HRESULT D3DXSaveTextureToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette) + + + + Saves a texture to a stream. + + The texture. + The format. + A containing the saved texture. + HRESULT D3DXSaveTextureToFileInMemory([Out] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette) + + + + Saves a texture to a stream. + + The texture. + The format. + The palette. + A containing the saved texture. + HRESULT D3DXSaveTextureToFileInMemory([Out] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets the most detailed level-of-detail for a managed texture.

+
+

Most detailed level-of-detail value to set for the mipmap chain.

+

A DWORD value, clamped to the maximum level-of-detail value (one less than the total number of levels). Subsequent calls to this method will return the clamped value, not the level-of-detail value that was previously set.

+ +

This method applies to the following interfaces, which inherit from .

SetLOD is used for level-of-detail control of managed textures. This method returns 0 on nonmanaged textures.

SetLOD communicates to the Direct3D texture manager the most detailed mipmap in the chain that should be loaded into local video memory. For example, in a five-level mipmap chain, setting LODNew to 2 indicates that the texture manager should load only mipmap levels 2 through 4 into local video memory at any given time.

More specifically, if the texture was created with the dimensions of 256x256, setting the most detailed level to 0 indicates that 256 x 256 is the largest mipmap available, setting the most detailed level to 1 indicates that 128 x 128 is the largest mipmap available, and so on, up to the most detailed mip level (the smallest texture size) for the chain.

+
+ + bb174328 + unsigned int IDirect3DBaseTexture9::SetLOD([In] unsigned int LODNew) + IDirect3DBaseTexture9::SetLOD +
+ + +

Returns a value clamped to the maximum level-of-detail set for a managed texture (this method is not supported for an unmanaged texture).

+
+

A DWORD value, clamped to the maximum level-of-detail value (one less than the total number of levels). Calling GetLOD on an unmanaged texture is not supported and will result in a D3DERR error code being returned.

+ + bb174326 + unsigned int IDirect3DBaseTexture9::GetLOD() + IDirect3DBaseTexture9::GetLOD +
+ + +

Returns the number of texture levels in a multilevel texture.

+
+

A DWORD value that indicates the number of texture levels in a multilevel texture.

+ +

Warning??If you create a texture with to make that texture automatically generate sublevels, GetLevelCount always returns 1 for the number of levels.

This method applies to the following interfaces, which inherit from .

+
+ + bb174325 + unsigned int IDirect3DBaseTexture9::GetLevelCount() + IDirect3DBaseTexture9::GetLevelCount +
+ + +

Set the filter type that is used for automatically generated mipmap sublevels.

+
+

Filter type. See . This method will fail if the filter type is invalid or not supported.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Changing the filter type "dirties" the mipmap sublevels and causes them to be regenerated.

The (default) filter type set at texture creation time is . If the driver does not support a linear filter, the filter type will be set to . All filter types supported by the driver for regular texture filtering are supported for autogeneration except . SetAutoGenFilterType will fail unless the driver sets the appropriate D3DPTFILTERCAPS_MINFxxx caps. These values are specified in the TextureFilterCaps and/or CubeTextureFilterCaps members of . For more information about texture filter types, see .

This method has no effect if the texture is not created with . In this case, no failure is returned. For more information about usage constants, see .

+
+ + bb174327 + HRESULT IDirect3DBaseTexture9::SetAutoGenFilterType([In] D3DTEXTUREFILTERTYPE FilterType) + IDirect3DBaseTexture9::SetAutoGenFilterType +
+ + +

Get the filter type that is used for automatically generated mipmap sublevels.

+
+

Filter type. See . A texture must be created with to use this method. Any other usage value will cause this method to return .

+ +

Changing the filter type "dirties" the mipmap sublevels and causes them to be regenerated.

The (default) filter type set at texture creation time is . If the driver doesn't support a linear filter, the filter type will be set to . All filter types supported by the driver for regular texture filtering are supported for autogeneration except . For each resource type, drivers should support all the filter types reported in the corresponding texture, CubeTexture, and volumetexture filter caps. For more information about texture types, see .

This method has no effect if the texture is not created with .

+
+ + bb174324 + D3DTEXTUREFILTERTYPE IDirect3DBaseTexture9::GetAutoGenFilterType() + IDirect3DBaseTexture9::GetAutoGenFilterType +
+ + +

Generate mipmap sublevels.

+
+ +

An application can generate mipmap sublevels at any time by calling GenerateMipSubLevels. To have mipmap sublevels generated automatically at texture creation time (see Automatic Generation of Mipmaps (Direct3D 9)), specify during CreateTexture, CreateCubeTexture, and CreateVolumeTexture. For more information about usage constants, see .

+
+ + bb174323 + void IDirect3DBaseTexture9::GenerateMipSubLevels() + IDirect3DBaseTexture9::GenerateMipSubLevels +
+ + + Gets or sets the level of details. + + + The level of details. + + unsigned int IDirect3DBaseTexture9::GetLOD() + unsigned int IDirect3DBaseTexture9::SetLOD([In] unsigned int LODNew) + + + +

Returns the number of texture levels in a multilevel texture.

+
+ +

Warning??If you create a texture with to make that texture automatically generate sublevels, GetLevelCount always returns 1 for the number of levels.

This method applies to the following interfaces, which inherit from .

+
+ + bb174325 + GetLevelCount + GetLevelCount + unsigned int IDirect3DBaseTexture9::GetLevelCount() +
+ + +

Get or sets the filter type that is used for automatically generated mipmap sublevels.

+
+ +

Changing the filter type "dirties" the mipmap sublevels and causes them to be regenerated.

The (default) filter type set at texture creation time is . If the driver doesn't support a linear filter, the filter type will be set to . All filter types supported by the driver for regular texture filtering are supported for autogeneration except . For each resource type, drivers should support all the filter types reported in the corresponding texture, CubeTexture, and volumetexture filter caps. For more information about texture types, see .

This method has no effect if the texture is not created with .

+
+ + bb174324 + GetAutoGenFilterType / SetAutoGenFilterType + GetAutoGenFilterType + D3DTEXTUREFILTERTYPE IDirect3DBaseTexture9::GetAutoGenFilterType() +
+ + + No documentation. + + + bb280322 + D3DXBONECOMBINATION + D3DXBONECOMBINATION + + + + Get the bone identifiers. + + + + + No documentation. + + + bb280322 + unsigned int AttribId + unsigned int AttribId + + + + No documentation. + + + bb280322 + unsigned int FaceStart + unsigned int FaceStart + + + + No documentation. + + + bb280322 + unsigned int FaceCount + unsigned int FaceCount + + + + No documentation. + + + bb280322 + unsigned int VertexStart + unsigned int VertexStart + + + + No documentation. + + + bb280322 + unsigned int VertexCount + unsigned int VertexCount + + + + No documentation. + + + bb280322 + unsigned int* BoneId + unsigned int BoneId + + + +

Represents the capabilities of the hardware exposed through the Direct3D object.

+
+ +

The MaxTextureBlendStages and MaxSimultaneousTextures members might seem similar, but they contain different information. The MaxTextureBlendStages member contains the total number of texture-blending stages supported by the current device, and the MaxSimultaneousTextures member describes how many of those stages can have textures bound to them by using the SetTexture method.

When the driver fills this structure, it can set values for execute-buffer capabilities, even when the interface being used to retrieve the capabilities (such as ) does not support execute buffers.

In general, performance problems may occur if you use a texture and then modify it during a scene. Ensure that no texture used in the current BeginScene and EndScene block is evicted unless absolutely necessary. In the case of extremely high texture usage within a scene, the results are undefined. This occurs when you modify a texture that you have used in the scene and there is no spare texture memory available. For such systems, the contents of the z-buffer become invalid at EndScene. Applications should not call UpdateSurface to or from the back buffer on this type of hardware inside a BeginScene/EndScene pair. In addition, applications should not try to access the z-buffer if the capability flag is set. Finally, applications should not lock the back buffer or the z-buffer inside a BeginScene/EndScene pair.

The following flags concerning mipmapped textures are not supported in Direct3D 9.

  • D3DPTFILTERCAPS_LINEAR
  • D3DPTFILTERCAPS_LINEARMIPLINEAR
  • D3DPTFILTERCAPS_LINEARMIPNEAREST
  • D3DPTFILTERCAPS_MIPNEAREST
  • D3DPTFILTERCAPS_NEAREST
+
+ + bb172513 + D3DCAPS9 + D3DCAPS9 +
+ + +

Member of the enumerated type, which identifies what type of resources are used for processing vertices.

+
+ + bb172513 + D3DDEVTYPE DeviceType + D3DDEVTYPE DeviceType +
+ + +

Adapter on which this Direct3D device was created. This ordinal is valid only to pass to methods of the interface that created this Direct3D device. The interface can always be retrieved by calling GetDirect3D.

+
+ + bb172513 + unsigned int AdapterOrdinal + unsigned int AdapterOrdinal +
+ + +

The following driver-specific capability.

ValueMeaning

Display hardware is capable of returning the current scan line.

The display driver supports an overlay DDI that allows for verification of overlay capabilities. For more information about the overlay DDI, see Overlay DDI.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

?

+
+ + bb172513 + D3DCAPS Caps + D3DCAPS Caps +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DCAPS2 Caps2 + D3DCAPS2 Caps2 +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DCAPS3 Caps3 + D3DCAPS3 Caps3 +
+ + +

Bit mask of values representing what presentation swap intervals are available.

ValueMeaning

The driver supports an immediate presentation swap interval.

The driver supports a presentation swap interval of every screen refresh.

The driver supports a presentation swap interval of every second screen refresh.

The driver supports a presentation swap interval of every third screen refresh.

The driver supports a presentation swap interval of every fourth screen refresh.

?

+
+ + bb172513 + D3DPRESENT_INTERVAL PresentationIntervals + D3DPRESENT_INTERVAL PresentationIntervals +
+ + +

Bit mask indicating what hardware support is available for cursors. Direct3D 9 does not define alpha-blending cursor capabilities.

ValueMeaning

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports at least a hardware color cursor in high-resolution modes (with scan lines greater than or equal to 400).

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports a hardware color cursor in both high-resolution and low-resolution modes (with scan lines less than 400).

?

+
+ + bb172513 + D3DCURSORCAPS CursorCaps + D3DCURSORCAPS CursorCaps +
+ + +

Flags identifying the capabilities of the device.

ValueMeaning

Device supports blits from system-memory textures to nonlocal video-memory textures.

Device can queue rendering commands after a page flip. Applications do not change their behavior if this flag is set; this capability means that the device is relatively fast.

Device can support at least a DirectX 5-compliant driver.

Device can support at least a DirectX 7-compliant driver.

Device exports an -aware hal.

Device can use execute buffers from system memory.

Device can use execute buffers from video memory.

Device has hardware acceleration for scene rasterization.

Device can support transformation and lighting in hardware.

Device supports N patches.

Device can support rasterization, transform, lighting, and shading in hardware.

Device supports quintic B?zier curves and B-splines.

Device supports rectangular and triangular patches.

When this device capability is set, the hardware architecture does not require caching of any information, and uncached patches (handle zero) will be drawn as efficiently as cached ones. Note that setting does not mean that a patch with handle zero can be drawn. A handle-zero patch can always be drawn whether this cap is set or not.

Device is texturing from separate memory pools.

Device can retrieve textures from non-local video memory.

Device can retrieve textures from system memory.

Device can retrieve textures from device memory.

Device can use buffers from system memory for transformed and lit vertices.

Device can use buffers from video memory for transformed and lit vertices.

?

+
+ + bb172513 + D3DDEVCAPS DevCaps + D3DDEVCAPS DevCaps +
+ + +

Miscellaneous driver primitive capabilities. See .

+
+ + bb172513 + D3DPMISCCAPS PrimitiveMiscCaps + D3DPMISCCAPS PrimitiveMiscCaps +
+ + +

Information on raster-drawing capabilities. This member can be one or more of the following flags.

ValueMeaning

Device supports anisotropic filtering.

Device iterates colors perspective correctly.

Device can dither to improve color resolution.

Device supports legacy depth bias. For true depth bias, see .

Device supports range-based fog. In range-based fog, the distance of an object from the viewer is used to compute fog effects, not the depth of the object (that is, the z-coordinate) in the scene.

Device calculates the fog value by referring to a lookup table containing fog values that are indexed to the depth of a given pixel.

Device calculates the fog value during the lighting operation and interpolates the fog value during rasterization.

Device supports level-of-detail bias adjustments. These bias adjustments enable an application to make a mipmap appear crisper or less sharp than it normally would. For more information about level-of-detail bias in mipmaps, see .

Device supports toggling multisampling on and off between and (using ).

Device supports scissor test. See Scissor Test (Direct3D 9).

Device performs true slope-scale based depth bias. This is in contrast to the legacy style depth bias.

Device supports depth buffering using w.

Device supports w-based fog. W-based fog is used when a perspective projection matrix is specified, but affine projections still use z-based fog. The system considers a projection matrix that contains a nonzero value in the [3][4] element to be a perspective projection matrix.

Device can perform hidden-surface removal (HSR) without requiring the application to sort polygons and without requiring the allocation of a depth-buffer. This leaves more video memory for textures. The method used to perform HSR is hardware-dependent and is transparent to the application.

Z-bufferless HSR is performed if no depth-buffer surface is associated with the rendering-target surface and the depth-buffer comparison test is enabled (that is, when the state value associated with the enumeration constant is set to TRUE).

Device supports z-based fog.

Device can perform z-test operations. This effectively renders a primitive and indicates whether any z pixels have been rendered.

?

+
+ + bb172513 + D3DPRASTERCAPS RasterCaps + D3DPRASTERCAPS RasterCaps +
+ + +

Z-buffer comparison capabilities. This member can be one or more of the following flags.

ValueMeaning

Always pass the z-test.

Pass the z-test if the new z equals the current z.

Pass the z-test if the new z is greater than the current z.

Pass the z-test if the new z is greater than or equal to the current z.

Pass the z-test if the new z is less than the current z.

Pass the z-test if the new z is less than or equal to the current z.

Always fail the z-test.

Pass the z-test if the new z does not equal the current z.

?

+
+ + bb172513 + D3DPCMPCAPS ZCmpCaps + D3DPCMPCAPS ZCmpCaps +
+ + +

Source-blending capabilities. This member can be one or more of the following flags. (The RGBA values of the source and destination are indicated by the subscripts s and d.)

ValueMeaning

The driver supports both and . See .

Source blend factor is (1 - As, 1 - As, 1 - As, 1 - As) and destination blend factor is (As, As, As, As); the destination blend selection is overridden.

The driver supports the blend mode. (This blend mode is obsolete. For more information, see .)

Blend factor is (Ad, Ad, Ad, Ad).

Blend factor is (Rd, Gd, Bd, Ad).

Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad).

Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad).

Blend factor is (1 - As, 1 - As, 1 - As, 1 - As).

Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As).

Blend factor is (1 - PSOutColor[1]r, 1 - PSOutColor[1]g, 1 - PSOutColor[1]b, not used)). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (1, 1, 1, 1).

Blend factor is (As, As, As, As).

Blend factor is (f, f, f, 1); f = min(As, 1 - Ad).

Blend factor is (Rs, Gs, Bs, As).

Blend factor is (PSOutColor[1]r, PSOutColor[1]g, PSOutColor[1]b, not used). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (0, 0, 0, 0).

?

+
+ + bb172513 + D3DPBLENDCAPS SrcBlendCaps + D3DPBLENDCAPS SrcBlendCaps +
+ + +

Destination-blending capabilities. This member can be the same capabilities that are defined for the SrcBlendCaps member.

+
+ + bb172513 + D3DPBLENDCAPS DestBlendCaps + D3DPBLENDCAPS DestBlendCaps +
+ + +

Alpha-test comparison capabilities. This member can include the same capability flags defined for the ZCmpCaps member. If this member contains only the capability or only the capability, the driver does not support alpha tests. Otherwise, the flags identify the individual comparisons that are supported for alpha testing.

+
+ + bb172513 + D3DPCMPCAPS AlphaCmpCaps + D3DPCMPCAPS AlphaCmpCaps +
+ + +

Shading operations capabilities. It is assumed, in general, that if a device supports a given command at all, it supports the mode (as specified in the enumerated type). This flag specifies whether the driver can also support Gouraud shading and whether alpha color components are supported. When alpha components are not supported, the alpha value of colors generated is implicitly 255. This is the maximum possible alpha (that is, the alpha component is at full intensity).

The color, specular highlights, fog, and alpha interpolants of a triangle each have capability flags that an application can use to find out how they are implemented by the device driver.

This member can be one or more of the following flags.

ValueMeaning

Device can support an alpha component for Gouraud-blended transparency (the state for the enumerated type). In this mode, the alpha color component of a primitive is provided at vertices and interpolated across a face along with the other color components.

Device can support colored Gouraud shading. In this mode, the per-vertex color components (red, green, and blue) are interpolated across a triangle face.

Device can support fog in the Gouraud shading mode.

Device supports Gouraud shading of specular highlights.

?

+
+ + bb172513 + D3DPSHADECAPS ShadeCaps + D3DPSHADECAPS ShadeCaps +
+ + +

Miscellaneous texture-mapping capabilities. This member can be one or more of the following flags.

ValueMeaning

Alpha in texture pixels is supported.

Device can draw alpha from texture palettes.

Supports cube textures.

Device requires that cube texture maps have dimensions specified as powers of two.

Device supports mipmapped cube textures.

Device supports mipmapped textures.

Device supports mipmapped volume textures.

is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. A device that exposes this capability can use such a texture if all of the following requirements are met.

  • The texture addressing mode for the texture stage is set to .
  • Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
  • Mipmapping is not in use (use magnification filter only).
  • Texture formats must not be through .

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

A texture that is not a power of two cannot be set at a stage that will be read based on a shader computation (such as the bem - ps and texm3x3 - ps instructions in pixel shaders versions 1_0 to 1_3). For example, these textures can be used to store bumps that will be fed into texture reads, but not the environment maps that are used in texbem - ps, texbeml - ps, and texm3x3spec - ps. This means that a texture with dimensions that are not powers of two cannot be addressed or sampled using texture coordinates computed within the shader. This type of operation is known as a dependent read and cannot be performed on these types of textures.

Device does not support a projected bump-environment loopkup operation in programmable and fixed function shaders.

Perspective correction texturing is supported.

If is not set, all textures must have widths and heights specified as powers of two. This requirement does not apply to either cube textures or volume textures.

If is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. See description.

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

Supports the texture transformation flag. When applied, the device divides transformed texture coordinates by the last texture coordinate. If this capability is present, then the projective divide occurs per pixel. If this capability is not present, but the projective divide needs to occur anyway, then it is performed on a per-vertex basis by the Direct3D runtime.

All textures must be square.

Texture indices are not scaled by the texture size prior to interpolation.

Device supports volume textures.

Device requires that volume texture maps have dimensions specified as powers of two.

?

+
+ + bb172513 + D3DPTEXTURECAPS TextureCaps + D3DPTEXTURECAPS TextureCaps +
+ + +

Texture-filtering capabilities for a texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DPTFILTERCAPS TextureFilterCaps + D3DPTFILTERCAPS TextureFilterCaps +
+ + +

Texture-filtering capabilities for a cube texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DPTFILTERCAPS CubeTextureFilterCaps + D3DPTFILTERCAPS CubeTextureFilterCaps +
+ + +

Texture-filtering capabilities for a volume texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DPTFILTERCAPS VolumeTextureFilterCaps + D3DPTFILTERCAPS VolumeTextureFilterCaps +
+ + +

Texture-addressing capabilities for texture objects. This member can be one or more of the following flags.

ValueMeaning

Device supports setting coordinates outside the range [0.0, 1.0] to the border color, as specified by the texture-stage state.

Device can clamp textures to addresses.

Device can separate the texture-addressing modes of the u and v coordinates of the texture. This ability corresponds to the and render-state values.

Device can mirror textures to addresses.

Device can take the absolute value of the texture coordinate (thus, mirroring around 0) and then clamp to the maximum value.

Device can wrap textures to addresses.

?

+
+ + bb172513 + D3DPTADDRESSCAPS TextureAddressCaps + D3DPTADDRESSCAPS TextureAddressCaps +
+ + +

Texture-addressing capabilities for a volume texture. This member can be one or more of the flags defined for the TextureAddressCaps member.

+
+ + bb172513 + D3DPTADDRESSCAPS VolumeTextureAddressCaps + D3DPTADDRESSCAPS VolumeTextureAddressCaps +
+ + +

Defines the capabilities for line-drawing primitives.

ValueMeaning

Supports alpha-test comparisons.

Antialiased lines are supported.

Supports source-blending.

Supports fog.

Supports texture-mapping.

Supports z-buffer comparisons.

?

+
+ + bb172513 + D3DLINECAPS LineCaps + D3DLINECAPS LineCaps +
+ + +

Maximum texture width for this device.

+
+ + bb172513 + unsigned int MaxTextureWidth + unsigned int MaxTextureWidth +
+ + +

Maximum texture height for this device.

+
+ + bb172513 + unsigned int MaxTextureHeight + unsigned int MaxTextureHeight +
+ + +

Maximum value for any of the three dimensions (width, height, and depth) of a volume texture.

+
+ + bb172513 + unsigned int MaxVolumeExtent + unsigned int MaxVolumeExtent +
+ + +

This number represents the maximum range of the integer bits of the post-normalized texture coordinates. A texture coordinate is stored as a 32-bit signed integer using 27 bits to store the integer part and 5 bits for the floating point fraction. The maximum integer index, 227, is used to determine the maximum texture coordinate, depending on how the hardware does texture-coordinate scaling.

Some hardware reports the cap . For this case, the device defers scaling texture coordinates by the texture size until after interpolation and application of the texture address mode, so the number of times a texture can be wrapped is given by the integer value in MaxTextureRepeat.

Less desirably, on some hardware is not set and the device scales the texture coordinates by the texture size (using the highest level of detail) prior to interpolation. This limits the number of times a texture can be wrapped to MaxTextureRepeat / texture size.

For example, assume that MaxTextureRepeat is equal to 32k and the size of the texture is 4k. If the hardware sets , then the number of times a texture can be wrapped is equal to MaxTextureRepeat, which is 32k in this example. Otherwise, the number of times a texture can be wrapped is equal to MaxTextureRepeat divided by texture size, which is 32k/4k in this example.

+
+ + bb172513 + unsigned int MaxTextureRepeat + unsigned int MaxTextureRepeat +
+ + +

Maximum texture aspect ratio supported by the hardware, typically a power of 2.

+
+ + bb172513 + unsigned int MaxTextureAspectRatio + unsigned int MaxTextureAspectRatio +
+ + +

Maximum valid value for the texture-stage state.

+
+ + bb172513 + unsigned int MaxAnisotropy + unsigned int MaxAnisotropy +
+ + +

Maximum W-based depth value that the device supports.

+
+ + bb172513 + float MaxVertexW + float MaxVertexW +
+ + +

Screen-space coordinate of the guard-band clipping region. Coordinates inside this rectangle but outside the viewport rectangle are automatically clipped.

+
+ + bb172513 + float GuardBandLeft + float GuardBandLeft +
+ + +

Screen-space coordinate of the guard-band clipping region. Coordinates inside this rectangle but outside the viewport rectangle are automatically clipped.

+
+ + bb172513 + float GuardBandTop + float GuardBandTop +
+ + +

Screen-space coordinate of the guard-band clipping region. Coordinates inside this rectangle but outside the viewport rectangle are automatically clipped.

+
+ + bb172513 + float GuardBandRight + float GuardBandRight +
+ + +

Screen-space coordinate of the guard-band clipping region. Coordinates inside this rectangle but outside the viewport rectangle are automatically clipped.

+
+ + bb172513 + float GuardBandBottom + float GuardBandBottom +
+ + +

Number of pixels to adjust the extents rectangle outward to accommodate antialiasing kernels.

+
+ + bb172513 + float ExtentsAdjust + float ExtentsAdjust +
+ + +

Flags specifying supported stencil-buffer operations. Stencil operations are assumed to be valid for all three stencil-buffer operation render states (, , and ).

For more information, see .

+
+ + bb172513 + D3DSTENCILCAPS StencilCaps + D3DSTENCILCAPS StencilCaps +
+ + +

Flexible vertex format capabilities.

ValueMeaning

It is preferable that vertex elements not be stripped. That is, if the vertex format contains elements that are not used with the current render states, there is no need to regenerate the vertices. If this capability flag is not present, stripping extraneous elements from the vertex format provides better performance.

Point size is determined by either the render state or the vertex data. If an FVF is used, point size can come from point size data in the vertex declaration. Otherwise, point size is determined by the render state . If the application provides point size in both (the render state and the vertex declaration), the vertex data overrides the render-state data.

Masks the low WORD of FVFCaps. These bits, cast to the WORD data type, describe the total number of texture coordinate sets that the device can simultaneously use for multiple texture blending. (You can use up to eight texture coordinate sets for any vertex, but the device can blend using only the specified number of texture coordinate sets.)

?

+
+ + bb172513 + D3DFVFCAPS FVFCaps + D3DFVFCAPS FVFCaps +
+ + +

Combination of flags describing the texture operations supported by this device. The following flags are defined.

ValueMeaning

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

The texture-blending operation is supported.

?

+
+ + bb172513 + D3DTEXOPCAPS TextureOpCaps + D3DTEXOPCAPS TextureOpCaps +
+ + +

Maximum number of texture-blending stages supported in the fixed function pipeline. This value is the number of blenders available. In the programmable pixel pipeline, this corresponds to the number of unique texture registers used by pixel shader instructions.

+
+ + bb172513 + unsigned int MaxTextureBlendStages + unsigned int MaxTextureBlendStages +
+ + +

Maximum number of textures that can be simultaneously bound to the fixed-function pipeline sampler stages. If the same texture is bound to two sampler stages, it counts as two textures.

This value has no meaning in the programmable pipeline where the number of sampler stages is determined by each pixel shader version. Each pixel shader version also determines the number of texture declaration instructions. See Pixel Shaders.

+
+ + bb172513 + unsigned int MaxSimultaneousTextures + unsigned int MaxSimultaneousTextures +
+ + +

Vertex processing capabilities. For a given physical device, this capability might vary across Direct3D devices depending on the parameters supplied to CreateDevice. See .

+
+ + bb172513 + D3DVTXPCAPS VertexProcessingCaps + D3DVTXPCAPS VertexProcessingCaps +
+ + +

Maximum number of lights that can be active simultaneously. For a given physical device, this capability might vary across Direct3D devices depending on the parameters supplied to CreateDevice.

+
+ + bb172513 + unsigned int MaxActiveLights + unsigned int MaxActiveLights +
+ + +

Maximum number of user-defined clipping planes supported. This member can be 0. For a given physical device, this capability may vary across Direct3D devices depending on the parameters supplied to CreateDevice.

+
+ + bb172513 + unsigned int MaxUserClipPlanes + unsigned int MaxUserClipPlanes +
+ + +

Maximum number of matrices that this device can apply when performing multimatrix vertex blending. For a given physical device, this capability may vary across Direct3D devices depending on the parameters supplied to CreateDevice.

+
+ + bb172513 + unsigned int MaxVertexBlendMatrices + unsigned int MaxVertexBlendMatrices +
+ + +

DWORD value that specifies the maximum matrix index that can be indexed into using the per-vertex indices. The number of matrices is MaxVertexBlendMatrixIndex + 1, which is the size of the matrix palette. If normals are present in the vertex data that needs to be blended for lighting, then the number of matrices is half the number specified by this capability flag. If MaxVertexBlendMatrixIndex is set to zero, the driver does not support indexed vertex blending. If this value is not zero then the valid range of indices is zero through MaxVertexBlendMatrixIndex.

A zero value for MaxVertexBlendMatrixIndex indicates that the driver does not support indexed matrices.

When software vertex processing is used, 256 matrices could be used for indexed vertex blending, with or without normal blending.

For a given physical device, this capability may vary across Direct3D devices depending on the parameters supplied to CreateDevice.

+
+ + bb172513 + unsigned int MaxVertexBlendMatrixIndex + unsigned int MaxVertexBlendMatrixIndex +
+ + +

Maximum size of a point primitive. If set to 1.0f then device does not support point size control. The range is greater than or equal to 1.0f.

+
+ + bb172513 + float MaxPointSize + float MaxPointSize +
+ + +

Maximum number of primitives for each DrawPrimitive call. There are two cases: +

  • If MaxPrimitiveCount is not equal to 0xffff, you can draw at most MaxPrimitiveCount primitives with each draw call.
  • However, if MaxPrimitiveCount equals 0xffff, you can still draw at most MaxPrimitiveCount primitive, but you may also use no more than MaxPrimitiveCount unique vertices (since each primitive can potentially use three different vertices).
+
+ + bb172513 + unsigned int MaxPrimitiveCount + unsigned int MaxPrimitiveCount +
+ + +

Maximum size of indices supported for hardware vertex processing. It is possible to create 32-bit index buffers; however, you will not be able to render with the index buffer unless this value is greater than 0x0000FFFF.

+
+ + bb172513 + unsigned int MaxVertexIndex + unsigned int MaxVertexIndex +
+ + +

Maximum number of concurrent data streams for SetStreamSource. The valid range is 1 to 16. Note that if this value is 0, then the driver is not a Direct3D 9 driver.

+
+ + bb172513 + unsigned int MaxStreams + unsigned int MaxStreams +
+ + +

Maximum stride for SetStreamSource.

+
+ + bb172513 + unsigned int MaxStreamStride + unsigned int MaxStreamStride +
+ + +

Two numbers that represent the vertex shader main and sub versions. For more information about the instructions supported for each vertex shader version, see Version 1_x, Version 2_0, Version 2_0 Extended, or Version 3_0.

+
+ + bb172513 + unsigned int VertexShaderVersion + unsigned int VertexShaderVersion +
+ + +

The number of vertex shader Vertex Shader Registers that are reserved for constants.

+
+ + bb172513 + unsigned int MaxVertexShaderConst + unsigned int MaxVertexShaderConst +
+ + +

Two numbers that represent the pixel shader main and sub versions. For more information about the instructions supported for each pixel shader version, see Version 1_x, Version 2_0, Version 2_0 Extended, or Version 3_0.

+
+ + bb172513 + unsigned int PixelShaderVersion + unsigned int PixelShaderVersion +
+ + +

Maximum value of pixel shader arithmetic component. This value indicates the internal range of values supported for pixel color blending operations. Within the range that they report to, implementations must allow data to pass through pixel processing unmodified (unclamped). Normally, the value of this member is an absolute value. For example, a 1.0 indicates that the range is -1.0 to 1, and an 8.0 indicates that the range is -8.0 to 8.0. The value must be >= 1.0 for any hardware that supports pixel shaders.

+
+ + bb172513 + float PixelShader1xMaxValue + float PixelShader1xMaxValue +
+ + +

Device driver capabilities for adaptive tessellation. For more information, see

+
+ + bb172513 + D3DDEVCAPS2 DevCaps2 + D3DDEVCAPS2 DevCaps2 +
+ + +

This number indicates which device is the master for this subordinate. This number is taken from the same space as the adapter values.

For multihead support, one head will be denoted the master head, and all other heads on the same card will be denoted subordinate heads. If more than one multihead adapter is present in a system, the master and its subordinates from one multihead adapter are called a group.

+
+ + bb172513 + float MaxNpatchTessellationLevel + float MaxNpatchTessellationLevel +
+ + +

This number indicates the order in which heads are referenced by the API. The value for the master adapter is always 0. These values do not correspond to the adapter ordinals. They apply only to heads within a group.

+
+ + bb172513 + unsigned int Reserved5 + unsigned int Reserved5 +
+ + +

This number indicates which device is the master for this subordinate. This number is taken from the same space as the adapter values.

For multihead support, one head will be denoted the master head, and all other heads on the same card will be denoted subordinate heads. If more than one multihead adapter is present in a system, the master and its subordinates from one multihead adapter are called a group.

+
+ + bb172513 + unsigned int MasterAdapterOrdinal + unsigned int MasterAdapterOrdinal +
+ + +

This number indicates the order in which heads are referenced by the API. The value for the master adapter is always 0. These values do not correspond to the adapter ordinals. They apply only to heads within a group.

+
+ + bb172513 + unsigned int AdapterOrdinalInGroup + unsigned int AdapterOrdinalInGroup +
+ + +

Number of adapters in this adapter group (only if master). This will be 1 for conventional adapters. The value will be greater than 1 for the master adapter of a multihead card. The value will be 0 for a subordinate adapter of a multihead card. Each card can have at most one master, but may have many subordinates.

+
+ + bb172513 + unsigned int NumberOfAdaptersInGroup + unsigned int NumberOfAdaptersInGroup +
+ + +

A combination of one or more data types contained in a vertex declaration. See .

+
+ + bb172513 + D3DDTCAPS DeclTypes + D3DDTCAPS DeclTypes +
+ + +

Number of simultaneous render targets. This number must be at least one.

+
+ + bb172513 + unsigned int NumSimultaneousRTs + unsigned int NumSimultaneousRTs +
+ + +

Combination of constants that describe the operations supported by StretchRect. The flags that may be set in this field are:

ConstantDescription
Device supports point-sample filtering for minifying rectangles. This filter type is requested by calling StretchRect using .
Device supports point-sample filtering for magnifying rectangles. This filter type is requested by calling StretchRect using .
Device supports bilinear interpolation filtering for minifying rectangles. This filter type is requested by calling StretchRect using .
Device supports bilinear interpolation filtering for magnifying rectangles. This filter type is requested by calling StretchRect using .

?

For more information, see and .

+
+ + bb172513 + D3DPTFILTERCAPS StretchRectFilterCaps + D3DPTFILTERCAPS StretchRectFilterCaps +
+ + +

Device supports vertex shader version 2_0 extended capability. See .

+
+ + bb172513 + D3DVSHADERCAPS2_0 VS20Caps + D3DVSHADERCAPS2_0 VS20Caps +
+ + +

Device supports pixel shader version 2_0 extended capability. See .

+
+ + bb172513 + D3DPSHADERCAPS2_0 PS20Caps + D3DPSHADERCAPS2_0 PS20Caps +
+ + +

Device supports vertex shader texture filter capability. See .

+
+ + bb172513 + D3DPTFILTERCAPS VertexTextureFilterCaps + D3DPTFILTERCAPS VertexTextureFilterCaps +
+ + +

Maximum number of vertex shader instructions that can be run when using flow control. The maximum number of instructions that can be programmed is MaxVertexShader30InstructionSlots.

+
+ + bb172513 + unsigned int MaxVShaderInstructionsExecuted + unsigned int MaxVShaderInstructionsExecuted +
+ + +

Maximum number of pixel shader instructions that can be run when using flow control. The maximum number of instructions that can be programmed is MaxPixelShader30InstructionSlots.

+
+ + bb172513 + unsigned int MaxPShaderInstructionsExecuted + unsigned int MaxPShaderInstructionsExecuted +
+ + +

Maximum number of vertex shader instruction slots supported. The maximum value that can be set on this cap is 32768. Devices that support vs_3_0 are required to support at least 512 instruction slots.

+
+ + bb172513 + unsigned int MaxVertexShader30InstructionSlots + unsigned int MaxVertexShader30InstructionSlots +
+ + +

Maximum number of pixel shader instruction slots supported. The maximum value that can be set on this cap is 32768. Devices that support ps_3_0 are required to support at least 512 instruction slots.

+
+ + bb172513 + unsigned int MaxPixelShader30InstructionSlots + unsigned int MaxPixelShader30InstructionSlots +
+ + + Gets the pixel shader version. + + + + + Gets the vertex shader version. + + + + + Shader compilation results. + + + + + Initializes a new instance of the class. + + The bytecode. + The result code. + The message. + + + + Performs an implicit conversion from to . + + The input. + + The result of the conversion. + + + + +

The interface is used to access the constant table. This table contains the variables that are used by high-level language shaders and effects.

+
+ +

The LPD3DXCONSTANTTABLE type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXCONSTANTTABLE;	
+            
+
+ + bb205762 + ID3DXConstantTable + ID3DXConstantTable +
+ + + Gets a single constant description in the constant table. + + The effect handle. + The constant description + HRESULT ID3DXConstantTable::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount) + + + + Gets an array of constant descriptions in the constant table. + + The effect handle. + An array of constant descriptions + HRESULT ID3DXConstantTable::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount) + + + + Sets a bool value. + + The device. + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXConstantTable::SetBool([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] BOOL b) + + + + Sets a float value. + + The device. + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXConstantTable::SetFloat([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] float f) + + + + Sets an int value. + + The device. + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXConstantTable::SetInt([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] int n) + + + + Sets a matrix. + + The device. + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXConstantTable::SetMatrix([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix) + + + + Sets a 4D vector. + + The device. + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXConstantTable::SetVector([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector) + + + + Sets a typed value. + + Type of the value to set + The device. + The effect handle. + The value. + + A object describing the result of the operation. + + HRESULT ID3DXConstantTable::SetValue([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes) + + + + Sets an array of bools. + + The device. + The effect handle. + The values. + A object describing the result of the operation. + HRESULT ID3DXConstantTable::SetBoolArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const BOOL* pb,[In] unsigned int Count) + + + + Sets an array of floats. + + The device. + The effect handle. + The values. + A object describing the result of the operation. + HRESULT ID3DXConstantTable::SetFloatArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const float* pf,[In] unsigned int Count) + + + + Sets an array of ints. + + The device. + The effect handle. + The values. + A object describing the result of the operation. + HRESULT ID3DXConstantTable::SetIntArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const int* pn,[In] unsigned int Count) + + + + Sets an array of matrices. + + The device. + The effect handle. + The values. + A object describing the result of the operation. + HRESULT ID3DXConstantTable::SetMatrixArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + + + + Sets an array of 4D vectors. + + The device. + The effect handle. + The values. + A object describing the result of the operation. + HRESULT ID3DXConstantTable::SetVectorArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count) + + + + Sets an array of elements. + + Type of the array element + The device. + The effect handle. + The values. + + A object describing the result of the operation. + + HRESULT ID3DXConstantTable::SetValue([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets a reference to the buffer that contains the constant table.

+
+

Returns a reference the buffer.

+ + bb205763 + void* ID3DXConstantTable::GetBufferPointer() + ID3DXConstantTable::GetBufferPointer +
+ + +

Gets the buffer size of the constant table.

+
+

Returns the size of the buffer, in bytes.

+ + bb205764 + unsigned int ID3DXConstantTable::GetBufferSize() + ID3DXConstantTable::GetBufferSize +
+ + +

Gets a description of the constant table.

+
+

Description of the constant table. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb205769 + HRESULT ID3DXConstantTable::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc) + ID3DXConstantTable::GetDesc +
+ + +

Gets a reference to an array of constant descriptions in the constant table.

+
+

Unique identifier to a constant. See .

+

Returns a reference to an array of descriptions. See .

+

The input supplied must be the maximum size of the array. The output is the number of elements that are filled in the array when the function returns.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

will sometimes return a with a Register_Count of 0. This will happen with a constant appears in more than one Register_Set but does not have space in that register set allocated.

Because a sampler can appear more than once in a constant table, this method can return an array of descriptions, each one with a different register index.

+
+ + bb205767 + HRESULT ID3DXConstantTable::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount) + ID3DXConstantTable::GetConstantDesc +
+ + +

Returns the sampler index.

+
+

The sampler handle.

+

Returns the sampler index number from the constant table.

+ + bb205770 + unsigned int ID3DXConstantTable::GetSamplerIndex([In] D3DXHANDLE hConstant) + ID3DXConstantTable::GetSamplerIndex +
+ + +

Gets a constant by looking up its index.

+
+

Unique identifier to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use null.

+

Zero-based index of the constant.

+

Returns a unique identifier to the constant.

+ +

To get a constant from an array of constants, use .

+
+ + bb205765 + D3DXHANDLE ID3DXConstantTable::GetConstant([In] D3DXHANDLE hConstant,[In] unsigned int Index) + ID3DXConstantTable::GetConstant +
+ + +

Gets a constant by looking up its name.

+
+

Unique identifier to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use null.

+

Name of the constant.

+

Returns a unique identifier to the constant.

+ + bb205766 + D3DXHANDLE ID3DXConstantTable::GetConstantByName([In] D3DXHANDLE hConstant,[In] const char* pName) + ID3DXConstantTable::GetConstantByName +
+ + +

Gets a constant from an array of constants. An array is made up of elements.

+
+

Unique identifier to the array of constants. This value may not be null.

+

Zero-based index of the element in the array.

+

Returns a unique identifier to the element constant.

+ +

To get a constant that is not part of an array, use or .

+
+ + bb205768 + D3DXHANDLE ID3DXConstantTable::GetConstantElement([In] D3DXHANDLE hConstant,[In] unsigned int Index) + ID3DXConstantTable::GetConstantElement +
+ + +

Sets the constants to their default values. The default values are declared in the variable declarations in the shader.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205773 + HRESULT ID3DXConstantTable::SetDefaults([In] IDirect3DDevice9* pDevice) + ID3DXConstantTable::SetDefaults +
+ + +

Sets the contents of the buffer to the constant table.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to a constant. See .

+

Buffer containing data.

+

Size of the buffer, in bytes.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205785 + HRESULT ID3DXConstantTable::SetValue([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes) + ID3DXConstantTable::SetValue +
+ + +

Sets a Boolean value.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the constant. See .

+

Boolean value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205771 + HRESULT ID3DXConstantTable::SetBool([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] BOOL b) + ID3DXConstantTable::SetBool +
+ + +

Sets an array of Boolean values.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the array of constants. See .

+

Array of Boolean values.

+

Number of Boolean values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205772 + HRESULT ID3DXConstantTable::SetBoolArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const BOOL* pb,[In] unsigned int Count) + ID3DXConstantTable::SetBoolArray +
+ + +

Sets an integer value.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the constant. See .

+

Integer.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205776 + HRESULT ID3DXConstantTable::SetInt([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] int n) + ID3DXConstantTable::SetInt +
+ + +

Sets an array of integers.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the array of constants. See .

+

Array of integers.

+

Number of integers in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205778 + HRESULT ID3DXConstantTable::SetIntArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const int* pn,[In] unsigned int Count) + ID3DXConstantTable::SetIntArray +
+ + +

Sets a floating-point number.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the constant. See .

+

Floating-point number.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205774 + HRESULT ID3DXConstantTable::SetFloat([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] float f) + ID3DXConstantTable::SetFloat +
+ + +

Sets an array of floating-point numbers.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the array of constants. See .

+

Array of floating-point numbers.

+

Number of floating-point values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205775 + HRESULT ID3DXConstantTable::SetFloatArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const float* pf,[In] unsigned int Count) + ID3DXConstantTable::SetFloatArray +
+ + +

Sets a 4D vector.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the vector constant. See .

+

Pointer to a 4D vector.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205786 + HRESULT ID3DXConstantTable::SetVector([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector) + ID3DXConstantTable::SetVector +
+ + +

Sets an array of 4D vectors.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the array of vector constants. See .

+

Array of 4D vectors.

+

Number of vectors in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205787 + HRESULT ID3DXConstantTable::SetVectorArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXVECTOR4* pVector,[In] unsigned int Count) + ID3DXConstantTable::SetVectorArray +
+ + +

Sets a nontransposed matrix.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the matrix of constants. See .

+

Pointer to a nontransposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205779 + HRESULT ID3DXConstantTable::SetMatrix([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix) + ID3DXConstantTable::SetMatrix +
+ + +

Sets an array of nontransposed matrices.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the array of constant matrices. See .

+

Array of nontransposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205780 + HRESULT ID3DXConstantTable::SetMatrixArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXConstantTable::SetMatrixArray +
+ + +

Sets an array of references to nontransposed matrices.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to an array of constant matrices. See .

+

Array of references to nontransposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A nontransposed matrix contains row-major data; that is, each vector is contained in a row.

+
+ + bb205781 + HRESULT ID3DXConstantTable::SetMatrixPointerArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXConstantTable::SetMatrixPointerArray +
+ + +

Sets a transposed matrix.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the matrix of constants. See .

+

Pointer to a transposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205782 + HRESULT ID3DXConstantTable::SetMatrixTranspose([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix) + ID3DXConstantTable::SetMatrixTranspose +
+ + +

Sets an array of transposed matrices.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the array of matrix constants. See .

+

Array of transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205783 + HRESULT ID3DXConstantTable::SetMatrixTransposeArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In, Buffer] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXConstantTable::SetMatrixTransposeArray +
+ + +

Sets an array of references to transposed matrices.

+
+

Pointer to an interface, representing the device associated with the constant table.

+

Unique identifier to the array of matrix constants. See .

+

Array of references to transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

+
+ + bb205784 + HRESULT ID3DXConstantTable::SetMatrixTransposePointerArray([In] IDirect3DDevice9* pDevice,[In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXConstantTable::SetMatrixTransposePointerArray +
+ + + Gets the buffer. + + + + +

Gets a reference to the buffer that contains the constant table.

+
+ + bb205763 + GetBufferPointer + GetBufferPointer + void* ID3DXConstantTable::GetBufferPointer() +
+ + +

Gets the buffer size of the constant table.

+
+ + bb205764 + GetBufferSize + GetBufferSize + unsigned int ID3DXConstantTable::GetBufferSize() +
+ + +

Gets a description of the constant table.

+
+ + bb205769 + GetDesc + GetDesc + HRESULT ID3DXConstantTable::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc) +
+ + + A collection of . + + + + + Adapter information. + + + + + Gets the capabilities of this adapter. + + The type. + The capabilities + + + + Gets the display modes supported by this adapter. + + The filter. + + The display modes supported by this adapter. + + + + + Gets the adapter ordinal. + + + + + Gets the current display mode. + + + + + Gets the details. + + + + + Gets the monitor. + + + + +

Information about the properties of a display mode.

+
+ +

This structure is used in various methods to create and manage Direct3D 9Ex devices () and swapchains ().

+
+ + bb172549 + D3DDISPLAYMODEEX + D3DDISPLAYMODEEX +
+ + + Initializes a new instance of the class. + + + + +

The size of this structure. This should always be set to sizeof().

+
+ + bb172549 + unsigned int Size + unsigned int Size +
+ + +

Width of the display mode.

+
+ + bb172549 + unsigned int Width + unsigned int Width +
+ + +

Height of the display mode.

+
+ + bb172549 + unsigned int Height + unsigned int Height +
+ + +

Refresh rate of the display mode.

+
+ + bb172549 + unsigned int RefreshRate + unsigned int RefreshRate +
+ + +

Format of the display mode. See .

+
+ + bb172549 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

Indicates whether the scanline order is progressive or interlaced. See .

+
+ + bb172549 + D3DSCANLINEORDERING ScanLineOrdering + D3DSCANLINEORDERING ScanLineOrdering +
+ + + Gets the aspect ratio. + + + + +

Describes the display mode.

+
+ + bb172548 + D3DDISPLAYMODE + D3DDISPLAYMODE +
+ + +

Screen width, in pixels.

+
+ + bb172548 + unsigned int Width + unsigned int Width +
+ + +

Screen height, in pixels.

+
+ + bb172548 + unsigned int Height + unsigned int Height +
+ + +

Refresh rate. The value of 0 indicates an adapter default.

+
+ + bb172548 + unsigned int RefreshRate + unsigned int RefreshRate +
+ + +

Member of the enumerated type, describing the surface format of the display mode.

+
+ + bb172548 + D3DFORMAT Format + D3DFORMAT Format +
+ + + Gets the aspect ratio. + + + + + A collection of + + + + +

Applications use the methods of the interface to manipulate a cube texture resource.

+
+ +

The interface can be obtained by calling the method or one of the xxx functions.

This interface inherits additional functionality from the interface.

This interface, like all COM interfaces, inherits additional functionality from the interface.

The LPDIRECT3DCUBETEXTURE9 and PDIRECT3DCubeTexture9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCubeTexture9;	
+            
+
+ + bb174329 + IDirect3DCubeTexture9 + IDirect3DCubeTexture9 +
+ + + Initializes a new instance of the class. + + The device. + Length of the edge. + The level count. + The usage. + The format. + The pool. + + + + Initializes a new instance of the class. + + The device. + Length of the edge. + The level count. + The usage. + The format. + The pool. + The shared handle. + + + + Checks texture-creation parameters. + + Device associated with the texture. + Requested size of the texture. Null if + Requested number of mipmap levels for the texture. + The requested usage for the texture. + Requested format for the texture. + Memory class where the resource will be placed. + A value type containing the proposed values to pass to the texture creation functions. + HRESULT D3DXCheckCubeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pSize,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool) + + + + Uses a user-provided function to fill each texel of each mip level of a given cube texture. + + A function that is used to fill the texture. + A object describing the result of the operation. + + + + Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture. + + A texture shader object that is used to fill the texture. + A object describing the result of the operation. + + + + Locks a rectangle on a cube texture resource. + + Type of the face. + The level. + The flags. + + A describing the region locked. + + HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a cube texture resource. + + Type of the face. + The level. + The flags. + The stream pointing to the locked region. + + A describing the region locked. + + HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a cube texture resource. + + Type of the face. + The level. + The rectangle. + The flags. + + A describing the region locked. + + HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a cube texture resource. + + Type of the face. + The level. + The rectangle. + The flags. + The stream pointing to the locked region. + + A describing the region locked. + + HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Adds a dirty region to a cube texture resource. + + Type of the face. + A object describing the result of the operation. + HRESULT IDirect3DCubeTexture9::AddDirtyRect([In] D3DCUBEMAP_FACES FaceType,[In] const void* pDirtyRect) + + + + Adds a dirty region to a cube texture resource. + + Type of the face. + The dirty rect ref. + A object describing the result of the operation. + HRESULT IDirect3DCubeTexture9::AddDirtyRect([In] D3DCUBEMAP_FACES FaceType,[In] const void* pDirtyRect) + + + + Creates a from a file + + The device. + The filename. + + A + + HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a file + + The device. + The filename. + The usage. + The pool. + + A + + HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a file + + The device. + The filename. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a file + + The device. + The filename. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a file + + The device. + The filename. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The usage. + The pool. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The stream. + A + HRESULT D3DXCreateCubeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The usage. + The pool. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The buffer. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + A + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + The pointer. + The size in bytes. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Creates a from a stream. + + The device. + Name of the file. + The size. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves a description of one face of the specified cube texture level.

+
+

Specifies a level of a mipmapped cube texture.

+

Pointer to a structure, describing one face of the specified cube texture level.

+ +

The structure contains Width and Height members, which describe the size of one face in the cube. To get the size of the entire cube, multiply six (the number of cube faces) by the product of Width and Height.

+
+ + bb174332 + HRESULT IDirect3DCubeTexture9::GetLevelDesc([In] unsigned int Level,[Out] D3DSURFACE_DESC* pDesc) + IDirect3DCubeTexture9::GetLevelDesc +
+ + +

Retrieves a cube texture map surface.

+
+

Member of the enumerated type, identifying a cube map face.

+

Specifies a level of a mipmapped cube texture.

+

Address of a reference to an interface, representing the returned cube texture map surface.

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174331 + HRESULT IDirect3DCubeTexture9::GetCubeMapSurface([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[Out] IDirect3DSurface9** ppCubeMapSurface) + IDirect3DCubeTexture9::GetCubeMapSurface +
+ + +

Locks a rectangle on a cube texture resource.

+
+

Member of the enumerated type, identifying a cube map face.

+

Specifies a level of a mipmapped cube texture.

+

Pointer to a structure, describing the region to lock.

+

Pointer to a rectangle to lock. Specified by a reference to a structure. Specifying null for this parameter expands the dirty region to cover the entire cube texture.

+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

You may not specify a subrect when using . For a description of the flags, see .

+

If the method succeeds, the return value is . is returned if one or more of the arguments is invalid.

+ +

For performance reasons, dirty regions are only recorded for level zero of a texture. Dirty regions are automatically recorded when is called without or . See for more information.

Cube textures created with are not lockable. Cube textures created in video memory are lockable when created with USAGE_DYNAMIC.

The only lockable format for a depth-stencil texture is .

+
+ + bb174334 + HRESULT IDirect3DCubeTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + IDirect3DCubeTexture9::LockRect +
+ + +

Unlocks a rectangle on a cube texture resource.

+
+

Member of the enumerated type, identifying a cube map face.

+

Specifies a level of a mipmapped cube texture.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ + bb174335 + HRESULT IDirect3DCubeTexture9::UnlockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level) + IDirect3DCubeTexture9::UnlockRect +
+ + +

Adds a dirty region to a cube texture resource.

+
+

Member of the enumerated type, identifying the cube map face.

+

Pointer to a structure, specifying the dirty region. Specifying null expands the dirty region to cover the entire cube texture.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ +

For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) rectangle or box is also dirty. Dirty regions are automatically recorded when is called without or . The destination surface of is also marked dirty automatically.

Using and explicitly specifying dirty regions can be used to increase the efficiency of . Using this method, applications can optimize what subset of a resource is copied by specifying dirty regions on the resource. However, the dirty regions may be expanded to optimize alignment.

+
+ + bb174330 + HRESULT IDirect3DCubeTexture9::AddDirtyRect([In] D3DCUBEMAP_FACES FaceType,[In] const void* pDirtyRect) + IDirect3DCubeTexture9::AddDirtyRect +
+ + + A Cube Texture requirement. + + + + + The corrected size of the texture, in pixels. + + + + + The corrected surface format. + + + + + The corrected mip level count. + + + + + D3DX constants and methods + + + + + The value used to signify that the default value for a parameter should be used. + + D3DX_DEFAULT + + + + The default value for non power-of-two textures. + + D3DX_DEFAULT_NONPOW2 + + + + Indicates that the method should format from file. + + D3DFMT_FROM_FILE + + + + Indicates that the method should load from file. + + D3DX_FROM_FILE + + + + Checks the D3DX runtime version against this compiled version. + + True if version are compatible + BOOL D3DXCheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DXSdkVersion) + + + + Get and set debug mute mode. + + if set to true [mute]. + Return the debug mute mode + BOOL D3DXDebugMute([In] BOOL Mute) + + + + Converts a declarator from a flexible vertex format (FVF) code. + + Combination of that describes the FVF from which to generate the returned declarator array.. + + A declarator from a flexible vertex format (FVF) code. + + HRESULT D3DXDeclaratorFromFVF([In] D3DFVF FVF,[In, Buffer] D3DVERTEXELEMENT9* pDeclarator) + + + + Converts a flexible vertex format (FVF) code from a declarator. + + The declarator array. + A that describes the vertex format returned from the declarator. + HRESULT D3DXFVFFromDeclarator([In, Buffer] const D3DVERTEXELEMENT9* pDeclarator,[Out] D3DFVF* pFVF) + + + + Generates an output vertex declaration from the input declaration. The output declaration is intended for use by the mesh tessellation functions. + + The input declaration. + The output declaration + HRESULT D3DXGenerateOutputDecl([In, Buffer] D3DVERTEXELEMENT9* pOutput,[In, Buffer] const D3DVERTEXELEMENT9* pInput) + + + + Gets the number of elements in the vertex declaration. + + The declaration. + The number of elements in the vertex declaration. + unsigned int D3DXGetDeclLength([In, Buffer] const D3DVERTEXELEMENT9* pDecl) + + + + Gets the size of a vertex from the vertex declaration. + + The elements. + The stream. + The vertex declaration size, in bytes. + unsigned int D3DXGetDeclVertexSize([In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] unsigned int Stream) + + + + Returns the size of a vertex for a flexible vertex format (FVF). + + The vertex format. + The FVF vertex size, in bytes. + unsigned int D3DXGetFVFVertexSize([In] D3DFVF FVF) + + + + Gets the size of the rectangle patch. + + The segment count. + The triangle count. + The vertex count. + A object describing the result of the operation. + HRESULT D3DXRectPatchSize([In] const float* pfNumSegs,[In] unsigned int* pdwTriangles,[In] unsigned int* pdwVertices) + + + + Gets the size of the triangle patch. + + The segment count. + The triangle count. + The vertex count. + A object describing the result of the operation. + HRESULT D3DXTriPatchSize([In] const float* pfNumSegs,[In] unsigned int* pdwTriangles,[In] unsigned int* pdwVertices) + + + + Gets an array of from a . + + The stream. + The vertex count. + The format. + An array of + + + + Gets an array of from a . + + The stream. + The vertex count. + The stride. + An array of + + + + Creates a FOURCC Format code from bytes description. + + The c1. + The c2. + The c3. + The c4. + A Format FourCC + MAKEFOURCC + + + + Generates an optimized face remapping for a triangle list. + + The indices. + The face count. + The vertex count. + The original mesh face that was split to generate the current face. + HRESULT D3DXOptimizeFaces([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pFaceRemap) + + + + Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by D3DXOptimizeFaces. + + The indices. + The face count. + The vertex count. + The original mesh face that was split to generate the current face. + HRESULT D3DXOptimizeFaces([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pFaceRemap) + + + + Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by . + + The indices. + The face count. + The vertex count. + A buffer that will contain the new index for each vertex. The value stored in pVertexRemap for a given element is the source vertex location in the new vertex ordering. + HRESULT D3DXOptimizeVertices([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pVertexRemap) + + + + Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by . + + The indices. + The face count. + The vertex count. + A buffer that will contain the new index for each vertex. The value stored in pVertexRemap for a given element is the source vertex location in the new vertex ordering. + HRESULT D3DXOptimizeVertices([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pVertexRemap) + + + +

Applications use the methods of the interface to perform DrawPrimitive-based rendering, create resources, work with system-level variables, adjust gamma ramp levels, work with palettes, and create shaders.

+
+ +

The interface is obtained by calling the method.

This interface, like all COM interfaces, inherits the interface methods.

The LPDIRECT3DDEVICE9 and PDIRECT3DDEVICE9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;	
+            
+
+ + bb174336 + IDirect3DDevice9 + IDirect3DDevice9 +
+ + + Creates a device to represent the display adapter. + + + This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in ). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in ). The purpose of each window is: The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}. This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE. Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, , and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail. + + an instance of + Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter. + Member of the enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail. + The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value. + Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}. + Pointer to a structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order: User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default. An unsupported refresh rate will default to the closest supported refresh rate below it. For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including: If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals before the method is called, it will be changed when the method returns. + If the method succeeds, the return value is D3D_OK. If the method fails, the return value can be one of the following: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY. + HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface) + + + + Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer. + + Flags that specify which surfaces will be cleared. + The color that will be used to fill the cleared render target. + The value that will be used to fill the cleared depth buffer. + The value that will be used to fill the cleared stencil buffer. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::Clear([None] int Count,[In, Buffer, Optional] const D3DRECT* pRects,[None] int Flags,[None] D3DCOLOR Color,[None] float Z,[None] int Stencil) + + + + Clears one or more surfaces such as a render target, a stencil buffer, and a depth buffer. + + Flags that specify which surfaces will be cleared. + The color that will be used to fill the cleared render target. + The value that will be used to fill the cleared depth buffer. + The value that will be used to fill the cleared stencil buffer. + The areas on the surfaces that will be cleared. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::Clear([None] int Count,[In, Buffer, Optional] const D3DRECT* pRects,[None] int Flags,[None] D3DCOLOR Color,[None] float Z,[None] int Stencil) + + + + Allows an application to fill a rectangular area of a D3DPOOL_DEFAULT surface with a specified color. + + + This method can only be applied to a render target, a render-target texture surface, or an off-screen plain surface with a pool type of D3DPOOL_DEFAULT. IDirect3DDevice9::ColorFill will work with all formats. However, when using a reference or software device, the only formats supported are D3DFMT_X1R5G5B5, D3DFMT_A1R5G5B5, D3DFMT_R5G6B5, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_YUY2, D3DFMT_G8R8_G8B8, D3DFMT_UYVY, D3DFMT_R8G8_B8G8, D3DFMT_R16F, D3DFMT_G16R16F, D3DFMT_A16B16G16R16F, D3DFMT_R32F, D3DFMT_G32R32F, and D3DFMT_A32B32G32R32F. When using a DirectX 7 or DirectX 8.x driver, the only YUV formats supported are D3DFMT_UYVY and D3DFMT_YUY2. + + Pointer to the surface to be filled. + Color used for filling. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::ColorFill([None] IDirect3DSurface9* pSurface,[In, Optional] const RECT* pRect,[None] D3DCOLOR color) + + + + Draws the indexed user primitives. + + + + Type of the primitive. + Minimum index of the vertex. + The vertex count. + The primitive count. + The index data. + The index data format. + The vertex data. + The vertex stride. + A object describing the result of the operation. + + + + Draws the indexed user primitives. + + + + Type of the primitive. + The start index. + Minimum index of the vertex. + The vertex count. + The primitive count. + The index data. + The index data format. + The vertex data. + A object describing the result of the operation. + + + + Draws the indexed user primitives. + + + + Type of the primitive. + The start index. + The start vertex. + Minimum index of the vertex. + The vertex count. + The primitive count. + The index data. + The index data format. + The vertex data. + A object describing the result of the operation. + + + + Draws the rectangle patch. + + The handle. + The segment counts. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::DrawRectPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pRectPatchInfo) + + + + Draws the rectangle patch. + + The handle. + The segment counts. + The info. + + A object describing the result of the operation. + + IDirect3DDevice9::DrawRectPatch + + + + Draws the triangle patch. + + The handle. + The segment counts. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::DrawTriPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pTriPatchInfo) + + + + Draws the triangle patch. + + The handle. + The segment counts. + The info. + + A object describing the result of the operation. + + + + + Draws the user primitives. + + + Type of the primitive. + The primitive count. + The data. + + A object describing the result of the operation. + + + + + Draws the user primitives. + + + Type of the primitive. + The start index. + The primitive count. + The data. + + A object describing the result of the operation. + + + + + Gets the back buffer. + + The swap chain. + The back buffer. + A object describing the result of the operation. + + + + Gets the palette entries. + + The palette number. + An array of + + + + Gets the pixel shader boolean constant. + + The start register. + The count. + An array of boolean constants + + + + Gets the pixel shader float constant. + + The start register. + The count. + An array of float constants + + + + Gets the pixel shader integer constant. + + The start register. + The count. + An array of int constants + + + + Gets the state of the render. + + The state. + The render state value + HRESULT IDirect3DDevice9::GetRenderState([In] D3DRENDERSTATETYPE State,[In] void* pValue) + + + + Gets the state of the render. + + Type of the state value. + The state. + + The render state value + + HRESULT IDirect3DDevice9::GetRenderState([In] D3DRENDERSTATETYPE State,[In] void* pValue) + + + + Gets the state of the sampler. + + The sampler. + The state. + + The sampler state value + + HRESULT IDirect3DDevice9::GetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] void* pValue) + + + + Gets the state of the sampler. + + Type of the sampler state value + The sampler. + The state. + + The sampler state value + + HRESULT IDirect3DDevice9::GetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] void* pValue) + + + + Gets the state of the texture stage. + + The stage. + The type. + + The texture stage state. + + HRESULT IDirect3DDevice9::GetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] void* pValue) + + + + Gets the state of the texture stage. + + Type of the texture stage state + The stage. + The type. + + The texture stage state. + + HRESULT IDirect3DDevice9::GetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] void* pValue) + + + + Gets the vertex shader boolean constant. + + The start register. + The count. + An array of boolean constants + HRESULT IDirect3DDevice9::GetVertexShaderConstantB([In] unsigned int StartRegister,[In] void* pConstantData,[In] unsigned int BoolCount) + + + + Gets the vertex shader float constant. + + The start register. + The count. + An array of float constants + HRESULT IDirect3DDevice9::GetVertexShaderConstantF([In] unsigned int StartRegister,[In, Buffer] float* pConstantData,[In] unsigned int Vector4fCount) + + + + Gets the vertex shader integer constant. + + The start register. + The count. + An array of int constants + HRESULT IDirect3DDevice9::GetVertexShaderConstantI([In] unsigned int StartRegister,[Out] int* pConstantData,[In] unsigned int Vector4iCount) + + + + Sets the cursor position. + + The point. + if set to true [flags]. + void IDirect3DDevice9::SetCursorPosition([In] int X,[In] int Y,[In] unsigned int Flags) + + + + Sets the cursor position. + + The x. + The y. + if set to true [flags]. + void IDirect3DDevice9::SetCursorPosition([In] int X,[In] int Y,[In] unsigned int Flags) + + + + Sets the cursor properties. + + The point. + The cursor bitmap ref. + + HRESULT IDirect3DDevice9::SetCursorProperties([In] unsigned int XHotSpot,[In] unsigned int YHotSpot,[In] IDirect3DSurface9* pCursorBitmap) + + + + Sets the gamma ramp. + + The swap chain. + The ramp ref. + if set to true [calibrate]. + void IDirect3DDevice9::SetGammaRamp([In] unsigned int iSwapChain,[In] unsigned int Flags,[In] const D3DGAMMARAMP* pRamp) + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + A object describing the result of the operation. + IDirect3DDevice9::Present + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + The area of the back buffer that should be presented. + The area of the front buffer that should receive the result of the presentation. + A object describing the result of the operation. + IDirect3DDevice9::Present + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + The area of the back buffer that should be presented. + The area of the front buffer that should receive the result of the presentation. + The destination window whose client area is taken as the target for this presentation. + A object describing the result of the operation. + IDirect3DDevice9::Present + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + The area of the back buffer that should be presented. + The area of the front buffer that should receive the result of the presentation. + The destination window whose client area is taken as the target for this presentation. + Specifies a region on the back buffer that contains the minimal amount of pixels that need to be updated. + A object describing the result of the operation. + IDirect3DDevice9::Present + + + + Resets the stream source frequency by setting the frequency to 1. + + The stream index. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetStreamSourceFreq([In] unsigned int StreamNumber,[In] unsigned int Setting) + + + + Sets the pixel shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + The count. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + The offset. + The count. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetPixelShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetPixelShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount) + + + + Sets the pixel shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the RenderState. + + State of the render. + if set to true [enable]. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value) + + + + Sets the RenderState. + + State of the render. + A float value. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value) + + + + Sets the RenderState. + + Type of the enum value + State of the render. + An enum value. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value) + + + + Sets the SamplerState. + + The sampler. + The type. + The texture filter. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value) + + + + Sets the SamplerState. + + The sampler. + The type. + The texture address. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value) + + + + Sets the SamplerState. + + The sampler. + The type. + A float value. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value) + + + + Sets the stream source frequency. + + The stream. + The frequency. + The source. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetStreamSourceFreq([In] unsigned int StreamNumber,[In] unsigned int Setting) + + + + Sets the state of the texture stage. + + The stage. + The type. + The texture argument. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value) + + + + Sets the state of the texture stage. + + The stage. + The type. + The texture operation. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value) + + + + Sets the state of the texture stage. + + The stage. + The type. + The texture transform. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value) + + + + Sets the state of the texture stage. + + The stage. + The type. + The value. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value) + + + + Sets the transform. + + The state. + The matrix ref. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix) + + + + Sets the transform. + + The index. + The matrix ref. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix) + + + + Sets the transform. + + The state. + The matrix ref. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix) + + + + Sets the transform. + + The index. + The matrix ref. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix) + + + + Sets the vertex shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + The count. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + The offset. + The count. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetVertexShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetVertexShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount) + + + + Sets the vertex shader constant. + + The start register. + The data. + The offset. + The count. + A object describing the result of the operation. + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + + + + Stretches the rectangle. + + The source surface ref. + The dest surface ref. + The filter. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::StretchRect([In] IDirect3DSurface9* pSourceSurface,[In, Optional] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestSurface,[In, Optional] const RECT* pDestRect,[In] D3DTEXTUREFILTERTYPE Filter) + + + + Updates the surface. + + The source surface ref. + The destination surface ref. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9::UpdateSurface([In] IDirect3DSurface9* pSourceSurface,[In] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestinationSurface,[In] const POINT* pDestPoint) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Reports the current cooperative-level status of the Direct3D device for a windowed or full-screen application.

+
+

If the method succeeds, the return value is , indicating that the device is operational and the calling application can continue. If the method fails, the return value can be one of the following values: , , .

+ +

If the device is lost but cannot be restored at the current time, returns the return code. This would be the case, for example, when a full-screen device has lost focus. If an application detects a lost device, it should pause and periodically call until it receives a return value of . The application may then attempt to reset the device by calling and, if this succeeds, restore the necessary resources and resume normal operation. Note that will return if the device is either "lost" or "not reset".

A call to will fail if called on a different thread than that used to create the device being reset.

+
+ + bb174472 + HRESULT IDirect3DDevice9::TestCooperativeLevel() + IDirect3DDevice9::TestCooperativeLevel +
+ + +

Returns an estimate of the amount of available texture memory.

+
+

The function returns an estimate of the available texture memory.

+ +

The returned value is rounded to the nearest MB. This is done to reflect the fact that video memory estimates are never precise due to alignment and other issues that affect consumption by certain resources. Applications can use this value to make gross estimates of memory availability to make large-scale resource decisions such as how many levels of a mipmap to attempt to allocate, but applications cannot use this value to make small-scale decisions such as if there is enough memory left to allocate another resource.

+
+ + bb174378 + unsigned int IDirect3DDevice9::GetAvailableTextureMem() + IDirect3DDevice9::GetAvailableTextureMem +
+ + +

Evicts all managed resources, including both Direct3D and driver-managed resources.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be , D3DERR_COMMAND_UNPARSED.

+ +

This function causes only the copy of resources to be evicted. The resource copy in system memory is retained. See .

+
+ + bb174377 + HRESULT IDirect3DDevice9::EvictManagedResources() + IDirect3DDevice9::EvictManagedResources +
+ + +

Returns an interface to the instance of the Direct3D object that created the device.

+
+

Address of a reference to an interface, representing the interface of the Direct3D object that created the device.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Calling will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174386 + HRESULT IDirect3DDevice9::GetDirect3D([Out] IDirect3D9** ppD3D9) + IDirect3DDevice9::GetDirect3D +
+ + +

Retrieves the capabilities of the rendering device.

+
+

Pointer to a structure, describing the returned device.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

retrieves the software vertex pipeline capabilities when the device is being used in software vertex processing mode.

+
+ + bb174385 + HRESULT IDirect3DDevice9::GetDeviceCaps([Out] D3DCAPS9* pCaps) + IDirect3DDevice9::GetDeviceCaps +
+ + +

Retrieves the display mode's spatial resolution, color resolution, and refresh frequency.

+
+

An unsigned integer specifying the swap chain.

+

Pointer to a structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode.

+ + bb174387 + HRESULT IDirect3DDevice9::GetDisplayMode([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODE* pMode) + IDirect3DDevice9::GetDisplayMode +
+ + +

Retrieves the creation parameters of the device.

+
+

Pointer to a structure, describing the creation parameters of the device.

+

If the method succeeds, the return value is .

is returned if the argument is invalid.

+ +

You can query the AdapterOrdinal member of the returned structure to retrieve the ordinal of the adapter represented by this device.

+
+ + bb174382 + HRESULT IDirect3DDevice9::GetCreationParameters([Out] D3DDEVICE_CREATION_PARAMETERS* pParameters) + IDirect3DDevice9::GetCreationParameters +
+ + +

Sets properties for the cursor.

+
+

X-coordinate offset (in pixels) that marks the center of the cursor. The offset is relative to the upper-left corner of the cursor. When the cursor is given a new position, the image is drawn at an offset from this new position determined by subtracting the hot spot coordinates from the position.

+

Y-coordinate offset (in pixels) that marks the center of the cursor. The offset is relative to the upper-left corner of the cursor. When the cursor is given a new position, the image is drawn at an offset from this new position determined by subtracting the hot spot coordinates from the position.

+

Pointer to an interface. This parameter must point to an 8888 ARGB surface (format ). The contents of this surface will be copied and potentially format-converted into an internal buffer from which the cursor is displayed. The dimensions of this surface must be less than the dimensions of the display mode, and must be a power of two in each direction, although not necessarily the same power of two. The alpha channel must be either 0.0 or 1.0.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

An operating system cursor is created and used under either of these conditions:

  • The hardware has set (see ), and the cursor size is 32x32 (which is the cursor size in the operating system).
  • The application is running in windowed mode.

Otherwise, DirectX uses an emulated cursor. An application uses to move an emulated cursor to follow mouse movement.

It is recommended for applications to always trap WM_MOUSEMOVE events and call DXSetCursorPosition.

Direct3D cursor functions use either GDI cursor or software emulation, depending on the hardware. Users typically want to respond to a WM_SETCURSOR message. For example, they might want to write the message handler as follows:

 case WM_SETCURSOR:	
+            // Turn off window cursor. 	
+            SetCursor( null );	
+            m_pd3dDevice->ShowCursor( TRUE );	
+            return TRUE; // Prevent Windows from setting cursor to window class cursor.	
+            break;	
+            

Or, users might want to call the method if they want to change the cursor.

The application can determine what hardware support is available for cursors by examining appropriate members of the structure. Typically, hardware supports only 32x32 cursors and, when windowed, the system might support only 32x32 cursors. In this case, still succeeds but the cursor might be reduced to that size. The hot spot is scaled appropriately.

The cursor does not survive when the device is lost. This method must be called after the device is reset.

+
+ + bb174430 + HRESULT IDirect3DDevice9::SetCursorProperties([In] unsigned int XHotSpot,[In] unsigned int YHotSpot,[In] IDirect3DSurface9* pCursorBitmap) + IDirect3DDevice9::SetCursorProperties +
+ + +

Sets the cursor position and update options.

+
+

The new X-position of the cursor in virtual desktop coordinates. See Remarks.

+

The new Y-position of the cursor in virtual desktop coordinates. See Remarks.

+

Specifies the update options for the cursor. Currently, only one flag is defined.

ValueMeaning
D3DCURSOR_IMMEDIATE_UPDATE

Update cursor at the refresh rate.

If this flag is specified, the system guarantees that the cursor will be updated at a minimum of half the display refresh rate, but never more frequently than the display refresh rate. Otherwise, the method delays cursor updates until the next call. Not setting this flag usually results in better performance than if the flag is set. However, applications should set this flag if the rate of calls to Present is low enough that users would notice a significant delay in cursor motion. This flag has no effect in a windowed-mode application. Some video cards implement hardware color cursors. This flag does not have an effect on these cards.

?

+ +

When running in full-screen mode, screen space coordinates are the back buffer coordinates appropriately scaled to the current display mode. When running in windowed mode, screen space coordinates are the desktop coordinates. The cursor image is drawn at the specified position minus the hotspot-offset specified by the SetCursorProperties method.

If the cursor has been hidden by ShowCursor, the cursor is not drawn.

+
+ + bb174429 + void IDirect3DDevice9::SetCursorPosition([In] int X,[In] int Y,[In] unsigned int Flags) + IDirect3DDevice9::SetCursorPosition +
+ + +

Displays or hides the cursor.

+
+

If bShow is TRUE, the cursor is shown. If bShow is , the cursor is hidden.

+

Value indicating whether the cursor was previously visible. TRUE if the cursor was previously visible, or if the cursor was not previously visible.

+ +

Direct3D cursor functions use either GDI cursor or software emulation, depending on the hardware. Users usually want to respond to a WM_SETCURSOR message. For example, the users might want to write the message handler like this:

 case WM_SETCURSOR: // Turn off window cursor  SetCursor( null ); m_pd3dDevice->ShowCursor( TRUE ); return TRUE; // prevent Windows from setting cursor to window class cursor break;	
+            

Or users might want to call the method if they want to change the cursor. See the code in the DirectX Graphics C/C++ Samples for more detail.

+
+ + bb174470 + BOOL IDirect3DDevice9::ShowCursor([In] BOOL bShow) + IDirect3DDevice9::ShowCursor +
+ + +

Creates an additional swap chain for rendering multiple views.

+
+

Pointer to a structure, containing the presentation parameters for the new swap chain. This value cannot be null.

Calling this method changes the value of members of the structure.

  • If BackBufferCount == 0, calling CreateAdditionalSwapChain will increase it to 1.
  • If the application is in windowed mode, and if either the BackBufferWidth or the BackBufferHeight == 0, they will be set to the client area width and height of the hwnd.
+

Address of a reference to an interface, representing the additional swap chain.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , , , E_OUTOFMEMORY.

+ +

There is always at least one swap chain (the implicit swap chain) for each device because Direct3D 9 has one swap chain as a property of the device.

Note that any given device can support only one full-screen swap chain.

can be specified for the windowed mode back buffer format when calling , and CreateAdditionalSwapChain. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified.

+
+ + bb174354 + HRESULT IDirect3DDevice9::CreateAdditionalSwapChain([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[Out, Fast] IDirect3DSwapChain9** pSwapChain) + IDirect3DDevice9::CreateAdditionalSwapChain +
+ + +

Gets a reference to a swap chain.

+
+

The swap chain ordinal value. For more information, see NumberOfAdaptersInGroup in .

+

Pointer to an interface that will receive a copy of swap chain.

+ + bb174411 + HRESULT IDirect3DDevice9::GetSwapChain([In] unsigned int iSwapChain,[Out] IDirect3DSwapChain9** pSwapChain) + IDirect3DDevice9::GetSwapChain +
+ + +

Gets the number of implicit swap chains.

+
+

Number of implicit swap chains. See Remarks.

+ +

Implicit swap chains are created by the device during . This method returns the number of swap chains created by CreateDevice.

An application may create additional swap chains using .

+
+ + bb174396 + unsigned int IDirect3DDevice9::GetNumberOfSwapChains() + IDirect3DDevice9::GetNumberOfSwapChains +
+ + +

Resets the type, size, and format of the swap chain.

+
+

Pointer to a structure, describing the new presentation parameters. This value cannot be null.

When switching to full-screen mode, Direct3D will try to find a desktop format that matches the back buffer format, so that back buffer and front buffer formats will be identical (to eliminate the need for color conversion).

When this method returns:

  • BackBufferCount, BackBufferWidth, and BackBufferHeight are set to zero.
  • BackBufferFormat is set to for windowed mode only; a full-screen mode must specify a format.
+

Possible return values include: , , , , or (see D3DERR).

+ +

If a call to fails, the device will be placed in the "lost" state (as indicated by a return value of from a call to ) unless it is already in the "not reset" state (as indicated by a return value of from a call to ). Refer to and Lost Devices (Direct3D 9) for further information concerning the use of in the context of lost devices.

Calling causes all texture memory surfaces to be lost, managed textures to be flushed from video memory, and all state information to be lost. Before calling the method for a device, an application should release any explicit render targets, depth stencil surfaces, additional swap chains, state blocks, and resources associated with the device.

There are two different types of swap chains: full-screen or windowed. If the new swap chain is full-screen, the adapter will be placed in the display mode that matches the new size.

Direct3D 9 applications can expect messages to be sent to them during this call (for example, before this call is returned); applications should take precautions not to call into Direct3D at this time. In addition, when fails, the only valid methods that can be called are , , and the various Release member functions. Calling any other method can result in an exception.

A call to will fail if called on a different thread than that used to create the device being reset.

Pixel shaders and vertex shaders survive calls for Direct3D 9. They do not need to be re-created explicitly by the application.

can be specified for the windowed mode back buffer format when calling , , and . This means the application does not have to query the current desktop format before calling for windowed mode. For full-screen mode, the back buffer format must be specified. Setting BackBufferCount equal to zero (BackBufferCount = 0) results in one back buffer.

When trying to reset more than one display adapter in a group, set pPresentationParameters to point to an array of structures, one for each display in the adapter group.

If a multihead device was created with , requires an array of structures wherein each structure must specify a full-screen display. To switch back to windowed mode, the application must destroy the device and re-create a non-multihead device in windowed mode.

+
+ + bb174425 + HRESULT IDirect3DDevice9::Reset([In, Out, Params] D3DPRESENT_PARAMETERS* pPresentationParameters) + IDirect3DDevice9::Reset +
+ + +

Presents the contents of the next buffer in the sequence of back buffers owned by the device.

+
+

Pointer to a value that must be null unless the swap chain was created with . pSourceRect is a reference to a structure containing the source rectangle. If null, the entire source surface is presented. If the rectangle exceeds the source surface, the rectangle is clipped to the source surface.

+

Pointer to a value that must be null unless the swap chain was created with . pDestRect is a reference to a structure containing the destination rectangle, in window client coordinates. If null, the entire client area is filled. If the rectangle exceeds the destination client area, the rectangle is clipped to the destination client area.

+

Pointer to a destination window whose client area is taken as the target for this presentation. If this value is null, the runtime uses the hDeviceWindow member of for the presentation.

+

Value must be null unless the swap chain was created with . For more information about swap chains, see Flipping Surfaces (Direct3D 9) and . If this value is non-null, the contained region is expressed in back buffer coordinates. The rectangles within the region are the minimal set of pixels that need to be updated. This method takes these rectangles into account when optimizing the presentation by copying only the pixels within the region, or some suitably expanded set of rectangles. This is an aid to optimization only, and the application should not rely on the region being copied exactly. The implementation can choose to copy the whole source rectangle.

+

Possible return values include: or (see D3DERR).

+ +

If necessary, a stretch operation is applied to transfer the pixels within the source rectangle to the destination rectangle in the client area of the target window.

Present will fail, returning , if called between BeginScene and EndScene pairs unless the render target is not the current render target (such as the back buffer you get from creating an additional swap chain). This is a new behavior for Direct3D 9.

+
+ + bb174423 + HRESULT IDirect3DDevice9::Present([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const void* pDirtyRegion) + IDirect3DDevice9::Present +
+ + +

Retrieves a back buffer from the device's swap chain.

+
+

An unsigned integer specifying the swap chain.

+

Index of the back buffer object to return. Back buffers are numbered from 0 to the total number of back buffers minus one. A value of 0 returns the first back buffer, not the front buffer. The front buffer is not accessible through this method. Use to retrieve a copy of the front buffer.

+

Stereo view is not supported in Direct3D 9, so the only valid value for this parameter is .

+

Address of a reference to an interface, representing the returned back buffer surface.

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174379 + HRESULT IDirect3DDevice9::GetBackBuffer([In] unsigned int iSwapChain,[In] unsigned int iBackBuffer,[In] D3DBACKBUFFER_TYPE Type,[Out] IDirect3DSurface9** ppBackBuffer) + IDirect3DDevice9::GetBackBuffer +
+ + +

Returns information describing the raster of the monitor on which the swap chain is presented.

+
+

An unsigned integer specifying the swap chain.

+

Pointer to a structure filled with information about the position or other status of the raster on the monitor driven by this adapter.

+ + bb174402 + HRESULT IDirect3DDevice9::GetRasterStatus([In] unsigned int iSwapChain,[Out] D3DRASTER_STATUS* pRasterStatus) + IDirect3DDevice9::GetRasterStatus +
+ + +

This method allows the use of GDI dialog boxes in full-screen mode applications.

+
+

TRUE to enable GDI dialog boxes, and to disable them.

+

If the method succeeds, the return value is . If the method fails, the return value can be unless all of the following are true.

  • The application specified a back buffer format compatible with GDI, in other words, one of , , or .
  • The application specified no multisampling.
  • The application specified .
  • The application specified .
  • The application did not specify .
  • The application is not between BeginScene and EndScene.
+ +

The GDI dialog boxes must be created as child to the device window. They should also be created within the same thread that created the device because this enables the parent window to manage redrawing the child window.

The method has no effect for windowed mode applications, but this setting will be respected if the application resets the device into full-screen mode. If SetDialogBoxMode succeeds in a windowed mode application, any subsequent reset to full-screen mode will be checked against the restrictions listed above. Also, SetDialogBoxMode causes all back buffers on the swap chain to be discarded, so an application is expected to refresh its content for all back buffers after this call.

+
+ + bb174432 + HRESULT IDirect3DDevice9::SetDialogBoxMode([In] BOOL bEnableDialogs) + IDirect3DDevice9::SetDialogBoxMode +
+ + +

Sets the gamma correction ramp for the implicit swap chain. This method will affect the entire screen (not just the active window if you are running in windowed mode).

+
+

Unsigned integer specifying the swap chain.

+

Indicates whether correction should be applied. Gamma correction results in a more consistent display, but can incur processing overhead and should not be used frequently. Short-duration effects, such as flashing the whole screen red, should not be calibrated, but long-duration gamma changes should be calibrated. One of the following values can be set:

ItemDescription

D3DSGR_CALIBRATE

If a gamma calibrator is installed, the ramp will be modified before being sent to the device to account for the system and monitor response curves. If a calibrator is not installed, the ramp will be passed directly to the device.

D3DSGR_NO_CALIBRATION

No gamma correction is applied. The supplied gamma table is transferred directly to the device.

?

+

Pointer to a structure, representing the gamma correction ramp to be set for the implicit swap chain.

+ +

There is always at least one swap chain (the implicit swap chain) for each device, because Direct3D 9 has one swap chain as a property of the device. The gamma ramp takes effect immediately; there is no wait for a vertical sync.

If the device does not support gamma ramps in the swap chain's current presentation mode (full-screen or windowed), no error return is given. Applications can check the and capability bits in the Caps2 member of the structure to determine the capabilities of the device and whether a calibrator is installed.

For windowed gamma correction presentation, use if the hardware supports the feature. In DirectX 8, SetGammaRamp will set the gamma ramp only on a full-screen mode application. For more information about gamma correction, see Gamma (Direct3D 9).

+
+ + bb174434 + void IDirect3DDevice9::SetGammaRamp([In] unsigned int iSwapChain,[In] unsigned int Flags,[In] const D3DGAMMARAMP* pRamp) + IDirect3DDevice9::SetGammaRamp +
+ + +

Retrieves the gamma correction ramp for the swap chain.

+
+

An unsigned integer specifying the swap chain.

+ + bb174390 + void IDirect3DDevice9::GetGammaRamp([In] unsigned int iSwapChain,[Out] D3DGAMMARAMP* pRamp) + IDirect3DDevice9::GetGammaRamp +
+ + +

Creates a texture resource.

+
+

Width of the top-level of the texture, in pixels. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0, 1 will be taken instead.

+

Height of the top-level of the texture, in pixels. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0, 1 will be taken instead.

+

Number of levels in the texture. If this is zero, Direct3D will generate all texture sublevels down to 1 by 1 pixels for hardware that supports mipmapped textures. Call to see the number of levels generated.

+

Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more constants. It is good practice to match the usage parameter with the behavior flags in .

+

Member of the enumerated type, describing the format of all levels in the texture.

+

Member of the enumerated type, describing the memory class into which the texture should be placed.

+

Pointer to an interface, representing the created texture resource.

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , E_OUTOFMEMORY.

+ +

An application can discover support for Automatic Generation of Mipmaps (Direct3D 9) in a particular format by calling with . If returns , will succeed but it will return a one-level texture.

In Windows Vista CreateTexture can create a texture from a system memory reference allowing the application more flexibility over the use, allocation and deletion of the system memory. For example, an application could pass a GDI system memory bitmap reference and get a Direct3D texture interface around it. Using a system memory reference with CreateTexture has the following restrictions.

  • The pitch of the texture must be equal to the width multiplied by the number of bytes per pixel.
  • Only textures with a single mipmap level are supported. The Levels argument must be 1.
  • The Pool argument must be .
  • The pSharedHandle argument must be a valid reference to a buffer that can hold the system memory point; *pSharedHandle must be a valid reference to system memory with a size in bytes of texture width * texture height * bytes per pixel of the texture format.
+
+ + bb174363 + HRESULT IDirect3DDevice9::CreateTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DTexture9** ppTexture,[In] void** pSharedHandle) + IDirect3DDevice9::CreateTexture +
+ + +

Creates a volume texture resource.

+
+

Width of the top-level of the volume texture, in pixels. This value must be a power of two if the member of is set. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by two results in 0 (zero), 1 will be taken instead. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Height of the top-level of the volume texture, in pixels. This value must be a power of two if the member of is set. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0 (zero), 1 will be taken instead. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Depth of the top-level of the volume texture, in pixels. This value must be a power of two if the member of is set. The pixel dimensions of subsequent levels will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0 (zero), 1 will be taken instead. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Number of levels in the texture. If this is zero, Direct3D will generate all texture sublevels down to 1x1 pixels for hardware that supports mipmapped volume textures. Call to see the number of levels generated.

+

Usage can be 0, which indicates no usage value. If usage is desired, use or . For more information, see .

+

Member of the enumerated type, describing the format of all levels in the volume texture.

+

Member of the enumerated type, describing the memory class into which the volume texture should be placed.

+

Address of a reference to an interface, representing the created volume texture resource.

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , E_OUTOFMEMORY.

+ + bb174367 + HRESULT IDirect3DDevice9::CreateVolumeTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVolumeTexture9** ppVolumeTexture,[In] void** pSharedHandle) + IDirect3DDevice9::CreateVolumeTexture +
+ + +

Creates a cube texture resource.

+
+

Size of the edges of all the top-level faces of the cube texture. The pixel dimensions of subsequent levels of each face will be the truncated value of half of the previous level's pixel dimension (independently). Each dimension clamps at a size of 1 pixel. Thus, if the division by 2 results in 0 (zero), 1 will be taken instead.

+

Number of levels in each face of the cube texture. If this is zero, Direct3D will generate all cube texture sublevels down to 1x1 pixels for each face for hardware that supports mipmapped cube textures. Call to see the number of levels generated.

+

Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more constants. It is good practice to match the usage parameter in CreateCubeTexture with the behavior flags in . For more information, see Remarks.

+

Member of the enumerated type, describing the format of all levels in all faces of the cube texture.

+

Member of the enumerated type, describing the memory class into which the cube texture should be placed.

+

Address of a reference to an interface, representing the created cube texture resource.

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , E_OUTOFMEMORY.

+ +

A mipmap (texture) is a collection of successively downsampled (mipmapped) surfaces. On the other hand, a cube texture (created by ) is a collection of six textures (mipmaps), one for each face. All faces must be present in the cube texture. Also, a cube map surface must be the same pixel size in all three dimensions (x, y, and z).

An application can discover support for Automatic Generation of Mipmaps (Direct3D 9) in a particular format by calling with . If returns , will succeed but it will return a one-level texture.

+
+ + bb174355 + HRESULT IDirect3DDevice9::CreateCubeTexture([In] unsigned int EdgeLength,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DCubeTexture9** ppCubeTexture,[In] void** pSharedHandle) + IDirect3DDevice9::CreateCubeTexture +
+ + +

Creates a vertex buffer.

+
+

Size of the vertex buffer, in bytes. For FVF vertex buffers, Length must be large enough to contain at least one vertex, but it need not be a multiple of the vertex size. Length is not validated for non-FVF buffers. See Remarks.

+

Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more constants. It is good practice to match the usage parameter in CreateVertexBuffer with the behavior flags in . For more information, see Remarks.

+

Combination of , a usage specifier that describes the vertex format of the vertices in this buffer. If this parameter is set to a valid FVF code, the created vertex buffer is an FVF vertex buffer (see Remarks). Otherwise, if this parameter is set to zero, the vertex buffer is a non-FVF vertex buffer.

+

Member of the enumerated type, describing a valid memory class into which to place the resource. Do not set to .

+

Address of a reference to an interface, representing the created vertex buffer resource.

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , E_OUTOFMEMORY.

+ +

A vertex buffer can be used with either hardware or software vertex processing. This is determined by how the device and the vertex buffer are created.

When a device is created, CreateDevice uses the behavior flag to determine whether to process vertices in hardware or software. There are three possibilities:

  • Process vertices in hardware by setting .
  • Process vertices in software by setting .
  • Process vertices in either hardware or software by setting .

Mixed-mode devices might need to switch between software and hardware processing (using ) after the device is created.

When a vertex buffer is created, CreateVertexBuffer uses the usage parameter to decide whether to process vertices in hardware or software.

  • If CreateDevice uses , CreateVertexBuffer must use 0.
  • If CreateDevice uses , CreateVertexBuffer must use either 0 or . For either value, vertices will be processed in software.
  • If CreateDevice uses , CreateVertexBuffer can use either 0 or .

To use a vertex buffer with a mixed mode device, create a single vertex buffer which can be used for both hardware or software processing. Use to set the current vertex buffer and use , if necessary, to change the device behavior to match. It is recommended that the vertex buffer usage matches the device behavior. Note that a vertex buffer created for software processing cannot be located in video memory.

The interface supports rendering of primitives using vertex data stored in vertex buffer objects. Vertex buffers are created from the , and are usable only with the object from which they are created.

When set to a nonzero value, which must be a valid FVF code, the FVF parameter indicates that the buffer content is to be characterized by an FVF code. A vertex buffer that is created with an FVF code is referred to as an FVF vertex buffer. For more information, see FVF Vertex Buffers (Direct3D 9).

Non-FVF buffers can be used to interleave data during multipass rendering or multitexture rendering in a single pass. To do this, one buffer contains geometry data and the others contain texture coordinates for each texture to be rendered. When rendering, the buffer containing the geometry data is interleaved with each of the buffers containing the texture coordinates. If FVF buffers were used instead, each of them would need to contain identical geometry data in addition to the texture coordinate data specific to each texture rendered. This would result in either a speed or memory penalty, depending on the strategy used. For more information about texture coordinates, see Texture Coordinates (Direct3D 9).

+
+ + bb174364 + HRESULT IDirect3DDevice9::CreateVertexBuffer([In] unsigned int Length,[In] D3DUSAGE Usage,[In] D3DFVF FVF,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVertexBuffer9** ppVertexBuffer,[In] void** pSharedHandle) + IDirect3DDevice9::CreateVertexBuffer +
+ + +

Creates an index buffer.

+
+

Size of the index buffer, in bytes.

+

Usage can be 0, which indicates no usage value. However, if usage is desired, use a combination of one or more constants. It is good practice to match the usage parameter in CreateIndexBuffer with the behavior flags in . For more information, see Remarks.

+

Member of the enumerated type, describing the format of the index buffer. For more information, see Remarks. The valid settings are the following:

ItemDescription

Indices are 16 bits each.

Indices are 32 bits each.

?

+

Member of the enumerated type, describing a valid memory class into which to place the resource.

+

Address of a reference to an interface, representing the created index buffer resource.

+

This parameter can be used in Direct3D?9 for Windows?Vista to share resources; set it to null to not share a resource. This parameter is not used in Direct3D?9 for operating systems earlier than Windows?Vista; set it to null.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

Index buffers are memory resources used to hold indices, they are similar to both surfaces and vertex buffers. The use of index buffers enables Direct3D to avoid unnecessary data copying and to place the buffer in the optimal memory type for the expected usage.

To use index buffers, create an index buffer, lock it, fill it with indices, unlock it, pass it to , set up the vertices, set up the vertex shader, and call for rendering.

The MaxVertexIndex member of the structure indicates the types of index buffers that are valid for rendering.

+
+ + bb174357 + HRESULT IDirect3DDevice9::CreateIndexBuffer([In] unsigned int Length,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DIndexBuffer9** ppIndexBuffer,[In] void** pSharedHandle) + IDirect3DDevice9::CreateIndexBuffer +
+ + +

Creates a render-target surface.

+
+

Width of the render-target surface, in pixels.

+

Height of the render-target surface, in pixels.

+

Member of the enumerated type, describing the format of the render target.

+

Member of the enumerated type, which describes the multisampling buffer type. This parameter specifies the antialiasing type for this render target. When this surface is passed to , its multisample type must be the same as that of the depth-stencil set by .

+

Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by . Passing a larger value returns the error, . The MultisampleQuality values of paired render targets, depth stencil surfaces, and the multisample type must all match.

+

Render targets are not lockable unless the application specifies TRUE for Lockable.

Note that lockable render targets reduce performance on some graphics hardware. The readback performance (moving data from video memory to system memory) depends on the type of hardware used (AGP vs. PCI Express) and is usually far lower than upload performance (moving data from system to video memory). If you need read access to render targets, use GetRenderTargetData instead of lockable render targets.

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

Address of a reference to an interface.

+ +

Render-target surfaces are placed in the memory class.

The creation of lockable, multisampled render targets is not supported.

+
+ + bb174361 + HRESULT IDirect3DDevice9::CreateRenderTarget([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + IDirect3DDevice9::CreateRenderTarget +
+ + +

Creates a depth-stencil resource.

+
+

Width of the depth-stencil surface, in pixels.

+

Height of the depth-stencil surface, in pixels.

+

Member of the enumerated type, describing the format of the depth-stencil surface. This value must be one of the enumerated depth-stencil formats for this device.

+

Member of the enumerated type, describing the multisampling buffer type. This value must be one of the allowed multisample types. When this surface is passed to , its multisample type must be the same as that of the render target set by .

+

Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by . Passing a larger value returns the error . The MultisampleQuality values of paired render targets, depth stencil surfaces, and the MultiSample type must all match.

+

Set this flag to TRUE to enable z-buffer discarding, and otherwise. If this flag is set, the contents of the depth stencil buffer will be invalid after calling either or with a different depth surface.

This flag has the same behavior as the constant, , in .

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

Address of a reference to an interface, representing the created depth-stencil surface resource.

+ +

The memory class of the depth-stencil buffer is always .

+
+ + bb174356 + HRESULT IDirect3DDevice9::CreateDepthStencilSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + IDirect3DDevice9::CreateDepthStencilSurface +
+ + +

Copies rectangular subsets of pixels from one surface to another.

+
+

Pointer to an interface, representing the source surface. This parameter must point to a different surface than pDestinationSurface.

+

Pointer to a rectangle on the source surface. Specifying null for this parameter causes the entire surface to be copied.

+

Pointer to an interface, representing the destination surface.

+

Pointer to the upper left corner of the destination rectangle. Specifying null for this parameter causes the entire surface to be copied.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: .

+ +

This method is similar to CopyRects in DirectX 8.

This function has the following restrictions.

  • The source surface must have been created with .
  • The destination surface must have been created with .
  • Neither surface can be locked or holding an outstanding device context.
  • Neither surface can be created with multisampling. The only valid flag for both surfaces is .
  • The surface format cannot be a depth stencil format.
  • The source and dest rects must fit within the surface.
  • No stretching or shrinking is allowed (the rects must be the same size).
  • The source format must match the dest format.

The following table shows the supported combinations.

Dest formats
TextureRT textureRTOff-screen plain
Src formatsTextureYesYesYes*Yes
RT textureNoNoNoNo
RTNoNoNoNo
Off-screen plainYesYesYesYes

?

* If the driver does not support the requested copy, it will be emulated using lock and copy.

If the application needs to copy data from a render target to a surface, it can use GetRenderTargetData.

+
+ + bb205857 + HRESULT IDirect3DDevice9::UpdateSurface([In] IDirect3DSurface9* pSourceSurface,[In, Optional] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestinationSurface,[In, Optional] const POINT* pDestPoint) + IDirect3DDevice9::UpdateSurface +
+ + +

Updates the dirty portions of a texture.

+
+

Pointer to an interface, representing the source texture. The source texture must be in system memory ().

+

Pointer to an interface, representing the destination texture. The destination texture must be in the memory pool.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

You can dirty a portion of a texture by locking it, or by calling one of the following methods.

retrieves the dirty portions of the texture by calculating what has been accumulated since the last update operation.

For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) rectangle or box is also dirty. Dirty regions are automatically recorded when LockRect or is called without or . Also, the destination surface of is marked dirty.

This method fails if the textures are of different types, if their bottom-level buffers are of different sizes, or if their matching levels do not match. For example, consider a six-level source texture with the following dimensions.

 32x16, 16x8, 8x4, 4x2, 2x1, 1x1	
+            

This six-level source texture could be the source for the following one-level destination.

 1x1	
+            

For the following two-level destination.

 2x1, 1x1	
+            

Or, for the following three-level destination.

 4x2, 2x1, 1x1	
+            

In addition, this method will fail if the textures are of different formats. If the destination texture has fewer levels than the source, only the matching levels are copied. If the source texture has fewer levels than the destination, the method will fail.

If the source texture has dirty regions, the copy can be optimized by restricting the copy to only those regions. It is not guaranteed that only those bytes marked dirty will be copied.

Here are the possibilities for source and destination surface combinations:

  • If pSourceTexture is a non-autogenerated mipmap and pDestinationTexture is an autogenerated mipmap, only the topmost matching level is updated, and the destination sublevels are regenerated. All other source sublevels are ignored.
  • If both pSourceTexture and pDestinationTexture are autogenerated mipmaps, only the topmost matching level is updated. The sublevels from the source are ignored and the destination sublevels are regenerated.
  • If pSourceTexture is an autogenerated mipmap and pDestinationTexture a non-autogenerated mipmap, UpdateTexture will fail.
+
+ + bb205858 + HRESULT IDirect3DDevice9::UpdateTexture([In] IDirect3DBaseTexture9* pSourceTexture,[In] IDirect3DBaseTexture9* pDestinationTexture) + IDirect3DDevice9::UpdateTexture +
+ + +

Copies the render-target data from device memory to system memory.

+
+

Pointer to an object, representing a render target.

+

Pointer to an object, representing a destination surface.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , .

+ +

The destination surface must be either an off-screen plain surface or a level of a texture (mipmap or cube texture) created with .

The source surface must be a regular render target or a level of a render-target texture (mipmap or cube texture) created with POOL_DEFAULT.

This method will fail if:

  • The render target is multisampled.
  • The source render target is a different size than the destination surface.
  • The source render target and destination surface formats do not match.
+
+ + bb174405 + HRESULT IDirect3DDevice9::GetRenderTargetData([In] IDirect3DSurface9* pRenderTarget,[In] IDirect3DSurface9* pDestSurface) + IDirect3DDevice9::GetRenderTargetData +
+ + +

Generates a copy of the device's front buffer and places that copy in a system memory buffer provided by the application.

+
+

An unsigned integer specifying the swap chain.

+

Pointer to an interface that will receive a copy of the contents of the front buffer. The data is returned in successive rows with no intervening space, starting from the vertically highest row on the device's output to the lowest.

For windowed mode, the size of the destination surface should be the size of the desktop. For full-screen mode, the size of the destination surface should be the screen size.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , ,

+ +

The buffer pointed to by pDestSurface will be filled with a representation of the front buffer, converted to the standard 32 bits per pixel format .

This method is the only way to capture an antialiased screen shot.

This function is very slow, by design, and should not be used in any performance-critical path.

For more information, see Lost Devices and Retrieved Data.

+
+ + bb174388 + HRESULT IDirect3DDevice9::GetFrontBufferData([In] unsigned int iSwapChain,[In] IDirect3DSurface9* pDestSurface) + IDirect3DDevice9::GetFrontBufferData +
+ + +

Copy the contents of the source rectangle to the destination rectangle. The source rectangle can be stretched and filtered by the copy. This function is often used to change the aspect ratio of a video stream.

+
+

Pointer to the source surface. See .

+

Pointer to the source rectangle. A null for this parameter causes the entire source surface to be used.

+

Pointer to the destination surface. See .

+

Pointer to the destination rectangle. A null for this parameter causes the entire destination surface to be used.

+

Filter type. Allowable values are , , or . For more information, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ +

StretchRect Restrictions

  • Driver support varies. See the section on driver support (below) to see which drivers support which source and destination formats.
  • The source and destination surfaces must be created in the default memory pool.
  • If filtering is specified, you must set the appropriate filter caps (see StretchRectFilterCaps in ).
  • Stretching is not supported between source and destination rectangles on the same surface.
  • Stretching is not supported if the destination surface is an off-screen plain surface but the source is not.
  • You many not stretch between source and destination rectangles if either surface is in a compressed format (see Using Compressed Textures (Direct3D 9)).
  • Stretching supports color-space conversion from YUV to high-precision RGBA only. Since color conversion support is not supported by software emulation, use to test the hardware for color conversion support.
  • If the source or destination surface is a texture surface (or a cube texture surface), you must use a Direct3D 9 driver that supports (see ).

Additional Restrictions for Depth and Stencil Surfaces

  • The source and destination surfaces must be plain depth stencil surfaces (not textures) (see ).
  • Neither of the surfaces can be discardable.
  • The entire surface must be copied (that is: sub-rectangle copies are not allowed).
  • Format conversion, stretching, and shrinking are not supported.
  • StretchRect cannot be called inside of a BeginScene/EndScene pair.

Using StretchRect to downsample a Multisample Rendertarget

You can use StretchRect to copy from one rendertarget to another. If the source rendertarget is multisampled, this results in downsampling the source rendertarget. For instance you could:

  • Create a multisampled rendertarget.
  • Create a second rendertarget of the same size, that is not multisampled.
  • Copy (using StretchRect the multisample rendertarget to the second rendertarget.

Note that use of the extra surface involved in using StretchRect to downsample a Multisample Rendertarget will result in a performance hit.

Driver Support

There are many restrictions as to which surface combinations are valid for StretchRect. Factors include whether the driver is a Direct3D 9 driver or older, and whether the operation will result in stretching/shrinking. Since applications are not expected to recognize if the driver is a Direct3D 9 driver or not, the runtime will automatically set a new cap, cap (see ), for Direct3D 9-level drivers and above.

DirectX 8 Driver (no stretching)
Dest formats
TextureRT textureRTOff-screen plain
Src formatsTextureNoNoNoNo
RT textureNoYesYesNo
RTNoYesYesNo
Off-screen plainYesYesYesYes

?

DirectX 8 Driver (stretching)
Dest formats
TextureRT textureRTOff-screen plain
Src formatsTextureNoNoNoNo
RT textureNoNoNoNo
RTNoYesYesNo
Off-screen plainNoYesYesNo

?

Direct3D 9 Driver (no stretching)
Dest formats
TextureRT textureRTOff-screen plain
Src formatsTextureNoYesYesNo
RT textureNoYesYesNo
RTNoYesYesNo
Off-screen plainNoYesYesYes

?

Direct3D 9 Driver (stretching)
Dest formats
TextureRT textureRTOff-screen plain
Src formatsTextureNoYesYesNo
RT textureNoYesYesNo
RTNoYesYesNo
Off-screen plainNoYesYesNo

?

+
+ + bb174471 + HRESULT IDirect3DDevice9::StretchRect([In] IDirect3DSurface9* pSourceSurface,[In, Optional] const RECT* pSourceRect,[In] IDirect3DSurface9* pDestSurface,[In, Optional] const RECT* pDestRect,[In] D3DTEXTUREFILTERTYPE Filter) + IDirect3DDevice9::StretchRect +
+ + +

Allows an application to fill a rectangular area of a surface with a specified color.

+
+

Pointer to the surface to be filled.

+

Pointer to the source rectangle. Using null means that the entire surface will be filled.

+

Color used for filling.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method can only be applied to a render target, a render-target texture surface, or an off-screen plain surface with a pool type of .

will work with all formats. However, when using a reference or software device, the only formats supported are , , , , , , , , , , , , , , and .

When using a DirectX 7 or DirectX 8.x driver, the only YUV formats supported are and .

+
+ + bb174353 + HRESULT IDirect3DDevice9::ColorFill([In] IDirect3DSurface9* pSurface,[In, Optional] const RECT* pRect,[In] D3DCOLOR color) + IDirect3DDevice9::ColorFill +
+ + +

Create an off-screen surface.

+
+

Width of the surface.

+

Height of the surface.

+

Format of the surface. See .

+

Surface pool type. See .

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

Pointer to the interface created.

+ +

will return a surface that has identical characteristics to a surface created by the DirectX 8.x method CreateImageSurface.

is the appropriate pool for use with the and .

is not allowed when creating an offscreen plain surface. For more information about memory pools, see .

Off-screen plain surfaces are always lockable, regardless of their pool types.

+
+ + bb174358 + HRESULT IDirect3DDevice9::CreateOffscreenPlainSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + IDirect3DDevice9::CreateOffscreenPlainSurface +
+ + +

Sets a new color buffer for the device.

+
+

Index of the render target. See Remarks.

+

Pointer to a new color buffer. If null, the color buffer for the corresponding RenderTargetIndex is disabled. Devices always must be associated with a color buffer. The new render-target surface must have at least specified.

+

If the method succeeds, the return value is . This method will return if either:

  • pRenderTarget = null and RenderTargetIndex = 0
  • pRenderTarget is != null and the render target is invalid.
+ +

The device can support multiple render targets. The number of render targets supported by a device is contained in the NumSimultaneousRTs member of . See Multiple Render Targets (Direct3D 9).

Setting a new render target will cause the viewport (see Viewports and Clipping (Direct3D 9)) to be set to the full size of the new render target.

Some hardware tests the compatibility of the depth stencil buffer with the color buffer. If this is done, it is only done in a debug build.

Restrictions for using this method include the following:

  • The multisample type must be the same for the render target and the depth stencil surface.
  • The formats must be compatible for the render target and the depth stencil surface. See .
  • The size of the depth stencil surface must be greater than or equal to the size of the render target.

These restrictions are validated only when using the debug runtime when any of the Draw methods are called.

Cube textures differ from other surfaces in that they are collections of surfaces. To call with a cube texture, you must select an individual face using and pass the resulting surface to .

+
+ + bb174455 + HRESULT IDirect3DDevice9::SetRenderTarget([In] unsigned int RenderTargetIndex,[In] IDirect3DSurface9* pRenderTarget) + IDirect3DDevice9::SetRenderTarget +
+ + +

Retrieves a render-target surface.

+
+

Index of the render target. See Remarks.

+

Address of a reference to an interface, representing the returned render-target surface for this device.

+ +

Typically, methods that return state will not work on a device that is created using . This method however, will work even on a pure device because it returns an interface.

The device can now support multiple render targets. The number of render targets supported by a device is contained in the NumSimultaneousRTs member of . See Multiple Render Targets (Direct3D 9).

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using the interface results in a memory leak.

+
+ + bb174404 + HRESULT IDirect3DDevice9::GetRenderTarget([In] unsigned int RenderTargetIndex,[Out] IDirect3DSurface9** ppRenderTarget) + IDirect3DDevice9::GetRenderTarget +
+ + +

Sets the depth stencil surface.

+
+

Address of a reference to an interface representing the depth stencil surface. Setting this to null disables the depth stencil operation.

+

If the method succeeds, the return value is . If pZStencilSurface is other than null, the return value is when the stencil surface is invalid.

+ +

Restrictions for using this method include the following:

  • The multisample type must be the same for the render target and the depth stencil surface.
  • The formats must be compatible for the render target and the depth stencil surface. See .
  • The size of the depth stencil surface must be greater than or equal to the size of the render target.

These restrictions are validated only when using the debug runtime when any of the Draw methods are called.

Cube textures differ from other surfaces in that they are collections of surfaces. To call with a cube texture, you must select an individual face using and pass the resulting surface to .

+
+ + bb174431 + HRESULT IDirect3DDevice9::SetDepthStencilSurface([In] IDirect3DSurface9* pNewZStencil) + IDirect3DDevice9::SetDepthStencilSurface +
+ + +

Gets the depth-stencil surface owned by the Direct3DDevice object.

+
+

Address of a reference to an interface, representing the returned depth-stencil surface.

+

If the method succeeds, the return value is .If the device doesn't have a depth stencil buffer associated with it, the return value will be . Otherwise, if the method fails, the return value can be .

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174384 + HRESULT IDirect3DDevice9::GetDepthStencilSurface([Out] IDirect3DSurface9** ppZStencilSurface) + IDirect3DDevice9::GetDepthStencilSurface +
+ + +

Begins a scene.

+
+

If the method succeeds, the return value is . The method will fail with if is called while already in a / pair. This happens only when is called twice without first calling .

+ +

Applications must call before performing any rendering and must call when rendering is complete and before calling again.

If fails, the device was unable to begin the scene, and there is no need to call . In fact, calls to will fail if the previous failed. This applies to any application that creates multiple swap chains.

There should be one / pair between any successive calls to present (either or ). should be called once before any rendering is performed, and should be called once after all rendering for a frame has been submitted to the runtime. Multiple non-nested / pairs between calls to present are legal, but having more than one pair may incur a performance hit. To enable maximal parallelism between the CPU and the graphics accelerator, it is advantageous to call as far ahead of calling present as possible.

+
+ + bb174350 + HRESULT IDirect3DDevice9::BeginScene() + IDirect3DDevice9::BeginScene +
+ + +

Ends a scene that was begun by calling .

+
+

If the method succeeds, the return value is . The method will fail with if is called while already in a / pair. This happens only when is called twice without first calling .

+ +

When this method succeeds, the scene has been queued up for rendering by the driver. This is not a synchronous method, so the scene is not guaranteed to have completed rendering when this method returns.

Applications must call before performing any rendering and must call when rendering is complete and before calling again.

If fails, the device was unable to begin the scene, and there is no need to call . In fact, calls to will fail if the previous failed. This applies to any application that creates multiple swap chains.

There should be at most one / pair between any successive calls to present (either or ). should be called once before any rendering is performed, and should be called once after all rendering for a frame has been submitted to the runtime. To enable maximal parallelism between the CPU and the graphics accelerator, it is advantageous to call as far ahead of calling present as possible.

+
+ + bb174375 + HRESULT IDirect3DDevice9::EndScene() + IDirect3DDevice9::EndScene +
+ + +

Clears one or more surfaces such as a render target, multiple render targets, a stencil buffer, and a depth buffer.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ +

Use this method to clear a surface including: a render target, all render targets in an MRT, a stencil buffer, or a depth buffer. Flags determines how many surfaces are cleared. Use pRects to clear a subset of a surface defined by an array of rectangles.

will fail if you:

  • Try to clear either the depth buffer or the stencil buffer of a render target that does not have an attached depth buffer.
  • Try to clear the stencil buffer when the depth buffer does not contain stencil data.
+
+ + bb174352 + HRESULT IDirect3DDevice9::Clear([In] unsigned int Count,[In, Buffer, Optional] const D3DRECT* pRects,[In] D3DCLEAR Flags,[In] D3DCOLOR Color,[In] float Z,[In] unsigned int Stencil) + IDirect3DDevice9::Clear +
+ + +

Sets a single device transformation-related state.

+
+

Device-state variable that is being modified. This parameter can be any member of the enumerated type, or the D3DTS_WORLDMATRIX macro.

+

Pointer to a structure that modifies the current transformation.

+

If the method succeeds, the return value is . is returned if one of the arguments is invalid.

+ + bb174463 + HRESULT IDirect3DDevice9::SetTransform([In] int State,[In] const D3DMATRIX* pMatrix) + IDirect3DDevice9::SetTransform +
+ + +

Retrieves a matrix describing a transformation state.

+
+

Device state variable that is being modified. This parameter can be any member of the enumerated type, or the D3DTS_WORLDMATRIX macro.

+

Pointer to a structure, describing the returned transformation state.

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other flag values in .

+
+ + bb174414 + HRESULT IDirect3DDevice9::GetTransform([In] D3DTRANSFORMSTATETYPE State,[Out] D3DMATRIX* pMatrix) + IDirect3DDevice9::GetTransform +
+ + +

Multiplies a device's world, view, or projection matrices by a specified matrix.

+
+

Member of the enumerated type, or the D3DTS_WORLDMATRIX macro that identifies which device matrix is to be modified. The most common setting, D3DTS_WORLDMATRIX(0), modifies the world matrix, but you can specify that the method modify the view or projection matrices, if needed.

+

Pointer to a structure that modifies the current transformation.

+

If the method succeeds, the return value is . if one of the arguments is invalid.

+ +

The multiplication order is pMatrix times State.

An application might use the method to work with hierarchies of transformations. For example, the geometry and transformations describing an arm might be arranged in the following hierarchy.

 shoulder_transformation upper_arm geometry elbow transformation lower_arm geometry wrist transformation hand geometry	
+            

An application might use the following series of calls to render this hierarchy. Not all the parameters are shown in this pseudocode.

 (D3DTS_WORLDMATRIX(0),  shoulder_transform)	
+            (upper_arm)	
+            (D3DTS_WORLDMATRIX(0),  elbow_transform)	
+            (lower_arm)	
+            (D3DTS_WORLDMATRIX(0),  wrist_transform)	
+            (hand)
+
+ + bb174422 + HRESULT IDirect3DDevice9::MultiplyTransform([In] D3DTRANSFORMSTATETYPE arg0,[In] const D3DMATRIX* arg1) + IDirect3DDevice9::MultiplyTransform +
+ + +

Sets the viewport parameters for the device.

+
+

Pointer to a structure, specifying the viewport parameters to set.

+

If the method succeeds, the return value is . If the method fails, it will return . This will happen if pViewport is invalid, or if pViewport describes a region that cannot exist within the render target surface.

+ +

Direct3D sets the following default values for the viewport.

  vp;	
+            vp.X      = 0;	
+            vp.Y      = 0;	
+            vp.Width  = RenderTarget.Width;	
+            vp.Height = RenderTarget.Height;	
+            vp.MinZ   = 0.0f;	
+            vp.MaxZ   = 1.0f;	
+            

can be used to draw on part of the screen. Make sure to call it before any geometry is drawn so the viewport settings will take effect.

To draw multiple views within a scene, repeat the and draw geometry sequence for each view.

+
+ + bb174469 + HRESULT IDirect3DDevice9::SetViewport([In] const D3DVIEWPORT9* pViewport) + IDirect3DDevice9::SetViewport +
+ + +

Retrieves the viewport parameters currently set for the device.

+
+

Pointer to a structure, representing the returned viewport parameters.

+

If the method succeeds, the return value is . is returned if the pViewport parameter is invalid.

+ +

Typically, methods that return state will not work on a device that is created using . This method however, will work even on a pure device.

+
+ + bb174420 + HRESULT IDirect3DDevice9::GetViewport([Out] D3DVIEWPORT9* pViewport) + IDirect3DDevice9::GetViewport +
+ + +

Sets the material properties for the device.

+
+

Pointer to a structure, describing the material properties to set.

+

If the method succeeds, the return value is . if the pMaterial parameter is invalid.

+ + bb174437 + HRESULT IDirect3DDevice9::SetMaterial([In] const D3DMATERIAL9* pMaterial) + IDirect3DDevice9::SetMaterial +
+ + +

Retrieves the current material properties for the device.

+
+

Pointer to a structure to fill with the currently set material properties.

+

If the method succeeds, the return value is . if the pMaterial parameter is invalid.

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other values in .

+
+ + bb174394 + HRESULT IDirect3DDevice9::GetMaterial([Out] D3DMATERIAL9* pMaterial) + IDirect3DDevice9::GetMaterial +
+ + +

Assigns a set of lighting properties for this device.

+
+

Zero-based index of the set of lighting properties to set. If a set of lighting properties exists at this index, it is overwritten by the new properties specified in pLight.

+

Pointer to a structure, containing the lighting parameters to set.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Set light properties by preparing a structure and then calling the method. The method accepts the index at which the device should place the set of light properties to its internal list of light properties, and the address of a prepared structure that defines those properties. You can call with new information as needed to update the light's illumination properties.

The system allocates memory to accommodate a set of lighting properties each time you call the method with an index that has never been assigned properties. Applications can set a number of lights, with only a subset of the assigned lights enabled at a time. Check the MaxActiveLights member of the structure when you retrieve device capabilities to determine the maximum number of active lights supported by that device. If you no longer need a light, you can disable it or overwrite it with a new set of light properties.

The following example prepares and sets properties for a white point-light whose emitted light will not attenuate over distance.

 // Assume d3dDevice is a valid reference to an  interface.	
+             d3dLight;	
+               hr; // Initialize the structure.	
+            ZeroMemory(&d3dLight, sizeof(d3dLight)); // Set up a white point light.	
+            d3dLight.Type = ;	
+            d3dLight.Diffuse.r  = 1.0f;	
+            d3dLight.Diffuse.g  = 1.0f;	
+            d3dLight.Diffuse.b  = 1.0f;	
+            d3dLight.Ambient.r  = 1.0f;	
+            d3dLight.Ambient.g  = 1.0f;	
+            d3dLight.Ambient.b  = 1.0f;	
+            d3dLight.Specular.r = 1.0f;	
+            d3dLight.Specular.g = 1.0f;	
+            d3dLight.Specular.b = 1.0f; // Position it high in the scene and behind the user.	
+            // Remember, these coordinates are in world space, so	
+            // the user could be anywhere in world space, too. 	
+            // For the purposes of this example, assume the user	
+            // is at the origin of world space.	
+            d3dLight.Position.x = 0.0f;	
+            d3dLight.Position.y = 1000.0f;	
+            d3dLight.Position.z = -100.0f; // Don't attenuate.	
+            d3dLight.Attenuation0 = 1.0f; 	
+            d3dLight.Range        = 1000.0f; // Set the property information for the first light.	
+            hr = d3dDevice->SetLight(0, &d3dLight);	
+            if (SUCCEEDED(hr)) // Handle Success	
+            else // Handle failure	
+            

Enable a light source by calling the method for the device.

+
+ + bb174436 + HRESULT IDirect3DDevice9::SetLight([In] unsigned int Index,[In] const D3DLIGHT9* arg1) + IDirect3DDevice9::SetLight +
+ + +

Retrieves a set of lighting properties that this device uses.

+
+

Zero-based index of the lighting property set to retrieve. This method will fail if a lighting property has not been set for this index by calling the method.

+

Pointer to a structure that is filled with the retrieved lighting-parameter set.

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other values in .

Retrieve all the properties for an existing light source by calling the method for the device. When calling the method, pass the zero-based index of the light source for which the properties will be retrieved as the first parameter, and supply the address of a structure as the second parameter. The device fills the structure to describe the lighting properties it uses for the light source at that index.

 // Assume d3dDevice is a valid reference to an  interface.	
+             hr;	
+            D3DLight9 light; // Get the property information for the first light.	
+            hr = pd3dDevice->GetLight(0, &light);	
+            if (SUCCEEDED(hr)) // Handle Success	
+            else // Handle failure	
+            

If you supply an index outside the range of the light sources assigned in the device, the method fails, returning .

When you assign a set of light properties for a light source in a scene, the light source can be activated by calling the method for the device. New light sources are disabled by default. The method accepts two parameters. Set the first parameter to the zero-based index of the light source to be affected by the method, and set the second parameter to TRUE to enable the light or to disable it. The following code example illustrates the use of this method by enabling the first light source in the device's list of light source properties.

 // Assume d3dDevice is a valid reference to an  interface.	
+             hr; hr = pd3dDevice->LightEnable(0, TRUE);	
+            if (SUCCEEDED(hr)) // Handle Success	
+            else // Handle failure	
+            

Check the MaxActiveLights member of the structure when you retrieve device capabilities to determine the maximum number of active lights supported by that device.

If you enable or disable a light that has no properties that are set with , the method creates a light source with the properties listed in following table and enables or disables it.

+
+ + bb174392 + HRESULT IDirect3DDevice9::GetLight([In] unsigned int Index,[Out] D3DLIGHT9* arg1) + IDirect3DDevice9::GetLight +
+ + +

Enables or disables a set of lighting parameters within a device.

+
+

Zero-based index of the set of lighting parameters that are the target of this method.

+

Value that indicates if the set of lighting parameters are being enabled or disabled. Set this parameter to TRUE to enable lighting with the parameters at the specified index, or to disable it.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If a value for LightIndex is outside the range of the light property sets assigned within the device, the method creates a light source represented by a structure with the following properties and sets its enabled state to the value specified in bEnable.

MemberDefault
Type
Diffuse (R:1, G:1, B:1, A:0)
Specular (R:0, G:0, B:0, A:0)
Ambient (R:0, G:0, B:0, A:0)
Position (0, 0, 0)
Direction (0, 0, 1)
Range 0
Falloff 0
Attenuation0 0
Attenuation1 0
Attenuation2 0
Theta 0
Phi 0

?

+
+ + bb174421 + HRESULT IDirect3DDevice9::LightEnable([In] unsigned int Index,[In] BOOL Enable) + IDirect3DDevice9::LightEnable +
+ + +

Retrieves the activity status - enabled or disabled - for a set of lighting parameters within a device.

+
+

Zero-based index of the set of lighting parameters that are the target of this method.

+

Pointer to a variable to fill with the status of the specified lighting parameters. After the call, a nonzero value at this address indicates that the specified lighting parameters are enabled; a value of 0 indicates that they are disabled.

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other values in .

+
+ + bb174393 + HRESULT IDirect3DDevice9::GetLightEnable([In] unsigned int Index,[Out] BOOL* pEnable) + IDirect3DDevice9::GetLightEnable +
+ + +

Sets the coefficients of a user-defined clipping plane for the device.

+
+

Index of the clipping plane for which the plane equation coefficients are to be set.

+

Pointer to an address of a four-element array of values that represent the clipping plane coefficients to be set, in the form of the general plane equation. See Remarks.

+

If the method succeeds, the return value is . If the method fails, the return value is . This error indicates that the value in Index exceeds the maximum clipping plane index supported by the device or that the array at pPlane is not large enough to contain four floating-point values.

+ +

The coefficients that this method sets take the form of the general plane equation. If the values in the array at pPlane were labeled A, B, C, and D in the order that they appear in the array, they would fit into the general plane equation so that Ax + By + Cz + Dw = 0. A point with homogeneous coordinates (x, y, z, w) is visible in the half space of the plane if Ax + By + Cz + Dw >= 0. Points that exist behind the clipping plane are clipped from the scene.

When the fixed function pipeline is used the plane equations are assumed to be in world space. When the programmable pipeline is used the plane equations are assumed to be in the clipping space (the same space as output vertices).

This method does not enable the clipping plane equation being set. To enable a clipping plane, set the corresponding bit in the DWORD value applied to the render state.

+
+ + bb174426 + HRESULT IDirect3DDevice9::SetClipPlane([In] unsigned int Index,[In] const SHARPDX_VECTOR4* pPlane) + IDirect3DDevice9::SetClipPlane +
+ + +

Retrieves the coefficients of a user-defined clipping plane for the device.

+
+

Index of the clipping plane for which the plane equation coefficients are retrieved.

+

Pointer to a four-element array of values that represent the coefficients of the clipping plane in the form of the general plane equation. See Remarks.

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other values in ."

The coefficients that this method reports take the form of the general plane equation. If the values in the array at pPlane were labeled A, B, C, and D in the order that they appear in the array, they would fit into the general plane equation so that Ax + By + Cz + Dw = 0. A point with homogeneous coordinates (x, y, z, w) is visible in the half space of the plane if Ax + By + Cz + Dw >= 0. Points that exist on or behind the clipping plane are clipped from the scene.

The plane equation used by this method exists in world space and is set by a previous call to the method.

+
+ + bb174380 + HRESULT IDirect3DDevice9::GetClipPlane([In] unsigned int Index,[Out] float* pPlane) + IDirect3DDevice9::GetClipPlane +
+ + +

Sets a single device render-state parameter.

+
+

Device state variable that is being modified. This parameter can be any member of the enumerated type.

+

New value for the device render state to be set. The meaning of this parameter is dependent on the value specified for State. For example, if State were , the second parameter would be one member of the enumerated type.

+

If the method succeeds, the return value is . is returned if one of the arguments is invalid.

+ + bb174454 + HRESULT IDirect3DDevice9::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value) + IDirect3DDevice9::SetRenderState +
+ + +

Retrieves a render-state value for a device.

+
+

Device state variable that is being queried. This parameter can be any member of the enumerated type.

+

Pointer to a variable that receives the value of the queried render state variable when the method returns.

+

If the method succeeds, the return value is . if one of the arguments is invalid.

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other values in ."

+
+ + bb174403 + HRESULT IDirect3DDevice9::GetRenderState([In] D3DRENDERSTATETYPE State,[In] void* pValue) + IDirect3DDevice9::GetRenderState +
+ + +

Creates a new state block that contains the values for all device states, vertex-related states, or pixel-related states.

+
+

Type of state data that the method should capture. This parameter can be set to a value defined in the enumerated type.

+

Pointer to a state block interface. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , E_OUTOFMEMORY.

+ +

Vertex-related device states typically refer to those states that affect how the system processes vertices. Pixel-related states generally refer to device states that affect how the system processes pixel or depth-buffer data during rasterization. Some states are contained in both groups.

Differences between Direct3D 9 and Direct3D 10:

In Direct3D 9, a state block contains state data, for the states it was requested to capture, when the object is created. To change the value of the state block, call or /. There is no state saved when a state block object is created in Direct3D 10.

?

+
+ + bb174362 + HRESULT IDirect3DDevice9::CreateStateBlock([In] D3DSTATEBLOCKTYPE Type,[Out, Fast] IDirect3DStateBlock9** ppSB) + IDirect3DDevice9::CreateStateBlock +
+ + +

Signals Direct3D to begin recording a device-state block.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Applications can ensure that all recorded states are valid by calling the method prior to calling this method.

The following methods can be recorded in a state block, after calling and before .

The ordering of state changes in a state block is not guaranteed. If the same state is specified multiple times in a state block, only the last value is used.

+
+ + bb174351 + HRESULT IDirect3DDevice9::BeginStateBlock() + IDirect3DDevice9::BeginStateBlock +
+ + +

Signals Direct3D to stop recording a device-state block and retrieve a reference to the state block interface.

+
+

Pointer to a state block interface. See .

+ + bb174376 + HRESULT IDirect3DDevice9::EndStateBlock([In] IDirect3DStateBlock9** ppSB) + IDirect3DDevice9::EndStateBlock +
+ + +

Sets the clip status.

+
+

Pointer to a structure, describing the clip status settings to be set.

+

If the method succeeds, the return value is . If one of the arguments is invalid, the return value is .

+ +

Clip status is used during software vertex processing. Therefore, this method is not supported on pure or nonpure hardware processing devices. For more information about pure devices, see .

When clipping is enabled during vertex processing (by , , or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using , which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise "OR" of all vertex clip codes and ClipIntersection is a bitwise "AND" of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When is set to , ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.

Clip status is not updated by and because there is no software emulation for them.

+
+ + bb174427 + HRESULT IDirect3DDevice9::SetClipStatus([In] const D3DCLIPSTATUS9* pClipStatus) + IDirect3DDevice9::SetClipStatus +
+ + +

Retrieves the clip status.

+
+

Pointer to a structure that describes the clip status.

+

If the method succeeds, the return value is .

is returned if the argument is invalid.

+ +

When clipping is enabled during vertex processing (by , , or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using , which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise "OR" of all vertex clip codes and ClipIntersection is a bitwise "AND" of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When is set to , ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.

Clip status is not updated by and because there is no software emulation for them.

Clip status is used during software vertex processing. Therefore, this method is not supported on pure or nonpure hardware processing devices. For more information about pure devices, see .

+
+ + bb174381 + HRESULT IDirect3DDevice9::GetClipStatus([Out] D3DCLIPSTATUS9* pClipStatus) + IDirect3DDevice9::GetClipStatus +
+ + +

Retrieves a texture assigned to a stage for a device.

+
+

Stage identifier of the texture to retrieve. Stage identifiers are zero-based.

+

Address of a reference to an interface, representing the returned texture.

+ +

Typically, methods that return state will not work on a device that is created using . This method however, will work even on a pure device because it returns an interface.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174412 + HRESULT IDirect3DDevice9::GetTexture([In] unsigned int Stage,[Out] IDirect3DBaseTexture9** ppTexture) + IDirect3DDevice9::GetTexture +
+ + +

Assigns a texture to a stage for a device.

+
+

Zero based sampler number. Textures are bound to samplers; samplers define sampling state such as the filtering mode and the address wrapping mode. Textures are referenced differently by the programmable and the fixed function pipeline:

  • Programmable shaders reference textures using the sampler number. The number of samplers available to a programmable shader is dependent on the shader version. For vertex shaders, see Sampler (Direct3D 9 asm-vs). For pixel shaders see Sampler (Direct3D 9 asm-ps).
  • The fixed function pipeline on the other hand, references textures by texture stage number. The maximum number of samplers is determined from two caps: MaxSimultaneousTextures and MaxTextureBlendStages of the structure.

There are two other special cases for stage/sampler numbers.

  • A special number called D3DDMAPSAMPLER is used for Displacement Mapping (Direct3D 9).
  • A programmable vertex shader uses a special number defined by a when accessing Vertex Textures in vs_3_0 (DirectX HLSL).
+

Pointer to an interface, representing the texture being set.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

SetTexture is not allowed if the texture is created with a pool type of . SetTexture is not allowed with a pool type of texture unless DevCaps is set with .

+
+ + bb174461 + HRESULT IDirect3DDevice9::SetTexture([In] unsigned int Stage,[In] IDirect3DBaseTexture9* pTexture) + IDirect3DDevice9::SetTexture +
+ + +

Retrieves a state value for an assigned texture.

+
+

Stage identifier of the texture for which the state is retrieved. Stage identifiers are zero-based. Devices can have up to eight set textures, so the maximum value allowed for Stage is 7.

+

Texture state to retrieve. This parameter can be any member of the enumerated type.

+

Pointer a variable to fill with the retrieved state value. The meaning of the retrieved value is determined by the Type parameter.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other flag values in ."

+
+ + bb174413 + HRESULT IDirect3DDevice9::GetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] void* pValue) + IDirect3DDevice9::GetTextureStageState +
+ + +

Sets the state value for the currently assigned texture.

+
+

Stage identifier of the texture for which the state value is set. Stage identifiers are zero-based. Devices can have up to eight set textures, so the maximum value allowed for Stage is 7.

+

Texture state to set. This parameter can be any member of the enumerated type.

+

State value to set. The meaning of this value is determined by the Type parameter.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174462 + HRESULT IDirect3DDevice9::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value) + IDirect3DDevice9::SetTextureStageState +
+ + +

Gets the sampler state value.

+
+

The sampler stage index.

+

This parameter can be any member of the enumerated type.

+

State value to get. The meaning of this value is determined by the Type parameter.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other values in ."

+
+ + bb174406 + HRESULT IDirect3DDevice9::GetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] void* pValue) + IDirect3DDevice9::GetSamplerState +
+ + +

Sets the sampler state value.

+
+

The sampler stage index. For more info about sampler stage, see Sampling Stage Registers in vs_3_0 (DirectX HLSL).

+

This parameter can be any member of the enumerated type.

+

State value to set. The meaning of this value is determined by the Type parameter.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174456 + HRESULT IDirect3DDevice9::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value) + IDirect3DDevice9::SetSamplerState +
+ + +

Reports the device's ability to render the current texture-blending operations and arguments in a single pass.

+
+

Pointer to a DWORD value to fill with the number of rendering passes needed to complete the desired effect through multipass rendering.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , , , , , , , , , , ,.

+ +

The method should be used to validate scenarios only when other capabilities are deficient. For example, in a multistage texturing scenario, you could query the MaxTextureBlendStages and MaxSimultaneousTextures members of a structure to determine if multistage texturing is possible on the device.

Current hardware does not necessarily implement all possible combinations of operations and arguments. You can determine whether a particular blending operation can be performed with given arguments by setting the desired blending operation, and then calling the method.

The method uses the current render states, textures, and texture-stage states to perform validation at the time of the call. Changes to these factors after the call invalidate the previous result, and the method must be called again before rendering a scene.

For best performance, call at initialization time; do not use it within a render loop.

Using diffuse iterated values, either as an argument or as an operation (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) is rarely supported on current hardware. Most hardware can introduce iterated color data only at the last texture operation stage.

Try to specify the texture () for each stage as the first argument, rather than the second argument.

Many cards do not support use of diffuse or scalar values at arbitrary texture stages. Often, these are available only at the first or last texture-blending stage.

Many cards do not have a blending unit associated with the first texture that is capable of more than replicating alpha to color channels or inverting the input. Therefore, your application might need to use only the second texture stage, if possible. On such hardware, the first unit is presumed to be in its default state, which has the first color argument set to with the operation.

Operations on the output alpha that are more intricate than or substantially different from the color operations are less likely to be supported.

Some hardware does not support simultaneous use of and .

Many cards do not support simultaneous use of multiple textures and mipmapped trilinear filtering. If trilinear filtering has been requested for a texture involved in multitexture blending operations and validation fails, turn off trilinear filtering and revalidate. In this case, you might want to perform multipass rendering instead.

+
+ + bb205859 + HRESULT IDirect3DDevice9::ValidateDevice([In] unsigned int* pNumPasses) + IDirect3DDevice9::ValidateDevice +
+ + +

Sets palette entries.

+
+

An ordinal value identifying the particular palette upon which the operation is to be performed.

+

Pointer to a structure, representing the palette entries to set. The number of structures pointed to by pEntries is assumed to be 256. See Remarks.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For Direct3D 9 applications, any palette sent to this method must conform to the capability bit of the structure. If is not set, every entry in the palette must have alpha set to 1.0 or this method will fail with . If is set, then any set of alpha values are allowed. Note that the debug runtime will print a warning message if all palette entries have alpha set to 0.

A single logical palette is associated with the device, and is shared by all texture stages.

+
+ + bb174439 + HRESULT IDirect3DDevice9::SetPaletteEntries([In] unsigned int PaletteNumber,[In, Buffer] const PALETTEENTRY* pEntries) + IDirect3DDevice9::SetPaletteEntries +
+ + +

Retrieves palette entries.

+
+

An ordinal value identifying the particular palette to retrieve.

+

Pointer to a structure, representing the returned palette entries.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For more information about , see the Platform SDK.

Note??As of Direct3D 9, the peFlags member of the structure does not work the way it is documented in the Platform SDK. The peFlags member is now the alpha channel for 8-bit palettized formats.

+
+ + bb174397 + HRESULT IDirect3DDevice9::GetPaletteEntries([In] unsigned int PaletteNumber,[In, Buffer] PALETTEENTRY* pEntries) + IDirect3DDevice9::GetPaletteEntries +
+ + +

Sets the current texture palette.

+
+

Value that specifies the texture palette to set as the current texture palette.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A single logical palette is associated with the device, and is shared by all texture stages.

+
+ + bb174428 + HRESULT IDirect3DDevice9::SetCurrentTexturePalette([In] unsigned int PaletteNumber) + IDirect3DDevice9::SetCurrentTexturePalette +
+ + +

Retrieves the current texture palette.

+
+

Pointer to a returned value that identifies the current texture palette.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ + bb174383 + HRESULT IDirect3DDevice9::GetCurrentTexturePalette([Out] unsigned int* PaletteNumber) + IDirect3DDevice9::GetCurrentTexturePalette +
+ + +

Sets the scissor rectangle.

+
+

Pointer to a structure that defines the rendering area within the render target if scissor test is enabled. This parameter may not be null.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

The scissor rectangle is used as a rectangular clipping region.

See Rectangles (Direct3D 9) for further information on the use of rectangles in DirectX.

+
+ + bb174457 + HRESULT IDirect3DDevice9::SetScissorRect([In] const RECT* pRect) + IDirect3DDevice9::SetScissorRect +
+ + +

Gets the scissor rectangle.

+
+

Returns a reference to a structure that defines the rendering area within the render target if scissor test is enabled.

+

If the method succeeds, the return value is . If the method fails, the return value can be the following: .

+ +

The scissor rectangle is used as a rectangular clipping region.

See Rectangles (Direct3D 9) for further information on the use of rectangles in DirectX.

+
+ + bb174407 + HRESULT IDirect3DDevice9::GetScissorRect([Out] RECT* pRect) + IDirect3DDevice9::GetScissorRect +
+ + +

Use this method to switch between software and hardware vertex processing.

+
+

TRUE to specify software vertex processing; to specify hardware vertex processing.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

The restrictions for changing modes are as follows:

  • If a device is created with , the vertex processing will be done in software and cannot be changed.
  • If a device is created with , the vertex processing will be done in hardware and cannot be changed.
  • If a device is created with , the vertex processing will be done in hardware by default. The processing can be switched to software (or back to hardware) using .

An application can create a mixed-mode device to use both the software vertex processing and the hardware vertex processing. To switch between the two vertex processing modes in DirectX 8.x, use IDirect3DDevice8::SetRenderState with the render state D3DRS_SOFTWAREVERTEXPROCESSING and the appropriate DWORD argument. The drawback of the render state approach was the difficulty in defining the semantics for state blocks. Applications and the runtime had to do extra work and be careful while recording and playing back state blocks.

In Direct3D 9, use SetSoftwareVertexProcessing instead. This new API is not recorded by StateBlocks.

+
+ + bb174458 + HRESULT IDirect3DDevice9::SetSoftwareVertexProcessing([In] BOOL bSoftware) + IDirect3DDevice9::SetSoftwareVertexProcessing +
+ + +

Gets the vertex processing (hardware or software) mode.

+
+

Returns TRUE if software vertex processing is set. Otherwise, it returns .

+ +

An application can create a mixed-mode device to use both the software vertex processing and the hardware vertex processing. To switch between the two vertex processing modes in DirectX 8.x, use with the render state D3DRS_SOFTWAREVERTEXPROCESSING and the appropriate argument. The drawback of the render state approach was the difficulty in defining the semantics for state blocks. Applications and the runtime had to do extra work and be careful while recording and playing back state blocks.

In Direct3D 9, use instead. This new API is not recorded by StateBlocks.

+
+ + bb174408 + BOOL IDirect3DDevice9::GetSoftwareVertexProcessing() + IDirect3DDevice9::GetSoftwareVertexProcessing +
+ + +

Enable or disable N-patches.

+
+

Specifies the number of subdivision segments. If the number of segments is less than 1.0, N-patches are disabled. The default value is 0.0.

+

If the method succeeds, the return value is .

+ + bb174438 + HRESULT IDirect3DDevice9::SetNPatchMode([In] float nSegments) + IDirect3DDevice9::SetNPatchMode +
+ + +

Gets the N-patch mode segments.

+
+

Specifies the number of subdivision segments. If the number of segments is less than 1.0, N-patches are disabled. The default value is 0.0.

+ + bb174395 + float IDirect3DDevice9::GetNPatchMode() + IDirect3DDevice9::GetNPatchMode +
+ + +

Renders a sequence of nonindexed, geometric primitives of the specified type from the current set of data input streams.

+
+

Member of the enumerated type, describing the type of primitive to render.

+

Index of the first vertex to load. Beginning at StartVertex the correct number of vertices will be read out of the vertex buffer.

+

Number of primitives to render. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the structure. PrimitiveCount is the number of primitives as determined by the primitive type. If it is a line list, each primitive has two vertices. If it is a triangle list, each primitive has three vertices.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

When converting a legacy application to Direct3D 9, you must add a call to either to use the fixed function pipeline, or to use a vertex shader before you make any Draw calls.

+
+ + bb174371 + HRESULT IDirect3DDevice9::DrawPrimitive([In] D3DPRIMITIVETYPE PrimitiveType,[In] unsigned int StartVertex,[In] unsigned int PrimitiveCount) + IDirect3DDevice9::DrawPrimitive +
+ + +

Based on indexing, renders the specified geometric primitive into an array of vertices.

+
+

Member of the enumerated type, describing the type of primitive to render. is not supported with this method. See Remarks.

+

Offset from the start of the vertex buffer to the first vertex. See Scenario 4.

+

Minimum vertex index for vertices used during this call. This is a zero based index relative to BaseVertexIndex.

+

Number of vertices used during this call. The first vertex is located at index: BaseVertexIndex + MinIndex.

+

Index of the first index to use when accesssing the vertex buffer. Beginning at StartIndex to index vertices from the vertex buffer.

+

Number of primitives to render. The number of vertices used is a function of the primitive count and the primitive type. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the structure.

+

If the method succeeds, the return value is . If the method fails, the return value can be the following: .

+ +

This method draws indexed primitives from the current set of data input streams. MinIndex and all the indices in the index stream are relative to the BaseVertexIndex.

The MinIndex and NumVertices parameters specify the range of vertex indices used for each call. These are used to optimize vertex processing of indexed primitives by processing a sequential range of vertices prior to indexing into these vertices. It is invalid for any indices used during this call to reference any vertices outside of this range.

fails if no index array is set.

The member of the enumerated type is not supported and is not a valid type for this method.

When converting a legacy application to Direct3D 9, you must add a call to either to use the fixed function pipeline, or to use a vertex shader before you make any Draw calls.

+
+ + bb174369 + HRESULT IDirect3DDevice9::DrawIndexedPrimitive([In] D3DPRIMITIVETYPE arg0,[In] int BaseVertexIndex,[In] unsigned int MinVertexIndex,[In] unsigned int NumVertices,[In] unsigned int startIndex,[In] unsigned int primCount) + IDirect3DDevice9::DrawIndexedPrimitive +
+ + +

Renders data specified by a user memory reference as a sequence of geometric primitives of the specified type.

+
+

Member of the enumerated type, describing the type of primitive to render.

+

Number of primitives to render. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the structure.

+

User memory reference to the vertex data.

+

The number of bytes of data for each vertex. This value may not be 0.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ +

This method is intended for use in applications that are unable to store their vertex data in vertex buffers. This method supports only a single vertex stream. The effect of this call is to use the provided vertex data reference and stride for vertex stream 0. It is invalid to have the declaration of the current vertex shader refer to vertex streams other than stream 0.

Following any call, the stream 0 settings, referenced by , are set to null.

The vertex data passed to does not need to persist after the call. Direct3D completes its access to that data prior to returning from the call.

When converting a legacy application to Direct3D 9, you must add a call to either to use the fixed function pipeline, or to use a vertex shader before you make any Draw calls.

+
+ + bb174372 + HRESULT IDirect3DDevice9::DrawPrimitiveUP([In] D3DPRIMITIVETYPE PrimitiveType,[In] unsigned int PrimitiveCount,[In] const void* pVertexStreamZeroData,[In] unsigned int VertexStreamZeroStride) + IDirect3DDevice9::DrawPrimitiveUP +
+ + +

Renders the specified geometric primitive with data specified by a user memory reference.

+
+

Member of the enumerated type, describing the type of primitive to render.

+

Minimum vertex index. This is a zero-based index.

+

Number of vertices used during this call. The first vertex is located at index: MinVertexIndex.

+

Number of primitives to render. The maximum number of primitives allowed is determined by checking the MaxPrimitiveCount member of the structure (the number of indices is a function of the primitive count and the primitive type).

+

User memory reference to the index data.

+

Member of the enumerated type, describing the format of the index data. The valid settings are either:

+

User memory reference to the vertex data. The vertex data must be in stream 0.

+

The number of bytes of data for each vertex. This value may not be 0.

+

If the method succeeds, the return value is . If the method fails, the return value can be the following: .

+ +

This method is intended for use in applications that are unable to store their vertex data in vertex buffers. This method supports only a single vertex stream, which must be declared as stream 0.

Following any call, the stream 0 settings, referenced by , are set to null. Also, the index buffer setting for is set to null.

The vertex data passed to does not need to persist after the call. Direct3D completes its access to that data prior to returning from the call.

When converting a legacy application to Direct3D 9, you must add a call to either to use the fixed function pipeline, or to use a vertex shader before you make any Draw calls.

+
+ + bb174370 + HRESULT IDirect3DDevice9::DrawIndexedPrimitiveUP([In] D3DPRIMITIVETYPE PrimitiveType,[In] unsigned int MinVertexIndex,[In] unsigned int NumVertices,[In] unsigned int PrimitiveCount,[In] const void* pIndexData,[In] D3DFORMAT IndexDataFormat,[In] const void* pVertexStreamZeroData,[In] unsigned int VertexStreamZeroStride) + IDirect3DDevice9::DrawIndexedPrimitiveUP +
+ + +

Applies the vertex processing defined by the vertex shader to the set of input data streams, generating a single stream of interleaved vertex data to the destination vertex buffer.

+
+

Index of first vertex to load.

+

Index of first vertex in the destination vertex buffer into which the results are placed.

+

Number of vertices to process.

+

Pointer to an interface, the destination vertex buffer representing the stream of interleaved vertex data.

+

Pointer to an interface that represents the output vertex data declaration. When vertex shader 3.0 or above is set as the current vertex shader, the output vertex declaration must be present.

+

Processing options. Set this parameter to 0 for default processing. Set to D3DPV_DONOTCOPYDATA to prevent the system from copying vertex data not affected by the vertex operation into the destination buffer. The D3DPV_DONOTCOPYDATA value may be combined with one or more values appropriate for the destination buffer.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

The order of operations for this method is as follows:

  • Transform vertices to projection space using the world + view + projection matrix.
  • Compute screen coordinates using viewport settings.
  • If clipping is enabled, compute clipping codes and store them in an internal buffer, associated with the destination vertex buffer. If a vertex is inside the viewing frustum, its screen coordinates are computed. If the vertex is outside the viewing frustum, the vertex is stored in the destination vertex buffer in projection space coordinates.
  • Other notes: The user does not have access to the internal clip code buffer. No clipping is done on triangles or any other primitives.

The destination vertex buffer, pDestBuffer, must be created with a nonzero FVF parameter in . The FVF code specified during the call to the method specifies the vertex elements present in the destination vertex buffer.

When Direct3D generates texture coordinates, or copies or transforms input texture coordinates, and the output texture coordinate format defines more texture coordinate components than Direct3D generates, Direct3D does not change these extra components.

+
+ + bb174424 + HRESULT IDirect3DDevice9::ProcessVertices([In] unsigned int SrcStartIndex,[In] unsigned int DestIndex,[In] unsigned int VertexCount,[In] IDirect3DVertexBuffer9* pDestBuffer,[In] IDirect3DVertexDeclaration9* pVertexDecl,[In] D3DLOCK Flags) + IDirect3DDevice9::ProcessVertices +
+ + +

Create a vertex shader declaration from the device and the vertex elements.

+
+

An array of vertex elements.

+

Pointer to an reference that returns the created vertex shader declaration.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

See the Vertex Declaration (Direct3D 9) page for a detailed description of how to map vertex declarations between different versions of DirectX.

+
+ + bb174365 + HRESULT IDirect3DDevice9::CreateVertexDeclaration([In, Buffer] const D3DVERTEXELEMENT9* pVertexElements,[Out, Fast] IDirect3DVertexDeclaration9** ppDecl) + IDirect3DDevice9::CreateVertexDeclaration +
+ + +

Sets a Vertex Declaration (Direct3D 9).

+
+ No documentation. +

If the method succeeds, the return value is . The return value can be .

+ +

A vertex declaration is an object that defines the data members of a vertex (i.e. texture coordinates, colors, normals, etc.). This data can be useful for implementing vertex shaders and pixel shaders.

+
+ + bb174464 + HRESULT IDirect3DDevice9::SetVertexDeclaration([In] IDirect3DVertexDeclaration9* pDecl) + IDirect3DDevice9::SetVertexDeclaration +
+ + +

Gets a vertex shader declaration.

+
+

Pointer to an object that is returned.

+

If the method succeeds, the return value is . The return value can be .

+ + bb174415 + HRESULT IDirect3DDevice9::GetVertexDeclaration([Out] IDirect3DVertexDeclaration9** ppDecl) + IDirect3DDevice9::GetVertexDeclaration +
+ + +

Sets the current vertex stream declaration.

+
+

DWORD containing the fixed function vertex type. For more information, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ +

Here are the steps necessary to initialize and use vertices that have a position, diffuse and specular color, and texture coordinates:

  1. Define the custom vertex type and FVF code.
     struct LVertex	
    +            { FLOAT    x, y, z;  specular, diffuse; FLOAT    tu, tv;	
    +            }; const DWORD VertexFVF = ( |  |  |  );	
    +            
  2. Create a vertex buffer with enough room for four vertices using .
     g_d3dDevice->CreateVertexBuffer( 4*sizeof(LVertex),   , VertexFVF, , &pBigSquareVB, null );	
    +            
  3. Set the values for each vertex.
     LVertex * v;	
    +            pBigSquareVB->Lock( 0, 0, (BYTE**)&v, 0 ); v[0].x  = 0.0f;  v[0].y  = 10.0;  v[0].z  = 10.0f;	
    +            v[0].diffuse  = 0xffff0000;	
    +            v[0].specular = 0xff00ff00;	
    +            v[0].tu = 0.0f;  v[0].tv = 0.0f; v[1].x  = 0.0f;  v[1].y  = 0.0f;  v[1].z  = 10.0f;	
    +            v[1].diffuse  = 0xff00ff00;	
    +            v[1].specular = 0xff00ffff;	
    +            v[1].tu = 0.0f;  v[1].tv = 0.0f; v[2].x  = 10.0f; v[2].y  = 10.0f; v[2].z  = 10.0f;	
    +            v[2].diffuse  = 0xffff00ff;	
    +            v[2].specular = 0xff000000;	
    +            v[2].tu = 0.0f;  v[2].tv = 0.0f; v[3].x  = 0.0f; v[3].y  = 10.0f;  v[3].z = 10.0f;	
    +            v[3].diffuse  = 0xffffff00;	
    +            v[3].specular = 0xffff0000;	
    +            v[3].tu = 0.0f; v[3].tv = 0.0f; pBigSquareVB->Unlock();	
    +            
  4. The vertex buffer has been initialized and is ready to render. The following code example shows how to use the legacy FVF to draw a square.
     g_d3dDevice->SetFVF(VertexFVF);	
    +            g_d3dDevice->SetStreamSource(0, pBigSquareVB, 0, sizeof(LVertex));	
    +            g_d3dDevice->DrawPrimitive(, 0 ,2);	
    +            

Here are the steps necessary to initialize and use vertices that have a position, a normal, and texture coordinates:

  1. Define the custom vertex type and FVF code.
     struct Vertex	
    +            { FLOAT x, y, z; FLOAT nx, ny, nz; FLOAT tu, tv;	
    +            }; const DWORD VertexFVF = (  |  |  );	
    +            
  2. Create a vertex buffer with enough room for four vertices using (similar to the example above).
  3. Set the values for each vertex.
     Vertex * v;	
    +            pBigSquareVB->Lock(0, 0, (BYTE**)&v, 0); v[0].x  = 0.0f;  v[0].y  = 10.0;  v[0].z  = 10.0f;	
    +            v[0].nx = 0.0f;  v[0].ny = 1.0f;  v[0].nz = 0.0f;	
    +            v[0].tu = 0.0f;  v[0].tv = 0.0f; v[1].x  = 0.0f;  v[1].y  = 0.0f;  v[1].z  = 10.0f;	
    +            v[1].nx = 0.0f;  v[1].ny = 1.0f;  v[1].nz = 0.0f;	
    +            v[1].tu = 0.0f;  v[1].tv = 0.0f; v[2].x  = 10.0f; v[2].y  = 10.0f; v[2].z  = 10.0f;	
    +            v[2].nx = 0.0f;  v[2].ny = 1.0f;  v[2].nz = 0.0f;	
    +            v[2].tu = 0.0f;  v[2].tv = 0.0f; v[3].x  = 0.0f; v[3].y  = 10.0f;  v[3].z = 10.0f;	
    +            v[3].nx = 0.0f; v[3].ny = 1.0f;   v[3].nz = 0.0f;	
    +            v[3].tu = 0.0f; v[3].tv = 0.0f; pBigSquareVB->Unlock();	
    +            
  4. Draw the object (similar to the example above).
+
+ + bb174433 + HRESULT IDirect3DDevice9::SetFVF([In] D3DFVF FVF) + IDirect3DDevice9::SetFVF +
+ + +

Gets the fixed vertex function declaration.

+
+

A DWORD reference to the fixed function vertex type. For more information, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

The fixed vertex function declaration is a set of FVF flags that determine how vertices processed by the fixed function pipeline will be used.

+
+ + bb174389 + HRESULT IDirect3DDevice9::GetFVF([Out] D3DFVF* pFVF) + IDirect3DDevice9::GetFVF +
+ + +

Creates a vertex shader.

+
+

Pointer to an array of tokens that represents the vertex shader, including any embedded debug and symbol table information.

  • Use a function such as to create the array from a HLSL shader.
  • Use a function like to create the token array from an assembly language shader.
  • Use a function like to create the array from an effect.
+

Pointer to the returned vertex shader interface (see ).

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , E_OUTOFMEMORY.

+ +

When a device is created, uses the behavior flag to determine whether to process vertices in hardware or software. There are three possibilities:

  • Process vertices in hardware by setting .
  • Process vertices in software by setting .
  • Process vertices in either hardware or software by setting . To switch a mixed-mode device between software and hardware processing, use .

For an example using , see HLSLwithoutEffects Sample.

+
+ + bb174366 + HRESULT IDirect3DDevice9::CreateVertexShader([In] const void* pFunction,[Out, Fast] IDirect3DVertexShader9** ppShader) + IDirect3DDevice9::CreateVertexShader +
+ + +

Sets the vertex shader.

+
+

Vertex shader interface. For more information, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

To set a fixed-function vertex shader (after having set a programmable vertex shader), call (null) to release the programmable shader, and then call with the fixed-function vertex format.

+
+ + bb174465 + HRESULT IDirect3DDevice9::SetVertexShader([In] IDirect3DVertexShader9* pShader) + IDirect3DDevice9::SetVertexShader +
+ + +

Retrieves the currently set vertex shader.

+
+

Pointer to a vertex shader interface.

+

If the method succeeds, the return value is . If ppShader is invalid, is returned.

+ +

Typically, methods that return state will not work on a device that is created using . This method however, will work even on a pure device because it returns an interface.

+
+ + bb174416 + HRESULT IDirect3DDevice9::GetVertexShader([Out] IDirect3DVertexShader9** ppShader) + IDirect3DDevice9::GetVertexShader +
+ + +

Sets a floating-point vertex shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four float vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174467 + HRESULT IDirect3DDevice9::SetVertexShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + IDirect3DDevice9::SetVertexShaderConstantF +
+ + +

Gets a floating-point vertex shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four float vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174418 + HRESULT IDirect3DDevice9::GetVertexShaderConstantF([In] unsigned int StartRegister,[In, Buffer] float* pConstantData,[In] unsigned int Vector4fCount) + IDirect3DDevice9::GetVertexShaderConstantF +
+ + +

Sets an integer vertex shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four integer vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174468 + HRESULT IDirect3DDevice9::SetVertexShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount) + IDirect3DDevice9::SetVertexShaderConstantI +
+ + +

Gets an integer vertex shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four integer vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174419 + HRESULT IDirect3DDevice9::GetVertexShaderConstantI([In] unsigned int StartRegister,[In, Buffer] int* pConstantData,[In] unsigned int Vector4iCount) + IDirect3DDevice9::GetVertexShaderConstantI +
+ + +

Sets a Boolean vertex shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of boolean values in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174466 + HRESULT IDirect3DDevice9::SetVertexShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount) + IDirect3DDevice9::SetVertexShaderConstantB +
+ + +

Gets a Boolean vertex shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of Boolean values in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174417 + HRESULT IDirect3DDevice9::GetVertexShaderConstantB([In] unsigned int StartRegister,[In] void* pConstantData,[In] unsigned int BoolCount) + IDirect3DDevice9::GetVertexShaderConstantB +
+ + +

Binds a vertex buffer to a device data stream. For more information, see Setting the Stream Source (Direct3D 9).

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

When a FVF vertex shader is used, the stride of the vertex stream must match the vertex size, computed from the FVF. When a declaration is used, the stride should be greater than or equal to the stream size computed from the declaration.

When calling SetStreamSource, the stride is normally required to be equal to the vertex size. However, there are times when you may want to draw multiple instances of the same or similar geometry (such as when using instancing to draw). For this case, use a zero stride to tell the runtime not to increment the vertex buffer offset (ie: use the same vertex data for all instances). For more information about instancing, see Efficiently Drawing Multiple Instances of Geometry (Direct3D 9).

+
+ + bb174459 + HRESULT IDirect3DDevice9::SetStreamSource([In] unsigned int StreamNumber,[In] IDirect3DVertexBuffer9* pStreamData,[In] unsigned int OffsetInBytes,[In] unsigned int Stride) + IDirect3DDevice9::SetStreamSource +
+ + +

Retrieves a vertex buffer bound to the specified data stream.

+
+

Specifies the data stream, in the range from 0 to the maximum number of streams minus one.

+

Address of a reference to an interface, representing the returned vertex buffer bound to the specified data stream.

+

Pointer containing the offset from the beginning of the stream to the beginning of the vertex data. The offset is measured in bytes. See Remarks.

+

Pointer to a returned stride of the component, in bytes. See Remarks.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A stream is defined as a uniform array of component data, where each component consists of one or more elements representing a single entity such as position, normal, color, and so on.

When a FVF vertex shader is used, the stride of the vertex stream must match the vertex size, computed from the FVF. When a declaration is used, the stride should be greater than or equal to the stream size computed from the declaration.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174409 + HRESULT IDirect3DDevice9::GetStreamSource([In] unsigned int StreamNumber,[Out] IDirect3DVertexBuffer9** ppStreamData,[Out] unsigned int* pOffsetInBytes,[Out] unsigned int* pStride) + IDirect3DDevice9::GetStreamSource +
+ + +

Sets the stream source frequency divider value. This may be used to draw several instances of geometry.

+
+

Stream source number.

+

This parameter may have two different values. See remarks.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

There are two constants defined in d3d9types.h that are designed to use with SetStreamSourceFreq: and . To see how to use the constants, see Efficiently Drawing Multiple Instances of Geometry (Direct3D 9).

+
+ + bb174460 + HRESULT IDirect3DDevice9::SetStreamSourceFreq([In] unsigned int StreamNumber,[In] unsigned int Setting) + IDirect3DDevice9::SetStreamSourceFreq +
+ + +

Gets the stream source frequency divider value.

+
+

Stream source number.

+

Returns the frequency divider value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Vertex shaders can now be invoked more than once per vertex. See Drawing Non-Indexed Geometry.

+
+ + bb174410 + HRESULT IDirect3DDevice9::GetStreamSourceFreq([In] unsigned int StreamNumber,[Out] unsigned int* pSetting) + IDirect3DDevice9::GetStreamSourceFreq +
+ + +

Sets index data.

+
+

Pointer to an interface, representing the index data to be set.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ +

When an application no longer holds a references to this interface, the interface will automatically be freed.

The method sets the current index array to an index buffer. The single set of indices is used to index all streams.

+
+ + bb174435 + HRESULT IDirect3DDevice9::SetIndices([In] IDirect3DIndexBuffer9* pIndexData) + IDirect3DDevice9::SetIndices +
+ + +

Retrieves index data.

+
+

Address of a reference to an interface, representing the returned index data.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174391 + HRESULT IDirect3DDevice9::GetIndices([Out] IDirect3DIndexBuffer9** ppIndexData) + IDirect3DDevice9::GetIndices +
+ + +

Creates a pixel shader.

+
+

Pointer to the pixel shader function token array, specifying the blending operations. This value cannot be null.

+

Pointer to the returned pixel shader interface. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , E_OUTOFMEMORY.

+ + bb174359 + HRESULT IDirect3DDevice9::CreatePixelShader([In] const void* pFunction,[Out, Fast] IDirect3DPixelShader9** ppShader) + IDirect3DDevice9::CreatePixelShader +
+ + +

Sets the current pixel shader to a previously created pixel shader.

+
+

Pixel shader interface.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174450 + HRESULT IDirect3DDevice9::SetPixelShader([In] IDirect3DPixelShader9* pShader) + IDirect3DDevice9::SetPixelShader +
+ + +

Retrieves the currently set pixel shader.

+
+

Pointer to a pixel shader interface.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method will not work on a device that is created using .

+
+ + bb174398 + HRESULT IDirect3DDevice9::GetPixelShader([Out] IDirect3DPixelShader9** ppShader) + IDirect3DDevice9::GetPixelShader +
+ + +

Sets a floating-point shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four float vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174452 + HRESULT IDirect3DDevice9::SetPixelShaderConstantF([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4fCount) + IDirect3DDevice9::SetPixelShaderConstantF +
+ + +

Gets a floating-point shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four float vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174400 + HRESULT IDirect3DDevice9::GetPixelShaderConstantF([In] unsigned int StartRegister,[In, Buffer] float* pConstantData,[In] unsigned int Vector4fCount) + IDirect3DDevice9::GetPixelShaderConstantF +
+ + +

Sets an integer shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four integer vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174453 + HRESULT IDirect3DDevice9::SetPixelShaderConstantI([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int Vector4iCount) + IDirect3DDevice9::SetPixelShaderConstantI +
+ + +

Gets an integer shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of four integer vectors in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174401 + HRESULT IDirect3DDevice9::GetPixelShaderConstantI([In] unsigned int StartRegister,[In, Buffer] int* pConstantData,[In] unsigned int Vector4iCount) + IDirect3DDevice9::GetPixelShaderConstantI +
+ + +

Sets a Boolean shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of boolean values in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174451 + HRESULT IDirect3DDevice9::SetPixelShaderConstantB([In] unsigned int StartRegister,[In] const void* pConstantData,[In] unsigned int BoolCount) + IDirect3DDevice9::SetPixelShaderConstantB +
+ + +

Gets a Boolean shader constant.

+
+

Register number that will contain the first constant value.

+

Pointer to an array of constants.

+

Number of Boolean values in the array of constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174399 + HRESULT IDirect3DDevice9::GetPixelShaderConstantB([In] unsigned int StartRegister,[In] void* pConstantData,[In] unsigned int BoolCount) + IDirect3DDevice9::GetPixelShaderConstantB +
+ + +

Draws a rectangular patch using the currently set streams.

+
+

Handle to the rectangular patch to draw.

+

Pointer to an array of four floating-point values that identify the number of segments each edge of the rectangle patch should be divided into when tessellated. See .

+

Pointer to a structure, describing the rectangular patch to draw.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For static patches: Set the vertex shader, set the appropriate streams, supply patch information in the pRectPatchInfo parameter, and specify a handle so that Direct3D can capture and cache information. Call subsequently with pRectPatchInfo set to null to efficiently draw the patch. When drawing a cached patch, the currently set streams are ignored. Override the cached pNumSegs by specifying a new value for pNumSegs. When rendering a cached patch, you must set the same vertex shader that was set when it was captured.

Calling with a handle invalidates the same handle cached by a previous call.

For dynamic patches, the patch data changes for every rendering of the patch, so it is not efficient to cache information. The application can convey this to Direct3D by setting Handle to 0. In this case, Direct3D draws the patch using the currently set streams and the pNumSegs values, and does not cache any information. It is not valid to simultaneously set Handle to 0 and pRectPatchInfo to null.

+
+ + bb174373 + HRESULT IDirect3DDevice9::DrawRectPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pRectPatchInfo) + IDirect3DDevice9::DrawRectPatch +
+ + +

Draws a triangular patch using the currently set streams.

+
+

Handle to the triangular patch to draw.

+

Pointer to an array of three floating-point values that identify the number of segments each edge of the triangle patch should be divided into when tessellated. See .

+

Pointer to a structure, describing the triangular high-order patch to draw.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For static patches: Set the vertex shader, set the appropriate streams, supply patch information in the pTriPatchInfo parameter, and specify a handle so that Direct3D can capture and cache information. To efficiently draw the patch, call with pTriPatchInfo set to null. When drawing a cached patch, the currently set streams are ignored. Override the cached pNumSegs by specifying a new value for pNumSegs. When rendering a cached patch, you must set the same vertex shader that was set when it was captured.

Calling with a handle invalidates the same handle cached by a previous call.

For dynamic patches, the patch data changes for every rendering of the patch so it is not efficient to cache information. The application can convey this to Direct3D by setting Handle to 0. In this case, Direct3D draws the patch using the currently set streams and the pNumSegs values, and does not cache any information. It is not valid to simultaneously set Handle to 0 and pTriPatchInfo to null.

+
+ + bb174374 + HRESULT IDirect3DDevice9::DrawTriPatch([In] unsigned int Handle,[In, Buffer] const float* pNumSegs,[In] const void* pTriPatchInfo) + IDirect3DDevice9::DrawTriPatch +
+ + +

Frees a cached high-order patch.

+
+

Handle of the cached high-order patch to delete.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174368 + HRESULT IDirect3DDevice9::DeletePatch([In] unsigned int Handle) + IDirect3DDevice9::DeletePatch +
+ + +

Creates a status query.

+
+

Identifies the query type. For more information, see .

+

Returns a reference to the query interface that manages the query object. See .

This parameter can be set to null to see if a query is supported. If the query is not supported, the method returns .

+

If the method succeeds, the return value is . If the method fails, the return value can be or E_OUTOFMEMORY.

+ +

This method is provided for both synchronous and asynchronous queries. It takes the place of GetInfo, which is no longer supported in Direct3D 9.

Synchronous and asynchronous queries are created with with . When a query has been created and the API calls have been made that are being queried, use to issue a query and to get the results of the query.

+
+ + bb174360 + HRESULT IDirect3DDevice9::CreateQuery([In] D3DQUERYTYPE Type,[Out, Fast] IDirect3DQuery9** ppQuery) + IDirect3DDevice9::CreateQuery +
+ + + Gets the available texture memory. + + + + + Gets the driver level. + + + + + Gets the pixel shader profile. + + + + + Gets the vertex shader profile. + + + + + Gets or sets a value indicating whether the cursor can be displayed. + + + true if the cursor can be displayed; otherwise, false. + + + + +

Returns an interface to the instance of the Direct3D object that created the device.

+
+ +

Calling will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174386 + GetDirect3D + GetDirect3D + HRESULT IDirect3DDevice9::GetDirect3D([Out] IDirect3D9** ppD3D9) +
+ + +

Retrieves the capabilities of the rendering device.

+
+ +

retrieves the software vertex pipeline capabilities when the device is being used in software vertex processing mode.

+
+ + bb174385 + GetDeviceCaps + GetDeviceCaps + HRESULT IDirect3DDevice9::GetDeviceCaps([Out] D3DCAPS9* pCaps) +
+ + +

Retrieves the creation parameters of the device.

+
+ +

You can query the AdapterOrdinal member of the returned structure to retrieve the ordinal of the adapter represented by this device.

+
+ + bb174382 + GetCreationParameters + GetCreationParameters + HRESULT IDirect3DDevice9::GetCreationParameters([Out] D3DDEVICE_CREATION_PARAMETERS* pParameters) +
+ + +

Gets the number of implicit swap chains.

+
+ +

Implicit swap chains are created by the device during . This method returns the number of swap chains created by CreateDevice.

An application may create additional swap chains using .

+
+ + bb174396 + GetNumberOfSwapChains + GetNumberOfSwapChains + unsigned int IDirect3DDevice9::GetNumberOfSwapChains() +
+ + +

This method allows the use of GDI dialog boxes in full-screen mode applications.

+
+ +

The GDI dialog boxes must be created as child to the device window. They should also be created within the same thread that created the device because this enables the parent window to manage redrawing the child window.

The method has no effect for windowed mode applications, but this setting will be respected if the application resets the device into full-screen mode. If SetDialogBoxMode succeeds in a windowed mode application, any subsequent reset to full-screen mode will be checked against the restrictions listed above. Also, SetDialogBoxMode causes all back buffers on the swap chain to be discarded, so an application is expected to refresh its content for all back buffers after this call.

+
+ + bb174432 + SetDialogBoxMode + SetDialogBoxMode + HRESULT IDirect3DDevice9::SetDialogBoxMode([In] BOOL bEnableDialogs) +
+ + +

Gets or sets the depth-stencil surface owned by the Direct3DDevice object.

+
+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174384 + GetDepthStencilSurface / SetDepthStencilSurface + GetDepthStencilSurface + HRESULT IDirect3DDevice9::GetDepthStencilSurface([Out] IDirect3DSurface9** ppZStencilSurface) +
+ + +

Retrieves or sets the viewport parameters currently set for the device.

+
+ +

Typically, methods that return state will not work on a device that is created using . This method however, will work even on a pure device.

+
+ + bb174420 + GetViewport / SetViewport + GetViewport + HRESULT IDirect3DDevice9::GetViewport([Out] D3DVIEWPORT9* pViewport) +
+ + +

Retrieves or sets the current material properties for the device.

+
+ +

This method will not return device state for a device that is created using . If you want to use this method, you must create your device with any of the other values in .

+
+ + bb174394 + GetMaterial / SetMaterial + GetMaterial + HRESULT IDirect3DDevice9::GetMaterial([Out] D3DMATERIAL9* pMaterial) +
+ + +

Retrieves or sets the clip status.

+
+ +

When clipping is enabled during vertex processing (by , , or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using , which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise "OR" of all vertex clip codes and ClipIntersection is a bitwise "AND" of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When is set to , ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.

Clip status is not updated by and because there is no software emulation for them.

Clip status is used during software vertex processing. Therefore, this method is not supported on pure or nonpure hardware processing devices. For more information about pure devices, see .

+
+ + bb174381 + GetClipStatus / SetClipStatus + GetClipStatus + HRESULT IDirect3DDevice9::GetClipStatus([Out] D3DCLIPSTATUS9* pClipStatus) +
+ + +

Retrieves or sets the current texture palette.

+
+ + bb174383 + GetCurrentTexturePalette / SetCurrentTexturePalette + GetCurrentTexturePalette + HRESULT IDirect3DDevice9::GetCurrentTexturePalette([Out] unsigned int* PaletteNumber) +
+ + +

Gets or sets the scissor rectangle.

+
+ +

The scissor rectangle is used as a rectangular clipping region.

See Rectangles (Direct3D 9) for further information on the use of rectangles in DirectX.

+
+ + bb174407 + GetScissorRect / SetScissorRect + GetScissorRect + HRESULT IDirect3DDevice9::GetScissorRect([Out] RECT* pRect) +
+ + +

Gets or sets the vertex processing (hardware or software) mode.

+
+ +

An application can create a mixed-mode device to use both the software vertex processing and the hardware vertex processing. To switch between the two vertex processing modes in DirectX 8.x, use with the render state D3DRS_SOFTWAREVERTEXPROCESSING and the appropriate argument. The drawback of the render state approach was the difficulty in defining the semantics for state blocks. Applications and the runtime had to do extra work and be careful while recording and playing back state blocks.

In Direct3D 9, use instead. This new API is not recorded by StateBlocks.

+
+ + bb174408 + GetSoftwareVertexProcessing / SetSoftwareVertexProcessing + GetSoftwareVertexProcessing + BOOL IDirect3DDevice9::GetSoftwareVertexProcessing() +
+ + +

Gets or sets the N-patch mode segments.

+
+ + bb174395 + GetNPatchMode / SetNPatchMode + GetNPatchMode + float IDirect3DDevice9::GetNPatchMode() +
+ + +

Gets or sets a vertex shader declaration.

+
+ + bb174415 + GetVertexDeclaration / SetVertexDeclaration + GetVertexDeclaration + HRESULT IDirect3DDevice9::GetVertexDeclaration([Out] IDirect3DVertexDeclaration9** ppDecl) +
+ + +

Gets or sets the fixed vertex function declaration.

+
+ +

The fixed vertex function declaration is a set of FVF flags that determine how vertices processed by the fixed function pipeline will be used.

+
+ + bb174389 + GetFVF / SetFVF + GetFVF + HRESULT IDirect3DDevice9::GetFVF([Out] D3DFVF* pFVF) +
+ + +

Retrieves or sets the currently set vertex shader.

+
+ +

Typically, methods that return state will not work on a device that is created using . This method however, will work even on a pure device because it returns an interface.

+
+ + bb174416 + GetVertexShader / SetVertexShader + GetVertexShader + HRESULT IDirect3DDevice9::GetVertexShader([Out] IDirect3DVertexShader9** ppShader) +
+ + +

Retrieves or sets index data.

+
+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb174391 + GetIndices / SetIndices + GetIndices + HRESULT IDirect3DDevice9::GetIndices([Out] IDirect3DIndexBuffer9** ppIndexData) +
+ + +

Retrieves or sets the currently set pixel shader.

+
+ +

This method will not work on a device that is created using .

+
+ + bb174398 + GetPixelShader / SetPixelShader + GetPixelShader + HRESULT IDirect3DDevice9::GetPixelShader([Out] IDirect3DPixelShader9** ppShader) +
+ + +

Applications use the methods of the interface to render primitives, create resources, work with system-level variables, adjust gamma ramp levels, work with palettes, and create shaders. The interface derives from the interface.

+
+ +

The interface is obtained by calling .

The LPDIRECT3DDEVICE9EX and PDIRECT3DDEVICE9EX types are defined as references to the interface:

 typedef struct  *LPDIRECT3DDEVICE9EX, *PDIRECT3DDEVICE9EX;	
+            
+
+ + bb174337 + IDirect3DDevice9Ex + IDirect3DDevice9Ex +
+ + + Creates a device to represent the display adapter. + + an instance of + Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter. + Member of the enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail. + The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value. + Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}. + Pointer to a structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order: User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default. An unsupported refresh rate will default to the closest supported refresh rate below it. For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including: If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals before the method is called, it will be changed when the method returns. + + This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in ). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in ). The purpose of each window is: The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}. This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE. Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, , and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail. + + HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface) + + + + Creates a device to represent the display adapter. + + an instance of + Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter. + Member of the enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail. + The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value. + Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}. + Pointer to a structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order: User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default. An unsupported refresh rate will default to the closest supported refresh rate below it. For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including: If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals before the method is called, it will be changed when the method returns. + + This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in ). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in ). The purpose of each window is: The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}. This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE. Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, , and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail. + + HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface) + + + + Creates a device to represent the display adapter. + + an instance of + Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter. + Member of the enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail. + The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value. + Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}. + Pointer to a structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order: User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default. An unsupported refresh rate will default to the closest supported refresh rate below it. For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including: If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals before the method is called, it will be changed when the method returns. + The full screen display mode. + + This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in ). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in ). The purpose of each window is: The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}. This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE. Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, , and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail. + + HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface) + + + + Creates a device to represent the display adapter. + + an instance of + Ordinal number that denotes the display adapter. {{D3DADAPTER_DEFAULT}} is always the primary display adapter. + Member of the enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail. + The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks. For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be NULL only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-NULL value. + Combination of one or more options that control device creation. For more information, see {{D3DCREATE}}. + Pointer to a structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies {{D3DCREATE_ADAPTERGROUP_DEVICE}}, pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created. For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order: User-specified nonzero ForcedRefreshRate registry key, if supported by the device. Application-specified nonzero refresh rate value in the presentation parameter. Refresh rate of the latest desktop mode, if supported by the device. 75 hertz if supported by the device. 60 hertz if supported by the device. Device default. An unsupported refresh rate will default to the closest supported refresh rate below it. For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz. pPresentationParameters is both an input and an output parameter. Calling this method may change several members including: If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns. If BackBufferFormat equals before the method is called, it will be changed when the method returns. + The full screen display mode. + + This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is FALSE in ). When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in ). The purpose of each window is: The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application. The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during {{Present}}. This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE. Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window. Note that D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING, and D3DCREATE_SOFTWARE_VERTEXPROCESSING are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method. Back buffers created as part of the device are only lockable if D3DPRESENTFLAG_LOCKABLE_BACKBUFFER is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.) The methods {{Reset}}, , and {{TestCooperativeLevel}} must be called from the same thread that used this method to create a device. D3DFMT_UNKNOWN can be specified for the windowed mode back buffer format when calling CreateDevice, {{Reset}}, and {{CreateAdditionalSwapChain}}. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified. If you attempt to create a device on a 0x0 sized window, CreateDevice will fail. + + HRESULT CreateDevice([None] UINT Adapter,[None] D3DDEVTYPE DeviceType,[None] HWND hFocusWindow,[None] int BehaviorFlags,[None] D3DPRESENT_PARAMETERS* pPresentationParameters,[None] IDirect3DDevice9** ppReturnedDeviceInterface) + + + + Reports the current cooperative-level status of the Direct3D device for a windowed or full-screen application. + + The window handle. + State of the device + HRESULT IDirect3DDevice9Ex::CheckDeviceState([In] HWND hDestinationWindow) + + + + Checks an array of resources to determine if it is likely that they will cause a large stall at Draw time because the system must make the resources GPU-accessible. + + An array of that indicate the resources to check. + The status. + HRESULT IDirect3DDevice9Ex::CheckDeviceState([In] HWND hDestinationWindow) + + + + Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings. + + The swap chain. + structure containing data about the display mode of the adapter + HRESULT IDirect3DDevice9Ex::GetDisplayModeEx([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODEEX* pMode,[In] void* pRotation) + + + + Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings. + + The swap chain. + The structure indicating the type of screen rotation the application will do. + structure containing data about the display mode of the adapter + HRESULT IDirect3DDevice9Ex::GetDisplayModeEx([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODEEX* pMode,[In] void* pRotation) + + + + Swap the swapchain's next buffer with the front buffer. + + The flags. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + + Swap the swapchain's next buffer with the front buffer. + + The flags. + The source rectangle. + The destination rectangle. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + + Swap the swapchain's next buffer with the front buffer. + + The flags. + The source rectangle. + The destination rectangle. + The window override. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + + Swap the swapchain's next buffer with the front buffer. + + The flags. + The source rectangle. + The destination rectangle. + The window override. + The region. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + + Resets the type, size, and format of the swap chain with all other surfaces persistent. + + A reference describing the new presentation parameters. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9Ex::ResetEx([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] void* pFullscreenDisplayMode) + + + + Resets the type, size, and format of the swap chain with all other surfaces persistent. + + A reference describing the new presentation parameters. + The full screen display mode. + + A object describing the result of the operation. + + HRESULT IDirect3DDevice9Ex::ResetEx([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] void* pFullscreenDisplayMode) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Prepare the texture sampler for monochrome convolution filtering on a single-color texture.

+
+

The width of the filter kernel; ranging from 1 - D3DCONVOLUTIONMONO_MAXWIDTH. The default value is 1.

+

The height of the filter kernel; ranging from 1 - D3DCONVOLUTIONMONO_MAXHEIGHT. The default value is 1.

+

An array of weights, one weight for each kernel sub-element in the width. This parameter must be null, which will set the weights equal to the default value.

+

An array of weights, one weight for each kernel sub-element in the height. This parameter must be null, which will set the weights equal to the default value.

+

If the method succeeds, the return value is .

+ +

This method is designed to filter a single color texture. A monochrome convolution filter is a 2D box filter with all of the weights set to 1.0; the filter kernel resolution ranges from 1 x 1 to 7 x 7. When monochrome texture filtering is set to a texture sampler and texture sampling is performed at location, then Direct3D performs convolution.

Restrictions include:

  • The filter specified by this method is recorded in state blocks as a part of .
  • The only texture address mode supported is: ; the border color is always 0.
  • This method is not supported for mipmaps.
  • Using a non-monochrome texture with convolution filtering will generate a driver error.
+
+ + bb174345 + HRESULT IDirect3DDevice9Ex::SetConvolutionMonoKernel([In] unsigned int width,[In] unsigned int height,[In, Buffer] float* rows,[In, Buffer] float* columns) + IDirect3DDevice9Ex::SetConvolutionMonoKernel +
+ + +

Copy a text string to one surface using an alphabet of glyphs on another surface. Composition is done by the GPU using bitwise operations.

+
+

A reference to a source surface (prepared by ) that supplies the alphabet glyphs. This surface must be created with the flag.

+

A reference to the destination surface (prepared by ) that receives the glyph data. The surface must be part of a texture.

+

A reference to a vertex buffer (see ) containing rectangles (see D3DCOMPOSERECTDESC) that enclose the desired glyphs in the source surface.

+

The number of rectangles or glyphs that are used in the operation. The number applies to both the source and destination surfaces. The range is 0 to D3DCOMPOSERECTS_MAXNUMRECTS.

+

A reference to a vertex buffer (see ) containing rectangles (see D3DCOMPOSERECTDESTINATION) that describe the destination to which the indicated glyph from the source surface will be copied.

+

Specifies how to combine the source and destination surfaces. See .

+

A value added to the x coordinates of all destination rectangles. This value can be negative, which may cause the glyph to be rejected or clipped if the result is beyond the bounds of the surface.

+

A value added to the y coordinates of all destination rectangles. This value can be negative, which may cause the glyph to be rejected or clipped if the result is beyond the bounds of the surface.

+

If the method succeeds, the return value is .

+ +

Glyphs from a one-bit source surface are put together into another one-bit texture surface with this method. The destination surface can then be used as the source for a normal texturing operation that will filter and scale the strings of text onto some other non-monochrome surface.

This method has several constraints (which are similar to StretchRect):

  • Surfaces cannot be locked.
  • The source and destination surfaces cannot be the same surface.
  • The source and destination surfaces must be created with the format.
  • The source surface and both vertex buffers must be created with the flag.
  • The destination surface must be created with either the or flags.
  • The source rectangles must be within the source surface.

The method is not recorded in state blocks.

+
+ + bb174340 + HRESULT IDirect3DDevice9Ex::ComposeRects([In] IDirect3DSurface9* pSrc,[In] IDirect3DSurface9* pDst,[In] IDirect3DVertexBuffer9* pSrcRectDescs,[In] unsigned int NumRects,[In] IDirect3DVertexBuffer9* pDstRectDescs,[In] D3DCOMPOSERECTSOP Operation,[In] int Xoffset,[In] int Yoffset) + IDirect3DDevice9Ex::ComposeRects +
+ + +

Swap the swapchain's next buffer with the front buffer.

+
+

Pointer to a structure indicating region on the source surface to copy in window client coordinates. Only applies when the swapchain was created with the flag. If null, the entire source surface is presented. If the rectangle exceeds the source surface, it is clipped to the source surface.

+

Pointer to structure indicating the target region on the destination surface in window client coordinates. Only applies when the swapchain was created with the flag. If null, the entire client area is filled. If the rectangle exceeds the destination client area, it is clipped to the destination client area.

+

Pointer to a destination window whose client area is taken as the target for this presentation. If this value is null, the runtime uses the hDeviceWindow member of for the presentation.

Note??If you create a swap chain with , you must pass null to hDestWindowOverride

+

Pointer to a structure indicating the smallest set of pixels that need to be transferred. This value must be null unless the swapchain was created with the flag. For more information about swapchains, see Flipping Surfaces (Direct3D 9).

If this value is non-null, the contained region is expressed in back buffer coordinates. The method takes these rectangles into account when optimizing the presentation by copying only the pixels within the region, or some suitably expanded set of rectangles. This is an aid to optimization only, and the application should not rely on the region being copied exactly. The implementation can choose to copy the whole source rectangle.

+

Allows the application to request that the method return immediately when the driver reports that it cannot schedule a presentation. Valid values are 0, or any combination of flags.

  • If dwFlags = 0, this method behaves as it did prior to Direct3D 9. Present will spin until the hardware is free, without returning an error.
  • If dwFlags = the display driver is called with the front buffer as both the source and target surface. The driver responds by scheduling a frame synch, but not changing the displayed surface. This flag is only available in full-screen mode or when using in windowed mode.
  • If dwFlags = , and the hardware is busy processing or waiting for a vertical sync interval, the method will return .
  • If dwFlags = , is enforced on this Present call. This flag can only be specified when using . This behavior is the same for windowed and full-screen modes.
  • If dwFlags = , gamma correction is performed from linear space to sRGB for windowed swap chains. This flag will take effect only when the driver exposes (see Gamma (Direct3D 9)).
+

Possible return values include: , , , , or (see D3DERR). See Lost Device Behavior Changes for more information about lost, hung, and removed devices.

Differences between Direct3D 9 and Direct3D 9Ex:

is only available in Direct3D9Ex running on Windows 7 (or more current operating system).

?

+ +

Similar to the Method, PresentEx adds a dwflags parameter.

When the swapchain is created with flag, pSourceRect, pDestRect and pDirtyRegion values must be set to null.

+
+ + bb174343 + HRESULT IDirect3DDevice9Ex::PresentEx([In] const void* pSourceRect,[In] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + IDirect3DDevice9Ex::PresentEx +
+ + +

Get the priority of the GPU thread.

+
+

Current GPU priority. Valid values range from -7 to 7.

+

Possible return values include: or (see D3DERR).

+ +

Use to set the priority of a thread.

This method will retrieve the priority of the thread stored with the Direct3D device even if it was created with the flag.

+
+ + bb174341 + HRESULT IDirect3DDevice9Ex::GetGPUThreadPriority([Out] int* pPriority) + IDirect3DDevice9Ex::GetGPUThreadPriority +
+ + +

Set the priority on the GPU thread.

+
+

The thread priority, ranging from -7 to 7.

+

Possible return values include: , , or (see D3DERR).

+ +

GPU thread priority is not reset when a device is lost. The effects of calls to this method are not recorded in state blocks.

+
+ + bb174346 + HRESULT IDirect3DDevice9Ex::SetGPUThreadPriority([In] int Priority) + IDirect3DDevice9Ex::SetGPUThreadPriority +
+ + +

Suspend execution of the calling thread until the next vertical blank signal.

+
+

Swap chain index. This is an optional, zero-based index used to specify a swap chain on a multihead card.

+

This method will always return .

+ +

This method allows applications to efficiently throttle their frame rate to that of the monitor associated with the device. Following a vertical blank, the amount of time it takes for the thread to wake up is typically very short.

In some scenarios the hardware may stop generating vertical blank signals when nothing is being displayed on the monitor. In this case, the method will wait approximately 100ms and return with .

+
+ + bb174349 + HRESULT IDirect3DDevice9Ex::WaitForVBlank([In] unsigned int iSwapChain) + IDirect3DDevice9Ex::WaitForVBlank +
+ + +

Checks an array of resources to determine if it is likely that they will cause a large stall at Draw time because the system must make the resources GPU-accessible.

+
+

An array of references that indicate the resources to check.

+

A value indicating the number of resources passed into the pResourceArray parameter up to a maximum of 65535.

+

If all the resources are in GPU-accessible memory, the method will return . The system may need to perform a remapping operation to promote the resources, but will not have to copy data.

If no allocation that comprises the resources is on disk, but at least one allocation is not in GPU-accessible memory, the method will return . The system may need to perform a copy to promote the resource.

If at least one allocation that comprises the resources is on disk, this method will return S_NOT_RESIDENT. The system may need to perform a copy to promote the resource.

+ +

This API is no more than a reasonable guess at residency, since resources may have been demoted by the time the application uses them.

The expected usage pattern is as follows. If the application determines that a set of resources are not resident, then the application will substitute a lower-LOD version of the resource and continue with rendering. The video memory manager API, offers a feature to allow the application to express that it would like these lower-LOD resources to be made more likely to stay resident in GPU-accessible memory. It is the app's responsibility to create, fill and destroy these lower-LOD versions, if it so chooses.

The application also needs to begin promotion of the higher-LOD versions when the residency check indicates that the resource is not resident in GPU-accessible memory. Since a per-process lock exists in kernel mode, a performant implementation will spawn a separate process whose sole job is to promote resources. The application communicates resource identity between the two process by means of the Sharing Resources shared surfaces API and promotes them by means of the SetPriority.

+
+ + bb174339 + HRESULT IDirect3DDevice9Ex::CheckResourceResidency([In, Buffer] IDirect3DResource9** pResourceArray,[In] unsigned int NumResources) + IDirect3DDevice9Ex::CheckResourceResidency +
+ + +

Checks an array of resources to determine if it is likely that they will cause a large stall at Draw time because the system must make the resources GPU-accessible.

+
+

An array of references that indicate the resources to check.

+

A value indicating the number of resources passed into the pResourceArray parameter up to a maximum of 65535.

+

If all the resources are in GPU-accessible memory, the method will return . The system may need to perform a remapping operation to promote the resources, but will not have to copy data.

If no allocation that comprises the resources is on disk, but at least one allocation is not in GPU-accessible memory, the method will return . The system may need to perform a copy to promote the resource.

If at least one allocation that comprises the resources is on disk, this method will return S_NOT_RESIDENT. The system may need to perform a copy to promote the resource.

+ +

This API is no more than a reasonable guess at residency, since resources may have been demoted by the time the application uses them.

The expected usage pattern is as follows. If the application determines that a set of resources are not resident, then the application will substitute a lower-LOD version of the resource and continue with rendering. The video memory manager API, offers a feature to allow the application to express that it would like these lower-LOD resources to be made more likely to stay resident in GPU-accessible memory. It is the app's responsibility to create, fill and destroy these lower-LOD versions, if it so chooses.

The application also needs to begin promotion of the higher-LOD versions when the residency check indicates that the resource is not resident in GPU-accessible memory. Since a per-process lock exists in kernel mode, a performant implementation will spawn a separate process whose sole job is to promote resources. The application communicates resource identity between the two process by means of the Sharing Resources shared surfaces API and promotes them by means of the SetPriority.

+
+ + bb174339 + HRESULT IDirect3DDevice9Ex::CheckResourceResidency([In, Buffer] IDirect3DResource9** pResourceArray,[In] unsigned int NumResources) + IDirect3DDevice9Ex::CheckResourceResidency +
+ + +

Set the number of frames that the system is allowed to queue for rendering.

+
+

The maximum number of back buffer frames that a driver can queue. The value is typically 3, but can range from 1 to 20. A value of 0 will reset latency to the default. For multi-head devices, MaxLatency is specified per-head.

+

Possible return values include: or (see D3DERR).

+ +

Frame latency is the number of frames that are allowed to be stored in a queue, before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue.

It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

+
+ + bb174347 + HRESULT IDirect3DDevice9Ex::SetMaximumFrameLatency([In] unsigned int MaxLatency) + IDirect3DDevice9Ex::SetMaximumFrameLatency +
+ + +

Retrieves the number of frames of data that the system is allowed to queue.

+
+

Returns the number of frames that can be queued for render. The value is typically 3, but can range from 1 to 20.

+

Possible return values include: , , , , , or (see D3DERR).

+ +

Frame latency is the number of frames that are allowed to be stored in a queue, before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue.

It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

+
+ + bb174342 + HRESULT IDirect3DDevice9Ex::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) + IDirect3DDevice9Ex::GetMaximumFrameLatency +
+ + +

Reports the current cooperative-level status of the Direct3D device for a windowed or full-screen application.

+
+

The destination window handle to check for occlusion. When this parameter is null, is returned when another device has fullscreen ownership. When the window handle is not null, window's client area is checked for occlusion. A window is occluded if any part of it is obscured by another application.

+

Possible return values include: , , , , or (see D3DERR), or , or (see S_PRESENT).

+ +

This method replaces , which always returns in Direct3D 9Ex applications.

We recommend not to call CheckDeviceState every frame. Instead, call CheckDeviceState only if the method returns a failure code.

See Lost Device Behavior Changes for more information about lost, hung, and removed devices.

+
+ + bb174338 + HRESULT IDirect3DDevice9Ex::CheckDeviceState([In] HWND hDestinationWindow) + IDirect3DDevice9Ex::CheckDeviceState +
+ + +

Creates a render-target surface.

+
+

Width of the render-target surface, in pixels.

+

Height of the render-target surface, in pixels.

+

Member of the enumerated type, describing the format of the render target.

+

Member of the enumerated type, which describes the multisampling buffer type. This parameter specifies the antialiasing type for this render target. When this surface is passed to , its multisample type must be the same as that of the depth-stencil set by .

+

Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by . Passing a larger value returns the error, . The MultisampleQuality values of paired render targets, depth stencil surfaces, and the multisample type must all match.

+

Render targets are not lockable unless the application specifies TRUE for Lockable.

Note that lockable render targets reduce performance on some graphics hardware. The readback performance (moving data from video memory to system memory) depends on the type of hardware used (AGP vs. PCI Express) and is usually far lower than upload performance (moving data from system to video memory). If you need read access to render targets, use GetRenderTargetData instead of lockable render targets.

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

Combination of one or more constants which can be OR'd together. Value of 0 indicates no usage.

+

Address of a reference to an interface.

+ +

Render-target surfaces are placed in the memory class.

The creation of lockable, multisampled render targets is not supported.

+
+ + bb509713 + HRESULT IDirect3DDevice9Ex::CreateRenderTargetEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + IDirect3DDevice9Ex::CreateRenderTargetEx +
+ + +

Create an off-screen surface.

+
+

Width of the surface.

+

Height of the surface.

+

Format of the surface. See .

+

Surface pool type. See .

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

Combination of one or more constants which can be OR'd together. Value of 0 indicates no usage.

+

Pointer to the interface created.

+ +

will return a surface that has identical characteristics to a surface created by the DirectX 8.x method CreateImageSurface.

is the appropriate pool for use with the and .

is not allowed when creating an offscreen plain surface. For more information about memory pools, see .

Off-screen plain surfaces are always lockable, regardless of their pool types.

+
+ + bb509712 + HRESULT IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx +
+ + +

Creates a depth-stencil surface.

+
+

Width of the depth-stencil surface, in pixels.

+

Height of the depth-stencil surface, in pixels.

+

Member of the enumerated type, describing the format of the depth-stencil surface. This value must be one of the enumerated depth-stencil formats for this device.

+

Member of the enumerated type, describing the multisampling buffer type. This value must be one of the allowed multisample types. When this surface is passed to , its multisample type must be the same as that of the render target set by .

+

Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by . Passing a larger value returns the error . The MultisampleQuality values of paired render targets, depth stencil surfaces, and the MultiSample type must all match.

+

Set this flag to TRUE to enable z-buffer discarding, and otherwise. If this flag is set, the contents of the depth stencil buffer will be invalid after calling either or with a different depth surface.

This flag has the same behavior as the constant, , in .

+

Reserved. Set this parameter to null. This parameter can be used in Direct3D 9 for Windows Vista to share resources.

+

Combination of one or more constants which can be OR'd together. Value of 0 indicates no usage.

+

Address of a reference to an interface, representing the created depth-stencil surface resource.

+ +

The memory class of the depth-stencil buffer is always .

+
+ + bb509711 + HRESULT IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx +
+ + +

Resets the type, size, and format of the swap chain with all other surfaces persistent.

+
+

Pointer to a structure, describing the new presentation parameters. This value cannot be null.

When switching to full-screen mode, Direct3D will try to find a desktop format that matches the back buffer format, so that back buffer and front buffer formats will be identical (to eliminate the need for color conversion).

When this method returns:

  • BackBufferCount, BackBufferWidth, and BackBufferHeight are set to zero.
  • BackBufferFormat is set to for windowed mode only; a full-screen mode must specify a format.
+

Pointer to a structure that describes the properties of the desired display mode. This value must be provided for fullscreen applications, but can be null for windowed applications.

+

The method can return: , or (see D3DERR).

If this method returns or then the application can only call , or release the interface reference; any other API call will cause an exception.

+ +

If a call to fails, the device will be placed in the lost state (as indicated by a return value of from a call to ). Refer to and Lost Device Behavior Changes for further information concerning the use of in the context of lost devices.

Unlike previous versions of DirectX, calling does not cause surfaces, textures or state information to be lost.

Pixel shaders and vertex shaders survive calls for Direct3D 9. They do not need to be re-created explicitly by the application.

There are two different types of swap chains: full-screen or windowed. If the new swap chain is full-screen, the adapter will be placed in the display mode that matches the new size.

Applications can expect messages to be sent to them during this call (for example, before this call is returned); applications should take precautions not to call into Direct3D at this time.

A call to will fail if called on a different thread than that used to create the device being reset.

can be specified for the windowed mode back buffer format when calling , , and . This means the application does not have to query the current desktop format before calling for windowed mode. For full-screen mode, the back buffer format must be specified. Setting BackBufferCount equal to zero (BackBufferCount = 0) results in one back buffer.

When trying to reset more than one display adapter in a group, set pPresentationParameters to point to an array of structures, one for each display in the adapter group.

If a multihead device was created with , requires an array of structures wherein each structure must specify a full-screen display. To switch back to windowed mode, the application must destroy the device and re-create a non-multihead device in windowed mode.

+
+ + bb174344 + HRESULT IDirect3DDevice9Ex::ResetEx([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] void* pFullscreenDisplayMode) + IDirect3DDevice9Ex::ResetEx +
+ + +

Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings.

+
+

An unsigned integer specifying the swap chain.

+

Pointer to a indicating the type of screen rotation the application will do. The value returned through this reference is important when the flag is used; otherwise, it can be set to null.

+

Pointer to a structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode. Can be set to null.

+ + bb509714 + HRESULT IDirect3DDevice9Ex::GetDisplayModeEx([In] unsigned int iSwapChain,[Out] D3DDISPLAYMODEEX* pMode,[In] void* pRotation) + IDirect3DDevice9Ex::GetDisplayModeEx +
+ + +

Get or sets the priority of the GPU thread.

+
+ +

Use to set the priority of a thread.

This method will retrieve the priority of the thread stored with the Direct3D device even if it was created with the flag.

+
+ + bb174341 + GetGPUThreadPriority / SetGPUThreadPriority + GetGPUThreadPriority + HRESULT IDirect3DDevice9Ex::GetGPUThreadPriority([Out] int* pPriority) +
+ + +

Retrieves or sets the number of frames of data that the system is allowed to queue.

+
+ +

Frame latency is the number of frames that are allowed to be stored in a queue, before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue.

It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

+
+ + bb174342 + GetMaximumFrameLatency / SetMaximumFrameLatency + GetMaximumFrameLatency + HRESULT IDirect3DDevice9Ex::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) +
+ + +

Applications use the methods of the interface to create Microsoft Direct3D objects and set up the environment. This interface includes methods for enumerating and retrieving capabilities of the device.

+
+ +

The interface is obtained by calling the Direct3DCreate9 function.

The LPDIRECT3D9 and PDIRECT3D9 types are defined as references to the interface.

typedef struct  *LPDIRECT3D9, *PDIRECT3D9;
+
+ + bb174300 + IDirect3D9 + IDirect3D9 +
+ + + Create an IDirect3D9 object and return an interface to it. + + + The Direct3D object is the first Direct3D COM object that your graphical application needs to create and the last object that your application needs to release. Functions for enumerating and retrieving capabilities of a device are accessible through the Direct3D object. This enables applications to select devices without creating them. Create an IDirect3D9 object as shown here: + LPDIRECT3D9 g_pD3D = NULL; if( NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) return E_FAIL; + + The IDirect3D9 interface supports enumeration of active display adapters and allows the creation of objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), those devices will not be included in the enumeration. Creating a new IDirect3D9 interface will expose the new devices. D3D_SDK_VERSION is passed to this function to ensure that the header files against which an application is compiled match the version of the runtime DLL's that are installed on the machine. D3D_SDK_VERSION is only changed in the runtime when a header change (or other code change) would require an application to be rebuilt. If this function fails, it indicates that the header file version does not match the runtime DLL version. For an example, see {{Creating a Device (Direct3D 9)}}. + + + + + Checks the version of D3DX runtime against the version of this library.. + + + + + Determines whether a depth-stencil format is compatible with a render-target format in a particular display mode. + + The adapter. + Type of the device. + The adapter format. + The render target format. + The depth stencil format. + If the depth-stencil format is compatible with the render-target format in the display mode, this method returns true + HRESULT IDirect3D9::CheckDepthStencilMatch([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT RenderTargetFormat,[In] D3DFORMAT DepthStencilFormat) + + + + Determines whether a depth-stencil format is compatible with a render-target format in a particular display mode. + + The adapter. + Type of the device. + The adapter format. + The render target format. + The depth stencil format. + The result. + + If the depth-stencil format is compatible with the render-target format in the display mode, this method returns true + + HRESULT IDirect3D9::CheckDepthStencilMatch([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT RenderTargetFormat,[In] D3DFORMAT DepthStencilFormat) + + + + Determines whether a surface format is available as a specified resource type and can be used as a texture, depth-stencil buffer, or render target, or any combination of the three, on a device representing this adapter. + + The adapter. + Type of the device. + The adapter format. + The usage. + Type of the resource. + The check format. + + If the format is compatible with the specified device for the requested usage, this method returns true + + HRESULT IDirect3D9::CheckDeviceFormat([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] unsigned int Usage,[In] D3DRESOURCETYPE RType,[In] D3DFORMAT CheckFormat) + + + + Determines whether a surface format is available as a specified resource type and can be used as a texture, depth-stencil buffer, or render target, or any combination of the three, on a device representing this adapter. + + The adapter. + Type of the device. + The adapter format. + The usage. + Type of the resource. + The check format. + The result. + If the format is compatible with the specified device for the requested usage, this method returns true + HRESULT IDirect3D9::CheckDeviceFormat([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] unsigned int Usage,[In] D3DRESOURCETYPE RType,[In] D3DFORMAT CheckFormat) + + + + Tests the device to see if it supports conversion from one display format to another. + + The adapter. + Type of the device. + The source format. + The target format. + + True if the method succeeds. + + HRESULT IDirect3D9::CheckDeviceFormatConversion([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SourceFormat,[In] D3DFORMAT TargetFormat) + + + + Tests the device to see if it supports conversion from one display format to another. + + The adapter. + Type of the device. + The source format. + The target format. + The result. + True if the method succeeds. + HRESULT IDirect3D9::CheckDeviceFormatConversion([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SourceFormat,[In] D3DFORMAT TargetFormat) + + + + Determines if a multisampling technique is available on this device. + + The adapter. + Type of the device. + The surface format. + if set to true [windowed]. + Type of the multisample. + + f the device can perform the specified multisampling method, this method returns true + + HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels) + + + + Determines if a multisampling technique is available on this device. + + The adapter. + Type of the device. + The surface format. + if set to true [windowed]. + Type of the multisample. + The quality levels. + + f the device can perform the specified multisampling method, this method returns true + + HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels) + + + + Determines if a multisampling technique is available on this device. + + The adapter. + Type of the device. + The surface format. + if set to true [windowed]. + Type of the multisample. + The quality levels. + The result. + f the device can perform the specified multisampling method, this method returns true + HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels) + + + + Verifies whether a hardware accelerated device type can be used on this adapter. + + The adapter. + Type of the device. + The adapter format. + The back buffer format. + if set to true [windowed]. + + true if the device can be used on this adapter + + HRESULT IDirect3D9::CheckDeviceType([In] unsigned int Adapter,[In] D3DDEVTYPE DevType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT BackBufferFormat,[In] BOOL bWindowed) + + + + Verifies whether a hardware accelerated device type can be used on this adapter. + + The adapter. + Type of the device. + The adapter format. + The back buffer format. + if set to true [windowed]. + The result. + true if the device can be used on this adapter + HRESULT IDirect3D9::CheckDeviceType([In] unsigned int Adapter,[In] D3DDEVTYPE DevType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT BackBufferFormat,[In] BOOL bWindowed) + + + + Get the physical display adapters present in the system when this was instantiated. + + The adapter. + The physical display adapters + HRESULT IDirect3D9::GetAdapterIdentifier([In] unsigned int Adapter,[In] unsigned int Flags,[Out] D3DADAPTER_IDENTIFIER9* pIdentifier) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Registers a pluggable software device. Software devices provide software rasterization enabling applications to access a variety of software rasterizers.

+
+

Pointer to the initialization function for the software device to be registered.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: . The method call is invalid. For example, a method's parameter may have an invalid value: .

+ +

If the user's computer provides no special hardware acceleration for 3D operations, your application might emulate 3D hardware in software. Software rasterization devices emulate the functions of color 3D hardware in software. A software device runs more slowly than a hal. However, software devices take advantage of any special instructions supported by the CPU to increase performance. Instruction sets include the AMD 3DNow! instruction set on some AMD processors and the MMX instruction set supported by many Intel processors. Direct3D uses the 3D-Now! instruction set to accelerate transformation and lighting operations and the MMX instruction set to accelerate rasterization.

Software devices communicate with Direct3D through an interface similar to the hardware device driver interface (DDI).

Software devices are loaded by the application and registered with the object. Direct3D uses the software device for rendering.

The Direct3D Driver Development Kit (DDK) provides the documentation and headers for developing pluggable software devices.

+
+ + bb174321 + HRESULT IDirect3D9::RegisterSoftwareDevice([In] void* pInitializeFunction) + IDirect3D9::RegisterSoftwareDevice +
+ + +

Returns the number of adapters on the system.

+
+

A UINT value that denotes the number of adapters on the system at the time this interface was instantiated.

+ + bb174315 + unsigned int IDirect3D9::GetAdapterCount() + IDirect3D9::GetAdapterCount +
+ + +

Describes the physical display adapters present in the system when the interface was instantiated.

+
+ No documentation. + No documentation. + No documentation. + + bb174317 + HRESULT IDirect3D9::GetAdapterIdentifier([In] unsigned int Adapter,[In] unsigned int Flags,[Out] D3DADAPTER_IDENTIFIER9* pIdentifier) + IDirect3D9::GetAdapterIdentifier +
+ + +

Returns the number of display modes available on this adapter.

+
+

Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Identifies the format of the surface type using . Use EnumAdapterModes to see the valid formats.

+

This method returns the number of display modes on this adapter or zero if Adapter is greater than or equal to the number of adapters on the system.

+ + bb174318 + unsigned int IDirect3D9::GetAdapterModeCount([In] unsigned int Adapter,[In] D3DFORMAT Format) + IDirect3D9::GetAdapterModeCount +
+ + +

Queries the device to determine whether the specified adapter supports the requested format and display mode. This method could be used in a loop to enumerate all the available adapter modes.

+
+

Ordinal number denoting the display adapter to enumerate. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns when this value equals or exceeds the number of display adapters in the system.

+

Allowable pixel formats. See Remarks.

+

Represents the display-mode index which is an unsigned integer between zero and the value returned by GetAdapterModeCount minus one.

+

A reference to the available display mode of type . See Remarks.

+ +

An application supplies a display mode and a format to EnumAdapterModes which returns a display mode. This method could be used in a loop to enumerate all available display modes.

The application specifies a format and the enumeration is restricted to those display modes that exactly match the format (alpha is ignored). Allowed formats (which are members of ) are as follows:

In addition, EnumAdapterModes treats pixel formats 565 and 555 as equivalent, and returns the correct version. The difference comes into play only when the application locks the back buffer and there is an explicit flag that the application must set in order to accomplish this.

+
+ + bb174314 + HRESULT IDirect3D9::EnumAdapterModes([In] unsigned int Adapter,[In] D3DFORMAT Format,[In] unsigned int Mode,[Out] D3DDISPLAYMODE* pMode) + IDirect3D9::EnumAdapterModes +
+ + +

Retrieves the current display mode of the adapter.

+
+

Ordinal number that denotes the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Pointer to a structure, to be filled with information describing the current adapter's mode.

+ +

GetAdapterDisplayMode will not return the correct format when the display is in an extended format, such as 2:10:10:10. Instead, it returns the format X8R8G8B8.

+
+ + bb174316 + HRESULT IDirect3D9::GetAdapterDisplayMode([In] unsigned int Adapter,[Out] D3DDISPLAYMODE* pMode) + IDirect3D9::GetAdapterDisplayMode +
+ + +

Verifies whether a hardware accelerated device type can be used on this adapter.

+
+

Ordinal number denoting the display adapter to enumerate. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns when this value equals or exceeds the number of display adapters in the system.

+

Member of the enumerated type, indicating the device type to check.

+

Member of the enumerated type, indicating the format of the adapter display mode for which the device type is to be checked. For example, some devices will operate only in 16-bits-per-pixel modes.

+

Back buffer format. For more information about formats, see . This value must be one of the render-target formats. You can use GetAdapterDisplayMode to obtain the current format. For windowed applications, the back buffer format does not need to match the display mode format if the hardware supports color conversion. The set of possible back buffer formats is constrained, but the runtime will allow any valid back buffer format to be presented to any desktop format. There is the additional requirement that the device be operable in the desktop because devices typically do not operate in 8 bits per pixel modes. Full-screen applications cannot do color conversion. is allowed for windowed mode.

+

Value indicating whether the device type will be used in full-screen or windowed mode. If set to TRUE, the query is performed for windowed applications; otherwise, this value should be set .

+

If the device can be used on this adapter, is returned. is returned if Adapter equals or exceeds the number of display adapters in the system. is also returned if CheckDeviceType specified a device that does not exist. is returned if the requested back buffer format is not supported, or if hardware acceleration is not available for the specified formats.

+ +

A hal device type requires hardware acceleration. Applications can use CheckDeviceType to determine if the needed hardware and drivers are present to support a hal device.

Full-screen applications should not specify a DisplayFormat that contains an alpha channel. This will result in a failed call. Note that an alpha channel can be present in the back buffer but the two display formats must be identical in all other respects. For example, if DisplayFormat = , valid values for BackBufferFormat include and but exclude .

The following code fragment shows how you could use CheckDeviceType to test whether a certain device type can be used on this adapter.

 if(SUCCEEDED(pD3Device->CheckDeviceType(D3DADAPTER_DEFAULT,  ,  DisplayFormat,  BackBufferFormat,  bIsWindowed))) return ;	
+            // There is no HAL on this adapter using this render-target format. 	
+            // Try again, using another format.	
+            

This code returns if the device can be used on the default adapter with the specified surface format.

Using CheckDeviceType to test for compatibility between a back buffer that differs from the display format will return appropriate values. This means that the call will reflect device capabilities. If the device cannot render to the requested back-buffer format, the call will still return . If the device can render to the format, but cannot perform the color-converting presentation, the return value will also be . Applications can discover hardware support for the presentation itself by calling CheckDeviceFormatConversion. No software emulation for the color-converting presentation itself will be offered.

+
+ + bb174312 + HRESULT IDirect3D9::CheckDeviceType([In] unsigned int Adapter,[In] D3DDEVTYPE DevType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT BackBufferFormat,[In] BOOL bWindowed) + IDirect3D9::CheckDeviceType +
+ + +

Determines whether a surface format is available as a specified resource type and can be used as a texture, depth-stencil buffer, or render target, or any combination of the three, on a device representing this adapter.

+
+

Ordinal number denoting the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns when this value equals or exceeds the number of display adapters in the system.

+

Member of the enumerated type, identifying the device type.

+

Member of the enumerated type, identifying the format of the display mode into which the adapter will be placed.

+

Requested usage options for the surface. Usage options are any combination of and D3DUSAGE_QUERY constants (only a subset of the constants are valid for CheckDeviceFormat; see the table on the page).

+

Resource type requested for use with the queried format. Member of .

+

Format of the surfaces which may be used, as defined by Usage. Member of .

+

If the format is compatible with the specified device for the requested usage, this method returns .

is returned if Adapter equals or exceeds the number of display adapters in the system, or if DeviceType is unsupported.

is returned if the format is not acceptable to the device for this usage.

+ +

Here are some examples using CheckDeviceFormat to check for hardware support of:

  • An off-screen plain surface format - Specify Usage = 0 and RType = .
  • A depth-stencil format - The following snippet tests for the passed in depth-stencil format:
      IsDepthFormatExisting(  DepthFormat,  AdapterFormat ) 	
    +            {  hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT, , AdapterFormat, , , DepthFormat); return SUCCEEDED( hr );	
    +            }

    See Selecting a Device (Direct3D 9) for more detail on the enumeration process.

  • Can this texture be rendered in a particular format - Given the current display mode, this example shows how to verify that the texture format is compatible with the specific back-buffer format:
      IsTextureFormatOk(  TextureFormat,  AdapterFormat ) 	
    +            {  hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT, , AdapterFormat, 0, , TextureFormat); return SUCCEEDED( hr );	
    +            }
  • Alpha blending in a pixel shader - Set Usage to . Expect this to fail for all floating-point render targets.
  • Autogeneration of mipmaps - Set Usage to . If the mipmap automatic generation fails, the application will get a non-mipmapped texture. Calling this method is considered a hint, so this method can return (a valid success code) if the only thing that fails is the mipmap generation. For more information about mipmap generation, see Automatic Generation of Mipmaps (Direct3D 9).

When migrating code from Direct3D 9 to Direct3D 10, the Direct3D 10 equivalent to CheckDeviceFormat is CheckFormatSupport.

+
+ + bb174309 + HRESULT IDirect3D9::CheckDeviceFormat([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] unsigned int Usage,[In] D3DRESOURCETYPE RType,[In] D3DFORMAT CheckFormat) + IDirect3D9::CheckDeviceFormat +
+ + +

Determines if a multisampling technique is available on this device.

+
+

Ordinal number denoting the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns when this value equals or exceeds the number of display adapters in the system. See Remarks.

+

Member of the enumerated type, identifying the device type.

+

Member of the enumerated type that specifies the format of the surface to be multisampled. For more information, see Remarks.

+

bool value. Specify TRUE to inquire about windowed multisampling, and specify to inquire about full-screen multisampling.

+

Member of the enumerated type, identifying the multisampling technique to test.

+

pQualityLevels returns the number of device-specific sampling variations available with the given sample type. For example, if the returned value is 3, then quality levels 0, 1 and 2 can be used when creating resources with the given sample count. The meanings of these quality levels are defined by the device manufacturer and cannot be queried through D3D. For example, for a particular device different quality levels at a fixed sample count might refer to different spatial layouts of the sample locations or different methods of resolving. This can be null if it is not necessary to return the quality levels.

+

If the device can perform the specified multisampling method, this method returns . is returned if the Adapter or MultiSampleType parameters are invalid. This method returns if the queried multisampling technique is not supported by this device. is returned if DeviceType does not apply to this adapter.

+ +

This method is intended for use with both render-target and depth-stencil surfaces because you must create both surfaces multisampled if you want to use them together.

The following code fragment shows how you could use CheckDeviceMultiSampleType to test for devices that support a specific multisampling method.

 if( SUCCEEDED(pD3D->CheckDeviceMultiSampleType( pCaps->AdapterOrdinal,  pCaps->DeviceType, BackBufferFormat,  , , null ) ) && SUCCEEDED(pD3D->CheckDeviceMultiSampleType( pCaps->AdapterOrdinal,  pCaps->DeviceType, DepthBufferFormat,  , , null ) ) ) return ;	
+            

The preceding code will return if the device supports the full-screen multisampling method with the surface format.

See the remarks in for additional information on working with and setting multisample types and quality levels.

+
+ + bb174311 + HRESULT IDirect3D9::CheckDeviceMultiSampleType([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SurfaceFormat,[In] BOOL Windowed,[In] D3DMULTISAMPLE_TYPE MultiSampleType,[Out] unsigned int* pQualityLevels) + IDirect3D9::CheckDeviceMultiSampleType +
+ + +

Determines whether a depth-stencil format is compatible with a render-target format in a particular display mode.

+
+

Ordinal number denoting the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Member of the enumerated type, identifying the device type.

+

Member of the enumerated type, identifying the format of the display mode into which the adapter will be placed.

+

Member of the enumerated type, identifying the format of the render-target surface to be tested.

+

Member of the enumerated type, identifying the format of the depth-stencil surface to be tested.

+

If the depth-stencil format is compatible with the render-target format in the display mode, this method returns . can be returned if one or more of the parameters is invalid. If a depth-stencil format is not compatible with the render target in the display mode, then this method returns .

+ +

This method is provided to enable applications to work with hardware requiring that certain depth formats can only work with certain render-target formats.

The behavior of this method has been changed for DirectX 8.1. This method now pays attention to the D24x8 and D32 depth-stencil formats. The previous version assumed that these formats would always be usable with 32- or 16-bit render targets. This method will now return for these formats only if the device is capable of mixed-depth operations.

The following code fragment shows how you could use CheckDeviceFormat to validate a depth stencil format.

  IsDepthFormatOk( DepthFormat,   AdapterFormat,   BackBufferFormat)	
+            { // Verify that the depth format exists  hr = pD3D->CheckDeviceFormat(D3DADAPTER_DEFAULT, , AdapterFormat, , , DepthFormat); if(FAILED(hr)) return ; // Verify that the depth format is compatible hr = pD3D->CheckDepthStencilMatch(D3DADAPTER_DEFAULT, , AdapterFormat, BackBufferFormat, DepthFormat); return SUCCEEDED(hr); }	
+            

The preceding call will return if DepthFormat cannot be used in conjunction with AdapterFormat and BackBufferFormat.

+
+ + bb174308 + HRESULT IDirect3D9::CheckDepthStencilMatch([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT AdapterFormat,[In] D3DFORMAT RenderTargetFormat,[In] D3DFORMAT DepthStencilFormat) + IDirect3D9::CheckDepthStencilMatch +
+ + +

Tests the device to see if it supports conversion from one display format to another.

+
+

Display adapter ordinal number. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns when this value equals or exceeds the number of display adapters in the system.

+

Device type. Member of the enumerated type.

+

Source adapter format. Member of the enumerated type.

+

Target adapter format. Member of the enumerated type.

+

If the method succeeds, the return value is . If the method fails, the return value is . The method will return when the hardware does not support conversion between the two formats.

+ +

Using CheckDeviceType to test for compatibility between a back buffer that differs from the display format will return appropriate values. This means that the call will reflect device capabilities. If the device cannot render to the requested back buffer format, the call will still return . If the device can render to the format, but cannot perform the color-converting presentation, the return value will also be . Applications can discover hardware support for the presentation itself by calling CheckDeviceFormatConversion. No software emulation for the color-converting presentation itself will be offered.

CheckDeviceFormatConversion can also be used to determine which combinations of source surface formats and destination surface formats are permissible in calls to StretchRect.

Color conversion is restricted to the following source and target formats.

  • The source format must be a FOURCC format or a valid back buffer format. For a list of these, see FourCC Formats and BackBuffer or Display Formats.
  • The target format must be one of these unsigned formats:

    ?

+
+ + bb174310 + HRESULT IDirect3D9::CheckDeviceFormatConversion([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] D3DFORMAT SourceFormat,[In] D3DFORMAT TargetFormat) + IDirect3D9::CheckDeviceFormatConversion +
+ + +

Retrieves device-specific information about a device.

+
+

Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Member of the enumerated type. Denotes the device type.

+

Pointer to a structure to be filled with information describing the capabilities of the device.

+ +

The application should not assume the persistence of vertex processing capabilities across Direct3D device objects. The particular capabilities that a physical device exposes may depend on parameters supplied to CreateDevice. For example, the capabilities may yield different vertex processing capabilities before and after creating a Direct3D Device Object with hardware vertex processing enabled. For more information see the description of .

+
+ + bb174320 + HRESULT IDirect3D9::GetDeviceCaps([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[Out] D3DCAPS9* pCaps) + IDirect3D9::GetDeviceCaps +
+ + +

Returns the handle of the monitor associated with the Direct3D object.

+
+

Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Handle of the monitor associated with the Direct3D object.

+ +

As shown in the following code fragment, which illustrates how to obtain a handle to the monitor associated with a given device, use GetDirect3D to return the Direct3D enumerator from the device and use GetCreationParameters to retrieve the value for Adapter.

 if( FAILED( pDevice->GetCreationParameters(  &Parameters ) ) ) return ; if( FAILED( pDevice->GetDirect3D(&pD3D) ) ) return ; hMonitor = pD3D->GetAdapterMonitor(Parameters.AdapterOrdinal); pD3D->Release();	
+            
+
+ + bb174319 + HMONITOR IDirect3D9::GetAdapterMonitor([In] unsigned int Adapter) + IDirect3D9::GetAdapterMonitor +
+ + +

Creates a device to represent the display adapter.

+
+

Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Member of the enumerated type that denotes the desired device type. If the desired device type is not available, the method will fail.

+

The focus window alerts Direct3D when an application switches from foreground mode to background mode. See Remarks.

  • For full-screen mode, the window specified must be a top-level window.
  • For windowed mode, this parameter may be null only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-null value.
+

Combination of one or more options that control device creation. For more information, see .

+

Pointer to a structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies , pPresentationParameters is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created.

For Windows 2000 and Windows XP, the full-screen device display refresh rate is set in the following order:

  1. User-specified nonzero ForcedRefreshRate registry key, if supported by the device.
  2. Application-specified nonzero refresh rate value in the presentation parameter.
  3. Refresh rate of the latest desktop, if supported by the device.
  4. 75 hertz if supported by the device.
  5. 60 hertz if supported by the device.
  6. Device default.

An unsupported refresh rate will default to the closest supported refresh rate below it. For example, if the application specifies 63 hertz, 60 hertz will be used. There are no supported refresh rates below 57 hertz.

pPresentationParameters is both an input and an output parameter. Calling this method may change several members including:

  • If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns.
  • If BackBufferFormat equals before the method is called, it will be changed when the method returns.
+

Address of a reference to the returned interface, which represents the created device.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , , .

+ +

This method returns a fully working device interface, set to the required display mode (or windowed), and allocated with the appropriate back buffers. To begin rendering, the application needs only to create and set a depth buffer (assuming EnableAutoDepthStencil is in ).

When you create a Direct3D device, you supply two different window parameters: a focus window (hFocusWindow) and a device window (the hDeviceWindow in ). The purpose of each window is:

  • The focus window alerts Direct3D when an application switches from foreground mode to background mode (via Alt-Tab, a mouse click, or some other method). A single focus window is shared by each device created by an application.
  • The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during Present.

This method should not be run during the handling of WM_CREATE. An application should never pass a window handle to Direct3D while handling WM_CREATE. Any call to create, release, or reset the device must be done using the same thread as the window procedure of the focus window.

Note that , , and are mutually exclusive flags, and at least one of these vertex processing flags must be specified when calling this method.

Back buffers created as part of the device are only lockable if is specified in the presentation parameters. (Multisampled back buffers and depth surfaces are never lockable.)

The methods Reset, , and TestCooperativeLevel must be called from the same thread that used this method to create a device.

can be specified for the windowed mode back buffer format when calling CreateDevice, Reset, and CreateAdditionalSwapChain. This means the application does not have to query the current desktop format before calling CreateDevice for windowed mode. For full-screen mode, the back buffer format must be specified.

If you attempt to create a device on a 0x0 sized window, CreateDevice will fail.

+
+ + bb174313 + HRESULT IDirect3D9::CreateDevice([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] HWND hFocusWindow,[In] D3DCREATE BehaviorFlags,[In, Buffer] D3DPRESENT_PARAMETERS* pPresentationParameters,[Out, Fast] IDirect3DDevice9** ppReturnedDeviceInterface) + IDirect3D9::CreateDevice +
+ + + Gets the adapters. + + + + +

Returns the number of adapters on the system.

+
+ + bb174315 + GetAdapterCount + GetAdapterCount + unsigned int IDirect3D9::GetAdapterCount() +
+ + +

Applications use the methods of the interface (which inherits from ) to create Microsoft Direct3D 9Ex objects and set up the environment. This interface includes methods for enumerating and retrieving capabilities of the device and is available when the underlying device implementation is compliant with Windows Vista.

+
+ +

The interface is obtained by calling the Direct3DCreate9Ex function.

The LPDIRECT3D9EX and PDIRECT3D9EX types are defined as references to the interface:

 typedef struct  *LPDIRECT3D9EX, *PDIRECT3D9EX;	
+            
+
+ + bb174301 + IDirect3D9Ex + IDirect3D9Ex +
+ + + Creates an object and returns an interface to it. + + + The object is the first object that the application creates and the last object that the application releases. Functions for enumerating and retrieving capabilities of a device are accessible through the IDirect3D9Ex object. This enables applications to select devices without creating them. The interface supports enumeration of active display adapters and allows the creation of IDirect3D9Ex objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), these devices are not included in the enumeration. Creating a new IDirect3D9Ex interface will expose the new devices. Pass the D3D_SDK_VERSION flag to this function to ensure that header files used in the compiled application match the version of the installed runtime DLLs. D3D_SDK_VERSION is changed in the runtime only when a header or another code change would require rebuilding the application. If this function fails, it indicates that the versions of the header file and the runtime DLL do not match. Note??Direct3DCreate9Ex is supported only in Windows Vista, Windows Server 2008, and Windows 7. Earlier versions of the D3D9.dll library do not include Direct3D9Ex and Direct3DCreate9Ex. + + D3DERR_NOTAVAILABLE if Direct3DEx features are not supported (no WDDM driver is installed) or if the SDKVersion does not match the version of the DLL. D3DERR_OUTOFMEMORY if out-of-memory conditions are detected when creating the enumerator object. S_OK if the creation of the enumerator object is successful. + HRESULT Direct3DCreate9Ex([None] int SDKVersion,[None] IDirect3D9Ex** arg1) + + + + Retrieves the current display mode and rotation settings of the adapter. + + The adapter. + structure containing data about the display mode of the adapter + HRESULT IDirect3D9Ex::GetAdapterDisplayModeEx([In] unsigned int Adapter,[Out] D3DDISPLAYMODEEX* pMode,[Out] D3DDISPLAYROTATION* pRotation) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Returns the number of display modes available.

+
+

Ordinal number denoting the display adapter from which to retrieve the display mode count.

+

Specifies the characteristics of the desired display mode. See .

+

The number of display modes available. A return of value zero from this method is an indication that no such display mode is supported or simply this monitor is no longer available.

+ +

Events such as display mode changes on other heads of the same hardware, monitor change or its connection status change, and desktop extension/unextension could all affect the number of display mode available.

To fullscreen applications, returned from PresentEx or CheckDeviceState is the indication of display mode setting failure due to those events.

To increase the chance of setting a currently available display mode successfully, fullscreen applications should try to requery the available display mode list upon receiving .

+
+ + bb174306 + unsigned int IDirect3D9Ex::GetAdapterModeCountEx([In] unsigned int Adapter,[In] const D3DDISPLAYMODEFILTER* pFilter) + IDirect3D9Ex::GetAdapterModeCountEx +
+ + +

This method returns the actual display mode info based on the given mode index.

+
+

Ordinal number denoting the display adapter to enumerate. D3DADAPTER_DEFAULT is always the primary display adapter. This method returns when this value equals or exceeds the number of display adapters in the system.

+

See .

+

Represents the display-mode index which is an unsigned integer between zero and the value returned by GetAdapterModeCount minus one.

+

A reference to the available display mode of type .

+ + bb174303 + HRESULT IDirect3D9Ex::EnumAdapterModesEx([In] unsigned int Adapter,[In] const D3DDISPLAYMODEFILTER* pFilter,[In] unsigned int Mode,[Out] D3DDISPLAYMODEEX* pMode) + IDirect3D9Ex::EnumAdapterModesEx +
+ + +

Retrieves the current display mode and rotation settings of the adapter.

+
+

Ordinal number that denotes the display adapter to query. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Pointer to a structure indicating the type of screen rotation the application will do. The value returned through this reference is important when the flag is used; otherwise, it can be set to null.

+

Pointer to a structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode. Can be set to null.

+ +

GetAdapterDisplayModeEx does not return the correct format when the display is in an extended format, such as 2:10:10:10. Instead, it returns the format X8R8G8B8.

To windowed applications, a value of returned from PresentEx or CheckDeviceState indicates that the display mode changed and that the current display mode might have a different format. To avoid a color-converting Present blt, windowed applications can optionally get new display mode information by using this method and adjusting its swap chain format accordingly. This method returns if this head is no longer part of the desktop or if the monitor is disconnected.

+
+ + bb174304 + HRESULT IDirect3D9Ex::GetAdapterDisplayModeEx([In] unsigned int Adapter,[Out] D3DDISPLAYMODEEX* pMode,[Out] D3DDISPLAYROTATION* pRotation) + IDirect3D9Ex::GetAdapterDisplayModeEx +
+ + +

Creates a device to represent the display adapter.

+
+

Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter.

+

Specifies the type of device. See . If the desired device type is not available, the method will fail.

+

The focus window alerts Direct3D when an application switches from foreground mode to background mode. For full-screen mode, the window specified must be a top-level window. For windowed mode, this parameter may be null only if the hDeviceWindow member of pPresentationParameters is set to a valid, non-null value.

+

Combination of one or more options (see ) that control device creation.

+

Pointer to a structure, describing the presentation parameters for the device to be created. If BehaviorFlags specifies , this parameter is an array. Regardless of the number of heads that exist, only one depth/stencil surface is automatically created.

This parameter is both an input and an output parameter. Calling this method may change several members including:

  • If BackBufferCount, BackBufferWidth, and BackBufferHeight are 0 before the method is called, they will be changed when the method returns.
  • If BackBufferFormat equals before the method is called, it will be changed when the method returns.
+

The display mode for when the device is set to fullscreen. See . If BehaviorFlags specifies , this parameter is an array. This parameter must be null for windowed mode.

+

Address of a reference to the returned , which represents the created device.

+

This method returns when rendering device along with swapchain buffers are created successfully. is returned when any error other than invalid caller input is encountered.

+ + bb174302 + HRESULT IDirect3D9Ex::CreateDeviceEx([In] unsigned int Adapter,[In] D3DDEVTYPE DeviceType,[In] HWND hFocusWindow,[In] unsigned int BehaviorFlags,[In, Buffer] D3DPRESENT_PARAMETERS* pPresentationParameters,[In, Buffer, Optional] D3DDISPLAYMODEEX* pFullscreenDisplayMode,[Out, Fast] IDirect3DDevice9Ex** ppReturnedDeviceInterface) + IDirect3D9Ex::CreateDeviceEx +
+ + +

This method returns a unique identifier for the adapter that is specific to the adapter hardware. Applications can use this identifier to define robust mappings across various APIs (Direct3D 9, DXGI).

+
+

Ordinal number denoting the display adapter from which to retrieve the .

+

A unique identifier for the given adapter.

+ + bb174305 + HRESULT IDirect3D9Ex::GetAdapterLUID([In] unsigned int Adapter,[Out] LUID* pLUID) + IDirect3D9Ex::GetAdapterLUID +
+ + + Gets a collection of installed extended adapters. + + + + + A collection of + + + + + Driver levels support. + + None + + + + Supports for Direct3D7. + + + + + Supports for Direct3D8. + + + + + Supports for Direct3D9. + + + + +

Used to set and query effects, and to choose techniques. An effect object can contain multiple techniques to render the same effect.

+
+ +

The interface is obtained by calling , , or .

The LPD3DXEFFECT type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXEFFECT;	
+            
+
+ + bb205788 + ID3DXEffect + ID3DXEffect +
+ + + Starts an active technique. + + The number of passes needed to render the current technique. + HRESULT ID3DXEffect::Begin([Out] unsigned int* pPasses,[In] D3DXFX Flags) + + + + Compiles an effect from a file. + + The device. + Name of the file. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a file. + + The device. + Name of the file. + The preprocessor defines. + The include file. + The skip constants. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a file. + + The device. + Name of the file. + The preprocessor defines. + The include file. + The skip constants. + The flags. + The pool. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a memory buffer. + + The device. + The buffer. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a memory buffer. + + The device. + The buffer. + The preprocessor defines. + The include file. + The skip constants. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a memory buffer. + + The device. + The buffer. + The preprocessor defines. + The include file. + The skip constants. + The flags. + The pool. + An + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a stream. + + The device. + The stream. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a stream. + + The device. + The stream. + The preprocessor defines. + The include file. + The skip constants. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a stream. + + The device. + The stream. + The preprocessor defines. + The include file. + The skip constants. + The flags. + The pool. + An + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a string. + + The device. + The source data. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a string. + + The device. + The source data. + The preprocessor defines. + The include file. + The skip constants. + The flags. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Compiles an effect from a string. + + The device. + The source data. + The preprocessor defines. + The include file. + The skip constants. + The flags. + The pool. + + An + + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + + + + Set a contiguous range of shader constants with a memory copy. + + The handle. + The data. + + A object describing the result of the operation. + + HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes) + + + + Set a contiguous range of shader constants with a memory copy. + + The handle. + The data. + + A object describing the result of the operation. + + HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes) + + + + Set a contiguous range of shader constants with a memory copy. + + The handle. + The data. + The offset. + The count in bytes. + + A object describing the result of the operation. + + HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes) + + + + Set a contiguous range of shader constants with a memory copy. + + The handle. + The data. + The start index. + The count. + A object describing the result of the operation. + HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets a reference to the pool of shared parameters.

+
+

Pointer to a object.

+

This method always returns the value .

+ +

Pools contain shared parameters between effects. See Cloning and Sharing (Direct3D 9).

+
+ + bb205827 + HRESULT ID3DXEffect::GetPool([Out] ID3DXEffectPool** ppPool) + ID3DXEffect::GetPool +
+ + +

Sets the active technique.

+
+

Unique handle to the technique. See Handles (Direct3D 9).

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205834 + HRESULT ID3DXEffect::SetTechnique([In] D3DXHANDLE hTechnique) + ID3DXEffect::SetTechnique +
+ + +

Gets the current technique.

+
+

A unique identifier to the current technique. See Handles (Direct3D 9).

+ + bb205825 + D3DXHANDLE ID3DXEffect::GetCurrentTechnique() + ID3DXEffect::GetCurrentTechnique +
+ + +

Validate a technique.

+
+

Unique identifier. See Handles (Direct3D 9).

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , , , , , , , , , , , and .

+ + bb205835 + HRESULT ID3DXEffect::ValidateTechnique([In] D3DXHANDLE hTechnique) + ID3DXEffect::ValidateTechnique +
+ + +

Searches for the next valid technique, starting at the technique after the specified technique.

+
+

Unique identifier to a technique. See Handles (Direct3D 9). Specify null for this parameter to find the first valid technique.

+

Pointer to an identifier for the next technique. null is returned if this is the last technique. See Handles (Direct3D 9).

+ + bb205824 + HRESULT ID3DXEffect::FindNextValidTechnique([In] D3DXHANDLE hTechnique,[Out] D3DXHANDLE* pTechnique) + ID3DXEffect::FindNextValidTechnique +
+ + +

Determines if a parameter is used by the technique.

+
+

Unique identifier for the parameter. See Handles (Direct3D 9).

+

Unique identifier for the technique. See Handles (Direct3D 9).

+

Returns TRUE if the parameter is being used and returns if the parameter is not being used.

+ + bb205829 + BOOL ID3DXEffect::IsParameterUsed([In] D3DXHANDLE hParameter,[In] D3DXHANDLE hTechnique) + ID3DXEffect::IsParameterUsed +
+ + +

Starts an active technique.

+
+

DWORD that determines if state modified by an effect is saved and restored. The default value 0 specifies that and will save and restore all state modified by the effect (including pixel and vertex shader constants). Valid flags can be seen at Effect State Save and Restore Flags.

+

Pointer to a value returned that indicates the number of passes needed to render the current technique.

+ +

An application sets one active technique in the effect system by calling . The effect system responds by capturing all the pipeline state that can be changed by the technique in a state block. An application signals the end of a technique by calling , which uses the state block to restore the original state. The effect system, therefore, takes care of saving state when a technique becomes active and restoring state when a technique ends. If you choose to disable this save and restore functionality, see .

Within the and pair, an application uses to set the active pass, if any state changes occurred after the pass was activated, and to end the active pass.

+
+ + bb205815 + HRESULT ID3DXEffect::Begin([Out] unsigned int* pPasses,[In] D3DXFX Flags) + ID3DXEffect::Begin +
+ + +

Begins a pass, within the active technique.

+
+

A zero-based integer index into the technique.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

An application sets one active pass (within one active technique) in the effect system by calling . An application signals the end of the active pass by calling . and must occur in a matching pair, within a matching pair of and calls.

If the application changes any effect state using any of the Effect::Setx methods inside of a / matching pair, the application must call to set the update the device with the state changes. If no state changes occur within a and matching pair, it is not necessary to call .

+
+ + bb205817 + HRESULT ID3DXEffect::BeginPass([In] unsigned int Pass) + ID3DXEffect::BeginPass +
+ + +

Propagate state changes that occur inside of an active pass to the device before rendering.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

If the application changes any effect state using any of the ID3DXEffect::Setx methods inside of an / matching pair, the application must call before any DrawxPrimitive call to propagate state changes to the device before rendering. If no state changes occur within a and matching pair, it is not necessary to call .

This is slightly different for any shared parameters in a cloned effect. When a technique is active on a cloned effect (that is, when has been called but and has not been called), updates parameters that are not shared as expected. To update a shared parameter (only for a cloned effect whose technique is active), call to deactivate the technique and to reactivate the technique before calling .

+
+ + bb205819 + HRESULT ID3DXEffect::CommitChanges() + ID3DXEffect::CommitChanges +
+ + +

End an active pass.

+
+

This method always returns the value .

+ +

An application signals the end of rendering an active pass by calling . Each must be part of a matching pair of and calls.

Each matching pair of and calls must be located within a matching pair of and calls.

If the application changes any effect state using any of the Effect::Setx methods inside of a / matching pair, the application must call before any DrawxPrimitive call to propagate state changes to the device before rendering.

+
+ + bb205823 + HRESULT ID3DXEffect::EndPass() + ID3DXEffect::EndPass +
+ + +

Ends an active technique.

+
+

This method always returns the value .

+ +

All rendering in an effect is done within a matching pair of and calls. After all passes are rendered, must be called to end the active technique. The effect system responds by using the state block created when was called, to automatically restore the pipeline state before .

By default, the effect system takes care of saving state prior to a technique, and restoring state after a technique. If you choose to disable this save and restore functionality, see .

+
+ + bb205821 + HRESULT ID3DXEffect::End() + ID3DXEffect::End +
+ + +

Retrieves the device associated with the effect.

+
+

Address of a reference to an interface, representing the device associated with the effect.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Calling this method will increase the internal reference count for the interface. Be sure to call IUnknown::Release when you are done using the interface or you will have a memory leak.

+
+ + bb205826 + HRESULT ID3DXEffect::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXEffect::GetDevice +
+ + +

Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method should be called whenever the device is lost or before the user calls . Even if the device was not actually lost, is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling and then .

+
+ + bb205830 + HRESULT ID3DXEffect::OnLostDevice() + ID3DXEffect::OnLostDevice +
+ + +

Use this method to re-acquire resources and save initial state.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

should be called each time the device is reset (using ), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.

+
+ + bb205831 + HRESULT ID3DXEffect::OnResetDevice() + ID3DXEffect::OnResetDevice +
+ + +

Set the effect state manager.

+
+

A reference to the state manager. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

The is a user-implemented interface that furnishes callbacks into an application for setting device state from an effect.

+
+ + bb205833 + HRESULT ID3DXEffect::SetStateManager([In] ID3DXEffectStateManager* pManager) + ID3DXEffect::SetStateManager +
+ + +

Get the effect state manager.

+
+

Returns a reference to the state manager. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

The is a user-implemented interface that furnishes callbacks into an application for setting device state from an effect.

+
+ + bb205828 + HRESULT ID3DXEffect::GetStateManager([Out] ID3DXEffectStateManager** ppManager) + ID3DXEffect::GetStateManager +
+ + +

Start capturing state changes in a parameter block.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Capture effect parameter state changes until EndParameterBlock is called. Effect parameters include any state changes outside of a pass. Delete parameter blocks if they are no longer needed by calling DeleteParameterBlock.

+
+ + bb205816 + HRESULT ID3DXEffect::BeginParameterBlock() + ID3DXEffect::BeginParameterBlock +
+ + +

Stop capturing effect parameter state changes.

+
+

Returns a handle to the parameter state block.

+ +

All effect parameters that change state (after calling BeginParameterBlock and before calling EndParameterBlock) will be saved in an effect parameter state block. Use ApplyParameterBlock to apply this block of state changes to the effect system. Once you are finished with a state block use DeleteParameterBlock to free the memory.

+
+ + bb205822 + D3DXHANDLE ID3DXEffect::EndParameterBlock() + ID3DXEffect::EndParameterBlock +
+ + +

Apply the values in a state block to the current effect system state.

+
+

A handle to the parameter block. This is the handle returned by .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Capture effect parameter state changes in a parameter block by calling BeginParameterBlock; stop capturing state changes by calling EndParameterBlock. These state changes include any effect parameter changes that occur inside of a technique (including those outside of a pass). Once you are done with the parameter block, call DeleteParameterBlock to recover memory.

+
+ + bb205814 + HRESULT ID3DXEffect::ApplyParameterBlock([In] D3DXHANDLE hParameterBlock) + ID3DXEffect::ApplyParameterBlock +
+ + +

Delete a parameter block.

+
+

A handle to the parameter block. This is the handle returned by .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Parameter blocks are blocks of effect states. Use a parameter block to record state changes so that they can be applied later on with a single API call. When no longer needed, delete the parameter block to reduce memory usage.

+
+ + bb205820 + HRESULT ID3DXEffect::DeleteParameterBlock([In] D3DXHANDLE hParameterBlock) + ID3DXEffect::DeleteParameterBlock +
+ + +

Creates a copy of an effect.

+
+

Pointer to an interface, representing the device associated with the effect.

+

Pointer to an interface, containing the cloned effect.

+ +

Note??This function will not clone an effect if the user specifies during effect creation.

To update shared and non-shared parameters in an active technique of a cloned effect, see .

+
+ + bb205818 + HRESULT ID3DXEffect::CloneEffect([In] IDirect3DDevice9* pDevice,[Out] ID3DXEffect** ppEffect) + ID3DXEffect::CloneEffect +
+ + +

Set a contiguous range of shader constants with a memory copy.

+
+

Handle to the value to set, or the name of the value passed in as a string. Passing in a handle is more efficient. See Handles (Direct3D 9).

+

Pointer to a buffer containing the data to be set. SetRawValue checks for valid memory, but does not do any checking for valid data.

+

Number of bytes between the beginning of the effect data and the beginning of the effect constants you are going to set.

+

The size of the buffer to be set, in bytes.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following:E_INVALIDCALL.

+ +

SetRawValue is a very fast way to set effect constants since it performs a memory copy without performing validation or any data conversion (like converting a row-major matrix to a column-major matrix). Use SetRawValue to set a series of contiguous effect constants. For instance, you could set an array of twenty matrices with 20 calls to or by using a single SetRawValue.

All values are expected to be either matrix4x4s or float4s and all matrices are expected to be in column-major order. Int or float values are cast into a float4; therefore, it is highly recommended that you use SetRawValue with only float4 or matrix4x4 data.

+
+ + bb205832 + HRESULT ID3DXEffect::SetRawValue([In] D3DXHANDLE hParameter,[In] const void* pData,[In] unsigned int ByteOffset,[In] unsigned int Bytes) + ID3DXEffect::SetRawValue +
+ + + Gets or sets the current technique. + + + The technique. + + D3DXHANDLE ID3DXEffect::GetCurrentTechnique() + HRESULT ID3DXEffect::SetTechnique([In] D3DXHANDLE hTechnique) + + + +

Gets a reference to the pool of shared parameters.

+
+ +

Pools contain shared parameters between effects. See Cloning and Sharing (Direct3D 9).

+
+ + bb205827 + GetPool + GetPool + HRESULT ID3DXEffect::GetPool([Out] ID3DXEffectPool** ppPool) +
+ + +

Retrieves the device associated with the effect.

+
+ +

Calling this method will increase the internal reference count for the interface. Be sure to call IUnknown::Release when you are done using the interface or you will have a memory leak.

+
+ + bb205826 + GetDevice + GetDevice + HRESULT ID3DXEffect::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Get or sets the effect state manager.

+
+ +

The is a user-implemented interface that furnishes callbacks into an application for setting device state from an effect.

+
+ + bb205828 + GetStateManager / SetStateManager + GetStateManager + HRESULT ID3DXEffect::GetStateManager([Out] ID3DXEffectStateManager** ppManager) +
+ + +

The interface compiles an effect from a function or from a vertex shader.

+
+ +

The interface is obtained by calling , , or .

The LPD3DXEFFECTCOMPILER type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXEFFECTCOMPILER;	
+            
+
+ + bb205789 + ID3DXEffectCompiler + ID3DXEffectCompiler +
+ + + Initializes a new instance of the class. + + The data. + The defines. + The include file. + The flags. + HRESULT D3DXCreateEffectCompiler([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + + + + Compile an effect. + + The flags. + If a compilation errors occurs + Buffer containing the compiled effect. + HRESULT ID3DXEffectCompiler::CompileEffect([In] unsigned int Flags,[In] ID3DXBuffer** ppEffect,[In] ID3DXBuffer** ppErrorMsgs) + + + + Compiles a shader from an effect that contains one or more functions. + + The function handle. + The target. + The flags. + If a compilation errors occurs + The bytecode of the effect. + HRESULT ID3DXEffectCompiler::CompileShader([In] D3DXHANDLE hFunction,[In] const char* pTarget,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles a shader from an effect that contains one or more functions. + + The function handle. + The target. + The flags. + The constant table. + If a compilation errors occurs + The bytecode of the effect. + HRESULT ID3DXEffectCompiler::CompileShader([In] D3DXHANDLE hFunction,[In] const char* pTarget,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Creates an effect compiler from a file on disk containing an ASCII effect description . + + Name of the file. + The flags. + + An instance of + + HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + + + + Creates an effect compiler from a file on disk containing an ASCII effect description . + + Name of the file. + The defines. + The include file. + The flags. + + An instance of + + HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + + + + Creates an effect compiler from a memory buffer containing an ASCII effect description . + + The data. + The flags. + + An instance of + + HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + + + + Creates an effect compiler from a memory buffer containing an ASCII effect description . + + The data. + The defines. + The include file. + The flags. + + An instance of + + HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + + + + Creates an effect compiler from a stream containing an ASCII effect description . + + The stream. + The flags. + + An instance of + + HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + + + + Creates an effect compiler from a stream containing an ASCII effect description . + + The stream. + The defines. + The include file. + The flags. + An instance of + HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Toggles the literal status of a parameter. A literal parameter has a value that doesn't change during the lifetime of an effect.

+
+

Unique identifier to a parameter. See Handles (Direct3D 9).

+

Set to TRUE to make the parameter a literal, and if the parameter can change value during the shader lifetime.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This methods only changes whether the parameter is a literal or not. To change the value of a parameter, use a method like or .

This function must be called before the effect is compiled. Here is an example of how one might use this function:

 LPD3DXEFFECTCOMPILER pEffectCompiler; char errors[1000];  hr; hr = ("shader.fx", null, null, 0, &pEffectCompiler,  &errors); //In the fx file, literalInt is declared as an int. //By calling this function, the compiler will treat //it as a literal (i.e. #define) hr = pEffectCompiler->SetLiteral("literalInt", TRUE); //create ten different variations of the same effect LPD3DXBUFFER pEffects[10]; LPD3DXBUFFER pErrors; for(int i = 0; i < 10; ++i) { hr = pEffectCompiler->SetInt("literalInt", i); hr = pEffectCompiler->CompileEffect(0, &pEffects[i], &pErrors); }	
+            
+
+ + bb205793 + HRESULT ID3DXEffectCompiler::SetLiteral([In] D3DXHANDLE hParameter,[In] BOOL Literal) + ID3DXEffectCompiler::SetLiteral +
+ + +

Gets a literal status of a parameter. A literal parameter has a value that doesn't change during the lifetime of an effect.

+
+

Unique identifier to a parameter. See Handles (Direct3D 9).

+

Returns True if the parameter is a literal, and False otherwise.

+ +

This methods only changes whether the parameter is a literal or not. To change the value of a parameter, use a method like or .

+
+ + bb205792 + HRESULT ID3DXEffectCompiler::GetLiteral([In] D3DXHANDLE hParameter,[Out] BOOL* pLiteral) + ID3DXEffectCompiler::GetLiteral +
+ + +

Compile an effect.

+
+

Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See Flags for details.

+

Buffer containing the compiled effect. For more information about accessing the buffer, see .

+

Buffer containing at least the first compile error message that occurred. This includes effect compiler errors and high-level language compile errors. For more information about accessing the buffer, see .

+

If the method succeeds, the return value is .

If the arguments are invalid, the method will return .

If the method fails, the return value will be E_FAIL.

+ + bb205790 + HRESULT ID3DXEffectCompiler::CompileEffect([In] unsigned int Flags,[In] ID3DXBuffer** ppEffect,[In] ID3DXBuffer** ppErrorMsgs) + ID3DXEffectCompiler::CompileEffect +
+ + +

Compiles a shader from an effect that contains one or more functions.

+
+

Unique identifier to the function to be compiled. This value must not be null. See Handles (Direct3D 9).

+

Pointer to a shader profile which determines the shader instruction set. See or for a list of the profiles available.

+

Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See Flags for details.

+

Buffer containing the compiled shader. The compiler shader is an array of DWORDs. For more information about accessing the buffer, see .

+

Buffer containing at least the first compile error message that occurred. This includes effect compiler errors and high-level language compile errors. For more information about accessing the buffer, see .

+

Returns an interface, which can be used to access shader constants. This value can be null. If you compile your application as large address aware (that is, you use the /LARGEADDRESSAWARE linker option to handle addresses larger than 2 GB), you cannot use this parameter and must set it to null. Instead, you must use the function to retrieve the shader-constant table that is embedded inside the shader. In this call, you must pass the D3DXCONSTTABLE_LARGEADDRESSAWARE flag to the Flags parameter to specify to access up to 4 GB of virtual address space.

+

If the method succeeds, the return value is .

If the arguments are invalid, the method will return .

If the method fails, the return value will be E_FAIL.

+ +

Targets can be specified for vertex shaders, pixel shaders, and texture fill functions.

Vertex shader targetsvs_1_1, vs_2_0, vs_2_sw, vs_3_0
Pixel shader targetsps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0
Texture fill targetstx_0, tx_1

?

This method compiles a shader from a function that is written in a C-like language. For more information, see HLSL.

+
+ + bb205791 + HRESULT ID3DXEffectCompiler::CompileShader([In] D3DXHANDLE hFunction,[In] const char* pTarget,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + ID3DXEffectCompiler::CompileShader +
+ + + No documentation. + + + bb280319 + D3DXEFFECTDEFAULT + D3DXEFFECTDEFAULT + + + + No documentation. + + + bb280319 + char* pParamName + char pParamName + + + + No documentation. + + + bb280319 + D3DXEFFECTDEFAULTTYPE Type + D3DXEFFECTDEFAULTTYPE Type + + + + No documentation. + + + bb280319 + unsigned int NumBytes + unsigned int NumBytes + + + + No documentation. + + + bb280319 + void* pValue + void pValue + + + + Gets the value. + + + + +

Data type for managing a set of default effect parameters.

+
+ + bb172823 + D3DXEFFECTINSTANCE + D3DXEFFECTINSTANCE +
+ + +

Name of the effect file.

+
+ + bb172823 + char* pEffectFilename + char pEffectFilename +
+ + +

Number of default parameters.

+
+ + bb172823 + unsigned int NumDefaults + unsigned int NumDefaults +
+ + +

Pointer to an array of elements, each of which contains an effect parameter.

+
+ + bb172823 + D3DXEFFECTDEFAULT* pDefaults + D3DXEFFECTDEFAULT pDefaults +
+ + +

Applications use the interface to identify parameters that are going to be shared across effects. See parameter sharing in Cloning and Sharing (Direct3D 9). This interface has no methods.

+
+ +

The interface is obtained by calling .

The LPD3DXEFFECTPOOL type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXEFFECTPOOL;	
+            
+
+ + bb205794 + ID3DXEffectPool + ID3DXEffectPool +
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + A callback function used to fill 2D texture. + + Texture coordinate being sampled. + Dimensions of the texel. + The desired color of the specified texel. + typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pTexCoord, CONST D3DXVECTOR2 *pTexelSize, LPVOID pData); + + + + A callback function used to fill 3D texture. + + Texture coordinate being sampled. + Dimensions of the texel. + The desired color of the specified texel. + typedef VOID (WINAPI *LPD3DXFILL2D)(D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pTexCoord, CONST D3DXVECTOR2 *pTexelSize, LPVOID pData); + + + + Fill callback helper class. + + + + + Pointer to the native callback for 2D function + + + + + Pointer to the native callback for 3D function + + + + + EffectHandle used to identify a shader parameter. + + + + + Defines the behavior for caching strings. True by default. + + + + + Cache of allocated strings. + + + + + Pointer to the handle or the allocated string. + + + + + If the is a custom string not cached that needs to be released by this instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + The pointer. + + + + + Initializes a new instance of the class. + + + The pointer. + + + + + Initializes a new instance of the class. + + + The name. + + + + + Clears the cache. + + + By default, this class is caching all strings that are implicitly used as an effect handle. + Use this method in order to deallocate all strings that were previously cached. + + + + + marshal free. + + The __from. + The @ref. + + + + Method to marshal from native to managed struct + + The __from. + The @ref. + + + + Method to marshal from managed struct tot native + + The __from. + The @ref. + + + + + + + Allocates a string. + + + The name. + + + Pointer to the allocated string + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The name. + + The result of the conversion. + + + + +

The interface encapsulates the textures and resources needed to render a specific font on a specific device.

+
+ +

The interface is obtained by calling or .

The LPD3DXFONT type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXFONT;	
+            
+
+ + bb173961 + ID3DXFont + ID3DXFont +
+ + + Initializes a new instance of the class. + + The device. + The font description. + + + + Initializes a new instance of the class from a + + The device. + The font. + + + + Initializes a new instance of the class. + + The device. + The height. + The width. + The weight. + The mip levels. + if set to true [is italic]. + The character set. + The precision. + The quality. + The pitch and family. + Name of the face. + + + + Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings. + + + The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used. This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles. Text will not be rendered to the device; ID3DX10Font::DrawText must still be called to render the text. However, by preloading text into video memory, ID3DX10Font::DrawText will use substantially fewer CPU resources. This method internally converts characters to glyphs using the GDI function {{GetCharacterPlacement}}. + + Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks. + If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. + HRESULT ID3DX10Font::PreloadTextW([None] const wchar_t* pString,[None] int Count) + + + + Draws formatted text. + + Pointer to an object that contains the string. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if DrawText is to be called more than once in a row. + Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated. + Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. The coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top. + Specifies the method of formatting the text. It can be any combination of the following values: ValueMeaning DT_BOTTOM Justifies the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE. DT_CALCRECT Determines the width and height of the rectangle. If there are multiple lines of text, DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text but does not draw the text. DT_CENTER Centers text horizontally in the rectangle. DT_EXPANDTABS Expands tab characters. The default number of characters per tab is eight. DT_LEFT Aligns text to the left. DT_NOCLIP Draws without clipping. DrawText is somewhat faster when DT_NOCLIP is used. DT_RIGHT Aligns text to the right. DT_RTLREADING Displays text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right. DT_SINGLELINE Displays text on a single line only. Carriage returns and line feeds do not break the line. DT_TOP Top-justifies text. DT_VCENTER Centers text vertically (single line only). DT_WORDBREAK Breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line. ? + Color of the text. For more information, see . + If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero. + + The parameters of this method are very similar to those of the GDI DrawText function.This method supports both ANSI and Unicode strings.This method must be called inside a BeginScene ... EndScene block. The only exception is when an application calls DrawText with DT_CALCRECT to calculate the size of a given block of text.Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.This method supports only fonts whose escapement and orientation are both zero. + + int ID3DXFont::DrawTextW([In] ID3DXSprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DCOLOR Color) + + + + Draws formatted text. + + Pointer to an object that contains the string. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if DrawText is to be called more than once in a row. + Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated. + The x position to draw the text. + The y position to draw the text. + Color of the text. For more information, see . + + If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero. + + int ID3DXFont::DrawTextW([In] ID3DXSprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DCOLOR Color) + + The parameters of this method are very similar to those of the GDI DrawText function.This method supports both ANSI and Unicode strings.This method must be called inside a BeginScene ... EndScene block. The only exception is when an application calls DrawText with DT_CALCRECT to calculate the size of a given block of text.Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.This method supports only fonts whose escapement and orientation are both zero. + + + + + Measures the specified sprite. + + Pointer to an object that contains the string. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if DrawText is to be called more than once in a row. + Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated. + Specifies the method of formatting the text. It can be any combination of the following values: ValueMeaning DT_BOTTOM Justifies the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE. DT_CALCRECT Determines the width and height of the rectangle. If there are multiple lines of text, DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text but does not draw the text. DT_CENTER Centers text horizontally in the rectangle. DT_EXPANDTABS Expands tab characters. The default number of characters per tab is eight. DT_LEFT Aligns text to the left. DT_NOCLIP Draws without clipping. DrawText is somewhat faster when DT_NOCLIP is used. DT_RIGHT Aligns text to the right. DT_RTLREADING Displays text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right. DT_SINGLELINE Displays text on a single line only. Carriage returns and line feeds do not break the line. DT_TOP Top-justifies text. DT_VCENTER Centers text vertically (single line only). DT_WORDBREAK Breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line. ? + Determines the width and height of the rectangle. If there are multiple lines of text, this function uses the width of the rectangle pointed to by the rect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, this method modifies the right side of the rectangle so that it bounds the last character in the line. + + + + Measures the specified sprite. + + Pointer to an object that contains the string. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if DrawText is to be called more than once in a row. + Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated. + Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. The coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top. + Specifies the method of formatting the text. It can be any combination of the following values: ValueMeaning DT_BOTTOM Justifies the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE. DT_CALCRECT Determines the width and height of the rectangle. If there are multiple lines of text, DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text but does not draw the text. DT_CENTER Centers text horizontally in the rectangle. DT_EXPANDTABS Expands tab characters. The default number of characters per tab is eight. DT_LEFT Aligns text to the left. DT_NOCLIP Draws without clipping. DrawText is somewhat faster when DT_NOCLIP is used. DT_RIGHT Aligns text to the right. DT_RTLREADING Displays text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right. DT_SINGLELINE Displays text on a single line only. Carriage returns and line feeds do not break the line. DT_TOP Top-justifies text. DT_VCENTER Centers text vertically (single line only). DT_WORDBREAK Breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line. ? + Determines the width and height of the rectangle. If there are multiple lines of text, this function uses the width of the rectangle pointed to by the rect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, this method modifies the right side of the rectangle so that it bounds the last character in the line. + + + + Measures the specified sprite. + + Pointer to an object that contains the string. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if DrawText is to be called more than once in a row. + Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated. + Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. The coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top. + Specifies the method of formatting the text. It can be any combination of the following values: ValueMeaning DT_BOTTOM Justifies the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE. DT_CALCRECT Determines the width and height of the rectangle. If there are multiple lines of text, DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text but does not draw the text. DT_CENTER Centers text horizontally in the rectangle. DT_EXPANDTABS Expands tab characters. The default number of characters per tab is eight. DT_LEFT Aligns text to the left. DT_NOCLIP Draws without clipping. DrawText is somewhat faster when DT_NOCLIP is used. DT_RIGHT Aligns text to the right. DT_RTLREADING Displays text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right. DT_SINGLELINE Displays text on a single line only. Carriage returns and line feeds do not break the line. DT_TOP Top-justifies text. DT_VCENTER Centers text vertically (single line only). DT_WORDBREAK Breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line. ? + The height of the formatted text but does not draw the text. + Determines the width and height of the rectangle. If there are multiple lines of text, this function uses the width of the rectangle pointed to by the rect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, this method modifies the right side of the rectangle so that it bounds the last character in the line. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the Direct3D device associated with the font object.

+
+

Address of a reference to an interface, representing the Direct3D device object associated with the font object.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Note??Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+
+ + bb173965 + HRESULT ID3DXFont::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXFont::GetDevice +
+ + +

Gets a description of the current font object. GetDescW and GetDescA are identical to this method, except that a reference is returned to a or D3DXFONT_DESCA structure, respectively.

+
+ No documentation. +

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DXFONT_DESCA structure.

+
+ + bb173964 + HRESULT ID3DXFont::GetDescW([Out] D3DXFONT_DESCW* pDesc) + ID3DXFont::GetDescW +
+ + +

Retrieves font characteristics that are identified in a structure. This method supports ANSI and Unicode compiler settings.

+
+ No documentation. +

Nonzero if the function is successful; otherwise 0.

+ +

The compiler setting also determines the structure type. If Unicode is defined, the function returns a structure. Otherwise, the function call returns a structure.

+
+ + bb173967 + BOOL ID3DXFont::GetTextMetricsW([Out] TEXTMETRICW* pTextMetrics) + ID3DXFont::GetTextMetricsW +
+ + +

Returns a handle to a display device context (DC) that has the font set.

+
+

Handle to a display DC.

+ + bb173963 + HDC ID3DXFont::GetDC() + ID3DXFont::GetDC +
+ + +

Returns information about the placement and orientation of a glyph in a character cell.

+
+

Glyph identifier.

+

Address of a reference to a object that contains the glyph.

+

Pointer to the smallest rectangle object that completely encloses the glyph.

+

Pointer to the two-dimensional vector that connects the origin of the current character cell to the origin of the next character cell. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb173966 + HRESULT ID3DXFont::GetGlyphData([In] unsigned int Glyph,[Out] IDirect3DTexture9** ppTexture,[Out] RECT* pBlackBox,[Out] POINT* pCellInc) + ID3DXFont::GetGlyphData +
+ + +

Loads a series of characters into video memory to improve the efficiency of rendering to the device.

+
+

ID of the first character to be loaded into video memory.

+

ID of the last character to be loaded into video memory.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

This method generates textures containing glyphs that represent the input characters. The glyphs are drawn as a series of triangles.

Characters will not be rendered to the device; DrawText must still be called to render the characters. However, by pre-loading characters into video memory, DrawText will use substantially fewer CPU resources.

This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.

+
+ + bb173970 + HRESULT ID3DXFont::PreloadCharacters([In] unsigned int First,[In] unsigned int Last) + ID3DXFont::PreloadCharacters +
+ + +

Loads a series of glyphs into video memory to improve the efficiency of rendering to the device.

+
+

ID of the first glyph to be loaded into video memory.

+

ID of the last glyph to be loaded into video memory.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

This method generates textures that contain the input glyphs. The glyphs are drawn as a series of triangles.

Glyphs will not be rendered to the device; DrawText must still be called to render the glyphs. However, by pre-loading glyphs into video memory, DrawText will use substantially fewer CPU resources.

+
+ + bb173971 + HRESULT ID3DXFont::PreloadGlyphs([In] unsigned int First,[In] unsigned int Last) + ID3DXFont::PreloadGlyphs +
+ + +

Loads formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings.

+
+

Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks.

+

Number of characters in the text string.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used.

This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles.

Text will not be rendered to the device; DrawText must still be called to render the text. However, by preloading text into video memory, DrawText will use substantially fewer CPU resources.

This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.

+
+ + bb173972 + HRESULT ID3DXFont::PreloadTextW([In] const wchar_t* pString,[In] int Count) + ID3DXFont::PreloadTextW +
+ + +

Draws formatted text. This method supports ANSI and Unicode strings.

+
+

Pointer to an object that contains the string. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if DrawText is to be called more than once in a row.

+

Pointer to a string to draw. If the Count parameter is -1, the string must be null-terminated.

+

Specifies the number of characters in the string. If Count is -1, then the pString parameter is assumed to be a reference to a null-terminated string and DrawText computes the character count automatically.

+

Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. The coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top.

+

Specifies the method of formatting the text. It can be any combination of the following values:

ValueMeaning
DT_BOTTOM

Justifies the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE.

DT_CALCRECT

Determines the width and height of the rectangle. If there are multiple lines of text, DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text but does not draw the text.

DT_CENTER

Centers text horizontally in the rectangle.

DT_EXPANDTABS

Expands tab characters. The default number of characters per tab is eight.

DT_LEFT

Aligns text to the left.

DT_NOCLIP

Draws without clipping. DrawText is somewhat faster when DT_NOCLIP is used.

DT_RIGHT

Aligns text to the right.

DT_RTLREADING

Displays text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right.

DT_SINGLELINE

Displays text on a single line only. Carriage returns and line feeds do not break the line.

DT_TOP

Top-justifies text.

DT_VCENTER

Centers text vertically (single line only).

DT_WORDBREAK

Breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line.

?

+

Color of the text. For more information, see .

+

If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero.

+ +

The parameters of this method are very similar to those of the GDI DrawText function.

This method supports both ANSI and Unicode strings.

This method must be called inside a BeginScene ... EndScene block. The only exception is when an application calls DrawText with DT_CALCRECT to calculate the size of a given block of text.

Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.

If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.

This method supports only fonts whose escapement and orientation are both zero.

+
+ + bb173962 + int ID3DXFont::DrawTextW([In] ID3DXSprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DCOLOR Color) + ID3DXFont::DrawTextW +
+ + +

Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method should be called whenever the device is lost or before the user calls Reset. Even if the device was not actually lost, OnLostDevice is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling Reset and then OnResetDevice.

+
+ + bb173968 + HRESULT ID3DXFont::OnLostDevice() + ID3DXFont::OnLostDevice +
+ + +

Use this method to re-acquire resources and save initial state.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

OnResetDevice should be called each time the device is reset (using Reset), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.

+
+ + bb173969 + HRESULT ID3DXFont::OnResetDevice() + ID3DXFont::OnResetDevice +
+ + +

Retrieves the Direct3D device associated with the font object.

+
+ +

Note??Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+
+ + bb173965 + GetDevice + GetDevice + HRESULT ID3DXFont::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Gets a description of the current font object. GetDescW and GetDescA are identical to this method, except that a reference is returned to a or D3DXFONT_DESCA structure, respectively.

+
+ +

This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DXFONT_DESCA structure.

+
+ + bb173964 + GetDescW + GetDescW + HRESULT ID3DXFont::GetDescW([Out] D3DXFONT_DESCW* pDesc) +
+ + +

Returns a handle to a display device context (DC) that has the font set.

+
+ + bb173963 + GetDC + GetDC + HDC ID3DXFont::GetDC() +
+ + + Defines possible character sets for fonts. + + CHARSET + + + + The ANSI character set. + + + + + The Arabic character set. + + + + + The Baltic character set. + + + + + The Chinese character set. + + + + + The default system character set. + + + + + The East Europe character set. + + + + + The GB2312 character set. + + + + + The Greek character set. + + + + + The Hangul character set. + + + + + The Hebrew character set. + + + + + The Johab character set. + + + + + The Mac character set. + + + + + The OEM character set. + + + + + The Russian character set. + + + + + The ShiftJIS character set. + + + + + The symbol character set. + + + + + The Thai character set. + + + + + The Turkish character set. + + + + + The Vietnamese character set. + + + + + Specifies formatting options for text rendering. + + DT + + + + Align the text to the bottom. + + + + + Align the text to the center. + + + + + Expand tab characters. + + + + + Align the text to the left. + + + + + Don't clip the text. + + + + + Align the text to the right. + + + + + Rendering the text in right-to-left reading order. + + + + + Force all text to a single line. + + + + + Align the text to the top. + + + + + Vertically align the text to the center. + + + + + Allow word breaks. + + + + + Defines pitch and family settings for fonts. + + + + + Use the Decorative family. + + + + + Default pitch. + + + + + The font family doesn't matter. + + + + + Fixed pitch. + + + + + Use the Modern family. + + + + + Mono pitch. + + + + + Use the Roman family. + + + + + Use the Script family. + + + + + Use the Swiss family. + + + + + Variable pitch. + + + + + Defines precision levels for font rendering. + + OutPrecision + + + + Default + + + + + String + + + + + Character + + + + + Stroke + + + + + TrueType + + + + + Device + + + + + Raster + + + + + TrueTypeOnly + + + + + Outline + + + + + ScreenOutline + + + + + PostScriptOnly + + + + + Specifies quality options for font rendering. + + QUALITY + + + + Default + + + + + Draft + + + + + Proof + + + + + Non antialiased + + + + + Antialiased + + + + + ClearType + + + + + ClearTypeNatural + + + + + Specifies weights for font rendering. + + FW + + + + Use a black weight. + + + + + Use a bold weight. + + + + + Use a demi-bold weight. + + + + + The font weight doesn't matter. + + + + + Use an extra bold weight. + + + + + Make the font extra light. + + + + + Use a heavy weight. + + + + + Make the font light. + + + + + Use a medium weight. + + + + + Use a normal weight. + + + + + Use a regular weight. + + + + + Use a semi-bold weight. + + + + + Make the font thin. + + + + + Use an ultra bold weight. + + + + + Make the font ultra light. + + + + +

Defines constants that describe the type of back buffer.

+
+ +

Direct3D 9 does not support stereo view, so Direct3D does not use the and values of this enumerated type.

+
+ + bb172506 + D3DBACKBUFFER_TYPE + D3DBACKBUFFER_TYPE +
+ + +

Specifies a nonstereo swap chain.

+
+ + bb172506 + D3DBACKBUFFER_TYPE_MONO + D3DBACKBUFFER_TYPE_MONO +
+ + +

Specifies the left side of a stereo pair in a swap chain.

+
+ + bb172506 + D3DBACKBUFFER_TYPE_LEFT + D3DBACKBUFFER_TYPE_LEFT +
+ + +

Specifies the right side of a stereo pair in a swap chain.

+
+ + bb172506 + D3DBACKBUFFER_TYPE_RIGHT + D3DBACKBUFFER_TYPE_RIGHT +
+ + +

Defines the basis type of a high-order patch surface.

+
+ +

The members of specify the formulation to be used in evaluating the high-order patch surface primitive during tessellation.

+
+ + bb172507 + D3DBASISTYPE + D3DBASISTYPE +
+ + +

Input vertices are treated as a series of B?zier patches. The number of vertices specified must be divisible by 4. Portions of the mesh beyond this criterion will not be rendered. Full continuity is assumed between sub-patches in the interior of the surface rendered by each call. Only the vertices at the corners of each sub-patch are guaranteed to lie on the resulting surface.

+
+ + bb172507 + D3DBASIS_BEZIER + D3DBASIS_BEZIER +
+ + +

Input vertices are treated as control points of a B-spline surface. The number of apertures rendered is two fewer than the number of apertures in that direction. In general, the generated surface does not contain the control vertices specified.

+
+ + bb172507 + D3DBASIS_BSPLINE + D3DBASIS_BSPLINE +
+ + +

An interpolating basis defines the surface so that the surface goes through all the input vertices specified. In DirectX 8, this was D3DBASIS_INTERPOLATE.

+
+ + bb172507 + D3DBASIS_CATMULL_ROM + D3DBASIS_CATMULL_ROM +
+ + +

Defines the supported blend mode.

+
+ +

In the preceding member descriptions, the RGBA values of the source and destination are indicated by the s and d subscripts.

The values in this enumerated type are used by the following render states:

See

+
+ + bb172508 + D3DBLEND + D3DBLEND +
+ + +

Blend factor is (0, 0, 0, 0).

+
+ + bb172508 + D3DBLEND_ZERO + D3DBLEND_ZERO +
+ + +

Blend factor is (1, 1, 1, 1).

+
+ + bb172508 + D3DBLEND_ONE + D3DBLEND_ONE +
+ + +

Blend factor is (Rs, Gs, Bs, As).

+
+ + bb172508 + D3DBLEND_SRCCOLOR + D3DBLEND_SRCCOLOR +
+ + +

Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As).

+
+ + bb172508 + D3DBLEND_INVSRCCOLOR + D3DBLEND_INVSRCCOLOR +
+ + +

Blend factor is (As, As, As, As).

+
+ + bb172508 + D3DBLEND_SRCALPHA + D3DBLEND_SRCALPHA +
+ + +

Blend factor is ( 1 - As, 1 - As, 1 - As, 1 - As).

+
+ + bb172508 + D3DBLEND_INVSRCALPHA + D3DBLEND_INVSRCALPHA +
+ + +

Blend factor is (Ad Ad Ad Ad).

+
+ + bb172508 + D3DBLEND_DESTALPHA + D3DBLEND_DESTALPHA +
+ + +

Blend factor is (1 - Ad 1 - Ad 1 - Ad 1 - Ad).

+
+ + bb172508 + D3DBLEND_INVDESTALPHA + D3DBLEND_INVDESTALPHA +
+ + +

Blend factor is (Rd, Gd, Bd, Ad).

+
+ + bb172508 + D3DBLEND_DESTCOLOR + D3DBLEND_DESTCOLOR +
+ + +

Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad).

+
+ + bb172508 + D3DBLEND_INVDESTCOLOR + D3DBLEND_INVDESTCOLOR +
+ + +

Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad).

+
+ + bb172508 + D3DBLEND_SRCALPHASAT + D3DBLEND_SRCALPHASAT +
+ + +

Obsolete. Starting with DirectX 6, you can achieve the same effect by setting the source and destination blend factors to and in separate calls.

+
+ + bb172508 + D3DBLEND_BOTHSRCALPHA + D3DBLEND_BOTHSRCALPHA +
+ + +

Obsolete. Source blend factor is (1 - As, 1 - As, 1 - As, 1 - As), and destination blend factor is (As, As, As, As); the destination blend selection is overridden. This blend mode is supported only for the render state.

+
+ + bb172508 + D3DBLEND_BOTHINVSRCALPHA + D3DBLEND_BOTHINVSRCALPHA +
+ + +

Constant color blending factor used by the frame-buffer blender. This blend mode is supported only if is set in the SrcBlendCaps or DestBlendCaps members of .

+
+ + bb172508 + D3DBLEND_BLENDFACTOR + D3DBLEND_BLENDFACTOR +
+ + +

Inverted constant color-blending factor used by the frame-buffer blender. This blend mode is supported only if the bit is set in the SrcBlendCaps or DestBlendCaps members of .

+
+ + bb172508 + D3DBLEND_INVBLENDFACTOR + D3DBLEND_INVBLENDFACTOR +
+ + +

Blend factor is (PSOutColor[1]r, PSOutColor[1]g, PSOutColor[1]b, not used). See Render.

Differences between Direct3D 9 and Direct3D 9Ex:

This flag is available in Direct3D 9Ex only.

?

+
+ + bb172508 + D3DBLEND_SRCCOLOR2 + D3DBLEND_SRCCOLOR2 +
+ + +

Blend factor is (1 - PSOutColor[1]r, 1 - PSOutColor[1]g, 1 - PSOutColor[1]b, not used)). See Render.

Differences between Direct3D 9 and Direct3D 9Ex:

This flag is available in Direct3D 9Ex only.

?

+
+ + bb172508 + D3DBLEND_INVSRCCOLOR2 + D3DBLEND_INVSRCCOLOR2 +
+ + +

Represents the capabilities of the hardware exposed through the Direct3D object.

+
+ +

The MaxTextureBlendStages and MaxSimultaneousTextures members might seem similar, but they contain different information. The MaxTextureBlendStages member contains the total number of texture-blending stages supported by the current device, and the MaxSimultaneousTextures member describes how many of those stages can have textures bound to them by using the SetTexture method.

When the driver fills this structure, it can set values for execute-buffer capabilities, even when the interface being used to retrieve the capabilities (such as ) does not support execute buffers.

In general, performance problems may occur if you use a texture and then modify it during a scene. Ensure that no texture used in the current BeginScene and EndScene block is evicted unless absolutely necessary. In the case of extremely high texture usage within a scene, the results are undefined. This occurs when you modify a texture that you have used in the scene and there is no spare texture memory available. For such systems, the contents of the z-buffer become invalid at EndScene. Applications should not call UpdateSurface to or from the back buffer on this type of hardware inside a BeginScene/EndScene pair. In addition, applications should not try to access the z-buffer if the capability flag is set. Finally, applications should not lock the back buffer or the z-buffer inside a BeginScene/EndScene pair.

The following flags concerning mipmapped textures are not supported in Direct3D 9.

  • D3DPTFILTERCAPS_LINEAR
  • D3DPTFILTERCAPS_LINEARMIPLINEAR
  • D3DPTFILTERCAPS_LINEARMIPNEAREST
  • D3DPTFILTERCAPS_MIPNEAREST
  • D3DPTFILTERCAPS_NEAREST
+
+ + bb172513 + D3DPBLENDCAPS + D3DPBLENDCAPS +
+ + +

Member of the enumerated type, which identifies what type of resources are used for processing vertices.

+
+ + bb172513 + D3DPBLENDCAPS_ZERO + D3DPBLENDCAPS_ZERO +
+ + +

Adapter on which this Direct3D device was created. This ordinal is valid only to pass to methods of the interface that created this Direct3D device. The interface can always be retrieved by calling GetDirect3D.

+
+ + bb172513 + D3DPBLENDCAPS_ONE + D3DPBLENDCAPS_ONE +
+ + +

The following driver-specific capability.

ValueMeaning

Display hardware is capable of returning the current scan line.

The display driver supports an overlay DDI that allows for verification of overlay capabilities. For more information about the overlay DDI, see Overlay DDI.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

?

+
+ + bb172513 + D3DPBLENDCAPS_SRCCOLOR + D3DPBLENDCAPS_SRCCOLOR +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DPBLENDCAPS_INVSRCCOLOR + D3DPBLENDCAPS_INVSRCCOLOR +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DPBLENDCAPS_SRCALPHA + D3DPBLENDCAPS_SRCALPHA +
+ + +

Bit mask of values representing what presentation swap intervals are available.

ValueMeaning

The driver supports an immediate presentation swap interval.

The driver supports a presentation swap interval of every screen refresh.

The driver supports a presentation swap interval of every second screen refresh.

The driver supports a presentation swap interval of every third screen refresh.

The driver supports a presentation swap interval of every fourth screen refresh.

?

+
+ + bb172513 + D3DPBLENDCAPS_INVSRCALPHA + D3DPBLENDCAPS_INVSRCALPHA +
+ + +

Bit mask indicating what hardware support is available for cursors. Direct3D 9 does not define alpha-blending cursor capabilities.

ValueMeaning

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports at least a hardware color cursor in high-resolution modes (with scan lines greater than or equal to 400).

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports a hardware color cursor in both high-resolution and low-resolution modes (with scan lines less than 400).

?

+
+ + bb172513 + D3DPBLENDCAPS_DESTALPHA + D3DPBLENDCAPS_DESTALPHA +
+ + +

Flags identifying the capabilities of the device.

ValueMeaning

Device supports blits from system-memory textures to nonlocal video-memory textures.

Device can queue rendering commands after a page flip. Applications do not change their behavior if this flag is set; this capability means that the device is relatively fast.

Device can support at least a DirectX 5-compliant driver.

Device can support at least a DirectX 7-compliant driver.

Device exports an -aware hal.

Device can use execute buffers from system memory.

Device can use execute buffers from video memory.

Device has hardware acceleration for scene rasterization.

Device can support transformation and lighting in hardware.

Device supports N patches.

Device can support rasterization, transform, lighting, and shading in hardware.

Device supports quintic B?zier curves and B-splines.

Device supports rectangular and triangular patches.

When this device capability is set, the hardware architecture does not require caching of any information, and uncached patches (handle zero) will be drawn as efficiently as cached ones. Note that setting does not mean that a patch with handle zero can be drawn. A handle-zero patch can always be drawn whether this cap is set or not.

Device is texturing from separate memory pools.

Device can retrieve textures from non-local video memory.

Device can retrieve textures from system memory.

Device can retrieve textures from device memory.

Device can use buffers from system memory for transformed and lit vertices.

Device can use buffers from video memory for transformed and lit vertices.

?

+
+ + bb172513 + D3DPBLENDCAPS_INVDESTALPHA + D3DPBLENDCAPS_INVDESTALPHA +
+ + +

Miscellaneous driver primitive capabilities. See .

+
+ + bb172513 + D3DPBLENDCAPS_DESTCOLOR + D3DPBLENDCAPS_DESTCOLOR +
+ + +

Information on raster-drawing capabilities. This member can be one or more of the following flags.

ValueMeaning

Device supports anisotropic filtering.

Device iterates colors perspective correctly.

Device can dither to improve color resolution.

Device supports legacy depth bias. For true depth bias, see .

Device supports range-based fog. In range-based fog, the distance of an object from the viewer is used to compute fog effects, not the depth of the object (that is, the z-coordinate) in the scene.

Device calculates the fog value by referring to a lookup table containing fog values that are indexed to the depth of a given pixel.

Device calculates the fog value during the lighting operation and interpolates the fog value during rasterization.

Device supports level-of-detail bias adjustments. These bias adjustments enable an application to make a mipmap appear crisper or less sharp than it normally would. For more information about level-of-detail bias in mipmaps, see .

Device supports toggling multisampling on and off between and (using ).

Device supports scissor test. See Scissor Test (Direct3D 9).

Device performs true slope-scale based depth bias. This is in contrast to the legacy style depth bias.

Device supports depth buffering using w.

Device supports w-based fog. W-based fog is used when a perspective projection matrix is specified, but affine projections still use z-based fog. The system considers a projection matrix that contains a nonzero value in the [3][4] element to be a perspective projection matrix.

Device can perform hidden-surface removal (HSR) without requiring the application to sort polygons and without requiring the allocation of a depth-buffer. This leaves more video memory for textures. The method used to perform HSR is hardware-dependent and is transparent to the application.

Z-bufferless HSR is performed if no depth-buffer surface is associated with the rendering-target surface and the depth-buffer comparison test is enabled (that is, when the state value associated with the enumeration constant is set to TRUE).

Device supports z-based fog.

Device can perform z-test operations. This effectively renders a primitive and indicates whether any z pixels have been rendered.

?

+
+ + bb172513 + D3DPBLENDCAPS_INVDESTCOLOR + D3DPBLENDCAPS_INVDESTCOLOR +
+ + +

Z-buffer comparison capabilities. This member can be one or more of the following flags.

ValueMeaning

Always pass the z-test.

Pass the z-test if the new z equals the current z.

Pass the z-test if the new z is greater than the current z.

Pass the z-test if the new z is greater than or equal to the current z.

Pass the z-test if the new z is less than the current z.

Pass the z-test if the new z is less than or equal to the current z.

Always fail the z-test.

Pass the z-test if the new z does not equal the current z.

?

+
+ + bb172513 + D3DPBLENDCAPS_SRCALPHASAT + D3DPBLENDCAPS_SRCALPHASAT +
+ + +

Source-blending capabilities. This member can be one or more of the following flags. (The RGBA values of the source and destination are indicated by the subscripts s and d.)

ValueMeaning

The driver supports both and . See .

Source blend factor is (1 - As, 1 - As, 1 - As, 1 - As) and destination blend factor is (As, As, As, As); the destination blend selection is overridden.

The driver supports the blend mode. (This blend mode is obsolete. For more information, see .)

Blend factor is (Ad, Ad, Ad, Ad).

Blend factor is (Rd, Gd, Bd, Ad).

Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad).

Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad).

Blend factor is (1 - As, 1 - As, 1 - As, 1 - As).

Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As).

Blend factor is (1 - PSOutColor[1]r, 1 - PSOutColor[1]g, 1 - PSOutColor[1]b, not used)). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (1, 1, 1, 1).

Blend factor is (As, As, As, As).

Blend factor is (f, f, f, 1); f = min(As, 1 - Ad).

Blend factor is (Rs, Gs, Bs, As).

Blend factor is (PSOutColor[1]r, PSOutColor[1]g, PSOutColor[1]b, not used). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (0, 0, 0, 0).

?

+
+ + bb172513 + D3DPBLENDCAPS_BOTHSRCALPHA + D3DPBLENDCAPS_BOTHSRCALPHA +
+ + +

Destination-blending capabilities. This member can be the same capabilities that are defined for the SrcBlendCaps member.

+
+ + bb172513 + D3DPBLENDCAPS_BOTHINVSRCALPHA + D3DPBLENDCAPS_BOTHINVSRCALPHA +
+ + +

Alpha-test comparison capabilities. This member can include the same capability flags defined for the ZCmpCaps member. If this member contains only the capability or only the capability, the driver does not support alpha tests. Otherwise, the flags identify the individual comparisons that are supported for alpha testing.

+
+ + bb172513 + D3DPBLENDCAPS_BLENDFACTOR + D3DPBLENDCAPS_BLENDFACTOR +
+ + +

Shading operations capabilities. It is assumed, in general, that if a device supports a given command at all, it supports the mode (as specified in the enumerated type). This flag specifies whether the driver can also support Gouraud shading and whether alpha color components are supported. When alpha components are not supported, the alpha value of colors generated is implicitly 255. This is the maximum possible alpha (that is, the alpha component is at full intensity).

The color, specular highlights, fog, and alpha interpolants of a triangle each have capability flags that an application can use to find out how they are implemented by the device driver.

This member can be one or more of the following flags.

ValueMeaning

Device can support an alpha component for Gouraud-blended transparency (the state for the enumerated type). In this mode, the alpha color component of a primitive is provided at vertices and interpolated across a face along with the other color components.

Device can support colored Gouraud shading. In this mode, the per-vertex color components (red, green, and blue) are interpolated across a triangle face.

Device can support fog in the Gouraud shading mode.

Device supports Gouraud shading of specular highlights.

?

+
+ + bb172513 + D3DPBLENDCAPS_SRCCOLOR2 + D3DPBLENDCAPS_SRCCOLOR2 +
+ + +

Miscellaneous texture-mapping capabilities. This member can be one or more of the following flags.

ValueMeaning

Alpha in texture pixels is supported.

Device can draw alpha from texture palettes.

Supports cube textures.

Device requires that cube texture maps have dimensions specified as powers of two.

Device supports mipmapped cube textures.

Device supports mipmapped textures.

Device supports mipmapped volume textures.

is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. A device that exposes this capability can use such a texture if all of the following requirements are met.

  • The texture addressing mode for the texture stage is set to .
  • Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
  • Mipmapping is not in use (use magnification filter only).
  • Texture formats must not be through .

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

A texture that is not a power of two cannot be set at a stage that will be read based on a shader computation (such as the bem - ps and texm3x3 - ps instructions in pixel shaders versions 1_0 to 1_3). For example, these textures can be used to store bumps that will be fed into texture reads, but not the environment maps that are used in texbem - ps, texbeml - ps, and texm3x3spec - ps. This means that a texture with dimensions that are not powers of two cannot be addressed or sampled using texture coordinates computed within the shader. This type of operation is known as a dependent read and cannot be performed on these types of textures.

Device does not support a projected bump-environment loopkup operation in programmable and fixed function shaders.

Perspective correction texturing is supported.

If is not set, all textures must have widths and heights specified as powers of two. This requirement does not apply to either cube textures or volume textures.

If is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. See description.

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

Supports the texture transformation flag. When applied, the device divides transformed texture coordinates by the last texture coordinate. If this capability is present, then the projective divide occurs per pixel. If this capability is not present, but the projective divide needs to occur anyway, then it is performed on a per-vertex basis by the Direct3D runtime.

All textures must be square.

Texture indices are not scaled by the texture size prior to interpolation.

Device supports volume textures.

Device requires that volume texture maps have dimensions specified as powers of two.

?

+
+ + bb172513 + D3DPBLENDCAPS_INVSRCCOLOR2 + D3DPBLENDCAPS_INVSRCCOLOR2 +
+ + +

Defines the supported blend operations. See Remarks for definitions of terms.

+
+ +

Source, Destination, and Result are defined as:

TermTypeDescription
SourceInputColor of the source pixel before the operation.
DestinationInputColor of the pixel in the destination buffer before the operation.
ResultOutputReturned value that is the blended color resulting from the operation.

?

This enumerated type defines values used by the following render states:

+
+ + bb172509 + D3DBLENDOP + D3DBLENDOP +
+ + +

The result is the destination added to the source. Result = Source + Destination

+
+ + bb172509 + D3DBLENDOP_ADD + D3DBLENDOP_ADD +
+ + +

The result is the destination subtracted from to the source. Result = Source - Destination

+
+ + bb172509 + D3DBLENDOP_SUBTRACT + D3DBLENDOP_SUBTRACT +
+ + +

The result is the source subtracted from the destination. Result = Destination - Source

+
+ + bb172509 + D3DBLENDOP_REVSUBTRACT + D3DBLENDOP_REVSUBTRACT +
+ + +

The result is the minimum of the source and destination. Result = MIN(Source, Destination)

+
+ + bb172509 + D3DBLENDOP_MIN + D3DBLENDOP_MIN +
+ + +

The result is the maximum of the source and destination. Result = MAX(Source, Destination)

+
+ + bb172509 + D3DBLENDOP_MAX + D3DBLENDOP_MAX +
+ + +

Flags used to obtain callback information.

+
+ + bb172714 + D3DXCALLBACK_SEARCH_FLAGS + D3DXCALLBACK_SEARCH_FLAGS +
+ + +

Exclude callbacks located at the initial position from the search.

+
+ + bb172714 + D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION + D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION +
+ + +

Reverse the callback search direction.

+
+ + bb172714 + D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION + D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION +
+ + +

Obsolete in DirectX 8.0 and later versions; see Remarks.

The D3DLIGHTINGCAPS structure describes the lighting capabilities of a device.

+
+ +

This structure has been replaced by D3DCAPS8 (see the DirectX 8.0 SDK documentation) for DirectX 8.0 and later runtimes, but is required for DirectX 7.0 and earlier runtime compatibility. See Reporting DirectX 8.0 Style Direct3D Capabilities for details.

This structure is a member of the D3DDEVICEDESC_V1 structure.

+
+ + ff548471 + D3DCAPS + D3DCAPS +
+ + +

Specifies the size, in bytes, of the D3DLIGHTINGCAPS structure.

+
+ + ff548471 + D3DCAPS_OVERLAY + D3DCAPS_OVERLAY +
+ + +

Specifies flags describing the capabilities of the lighting module. The following flags are defined:

ValueMeaning
D3DLIGHTCAPS_DIRECTIONALDirectional lights are supported. +
D3DLIGHTCAPS_GLSPOTOpenGL-style spotlights are supported.
D3DLIGHTCAPS_PARALLELPOINTParallel-point lights are supported.
D3DLIGHTCAPS_POINTPoint lights are supported.
D3DLIGHTCAPS_SPOTSpotlights are supported. +

?

+
+ + ff548471 + D3DCAPS_READ_SCANLINE + D3DCAPS_READ_SCANLINE +
+ + + None. + + + None + None + + + +

Driver capability flags.

+
+ + bb172511 + D3DCAPS2 + D3DCAPS2 +
+ + + No documentation. + + + bb172511 + D3DCAPS2_FULLSCREENGAMMA + D3DCAPS2_FULLSCREENGAMMA + + + + No documentation. + + + bb172511 + D3DCAPS2_CANCALIBRATEGAMMA + D3DCAPS2_CANCALIBRATEGAMMA + + + + No documentation. + + + bb172511 + D3DCAPS2_CANMANAGERESOURCE + D3DCAPS2_CANMANAGERESOURCE + + + + No documentation. + + + bb172511 + D3DCAPS2_DYNAMICTEXTURES + D3DCAPS2_DYNAMICTEXTURES + + + + No documentation. + + + bb172511 + D3DCAPS2_CANAUTOGENMIPMAP + D3DCAPS2_CANAUTOGENMIPMAP + + + + No documentation. + + + bb172511 + D3DCAPS2_CANSHARERESOURCE + D3DCAPS2_CANSHARERESOURCE + + + + None. + + + None + None + + + +

Driver capability flags.

+
+ + bb172512 + D3DCAPS3 + D3DCAPS3 +
+ + + No documentation. + + + bb172512 + D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD + D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD + + + + No documentation. + + + bb172512 + D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION + D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION + + + + No documentation. + + + bb172512 + D3DCAPS3_COPY_TO_VIDMEM + D3DCAPS3_COPY_TO_VIDMEM + + + + No documentation. + + + bb172512 + D3DCAPS3_COPY_TO_SYSTEMMEM + D3DCAPS3_COPY_TO_SYSTEMMEM + + + + No documentation. + + + bb172512 + D3DCAPS3_DXVAHD + D3DCAPS3_DXVAHD + + + + None. + + + None + None + + + +

The following flags are used to specify which channels in a texture to operate on.

+
+ + bb205563 + D3DX_CHANNEL + D3DX_CHANNEL +
+ + + No documentation. + + + bb205563 + D3DX_CHANNEL_RED + D3DX_CHANNEL_RED + + + + No documentation. + + + bb205563 + D3DX_CHANNEL_BLUE + D3DX_CHANNEL_BLUE + + + + No documentation. + + + bb205563 + D3DX_CHANNEL_GREEN + D3DX_CHANNEL_GREEN + + + + No documentation. + + + bb205563 + D3DX_CHANNEL_ALPHA + D3DX_CHANNEL_ALPHA + + + + No documentation. + + + bb205563 + D3DX_CHANNEL_LUMINANCE + D3DX_CHANNEL_LUMINANCE + + + +

Defines operations to perform on vertices in preparation for mesh cleaning.

+
+ + bb172720 + D3DXCLEANTYPE + D3DXCLEANTYPE +
+ + +

Merge triangles that share the same vertex indices but have face normals pointing in opposite directions (back-facing triangles). Unless the triangles are not split by adding a replicated vertex, mesh adjacency data from the two triangles may conflict.

+
+ + bb172720 + D3DXCLEAN_BACKFACING + D3DXCLEAN_BACKFACING +
+ + +

If a vertex is the apex of two triangle fans (a bowtie) and mesh operations will affect one of the fans, then split the shared vertex into two new vertices. Bowties can cause problems for operations such as mesh simplification that remove vertices, because removing one vertex affects two distinct sets of triangles.

+
+ + bb172720 + D3DXCLEAN_BOWTIES + D3DXCLEAN_BOWTIES +
+ + +

Use this flag to prevent infinite loops during skinning setup mesh operations.

+
+ + bb172720 + D3DXCLEAN_SKINNING + D3DXCLEAN_SKINNING +
+ + +

Use this flag to prevent infinite loops during mesh optimization operations.

+
+ + bb172720 + D3DXCLEAN_OPTIMIZATION + D3DXCLEAN_OPTIMIZATION +
+ + +

Use this flag to prevent infinite loops during mesh simplification operations.

+
+ + bb172720 + D3DXCLEAN_SIMPLIFICATION + D3DXCLEAN_SIMPLIFICATION +
+ + +

These flags identify a surface to reset when calling Clear.

+
+ + bb172514 + D3DCLEAR + D3DCLEAR +
+ + + No documentation. + + + bb172514 + D3DCLEAR_TARGET + D3DCLEAR_TARGET + + + + No documentation. + + + bb172514 + D3DCLEAR_ZBUFFER + D3DCLEAR_ZBUFFER + + + + No documentation. + + + bb172514 + D3DCLEAR_STENCIL + D3DCLEAR_STENCIL + + + + No documentation. + + + bb172514 + D3DCLEAR_ALL + D3DCLEAR_ALL + + + + None. + + + None + None + + + +

Describes the current clip status.

+
+ +

When clipping is enabled during vertex processing (by ProcessVertices, DrawPrimitive, or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using , which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise OR of all vertex clip codes and ClipIntersection is a bitwise AND of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When is set to , ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.

Clip status is not updated by DrawRectPatch and DrawTriPatch because there is no software emulation for them.

+
+ + bb172516 + D3DCS + D3DCS +
+ + +

Clip union flags that describe the current clip status. This member can be one or more of the following flags:

ValueMeaning

Combination of all clip flags.

All vertices are clipped by the left plane of the viewing frustum.

All vertices are clipped by the right plane of the viewing frustum.

All vertices are clipped by the top plane of the viewing frustum.

All vertices are clipped by the bottom plane of the viewing frustum.

All vertices are clipped by the front plane of the viewing frustum.

All vertices are clipped by the back plane of the viewing frustum.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

?

+
+ + bb172516 + D3DCS_LEFT + D3DCS_LEFT +
+ + +

Clip intersection flags that describe the current clip status. This member can take the same flags as ClipUnion.

+
+ + bb172516 + D3DCS_RIGHT + D3DCS_RIGHT +
+ + + No documentation. + + + bb172516 + D3DCS_TOP + D3DCS_TOP + + + + No documentation. + + + bb172516 + D3DCS_BOTTOM + D3DCS_BOTTOM + + + + No documentation. + + + bb172516 + D3DCS_FRONT + D3DCS_FRONT + + + + No documentation. + + + bb172516 + D3DCS_BACK + D3DCS_BACK + + + + No documentation. + + + bb172516 + D3DCS_PLANE0 + D3DCS_PLANE0 + + + + No documentation. + + + bb172516 + D3DCS_PLANE1 + D3DCS_PLANE1 + + + + No documentation. + + + bb172516 + D3DCS_PLANE2 + D3DCS_PLANE2 + + + + No documentation. + + + bb172516 + D3DCS_PLANE3 + D3DCS_PLANE3 + + + + No documentation. + + + bb172516 + D3DCS_PLANE4 + D3DCS_PLANE4 + + + + No documentation. + + + bb172516 + D3DCS_PLANE5 + D3DCS_PLANE5 + + + + No documentation. + + + bb172516 + D3DCS_ALL + D3DCS_ALL + + + + No documentation. + + + D3DMATERIALCOLORSOURCE + D3DMATERIALCOLORSOURCE + + + + No documentation. + + + D3DMCS_MATERIAL + D3DMCS_MATERIAL + + + + No documentation. + + + D3DMCS_COLOR1 + D3DMCS_COLOR1 + + + + No documentation. + + + D3DMCS_COLOR2 + D3DMCS_COLOR2 + + + +

Render states define set-up states for all kinds of vertex and pixel processing. Some render states set up vertex processing, and some set up pixel processing (see Render States (Direct3D 9)). Render states can be saved and restored using stateblocks (see State Blocks Save and Restore State (Direct3D 9)).

+
+ +
Render States
ps_1_1 to ps_1_34 texture samplers

?

Direct3D defines the D3DRENDERSTATE_WRAPBIAS constant as a convenience for applications to enable or disable texture wrapping, based on the zero-based integer of a texture coordinate set (rather than explicitly using one of the D3DRS_WRAP n state values). Add the D3DRENDERSTATE_WRAPBIAS value to the zero-based index of a texture coordinate set to calculate the D3DRS_WRAP n value that corresponds to that index, as shown in the following example.

 // Enable U/V wrapping for textures that use the texture 	
+            // coordinate set at the index within the dwIndex variable  hr = pd3dDevice->SetRenderState(	
+            dwIndex + D3DRENDERSTATE_WRAPBIAS,  	
+             | ); // If dwIndex is 3, the value that results from 	
+            // the addition equals  (131)	
+            
+
+ + bb172599 + D3DCOLORWRITEENABLE + D3DCOLORWRITEENABLE +
+ + + No documentation. + + + bb172599 + D3DCOLORWRITEENABLE_RED + D3DCOLORWRITEENABLE_RED + + + + No documentation. + + + bb172599 + D3DCOLORWRITEENABLE_GREEN + D3DCOLORWRITEENABLE_GREEN + + + + No documentation. + + + bb172599 + D3DCOLORWRITEENABLE_BLUE + D3DCOLORWRITEENABLE_BLUE + + + + No documentation. + + + bb172599 + D3DCOLORWRITEENABLE_ALPHA + D3DCOLORWRITEENABLE_ALPHA + + + +

Defines the supported compare functions.

+
+ +

The values in this enumerated type define the supported compare functions for the , , and render states.

+
+ + bb172517 + D3DCMPFUNC + D3DCMPFUNC +
+ + +

Always fail the test.

+
+ + bb172517 + D3DCMP_NEVER + D3DCMP_NEVER +
+ + +

Accept the new pixel if its value is less than the value of the current pixel.

+
+ + bb172517 + D3DCMP_LESS + D3DCMP_LESS +
+ + +

Accept the new pixel if its value equals the value of the current pixel.

+
+ + bb172517 + D3DCMP_EQUAL + D3DCMP_EQUAL +
+ + +

Accept the new pixel if its value is less than or equal to the value of the current pixel.

+
+ + bb172517 + D3DCMP_LESSEQUAL + D3DCMP_LESSEQUAL +
+ + +

Accept the new pixel if its value is greater than the value of the current pixel.

+
+ + bb172517 + D3DCMP_GREATER + D3DCMP_GREATER +
+ + +

Accept the new pixel if its value does not equal the value of the current pixel.

+
+ + bb172517 + D3DCMP_NOTEQUAL + D3DCMP_NOTEQUAL +
+ + +

Accept the new pixel if its value is greater than or equal to the value of the current pixel.

+
+ + bb172517 + D3DCMP_GREATEREQUAL + D3DCMP_GREATEREQUAL +
+ + +

Always pass the test.

+
+ + bb172517 + D3DCMP_ALWAYS + D3DCMP_ALWAYS +
+ + +

C++ applications can use alpha testing to control when pixels are written to the render-target surface. By using the render state, your application sets the current Direct3D device so that it tests each pixel according to an alpha test function. If the test succeeds, the pixel is written to the surface. If it does not, Direct3D ignores the pixel. Select the alpha test function with the render state. Your application can set a reference alpha value for all pixels to compare against by using the render state.

The most common use for alpha testing is to improve performance when rasterizing objects that are nearly transparent. If the color data being rasterized is more opaque than the color at a given pixel (), then the pixel is written. Otherwise, the rasterizer ignores the pixel altogether, saving the processing required to blend the two colors. The following code example checks if a given comparison function is supported and, if so, it sets the comparison function parameters required to improve performance during rendering.

 // This code example assumes that pCaps is a	
+            //  structure that was filled with a 	
+            // previous call to . if (pCaps.AlphaCmpCaps & )	
+            { dev->SetRenderState(, (DWORD)0x00000001); dev->SetRenderState(, TRUE);  dev->SetRenderState(, );	
+            } // If the comparison is not supported, render anyway. 	
+            // The only drawback is no performance gain.	
+            

Not all hardware supports all alpha-testing features. You can check the device capabilities by calling the method. After retrieving the device capabilities, check the associated structure's AlphaCmpCaps member for the desired comparison function. If the AlphaCmpCaps member contains only the capability or only the capability, the driver does not support alpha tests.

?

?

+
+ + bb172254 + D3DPCMPCAPS + D3DPCMPCAPS +
+ + + No documentation. + + + bb172254 + D3DPCMPCAPS_NEVER + D3DPCMPCAPS_NEVER + + + + No documentation. + + + bb172254 + D3DPCMPCAPS_LESS + D3DPCMPCAPS_LESS + + + + No documentation. + + + bb172254 + D3DPCMPCAPS_EQUAL + D3DPCMPCAPS_EQUAL + + + + No documentation. + + + bb172254 + D3DPCMPCAPS_LESSEQUAL + D3DPCMPCAPS_LESSEQUAL + + + + No documentation. + + + bb172254 + D3DPCMPCAPS_GREATER + D3DPCMPCAPS_GREATER + + + + No documentation. + + + bb172254 + D3DPCMPCAPS_NOTEQUAL + D3DPCMPCAPS_NOTEQUAL + + + + No documentation. + + + bb172254 + D3DPCMPCAPS_GREATEREQUAL + D3DPCMPCAPS_GREATEREQUAL + + + + No documentation. + + + bb172254 + D3DPCMPCAPS_ALWAYS + D3DPCMPCAPS_ALWAYS + + + +

Specifies how to combine the glyph data from the source and destination surfaces in a call to ComposeRects.

+
+ + bb509546 + D3DCOMPOSERECTSOP + D3DCOMPOSERECTSOP +
+ + + No documentation. + + + bb509546 + D3DCOMPOSERECTS_COPY + D3DCOMPOSERECTS_COPY + + + + No documentation. + + + bb509546 + D3DCOMPOSERECTS_OR + D3DCOMPOSERECTS_OR + + + + No documentation. + + + bb509546 + D3DCOMPOSERECTS_AND + D3DCOMPOSERECTS_AND + + + + No documentation. + + + bb509546 + D3DCOMPOSERECTS_NEG + D3DCOMPOSERECTS_NEG + + + +

Defines the compression mode used for storing compressed animation set data.

+
+ + bb172734 + D3DXCOMPRESSION_FLAGS + D3DXCOMPRESSION_FLAGS +
+ + +

Implements fast compression.

+
+ + bb172734 + D3DXCOMPRESS_DEFAULT + D3DXCOMPRESS_DEFAULT +
+ + +

A combination of one or more flags that control the device create behavior.

+
+ + bb172527 + D3DCREATE + D3DCREATE +
+ + + No documentation. + + + bb172527 + D3DCREATE_FPU_PRESERVE + D3DCREATE_FPU_PRESERVE + + + + No documentation. + + + bb172527 + D3DCREATE_MULTITHREADED + D3DCREATE_MULTITHREADED + + + + No documentation. + + + bb172527 + D3DCREATE_PUREDEVICE + D3DCREATE_PUREDEVICE + + + + No documentation. + + + bb172527 + D3DCREATE_SOFTWARE_VERTEXPROCESSING + D3DCREATE_SOFTWARE_VERTEXPROCESSING + + + + No documentation. + + + bb172527 + D3DCREATE_HARDWARE_VERTEXPROCESSING + D3DCREATE_HARDWARE_VERTEXPROCESSING + + + + No documentation. + + + bb172527 + D3DCREATE_MIXED_VERTEXPROCESSING + D3DCREATE_MIXED_VERTEXPROCESSING + + + + No documentation. + + + bb172527 + D3DCREATE_DISABLE_DRIVER_MANAGEMENT + D3DCREATE_DISABLE_DRIVER_MANAGEMENT + + + + No documentation. + + + bb172527 + D3DCREATE_ADAPTERGROUP_DEVICE + D3DCREATE_ADAPTERGROUP_DEVICE + + + + No documentation. + + + bb172527 + D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX + D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX + + + + No documentation. + + + bb172527 + D3DCREATE_NOWINDOWCHANGES + D3DCREATE_NOWINDOWCHANGES + + + + No documentation. + + + bb172527 + D3DCREATE_DISABLE_PSGP_THREADING + D3DCREATE_DISABLE_PSGP_THREADING + + + + No documentation. + + + bb172527 + D3DCREATE_ENABLE_PRESENTSTATS + D3DCREATE_ENABLE_PRESENTSTATS + + + + No documentation. + + + bb172527 + D3DCREATE_DISABLE_PRINTSCREEN + D3DCREATE_DISABLE_PRINTSCREEN + + + + No documentation. + + + bb172527 + D3DCREATE_SCREENSAVER + D3DCREATE_SCREENSAVER + + + + None. + + + None + None + + + +

Defines the faces of a cubemap.

+
+ + bb172528 + D3DCUBEMAP_FACES + D3DCUBEMAP_FACES +
+ + +

Positive x-face of the cubemap.

+
+ + bb172528 + D3DCUBEMAP_FACE_POSITIVE_X + D3DCUBEMAP_FACE_POSITIVE_X +
+ + +

Negative x-face of the cubemap.

+
+ + bb172528 + D3DCUBEMAP_FACE_NEGATIVE_X + D3DCUBEMAP_FACE_NEGATIVE_X +
+ + +

Positive y-face of the cubemap.

+
+ + bb172528 + D3DCUBEMAP_FACE_POSITIVE_Y + D3DCUBEMAP_FACE_POSITIVE_Y +
+ + +

Negative y-face of the cubemap.

+
+ + bb172528 + D3DCUBEMAP_FACE_NEGATIVE_Y + D3DCUBEMAP_FACE_NEGATIVE_Y +
+ + +

Positive z-face of the cubemap.

+
+ + bb172528 + D3DCUBEMAP_FACE_POSITIVE_Z + D3DCUBEMAP_FACE_POSITIVE_Z +
+ + +

Negative z-face of the cubemap.

+
+ + bb172528 + D3DCUBEMAP_FACE_NEGATIVE_Z + D3DCUBEMAP_FACE_NEGATIVE_Z +
+ + +

Defines the supported culling modes.

+
+ +

The values in this enumerated type are used by the render state. The culling modes define how back faces are culled when rendering a geometry.

+
+ + bb172529 + D3DCULL + D3DCULL +
+ + +

Do not cull back faces.

+
+ + bb172529 + D3DCULL_NONE + D3DCULL_NONE +
+ + +

Cull back faces with clockwise vertices.

+
+ + bb172529 + D3DCULL_CW + D3DCULL_CW +
+ + +

Cull back faces with counterclockwise vertices.

+
+ + bb172529 + D3DCULL_CCW + D3DCULL_CCW +
+ + +

Driver cursor capability flags.

+
+ + bb172530 + D3DCURSORCAPS + D3DCURSORCAPS +
+ + + No documentation. + + + bb172530 + D3DCURSORCAPS_COLOR + D3DCURSORCAPS_COLOR + + + + No documentation. + + + bb172530 + D3DCURSORCAPS_LOWRES + D3DCURSORCAPS_LOWRES + + + + No documentation. + + + D3DDEBUGMONITORTOKENS + D3DDEBUGMONITORTOKENS + + + + No documentation. + + + D3DDMT_ENABLE + D3DDMT_ENABLE + + + + No documentation. + + + D3DDMT_DISABLE + D3DDMT_DISABLE + + + +

Defines the vertex declaration method which is a predefined operation performed by the tessellator (or any procedural geometry routine on the vertex data during tessellation).

+
+ +

The tessellator looks at the method to determine what data to calculate from the vertex data during tessellation. Mesh data should use the default value. Patches can use any of the other implemented types.

Vertex data is declared with an array of structures. Each element in the array contains a vertex declaration method.

In addition to using , a normal mesh can use and methods when N-patches are enabled.

+
+ + bb172532 + D3DDECLMETHOD + D3DDECLMETHOD +
+ + +

Default value. The tessellator copies the vertex data (spline data for patches) as is, with no additional calculations. When the tessellator is used, this element is interpolated. Otherwise vertex data is copied into the input register. The input and output type can be any value, but are always the same type.

+
+ + bb172532 + D3DDECLMETHOD_DEFAULT + D3DDECLMETHOD_DEFAULT +
+ + +

Computes the tangent at a point on the rectangle or triangle patch in the U direction. The input type can be one of the following: +

The output type is always .

+
+ + bb172532 + D3DDECLMETHOD_PARTIALU + D3DDECLMETHOD_PARTIALU +
+ + +

Computes the tangent at a point on the rectangle or triangle patch in the V direction. The input type can be one of the following: +

The output type is always .

+
+ + bb172532 + D3DDECLMETHOD_PARTIALV + D3DDECLMETHOD_PARTIALV +
+ + +

Computes the normal at a point on the rectangle or triangle patch by taking the cross product of two tangents. The input type can be one of the following: +

The output type is always .

+
+ + bb172532 + D3DDECLMETHOD_CROSSUV + D3DDECLMETHOD_CROSSUV +
+ + +

Copy out the U, V values at a point on the rectangle or triangle patch. This results in a 2D float. The input type must be set to . The output data type is always . The input stream and offset are also unused (but must be set to 0).

+
+ + bb172532 + D3DDECLMETHOD_UV + D3DDECLMETHOD_UV +
+ + +

Look up a displacement map. The input type can be one of the following: +

Only the .x and .y components are used for the texture map lookup. The output type is always . The device must support displacement mapping. For more information about displacement mapping, see Displacement Mapping (Direct3D 9). This constant is supported only by the programmable pipeline on N-patch data, if N-patches are enabled.

+
+ + bb172532 + D3DDECLMETHOD_LOOKUP + D3DDECLMETHOD_LOOKUP +
+ + +

Look up a presampled displacement map. The input type must be set to ; the stream index and the stream offset must be set to 0. The output type for this operation is always . The device must support displacement mapping. For more information about displacement mapping, see Displacement Mapping (Direct3D 9). This constant is supported only by the programmable pipeline on N-patch data, if N-patches are enabled. This method can be used only with .

+
+ + bb172532 + D3DDECLMETHOD_LOOKUPPRESAMPLED + D3DDECLMETHOD_LOOKUPPRESAMPLED +
+ + +

Defines a vertex declaration data type.

+
+ +

Vertex data is declared with an array of structures. Each element in the array contains a vertex declaration data type.

Use the DirectX Caps Viewer Tool tool to see which types are supported on your device.

+
+ + bb172533 + D3DDECLTYPE + D3DDECLTYPE +
+ + +

One-component float expanded to (float, 0, 0, 1).

+
+ + bb172533 + D3DDECLTYPE_FLOAT1 + D3DDECLTYPE_FLOAT1 +
+ + +

Two-component float expanded to (float, float, 0, 1).

+
+ + bb172533 + D3DDECLTYPE_FLOAT2 + D3DDECLTYPE_FLOAT2 +
+ + +

Three-component float expanded to (float, float, float, 1).

+
+ + bb172533 + D3DDECLTYPE_FLOAT3 + D3DDECLTYPE_FLOAT3 +
+ + +

Four-component float expanded to (float, float, float, float).

+
+ + bb172533 + D3DDECLTYPE_FLOAT4 + D3DDECLTYPE_FLOAT4 +
+ + +

Four-component, packed, unsigned bytes mapped to 0 to 1 range. Input is a and is expanded to RGBA order.

+
+ + bb172533 + D3DDECLTYPE_D3DCOLOR + D3DDECLTYPE_D3DCOLOR +
+ + +

Four-component, unsigned byte.

+
+ + bb172533 + D3DDECLTYPE_UBYTE4 + D3DDECLTYPE_UBYTE4 +
+ + +

Two-component, signed short expanded to (value, value, 0, 1).

+
+ + bb172533 + D3DDECLTYPE_SHORT2 + D3DDECLTYPE_SHORT2 +
+ + +

Four-component, signed short expanded to (value, value, value, value).

+
+ + bb172533 + D3DDECLTYPE_SHORT4 + D3DDECLTYPE_SHORT4 +
+ + +

Four-component byte with each byte normalized by dividing with 255.0f.

+
+ + bb172533 + D3DDECLTYPE_UBYTE4N + D3DDECLTYPE_UBYTE4N +
+ + +

Normalized, two-component, signed short, expanded to (first short/32767.0, second short/32767.0, 0, 1).

+
+ + bb172533 + D3DDECLTYPE_SHORT2N + D3DDECLTYPE_SHORT2N +
+ + +

Normalized, four-component, signed short, expanded to (first short/32767.0, second short/32767.0, third short/32767.0, fourth short/32767.0).

+
+ + bb172533 + D3DDECLTYPE_SHORT4N + D3DDECLTYPE_SHORT4N +
+ + +

Normalized, two-component, unsigned short, expanded to (first short/65535.0, short short/65535.0, 0, 1).

+
+ + bb172533 + D3DDECLTYPE_USHORT2N + D3DDECLTYPE_USHORT2N +
+ + +

Normalized, four-component, unsigned short, expanded to (first short/65535.0, second short/65535.0, third short/65535.0, fourth short/65535.0).

+
+ + bb172533 + D3DDECLTYPE_USHORT4N + D3DDECLTYPE_USHORT4N +
+ + +

Three-component, unsigned, 10 10 10 format expanded to (value, value, value, 1).

+
+ + bb172533 + D3DDECLTYPE_UDEC3 + D3DDECLTYPE_UDEC3 +
+ + +

Three-component, signed, 10 10 10 format normalized and expanded to (v[0]/511.0, v[1]/511.0, v[2]/511.0, 1).

+
+ + bb172533 + D3DDECLTYPE_DEC3N + D3DDECLTYPE_DEC3N +
+ + +

Two-component, 16-bit, floating point expanded to (value, value, 0, 1).

+
+ + bb172533 + D3DDECLTYPE_FLOAT16_2 + D3DDECLTYPE_FLOAT16_2 +
+ + +

Four-component, 16-bit, floating point expanded to (value, value, value, value).

+
+ + bb172533 + D3DDECLTYPE_FLOAT16_4 + D3DDECLTYPE_FLOAT16_4 +
+ + +

Type field in the declaration is unused. This is designed for use with and .

+
+ + bb172533 + D3DDECLTYPE_UNUSED + D3DDECLTYPE_UNUSED +
+ + +

Constants describing the vertex data types supported by a device.

+
+ + bb172552 + D3DDTCAPS + D3DDTCAPS +
+ + + No documentation. + + + bb172552 + D3DDTCAPS_UBYTE4 + D3DDTCAPS_UBYTE4 + + + + No documentation. + + + bb172552 + D3DDTCAPS_UBYTE4N + D3DDTCAPS_UBYTE4N + + + + No documentation. + + + bb172552 + D3DDTCAPS_SHORT2N + D3DDTCAPS_SHORT2N + + + + No documentation. + + + bb172552 + D3DDTCAPS_SHORT4N + D3DDTCAPS_SHORT4N + + + + No documentation. + + + bb172552 + D3DDTCAPS_USHORT2N + D3DDTCAPS_USHORT2N + + + + No documentation. + + + bb172552 + D3DDTCAPS_USHORT4N + D3DDTCAPS_USHORT4N + + + + No documentation. + + + bb172552 + D3DDTCAPS_UDEC3 + D3DDTCAPS_UDEC3 + + + + No documentation. + + + bb172552 + D3DDTCAPS_DEC3N + D3DDTCAPS_DEC3N + + + + No documentation. + + + bb172552 + D3DDTCAPS_FLOAT16_2 + D3DDTCAPS_FLOAT16_2 + + + + No documentation. + + + bb172552 + D3DDTCAPS_FLOAT16_4 + D3DDTCAPS_FLOAT16_4 + + + +

Identifies the intended use of vertex data.

+
+ +

Vertex data is declared with an array of structures. Each element in the array contains a usage type.

For more information about vertex declarations, see Vertex Declaration (Direct3D 9).

+
+ + bb172534 + D3DDECLUSAGE + D3DDECLUSAGE +
+ + +

Position data ranging from (-1,-1) to (1,1). Use with a usage index of 0 to specify untransformed position for fixed function vertex processing and the n-patch tessellator. Use with a usage index of 1 to specify untransformed position in the fixed function vertex shader for vertex tweening.

+
+ + bb172534 + D3DDECLUSAGE_POSITION + D3DDECLUSAGE_POSITION +
+ + +

Blending weight data. Use with a usage index of 0 to specify the blend weights used in indexed and nonindexed vertex blending.

+
+ + bb172534 + D3DDECLUSAGE_BLENDWEIGHT + D3DDECLUSAGE_BLENDWEIGHT +
+ + +

Blending indices data. Use with a usage index of 0 to specify matrix indices for indexed paletted skinning.

+
+ + bb172534 + D3DDECLUSAGE_BLENDINDICES + D3DDECLUSAGE_BLENDINDICES +
+ + +

Vertex normal data. Use with a usage index of 0 to specify vertex normals for fixed function vertex processing and the n-patch tessellator. Use with a usage index of 1 to specify vertex normals for fixed function vertex processing for vertex tweening.

+
+ + bb172534 + D3DDECLUSAGE_NORMAL + D3DDECLUSAGE_NORMAL +
+ + +

Point size data. Use with a usage index of 0 to specify the point-size attribute used by the setup engine of the rasterizer to expand a point into a quad for the point-sprite functionality.

+
+ + bb172534 + D3DDECLUSAGE_PSIZE + D3DDECLUSAGE_PSIZE +
+ + +

Texture coordinate data. Use , n to specify texture coordinates in fixed function vertex processing and in pixel shaders prior to ps_3_0. These can be used to pass user defined data.

+
+ + bb172534 + D3DDECLUSAGE_TEXCOORD + D3DDECLUSAGE_TEXCOORD +
+ + +

Vertex tangent data.

+
+ + bb172534 + D3DDECLUSAGE_TANGENT + D3DDECLUSAGE_TANGENT +
+ + +

Vertex binormal data.

+
+ + bb172534 + D3DDECLUSAGE_BINORMAL + D3DDECLUSAGE_BINORMAL +
+ + +

Single positive floating point value. Use with a usage index of 0 to specify a tessellation factor used in the tessellation unit to control the rate of tessellation. For more information about the data type, see .

+
+ + bb172534 + D3DDECLUSAGE_TESSFACTOR + D3DDECLUSAGE_TESSFACTOR +
+ + +

Vertex data contains transformed position data ranging from (0,0) to (viewport width, viewport height). Use with a usage index of 0 to specify transformed position. When a declaration containing this is set, the pipeline does not perform vertex processing.

+
+ + bb172534 + D3DDECLUSAGE_POSITIONT + D3DDECLUSAGE_POSITIONT +
+ + +

Vertex data contains diffuse or specular color. Use with a usage index of 0 to specify the diffuse color in the fixed function vertex shader and pixel shaders prior to ps_3_0. Use with a usage index of 1 to specify the specular color in the fixed function vertex shader and pixel shaders prior to ps_3_0.

+
+ + bb172534 + D3DDECLUSAGE_COLOR + D3DDECLUSAGE_COLOR +
+ + +

Vertex data contains fog data. Use with a usage index of 0 to specify a fog blend value used after pixel shading finishes. This applies to pixel shaders prior to version ps_3_0.

+
+ + bb172534 + D3DDECLUSAGE_FOG + D3DDECLUSAGE_FOG +
+ + +

Vertex data contains depth data.

+
+ + bb172534 + D3DDECLUSAGE_DEPTH + D3DDECLUSAGE_DEPTH +
+ + +

Vertex data contains sampler data. Use with a usage index of 0 to specify the displacement value to look up. It can be used only with D3DDECLUSAGE_LOOKUPPRESAMPLED or D3DDECLUSAGE_LOOKUP.

+
+ + bb172534 + D3DDECLUSAGE_SAMPLE + D3DDECLUSAGE_SAMPLE +
+ + +

Defines the degree of the variables in the equation that describes a curve.

+
+ +

The values in this enumeration are used to describe the curves used by rectangle and triangle patches. For more information, see .

+
+ + bb172536 + D3DDEGREETYPE + D3DDEGREETYPE +
+ + +

Curve is described by variables of first order.

+
+ + bb172536 + D3DDEGREE_LINEAR + D3DDEGREE_LINEAR +
+ + +

Curve is described by variables of second order.

+
+ + bb172536 + D3DDEGREE_QUADRATIC + D3DDEGREE_QUADRATIC +
+ + +

Curve is described by variables of third order.

+
+ + bb172536 + D3DDEGREE_CUBIC + D3DDEGREE_CUBIC +
+ + +

Curve is described by variables of fourth order.

+
+ + bb172536 + D3DDEGREE_QUINTIC + D3DDEGREE_QUINTIC +
+ + +

Represents the capabilities of the hardware exposed through the Direct3D object.

+
+ +

The MaxTextureBlendStages and MaxSimultaneousTextures members might seem similar, but they contain different information. The MaxTextureBlendStages member contains the total number of texture-blending stages supported by the current device, and the MaxSimultaneousTextures member describes how many of those stages can have textures bound to them by using the SetTexture method.

When the driver fills this structure, it can set values for execute-buffer capabilities, even when the interface being used to retrieve the capabilities (such as ) does not support execute buffers.

In general, performance problems may occur if you use a texture and then modify it during a scene. Ensure that no texture used in the current BeginScene and EndScene block is evicted unless absolutely necessary. In the case of extremely high texture usage within a scene, the results are undefined. This occurs when you modify a texture that you have used in the scene and there is no spare texture memory available. For such systems, the contents of the z-buffer become invalid at EndScene. Applications should not call UpdateSurface to or from the back buffer on this type of hardware inside a BeginScene/EndScene pair. In addition, applications should not try to access the z-buffer if the capability flag is set. Finally, applications should not lock the back buffer or the z-buffer inside a BeginScene/EndScene pair.

The following flags concerning mipmapped textures are not supported in Direct3D 9.

  • D3DPTFILTERCAPS_LINEAR
  • D3DPTFILTERCAPS_LINEARMIPLINEAR
  • D3DPTFILTERCAPS_LINEARMIPNEAREST
  • D3DPTFILTERCAPS_MIPNEAREST
  • D3DPTFILTERCAPS_NEAREST
+
+ + bb172513 + D3DDEVCAPS + D3DDEVCAPS +
+ + +

Member of the enumerated type, which identifies what type of resources are used for processing vertices.

+
+ + bb172513 + D3DDEVCAPS_EXECUTESYSTEMMEMORY + D3DDEVCAPS_EXECUTESYSTEMMEMORY +
+ + +

Adapter on which this Direct3D device was created. This ordinal is valid only to pass to methods of the interface that created this Direct3D device. The interface can always be retrieved by calling GetDirect3D.

+
+ + bb172513 + D3DDEVCAPS_EXECUTEVIDEOMEMORY + D3DDEVCAPS_EXECUTEVIDEOMEMORY +
+ + +

The following driver-specific capability.

ValueMeaning

Display hardware is capable of returning the current scan line.

The display driver supports an overlay DDI that allows for verification of overlay capabilities. For more information about the overlay DDI, see Overlay DDI.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

?

+
+ + bb172513 + D3DDEVCAPS_TLVERTEXSYSTEMMEMORY + D3DDEVCAPS_TLVERTEXSYSTEMMEMORY +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DDEVCAPS_TLVERTEXVIDEOMEMORY + D3DDEVCAPS_TLVERTEXVIDEOMEMORY +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DDEVCAPS_TEXTURESYSTEMMEMORY + D3DDEVCAPS_TEXTURESYSTEMMEMORY +
+ + +

Bit mask of values representing what presentation swap intervals are available.

ValueMeaning

The driver supports an immediate presentation swap interval.

The driver supports a presentation swap interval of every screen refresh.

The driver supports a presentation swap interval of every second screen refresh.

The driver supports a presentation swap interval of every third screen refresh.

The driver supports a presentation swap interval of every fourth screen refresh.

?

+
+ + bb172513 + D3DDEVCAPS_TEXTUREVIDEOMEMORY + D3DDEVCAPS_TEXTUREVIDEOMEMORY +
+ + +

Bit mask indicating what hardware support is available for cursors. Direct3D 9 does not define alpha-blending cursor capabilities.

ValueMeaning

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports at least a hardware color cursor in high-resolution modes (with scan lines greater than or equal to 400).

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports a hardware color cursor in both high-resolution and low-resolution modes (with scan lines less than 400).

?

+
+ + bb172513 + D3DDEVCAPS_DRAWPRIMTLVERTEX + D3DDEVCAPS_DRAWPRIMTLVERTEX +
+ + +

Flags identifying the capabilities of the device.

ValueMeaning

Device supports blits from system-memory textures to nonlocal video-memory textures.

Device can queue rendering commands after a page flip. Applications do not change their behavior if this flag is set; this capability means that the device is relatively fast.

Device can support at least a DirectX 5-compliant driver.

Device can support at least a DirectX 7-compliant driver.

Device exports an -aware hal.

Device can use execute buffers from system memory.

Device can use execute buffers from video memory.

Device has hardware acceleration for scene rasterization.

Device can support transformation and lighting in hardware.

Device supports N patches.

Device can support rasterization, transform, lighting, and shading in hardware.

Device supports quintic B?zier curves and B-splines.

Device supports rectangular and triangular patches.

When this device capability is set, the hardware architecture does not require caching of any information, and uncached patches (handle zero) will be drawn as efficiently as cached ones. Note that setting does not mean that a patch with handle zero can be drawn. A handle-zero patch can always be drawn whether this cap is set or not.

Device is texturing from separate memory pools.

Device can retrieve textures from non-local video memory.

Device can retrieve textures from system memory.

Device can retrieve textures from device memory.

Device can use buffers from system memory for transformed and lit vertices.

Device can use buffers from video memory for transformed and lit vertices.

?

+
+ + bb172513 + D3DDEVCAPS_CANRENDERAFTERFLIP + D3DDEVCAPS_CANRENDERAFTERFLIP +
+ + +

Miscellaneous driver primitive capabilities. See .

+
+ + bb172513 + D3DDEVCAPS_TEXTURENONLOCALVIDMEM + D3DDEVCAPS_TEXTURENONLOCALVIDMEM +
+ + +

Information on raster-drawing capabilities. This member can be one or more of the following flags.

ValueMeaning

Device supports anisotropic filtering.

Device iterates colors perspective correctly.

Device can dither to improve color resolution.

Device supports legacy depth bias. For true depth bias, see .

Device supports range-based fog. In range-based fog, the distance of an object from the viewer is used to compute fog effects, not the depth of the object (that is, the z-coordinate) in the scene.

Device calculates the fog value by referring to a lookup table containing fog values that are indexed to the depth of a given pixel.

Device calculates the fog value during the lighting operation and interpolates the fog value during rasterization.

Device supports level-of-detail bias adjustments. These bias adjustments enable an application to make a mipmap appear crisper or less sharp than it normally would. For more information about level-of-detail bias in mipmaps, see .

Device supports toggling multisampling on and off between and (using ).

Device supports scissor test. See Scissor Test (Direct3D 9).

Device performs true slope-scale based depth bias. This is in contrast to the legacy style depth bias.

Device supports depth buffering using w.

Device supports w-based fog. W-based fog is used when a perspective projection matrix is specified, but affine projections still use z-based fog. The system considers a projection matrix that contains a nonzero value in the [3][4] element to be a perspective projection matrix.

Device can perform hidden-surface removal (HSR) without requiring the application to sort polygons and without requiring the allocation of a depth-buffer. This leaves more video memory for textures. The method used to perform HSR is hardware-dependent and is transparent to the application.

Z-bufferless HSR is performed if no depth-buffer surface is associated with the rendering-target surface and the depth-buffer comparison test is enabled (that is, when the state value associated with the enumeration constant is set to TRUE).

Device supports z-based fog.

Device can perform z-test operations. This effectively renders a primitive and indicates whether any z pixels have been rendered.

?

+
+ + bb172513 + D3DDEVCAPS_DRAWPRIMITIVES2 + D3DDEVCAPS_DRAWPRIMITIVES2 +
+ + +

Z-buffer comparison capabilities. This member can be one or more of the following flags.

ValueMeaning

Always pass the z-test.

Pass the z-test if the new z equals the current z.

Pass the z-test if the new z is greater than the current z.

Pass the z-test if the new z is greater than or equal to the current z.

Pass the z-test if the new z is less than the current z.

Pass the z-test if the new z is less than or equal to the current z.

Always fail the z-test.

Pass the z-test if the new z does not equal the current z.

?

+
+ + bb172513 + D3DDEVCAPS_SEPARATETEXTUREMEMORIES + D3DDEVCAPS_SEPARATETEXTUREMEMORIES +
+ + +

Source-blending capabilities. This member can be one or more of the following flags. (The RGBA values of the source and destination are indicated by the subscripts s and d.)

ValueMeaning

The driver supports both and . See .

Source blend factor is (1 - As, 1 - As, 1 - As, 1 - As) and destination blend factor is (As, As, As, As); the destination blend selection is overridden.

The driver supports the blend mode. (This blend mode is obsolete. For more information, see .)

Blend factor is (Ad, Ad, Ad, Ad).

Blend factor is (Rd, Gd, Bd, Ad).

Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad).

Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad).

Blend factor is (1 - As, 1 - As, 1 - As, 1 - As).

Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As).

Blend factor is (1 - PSOutColor[1]r, 1 - PSOutColor[1]g, 1 - PSOutColor[1]b, not used)). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (1, 1, 1, 1).

Blend factor is (As, As, As, As).

Blend factor is (f, f, f, 1); f = min(As, 1 - Ad).

Blend factor is (Rs, Gs, Bs, As).

Blend factor is (PSOutColor[1]r, PSOutColor[1]g, PSOutColor[1]b, not used). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (0, 0, 0, 0).

?

+
+ + bb172513 + D3DDEVCAPS_DRAWPRIMITIVES2EX + D3DDEVCAPS_DRAWPRIMITIVES2EX +
+ + +

Destination-blending capabilities. This member can be the same capabilities that are defined for the SrcBlendCaps member.

+
+ + bb172513 + D3DDEVCAPS_HWTRANSFORMANDLIGHT + D3DDEVCAPS_HWTRANSFORMANDLIGHT +
+ + +

Alpha-test comparison capabilities. This member can include the same capability flags defined for the ZCmpCaps member. If this member contains only the capability or only the capability, the driver does not support alpha tests. Otherwise, the flags identify the individual comparisons that are supported for alpha testing.

+
+ + bb172513 + D3DDEVCAPS_CANBLTSYSTONONLOCAL + D3DDEVCAPS_CANBLTSYSTONONLOCAL +
+ + +

Shading operations capabilities. It is assumed, in general, that if a device supports a given command at all, it supports the mode (as specified in the enumerated type). This flag specifies whether the driver can also support Gouraud shading and whether alpha color components are supported. When alpha components are not supported, the alpha value of colors generated is implicitly 255. This is the maximum possible alpha (that is, the alpha component is at full intensity).

The color, specular highlights, fog, and alpha interpolants of a triangle each have capability flags that an application can use to find out how they are implemented by the device driver.

This member can be one or more of the following flags.

ValueMeaning

Device can support an alpha component for Gouraud-blended transparency (the state for the enumerated type). In this mode, the alpha color component of a primitive is provided at vertices and interpolated across a face along with the other color components.

Device can support colored Gouraud shading. In this mode, the per-vertex color components (red, green, and blue) are interpolated across a triangle face.

Device can support fog in the Gouraud shading mode.

Device supports Gouraud shading of specular highlights.

?

+
+ + bb172513 + D3DDEVCAPS_HWRASTERIZATION + D3DDEVCAPS_HWRASTERIZATION +
+ + +

Miscellaneous texture-mapping capabilities. This member can be one or more of the following flags.

ValueMeaning

Alpha in texture pixels is supported.

Device can draw alpha from texture palettes.

Supports cube textures.

Device requires that cube texture maps have dimensions specified as powers of two.

Device supports mipmapped cube textures.

Device supports mipmapped textures.

Device supports mipmapped volume textures.

is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. A device that exposes this capability can use such a texture if all of the following requirements are met.

  • The texture addressing mode for the texture stage is set to .
  • Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
  • Mipmapping is not in use (use magnification filter only).
  • Texture formats must not be through .

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

A texture that is not a power of two cannot be set at a stage that will be read based on a shader computation (such as the bem - ps and texm3x3 - ps instructions in pixel shaders versions 1_0 to 1_3). For example, these textures can be used to store bumps that will be fed into texture reads, but not the environment maps that are used in texbem - ps, texbeml - ps, and texm3x3spec - ps. This means that a texture with dimensions that are not powers of two cannot be addressed or sampled using texture coordinates computed within the shader. This type of operation is known as a dependent read and cannot be performed on these types of textures.

Device does not support a projected bump-environment loopkup operation in programmable and fixed function shaders.

Perspective correction texturing is supported.

If is not set, all textures must have widths and heights specified as powers of two. This requirement does not apply to either cube textures or volume textures.

If is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. See description.

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

Supports the texture transformation flag. When applied, the device divides transformed texture coordinates by the last texture coordinate. If this capability is present, then the projective divide occurs per pixel. If this capability is not present, but the projective divide needs to occur anyway, then it is performed on a per-vertex basis by the Direct3D runtime.

All textures must be square.

Texture indices are not scaled by the texture size prior to interpolation.

Device supports volume textures.

Device requires that volume texture maps have dimensions specified as powers of two.

?

+
+ + bb172513 + D3DDEVCAPS_PUREDEVICE + D3DDEVCAPS_PUREDEVICE +
+ + +

Texture-filtering capabilities for a texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DDEVCAPS_QUINTICRTPATCHES + D3DDEVCAPS_QUINTICRTPATCHES +
+ + +

Texture-filtering capabilities for a cube texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DDEVCAPS_RTPATCHES + D3DDEVCAPS_RTPATCHES +
+ + +

Texture-filtering capabilities for a volume texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DDEVCAPS_RTPATCHHANDLEZERO + D3DDEVCAPS_RTPATCHHANDLEZERO +
+ + +

Texture-addressing capabilities for texture objects. This member can be one or more of the following flags.

ValueMeaning

Device supports setting coordinates outside the range [0.0, 1.0] to the border color, as specified by the texture-stage state.

Device can clamp textures to addresses.

Device can separate the texture-addressing modes of the u and v coordinates of the texture. This ability corresponds to the and render-state values.

Device can mirror textures to addresses.

Device can take the absolute value of the texture coordinate (thus, mirroring around 0) and then clamp to the maximum value.

Device can wrap textures to addresses.

?

+
+ + bb172513 + D3DDEVCAPS_NPATCHES + D3DDEVCAPS_NPATCHES +
+ + +

driver capability flags.

+
+ + bb172537 + D3DDEVCAPS2 + D3DDEVCAPS2 +
+ + + No documentation. + + + bb172537 + D3DDEVCAPS2_STREAMOFFSET + D3DDEVCAPS2_STREAMOFFSET + + + + No documentation. + + + bb172537 + D3DDEVCAPS2_DMAPNPATCH + D3DDEVCAPS2_DMAPNPATCH + + + + No documentation. + + + bb172537 + D3DDEVCAPS2_ADAPTIVETESSRTPATCH + D3DDEVCAPS2_ADAPTIVETESSRTPATCH + + + + No documentation. + + + bb172537 + D3DDEVCAPS2_ADAPTIVETESSNPATCH + D3DDEVCAPS2_ADAPTIVETESSNPATCH + + + + No documentation. + + + bb172537 + D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES + D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES + + + + No documentation. + + + bb172537 + D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH + D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH + + + + No documentation. + + + bb172537 + D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET + D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET + + + +

Defines device types.

+
+ +

All methods of the interface that take a device type will fail if is specified. To use these methods, substitute in the method call.

A device should be created in memory, unless vertex and index buffers are required. To support vertex and index buffers, create the device in memory.

If D3dref9.dll is installed, Direct3D will use the reference rasterizer to create a device type, even if is specified. If D3dref9.dll is not available and is specified, Direct3D will neither render nor present the scene.

+
+ + bb172547 + D3DDEVTYPE + D3DDEVTYPE +
+ + +

Hardware rasterization. Shading is done with software, hardware, or mixed transform and lighting.

+
+ + bb172547 + D3DDEVTYPE_HAL + D3DDEVTYPE_HAL +
+ + +

Direct3D features are implemented in software; however, the reference rasterizer does make use of special CPU instructions whenever it can.

The reference device is installed by the Windows SDK 8.0 or later and is intended as an aid in debugging for development only.

+
+ + bb172547 + D3DDEVTYPE_REF + D3DDEVTYPE_REF +
+ + +

A pluggable software device that has been registered with .

+
+ + bb172547 + D3DDEVTYPE_SW + D3DDEVTYPE_SW +
+ + +

Initialize Direct3D on a computer that has neither hardware nor reference rasterization available, and enable resources for 3D content creation. See Remarks.

+
+ + bb172547 + D3DDEVTYPE_NULLREF + D3DDEVTYPE_NULLREF +
+ + +

Specifies how the monitor being used to display a full-screen application is rotated.

+
+ +

This enumeration is used in , , and .

Applications may choose to handle monitor rotation themselves by using the , in which case, the application will need to know how the monitor is rotated so that it may adjust its rendering accordingly.

+
+ + bb172551 + D3DDISPLAYROTATION + D3DDISPLAYROTATION +
+ + +

Display is not rotated.

+
+ + bb172551 + D3DDISPLAYROTATION_IDENTITY + D3DDISPLAYROTATION_IDENTITY +
+ + +

Display is rotated 90 degrees.

+
+ + bb172551 + D3DDISPLAYROTATION_90 + D3DDISPLAYROTATION_90 +
+ + +

Display is rotated 180 degrees.

+
+ + bb172551 + D3DDISPLAYROTATION_180 + D3DDISPLAYROTATION_180 +
+ + +

Display is rotated 270 degrees.

+
+ + bb172551 + D3DDISPLAYROTATION_270 + D3DDISPLAYROTATION_270 +
+ + +

Effect data types. The data is contained in the pValue member of .

+
+ + bb172822 + D3DXEFFECTDEFAULTTYPE + D3DXEFFECTDEFAULTTYPE +
+ + + No documentation. + + + bb172822 + D3DXEDT_STRING + D3DXEDT_STRING + + + + No documentation. + + + bb172822 + D3DXEDT_FLOATS + D3DXEDT_FLOATS + + + + No documentation. + + + bb172822 + D3DXEDT_DWORD + D3DXEDT_DWORD + + + + No documentation. + + + bb172822 + D3DXEDT_FORCEDWORD + D3DXEDT_FORCEDWORD + + + +

Describes the type of events that can be keyed by the animation controller.

+
+ + bb172827 + D3DXEVENT_TYPE + D3DXEVENT_TYPE +
+ + +

Track speed.

+
+ + bb172827 + D3DXEVENT_TRACKSPEED + D3DXEVENT_TRACKSPEED +
+ + +

Track weight.

+
+ + bb172827 + D3DXEVENT_TRACKWEIGHT + D3DXEVENT_TRACKWEIGHT +
+ + +

Track position.

+
+ + bb172827 + D3DXEVENT_TRACKPOSITION + D3DXEVENT_TRACKPOSITION +
+ + +

Enable flag.

+
+ + bb172827 + D3DXEVENT_TRACKENABLE + D3DXEVENT_TRACKENABLE +
+ + +

Priority blend value.

+
+ + bb172827 + D3DXEVENT_PRIORITYBLEND + D3DXEVENT_PRIORITYBLEND +
+ + +

Defines constants describing the fill mode.

+
+ +

The values in this enumerated type are used by the render state.

+
+ + bb172556 + D3DFILLMODE + D3DFILLMODE +
+ + +

Fill points.

+
+ + bb172556 + D3DFILL_POINT + D3DFILL_POINT +
+ + +

Fill wireframes.

+
+ + bb172556 + D3DFILL_WIREFRAME + D3DFILL_WIREFRAME +
+ + +

Fill solids.

+
+ + bb172556 + D3DFILL_SOLID + D3DFILL_SOLID +
+ + +

The following flags are used to specify which channels in a texture to operate on.

+
+ + bb205565 + D3DX_FILTER + D3DX_FILTER +
+ + + No documentation. + + + bb205565 + D3DX_FILTER_NONE + D3DX_FILTER_NONE + + + + No documentation. + + + bb205565 + D3DX_FILTER_POINT + D3DX_FILTER_POINT + + + + No documentation. + + + bb205565 + D3DX_FILTER_LINEAR + D3DX_FILTER_LINEAR + + + + No documentation. + + + bb205565 + D3DX_FILTER_TRIANGLE + D3DX_FILTER_TRIANGLE + + + + No documentation. + + + bb205565 + D3DX_FILTER_BOX + D3DX_FILTER_BOX + + + + No documentation. + + + bb205565 + D3DX_FILTER_MIRROR_U + D3DX_FILTER_MIRROR_U + + + + No documentation. + + + bb205565 + D3DX_FILTER_MIRROR_V + D3DX_FILTER_MIRROR_V + + + + No documentation. + + + bb205565 + D3DX_FILTER_MIRROR_W + D3DX_FILTER_MIRROR_W + + + + No documentation. + + + bb205565 + D3DX_FILTER_MIRROR + D3DX_FILTER_MIRROR + + + + No documentation. + + + bb205565 + D3DX_FILTER_DITHER + D3DX_FILTER_DITHER + + + + No documentation. + + + bb205565 + D3DX_FILTER_DITHER_DIFFUSION + D3DX_FILTER_DITHER_DIFFUSION + + + + No documentation. + + + bb205565 + D3DX_FILTER_SRGB_IN + D3DX_FILTER_SRGB_IN + + + + No documentation. + + + bb205565 + D3DX_FILTER_SRGB_OUT + D3DX_FILTER_SRGB_OUT + + + + No documentation. + + + bb205565 + D3DX_FILTER_SRGB + D3DX_FILTER_SRGB + + + + No documentation. + + + bb205565 + D3DX_FILTER_DEFAULT + D3DX_FILTER_DEFAULT + + + +

Texture filtering constants.

+
+ + bb172593 + D3DPTFILTERCAPS + D3DPTFILTERCAPS +
+ + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MINFPOINT + D3DPTFILTERCAPS_MINFPOINT + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MINFLINEAR + D3DPTFILTERCAPS_MINFLINEAR + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MINFANISOTROPIC + D3DPTFILTERCAPS_MINFANISOTROPIC + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MINFPYRAMIDALQUAD + D3DPTFILTERCAPS_MINFPYRAMIDALQUAD + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MINFGAUSSIANQUAD + D3DPTFILTERCAPS_MINFGAUSSIANQUAD + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MIPFPOINT + D3DPTFILTERCAPS_MIPFPOINT + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MIPFLINEAR + D3DPTFILTERCAPS_MIPFLINEAR + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_CONVOLUTIONMONO + D3DPTFILTERCAPS_CONVOLUTIONMONO + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MAGFPOINT + D3DPTFILTERCAPS_MAGFPOINT + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MAGFLINEAR + D3DPTFILTERCAPS_MAGFLINEAR + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MAGFANISOTROPIC + D3DPTFILTERCAPS_MAGFANISOTROPIC + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD + D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD + + + + No documentation. + + + bb172593 + D3DPTFILTERCAPS_MAGFGAUSSIANQUAD + D3DPTFILTERCAPS_MAGFGAUSSIANQUAD + + + +

Defines constants that describe the fog mode.

+
+ +

The values in this enumerated type are used by the and render states.

Fog can be considered a measure of visibility: the lower the fog value produced by a fog equation, the less visible an object is.

+
+ + bb172557 + D3DFOGMODE + D3DFOGMODE +
+ + +

No fog effect.

+
+ + bb172557 + D3DFOG_NONE + D3DFOG_NONE +
+ + +

Fog effect intensifies exponentially, according to the following formula. +

+
+ + bb172557 + D3DFOG_EXP + D3DFOG_EXP +
+ + +

Fog effect intensifies exponentially with the square of the distance, according to the following formula. +

+
+ + bb172557 + D3DFOG_EXP2 + D3DFOG_EXP2 +
+ + +

Fog effect intensifies linearly between the start and end points, according to the following formula.

This is the only fog mode currently supported.

+
+ + bb172557 + D3DFOG_LINEAR + D3DFOG_LINEAR +
+ + +

Defines the various types of surface formats.

typedef enum _D3DFORMAT { = 0, = 20, = 21, = 22, = 23, = 24, = 25, = 26, = 27, = 28, = 29, = 30, = 31, = 32, = 33, = 34, = 35, = 36, = 40, = 41, = 50, = 51, = 52, = 60, = 61, = 62, = 63, = 64, = 67, = MAKEFOURCC('U', 'Y', 'V', 'Y'), = MAKEFOURCC('R', 'G', 'B', 'G'), = MAKEFOURCC('Y', 'U', 'Y', '2'), = MAKEFOURCC('G', 'R', 'G', 'B'), = MAKEFOURCC('D', 'X', 'T', '1'), = MAKEFOURCC('D', 'X', 'T', '2'), = MAKEFOURCC('D', 'X', 'T', '3'), = MAKEFOURCC('D', 'X', 'T', '4'), = MAKEFOURCC('D', 'X', 'T', '5'), = 70, = 71, = 73, = 75, = 77, = 79, = 80, = 82, = 83, #if !defined(D3D_DISABLE_9EX) = 84, = 85, + #endif // !D3D_DISABLE_9EX = 81, =100, =101, =102, =110, = MAKEFOURCC('M','E','T','1'), = 111, = 112, = 113, = 114, = 115, = 116, = 117, #if !defined(D3D_DISABLE_9EX) = 118, = 119, = 199, + #endif // !D3D_DISABLE_9EX D3DFMT_FORCE_DWORD =0x7fffffff + } ; +
+ +

There are several types of formats:

  • BackBuffer
  • Buffer
  • DXTn
  • Floating-Point
  • FOURCC
  • IEEE
  • Mixed
  • Signed
  • Unsigned
  • Other

All formats are listed from left to right, most-significant bit to least-significant bit. For example, D3DFORMAT_ARGB is ordered from the most-significant bit channel A (alpha), to the least-significant bit channel B (blue). When traversing surface data, the data is stored in memory from least-significant bit to most-significant bit, which means that the channel order in memory is from least-significant bit (blue) to most-significant bit (alpha).

The default value for formats that contain undefined channels (G16R16, A8, and so on) is 1. The only exception is the A8 format, which is initialized to 000 for the three color channels.

The order of the bits is from the most significant byte first, so indicates that the high byte of this 2-byte format is alpha. indicates a 16-bit integer value and an application-lockable surface.

Pixel formats have been chosen to enable the expression of hardware-vendor-defined extension formats, as well as to include the well-established FOURCC method. The set of formats understood by the Direct3D runtime is defined by .

Note that formats are supplied by independent hardware vendors (IHVs) and many FOURCC codes are not listed. The formats in this enumeration are unique in that they are sanctioned by the runtime, meaning that the reference rasterizer will operate on all these types. IHV-supplied formats will be supported by the individual IHVs on a card-by-card basis.

+
+ + bb172558 + D3DFORMAT + D3DFORMAT +
+ + + No documentation. + + + bb172558 + D3DFMT_UNKNOWN + D3DFMT_UNKNOWN + + + + No documentation. + + + bb172558 + D3DFMT_R8G8B8 + D3DFMT_R8G8B8 + + + + No documentation. + + + bb172558 + D3DFMT_A8R8G8B8 + D3DFMT_A8R8G8B8 + + + + No documentation. + + + bb172558 + D3DFMT_X8R8G8B8 + D3DFMT_X8R8G8B8 + + + + No documentation. + + + bb172558 + D3DFMT_R5G6B5 + D3DFMT_R5G6B5 + + + + No documentation. + + + bb172558 + D3DFMT_X1R5G5B5 + D3DFMT_X1R5G5B5 + + + + No documentation. + + + bb172558 + D3DFMT_A1R5G5B5 + D3DFMT_A1R5G5B5 + + + + No documentation. + + + bb172558 + D3DFMT_A4R4G4B4 + D3DFMT_A4R4G4B4 + + + + No documentation. + + + bb172558 + D3DFMT_R3G3B2 + D3DFMT_R3G3B2 + + + + No documentation. + + + bb172558 + D3DFMT_A8 + D3DFMT_A8 + + + + No documentation. + + + bb172558 + D3DFMT_A8R3G3B2 + D3DFMT_A8R3G3B2 + + + + No documentation. + + + bb172558 + D3DFMT_X4R4G4B4 + D3DFMT_X4R4G4B4 + + + + No documentation. + + + bb172558 + D3DFMT_A2B10G10R10 + D3DFMT_A2B10G10R10 + + + + No documentation. + + + bb172558 + D3DFMT_A8B8G8R8 + D3DFMT_A8B8G8R8 + + + + No documentation. + + + bb172558 + D3DFMT_X8B8G8R8 + D3DFMT_X8B8G8R8 + + + + No documentation. + + + bb172558 + D3DFMT_G16R16 + D3DFMT_G16R16 + + + + No documentation. + + + bb172558 + D3DFMT_A2R10G10B10 + D3DFMT_A2R10G10B10 + + + + No documentation. + + + bb172558 + D3DFMT_A16B16G16R16 + D3DFMT_A16B16G16R16 + + + + No documentation. + + + bb172558 + D3DFMT_A8P8 + D3DFMT_A8P8 + + + + No documentation. + + + bb172558 + D3DFMT_P8 + D3DFMT_P8 + + + + No documentation. + + + bb172558 + D3DFMT_L8 + D3DFMT_L8 + + + + No documentation. + + + bb172558 + D3DFMT_A8L8 + D3DFMT_A8L8 + + + + No documentation. + + + bb172558 + D3DFMT_A4L4 + D3DFMT_A4L4 + + + + No documentation. + + + bb172558 + D3DFMT_V8U8 + D3DFMT_V8U8 + + + + No documentation. + + + bb172558 + D3DFMT_L6V5U5 + D3DFMT_L6V5U5 + + + + No documentation. + + + bb172558 + D3DFMT_X8L8V8U8 + D3DFMT_X8L8V8U8 + + + + No documentation. + + + bb172558 + D3DFMT_Q8W8V8U8 + D3DFMT_Q8W8V8U8 + + + + No documentation. + + + bb172558 + D3DFMT_V16U16 + D3DFMT_V16U16 + + + + No documentation. + + + bb172558 + D3DFMT_A2W10V10U10 + D3DFMT_A2W10V10U10 + + + + No documentation. + + + bb172558 + D3DFMT_UYVY + D3DFMT_UYVY + + + + No documentation. + + + bb172558 + D3DFMT_R8G8_B8G8 + D3DFMT_R8G8_B8G8 + + + + No documentation. + + + bb172558 + D3DFMT_YUY2 + D3DFMT_YUY2 + + + + No documentation. + + + bb172558 + D3DFMT_G8R8_G8B8 + D3DFMT_G8R8_G8B8 + + + + No documentation. + + + bb172558 + D3DFMT_DXT1 + D3DFMT_DXT1 + + + + No documentation. + + + bb172558 + D3DFMT_DXT2 + D3DFMT_DXT2 + + + + No documentation. + + + bb172558 + D3DFMT_DXT3 + D3DFMT_DXT3 + + + + No documentation. + + + bb172558 + D3DFMT_DXT4 + D3DFMT_DXT4 + + + + No documentation. + + + bb172558 + D3DFMT_DXT5 + D3DFMT_DXT5 + + + + No documentation. + + + bb172558 + D3DFMT_D16_LOCKABLE + D3DFMT_D16_LOCKABLE + + + + No documentation. + + + bb172558 + D3DFMT_D32 + D3DFMT_D32 + + + + No documentation. + + + bb172558 + D3DFMT_D15S1 + D3DFMT_D15S1 + + + + No documentation. + + + bb172558 + D3DFMT_D24S8 + D3DFMT_D24S8 + + + + No documentation. + + + bb172558 + D3DFMT_D24X8 + D3DFMT_D24X8 + + + + No documentation. + + + bb172558 + D3DFMT_D24X4S4 + D3DFMT_D24X4S4 + + + + No documentation. + + + bb172558 + D3DFMT_D16 + D3DFMT_D16 + + + + No documentation. + + + bb172558 + D3DFMT_D32F_LOCKABLE + D3DFMT_D32F_LOCKABLE + + + + No documentation. + + + bb172558 + D3DFMT_D24FS8 + D3DFMT_D24FS8 + + + + No documentation. + + + bb172558 + D3DFMT_D32_LOCKABLE + D3DFMT_D32_LOCKABLE + + + + No documentation. + + + bb172558 + D3DFMT_S8_LOCKABLE + D3DFMT_S8_LOCKABLE + + + + No documentation. + + + bb172558 + D3DFMT_L16 + D3DFMT_L16 + + + + No documentation. + + + bb172558 + D3DFMT_VERTEXDATA + D3DFMT_VERTEXDATA + + + + No documentation. + + + bb172558 + D3DFMT_INDEX16 + D3DFMT_INDEX16 + + + + No documentation. + + + bb172558 + D3DFMT_INDEX32 + D3DFMT_INDEX32 + + + + No documentation. + + + bb172558 + D3DFMT_Q16W16V16U16 + D3DFMT_Q16W16V16U16 + + + + No documentation. + + + bb172558 + D3DFMT_MULTI2_ARGB8 + D3DFMT_MULTI2_ARGB8 + + + + No documentation. + + + bb172558 + D3DFMT_R16F + D3DFMT_R16F + + + + No documentation. + + + bb172558 + D3DFMT_G16R16F + D3DFMT_G16R16F + + + + No documentation. + + + bb172558 + D3DFMT_A16B16G16R16F + D3DFMT_A16B16G16R16F + + + + No documentation. + + + bb172558 + D3DFMT_R32F + D3DFMT_R32F + + + + No documentation. + + + bb172558 + D3DFMT_G32R32F + D3DFMT_G32R32F + + + + No documentation. + + + bb172558 + D3DFMT_A32B32G32R32F + D3DFMT_A32B32G32R32F + + + + No documentation. + + + bb172558 + D3DFMT_CxV8U8 + D3DFMT_CxV8U8 + + + + No documentation. + + + bb172558 + D3DFMT_A1 + D3DFMT_A1 + + + + No documentation. + + + bb172558 + D3DFMT_A2B10G10R10_XR_BIAS + D3DFMT_A2B10G10R10_XR_BIAS + + + + No documentation. + + + bb172558 + D3DFMT_BINARYBUFFER + D3DFMT_BINARYBUFFER + + + +

Options for saving and creating effects.

The constants in the following table are defined in d3dx9effect.h.

+
+ + bb172855 + D3DXFX + D3DXFX +
+ + + No documentation. + + + bb172855 + D3DXFX_DONOTSAVESTATE + D3DXFX_DONOTSAVESTATE + + + + No documentation. + + + bb172855 + D3DXFX_DONOTSAVESHADERSTATE + D3DXFX_DONOTSAVESHADERSTATE + + + + No documentation. + + + bb172855 + D3DXFX_DONOTSAVESAMPLERSTATE + D3DXFX_DONOTSAVESAMPLERSTATE + + + + No documentation. + + + bb172855 + D3DXFX_NOT_CLONEABLE + D3DXFX_NOT_CLONEABLE + + + + No documentation. + + + bb172855 + D3DXFX_LARGEADDRESSAWARE + D3DXFX_LARGEADDRESSAWARE + + + + None. + + + None + None + + + +

Describes the supported image file formats. See Remarks for descriptions of these formats.

+
+ +

Functions that begin with D3DXLoadxxx support all of the formats listed. Functions that begin with D3DXSavexxx support all of the formats listed except the Truevision (.tga) and portable pixmap (.ppm) formats.

The following table lists the available input and output formats.

File ExtensionDescription
.bmpWindows bitmap format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette.
.ddsDirectDraw Surface file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. See DDS.
.dibWindows DIB. Contains an array of bits combined with structures that specify width and height of the bitmapped image, color format of the device where the image was created, and resolution of the device used to create that image.
.hdrHDR format. Encodes each pixel as an RGBE 32-bit color, with 8 bits of mantissa for red, green, and blue, and a shared 8-bit exponent. Each channel is separately compressed with run-length encoding (RLE).
.jpgJPEG standard. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files.
.pfmPortable float map format. A raw floating point image format, without any compression. The file header specifies image width, height, monochrome or color, and machine word order. Pixel data is stored as 32-bit floating point values, with 3 values per pixel for color, and one value per pixel for monochrome.
.pngPNG format. A non-proprietary bitmap format using lossless compression.
.ppmPortable Pixmap format. A binary or ASCII file format for color images that includes image height and width and the maximum color component value.
.tgaTarga or Truevision Graphics Adapter format. Supports depths of 8, 15, 16, 24, and 32 bits, including 8-bit gray scale, and contains optional color palette data, image (x, y) origin and size data, and pixel data.

?

See Types of Bitmaps for more information on some of these formats.

+
+ + bb172878 + D3DXIMAGE_FILEFORMAT + D3DXIMAGE_FILEFORMAT +
+ + +

Windows bitmap (BMP) file format.

+
+ + bb172878 + D3DXIFF_BMP + D3DXIFF_BMP +
+ + +

Joint Photographics Experts Group (JPEG) compressed file format.

+
+ + bb172878 + D3DXIFF_JPG + D3DXIFF_JPG +
+ + +

Truevision (Targa, or TGA) image file format.

+
+ + bb172878 + D3DXIFF_TGA + D3DXIFF_TGA +
+ + +

Portable Network Graphics (PNG) file format.

+
+ + bb172878 + D3DXIFF_PNG + D3DXIFF_PNG +
+ + +

DirectDraw surface (DDS) file format.

+
+ + bb172878 + D3DXIFF_DDS + D3DXIFF_DDS +
+ + +

Portable pixmap (PPM) file format.

+
+ + bb172878 + D3DXIFF_PPM + D3DXIFF_PPM +
+ + +

Windows device-independent bitmap (DIB) file format.

+
+ + bb172878 + D3DXIFF_DIB + D3DXIFF_DIB +
+ + +

High dynamic range (HDR) file format.

+
+ + bb172878 + D3DXIFF_HDR + D3DXIFF_HDR +
+ + +

Portable float map file format.

+
+ + bb172878 + D3DXIFF_PFM + D3DXIFF_PFM +
+ + +

Describes the location for the include file.

+
+ + bb172881 + D3DXINCLUDE_TYPE + D3DXINCLUDE_TYPE +
+ + +

Look in the local project for the include file.

+
+ + bb172881 + D3DXINC_LOCAL + D3DXINC_LOCAL +
+ + +

Look in the system path for the include file.

+
+ + bb172881 + D3DXINC_SYSTEM + D3DXINC_SYSTEM +
+ + +

This macro creates a value used by Issue to issue a query end.

#define (1 << 0) +
+ +

This macro changes the query state to nonsignaled.

is valid for the following query types.

  • D3DQUERYTYPE_ResourceManager
+
+ + bb172565 + D3DISSUE + D3DISSUE +
+ + + No documentation. + + + bb172565 + D3DISSUE_END + D3DISSUE_END + + + + No documentation. + + + bb172565 + D3DISSUE_BEGIN + D3DISSUE_BEGIN + + + +

Defines the light type.

+
+ +

Directional lights are slightly faster than point light sources, but point lights look a little better. Spotlights offer interesting visual effects but are computationally time-consuming.

+
+ + bb172567 + D3DLIGHTTYPE + D3DLIGHTTYPE +
+ + +

Light is a point source. The light has a position in space and radiates light in all directions.

+
+ + bb172567 + D3DLIGHT_POINT + D3DLIGHT_POINT +
+ + +

Light is a spotlight source. This light is like a point light, except that the illumination is limited to a cone. This light type has a direction and several other parameters that determine the shape of the cone it produces. For information about these parameters, see the structure.

+
+ + bb172567 + D3DLIGHT_SPOT + D3DLIGHT_SPOT +
+ + +

Light is a directional light source. This is equivalent to using a point light source at an infinite distance.

+
+ + bb172567 + D3DLIGHT_DIRECTIONAL + D3DLIGHT_DIRECTIONAL +
+ + + No documentation. + + + bb206304 + D3DLINECAPS + D3DLINECAPS + + + + No documentation. + + + bb206304 + D3DLINECAPS_TEXTURE + D3DLINECAPS_TEXTURE + + + + No documentation. + + + bb206304 + D3DLINECAPS_ZTEST + D3DLINECAPS_ZTEST + + + + No documentation. + + + bb206304 + D3DLINECAPS_BLEND + D3DLINECAPS_BLEND + + + + No documentation. + + + bb206304 + D3DLINECAPS_ALPHACMP + D3DLINECAPS_ALPHACMP + + + + No documentation. + + + bb206304 + D3DLINECAPS_FOG + D3DLINECAPS_FOG + + + + No documentation. + + + bb206304 + D3DLINECAPS_ANTIALIAS + D3DLINECAPS_ANTIALIAS + + + +

A combination of zero or more locking options that describe the type of lock to perform.

+
+ + bb172568 + D3DLOCK + D3DLOCK +
+ + + No documentation. + + + bb172568 + D3DLOCK_READONLY + D3DLOCK_READONLY + + + + No documentation. + + + bb172568 + D3DLOCK_DISCARD + D3DLOCK_DISCARD + + + + No documentation. + + + bb172568 + D3DLOCK_NOOVERWRITE + D3DLOCK_NOOVERWRITE + + + + No documentation. + + + bb172568 + D3DLOCK_NOSYSLOCK + D3DLOCK_NOSYSLOCK + + + + No documentation. + + + bb172568 + D3DLOCK_DONOTWAIT + D3DLOCK_DONOTWAIT + + + + No documentation. + + + bb172568 + D3DLOCK_NO_DIRTY_UPDATE + D3DLOCK_NO_DIRTY_UPDATE + + + + No documentation. + + + bb172568 + D3DLOCK_DONOTCOPYDATA + D3DLOCK_DONOTCOPYDATA + + + + None. + + + None + None + + + +

Defines the type of mesh data present in .

+
+ + bb205373 + D3DXMESHDATATYPE + D3DXMESHDATATYPE +
+ + + No documentation. + + + bb205373 + D3DXMESHTYPE_MESH + D3DXMESHTYPE_MESH + + + + No documentation. + + + bb205373 + D3DXMESHTYPE_PMESH + D3DXMESHTYPE_PMESH + + + + No documentation. + + + bb205373 + D3DXMESHTYPE_PATCHMESH + D3DXMESHTYPE_PATCHMESH + + + +

Flags used to specify creation options for a mesh.

+
+ +

A 32-bit mesh () can theoretically support (2^32)-1 faces and vertices. However, allocating memory for a mesh that large on a 32-bit operating system is not practical.

+
+ + bb205370 + _D3DXMESH + _D3DXMESH +
+ + +

The mesh has 32-bit indices instead of 16-bit indices. See Remarks.

+
+ + bb205370 + D3DXMESH_32BIT + D3DXMESH_32BIT +
+ + +

Use the usage flag for vertex and index buffers.

+
+ + bb205370 + D3DXMESH_DONOTCLIP + D3DXMESH_DONOTCLIP +
+ + +

Use the usage flag for vertex and index buffers.

+
+ + bb205370 + D3DXMESH_POINTS + D3DXMESH_POINTS +
+ + +

Use the usage flag for vertex and index buffers.

+
+ + bb205370 + D3DXMESH_RTPATCHES + D3DXMESH_RTPATCHES +
+ + +

Specifying this flag causes the vertex and index buffer of the mesh to be created with flag. This is required if the mesh object is to be rendered using N-patch enhancement using Direct3D.

+
+ + bb205370 + D3DXMESH_NPATCHES + D3DXMESH_NPATCHES +
+ + +

Use the usage flag for vertex buffers.

+
+ + bb205370 + D3DXMESH_VB_SYSTEMMEM + D3DXMESH_VB_SYSTEMMEM +
+ + +

Use the usage flag for vertex buffers.

+
+ + bb205370 + D3DXMESH_VB_MANAGED + D3DXMESH_VB_MANAGED +
+ + +

Use the usage flag for vertex buffers.

+
+ + bb205370 + D3DXMESH_VB_WRITEONLY + D3DXMESH_VB_WRITEONLY +
+ + +

Use the usage flag for vertex buffers.

+
+ + bb205370 + D3DXMESH_VB_DYNAMIC + D3DXMESH_VB_DYNAMIC +
+ + +

Use the usage flag for vertex buffers.

+
+ + bb205370 + D3DXMESH_VB_SOFTWAREPROCESSING + D3DXMESH_VB_SOFTWAREPROCESSING +
+ + +

Use the usage flag for index buffers.

+
+ + bb205370 + D3DXMESH_IB_SYSTEMMEM + D3DXMESH_IB_SYSTEMMEM +
+ + +

Use the usage flag for index buffers.

+
+ + bb205370 + D3DXMESH_IB_MANAGED + D3DXMESH_IB_MANAGED +
+ + +

Use the usage flag for index buffers.

+
+ + bb205370 + D3DXMESH_IB_WRITEONLY + D3DXMESH_IB_WRITEONLY +
+ + +

Use the usage flag for index buffers.

+
+ + bb205370 + D3DXMESH_IB_DYNAMIC + D3DXMESH_IB_DYNAMIC +
+ + +

Use the usage flag for index buffers.

+
+ + bb205370 + D3DXMESH_IB_SOFTWAREPROCESSING + D3DXMESH_IB_SOFTWAREPROCESSING +
+ + +

Forces the cloned meshes to share vertex buffers.

+
+ + bb205370 + D3DXMESH_VB_SHARE + D3DXMESH_VB_SHARE +
+ + +

Use hardware processing only. For mixed-mode device, this flag will cause the system to use hardware (if supported in hardware) or will default to software processing.

+
+ + bb205370 + D3DXMESH_USEHWONLY + D3DXMESH_USEHWONLY +
+ + +

Equivalent to specifying both and .

+
+ + bb205370 + D3DXMESH_SYSTEMMEM + D3DXMESH_SYSTEMMEM +
+ + +

Equivalent to specifying both and .

+
+ + bb205370 + D3DXMESH_MANAGED + D3DXMESH_MANAGED +
+ + +

Equivalent to specifying both and .

+
+ + bb205370 + D3DXMESH_WRITEONLY + D3DXMESH_WRITEONLY +
+ + +

Equivalent to specifying both and .

+
+ + bb205370 + D3DXMESH_DYNAMIC + D3DXMESH_DYNAMIC +
+ + +

Equivalent to specifying both and .

+
+ + bb205370 + D3DXMESH_SOFTWAREPROCESSING + D3DXMESH_SOFTWAREPROCESSING +
+ + +

Specifies the type of mesh optimization to be performed.

+
+ +

The and optimization flags are mutually exclusive.

The D3DXMESHOPT_SHAREVB flag has been removed from this enumeration. Use instead, in D3DXMESH.

+
+ + bb205374 + _D3DXMESHOPT + _D3DXMESHOPT +
+ + +

Reorders faces to remove unused vertices and faces.

+
+ + bb205374 + D3DXMESHOPT_COMPACT + D3DXMESHOPT_COMPACT +
+ + +

Reorders faces to optimize for fewer attribute bundle state changes and enhanced performance.

+
+ + bb205374 + D3DXMESHOPT_ATTRSORT + D3DXMESHOPT_ATTRSORT +
+ + +

Reorders faces to increase the cache hit rate of vertex caches.

+
+ + bb205374 + D3DXMESHOPT_VERTEXCACHE + D3DXMESHOPT_VERTEXCACHE +
+ + +

Reorders faces to maximize length of adjacent triangles.

+
+ + bb205374 + D3DXMESHOPT_STRIPREORDER + D3DXMESHOPT_STRIPREORDER +
+ + +

Optimize the faces only; do not optimize the vertices.

+
+ + bb205374 + D3DXMESHOPT_IGNOREVERTS + D3DXMESHOPT_IGNOREVERTS +
+ + +

While attribute sorting, do not split vertices that are shared between attribute groups.

+
+ + bb205374 + D3DXMESHOPT_DONOTSPLIT + D3DXMESHOPT_DONOTSPLIT +
+ + +

Affects the vertex cache size. Using this flag specifies a default vertex cache size that works well on legacy hardware.

+
+ + bb205374 + D3DXMESHOPT_DEVICEINDEPENDENT + D3DXMESHOPT_DEVICEINDEPENDENT +
+ + +

Specifies simplification options for a mesh.

+
+ + bb205375 + _D3DXMESHSIMP + _D3DXMESHSIMP +
+ + +

The mesh will be simplified by the number of vertices specified in the MinValue parameter.

+
+ + bb205375 + D3DXMESHSIMP_VERTEX + D3DXMESHSIMP_VERTEX +
+ + +

The mesh will be simplified by the number of faces specified in the MinValue parameter.

+
+ + bb205375 + D3DXMESHSIMP_FACE + D3DXMESHSIMP_FACE +
+ + +

Defines the levels of full-scene multisampling that the device can apply.

+
+ +

In addition to enabling full-scene multisampling at time, there will be render states that turn various aspects on and off at fine-grained levels.

Multisampling is valid only on a swap chain that is being created or reset with the swap effect.

The multisample antialiasing value can be set with the parameters (or sub-parameters) in the following methods.

MethodParametersSub-parameters
MultiSampleType and pQualityLevels
pPresentationParametersMultiSampleType and pQualityLevels
pPresentationParametersMultiSampleType and pQualityLevels
MultiSampleType and pQualityLevels
MultiSampleType and pQualityLevels
pPresentationParametersMultiSampleType and pQualityLevels

?

It is not good practice to switch from one multisample type to another to raise the quality of the antialiasing.

enables swap effects other than discarding, locking, and so on.

Whether the display device supports maskable multisampling (more than one sample for a multiple-sample render-target format plus antialias support) or just non-maskable multisampling (only antialias support), the driver for the device provides the number of quality levels for the multiple-sample type. Applications that just use multisampling for antialiasing purposes only need to query for the number of non-maskable multiple-sample quality levels that the driver supports.

The quality levels supported by the device can be obtained with the pQualityLevels parameter of . Quality levels used by the application are set with the MultiSampleQuality parameter of and .

See for discussion of maskable multisampling.

+
+ + bb172574 + D3DMULTISAMPLE_TYPE + D3DMULTISAMPLE_TYPE +
+ + +

No level of full-scene multisampling is available.

+
+ + bb172574 + D3DMULTISAMPLE_NONE + D3DMULTISAMPLE_NONE +
+ + +

Enables the multisample quality value. See Remarks.

+
+ + bb172574 + D3DMULTISAMPLE_NONMASKABLE + D3DMULTISAMPLE_NONMASKABLE +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_2_SAMPLES + D3DMULTISAMPLE_2_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_3_SAMPLES + D3DMULTISAMPLE_3_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_4_SAMPLES + D3DMULTISAMPLE_4_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_5_SAMPLES + D3DMULTISAMPLE_5_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_6_SAMPLES + D3DMULTISAMPLE_6_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_7_SAMPLES + D3DMULTISAMPLE_7_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_8_SAMPLES + D3DMULTISAMPLE_8_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_9_SAMPLES + D3DMULTISAMPLE_9_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_10_SAMPLES + D3DMULTISAMPLE_10_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_11_SAMPLES + D3DMULTISAMPLE_11_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_12_SAMPLES + D3DMULTISAMPLE_12_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_13_SAMPLES + D3DMULTISAMPLE_13_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_14_SAMPLES + D3DMULTISAMPLE_14_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_15_SAMPLES + D3DMULTISAMPLE_15_SAMPLES +
+ + +

Level of full-scene multisampling available.

+
+ + bb172574 + D3DMULTISAMPLE_16_SAMPLES + D3DMULTISAMPLE_16_SAMPLES +
+ + +

Normal maps generation constants.

+
+ + bb205566 + D3DX_NORMALMAP + D3DX_NORMALMAP +
+ + + No documentation. + + + bb205566 + D3DX_NORMALMAP_MIRROR_U + D3DX_NORMALMAP_MIRROR_U + + + + No documentation. + + + bb205566 + D3DX_NORMALMAP_MIRROR_V + D3DX_NORMALMAP_MIRROR_V + + + + No documentation. + + + bb205566 + D3DX_NORMALMAP_MIRROR + D3DX_NORMALMAP_MIRROR + + + + No documentation. + + + bb205566 + D3DX_NORMALMAP_INVERTSIGN + D3DX_NORMALMAP_INVERTSIGN + + + + No documentation. + + + bb205566 + D3DX_NORMALMAP_COMPUTE_OCCLUSION + D3DX_NORMALMAP_COMPUTE_OCCLUSION + + + +

The type of object.

+
+ + bb205378 + D3DXPARAMETER_CLASS + D3DXPARAMETER_CLASS +
+ + +

Constant is a scalar.

+
+ + bb205378 + D3DXPC_SCALAR + D3DXPC_SCALAR +
+ + +

Constant is a vector.

+
+ + bb205378 + D3DXPC_VECTOR + D3DXPC_VECTOR +
+ + +

Constant is a row major matrix.

+
+ + bb205378 + D3DXPC_MATRIX_ROWS + D3DXPC_MATRIX_ROWS +
+ + +

Constant is a column major matrix.

+
+ + bb205378 + D3DXPC_MATRIX_COLUMNS + D3DXPC_MATRIX_COLUMNS +
+ + +

Constant is either a texture, shader, or a string.

+
+ + bb205378 + D3DXPC_OBJECT + D3DXPC_OBJECT +
+ + +

Constant is a structure.

+
+ + bb205378 + D3DXPC_STRUCT + D3DXPC_STRUCT +
+ + +

These flags provide additional information about effect parameters.

Effect parameter constants are used by .

+
+ + bb205567 + D3DX_PARAMETER + D3DX_PARAMETER +
+ + + No documentation. + + + bb205567 + D3DX_PARAMETER_SHARED + D3DX_PARAMETER_SHARED + + + + No documentation. + + + bb205567 + D3DX_PARAMETER_LITERAL + D3DX_PARAMETER_LITERAL + + + + No documentation. + + + bb205567 + D3DX_PARAMETER_ANNOTATION + D3DX_PARAMETER_ANNOTATION + + + + None. + + + None + None + + + +

Describes the data contained by the enumeration.

+
+ + bb205380 + D3DXPARAMETER_TYPE + D3DXPARAMETER_TYPE +
+ + +

Parameter is a void reference.

+
+ + bb205380 + D3DXPT_VOID + D3DXPT_VOID +
+ + +

Parameter is a Boolean. Any non-zero value passed into , , , , or will be mapped to 1 (TRUE) before being written into the constant table; otherwise, the value will be set to 0 in the constant table.

+
+ + bb205380 + D3DXPT_BOOL + D3DXPT_BOOL +
+ + +

Parameter is an integer. Any floating-point values passed into , , or will be rounded off (to zero decimal places) before being written into the constant table.

+
+ + bb205380 + D3DXPT_INT + D3DXPT_INT +
+ + +

Parameter is a floating-point number.

+
+ + bb205380 + D3DXPT_FLOAT + D3DXPT_FLOAT +
+ + +

Parameter is a string.

+
+ + bb205380 + D3DXPT_STRING + D3DXPT_STRING +
+ + +

Parameter is a texture.

+
+ + bb205380 + D3DXPT_TEXTURE + D3DXPT_TEXTURE +
+ + +

Parameter is a 1D texture.

+
+ + bb205380 + D3DXPT_TEXTURE1D + D3DXPT_TEXTURE1D +
+ + +

Parameter is a 2D texture.

+
+ + bb205380 + D3DXPT_TEXTURE2D + D3DXPT_TEXTURE2D +
+ + +

Parameter is a 3D texture.

+
+ + bb205380 + D3DXPT_TEXTURE3D + D3DXPT_TEXTURE3D +
+ + +

Parameter is a cube texture.

+
+ + bb205380 + D3DXPT_TEXTURECUBE + D3DXPT_TEXTURECUBE +
+ + +

Parameter is a sampler.

+
+ + bb205380 + D3DXPT_SAMPLER + D3DXPT_SAMPLER +
+ + +

Parameter is a 1D sampler.

+
+ + bb205380 + D3DXPT_SAMPLER1D + D3DXPT_SAMPLER1D +
+ + +

Parameter is a 2D sampler.

+
+ + bb205380 + D3DXPT_SAMPLER2D + D3DXPT_SAMPLER2D +
+ + +

Parameter is a 3D sampler.

+
+ + bb205380 + D3DXPT_SAMPLER3D + D3DXPT_SAMPLER3D +
+ + +

Parameter is a cube sampler.

+
+ + bb205380 + D3DXPT_SAMPLERCUBE + D3DXPT_SAMPLERCUBE +
+ + +

Parameter is a pixel shader.

+
+ + bb205380 + D3DXPT_PIXELSHADER + D3DXPT_PIXELSHADER +
+ + +

Parameter is a vertex shader.

+
+ + bb205380 + D3DXPT_VERTEXSHADER + D3DXPT_VERTEXSHADER +
+ + +

Parameter is a pixel shader fragment.

+
+ + bb205380 + D3DXPT_PIXELFRAGMENT + D3DXPT_PIXELFRAGMENT +
+ + +

Parameter is a vertex shader fragment.

+
+ + bb205380 + D3DXPT_VERTEXFRAGMENT + D3DXPT_VERTEXFRAGMENT +
+ + +

Parameter is not supported.

+
+ + bb205380 + D3DXPT_UNSUPPORTED + D3DXPT_UNSUPPORTED +
+ + +

Defines whether the current tessellation mode is discrete or continuous.

+
+ +

Note that continuous tessellation produces a completely different tessellation pattern from the discrete one for the same tessellation values (this is more apparent in wireframe mode). Thus, 4.0 continuous is not the same as 4 discrete.

+
+ + bb172575 + D3DPATCHEDGESTYLE + D3DPATCHEDGESTYLE +
+ + +

Discrete edge style. In discrete mode, you can specify float tessellation but it will be truncated to integers.

+
+ + bb172575 + D3DPATCHEDGE_DISCRETE + D3DPATCHEDGE_DISCRETE +
+ + +

Continuous edge style. In continuous mode, tessellation is specified as float values that can be smoothly varied to reduce "popping" artifacts.

+
+ + bb172575 + D3DPATCHEDGE_CONTINUOUS + D3DPATCHEDGE_CONTINUOUS +
+ + +

Mesh patch types.

+
+ +

Triangle patches have three sides and are described in . Rectangle patches are four-sided and are described in .

+
+ + bb205384 + D3DXPATCHMESHTYPE + D3DXPATCHMESHTYPE +
+ + +

Rectangle patch mesh type.

+
+ + bb205384 + D3DXPATCHMESH_RECT + D3DXPATCHMESH_RECT +
+ + +

Triangle patch mesh type.

+
+ + bb205384 + D3DXPATCHMESH_TRI + D3DXPATCHMESH_TRI +
+ + +

N-patch mesh type.

+
+ + bb205384 + D3DXPATCHMESH_NPATCH + D3DXPATCHMESH_NPATCH +
+ + + No documentation. + + + D3DPS20CAPS + D3DPS20CAPS + + + + No documentation. + + + D3DPS20CAPS_ARBITRARYSWIZZLE + D3DPS20CAPS_ARBITRARYSWIZZLE + + + + No documentation. + + + D3DPS20CAPS_GRADIENTINSTRUCTIONS + D3DPS20CAPS_GRADIENTINSTRUCTIONS + + + + No documentation. + + + D3DPS20CAPS_PREDICATION + D3DPS20CAPS_PREDICATION + + + + No documentation. + + + D3DPS20CAPS_NODEPENDENTREADLIMIT + D3DPS20CAPS_NODEPENDENTREADLIMIT + + + + No documentation. + + + D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT + D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT + + + + None. + + + None + None + + + +

Defines the type of animation set looping modes used for playback.

+
+ + bb205397 + D3DXPLAYBACK_TYPE + D3DXPLAYBACK_TYPE +
+ + +

The animation repeats endlessly.

+
+ + bb205397 + D3DXPLAY_LOOP + D3DXPLAY_LOOP +
+ + +

The animation plays once, and then it stops on the last frame.

+
+ + bb205397 + D3DXPLAY_ONCE + D3DXPLAY_ONCE +
+ + +

The animation alternates endlessly between playing forward and playing backward.

+
+ + bb205397 + D3DXPLAY_PINGPONG + D3DXPLAY_PINGPONG +
+ + +

Defines the memory class that holds the buffers for a resource.

+
+ +

All pool types are valid with all resources including: vertex buffers, index buffers, textures, and surfaces.

The following tables indicate restrictions on pool types for render targets, depth stencils, and dynamic and mipmap usages. An x indicates a compatible combination; lack of an x indicates incompatibility.

Pool
xx

?

Pool
xx
x
x

?

For more information about usage types, see .

Pools cannot be mixed for different objects contained within one resource (mip levels in a mipmap) and, when a pool is chosen, it cannot be changed.

Applications should use for most static resources because this saves the application from having to deal with lost devices. (Managed resources are restored by the runtime.) This is especially beneficial for unified memory architecture (UMA) systems. Other dynamic resources are not a good match for . In fact, index buffers and vertex buffers cannot be created using together with .

For dynamic textures, it is sometimes desirable to use a pair of video memory and system memory textures, allocating the video memory using and the system memory using . You can lock and modify the bits of the system memory texture using a locking method. Then you can update the video memory texture using .

+
+ + bb172584 + D3DPOOL + D3DPOOL +
+ + +

Resources are placed in the memory pool most appropriate for the set of usages requested for the given resource. This is usually video memory, including both local video memory and AGP memory. The pool is separate from and , and it specifies that the resource is placed in the preferred memory for device access. Note that never indicates that either or should be chosen as the memory pool type for this resource. Textures placed in the pool cannot be locked unless they are dynamic textures or they are private, FOURCC, driver formats. To access unlockable textures, you must use functions such as , , , and . is probably a better choice than for most applications. Note that some textures created in driver-proprietary pixel formats, unknown to the Direct3D runtime, can be locked. Also note that - unlike textures - swap chain back buffers, render targets, vertex buffers, and index buffers can be locked. When a device is lost, resources created using must be released before calling . For more information, see Lost Devices (Direct3D 9).

When creating resources with , if video card memory is already committed, managed resources will be evicted to free enough memory to satisfy the request.

+
+ + bb172584 + D3DPOOL_DEFAULT + D3DPOOL_DEFAULT +
+ + +

Resources are copied automatically to device-accessible memory as needed. Managed resources are backed by system memory and do not need to be recreated when a device is lost. See Managing Resources (Direct3D 9) for more information. Managed resources can be locked. Only the system-memory copy is directly modified. Direct3D copies your changes to driver-accessible memory as needed.

Differences between Direct3D 9 and Direct3D 9Ex:

is valid with ; however, it is not valid with .

?

+
+ + bb172584 + D3DPOOL_MANAGED + D3DPOOL_MANAGED +
+ + +

Resources are placed in memory that is not typically accessible by the Direct3D device. This memory allocation consumes system RAM but does not reduce pageable RAM. These resources do not need to be recreated when a device is lost. Resources in this pool can be locked and can be used as the source for a or operation to a memory resource created with .

+
+ + bb172584 + D3DPOOL_SYSTEMMEM + D3DPOOL_SYSTEMMEM +
+ + +

Resources are placed in system RAM and do not need to be recreated when a device is lost. These resources are not bound by device size or format restrictions. Because of this, these resources cannot be accessed by the Direct3D device nor set as textures or render targets. However, these resources can always be created, locked, and copied.

+
+ + bb172584 + D3DPOOL_SCRATCH + D3DPOOL_SCRATCH +
+ + +

Describes the relationship between the adapter refresh rate and the rate at which Present or Present operations are completed. These values also serve as flag values for the PresentationIntervals field of .

+
+ +

Windowed mode supports , , and . and the are nearly equivalent (see the information regarding timer resolution below). They perform similarly to COPY_VSYNC in that there is only one present per frame, and they prevent tearing with beam-following. In contrast, will attempt to provide an unlimited presentation rate.

Full-screen mode supports similar usage as windowed mode by supporting regardless of the refresh rate or swap effect. uses the default system timer resolution whereas the calls timeBeginPeriod to enhance system timer resolution. This improves the quality of vertical sync, but consumes slightly more processing time. Both parameters attempt to synchronize vertically.

+
+ + bb172585 + D3DPRESENT + D3DPRESENT +
+ + + No documentation. + + + bb172585 + D3DPRESENT_BACK_BUFFERS_MAX + D3DPRESENT_BACK_BUFFERS_MAX + + + + No documentation. + + + bb172585 + D3DPRESENT_BACK_BUFFERS_MAX_EX + D3DPRESENT_BACK_BUFFERS_MAX_EX + + + + No documentation. + + + bb172585 + D3DPRESENT_DONOTWAIT + D3DPRESENT_DONOTWAIT + + + + No documentation. + + + bb172585 + D3DPRESENT_LINEAR_CONTENT + D3DPRESENT_LINEAR_CONTENT + + + + No documentation. + + + bb172585 + D3DPRESENT_DONOTFLIP + D3DPRESENT_DONOTFLIP + + + + No documentation. + + + bb172585 + D3DPRESENT_FLIPRESTART + D3DPRESENT_FLIPRESTART + + + + No documentation. + + + bb172585 + D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR + D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR + + + + No documentation. + + + bb172585 + D3DPRESENT_UPDATEOVERLAYONLY + D3DPRESENT_UPDATEOVERLAYONLY + + + + No documentation. + + + bb172585 + D3DPRESENT_HIDEOVERLAY + D3DPRESENT_HIDEOVERLAY + + + + No documentation. + + + bb172585 + D3DPRESENT_UPDATECOLORKEY + D3DPRESENT_UPDATECOLORKEY + + + + No documentation. + + + bb172585 + D3DPRESENT_FORCEIMMEDIATE + D3DPRESENT_FORCEIMMEDIATE + + + + No documentation. + + + bb172585 + D3DPRESENT_RATE_DEFAULT + D3DPRESENT_RATE_DEFAULT + + + + None. + + + None + None + + + +

Constants used by .

+
+ + bb172586 + D3DPRESENTFLAG + D3DPRESENTFLAG +
+ + + No documentation. + + + bb172586 + D3DPRESENTFLAG_LOCKABLE_BACKBUFFER + D3DPRESENTFLAG_LOCKABLE_BACKBUFFER + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL + D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_DEVICECLIP + D3DPRESENTFLAG_DEVICECLIP + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_VIDEO + D3DPRESENTFLAG_VIDEO + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_NOAUTOROTATE + D3DPRESENTFLAG_NOAUTOROTATE + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_UNPRUNEDMODE + D3DPRESENTFLAG_UNPRUNEDMODE + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_OVERLAY_LIMITEDRGB + D3DPRESENTFLAG_OVERLAY_LIMITEDRGB + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_OVERLAY_YCbCr_BT709 + D3DPRESENTFLAG_OVERLAY_YCbCr_BT709 + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC + D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_RESTRICTED_CONTENT + D3DPRESENTFLAG_RESTRICTED_CONTENT + + + + No documentation. + + + bb172586 + D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER + D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER + + + + None. + + + None + None + + + +

Describes the relationship between the adapter refresh rate and the rate at which Present or Present operations are completed. These values also serve as flag values for the PresentationIntervals field of .

+
+ +

Windowed mode supports , , and . and the are nearly equivalent (see the information regarding timer resolution below). They perform similarly to COPY_VSYNC in that there is only one present per frame, and they prevent tearing with beam-following. In contrast, will attempt to provide an unlimited presentation rate.

Full-screen mode supports similar usage as windowed mode by supporting regardless of the refresh rate or swap effect. uses the default system timer resolution whereas the calls timeBeginPeriod to enhance system timer resolution. This improves the quality of vertical sync, but consumes slightly more processing time. Both parameters attempt to synchronize vertically.

+
+ + bb172585 + D3DPRESENT_INTERVAL + D3DPRESENT_INTERVAL +
+ + + No documentation. + + + bb172585 + D3DPRESENT_INTERVAL_DEFAULT + D3DPRESENT_INTERVAL_DEFAULT + + + + No documentation. + + + bb172585 + D3DPRESENT_INTERVAL_ONE + D3DPRESENT_INTERVAL_ONE + + + + No documentation. + + + bb172585 + D3DPRESENT_INTERVAL_TWO + D3DPRESENT_INTERVAL_TWO + + + + No documentation. + + + bb172585 + D3DPRESENT_INTERVAL_THREE + D3DPRESENT_INTERVAL_THREE + + + + No documentation. + + + bb172585 + D3DPRESENT_INTERVAL_FOUR + D3DPRESENT_INTERVAL_FOUR + + + + No documentation. + + + bb172585 + D3DPRESENT_INTERVAL_IMMEDIATE + D3DPRESENT_INTERVAL_IMMEDIATE + + + +

Miscellaneous driver primitive capability flags.

+
+ + bb172583 + D3DPMISCCAPS + D3DPMISCCAPS +
+ + + No documentation. + + + bb172583 + D3DPMISCCAPS_MASKZ + D3DPMISCCAPS_MASKZ + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_CULLNONE + D3DPMISCCAPS_CULLNONE + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_CULLCW + D3DPMISCCAPS_CULLCW + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_CULLCCW + D3DPMISCCAPS_CULLCCW + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_COLORWRITEENABLE + D3DPMISCCAPS_COLORWRITEENABLE + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_CLIPPLANESCALEDPOINTS + D3DPMISCCAPS_CLIPPLANESCALEDPOINTS + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_CLIPTLVERTS + D3DPMISCCAPS_CLIPTLVERTS + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_TSSARGTEMP + D3DPMISCCAPS_TSSARGTEMP + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_BLENDOP + D3DPMISCCAPS_BLENDOP + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_NULLREFERENCE + D3DPMISCCAPS_NULLREFERENCE + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_INDEPENDENTWRITEMASKS + D3DPMISCCAPS_INDEPENDENTWRITEMASKS + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_PERSTAGECONSTANT + D3DPMISCCAPS_PERSTAGECONSTANT + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_FOGANDSPECULARALPHA + D3DPMISCCAPS_FOGANDSPECULARALPHA + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_SEPARATEALPHABLEND + D3DPMISCCAPS_SEPARATEALPHABLEND + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS + D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING + D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_FOGVERTEXCLAMPED + D3DPMISCCAPS_FOGVERTEXCLAMPED + + + + No documentation. + + + bb172583 + D3DPMISCCAPS_POSTBLENDSRGBCONVERT + D3DPMISCCAPS_POSTBLENDSRGBCONVERT + + + +

Defines the primitives supported by Direct3D.

+
+ +

Using Triangle Strips or Triangle Fans (Direct3D 9) is often more efficient than using triangle lists because fewer vertices are duplicated.

+
+ + bb172589 + D3DPRIMITIVETYPE + D3DPRIMITIVETYPE +
+ + +

Renders the vertices as a collection of isolated points. This value is unsupported for indexed primitives.

+
+ + bb172589 + D3DPT_POINTLIST + D3DPT_POINTLIST +
+ + +

Renders the vertices as a list of isolated straight line segments.

+
+ + bb172589 + D3DPT_LINELIST + D3DPT_LINELIST +
+ + +

Renders the vertices as a single polyline.

+
+ + bb172589 + D3DPT_LINESTRIP + D3DPT_LINESTRIP +
+ + +

Renders the specified vertices as a sequence of isolated triangles. Each group of three vertices defines a separate triangle.

Back-face culling is affected by the current winding-order render state.

+
+ + bb172589 + D3DPT_TRIANGLELIST + D3DPT_TRIANGLELIST +
+ + +

Renders the vertices as a triangle strip. The backface-culling flag is automatically flipped on even-numbered triangles.

+
+ + bb172589 + D3DPT_TRIANGLESTRIP + D3DPT_TRIANGLESTRIP +
+ + +

Renders the vertices as a triangle fan.

+
+ + bb172589 + D3DPT_TRIANGLEFAN + D3DPT_TRIANGLEFAN +
+ + +

Identifies the query type. For information about queries, see Queries (Direct3D 9)

+
+ + bb172594 + D3DQUERYTYPE + D3DQUERYTYPE +
+ + + No documentation. + + + bb172594 + D3DQUERYTYPE_VCACHE + D3DQUERYTYPE_VCACHE + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_RESOURCEMANAGER + D3DQUERYTYPE_RESOURCEMANAGER + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_VERTEXSTATS + D3DQUERYTYPE_VERTEXSTATS + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_EVENT + D3DQUERYTYPE_EVENT + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_OCCLUSION + D3DQUERYTYPE_OCCLUSION + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_TIMESTAMP + D3DQUERYTYPE_TIMESTAMP + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_TIMESTAMPDISJOINT + D3DQUERYTYPE_TIMESTAMPDISJOINT + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_TIMESTAMPFREQ + D3DQUERYTYPE_TIMESTAMPFREQ + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_PIPELINETIMINGS + D3DQUERYTYPE_PIPELINETIMINGS + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_INTERFACETIMINGS + D3DQUERYTYPE_INTERFACETIMINGS + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_VERTEXTIMINGS + D3DQUERYTYPE_VERTEXTIMINGS + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_PIXELTIMINGS + D3DQUERYTYPE_PIXELTIMINGS + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_BANDWIDTHTIMINGS + D3DQUERYTYPE_BANDWIDTHTIMINGS + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_CACHEUTILIZATION + D3DQUERYTYPE_CACHEUTILIZATION + + + + No documentation. + + + bb172594 + D3DQUERYTYPE_MEMORYPRESSURE + D3DQUERYTYPE_MEMORYPRESSURE + + + +

A programmable pixel shader is made up of a set of instructions that operate on pixel data. Registers transfer data in and out of the ALU. Additional control can be applied to modify the instruction, the results, or what data gets written out.

  • ps_3_0 Instructions contains a list of the available instructions.
  • ps_3_0 Registers lists the different types of registers used by the pixel shader ALU.
  • Modifiers Are used to modify the way an instruction works.
  • Destination Register Write Mask determines what components of the destination register get written.
  • Pixel Shader Source Register Modifiers alter the source register data before the instruction runs.
  • Source Register Swizzling gives additional control over which register components are read, copied, or written.
+
+ + bb219845 + D3DPRASTERCAPS + D3DPRASTERCAPS +
+ + + No documentation. + + + bb219845 + D3DPRASTERCAPS_DITHER + D3DPRASTERCAPS_DITHER + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_ZTEST + D3DPRASTERCAPS_ZTEST + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_FOGVERTEX + D3DPRASTERCAPS_FOGVERTEX + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_FOGTABLE + D3DPRASTERCAPS_FOGTABLE + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_MIPMAPLODBIAS + D3DPRASTERCAPS_MIPMAPLODBIAS + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_ZBUFFERLESSHSR + D3DPRASTERCAPS_ZBUFFERLESSHSR + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_FOGRANGE + D3DPRASTERCAPS_FOGRANGE + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_ANISOTROPY + D3DPRASTERCAPS_ANISOTROPY + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_WBUFFER + D3DPRASTERCAPS_WBUFFER + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_WFOG + D3DPRASTERCAPS_WFOG + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_ZFOG + D3DPRASTERCAPS_ZFOG + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_COLORPERSPECTIVE + D3DPRASTERCAPS_COLORPERSPECTIVE + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_SCISSORTEST + D3DPRASTERCAPS_SCISSORTEST + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS + D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_DEPTHBIAS + D3DPRASTERCAPS_DEPTHBIAS + + + + No documentation. + + + bb219845 + D3DPRASTERCAPS_MULTISAMPLE_TOGGLE + D3DPRASTERCAPS_MULTISAMPLE_TOGGLE + + + +

Data type of the register.

+
+ + bb205424 + D3DXREGISTER_SET + D3DXREGISTER_SET +
+ + +

Boolean value.

+
+ + bb205424 + D3DXRS_BOOL + D3DXRS_BOOL +
+ + +

4D integer number.

+
+ + bb205424 + D3DXRS_INT4 + D3DXRS_INT4 +
+ + +

4D floating-point number.

+
+ + bb205424 + D3DXRS_FLOAT4 + D3DXRS_FLOAT4 +
+ + +

The register contains 4D sampler data.

+
+ + bb205424 + D3DXRS_SAMPLER + D3DXRS_SAMPLER +
+ + +

The enumerated type lists a variety of attributes, or render states. The enumerators of that are used exclusively by drivers can specify either rendering information or a texture attribute. The following render states are used by display drivers:

#define D3DRENDERSTATE_EVICTMANAGEDTEXTURES  61	
+            #define D3DRENDERSTATE_SCENECAPTURE          62	
+            #define D3DRS_DELETERTPATCH                  169	
+            #define D3DRS_MAXVERTEXSHADERINST            196	
+            #define D3DRS_MAXPIXELSHADERINST             197

Enumerators

D3DRENDERSTATE_EVICTMANAGEDTEXTURES

Determines whether textures are evicted from memory. + The driver uses a data type without a default value to detect whether to evict.

This render state determines whether the driver evicts textures that it manages (as opposed to textures managed by the Direct3D runtime) from video memory. If the render state value is TRUE, the driver evicts the textures. Otherwise, the driver does not evict those textures.

D3DRENDERSTATE_SCENECAPTURE

Specifies either begin scene information or end scene information for geometric data captured within a frame. + The driver uses a data type with a default value of TRUE to detect scene-capture information.

The driver responds to D3DRENDERSTATE_SCENECAPTURE first with TRUE for begin scene information and next with for end scene information to capture geometric data within a frame. + See the permedia2 sample driver that ships with the Windows Driver Development Kit (DDK) for an example implementation. + Using the D3DRENDERSTATE_SCENECAPTURE render state in a D3dDrawPrimitives2 call replaces the legacy D3DHALCallbacks->D3dSceneCapture callback routine.

Care must be taken in updating a driver that implements the legacy D3DHALCallbacks->D3dSceneCapture callback routine to one using the D3DRENDERSTATE_SCENECAPTURE render state. The D3dSceneCapture callback routine uses the constants D3DHAL_SCENE_CAPTURE_START and D3DHAL_SCENE_CAPTURE_END to indicate, respectively, the beginning and end of a scene. The values of these constants are, respectively, 0 and 1. If you use these constants in place of TRUE and in this render state, the meaning will be the exact opposite of what you intend.

D3DRS_DELETERTPATCH

DirectX 8.0 and later versions only.

Deletes either a rectangular or triangular patch from memory. + The driver uses a DWORD data type without a default value to detect the patch to delete.

This render state notifies the driver that a patch is to be deleted. The value of this render state is the handle to the patch affected. All cached information should be freed and the handle should be removed from the driver's patch handle table. This render state is not visible to applications but is generated internally when an application calls the DeletePatch function. This render state is sent to the driver only when patches are deleted by DeletePatch explicitly. All other patches should be cleaned up when the device is destroyed.

D3DRS_MAXVERTEXSHADERINST

DirectX 9.0 and later versions only.

Determines the maximum number of instructions that the vertex shader assembler can execute.

The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of vertex-shader instructions. + This maximum number depends on the version of the vertex shader that the display device supports as shown in the following table.

VersionMaximum number
earlier than 2_00
2_0 and laterFrom 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS

?

D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.

Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.

The runtime sets the MaxVShaderInstructionsExecuted member of the structure to this maximum number.

D3DRS_MAXPIXELSHADERINST

DirectX 9.0 and later versions only.

Determines the maximum number of instructions that the pixel shader assembler can execute.

The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of pixel-shader instructions. + This maximum number depends on the version of the pixel shader that the display device supports as shown in the following table.

VersionMaximum number
earlier than 2_00
2_0From 96 to D3DINFINITEINSTRUCTIONS
3_0 and laterFrom 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS

?

D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.

Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.

The runtime sets the MaxVShaderInstructionsExecuted member of the structure to this maximum number.

+
+ +

The driver uses these render states when it performs graphics rendering. Only render states that are specific to drivers are included in the Windows Driver Kit (WDK) documentation. The render states accessible to DirectX applications are included in the DirectX SDK documentation. These application-level render states include such characteristics as whether alpha blending is enabled, whether dithering is enabled, whether Direct3D lighting is used, and the type of shading to be used.

To update a particular render state, Direct3D stores information about the render state, and then calls the driver's D3dDrawPrimitives2 callback routine. The information provided to the driver enables it to:

  • Determine that it should update one or more render states.

  • Identify which render states to update, and what the new render state values should be.

Note that for certain render states to be honored, the driver must have previously set capability flags in the relevant member of the D3DPRIMCAPS structure.

In order to indicate a specific render state update, Direct3D inserts a D3DHAL_DP2COMMAND structure into the command buffer, setting the bCommand member of this structure to D3DDP2OP_RENDERSTATE (see the description for D3DDP2OP_RENDERSTATE in D3DHAL_DP2OPERATION), and setting the wStateCount member of the same structure to the number of render states to be updated.

Immediately following the D3DHAL_DP2COMMAND structure, Direct3D inserts one D3DHAL_DP2RENDERSTATE structure into the command buffer for each render state to be updated. The RenderState member of this structure identifies the render state to be changed; the new value of this render state is specified in either the dwState member (for DWORD values) or the fState member (for D3DVALUE values).

The following figure shows a portion of the command buffer containing a D3DDP2OP_RENDERSTATE command and two D3DHAL_DP2RENDERSTATE structures. The first of the three structures indicates that two render states are to be updated. The second structure indicates that the D3DRENDERSTATE_FILLMODE render state is to be changed to . The third structure indicates that the D3DRENDERSTATE_SHADEMODE render state should be updated to .

Additional Notes

See the , , and D3DTEXTUREFILTER enumerated types in the DirectX SDK documentation for complete listings of all of the enabled render state types.

Some changes have been made to the enumerated type for DirectX 5.0 and beyond. D3DRENDERSTATE_BLENDENABLE has been removed completely although it is defined as D3DRENDERSTATE_ALPHABLENDENABLE in the d3dtypes.h header file. See D3DRENDERSTATE_COLORKEYENABLE for an explanation. The 128 integer values in the interval [128, 255] are reserved for texture coordinate wrap flags. These are constructed with the D3DWRAP_U and D3DWRAP_V macros. Using a flags word preserves forward compatibility with texture coordinates of higher dimension than 2D.

Multitexture macro ops and D3DRENDERSTATE_TEXTUREFACTOR override all of the per-texture stage blending controls (COLOR{OP,ARG1,ARG2} & ALPHA{OP,ARG1,ARG2}).

+
+ + ff549036 + D3DRENDERSTATETYPE + D3DRENDERSTATETYPE +
+ + +

Determines whether textures are evicted from memory. + The driver uses a data type without a default value to detect whether to evict.

This render state determines whether the driver evicts textures that it manages (as opposed to textures managed by the Direct3D runtime) from video memory. If the render state value is TRUE, the driver evicts the textures. Otherwise, the driver does not evict those textures.

+
+ + ff549036 + D3DRS_ZENABLE + D3DRS_ZENABLE +
+ + +

Specifies either begin scene information or end scene information for geometric data captured within a frame. + The driver uses a data type with a default value of TRUE to detect scene-capture information.

The driver responds to D3DRENDERSTATE_SCENECAPTURE first with TRUE for begin scene information and next with for end scene information to capture geometric data within a frame. + See the permedia2 sample driver that ships with the Windows Driver Development Kit (DDK) for an example implementation. + Using the D3DRENDERSTATE_SCENECAPTURE render state in a D3dDrawPrimitives2 call replaces the legacy D3DHALCallbacks->D3dSceneCapture callback routine.

Care must be taken in updating a driver that implements the legacy D3DHALCallbacks->D3dSceneCapture callback routine to one using the D3DRENDERSTATE_SCENECAPTURE render state. The D3dSceneCapture callback routine uses the constants D3DHAL_SCENE_CAPTURE_START and D3DHAL_SCENE_CAPTURE_END to indicate, respectively, the beginning and end of a scene. The values of these constants are, respectively, 0 and 1. If you use these constants in place of TRUE and in this render state, the meaning will be the exact opposite of what you intend.

+
+ + ff549036 + D3DRS_FILLMODE + D3DRS_FILLMODE +
+ + +

DirectX 8.0 and later versions only.

Deletes either a rectangular or triangular patch from memory. + The driver uses a DWORD data type without a default value to detect the patch to delete.

This render state notifies the driver that a patch is to be deleted. The value of this render state is the handle to the patch affected. All cached information should be freed and the handle should be removed from the driver's patch handle table. This render state is not visible to applications but is generated internally when an application calls the DeletePatch function. This render state is sent to the driver only when patches are deleted by DeletePatch explicitly. All other patches should be cleaned up when the device is destroyed.

+
+ + ff549036 + D3DRS_SHADEMODE + D3DRS_SHADEMODE +
+ + +

DirectX 9.0 and later versions only.

Determines the maximum number of instructions that the vertex shader assembler can execute.

The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of vertex-shader instructions. + This maximum number depends on the version of the vertex shader that the display device supports as shown in the following table.

VersionMaximum number
earlier than 2_00
2_0 and laterFrom 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS

?

D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.

Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.

The runtime sets the MaxVShaderInstructionsExecuted member of the structure to this maximum number.

+
+ + ff549036 + D3DRS_ZWRITEENABLE + D3DRS_ZWRITEENABLE +
+ + +

DirectX 9.0 and later versions only.

Determines the maximum number of instructions that the pixel shader assembler can execute.

The driver uses a DWORD data type with a default value of D3DINFINITEINSTRUCTIONS (0xffffffff) to report the maximum number of pixel-shader instructions. + This maximum number depends on the version of the pixel shader that the display device supports as shown in the following table.

VersionMaximum number
earlier than 2_00
2_0From 96 to D3DINFINITEINSTRUCTIONS
3_0 and laterFrom 216 (0x0000ffff) to D3DINFINITEINSTRUCTIONS

?

D3DINFINITEINSTRUCTIONS represents a virtually unlimited amount.

Valid values for this render state are numbers that are powers of 2; if the driver sets any other integer, the runtime uses the next nearest power of 2 number.

The runtime sets the MaxVShaderInstructionsExecuted member of the structure to this maximum number.

+
+ + ff549036 + D3DRS_ALPHATESTENABLE + D3DRS_ALPHATESTENABLE +
+ + + No documentation. + + + ff549036 + D3DRS_LASTPIXEL + D3DRS_LASTPIXEL + + + + No documentation. + + + ff549036 + D3DRS_SRCBLEND + D3DRS_SRCBLEND + + + + No documentation. + + + ff549036 + D3DRS_DESTBLEND + D3DRS_DESTBLEND + + + + No documentation. + + + ff549036 + D3DRS_CULLMODE + D3DRS_CULLMODE + + + + No documentation. + + + ff549036 + D3DRS_ZFUNC + D3DRS_ZFUNC + + + + No documentation. + + + ff549036 + D3DRS_ALPHAREF + D3DRS_ALPHAREF + + + + No documentation. + + + ff549036 + D3DRS_ALPHAFUNC + D3DRS_ALPHAFUNC + + + + No documentation. + + + ff549036 + D3DRS_DITHERENABLE + D3DRS_DITHERENABLE + + + + No documentation. + + + ff549036 + D3DRS_ALPHABLENDENABLE + D3DRS_ALPHABLENDENABLE + + + + No documentation. + + + ff549036 + D3DRS_FOGENABLE + D3DRS_FOGENABLE + + + + No documentation. + + + ff549036 + D3DRS_SPECULARENABLE + D3DRS_SPECULARENABLE + + + + No documentation. + + + ff549036 + D3DRS_FOGCOLOR + D3DRS_FOGCOLOR + + + + No documentation. + + + ff549036 + D3DRS_FOGTABLEMODE + D3DRS_FOGTABLEMODE + + + + No documentation. + + + ff549036 + D3DRS_FOGSTART + D3DRS_FOGSTART + + + + No documentation. + + + ff549036 + D3DRS_FOGEND + D3DRS_FOGEND + + + + No documentation. + + + ff549036 + D3DRS_FOGDENSITY + D3DRS_FOGDENSITY + + + + No documentation. + + + ff549036 + D3DRS_RANGEFOGENABLE + D3DRS_RANGEFOGENABLE + + + + No documentation. + + + ff549036 + D3DRS_STENCILENABLE + D3DRS_STENCILENABLE + + + + No documentation. + + + ff549036 + D3DRS_STENCILFAIL + D3DRS_STENCILFAIL + + + + No documentation. + + + ff549036 + D3DRS_STENCILZFAIL + D3DRS_STENCILZFAIL + + + + No documentation. + + + ff549036 + D3DRS_STENCILPASS + D3DRS_STENCILPASS + + + + No documentation. + + + ff549036 + D3DRS_STENCILFUNC + D3DRS_STENCILFUNC + + + + No documentation. + + + ff549036 + D3DRS_STENCILREF + D3DRS_STENCILREF + + + + No documentation. + + + ff549036 + D3DRS_STENCILMASK + D3DRS_STENCILMASK + + + + No documentation. + + + ff549036 + D3DRS_STENCILWRITEMASK + D3DRS_STENCILWRITEMASK + + + + No documentation. + + + ff549036 + D3DRS_TEXTUREFACTOR + D3DRS_TEXTUREFACTOR + + + + No documentation. + + + ff549036 + D3DRS_WRAP0 + D3DRS_WRAP0 + + + + No documentation. + + + ff549036 + D3DRS_WRAP1 + D3DRS_WRAP1 + + + + No documentation. + + + ff549036 + D3DRS_WRAP2 + D3DRS_WRAP2 + + + + No documentation. + + + ff549036 + D3DRS_WRAP3 + D3DRS_WRAP3 + + + + No documentation. + + + ff549036 + D3DRS_WRAP4 + D3DRS_WRAP4 + + + + No documentation. + + + ff549036 + D3DRS_WRAP5 + D3DRS_WRAP5 + + + + No documentation. + + + ff549036 + D3DRS_WRAP6 + D3DRS_WRAP6 + + + + No documentation. + + + ff549036 + D3DRS_WRAP7 + D3DRS_WRAP7 + + + + No documentation. + + + ff549036 + D3DRS_CLIPPING + D3DRS_CLIPPING + + + + No documentation. + + + ff549036 + D3DRS_LIGHTING + D3DRS_LIGHTING + + + + No documentation. + + + ff549036 + D3DRS_AMBIENT + D3DRS_AMBIENT + + + + No documentation. + + + ff549036 + D3DRS_FOGVERTEXMODE + D3DRS_FOGVERTEXMODE + + + + No documentation. + + + ff549036 + D3DRS_COLORVERTEX + D3DRS_COLORVERTEX + + + + No documentation. + + + ff549036 + D3DRS_LOCALVIEWER + D3DRS_LOCALVIEWER + + + + No documentation. + + + ff549036 + D3DRS_NORMALIZENORMALS + D3DRS_NORMALIZENORMALS + + + + No documentation. + + + ff549036 + D3DRS_DIFFUSEMATERIALSOURCE + D3DRS_DIFFUSEMATERIALSOURCE + + + + No documentation. + + + ff549036 + D3DRS_SPECULARMATERIALSOURCE + D3DRS_SPECULARMATERIALSOURCE + + + + No documentation. + + + ff549036 + D3DRS_AMBIENTMATERIALSOURCE + D3DRS_AMBIENTMATERIALSOURCE + + + + No documentation. + + + ff549036 + D3DRS_EMISSIVEMATERIALSOURCE + D3DRS_EMISSIVEMATERIALSOURCE + + + + No documentation. + + + ff549036 + D3DRS_VERTEXBLEND + D3DRS_VERTEXBLEND + + + + No documentation. + + + ff549036 + D3DRS_CLIPPLANEENABLE + D3DRS_CLIPPLANEENABLE + + + + No documentation. + + + ff549036 + D3DRS_POINTSIZE + D3DRS_POINTSIZE + + + + No documentation. + + + ff549036 + D3DRS_POINTSIZE_MIN + D3DRS_POINTSIZE_MIN + + + + No documentation. + + + ff549036 + D3DRS_POINTSPRITEENABLE + D3DRS_POINTSPRITEENABLE + + + + No documentation. + + + ff549036 + D3DRS_POINTSCALEENABLE + D3DRS_POINTSCALEENABLE + + + + No documentation. + + + ff549036 + D3DRS_POINTSCALE_A + D3DRS_POINTSCALE_A + + + + No documentation. + + + ff549036 + D3DRS_POINTSCALE_B + D3DRS_POINTSCALE_B + + + + No documentation. + + + ff549036 + D3DRS_POINTSCALE_C + D3DRS_POINTSCALE_C + + + + No documentation. + + + ff549036 + D3DRS_MULTISAMPLEANTIALIAS + D3DRS_MULTISAMPLEANTIALIAS + + + + No documentation. + + + ff549036 + D3DRS_MULTISAMPLEMASK + D3DRS_MULTISAMPLEMASK + + + + No documentation. + + + ff549036 + D3DRS_PATCHEDGESTYLE + D3DRS_PATCHEDGESTYLE + + + + No documentation. + + + ff549036 + D3DRS_DEBUGMONITORTOKEN + D3DRS_DEBUGMONITORTOKEN + + + + No documentation. + + + ff549036 + D3DRS_POINTSIZE_MAX + D3DRS_POINTSIZE_MAX + + + + No documentation. + + + ff549036 + D3DRS_INDEXEDVERTEXBLENDENABLE + D3DRS_INDEXEDVERTEXBLENDENABLE + + + + No documentation. + + + ff549036 + D3DRS_COLORWRITEENABLE + D3DRS_COLORWRITEENABLE + + + + No documentation. + + + ff549036 + D3DRS_TWEENFACTOR + D3DRS_TWEENFACTOR + + + + No documentation. + + + ff549036 + D3DRS_BLENDOP + D3DRS_BLENDOP + + + + No documentation. + + + ff549036 + D3DRS_POSITIONDEGREE + D3DRS_POSITIONDEGREE + + + + No documentation. + + + ff549036 + D3DRS_NORMALDEGREE + D3DRS_NORMALDEGREE + + + + No documentation. + + + ff549036 + D3DRS_SCISSORTESTENABLE + D3DRS_SCISSORTESTENABLE + + + + No documentation. + + + ff549036 + D3DRS_SLOPESCALEDEPTHBIAS + D3DRS_SLOPESCALEDEPTHBIAS + + + + No documentation. + + + ff549036 + D3DRS_ANTIALIASEDLINEENABLE + D3DRS_ANTIALIASEDLINEENABLE + + + + No documentation. + + + ff549036 + D3DRS_MINTESSELLATIONLEVEL + D3DRS_MINTESSELLATIONLEVEL + + + + No documentation. + + + ff549036 + D3DRS_MAXTESSELLATIONLEVEL + D3DRS_MAXTESSELLATIONLEVEL + + + + No documentation. + + + ff549036 + D3DRS_ADAPTIVETESS_X + D3DRS_ADAPTIVETESS_X + + + + No documentation. + + + ff549036 + D3DRS_ADAPTIVETESS_Y + D3DRS_ADAPTIVETESS_Y + + + + No documentation. + + + ff549036 + D3DRS_ADAPTIVETESS_Z + D3DRS_ADAPTIVETESS_Z + + + + No documentation. + + + ff549036 + D3DRS_ADAPTIVETESS_W + D3DRS_ADAPTIVETESS_W + + + + No documentation. + + + ff549036 + D3DRS_ENABLEADAPTIVETESSELLATION + D3DRS_ENABLEADAPTIVETESSELLATION + + + + No documentation. + + + ff549036 + D3DRS_TWOSIDEDSTENCILMODE + D3DRS_TWOSIDEDSTENCILMODE + + + + No documentation. + + + ff549036 + D3DRS_CCW_STENCILFAIL + D3DRS_CCW_STENCILFAIL + + + + No documentation. + + + ff549036 + D3DRS_CCW_STENCILZFAIL + D3DRS_CCW_STENCILZFAIL + + + + No documentation. + + + ff549036 + D3DRS_CCW_STENCILPASS + D3DRS_CCW_STENCILPASS + + + + No documentation. + + + ff549036 + D3DRS_CCW_STENCILFUNC + D3DRS_CCW_STENCILFUNC + + + + No documentation. + + + ff549036 + D3DRS_COLORWRITEENABLE1 + D3DRS_COLORWRITEENABLE1 + + + + No documentation. + + + ff549036 + D3DRS_COLORWRITEENABLE2 + D3DRS_COLORWRITEENABLE2 + + + + No documentation. + + + ff549036 + D3DRS_COLORWRITEENABLE3 + D3DRS_COLORWRITEENABLE3 + + + + No documentation. + + + ff549036 + D3DRS_BLENDFACTOR + D3DRS_BLENDFACTOR + + + + No documentation. + + + ff549036 + D3DRS_SRGBWRITEENABLE + D3DRS_SRGBWRITEENABLE + + + + No documentation. + + + ff549036 + D3DRS_DEPTHBIAS + D3DRS_DEPTHBIAS + + + + No documentation. + + + ff549036 + D3DRS_WRAP8 + D3DRS_WRAP8 + + + + No documentation. + + + ff549036 + D3DRS_WRAP9 + D3DRS_WRAP9 + + + + No documentation. + + + ff549036 + D3DRS_WRAP10 + D3DRS_WRAP10 + + + + No documentation. + + + ff549036 + D3DRS_WRAP11 + D3DRS_WRAP11 + + + + No documentation. + + + ff549036 + D3DRS_WRAP12 + D3DRS_WRAP12 + + + + No documentation. + + + ff549036 + D3DRS_WRAP13 + D3DRS_WRAP13 + + + + No documentation. + + + ff549036 + D3DRS_WRAP14 + D3DRS_WRAP14 + + + + No documentation. + + + ff549036 + D3DRS_WRAP15 + D3DRS_WRAP15 + + + + No documentation. + + + ff549036 + D3DRS_SEPARATEALPHABLENDENABLE + D3DRS_SEPARATEALPHABLENDENABLE + + + + No documentation. + + + ff549036 + D3DRS_SRCBLENDALPHA + D3DRS_SRCBLENDALPHA + + + + No documentation. + + + ff549036 + D3DRS_DESTBLENDALPHA + D3DRS_DESTBLENDALPHA + + + + No documentation. + + + ff549036 + D3DRS_BLENDOPALPHA + D3DRS_BLENDOPALPHA + + + + No documentation. + + + D3DX_RESOURCE_RESIDENCY + D3DX_RESOURCE_RESIDENCY + + + + No documentation. + + + D3DX_RESOURCE_RESIDENCY_RESIDENT + D3DX_RESOURCE_RESIDENCY_RESIDENT + + + + No documentation. + + + D3DX_RESOURCE_RESIDENCY_RESIDENT_IN_SHARED_MEMORY + D3DX_RESOURCE_RESIDENCY_RESIDENT_IN_SHARED_MEMORY + + + + No documentation. + + + D3DX_RESOURCE_RESIDENCY_NOT_RESIDENT + D3DX_RESOURCE_RESIDENCY_NOT_RESIDENT + + + + No documentation. + + + D3DRESOURCETYPE + D3DRESOURCETYPE + + + + No documentation. + + + D3DRTYPE_SURFACE + D3DRTYPE_SURFACE + + + + No documentation. + + + D3DRTYPE_VOLUME + D3DRTYPE_VOLUME + + + + No documentation. + + + D3DRTYPE_TEXTURE + D3DRTYPE_TEXTURE + + + + No documentation. + + + D3DRTYPE_VOLUMETEXTURE + D3DRTYPE_VOLUMETEXTURE + + + + No documentation. + + + D3DRTYPE_CUBETEXTURE + D3DRTYPE_CUBETEXTURE + + + + No documentation. + + + D3DRTYPE_VERTEXBUFFER + D3DRTYPE_VERTEXBUFFER + + + + No documentation. + + + D3DRTYPE_INDEXBUFFER + D3DRTYPE_INDEXBUFFER + + + +

Sampler states define texture sampling operations such as texture addressing and texture filtering. Some sampler states set-up vertex processing, and some set-up pixel processing. Sampler states can be saved and restored using stateblocks (see State Blocks Save and Restore State (Direct3D 9)).

+
+ + bb172602 + D3DSAMPLERSTATETYPE + D3DSAMPLERSTATETYPE +
+ + + No documentation. + + + bb172602 + D3DSAMP_ADDRESSU + D3DSAMP_ADDRESSU + + + + No documentation. + + + bb172602 + D3DSAMP_ADDRESSV + D3DSAMP_ADDRESSV + + + + No documentation. + + + bb172602 + D3DSAMP_ADDRESSW + D3DSAMP_ADDRESSW + + + + No documentation. + + + bb172602 + D3DSAMP_BORDERCOLOR + D3DSAMP_BORDERCOLOR + + + + No documentation. + + + bb172602 + D3DSAMP_MAGFILTER + D3DSAMP_MAGFILTER + + + + No documentation. + + + bb172602 + D3DSAMP_MINFILTER + D3DSAMP_MINFILTER + + + + No documentation. + + + bb172602 + D3DSAMP_MIPFILTER + D3DSAMP_MIPFILTER + + + + No documentation. + + + bb172602 + D3DSAMP_MIPMAPLODBIAS + D3DSAMP_MIPMAPLODBIAS + + + + No documentation. + + + bb172602 + D3DSAMP_MAXMIPLEVEL + D3DSAMP_MAXMIPLEVEL + + + + No documentation. + + + bb172602 + D3DSAMP_MAXANISOTROPY + D3DSAMP_MAXANISOTROPY + + + + No documentation. + + + bb172602 + D3DSAMP_SRGBTEXTURE + D3DSAMP_SRGBTEXTURE + + + + No documentation. + + + bb172602 + D3DSAMP_ELEMENTINDEX + D3DSAMP_ELEMENTINDEX + + + + No documentation. + + + bb172602 + D3DSAMP_DMAPOFFSET + D3DSAMP_DMAPOFFSET + + + +

Defines the sampler texture types for vertex shaders.

+
+ + bb172603 + D3DSAMPLER_TEXTURE_TYPE + D3DSAMPLER_TEXTURE_TYPE +
+ + +

Uninitialized value. The value of this element is D3DSP_TEXTURETYPE_SHIFT.

+
+ + bb172603 + D3DSTT_UNKNOWN + D3DSTT_UNKNOWN +
+ + +

Declaring a 2D texture. The value of this element is D3DSP_TEXTURETYPE_SHIFT * 4.

+
+ + bb172603 + D3DSTT_2D + D3DSTT_2D +
+ + +

Declaring a cube texture. The value of this element is D3DSP_TEXTURETYPE_SHIFT * 8.

+
+ + bb172603 + D3DSTT_CUBE + D3DSTT_CUBE +
+ + +

Declaring a volume texture. The value of this element is D3DSP_TEXTURETYPE_SHIFT * 16.

+
+ + bb172603 + D3DSTT_VOLUME + D3DSTT_VOLUME +
+ + +

Flags indicating the method the rasterizer uses to create an image on a surface.

+
+ +

This enumeration is used as a member in and .

+
+ + bb172604 + D3DSCANLINEORDERING + D3DSCANLINEORDERING +
+ + +

The image is created from the first scanline to the last without skipping any.

+
+ + bb172604 + D3DSCANLINEORDERING_UNKNOWN + D3DSCANLINEORDERING_UNKNOWN +
+ + +

The image is created using the interlaced method in which odd-numbered lines are drawn on odd-numbered passes and even lines are drawn on even-numbered passes.

+
+ + bb172604 + D3DSCANLINEORDERING_PROGRESSIVE + D3DSCANLINEORDERING_PROGRESSIVE +
+ + +

The image is created using the interlaced method in which odd-numbered lines are drawn on odd-numbered passes and even lines are drawn on even-numbered passes.

+
+ + bb172604 + D3DSCANLINEORDERING_INTERLACED + D3DSCANLINEORDERING_INTERLACED +
+ + +

The following page provides a basic outline of key differences between Direct3D 9 and Direct3D 10. The outline below provides some insight to assist developers with Direct3D 9 experience to explore and relate to Direct3D 10.

Although the info in this topic compares Direct3D 9 with Direct3D 10, because Direct3D 11 builds on the improvements made in Direct3D 10 and 10.1, you also need this info to migrate from Direct3D 9 to Direct3D 11. For info about moving beyond Direct3D 10 to Direct3D 11, see Migrating to Direct3D 11.

  • Overview
    • Removal
    • Device
  • Engine
    • Direct
  • Tricks
    • Overriding
    • Resolving
    • Simulating
  • Driving
    • Resource
    • Views
    • Static
    • Direct3D
    • HLSL
    • Shader
    • Creation
    • Shader
    • Input
    • Impact
    • Vertex
    • State
  • Porting
    • File
    • Mapping
  • Porting
    • Direct3D
    • Shader
    • HLSL
    • Constant
    • User
  • Additional
    • Integers
    • Mouse
    • Mapping
    • Reference
    • Test
    • StretchRect
  • Additional
  • Related
+
+ + bb205073 + D3DPSHADECAPS + D3DPSHADECAPS +
+ + + No documentation. + + + bb205073 + D3DPSHADECAPS_COLORGOURAUDRGB + D3DPSHADECAPS_COLORGOURAUDRGB + + + + No documentation. + + + bb205073 + D3DPSHADECAPS_SPECULARGOURAUDRGB + D3DPSHADECAPS_SPECULARGOURAUDRGB + + + + No documentation. + + + bb205073 + D3DPSHADECAPS_ALPHAGOURAUDBLEND + D3DPSHADECAPS_ALPHAGOURAUDBLEND + + + + No documentation. + + + bb205073 + D3DPSHADECAPS_FOGGOURAUD + D3DPSHADECAPS_FOGGOURAUD + + + +

Defines constants that describe the supported shading modes.

+
+ +

The first vertex of a triangle for flat shading mode is defined in the following manner.

  • For a triangle list, the first vertex of the triangle i is i * 3.
  • For a triangle strip, the first vertex of the triangle i is vertex i.
  • For a triangle fan, the first vertex of the triangle i is vertex i + 1.

The members of this enumerated type define the vales for the render state.

+
+ + bb172605 + D3DSHADEMODE + D3DSHADEMODE +
+ + +

Flat shading mode. The color and specular component of the first vertex in the triangle are used to determine the color and specular component of the face. These colors remain constant across the triangle; that is, they are not interpolated. The specular alpha is interpolated. See Remarks.

+
+ + bb172605 + D3DSHADE_FLAT + D3DSHADE_FLAT +
+ + +

Gouraud shading mode. The color and specular components of the face are determined by a linear interpolation between all three of the triangle's vertices.

+
+ + bb172605 + D3DSHADE_GOURAUD + D3DSHADE_GOURAUD +
+ + +

Not supported.

+
+ + bb172605 + D3DSHADE_PHONG + D3DSHADE_PHONG +
+ + +

The flags are used for parsing, compiling, or assembling shaders.

Parser flags

Parse time flags are only used by the effect system (before effect compilation) when you create an effect compiler. For example, you could create a compiler object with , and then use that compiler object repeatedly with different compiler flags to generate specialized code.

+
+ +

The effect system will use parser flags when called by the following functions:

  • CompileEffect

The effect system will use compiler flags when called by the following functions:

  • (or or )
  • CompileEffect (or CompileShader)

In addition, you can use compiler flags when creating an effect by calling (or or ).

  • If you pass in an uncompiled .fx file, the effect system will use the flag input parameter during compilation.
  • If you pass in a compiled effect, the effect system will ignore the compiler flags since they are not needed to load the effect.

The effect system will use assembler flags when called by the following functions:

Applying compiler flags or assembler flags to the incorrect API will fail shader validation. Check the Direct3D error code return value from the function (with the DirectX Error Lookup Tool) to help track down this error.

+
+ + bb205441 + D3DXSHADER + D3DXSHADER +
+ + + No documentation. + + + bb205441 + D3DXSHADER_DEBUG + D3DXSHADER_DEBUG + + + + No documentation. + + + bb205441 + D3DXSHADER_SKIPVALIDATION + D3DXSHADER_SKIPVALIDATION + + + + No documentation. + + + bb205441 + D3DXSHADER_SKIPOPTIMIZATION + D3DXSHADER_SKIPOPTIMIZATION + + + + No documentation. + + + bb205441 + D3DXSHADER_PACKMATRIX_ROWMAJOR + D3DXSHADER_PACKMATRIX_ROWMAJOR + + + + No documentation. + + + bb205441 + D3DXSHADER_PACKMATRIX_COLUMNMAJOR + D3DXSHADER_PACKMATRIX_COLUMNMAJOR + + + + No documentation. + + + bb205441 + D3DXSHADER_PARTIALPRECISION + D3DXSHADER_PARTIALPRECISION + + + + No documentation. + + + bb205441 + D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT + D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT + + + + No documentation. + + + bb205441 + D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT + D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT + + + + No documentation. + + + bb205441 + D3DXSHADER_NO_PRESHADER + D3DXSHADER_NO_PRESHADER + + + + No documentation. + + + bb205441 + D3DXSHADER_AVOID_FLOW_CONTROL + D3DXSHADER_AVOID_FLOW_CONTROL + + + + No documentation. + + + bb205441 + D3DXSHADER_PREFER_FLOW_CONTROL + D3DXSHADER_PREFER_FLOW_CONTROL + + + + No documentation. + + + bb205441 + D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY + D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY + + + + No documentation. + + + bb205441 + D3DXSHADER_IEEE_STRICTNESS + D3DXSHADER_IEEE_STRICTNESS + + + + No documentation. + + + bb205441 + D3DXSHADER_USE_LEGACY_D3DX9_31_DLL + D3DXSHADER_USE_LEGACY_D3DX9_31_DLL + + + + No documentation. + + + bb205441 + D3DXSHADER_OPTIMIZATION_LEVEL0 + D3DXSHADER_OPTIMIZATION_LEVEL0 + + + + No documentation. + + + bb205441 + D3DXSHADER_OPTIMIZATION_LEVEL1 + D3DXSHADER_OPTIMIZATION_LEVEL1 + + + + No documentation. + + + bb205441 + D3DXSHADER_OPTIMIZATION_LEVEL2 + D3DXSHADER_OPTIMIZATION_LEVEL2 + + + + No documentation. + + + bb205441 + D3DXSHADER_OPTIMIZATION_LEVEL3 + D3DXSHADER_OPTIMIZATION_LEVEL3 + + + + None. + + + None + None + + + +

The following flags are used to specify sprite rendering options to the flags parameter in the Begin method:

+
+ + bb205466 + D3DXSPRITE + D3DXSPRITE +
+ + + No documentation. + + + bb205466 + D3DXSPRITE_DONOTSAVESTATE + D3DXSPRITE_DONOTSAVESTATE + + + + No documentation. + + + bb205466 + D3DXSPRITE_DONOTMODIFY_RENDERSTATE + D3DXSPRITE_DONOTMODIFY_RENDERSTATE + + + + No documentation. + + + bb205466 + D3DXSPRITE_OBJECTSPACE + D3DXSPRITE_OBJECTSPACE + + + + No documentation. + + + bb205466 + D3DXSPRITE_BILLBOARD + D3DXSPRITE_BILLBOARD + + + + No documentation. + + + bb205466 + D3DXSPRITE_ALPHABLEND + D3DXSPRITE_ALPHABLEND + + + + No documentation. + + + bb205466 + D3DXSPRITE_SORT_TEXTURE + D3DXSPRITE_SORT_TEXTURE + + + + No documentation. + + + bb205466 + D3DXSPRITE_SORT_DEPTH_FRONTTOBACK + D3DXSPRITE_SORT_DEPTH_FRONTTOBACK + + + + No documentation. + + + bb205466 + D3DXSPRITE_SORT_DEPTH_BACKTOFRONT + D3DXSPRITE_SORT_DEPTH_BACKTOFRONT + + + + No documentation. + + + bb205466 + D3DXSPRITE_DO_NOT_ADDREF_TEXTURE + D3DXSPRITE_DO_NOT_ADDREF_TEXTURE + + + + None. + + + None + None + + + +

Predefined sets of pipeline state used by state blocks (see State Blocks Save and Restore State (Direct3D 9)).

+
+ +

As the following diagram shows, vertex and pixel state are both subsets of device state.

There are only a few states that are considered both vertex and pixel state. These states are:

  • Render state:
  • Render state:
  • Render state:
  • Texture state:
  • Texture state:
+
+ + bb172608 + D3DSTATEBLOCKTYPE + D3DSTATEBLOCKTYPE +
+ + + No documentation. + + + bb172608 + D3DSBT_ALL + D3DSBT_ALL + + + + No documentation. + + + bb172608 + D3DSBT_PIXELSTATE + D3DSBT_PIXELSTATE + + + + No documentation. + + + bb172608 + D3DSBT_VERTEXSTATE + D3DSBT_VERTEXSTATE + + + +

Driver stencil capability flags.

+
+ + bb172609 + D3DSTENCILCAPS + D3DSTENCILCAPS +
+ + + No documentation. + + + bb172609 + D3DSTENCILCAPS_KEEP + D3DSTENCILCAPS_KEEP + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_ZERO + D3DSTENCILCAPS_ZERO + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_REPLACE + D3DSTENCILCAPS_REPLACE + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_INCRSAT + D3DSTENCILCAPS_INCRSAT + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_DECRSAT + D3DSTENCILCAPS_DECRSAT + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_INVERT + D3DSTENCILCAPS_INVERT + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_INCR + D3DSTENCILCAPS_INCR + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_DECR + D3DSTENCILCAPS_DECR + + + + No documentation. + + + bb172609 + D3DSTENCILCAPS_TWOSIDED + D3DSTENCILCAPS_TWOSIDED + + + +

Defines stencil-buffer operations.

+
+ +

Stencil-buffer entries are integer values ranging from 0 through 2n - 1, where n is the bit depth of the stencil buffer.

+
+ + bb172610 + D3DSTENCILOP + D3DSTENCILOP +
+ + +

Do not update the entry in the stencil buffer. This is the default value.

+
+ + bb172610 + D3DSTENCILOP_KEEP + D3DSTENCILOP_KEEP +
+ + +

Set the stencil-buffer entry to 0.

+
+ + bb172610 + D3DSTENCILOP_ZERO + D3DSTENCILOP_ZERO +
+ + +

Replace the stencil-buffer entry with a reference value.

+
+ + bb172610 + D3DSTENCILOP_REPLACE + D3DSTENCILOP_REPLACE +
+ + +

Increment the stencil-buffer entry, clamping to the maximum value.

+
+ + bb172610 + D3DSTENCILOP_INCRSAT + D3DSTENCILOP_INCRSAT +
+ + +

Decrement the stencil-buffer entry, clamping to zero.

+
+ + bb172610 + D3DSTENCILOP_DECRSAT + D3DSTENCILOP_DECRSAT +
+ + +

Invert the bits in the stencil-buffer entry.

+
+ + bb172610 + D3DSTENCILOP_INVERT + D3DSTENCILOP_INVERT +
+ + +

Increment the stencil-buffer entry, wrapping to zero if the new value exceeds the maximum value.

+
+ + bb172610 + D3DSTENCILOP_INCR + D3DSTENCILOP_INCR +
+ + +

Decrement the stencil-buffer entry, wrapping to the maximum value if the new value is less than zero.

+
+ + bb172610 + D3DSTENCILOP_DECR + D3DSTENCILOP_DECR +
+ + +

Given a scene that contains many objects that use the same geometry, you can draw many instances of that geometry at different orientations, sizes, colors, and so on with dramatically better performance by reducing the amount of data you need to supply to the renderer.

This can be accomplished through the use of two techniques: the first for drawing indexed geometry and the second for non-indexed geometry. Both techniques use two vertex buffers: one to supply geometry data and one to supply per-object instance data. The instance data can be a wide variety of information such as a transform, color data, or lighting data - basically anything that you can describe in a vertex declaration. Drawing many instances of geometry with these techniques can dramatically reduce the amount of data sent to the renderer.

  • Drawing
    • Indexed
  • Drawing
    • Non-Indexed
  • Related
+
+ + bb173349 + D3DSTREAMSOURCE + D3DSTREAMSOURCE +
+ + + No documentation. + + + bb173349 + D3DSTREAMSOURCE_INDEXEDDATA + D3DSTREAMSOURCE_INDEXEDDATA + + + + No documentation. + + + bb173349 + D3DSTREAMSOURCE_INSTANCEDATA + D3DSTREAMSOURCE_INSTANCEDATA + + + +

Defines swap effects.

+
+ +

The state of the back buffer after a call to Present is well-defined by each of these swap effects, and whether the Direct3D device was created with a full-screen swap chain or a windowed swap chain has no effect on this state. In particular, the swap effect operates the same whether windowed or full-screen, and the Direct3D runtime guarantees this by creating extra buffers. As a result, it is recommended that applications use whenever possible to avoid any such penalties. This is because this swap effect will always be the most efficient in terms of memory consumption and performance.

Applications that use or should not expect full-screen destination alpha to work. This means that the render state will not work as expected because full-screen swap chains with these swap effects do not have an explicit pixel format from the driver's point of view. The driver infers that they should take on the display format, which does not have an alpha channel. To work around this, take the following steps:

  • Use .
  • Check the flag in the Caps3 member of the structure. This flag indicates whether the driver can do alpha blending when or is used.
  • Applications using flip mode swap effect () should call PresentEx after a window resize or region change to ensure that the display content is updated.

An invisible window cannot receive user-mode events; furthermore, an invisible-fullscreen window will interfere with the presentation of another applications' windowed-mode window. Therefore, each application needs to ensure that a device window is visible when a swapchain is presented in fullscreen mode.

+
+ + bb172612 + D3DSWAPEFFECT + D3DSWAPEFFECT +
+ + +

When a swap chain is created with a swap effect of or , the runtime will guarantee that an operation will not affect the content of any of the back buffers. Unfortunately, meeting this guarantee can involve substantial video memory or processing overheads, especially when implementing flip semantics for a windowed swap chain or copy semantics for a full-screen swap chain. An application may use the swap effect to avoid these overheads and to enable the display driver to select the most efficient presentation technique for the swap chain. This is also the only swap effect that may be used when specifying a value other than for the MultiSampleType member of .

Like a swap chain that uses , a swap chain that uses might include more than one back buffer, any of which may be accessed using or . The swap chain is best envisaged as a queue in which 0 always indexes the back buffer that will be displayed by the next Present operation and from which buffers are discarded when they have been displayed.

An application that uses this swap effect cannot make any assumptions about the contents of a discarded back buffer and should therefore update an entire back buffer before invoking a Present operation that would display it. Although this is not enforced, the debug version of the runtime will overwrite the contents of discarded back buffers with random data to enable developers to verify that their applications are updating the entire back buffer surfaces correctly.

+
+ + bb172612 + D3DSWAPEFFECT_DISCARD + D3DSWAPEFFECT_DISCARD +
+ + +

The swap chain might include multiple back buffers and is best envisaged as a circular queue that includes the front buffer. Within this queue, the back buffers are always numbered sequentially from 0 to (n - 1), where n is the number of back buffers, so that 0 denotes the least recently presented buffer. When Present is invoked, the queue is "rotated" so that the front buffer becomes back buffer (n - 1), while the back buffer 0 becomes the new front buffer.

+
+ + bb172612 + D3DSWAPEFFECT_FLIP + D3DSWAPEFFECT_FLIP +
+ + +

This swap effect may be specified only for a swap chain comprising a single back buffer. Whether the swap chain is windowed or full-screen, the runtime will guarantee the semantics implied by a copy-based Present operation, namely that the operation leaves the content of the back buffer unchanged, instead of replacing it with the content of the front buffer as a flip-based Present operation would.

For a full-screen swap chain, the runtime uses a combination of flip operations and copy operations, supported if necessary by hidden back buffers, to accomplish the Present operation. Accordingly, the presentation is synchronized with the display adapter's vertical retrace and its rate is constrained by the chosen presentation interval. A swap chain specified with the flag is the only exception. (Refer to the description of the PresentationIntervals member of the structure.) In this case, a Present operation copies the back buffer content directly to the front buffer without waiting for the vertical retrace.

+
+ + bb172612 + D3DSWAPEFFECT_COPY + D3DSWAPEFFECT_COPY +
+ + +

Use a dedicated area of video memory that can be overlayed on the primary surface. No copy is performed when the overlay is displayed. The overlay operation is performed in hardware, without modifying the data in the primary surface.

Differences between Direct3D 9 and Direct3D 9Ex:

is only available in Direct3D9Ex running on Windows 7 (or more current operating system).

?

+
+ + bb172612 + D3DSWAPEFFECT_OVERLAY + D3DSWAPEFFECT_OVERLAY +
+ + +

Designates when an application is adopting flip mode, during which time an application's frame is passed instead of copied to the Desktop Window Manager(DWM) for composition when the application is presenting in windowed mode. Flip mode allows an application to more efficiently use memory bandwidth as well as enabling an application to take advantage of full-screen-present statistics. Flip mode does not affect full-screen behavior. A sample application that uses and is the D3D9ExFlipEx sample on the MSDN Code Gallery.

Note??If you create a swap chain with , you can't override the hDeviceWindow member of the structure when you present a new frame for display. That is, you must pass null to the hDestWindowOverride parameter of to instruct the runtime to use the hDeviceWindow member of for the presentation.

Differences between Direct3D 9 and Direct3D 9Ex:

is only available in Direct3D9Ex running on Windows 7 (or more current operating system).

?

+
+ + bb172612 + D3DSWAPEFFECT_FLIPEX + D3DSWAPEFFECT_FLIPEX +
+ + +

Defines settings used for mesh tangent frame computations.

+
+ + bb205467 + D3DXTANGENT + D3DXTANGENT +
+ + +

Texture coordinate values in the u direction are between 0 and 1. In this case a texture coordinate set will be chosen that minimizes the perimeter of the triangle. See Texture Wrapping (Direct3D 9).

+
+ + bb205467 + D3DXTANGENT_WRAP_U + D3DXTANGENT_WRAP_U +
+ + +

Texture coordinate values in the v direction are between 0 and 1. In this case a texture coordinate set will be chosen that minimizes the perimeter of the triangle. See Texture Wrapping (Direct3D 9).

+
+ + bb205467 + D3DXTANGENT_WRAP_V + D3DXTANGENT_WRAP_V +
+ + +

Texture coordinate values in both u and v directions are between 0 and 1. In this case a texture coordinate set will be chosen that minimizes the perimeter of the triangle. See Texture Wrapping (Direct3D 9).

+
+ + bb205467 + D3DXTANGENT_WRAP_UV + D3DXTANGENT_WRAP_UV +
+ + +

Do not normalize partial derivatives with respect to texture coordinates. If not normalized, the scale of the partial derivatives is proportional to the scale of the 3D model divided by the scale of the triangle in (u, v) space. This scale value provides a measure of how much the texture is stretched in a given direction. The resulting vector length is a weighted sum of the lengths of the partial derivatives.

+
+ + bb205467 + D3DXTANGENT_DONT_NORMALIZE_PARTIALS + D3DXTANGENT_DONT_NORMALIZE_PARTIALS +
+ + +

Do not transform texture coordinates to orthogonal Cartesian coordinates. Mutually exclusive with and .

+
+ + bb205467 + D3DXTANGENT_DONT_ORTHOGONALIZE + D3DXTANGENT_DONT_ORTHOGONALIZE +
+ + +

Compute the partial derivative with respect to texture coordinate v independently for each vertex, and then compute the partial derivative with respect to u as the cross product of the partial derivative with respect to v and the normal vector. Mutually exclusive with and .

+
+ + bb205467 + D3DXTANGENT_ORTHOGONALIZE_FROM_V + D3DXTANGENT_ORTHOGONALIZE_FROM_V +
+ + +

Compute the partial derivative with respect to texture coordinate u independently for each vertex, and then compute the partial derivative with respect to v as the cross product of the normal vector and the partial derivative with respect to u. Mutually exclusive with and .

+
+ + bb205467 + D3DXTANGENT_ORTHOGONALIZE_FROM_U + D3DXTANGENT_ORTHOGONALIZE_FROM_U +
+ + +

Weight the direction of the computed per-vertex normal or partial derivative vector according to the areas of triangles attached to that vertex. Mutually exclusive with .

+
+ + bb205467 + D3DXTANGENT_WEIGHT_BY_AREA + D3DXTANGENT_WEIGHT_BY_AREA +
+ + +

Compute a unit-length normal vector for each triangle of the input mesh. Mutually exclusive with .

+
+ + bb205467 + D3DXTANGENT_WEIGHT_EQUAL + D3DXTANGENT_WEIGHT_EQUAL +
+ + +

Vertices are ordered in a clockwise direction around each triangle. The computed normal vector direction is therefore inverted 180 degrees from the direction computed using counterclockwise vertex ordering.

+
+ + bb205467 + D3DXTANGENT_WIND_CW + D3DXTANGENT_WIND_CW +
+ + +

Compute the per-vertex normal vector for each triangle of the input mesh, and ignore any normal vectors already in the input mesh.

+
+ + bb205467 + D3DXTANGENT_CALCULATE_NORMALS + D3DXTANGENT_CALCULATE_NORMALS +
+ + +

The results are stored in the original input mesh, and the output mesh is not used.

+
+ + bb205467 + D3DXTANGENT_GENERATE_IN_PLACE + D3DXTANGENT_GENERATE_IN_PLACE +
+ + + None. + + + None + None + + + +

Defines constants that describe the supported texture-addressing modes.

+
+ + bb172614 + D3DTEXTUREADDRESS + D3DTEXTUREADDRESS +
+ + +

Tile the texture at every integer junction. For example, for u values between 0 and 3, the texture is repeated three times; no mirroring is performed.

+
+ + bb172614 + D3DTADDRESS_WRAP + D3DTADDRESS_WRAP +
+ + +

Similar to , except that the texture is flipped at every integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on.

+
+ + bb172614 + D3DTADDRESS_MIRROR + D3DTADDRESS_MIRROR +
+ + +

Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.

+
+ + bb172614 + D3DTADDRESS_CLAMP + D3DTADDRESS_CLAMP +
+ + +

Texture coordinates outside the range [0.0, 1.0] are set to the border color.

+
+ + bb172614 + D3DTADDRESS_BORDER + D3DTADDRESS_BORDER +
+ + +

Similar to and . Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value. The most common usage is for volume textures, where support for the full texture-addressing mode is not necessary, but the data is symmetric around the one axis.

+
+ + bb172614 + D3DTADDRESS_MIRRORONCE + D3DTADDRESS_MIRRORONCE +
+ + +

A programmable pixel shader is made up of a set of instructions that operate on pixel data. Registers transfer data in and out of the ALU. Additional control can be applied to modify the instruction, the results, or what data gets written out.

  • ps_3_0 Instructions contains a list of the available instructions.
  • ps_3_0 Registers lists the different types of registers used by the pixel shader ALU.
  • Modifiers Are used to modify the way an instruction works.
  • Destination Register Write Mask determines what components of the destination register get written.
  • Pixel Shader Source Register Modifiers alter the source register data before the instruction runs.
  • Source Register Swizzling gives additional control over which register components are read, copied, or written.
+
+ + bb219845 + D3DPTADDRESSCAPS + D3DPTADDRESSCAPS +
+ + + No documentation. + + + bb219845 + D3DPTADDRESSCAPS_WRAP + D3DPTADDRESSCAPS_WRAP + + + + No documentation. + + + bb219845 + D3DPTADDRESSCAPS_MIRROR + D3DPTADDRESSCAPS_MIRROR + + + + No documentation. + + + bb219845 + D3DPTADDRESSCAPS_CLAMP + D3DPTADDRESSCAPS_CLAMP + + + + No documentation. + + + bb219845 + D3DPTADDRESSCAPS_BORDER + D3DPTADDRESSCAPS_BORDER + + + + No documentation. + + + bb219845 + D3DPTADDRESSCAPS_INDEPENDENTUV + D3DPTADDRESSCAPS_INDEPENDENTUV + + + + No documentation. + + + bb219845 + D3DPTADDRESSCAPS_MIRRORONCE + D3DPTADDRESSCAPS_MIRRORONCE + + + +

Texture argument constants are used as values for the following members of the enumerated type:

Set and retrieve texture arguments by calling the SetTextureStageState and GetTextureStageState methods.

Argument flags

You can combine an argument flag with a modifier, but two argument flags cannot be combined.

+
+ + bb172613 + D3DTA + D3DTA +
+ + + No documentation. + + + bb172613 + D3DTA_SELECTMASK + D3DTA_SELECTMASK + + + + No documentation. + + + bb172613 + D3DTA_DIFFUSE + D3DTA_DIFFUSE + + + + No documentation. + + + bb172613 + D3DTA_CURRENT + D3DTA_CURRENT + + + + No documentation. + + + bb172613 + D3DTA_TEXTURE + D3DTA_TEXTURE + + + + No documentation. + + + bb172613 + D3DTA_TFACTOR + D3DTA_TFACTOR + + + + No documentation. + + + bb172613 + D3DTA_SPECULAR + D3DTA_SPECULAR + + + + No documentation. + + + bb172613 + D3DTA_TEMP + D3DTA_TEMP + + + + No documentation. + + + bb172613 + D3DTA_CONSTANT + D3DTA_CONSTANT + + + + No documentation. + + + bb172613 + D3DTA_COMPLEMENT + D3DTA_COMPLEMENT + + + + No documentation. + + + bb172613 + D3DTA_ALPHAREPLICATE + D3DTA_ALPHAREPLICATE + + + +

A programmable pixel shader is made up of a set of instructions that operate on pixel data. Registers transfer data in and out of the ALU. Additional control can be applied to modify the instruction, the results, or what data gets written out.

  • ps_3_0 Instructions contains a list of the available instructions.
  • ps_3_0 Registers lists the different types of registers used by the pixel shader ALU.
  • Modifiers Are used to modify the way an instruction works.
  • Destination Register Write Mask determines what components of the destination register get written.
  • Pixel Shader Source Register Modifiers alter the source register data before the instruction runs.
  • Source Register Swizzling gives additional control over which register components are read, copied, or written.
+
+ + bb219845 + D3DPTEXTURECAPS + D3DPTEXTURECAPS +
+ + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_PERSPECTIVE + D3DPTEXTURECAPS_PERSPECTIVE + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_POW2 + D3DPTEXTURECAPS_POW2 + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_ALPHA + D3DPTEXTURECAPS_ALPHA + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_SQUAREONLY + D3DPTEXTURECAPS_SQUAREONLY + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE + D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_ALPHAPALETTE + D3DPTEXTURECAPS_ALPHAPALETTE + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_NONPOW2CONDITIONAL + D3DPTEXTURECAPS_NONPOW2CONDITIONAL + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_PROJECTED + D3DPTEXTURECAPS_PROJECTED + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_CUBEMAP + D3DPTEXTURECAPS_CUBEMAP + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_VOLUMEMAP + D3DPTEXTURECAPS_VOLUMEMAP + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_MIPMAP + D3DPTEXTURECAPS_MIPMAP + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_MIPVOLUMEMAP + D3DPTEXTURECAPS_MIPVOLUMEMAP + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_MIPCUBEMAP + D3DPTEXTURECAPS_MIPCUBEMAP + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_CUBEMAP_POW2 + D3DPTEXTURECAPS_CUBEMAP_POW2 + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_VOLUMEMAP_POW2 + D3DPTEXTURECAPS_VOLUMEMAP_POW2 + + + + No documentation. + + + bb219845 + D3DPTEXTURECAPS_NOPROJECTEDBUMPENV + D3DPTEXTURECAPS_NOPROJECTEDBUMPENV + + + +

Driver texture coordinate capability flags.

+
+ + bb172621 + D3DTSS_TCI + D3DTSS_TCI +
+ + + No documentation. + + + bb172621 + D3DTSS_TCI_PASSTHRU + D3DTSS_TCI_PASSTHRU + + + + No documentation. + + + bb172621 + D3DTSS_TCI_CAMERASPACENORMAL + D3DTSS_TCI_CAMERASPACENORMAL + + + + No documentation. + + + bb172621 + D3DTSS_TCI_CAMERASPACEPOSITION + D3DTSS_TCI_CAMERASPACEPOSITION + + + + No documentation. + + + bb172621 + D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR + D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR + + + + No documentation. + + + bb172621 + D3DTSS_TCI_SPHEREMAP + D3DTSS_TCI_SPHEREMAP + + + +

Defines texture filtering modes for a texture stage.

+
+ +

is used by along with to define texture filtering modes for a texture stage.

To check if a format supports texture filter types other than (which is always supported), call with .

Set a texture stage's magnification filter by calling with the value as the second parameter and one member of this enumeration as the third parameter.

Set a texture stage's minification filter by calling with the value as the second parameter and one member of this enumeration as the third parameter.

Set the texture filter to use between-mipmap levels by calling with the value as the second parameter and one member of this enumeration as the third parameter.

Not all valid filtering modes for a device will apply to volume maps. In general, and magnification filters will be supported for volume maps. If is set, then the mipmap filter and and minification filters will be supported for volume maps. The device may or may not support the mipmap filter for volume maps. Devices that support anisotropic filtering for 2D maps do not necessarily support anisotropic filtering for volume maps. However, applications that enable anisotropic filtering will receive the best available filtering (probably linear) if anisotropic filtering is not supported.

+
+ + bb172615 + D3DTEXTUREFILTERTYPE + D3DTEXTUREFILTERTYPE +
+ + +

When used with , disables mipmapping.

+
+ + bb172615 + D3DTEXF_NONE + D3DTEXF_NONE +
+ + +

When used with D3DSAMP_ MAGFILTER or , specifies that point filtering is to be used as the texture magnification or minification filter respectively. When used with , enables mipmapping and specifies that the rasterizer chooses the color from the texel of the nearest mip level.

+
+ + bb172615 + D3DTEXF_POINT + D3DTEXF_POINT +
+ + +

When used with D3DSAMP_ MAGFILTER or , specifies that linear filtering is to be used as the texture magnification or minification filter respectively. When used with , enables mipmapping and trilinear filtering; it specifies that the rasterizer interpolates between the two nearest mip levels.

+
+ + bb172615 + D3DTEXF_LINEAR + D3DTEXF_LINEAR +
+ + +

When used with D3DSAMP_ MAGFILTER or , specifies that anisotropic texture filtering used as a texture magnification or minification filter respectively. Compensates for distortion caused by the difference in angle between the texture polygon and the plane of the screen. Use with is undefined.

+
+ + bb172615 + D3DTEXF_ANISOTROPIC + D3DTEXF_ANISOTROPIC +
+ + +

A 4-sample tent filter used as a texture magnification or minification filter. Use with is undefined.

+
+ + bb172615 + D3DTEXF_PYRAMIDALQUAD + D3DTEXF_PYRAMIDALQUAD +
+ + +

A 4-sample Gaussian filter used as a texture magnification or minification filter. Use with is undefined.

+
+ + bb172615 + D3DTEXF_GAUSSIANQUAD + D3DTEXF_GAUSSIANQUAD +
+ + +

Convolution filter for monochrome textures. See .

Differences between Direct3D 9 and Direct3D 9Ex:

This flag is available in Direct3D 9Ex only.

?

Use with is undefined.

+
+ + bb172615 + D3DTEXF_CONVOLUTIONMONO + D3DTEXF_CONVOLUTIONMONO +
+ + +

Defines per-stage texture-blending operations.

+
+ +

The members of this type are used when setting color or alpha operations by using the or values with the method.

In the above formulas, SRGBA is the RGBA color produced by a texture operation, and Arg1, Arg2, and Arg3 represent the complete RGBA color of the texture arguments. Individual components of an argument are shown with subscripts. For example, the alpha component for argument 1 would be shown as Arg1A.

+
+ + bb172616 + D3DTEXTUREOP + D3DTEXTUREOP +
+ + +

Disables output from this texture stage and all stages with a higher index. To disable texture mapping, set this as the color operation for the first texture stage (stage 0). Alpha operations cannot be disabled when color operations are enabled. Setting the alpha operation to when color blending is enabled causes undefined behavior.

+
+ + bb172616 + D3DTOP_DISABLE + D3DTOP_DISABLE +
+ + +

Use this texture stage's first color or alpha argument, unmodified, as the output. This operation affects the color argument when used with the texture-stage state, and the alpha argument when used with .

+
+ + bb172616 + D3DTOP_SELECTARG1 + D3DTOP_SELECTARG1 +
+ + +

Use this texture stage's second color or alpha argument, unmodified, as the output. This operation affects the color argument when used with the texture stage state, and the alpha argument when used with .

+
+ + bb172616 + D3DTOP_SELECTARG2 + D3DTOP_SELECTARG2 +
+ + +

Multiply the components of the arguments.

+
+ + bb172616 + D3DTOP_MODULATE + D3DTOP_MODULATE +
+ + +

Multiply the components of the arguments, and shift the products to the left 1 bit (effectively multiplying them by 2) for brightening.

+
+ + bb172616 + D3DTOP_MODULATE2X + D3DTOP_MODULATE2X +
+ + +

Multiply the components of the arguments, and shift the products to the left 2 bits (effectively multiplying them by 4) for brightening.

+
+ + bb172616 + D3DTOP_MODULATE4X + D3DTOP_MODULATE4X +
+ + +

Add the components of the arguments.

+
+ + bb172616 + D3DTOP_ADD + D3DTOP_ADD +
+ + +

Add the components of the arguments with a - 0.5 bias, making the effective range of values from - 0.5 through 0.5.

+
+ + bb172616 + D3DTOP_ADDSIGNED + D3DTOP_ADDSIGNED +
+ + +

Add the components of the arguments with a - 0.5 bias, and shift the products to the left 1 bit.

+
+ + bb172616 + D3DTOP_ADDSIGNED2X + D3DTOP_ADDSIGNED2X +
+ + +

Subtract the components of the second argument from those of the first argument.

+
+ + bb172616 + D3DTOP_SUBTRACT + D3DTOP_SUBTRACT +
+ + +

Add the first and second arguments; then subtract their product from the sum.

+
+ + bb172616 + D3DTOP_ADDSMOOTH + D3DTOP_ADDSMOOTH +
+ + +

Linearly blend this texture stage, using the interpolated alpha from each vertex.

+
+ + bb172616 + D3DTOP_BLENDDIFFUSEALPHA + D3DTOP_BLENDDIFFUSEALPHA +
+ + +

Linearly blend this texture stage, using the alpha from this stage's texture.

+
+ + bb172616 + D3DTOP_BLENDTEXTUREALPHA + D3DTOP_BLENDTEXTUREALPHA +
+ + +

Linearly blend this texture stage, using a scalar alpha set with the render state.

+
+ + bb172616 + D3DTOP_BLENDFACTORALPHA + D3DTOP_BLENDFACTORALPHA +
+ + +

Linearly blend a texture stage that uses a premultiplied alpha.

+
+ + bb172616 + D3DTOP_BLENDTEXTUREALPHAPM + D3DTOP_BLENDTEXTUREALPHAPM +
+ + +

Linearly blend this texture stage, using the alpha taken from the previous texture stage.

+
+ + bb172616 + D3DTOP_BLENDCURRENTALPHA + D3DTOP_BLENDCURRENTALPHA +
+ + +

is set in stage n. The output of stage n is arg1. Additionally, if there is a texture in stage n + 1, any in stage n + 1 is premultiplied by texture in stage n + 1.

+
+ + bb172616 + D3DTOP_PREMODULATE + D3DTOP_PREMODULATE +
+ + +

Modulate the color of the second argument, using the alpha of the first argument; then add the result to argument one. This operation is supported only for color operations ().

+
+ + bb172616 + D3DTOP_MODULATEALPHA_ADDCOLOR + D3DTOP_MODULATEALPHA_ADDCOLOR +
+ + +

Modulate the arguments; then add the alpha of the first argument. This operation is supported only for color operations ().

+
+ + bb172616 + D3DTOP_MODULATECOLOR_ADDALPHA + D3DTOP_MODULATECOLOR_ADDALPHA +
+ + +

Similar to , but use the inverse of the alpha of the first argument. This operation is supported only for color operations ().

+
+ + bb172616 + D3DTOP_MODULATEINVALPHA_ADDCOLOR + D3DTOP_MODULATEINVALPHA_ADDCOLOR +
+ + +

Similar to , but use the inverse of the color of the first argument. This operation is supported only for color operations ().

+
+ + bb172616 + D3DTOP_MODULATEINVCOLOR_ADDALPHA + D3DTOP_MODULATEINVCOLOR_ADDALPHA +
+ + +

Perform per-pixel bump mapping, using the environment map in the next texture stage, without luminance. This operation is supported only for color operations ().

+
+ + bb172616 + D3DTOP_BUMPENVMAP + D3DTOP_BUMPENVMAP +
+ + +

Perform per-pixel bump mapping, using the environment map in the next texture stage, with luminance. This operation is supported only for color operations ().

+
+ + bb172616 + D3DTOP_BUMPENVMAPLUMINANCE + D3DTOP_BUMPENVMAPLUMINANCE +
+ + +

Modulate the components of each argument as signed components, add their products; then replicate the sum to all color channels, including alpha. This operation is supported for color and alpha operations.

In DirectX 6 and DirectX 7, multitexture operations the above inputs are all shifted down by half (y = x - 0.5) before use to simulate signed data, and the scalar result is automatically clamped to positive values and replicated to all three output channels. Also, note that as a color operation this does not updated the alpha it just updates the RGB components.

However, in DirectX 8.1 shaders you can specify that the output be routed to the .rgb or the .a components or both (the default). You can also specify a separate scalar operation on the alpha channel.

+
+ + bb172616 + D3DTOP_DOTPRODUCT3 + D3DTOP_DOTPRODUCT3 +
+ + +

Performs a multiply-accumulate operation. It takes the last two arguments, multiplies them together, and adds them to the remaining input/source argument, and places that into the result.

SRGBA = Arg1 + Arg2 * Arg3

+
+ + bb172616 + D3DTOP_MULTIPLYADD + D3DTOP_MULTIPLYADD +
+ + +

Linearly interpolates between the second and third source arguments by a proportion specified in the first source argument.

SRGBA = (Arg1) * Arg2 + (1- Arg1) * Arg3.

+
+ + bb172616 + D3DTOP_LERP + D3DTOP_LERP +
+ + +

Represents the capabilities of the hardware exposed through the Direct3D object.

+
+ +

The MaxTextureBlendStages and MaxSimultaneousTextures members might seem similar, but they contain different information. The MaxTextureBlendStages member contains the total number of texture-blending stages supported by the current device, and the MaxSimultaneousTextures member describes how many of those stages can have textures bound to them by using the SetTexture method.

When the driver fills this structure, it can set values for execute-buffer capabilities, even when the interface being used to retrieve the capabilities (such as ) does not support execute buffers.

In general, performance problems may occur if you use a texture and then modify it during a scene. Ensure that no texture used in the current BeginScene and EndScene block is evicted unless absolutely necessary. In the case of extremely high texture usage within a scene, the results are undefined. This occurs when you modify a texture that you have used in the scene and there is no spare texture memory available. For such systems, the contents of the z-buffer become invalid at EndScene. Applications should not call UpdateSurface to or from the back buffer on this type of hardware inside a BeginScene/EndScene pair. In addition, applications should not try to access the z-buffer if the capability flag is set. Finally, applications should not lock the back buffer or the z-buffer inside a BeginScene/EndScene pair.

The following flags concerning mipmapped textures are not supported in Direct3D 9.

  • D3DPTFILTERCAPS_LINEAR
  • D3DPTFILTERCAPS_LINEARMIPLINEAR
  • D3DPTFILTERCAPS_LINEARMIPNEAREST
  • D3DPTFILTERCAPS_MIPNEAREST
  • D3DPTFILTERCAPS_NEAREST
+
+ + bb172513 + D3DTEXOPCAPS + D3DTEXOPCAPS +
+ + +

Member of the enumerated type, which identifies what type of resources are used for processing vertices.

+
+ + bb172513 + D3DTEXOPCAPS_DISABLE + D3DTEXOPCAPS_DISABLE +
+ + +

Adapter on which this Direct3D device was created. This ordinal is valid only to pass to methods of the interface that created this Direct3D device. The interface can always be retrieved by calling GetDirect3D.

+
+ + bb172513 + D3DTEXOPCAPS_SELECTARG1 + D3DTEXOPCAPS_SELECTARG1 +
+ + +

The following driver-specific capability.

ValueMeaning

Display hardware is capable of returning the current scan line.

The display driver supports an overlay DDI that allows for verification of overlay capabilities. For more information about the overlay DDI, see Overlay DDI.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

?

+
+ + bb172513 + D3DTEXOPCAPS_SELECTARG2 + D3DTEXOPCAPS_SELECTARG2 +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DTEXOPCAPS_MODULATE + D3DTEXOPCAPS_MODULATE +
+ + +

Driver-specific capabilities identified in .

+
+ + bb172513 + D3DTEXOPCAPS_MODULATE2X + D3DTEXOPCAPS_MODULATE2X +
+ + +

Bit mask of values representing what presentation swap intervals are available.

ValueMeaning

The driver supports an immediate presentation swap interval.

The driver supports a presentation swap interval of every screen refresh.

The driver supports a presentation swap interval of every second screen refresh.

The driver supports a presentation swap interval of every third screen refresh.

The driver supports a presentation swap interval of every fourth screen refresh.

?

+
+ + bb172513 + D3DTEXOPCAPS_MODULATE4X + D3DTEXOPCAPS_MODULATE4X +
+ + +

Bit mask indicating what hardware support is available for cursors. Direct3D 9 does not define alpha-blending cursor capabilities.

ValueMeaning

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports at least a hardware color cursor in high-resolution modes (with scan lines greater than or equal to 400).

A full-color cursor is supported in hardware. Specifically, this flag indicates that the driver supports a hardware color cursor in both high-resolution and low-resolution modes (with scan lines less than 400).

?

+
+ + bb172513 + D3DTEXOPCAPS_ADD + D3DTEXOPCAPS_ADD +
+ + +

Flags identifying the capabilities of the device.

ValueMeaning

Device supports blits from system-memory textures to nonlocal video-memory textures.

Device can queue rendering commands after a page flip. Applications do not change their behavior if this flag is set; this capability means that the device is relatively fast.

Device can support at least a DirectX 5-compliant driver.

Device can support at least a DirectX 7-compliant driver.

Device exports an -aware hal.

Device can use execute buffers from system memory.

Device can use execute buffers from video memory.

Device has hardware acceleration for scene rasterization.

Device can support transformation and lighting in hardware.

Device supports N patches.

Device can support rasterization, transform, lighting, and shading in hardware.

Device supports quintic B?zier curves and B-splines.

Device supports rectangular and triangular patches.

When this device capability is set, the hardware architecture does not require caching of any information, and uncached patches (handle zero) will be drawn as efficiently as cached ones. Note that setting does not mean that a patch with handle zero can be drawn. A handle-zero patch can always be drawn whether this cap is set or not.

Device is texturing from separate memory pools.

Device can retrieve textures from non-local video memory.

Device can retrieve textures from system memory.

Device can retrieve textures from device memory.

Device can use buffers from system memory for transformed and lit vertices.

Device can use buffers from video memory for transformed and lit vertices.

?

+
+ + bb172513 + D3DTEXOPCAPS_ADDSIGNED + D3DTEXOPCAPS_ADDSIGNED +
+ + +

Miscellaneous driver primitive capabilities. See .

+
+ + bb172513 + D3DTEXOPCAPS_ADDSIGNED2X + D3DTEXOPCAPS_ADDSIGNED2X +
+ + +

Information on raster-drawing capabilities. This member can be one or more of the following flags.

ValueMeaning

Device supports anisotropic filtering.

Device iterates colors perspective correctly.

Device can dither to improve color resolution.

Device supports legacy depth bias. For true depth bias, see .

Device supports range-based fog. In range-based fog, the distance of an object from the viewer is used to compute fog effects, not the depth of the object (that is, the z-coordinate) in the scene.

Device calculates the fog value by referring to a lookup table containing fog values that are indexed to the depth of a given pixel.

Device calculates the fog value during the lighting operation and interpolates the fog value during rasterization.

Device supports level-of-detail bias adjustments. These bias adjustments enable an application to make a mipmap appear crisper or less sharp than it normally would. For more information about level-of-detail bias in mipmaps, see .

Device supports toggling multisampling on and off between and (using ).

Device supports scissor test. See Scissor Test (Direct3D 9).

Device performs true slope-scale based depth bias. This is in contrast to the legacy style depth bias.

Device supports depth buffering using w.

Device supports w-based fog. W-based fog is used when a perspective projection matrix is specified, but affine projections still use z-based fog. The system considers a projection matrix that contains a nonzero value in the [3][4] element to be a perspective projection matrix.

Device can perform hidden-surface removal (HSR) without requiring the application to sort polygons and without requiring the allocation of a depth-buffer. This leaves more video memory for textures. The method used to perform HSR is hardware-dependent and is transparent to the application.

Z-bufferless HSR is performed if no depth-buffer surface is associated with the rendering-target surface and the depth-buffer comparison test is enabled (that is, when the state value associated with the enumeration constant is set to TRUE).

Device supports z-based fog.

Device can perform z-test operations. This effectively renders a primitive and indicates whether any z pixels have been rendered.

?

+
+ + bb172513 + D3DTEXOPCAPS_SUBTRACT + D3DTEXOPCAPS_SUBTRACT +
+ + +

Z-buffer comparison capabilities. This member can be one or more of the following flags.

ValueMeaning

Always pass the z-test.

Pass the z-test if the new z equals the current z.

Pass the z-test if the new z is greater than the current z.

Pass the z-test if the new z is greater than or equal to the current z.

Pass the z-test if the new z is less than the current z.

Pass the z-test if the new z is less than or equal to the current z.

Always fail the z-test.

Pass the z-test if the new z does not equal the current z.

?

+
+ + bb172513 + D3DTEXOPCAPS_ADDSMOOTH + D3DTEXOPCAPS_ADDSMOOTH +
+ + +

Source-blending capabilities. This member can be one or more of the following flags. (The RGBA values of the source and destination are indicated by the subscripts s and d.)

ValueMeaning

The driver supports both and . See .

Source blend factor is (1 - As, 1 - As, 1 - As, 1 - As) and destination blend factor is (As, As, As, As); the destination blend selection is overridden.

The driver supports the blend mode. (This blend mode is obsolete. For more information, see .)

Blend factor is (Ad, Ad, Ad, Ad).

Blend factor is (Rd, Gd, Bd, Ad).

Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad).

Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad).

Blend factor is (1 - As, 1 - As, 1 - As, 1 - As).

Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As).

Blend factor is (1 - PSOutColor[1]r, 1 - PSOutColor[1]g, 1 - PSOutColor[1]b, not used)). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (1, 1, 1, 1).

Blend factor is (As, As, As, As).

Blend factor is (f, f, f, 1); f = min(As, 1 - Ad).

Blend factor is (Rs, Gs, Bs, As).

Blend factor is (PSOutColor[1]r, PSOutColor[1]g, PSOutColor[1]b, not used). See Render Target Blending.

Differences between Direct3D 9 and Direct3D 9Ex: This flag is available in Direct3D 9Ex only.

?

Blend factor is (0, 0, 0, 0).

?

+
+ + bb172513 + D3DTEXOPCAPS_BLENDDIFFUSEALPHA + D3DTEXOPCAPS_BLENDDIFFUSEALPHA +
+ + +

Destination-blending capabilities. This member can be the same capabilities that are defined for the SrcBlendCaps member.

+
+ + bb172513 + D3DTEXOPCAPS_BLENDTEXTUREALPHA + D3DTEXOPCAPS_BLENDTEXTUREALPHA +
+ + +

Alpha-test comparison capabilities. This member can include the same capability flags defined for the ZCmpCaps member. If this member contains only the capability or only the capability, the driver does not support alpha tests. Otherwise, the flags identify the individual comparisons that are supported for alpha testing.

+
+ + bb172513 + D3DTEXOPCAPS_BLENDFACTORALPHA + D3DTEXOPCAPS_BLENDFACTORALPHA +
+ + +

Shading operations capabilities. It is assumed, in general, that if a device supports a given command at all, it supports the mode (as specified in the enumerated type). This flag specifies whether the driver can also support Gouraud shading and whether alpha color components are supported. When alpha components are not supported, the alpha value of colors generated is implicitly 255. This is the maximum possible alpha (that is, the alpha component is at full intensity).

The color, specular highlights, fog, and alpha interpolants of a triangle each have capability flags that an application can use to find out how they are implemented by the device driver.

This member can be one or more of the following flags.

ValueMeaning

Device can support an alpha component for Gouraud-blended transparency (the state for the enumerated type). In this mode, the alpha color component of a primitive is provided at vertices and interpolated across a face along with the other color components.

Device can support colored Gouraud shading. In this mode, the per-vertex color components (red, green, and blue) are interpolated across a triangle face.

Device can support fog in the Gouraud shading mode.

Device supports Gouraud shading of specular highlights.

?

+
+ + bb172513 + D3DTEXOPCAPS_BLENDTEXTUREALPHAPM + D3DTEXOPCAPS_BLENDTEXTUREALPHAPM +
+ + +

Miscellaneous texture-mapping capabilities. This member can be one or more of the following flags.

ValueMeaning

Alpha in texture pixels is supported.

Device can draw alpha from texture palettes.

Supports cube textures.

Device requires that cube texture maps have dimensions specified as powers of two.

Device supports mipmapped cube textures.

Device supports mipmapped textures.

Device supports mipmapped volume textures.

is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. A device that exposes this capability can use such a texture if all of the following requirements are met.

  • The texture addressing mode for the texture stage is set to .
  • Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
  • Mipmapping is not in use (use magnification filter only).
  • Texture formats must not be through .

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

A texture that is not a power of two cannot be set at a stage that will be read based on a shader computation (such as the bem - ps and texm3x3 - ps instructions in pixel shaders versions 1_0 to 1_3). For example, these textures can be used to store bumps that will be fed into texture reads, but not the environment maps that are used in texbem - ps, texbeml - ps, and texm3x3spec - ps. This means that a texture with dimensions that are not powers of two cannot be addressed or sampled using texture coordinates computed within the shader. This type of operation is known as a dependent read and cannot be performed on these types of textures.

Device does not support a projected bump-environment loopkup operation in programmable and fixed function shaders.

Perspective correction texturing is supported.

If is not set, all textures must have widths and heights specified as powers of two. This requirement does not apply to either cube textures or volume textures.

If is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. See description.

If this flag is not set, and is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

Supports the texture transformation flag. When applied, the device divides transformed texture coordinates by the last texture coordinate. If this capability is present, then the projective divide occurs per pixel. If this capability is not present, but the projective divide needs to occur anyway, then it is performed on a per-vertex basis by the Direct3D runtime.

All textures must be square.

Texture indices are not scaled by the texture size prior to interpolation.

Device supports volume textures.

Device requires that volume texture maps have dimensions specified as powers of two.

?

+
+ + bb172513 + D3DTEXOPCAPS_BLENDCURRENTALPHA + D3DTEXOPCAPS_BLENDCURRENTALPHA +
+ + +

Texture-filtering capabilities for a texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DTEXOPCAPS_PREMODULATE + D3DTEXOPCAPS_PREMODULATE +
+ + +

Texture-filtering capabilities for a cube texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR + D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR +
+ + +

Texture-filtering capabilities for a volume texture. Per-stage filtering capabilities reflect which filtering modes are supported for texture stages when performing multiple-texture blending. This member can be any combination of the per-stage texture-filtering flags defined in .

+
+ + bb172513 + D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA + D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA +
+ + +

Texture-addressing capabilities for texture objects. This member can be one or more of the following flags.

ValueMeaning

Device supports setting coordinates outside the range [0.0, 1.0] to the border color, as specified by the texture-stage state.

Device can clamp textures to addresses.

Device can separate the texture-addressing modes of the u and v coordinates of the texture. This ability corresponds to the and render-state values.

Device can mirror textures to addresses.

Device can take the absolute value of the texture coordinate (thus, mirroring around 0) and then clamp to the maximum value.

Device can wrap textures to addresses.

?

+
+ + bb172513 + D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR + D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR +
+ + +

Texture-addressing capabilities for a volume texture. This member can be one or more of the flags defined for the TextureAddressCaps member.

+
+ + bb172513 + D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA + D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA +
+ + +

Defines the capabilities for line-drawing primitives.

ValueMeaning

Supports alpha-test comparisons.

Antialiased lines are supported.

Supports source-blending.

Supports fog.

Supports texture-mapping.

Supports z-buffer comparisons.

?

+
+ + bb172513 + D3DTEXOPCAPS_BUMPENVMAP + D3DTEXOPCAPS_BUMPENVMAP +
+ + +

Maximum texture width for this device.

+
+ + bb172513 + D3DTEXOPCAPS_BUMPENVMAPLUMINANCE + D3DTEXOPCAPS_BUMPENVMAPLUMINANCE +
+ + +

Maximum texture height for this device.

+
+ + bb172513 + D3DTEXOPCAPS_DOTPRODUCT3 + D3DTEXOPCAPS_DOTPRODUCT3 +
+ + +

Maximum value for any of the three dimensions (width, height, and depth) of a volume texture.

+
+ + bb172513 + D3DTEXOPCAPS_MULTIPLYADD + D3DTEXOPCAPS_MULTIPLYADD +
+ + +

This number represents the maximum range of the integer bits of the post-normalized texture coordinates. A texture coordinate is stored as a 32-bit signed integer using 27 bits to store the integer part and 5 bits for the floating point fraction. The maximum integer index, 227, is used to determine the maximum texture coordinate, depending on how the hardware does texture-coordinate scaling.

Some hardware reports the cap . For this case, the device defers scaling texture coordinates by the texture size until after interpolation and application of the texture address mode, so the number of times a texture can be wrapped is given by the integer value in MaxTextureRepeat.

Less desirably, on some hardware is not set and the device scales the texture coordinates by the texture size (using the highest level of detail) prior to interpolation. This limits the number of times a texture can be wrapped to MaxTextureRepeat / texture size.

For example, assume that MaxTextureRepeat is equal to 32k and the size of the texture is 4k. If the hardware sets , then the number of times a texture can be wrapped is equal to MaxTextureRepeat, which is 32k in this example. Otherwise, the number of times a texture can be wrapped is equal to MaxTextureRepeat divided by texture size, which is 32k/4k in this example.

+
+ + bb172513 + D3DTEXOPCAPS_LERP + D3DTEXOPCAPS_LERP +
+ + +

Texture stage states define multi-blender texture operations. Some sampler states set up vertex processing, and some set up pixel processing. Texture stage states can be saved and restored using stateblocks (see State Blocks Save and Restore State (Direct3D 9)).

+
+ +

Members of this enumerated type are used with the and methods to retrieve and set texture state values.

The valid range of values for the , , , and bump-mapping matrix coefficients is greater than or equal to -8.0 and less than 8.0. This range, expressed in mathematical notation is (-8.0,8.0).

+
+ + bb172617 + D3DTEXTURESTAGESTATETYPE + D3DTEXTURESTAGESTATETYPE +
+ + + No documentation. + + + bb172617 + D3DTSS_COLOROP + D3DTSS_COLOROP + + + + No documentation. + + + bb172617 + D3DTSS_COLORARG1 + D3DTSS_COLORARG1 + + + + No documentation. + + + bb172617 + D3DTSS_COLORARG2 + D3DTSS_COLORARG2 + + + + No documentation. + + + bb172617 + D3DTSS_ALPHAOP + D3DTSS_ALPHAOP + + + + No documentation. + + + bb172617 + D3DTSS_ALPHAARG1 + D3DTSS_ALPHAARG1 + + + + No documentation. + + + bb172617 + D3DTSS_ALPHAARG2 + D3DTSS_ALPHAARG2 + + + + No documentation. + + + bb172617 + D3DTSS_BUMPENVMAT00 + D3DTSS_BUMPENVMAT00 + + + + No documentation. + + + bb172617 + D3DTSS_BUMPENVMAT01 + D3DTSS_BUMPENVMAT01 + + + + No documentation. + + + bb172617 + D3DTSS_BUMPENVMAT10 + D3DTSS_BUMPENVMAT10 + + + + No documentation. + + + bb172617 + D3DTSS_BUMPENVMAT11 + D3DTSS_BUMPENVMAT11 + + + + No documentation. + + + bb172617 + D3DTSS_TEXCOORDINDEX + D3DTSS_TEXCOORDINDEX + + + + No documentation. + + + bb172617 + D3DTSS_BUMPENVLSCALE + D3DTSS_BUMPENVLSCALE + + + + No documentation. + + + bb172617 + D3DTSS_BUMPENVLOFFSET + D3DTSS_BUMPENVLOFFSET + + + + No documentation. + + + bb172617 + D3DTSS_TEXTURETRANSFORMFLAGS + D3DTSS_TEXTURETRANSFORMFLAGS + + + + No documentation. + + + bb172617 + D3DTSS_COLORARG0 + D3DTSS_COLORARG0 + + + + No documentation. + + + bb172617 + D3DTSS_ALPHAARG0 + D3DTSS_ALPHAARG0 + + + + No documentation. + + + bb172617 + D3DTSS_RESULTARG + D3DTSS_RESULTARG + + + + No documentation. + + + bb172617 + D3DTSS_CONSTANT + D3DTSS_CONSTANT + + + +

Defines texture coordinate transformation values.

+
+ +

Texture coordinates can be transformed using a 4 x 4 matrix before the results are passed to the rasterizer. The texture coordinate transforms are set by calling , and by passing in the texture stage state and one of the values from . For more information about texture transforms, see Texture Coordinate Transformations (Direct3D 9).

+
+ + bb172618 + D3DTEXTURETRANSFORMFLAGS + D3DTEXTURETRANSFORMFLAGS +
+ + +

Texture coordinates are passed directly to the rasterizer.

+
+ + bb172618 + D3DTTFF_DISABLE + D3DTTFF_DISABLE +
+ + +

The rasterizer should expect 1D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.

+
+ + bb172618 + D3DTTFF_COUNT1 + D3DTTFF_COUNT1 +
+ + +

The rasterizer should expect 2D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.

+
+ + bb172618 + D3DTTFF_COUNT2 + D3DTTFF_COUNT2 +
+ + +

The rasterizer should expect 3D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.

+
+ + bb172618 + D3DTTFF_COUNT3 + D3DTTFF_COUNT3 +
+ + +

The rasterizer should expect 4D texture coordinates. This value is used by fixed function vertex processing; it should be set to 0 when using a programmable vertex shader.

+
+ + bb172618 + D3DTTFF_COUNT4 + D3DTTFF_COUNT4 +
+ + +

This flag is honored by the fixed function pixel pipeline, as well as the programmable pixel pipeline in versions ps_1_1 to ps_1_3. When texture projection is enabled for a texture stage, all four floating point values must be written to the corresponding texture register. Each texture coordinate is divided by the last element before being passed to the rasterizer. For example, if this flag is specified with the flag, the first and second texture coordinates are divided by the third coordinate before being passed to the rasterizer.

+
+ + bb172618 + D3DTTFF_PROJECTED + D3DTTFF_PROJECTED +
+ + +

In short, texture wrapping changes the basic way that Direct3D rasterizes textured polygons using the texture coordinates specified for each vertex. While rasterizing a polygon, the system interpolates between the texture coordinates at each of the polygon's vertices to determine the texels that should be used for every pixel of the polygon. Normally, the system treats the texture as a 2D plane, interpolating new texels by taking the shortest route from point A within a texture to point B. If point A represents the u, v position (0.8, 0.1), and point B is at (0.1,0.1), the line of interpolation looks like the following diagram.

Note that the shortest distance between A and B in this illustration runs roughly through the middle of the texture. Enabling u-texture or v-texture coordinate wrapping changes how Direct3D perceives the shortest route between texture coordinates in the u-direction and v-direction. By definition, texture wrapping causes the rasterizer to take the shortest route between texture coordinate sets, assuming that 0.0 and 1.0 are coincident. The last bit is the tricky part: You can imagine that enabling texture wrapping in one direction causes the system to treat a texture as though it were wrapped around a cylinder. For example, consider the following diagram.

The preceding illustration shows how wrapping in the u - direction affects how the system interpolates texture coordinates. Using the same points as in the example for normal, or nonwrapped, textures, you can see that the shortest route between points A and B is no longer across the middle of the texture; it's now across the border where 0.0 and 1.0 exist together. Wrapping in the v-direction is similar, except that it wraps the texture around a cylinder that is lying on its side. Wrapping in both the u-direction and v-direction is more complex. In this situation, you can envision the texture as a torus, or doughnut.

The most common practical application for texture wrapping is to perform environment mapping. Usually, an object textured with an environment map appears very reflective, showing a mirrored image of the object's surroundings in the scene. For the sake of this discussion, picture a room with four walls, each one painted with a letter R, G, B, Y and the corresponding colors: red, green, blue, and yellow. The environment map for such a simple room might look like the following illustration.

Imagine that the room's ceiling is held up by a perfectly reflective, four-sided, pillar. Mapping the environment map texture to the pillar is simple; making the pillar look as though it is reflecting the letters and colors is not as easy. The following diagram shows a wire frame of the pillar with the applicable texture coordinates listed near the top vertices. The seam where wrapping will cross the edges of the texture is shown with a dotted line.

With wrapping enabled in the u-direction, the textured pillar shows the colors and symbols from the environment map appropriately and, at the seam in the front of the texture, the rasterizer properly chooses the shortest route between the texture coordinates, assuming that u-coordinates 0.0 and 1.0 share the same location. The textured pillar looks like the following illustration.

If texture wrapping isn't enabled, the rasterizer does not interpolate in the direction needed to generate a believable, reflected image. Rather, the area at the front of the pillar contains a horizontally compressed version of the texels between u-coordinates 0.175 and 0.875, as they pass through the center of the texture. The wrap effect is ruined.

+
+ + bb206256 + D3DWRAPCOORD + D3DWRAPCOORD +
+ + + No documentation. + + + bb206256 + D3DWRAPCOORD_0 + D3DWRAPCOORD_0 + + + + No documentation. + + + bb206256 + D3DWRAPCOORD_1 + D3DWRAPCOORD_1 + + + + No documentation. + + + bb206256 + D3DWRAPCOORD_2 + D3DWRAPCOORD_2 + + + + No documentation. + + + bb206256 + D3DWRAPCOORD_3 + D3DWRAPCOORD_3 + + + + None. + + + None + None + + + +

Defines the priority type to which an animation track is assigned.

+
+ +

Tracks with the same priority are blended together, and the two resulting values are then blended using the priority blend factor.

+
+ + bb205401 + D3DXPRIORITY_TYPE + D3DXPRIORITY_TYPE +
+ + +

Track should be blended with all the low-priority tracks before the low-priority blend is mixed with the high-priority blend.

+
+ + bb205401 + D3DXPRIORITY_LOW + D3DXPRIORITY_LOW +
+ + +

Track should be blended with all the high-priority tracks before the high-priority blend is mixed with the low-priority blend.

+
+ + bb205401 + D3DXPRIORITY_HIGH + D3DXPRIORITY_HIGH +
+ + + No documentation. + + + D3DTRANSFORMSTATETYPE2 + D3DTRANSFORMSTATETYPE2 + + + + No documentation. + + + D3DTS2_VIEW + D3DTS2_VIEW + + + + No documentation. + + + D3DTS2_PROJECTION + D3DTS2_PROJECTION + + + + No documentation. + + + D3DTS2_WORLD + D3DTS2_WORLD + + + + No documentation. + + + D3DTS2_WORLD1 + D3DTS2_WORLD1 + + + + No documentation. + + + D3DTS2_WORLD2 + D3DTS2_WORLD2 + + + + No documentation. + + + D3DTS2_WORLD3 + D3DTS2_WORLD3 + + + + No documentation. + + + D3DTS2_TEXTURE0 + D3DTS2_TEXTURE0 + + + + No documentation. + + + D3DTS2_TEXTURE1 + D3DTS2_TEXTURE1 + + + + No documentation. + + + D3DTS2_TEXTURE2 + D3DTS2_TEXTURE2 + + + + No documentation. + + + D3DTS2_TEXTURE3 + D3DTS2_TEXTURE3 + + + + No documentation. + + + D3DTS2_TEXTURE4 + D3DTS2_TEXTURE4 + + + + No documentation. + + + D3DTS2_TEXTURE5 + D3DTS2_TEXTURE5 + + + + No documentation. + + + D3DTS2_TEXTURE6 + D3DTS2_TEXTURE6 + + + + No documentation. + + + D3DTS2_TEXTURE7 + D3DTS2_TEXTURE7 + + + +

Defines the transition style between values of a mesh animation.

+
+ +

The calculation for the ramp from ease in to ease out is calculated as follows:

Q(t) = 2(x - y)t3 + 3(y - x)t2 + x

where the ramp is a function Q(t) with the following properties:

  • Q(t) is a cubic spline.
  • Q(t) interpolates between x and y as t ranges from 0 to 1.
  • Q(t) is horizontal when t = 0 and t = 1.

Mathematically, this translates into:

Q(t) = At3 + Bt2 + Ct + D (and therefore, Q'(t) = 3At2 + 2Bt + C)
2a) Q(0) = x
2b) Q(1) = y
3a) Q'(0) = 0
3b) Q'(1) = 0

Solving for A, B, C, D:

D = x (from 2a)
C = 0 (from 3a)
3A + 2B = 0 (from 3b)
A + B = y - x (from 2b and D = x)

Therefore:

A = 2(x - y), B = 3(y - x), C = 0, D = x
+
+ + bb205475 + D3DXTRANSITION_TYPE + D3DXTRANSITION_TYPE +
+ + +

Linear transition between values.

+
+ + bb205475 + D3DXTRANSITION_LINEAR + D3DXTRANSITION_LINEAR +
+ + +

Ease-in, ease-out spline transition between values.

+
+ + bb205475 + D3DXTRANSITION_EASEINEASEOUT + D3DXTRANSITION_EASEINEASEOUT +
+ + +

Usage options that identify how resources are to be used.

The following table summarizes the available usage options.

+
+ + bb172625 + D3DUSAGE + D3DUSAGE +
+ + + No documentation. + + + bb172625 + D3DUSAGE_RENDERTARGET + D3DUSAGE_RENDERTARGET + + + + No documentation. + + + bb172625 + D3DUSAGE_DEPTHSTENCIL + D3DUSAGE_DEPTHSTENCIL + + + + No documentation. + + + bb172625 + D3DUSAGE_DYNAMIC + D3DUSAGE_DYNAMIC + + + + No documentation. + + + bb172625 + D3DUSAGE_NONSECURE + D3DUSAGE_NONSECURE + + + + No documentation. + + + bb172625 + D3DUSAGE_AUTOGENMIPMAP + D3DUSAGE_AUTOGENMIPMAP + + + + No documentation. + + + bb172625 + D3DUSAGE_DMAP + D3DUSAGE_DMAP + + + + No documentation. + + + bb172625 + D3DUSAGE_QUERY_LEGACYBUMPMAP + D3DUSAGE_QUERY_LEGACYBUMPMAP + + + + No documentation. + + + bb172625 + D3DUSAGE_QUERY_SRGBREAD + D3DUSAGE_QUERY_SRGBREAD + + + + No documentation. + + + bb172625 + D3DUSAGE_QUERY_FILTER + D3DUSAGE_QUERY_FILTER + + + + No documentation. + + + bb172625 + D3DUSAGE_QUERY_SRGBWRITE + D3DUSAGE_QUERY_SRGBWRITE + + + + No documentation. + + + bb172625 + D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING + D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING + + + + No documentation. + + + bb172625 + D3DUSAGE_QUERY_VERTEXTEXTURE + D3DUSAGE_QUERY_VERTEXTEXTURE + + + + No documentation. + + + bb172625 + D3DUSAGE_QUERY_WRAPANDMIP + D3DUSAGE_QUERY_WRAPANDMIP + + + + No documentation. + + + bb172625 + D3DUSAGE_WRITEONLY + D3DUSAGE_WRITEONLY + + + + No documentation. + + + bb172625 + D3DUSAGE_SOFTWAREPROCESSING + D3DUSAGE_SOFTWAREPROCESSING + + + + No documentation. + + + bb172625 + D3DUSAGE_DONOTCLIP + D3DUSAGE_DONOTCLIP + + + + No documentation. + + + bb172625 + D3DUSAGE_POINTS + D3DUSAGE_POINTS + + + + No documentation. + + + bb172625 + D3DUSAGE_RTPATCHES + D3DUSAGE_RTPATCHES + + + + No documentation. + + + bb172625 + D3DUSAGE_NPATCHES + D3DUSAGE_NPATCHES + + + + No documentation. + + + bb172625 + D3DUSAGE_TEXTAPI + D3DUSAGE_TEXTAPI + + + + No documentation. + + + bb172625 + D3DUSAGE_RESTRICTED_CONTENT + D3DUSAGE_RESTRICTED_CONTENT + + + + No documentation. + + + bb172625 + D3DUSAGE_RESTRICT_SHARED_RESOURCE + D3DUSAGE_RESTRICT_SHARED_RESOURCE + + + + No documentation. + + + bb172625 + D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER + D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER + + + + None. + + + None + None + + + +

Texture wrapping options for IMT computation APIs.

+
+ + bb172880 + D3DXIMT + D3DXIMT +
+ + +

The texture wraps in the U direction.

+
+ + bb172880 + D3DXIMT_WRAP_U + D3DXIMT_WRAP_U +
+ + +

The texture wraps in the V direction.

+
+ + bb172880 + D3DXIMT_WRAP_V + D3DXIMT_WRAP_V +
+ + +

The texture wraps in both the U and V direction.

+
+ + bb172880 + D3DXIMT_WRAP_UV + D3DXIMT_WRAP_UV +
+ + +

Defines flags used to control the number or matrices that the system applies when performing multimatrix vertex blending.

+
+ +

Members of this type are used with the render state.

Geometry blending (multimatrix vertex blending) requires that your application use a vertex format that has blending (beta) weights for each vertex.

+
+ + bb172628 + D3DVERTEXBLENDFLAGS + D3DVERTEXBLENDFLAGS +
+ + +

Disable vertex blending; apply only the world matrix set by the D3DTS_WORLDMATRIX macro, where the index value for the transformation state is 0.

+
+ + bb172628 + D3DVBF_DISABLE + D3DVBF_DISABLE +
+ + +

Enable vertex blending between the two matrices set by the D3DTS_WORLDMATRIX macro, where the index value for the transformation states are 0 and 1.

+
+ + bb172628 + D3DVBF_1WEIGHTS + D3DVBF_1WEIGHTS +
+ + +

Enable vertex blending between the three matrices set by the D3DTS_WORLDMATRIX macro, where the index value for the transformation states are 0, 1, and 2.

+
+ + bb172628 + D3DVBF_2WEIGHTS + D3DVBF_2WEIGHTS +
+ + +

Enable vertex blending between the four matrices set by the D3DTS_WORLDMATRIX macro, where the index value for the transformation states are 0, 1, 2, and 3.

+
+ + bb172628 + D3DVBF_3WEIGHTS + D3DVBF_3WEIGHTS +
+ + +

Vertex blending is done by using the value assigned to .

+
+ + bb172628 + D3DVBF_TWEENING + D3DVBF_TWEENING +
+ + +

Use a single matrix with a weight of 1.0.

+
+ + bb172628 + D3DVBF_0WEIGHTS + D3DVBF_0WEIGHTS +
+ + +

Flexible Vertex Format Constants, or FVF codes, are used to describe the contents of vertices interleaved in a single data stream that will be processed by the fixed-function pipeline.

+
+ + bb172559 + D3DFVF + D3DFVF +
+ + + No documentation. + + + bb172559 + D3DFVF_RESERVED0 + D3DFVF_RESERVED0 + + + + No documentation. + + + bb172559 + D3DFVF_POSITION_MASK + D3DFVF_POSITION_MASK + + + + No documentation. + + + bb172559 + D3DFVF_XYZ + D3DFVF_XYZ + + + + No documentation. + + + bb172559 + D3DFVF_XYZRHW + D3DFVF_XYZRHW + + + + No documentation. + + + bb172559 + D3DFVF_XYZB1 + D3DFVF_XYZB1 + + + + No documentation. + + + bb172559 + D3DFVF_XYZB2 + D3DFVF_XYZB2 + + + + No documentation. + + + bb172559 + D3DFVF_XYZB3 + D3DFVF_XYZB3 + + + + No documentation. + + + bb172559 + D3DFVF_XYZB4 + D3DFVF_XYZB4 + + + + No documentation. + + + bb172559 + D3DFVF_XYZB5 + D3DFVF_XYZB5 + + + + No documentation. + + + bb172559 + D3DFVF_XYZW + D3DFVF_XYZW + + + + No documentation. + + + bb172559 + D3DFVF_NORMAL + D3DFVF_NORMAL + + + + No documentation. + + + bb172559 + D3DFVF_PSIZE + D3DFVF_PSIZE + + + + No documentation. + + + bb172559 + D3DFVF_DIFFUSE + D3DFVF_DIFFUSE + + + + No documentation. + + + bb172559 + D3DFVF_SPECULAR + D3DFVF_SPECULAR + + + + No documentation. + + + bb172559 + D3DFVF_TEXCOUNT_MASK + D3DFVF_TEXCOUNT_MASK + + + + No documentation. + + + bb172559 + D3DFVF_TEXCOUNT_SHIFT + D3DFVF_TEXCOUNT_SHIFT + + + + No documentation. + + + bb172559 + D3DFVF_TEX0 + D3DFVF_TEX0 + + + + No documentation. + + + bb172559 + D3DFVF_TEX1 + D3DFVF_TEX1 + + + + No documentation. + + + bb172559 + D3DFVF_TEX2 + D3DFVF_TEX2 + + + + No documentation. + + + bb172559 + D3DFVF_TEX3 + D3DFVF_TEX3 + + + + No documentation. + + + bb172559 + D3DFVF_TEX4 + D3DFVF_TEX4 + + + + No documentation. + + + bb172559 + D3DFVF_TEX5 + D3DFVF_TEX5 + + + + No documentation. + + + bb172559 + D3DFVF_TEX6 + D3DFVF_TEX6 + + + + No documentation. + + + bb172559 + D3DFVF_TEX7 + D3DFVF_TEX7 + + + + No documentation. + + + bb172559 + D3DFVF_TEX8 + D3DFVF_TEX8 + + + + No documentation. + + + bb172559 + D3DFVF_LASTBETA_UBYTE4 + D3DFVF_LASTBETA_UBYTE4 + + + + No documentation. + + + bb172559 + D3DFVF_LASTBETA_D3DCOLOR + D3DFVF_LASTBETA_D3DCOLOR + + + + None. + + + None + None + + + + No documentation. + + + ff569467 + D3DFVFCAPS + D3DFVFCAPS + + + + No documentation. + + + ff569467 + D3DFVFCAPS_TEXCOORDCOUNTMASK + D3DFVFCAPS_TEXCOORDCOUNTMASK + + + + No documentation. + + + ff569467 + D3DFVFCAPS_DONOTSTRIPELEMENTS + D3DFVFCAPS_DONOTSTRIPELEMENTS + + + + No documentation. + + + ff569467 + D3DFVFCAPS_PSIZE + D3DFVFCAPS_PSIZE + + + +

This constant is the maximum number of vertex declarators for a mesh.

+
+ +

MAXD3DDECLLENGTH is defined as a maximum of 64 (see d3d9types.h). This does not include the "end" marker vertex element.

+
+ + bb147183 + _MAX_FVF_DECL_SIZE + _MAX_FVF_DECL_SIZE +
+ + +

The maximum number of elements in the vertex declaration. The additional (+1) is for D3DDECL_END.

+
+ + bb147183 + MAX_FVF_DECL_SIZE + MAX_FVF_DECL_SIZE +
+ + +

A combination of one or more flags that control the device create behavior.

+
+ + bb172637 + D3DVTXPCAPS + D3DVTXPCAPS +
+ + + No documentation. + + + bb172637 + D3DVTXPCAPS_TEXGEN + D3DVTXPCAPS_TEXGEN + + + + No documentation. + + + bb172637 + D3DVTXPCAPS_MATERIALSOURCE7 + D3DVTXPCAPS_MATERIALSOURCE7 + + + + No documentation. + + + bb172637 + D3DVTXPCAPS_DIRECTIONALLIGHTS + D3DVTXPCAPS_DIRECTIONALLIGHTS + + + + No documentation. + + + bb172637 + D3DVTXPCAPS_POSITIONALLIGHTS + D3DVTXPCAPS_POSITIONALLIGHTS + + + + No documentation. + + + bb172637 + D3DVTXPCAPS_LOCALVIEWER + D3DVTXPCAPS_LOCALVIEWER + + + + No documentation. + + + bb172637 + D3DVTXPCAPS_TWEENING + D3DVTXPCAPS_TWEENING + + + + No documentation. + + + bb172637 + D3DVTXPCAPS_TEXGEN_SPHEREMAP + D3DVTXPCAPS_TEXGEN_SPHEREMAP + + + + No documentation. + + + bb172637 + D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER + D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER + + + +

Vertex shader caps constants. These constants are used by the VS20Caps member of .

+
+ + bb172634 + D3DVS20CAPS + D3DVS20CAPS +
+ + + No documentation. + + + bb172634 + D3DVS20CAPS_PREDICATION + D3DVS20CAPS_PREDICATION + + + + None. + + + None + None + + + +

Vertex texture sampler constants.

These constants identify the texture samplers used by vertex shaders.

+
+ + bb172631 + D3DVERTEXTEXTURESAMPLER + D3DVERTEXTEXTURESAMPLER +
+ + + No documentation. + + + bb172631 + D3DVERTEXTEXTURESAMPLER0 + D3DVERTEXTEXTURESAMPLER0 + + + + No documentation. + + + bb172631 + D3DVERTEXTEXTURESAMPLER1 + D3DVERTEXTEXTURESAMPLER1 + + + + No documentation. + + + bb172631 + D3DVERTEXTEXTURESAMPLER2 + D3DVERTEXTEXTURESAMPLER2 + + + + No documentation. + + + bb172631 + D3DVERTEXTEXTURESAMPLER3 + D3DVERTEXTEXTURESAMPLER3 + + + + No documentation. + + + bb172631 + D3DVERTEXTEXTURESAMPLERMAPSAMPLER + D3DVERTEXTEXTURESAMPLERMAPSAMPLER + + + +

Specifies the type of I/O bus used by the graphics adapter.

+
+ +

As many as three flags can be set. Flags in the range 0x00 through 0x04 (D3DBUSTYPE_Xxx) provide the basic bus type. Flags in the range 0x10000 through 0x50000 (D3DBUSIMPL_MODIFIER_Xxx) modify the basic description. The driver sets one bus-type flag, and can set zero or one modifier flag. If the driver sets a modifier flag, it also sets the flag. Flags are combined with a bitwise OR.

+
+ + dd318379 + D3DBUSTYPE + D3DBUSTYPE +
+ + +

Indicates a type of bus other than the types listed here. +

+
+ + dd318379 + D3DBUSTYPE_OTHER + D3DBUSTYPE_OTHER +
+ + +

PCI bus. +

+
+ + dd318379 + D3DBUSTYPE_PCI + D3DBUSTYPE_PCI +
+ + +

PCI-X bus. +

+
+ + dd318379 + D3DBUSTYPE_PCIX + D3DBUSTYPE_PCIX +
+ + +

PCI Express bus. +

+
+ + dd318379 + D3DBUSTYPE_PCIEXPRESS + D3DBUSTYPE_PCIEXPRESS +
+ + +

Accelerated Graphics Port (AGP) bus. +

+
+ + dd318379 + D3DBUSTYPE_AGP + D3DBUSTYPE_AGP +
+ + +

The implementation for the graphics adapter is in a motherboard chipset's north bridge. This flag implies that data never goes over an expansion bus (such as PCI or AGP) when it is transferred from main memory to the graphics adapter.

+
+ + dd318379 + D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET + D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET +
+ + +

Indicates that the graphics adapter is connected to a motherboard chipset's north bridge by tracks on the motherboard and all of the graphics adapter's chips are soldered to the motherboard. This flag implies that data never goes over an expansion bus (such as PCI or AGP) when it is transferred from main memory to the graphics adapter.

+
+ + dd318379 + D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP + D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP +
+ + +

The graphics adapter is connected to a motherboard chipset's north bridge by tracks on the motherboard, and all of the graphics adapter's chips are connected through sockets to the motherboard. +

+
+ + dd318379 + D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET + D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET +
+ + +

The graphics adapter is connected to the motherboard through a daughterboard connector. +

+
+ + dd318379 + D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR + D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR +
+ + +

The graphics adapter is connected to the motherboard through a daughterboard connector, and the graphics adapter is inside an enclosure that is not user accessible. +

+
+ + dd318379 + D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE + D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE +
+ + +

One of the D3DBUSIMPL_MODIFIER_MODIFIER_Xxx flags is set. +

+
+ + dd318379 + D3DBUSIMPL_MODIFIER_NON_STANDARD + D3DBUSIMPL_MODIFIER_NON_STANDARD +
+ + +

Options for welding together vertices.

+
+ + bb205561 + _D3DXWELDEPSILONSFLAGS + _D3DXWELDEPSILONSFLAGS +
+ + +

Weld together all vertices that are at the same location. Using this flag avoids an epsilon comparison between vertex components.

+
+ + bb205561 + D3DXWELDEPSILONS_WELDALL + D3DXWELDEPSILONS_WELDALL +
+ + +

If a given vertex component is within epsilon, modify partially matched vertices so that both components are identical. If all components are equal, remove one of the vertices.

+
+ + bb205561 + D3DXWELDEPSILONS_WELDPARTIALMATCHES + D3DXWELDEPSILONS_WELDPARTIALMATCHES +
+ + +

Instructs the weld to allow only modifications to vertices and not removal. This flag is valid only if is set. It is useful to modify vertices to be equal, but not to allow vertices to be removed.

+
+ + bb205561 + D3DXWELDEPSILONS_DONOTREMOVEVERTICES + D3DXWELDEPSILONS_DONOTREMOVEVERTICES +
+ + +

Instructs the weld not to split vertices that are in separate attribute groups. When the method is called with the flag, then the flag will also be set. Setting this flag can slow down software vertex processing.

+
+ + bb205561 + D3DXWELDEPSILONS_DONOTSPLIT + D3DXWELDEPSILONS_DONOTSPLIT +
+ + + No documentation. + + + D3DXF_FILEFORMAT2 + D3DXF_FILEFORMAT2 + + + + No documentation. + + + D3DXF_FILEFORMAT_BINARY + D3DXF_FILEFORMAT_BINARY + + + + No documentation. + + + D3DXF_FILEFORMAT_TEXT + D3DXF_FILEFORMAT_TEXT + + + + No documentation. + + + D3DXF_FILEFORMAT_COMPRESSED + D3DXF_FILEFORMAT_COMPRESSED + + + + No documentation. + + + D3DZBUFFERTYPE + D3DZBUFFERTYPE + + + + No documentation. + + + D3DZB_FALSE + D3DZB_FALSE + + + + No documentation. + + + D3DZB_TRUE + D3DZB_TRUE + + + + No documentation. + + + D3DZB_USEW + D3DZB_USEW + + + + Functions + + + + + Constant SdkVersion. + D3D_SDK_VERSION + + + +

Creates an object and returns an interface to it.

+
+ No documentation. + No documentation. +
  • if Direct3DEx features are not supported (no WDDM driver is installed) or if the SDKVersion does not match the version of the DLL.
  • D3DERR_OUTOFMEMORY if out-of-memory conditions are detected when creating the enumerator object.
  • if the creation of the enumerator object is successful.
+ +

The object is the first object that the application creates and the last object thta the application releases. Functions for enumerating and retrieving capabilities of a device are accessible through the object. This enables applications to select devices without creating them.

The interface supports enumeration of active display adapters and allows the creation of objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), these devices are not included in the enumeration. Creating a new interface will expose the new devices.

Pass the flag to this function to ensure that header files used in the compiled application match the version of the installed runtime DLLs. is changed in the runtime only when a header or another code change would require rebuilding the application. If this function fails, it indicates that the versions of the header file and the runtime DLL do not match.

Note??Direct3DCreate9Ex is supported only in Windows Vista, Windows Server 2008, and Windows 7. Earlier versions of the D3D9.dll library do not include Direct3D9Ex and Direct3DCreate9Ex.

+
+ + bb219676 + HRESULT Direct3DCreate9Ex([In] unsigned int SDKVersion,[Out, Fast] IDirect3D9Ex** arg1) + Direct3DCreate9Ex +
+ + +

Create an object and return an interface to it.

+
+

The value of this parameter should be . See Remarks.

+

If successful, this function returns a reference to an interface; otherwise, a null reference is returned.

+ +

The Direct3D object is the first Direct3D COM object that your graphical application needs to create and the last object that your application needs to release. Functions for enumerating and retrieving capabilities of a device are accessible through the Direct3D object. This enables applications to select devices without creating them.

Create an object as shown here:

 LPDIRECT3D9 g_pD3D = null; if( null == (g_pD3D = Direct3DCreate9())) return E_FAIL;	
+            

The interface supports enumeration of active display adapters and allows the creation of objects. If the user dynamically adds adapters (either by adding devices to the desktop, or by hot-docking a laptop), those devices will not be included in the enumeration. Creating a new interface will expose the new devices.

is passed to this function to ensure that the header files against which an application is compiled match the version of the runtime DLL's that are installed on the machine. is only changed in the runtime when a header change (or other code change) would require an application to be rebuilt. If this function fails, it indicates that the header file version does not match the runtime DLL version.

For an example, see Creating a Device (Direct3D 9).

+
+ + bb219685 + IDirect3D9* Direct3DCreate9([In] unsigned int SDKVersion) + Direct3DCreate9 +
+ + + Functions + + + + + Constant Version. + D3DX_VERSION + + + Constant SdkVersion. + D3DX_SDK_VERSION + + + + No documentation. + + No documentation. + No documentation. + + void D3DPERF_SetMarker([In] D3DCOLOR col,[In] const wchar_t* wszName) + D3DPERF_SetMarker + + + + No documentation. + + No documentation. + + void D3DPERF_SetOptions([In] unsigned int dwOptions) + D3DPERF_SetOptions + + + + No documentation. + + No documentation. + + unsigned int D3DPERF_GetStatus() + D3DPERF_GetStatus + + + + No documentation. + + No documentation. + No documentation. + + void D3DPERF_SetRegion([In] D3DCOLOR col,[In] const wchar_t* wszName) + D3DPERF_SetRegion + + + + No documentation. + + No documentation. + + int D3DPERF_EndEvent() + D3DPERF_EndEvent + + + +

Marks the beginning of a section of event code.

+
+

A null-terminated UNICODE string that contains the name of the event. The name is not relevant to the operating system. You can choose a name that is meaningful when the calling application is running under the Direct3D profiling tool.A null reference produces undefined results.

+ No documentation. +

Returns the number of previous calls to BeginEvent that have not yet been finalized by calls to the ID3DUserDefinedAnnotation::EndEvent method.

The return value is ?1 if the calling application is not running under a Direct3D profiling tool.

+ +

You call the EndEvent method to mark the end of the section of event code.

A user can visualize the event when the calling application is running under an enabled Direct3D profiling tool such as Microsoft Visual Studio Ultimate?2012.

BeginEvent has no effect if the calling application is not running under an enabled Direct3D profiling tool.

+
+ + hh446884 + int D3DPERF_BeginEvent([In] D3DCOLOR col,[In] const wchar_t* wszName) + D3DPERF_BeginEvent +
+ + + No documentation. + + No documentation. + + BOOL D3DPERF_QueryRepeatFrame() + D3DPERF_QueryRepeatFrame + + + +

Adds a child frame to a frame.

+
+

Pointer to the parent node.

+

Pointer to the child node.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb172846 + HRESULT D3DXFrameAppendChild([In] D3DXFRAME* pFrameParent,[In] const D3DXFRAME* pFrameChild) + D3DXFrameAppendChild +
+ + +

Loads the first frame hierarchy from a .x file.

+
+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Combination of one or more flags from the D3DXMESH enumeration that specify creation options for the mesh.

+

Pointer to an interface, the device object associated with the mesh.

+

Pointer to an interface.

+

Application provided interface that allows loading of user data. See .

+

Returns a reference to the loaded frame hierarchy. See .

+

Returns a reference to the animation controller corresponding to animation in the .x file. This is created with default tracks and events. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXLoadMeshHierarchyFromXA.

All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.

loads the animation data and frame hierarchy from a .x file. It scans the .x file and builds a frame hierarchy and animation controller according to the -derived object passed to it through pAlloc. Loading the data requires several steps as follows:

  1. Derive , implementing each method. This controls how frames and meshes are allocated and freed.
  2. Derive , implementing each method. If your .x file has no embedded user-defined data, or if you do not need it, you can skip this part.
  3. Create an object of your class, and optionally of your LoadUserData class. You do not need to call any methods of these objects yourself.
  4. Call , passing in your object and your object (or null) to create the frame hierarchy and animation controller. All the animation sets and frames are automatically registered to the animation controller.

During the load, CreateFrame and LoadFrameChildData are called back on each frame to control loading and allocation of the frame. The application defines these methods to control how frames are stored. CreateMeshContainer and LoadMeshChildData are called back on each mesh object to control loading and allocation of mesh objects. LoadTopLevelData is called back for each top level object that doesn't get loaded by the other methods.

To free this data, call ID3DXAnimationController::Release to free the animation sets, and D3DXFRAMEDestroy, passing in the root node of the frame hierarchy and an object of your derived class. DestroyFrame and DestroyMeshContainer will each be called for every frame and mesh object in the frame hierarchy. Your implementation of DestroyFrame should release everything allocated by CreateFrame, and likewise for the mesh container methods.

+
+ + bb172894 + HRESULT D3DXLoadMeshHierarchyFromXW([In] const wchar_t* Filename,[In] unsigned int MeshOptions,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXAllocateHierarchy* pAlloc,[In] ID3DXLoadUserData* pUserDataLoader,[In] D3DXFRAME** ppFrameHierarchy,[In] ID3DXAnimationController** ppAnimController) + D3DXLoadMeshHierarchyFromXW +
+ + +

Given a frame hierarchy, registers all the named matrices in the animation mixer.

+
+

The top level node in the frame hierarchy.

+

Pointer to the animation controller object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb172851 + HRESULT D3DXFrameRegisterNamedMatrices([In] D3DXFRAME* pFrameRoot,[In] ID3DXAnimationController* pAnimController) + D3DXFrameRegisterNamedMatrices +
+ + +

Loads the first frame hierarchy from a .x file.

+
+

Pointer to a buffer that contains the mesh hierarchy.

+

Size of the pMemory buffer, in bytes.

+

Combination of one or more flags from the D3DXMESH enumeration that specify creation options for the mesh.

+

Pointer to an interface, the device object associated with the mesh.

+

Pointer to an interface.

+

Application provided interface that allows loading of user data. See .

+

Returns a reference to the loaded frame hierarchy. See .

+

Returns a reference to the animation controller corresponding to animation in the .x file. This is created with default tracks and events. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.

+
+ + bb172895 + HRESULT D3DXLoadMeshHierarchyFromXInMemory([In] const void* Memory,[In] unsigned int SizeOfMemory,[In] unsigned int MeshOptions,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXAllocateHierarchy* pAlloc,[In] ID3DXLoadUserData* pUserDataLoader,[In] D3DXFRAME** ppFrameHierarchy,[In] ID3DXAnimationController** ppAnimController) + D3DXLoadMeshHierarchyFromXInMemory +
+ + +

Creates a key framed animation set interface that stores key frame data in a compressed format.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb172754 + HRESULT D3DXCreateCompressedAnimationSet([In] const char* pName,[In] double TicksPerSecond,[In] D3DXPLAYBACK_TYPE Playback,[In] ID3DXBuffer* pCompressedData,[In] unsigned int NumCallbackKeys,[In] const D3DXKEY_CALLBACK* pCallbackKeys,[In] ID3DXCompressedAnimationSet** ppAnimationSet) + D3DXCreateCompressedAnimationSet +
+ + +

Creates a .x file and saves the mesh hierarchy and corresponding animations in it.

+
+

Pointer to a string that specifies the name of the .x file identifying the saved mesh. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Format of the .x file (text or binary, compressed or not). See . can be combined (using a logical OR) with either the or flags to reduce the output file size.

+

Root node of the hierarchy to be saved. See .

+

Animation controller that has animation sets to be stored. See .

+

Application-provided interface that allows saving of user data. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be: .

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXSaveMeshHierarchyToFileA.

This function does not save compressed animation sets.

+
+ + bb205427 + HRESULT D3DXSaveMeshHierarchyToFileW([In] const wchar_t* Filename,[In] unsigned int XFormat,[In] const D3DXFRAME* pFrameRoot,[In] ID3DXAnimationController* pAnimController,[In] ID3DXSaveUserData* pUserDataSaver) + D3DXSaveMeshHierarchyToFileW +
+ + +

Computes the bounding sphere of all the meshes in the frame hierarchy.

+
+

Pointer to the root node.

+

Returns the center of the bounding sphere.

+

Returns the radius of the bounding sphere.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb172847 + HRESULT D3DXFrameCalculateBoundingSphere([In] const D3DXFRAME* pFrameRoot,[In] D3DXVECTOR3* pObjectCenter,[In] float* pObjectRadius) + D3DXFrameCalculateBoundingSphere +
+ + +

Creates an animation controller object.

+
+

Maximum number of animation outputs the controller can support.

+

Maximum number of animation sets that can be mixed.

+

Maximum number of animation sets that can be mixed simultaneously.

+

Maximum number of outstanding events that the controller will support.

+

Pointer to the animation controller object created. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

An animation controller controls an animation mixer. The controller adds methods to modify blending parameters over time to enable smooth transitions.

+
+ + bb172751 + HRESULT D3DXCreateAnimationController([In] unsigned int MaxNumMatrices,[In] unsigned int MaxNumAnimationSets,[In] unsigned int MaxNumTracks,[In] unsigned int MaxNumEvents,[In] ID3DXAnimationController** ppAnimController) + D3DXCreateAnimationController +
+ + +

Finds the child frame of a root frame.

+
+

Pointer to the root frame. See .

+

Name of the child frame to find.

+

Returns the child frame if it is found, or null otherwise. See .

+ + bb172849 + D3DXFRAME* D3DXFrameFind([In] const D3DXFRAME* pFrameRoot,[In] const char* Name) + D3DXFrameFind +
+ + +

Creates a key framed animation set interface.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb172776 + HRESULT D3DXCreateKeyframedAnimationSet([In] const char* pName,[In] double TicksPerSecond,[In] D3DXPLAYBACK_TYPE Playback,[In] unsigned int NumAnimations,[In] unsigned int NumCallbackKeys,[In] const D3DXKEY_CALLBACK* pCallbackKeys,[In] ID3DXKeyframedAnimationSet** ppAnimationSet) + D3DXCreateKeyframedAnimationSet +
+ + +

Destroys the subtree of frames under the root, including the root.

+
+

Pointer to the root node.

+

Allocation interface used to deallocate nodes of the frame hierarchy.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb172848 + HRESULT D3DXFrameDestroy([In] D3DXFRAME* pFrameRoot,[In] ID3DXAllocateHierarchy* pAlloc) + D3DXFrameDestroy +
+ + +

Counts number of frames in a subtree that have non-null names.

+
+

Pointer to the root node of the subtree.

+

Returns the frame count.

+ + bb172850 + unsigned int D3DXFrameNumNamedMatrices([In] const D3DXFRAME* pFrameRoot) + D3DXFrameNumNamedMatrices +
+ + +

Creates a render environment map.

+
+

Pointer to an interface, which is the device to associate with the render surface.

+

Size of the render surface.

+

The number of mipmap levels.

+

Member of the enumerated type that describes the pixel format of the environment map.

+

If TRUE, the render surface supports a depth-stencil surface. Otherwise, this member is set to .

+

If DepthStencil is set to TRUE, this parameter is a member of the enumerated type that describes the depth-stencil format of the environment map.

+

Address of a reference to an interface that represents the created render environment map.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb172790 + HRESULT D3DXCreateRenderToEnvMap([In] IDirect3DDevice9* pDevice,[In] unsigned int Size,[In] unsigned int MipLevels,[In] D3DFORMAT Format,[In] BOOL DepthStencil,[In] D3DFORMAT DepthStencilFormat,[In] ID3DXRenderToEnvMap** ppRenderToEnvMap) + D3DXCreateRenderToEnvMap +
+ + +

Returns the driver level.

+
+

Pointer to an interface representing the device.

+

The driver level. See remarks.

+ +

This method returns the driver version, which is one of the following:

  • 700 - Direct3D 7 level driver
  • 800 - Direct3D 8 level driver
  • 900 - Direct3D 9 level driver
+
+ + bb172865 + unsigned int D3DXGetDriverLevel([In] IDirect3DDevice9* pDevice) + D3DXGetDriverLevel +
+ + +

Creates a font object for a device and font.

+
+

Pointer to an interface, the device to be associated with the font object.

+

The height of the characters in logical units.

+

The width of the characters in logical units.

+

Typeface weight. One example is bold.

+

The number of mipmap levels.

+

True for italic font, false otherwise.

+

The character set of the font.

+

Specifies how Windows should attempt to match the desired font sizes and characteristics with actual fonts. Use OUT_TT_ONLY_PRECIS for instance, to ensure that you always get a TrueType font.

+

Specifies how Windows should match the desired font with a real font. It applies to raster fonts only and should not affect TrueType fonts.

+

Pitch and family index.

+

String containing the typeface name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Returns a reference to an interface, representing the created font object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The creation of an object requires that the device supports 32-bit color.

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateFontA because ANSI strings are being used.

If you want more information about font parameters, see The Logical Font.

+
+ + bb172773 + HRESULT D3DXCreateFontW([In] IDirect3DDevice9* pDevice,[In] int Height,[In] unsigned int Width,[In] unsigned int Weight,[In] unsigned int MipLevels,[In] BOOL Italic,[In] unsigned int CharSet,[In] unsigned int OutputPrecision,[In] unsigned int Quality,[In] unsigned int PitchAndFamily,[In] const wchar_t* pFaceName,[Out, Fast] ID3DXFont** ppFont) + D3DXCreateFontW +
+ + +

Creates a render surface.

+
+

Pointer to an interface, the device to be associated with the render surface.

+

Width of the render surface, in pixels.

+

Height of the render surface, in pixels.

+

Member of the enumerated type, describing the pixel format of the render surface.

+

If TRUE, the render surface supports a depth-stencil surface. Otherwise, this member is set to . This function will create a new depth buffer.

+

If DepthStencil is set to TRUE, this parameter is a member of the enumerated type, describing the depth-stencil format of the render surface.

+

Address of a reference to an interface, representing the created render surface.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb172791 + HRESULT D3DXCreateRenderToSurface([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] BOOL DepthStencil,[In] D3DFORMAT DepthStencilFormat,[Out, Fast] ID3DXRenderToSurface** ppRenderToSurface) + D3DXCreateRenderToSurface +
+ + +

Creates a sprite object which is associated with a particular device. Sprite objects are used to draw 2D images to the screen.

+
+

Pointer to an interface, the device to be associated with the sprite.

+

Address of a reference to an interface. This interface allows the user to access sprite functions.

+

If the function succeeds, the return value is .If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This interface can be used to draw two dimensional images in screen space of the associated device.

+
+ + bb172797 + HRESULT D3DXCreateSprite([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXSprite** ppSprite) + D3DXCreateSprite +
+ + +

Creates a font object indirectly for both a device and a font.

+
+

Pointer to an interface, the device to be associated with the font object.

+

Pointer to a structure, describing the attributes of the font object to create. If the compiler settings require Unicode, the data type resolves to ; otherwise, the data type resolves to D3DXFONT_DESCA. See Remarks.

+

Returns a reference to an interface, representing the created font object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateFontIndirectA because ANSI strings are being used.

+
+ + bb172774 + HRESULT D3DXCreateFontIndirectW([In] IDirect3DDevice9* pDevice,[In] const D3DXFONT_DESCW* pDesc,[Out, Fast] ID3DXFont** ppFont) + D3DXCreateFontIndirectW +
+ + +

Uses a left-handed coordinate system to create a line.

+
+

Pointer to an interface, representing the device associated with the created box mesh.

+

Pointer to an interface.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function creates a mesh with the creation option and | Flexible Vertex Format (FVF).

+
+ + bb172778 + HRESULT D3DXCreateLine([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXLine** ppLine) + D3DXCreateLine +
+ + +

Turns on or off all D3DX debug output.

+
+

If TRUE, debugger output is halted; if , debug output is enabled.

+

Returns the previous value of Mute.

+ + bb172817 + BOOL D3DXDebugMute([In] BOOL Mute) + D3DXDebugMute +
+ + +

Verify that the version of D3DX you compiled with is the version that you are running.

+
+

Use . See remarks.

+

Use . See remarks.

+

Returns TRUE if the version of D3DX you compiled against is the version you are running with; otherwise, is returned.

+ +

Use this function during the initialization of your application like this:

  CD3DXMyApplication::Initialize( hInstance,  LPCSTR szWindowName, LPCSTR szClassName, UINT uWidth, UINT uHeight)	
+            {  hr; if (!(, )) return E_FAIL; ...	
+            }	
+            

Use Direct3DCreate9 to verify that the correct runtime is installed.

+
+ + bb172717 + BOOL D3DXCheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DXSdkVersion) + D3DXCheckVersion +
+ + +

Create an effect from an ASCII or binary effect description.

+
+

Pointer to the device that will create the effect. See .

+

Pointer to a buffer containing an effect description.

+

Length of the effect data, in bytes.

+

An optional null-terminated array of structures that describe preprocessor definitions. This value can be null.

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

If pSrcData contains a text effect, flags can be a combination of Flags and flags; otherwise, pSrcData contains a binary effect and the only flags honored are flags. The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.

+

Pointer to a object to use for shared parameters. If this value is null, no parameters will be shared.

+

Returns a reference to an interface.

+

Returns a buffer containing a listing of compile errors.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172763 + HRESULT D3DXCreateEffect([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + D3DXCreateEffect +
+ + +

Disassemble an effect.

+
+

Pointer to an interface that contains the effect.

+

Enable color coding to make the disassembly easier to read.

+

Returns a buffer containing the disassembled shader. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172819 + HRESULT D3DXDisassembleEffect([In] ID3DXEffect* pEffect,[In] BOOL EnableColorCode,[In] ID3DXBuffer** ppDisassembly) + D3DXDisassembleEffect +
+ + +

Create an effect from an ASCII or binary effect description. This is an extended version of that allows an application to control which parameters are ignored by the effects system.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function is an extended version of that allows an application to specify which effect constants will be managed by the application. A constant that is managed by the application is ignored by the effects system. That is, the application is responsible for initializing the constant as well as saving and restoring its state whenever appropriate.

This function checks each constant in pSkipConstants to see that:

  • It is bound to a constant register.
  • It is only used in HLSL shader code.

If a constant is named in the string that is not present in the effect, it is ignored.

If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateEffectFromResourceA because ANSI strings are being used.

loads data from a resource of type RT_RCDATA. See MSDN for more information about Windows resources.

+
+ + bb172771 + HRESULT D3DXCreateEffectFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + D3DXCreateEffectFromResourceExW +
+ + +

Create an effect from an ASCII or binary effect description.

+
+

Pointer to the device.

+

Handle to a module containing the effect description. If this parameter is null, the current module will be used.

+

Pointer to the resource. This parameter supports both Unicode and ANSI strings. See Remarks.

+

An optional null-terminated array of structures that describe preprocessor definitions. This value can be null.

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

If hSrcModule contains a text effect, flags can be a combination of Flags and flags; otherwise, hSrcModule contains a binary effect and the only flags honored are flags. The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.

+

Pointer to a object to use for shared parameters. If this value is null, no parameters will be shared.

+

Returns a buffer containing the compiled effect.

+

Returns a buffer containing a listing of compile errors.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateEffectFromResourceA because ANSI strings are being used.

loads data from a resource of type RT_RCDATA. See MSDN for more information about Windows resources.

+
+ + bb172770 + HRESULT D3DXCreateEffectFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + D3DXCreateEffectFromResourceW +
+ + +

Creates an effect compiler from an ASCII effect description.

+
+

Pointer to a buffer containing an effect description.

+

Length, in bytes, of the effect data.

+

An optional null-terminated array of structures that describe preprocessor definitions. This value can be null.

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

Compile options identified by various flags (see Flags). The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.

+

Address of a reference to an interface containing the effect compiler.

+

Address of a reference to an interface containing any error messages that occurred during compilation. This parameter can be set to null to ignore error messages.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb172764 + HRESULT D3DXCreateEffectCompiler([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[Out, Fast] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + D3DXCreateEffectCompiler +
+ + +

Create an effect from an ASCII or binary effect description. This function is an extended version of that allows an application to control which parameters are ignored by the effects system.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function is an extended version of that allows an application to specify which effect constants will be managed by the application. A constant that is managed by the application is ignored by the effects system. That is, the application is responsible for initializing the constant as well as saving and restoring its state whenever appropriate.

This function checks each constant in pSkipConstants to see that:

  • It is bound to a constant register.
  • It is only used in HLSL shader code.

If a constant is named in the string that is not present in the effect, it is ignored.

If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateEffectFromFileA because ANSI strings are being used.

+
+ + bb172769 + HRESULT D3DXCreateEffectFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + D3DXCreateEffectFromFileExW +
+ + +

Creates an effect compiler from an ASCII effect description.

+
+

Pointer to the filename. This parameter supports both Unicode and ANSI strings. See Remarks.

+

An optional null-terminated array of structures that describe preprocessor definitions. This value can be null.

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

Compile options identified by various flags (see Flags). The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.

+

Address of a reference to an interface, containing the effect compiler.

+

Address of a reference to an interface, containing any error messages that occurred during compilation. This parameter can be set to null to ignore error messages.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateEffectCompilerFromFileA because ANSI strings are being used.

+
+ + bb172765 + HRESULT D3DXCreateEffectCompilerFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + D3DXCreateEffectCompilerFromFileW +
+ + +

Creates an from an ASCII effect description.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateEffectCompilerFromResourceA because ANSI strings are being used.

+
+ + bb172766 + HRESULT D3DXCreateEffectCompilerFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectCompiler** ppCompiler,[In] ID3DXBuffer** ppParseErrors) + D3DXCreateEffectCompilerFromResourceW +
+ + +

Create an effect from an ASCII or binary effect description.

+
+

Pointer to the device that will create the effect. See .

+

Pointer to the filename. This parameter supports both Unicode and ANSI strings. See Remarks.

+

Optional null-terminated array of preprocessor macro definitions. See .

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

If pSrcFile contains a text effect, flags can be a combination of Flags and flags; otherwise, pSrcFile contains a binary effect and the only flags honored are flags. The Direct3D 10 HLSL compiler is now the default. See Effect-Compiler Tool for details.

+

Pointer to a object to use for shared parameters. If this value is null, no parameters will be shared.

+

Returns a reference to a buffer containing the compiled effect. See .

+

Returns a reference to a buffer containing a listing of compile errors. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the LPCTSTR data type resolves to LPCSTR.

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateEffectFromFileA because ANSI strings are being used.

+
+ + bb172768 + HRESULT D3DXCreateEffectFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + D3DXCreateEffectFromFileW +
+ + +

Create an effect pool. A pool is used to share parameters between effects.

+
+

Returns a reference to the created pool.

+

If the method succeeds, the return value is .

If the arguments are invalid, the method will return .

If the method fails, the return value will be E_FAIL.

+ +

For effects within a pool, shared parameters with the same name share values.

+
+ + bb172772 + HRESULT D3DXCreateEffectPool([Out, Fast] ID3DXEffectPool** ppPool) + D3DXCreateEffectPool +
+ + +

Creates an effect from an ASCII or binary effect description. This function is an extended version of that allows an application to control which parameters are ignored by the effects system.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function is an extended version of that allows an application to specify which effect constants will be managed by the application. A constant that is managed by the application is ignored by the effects system. That is, the application is responsible for initializing the constant as well as saving and restoring its state whenever appropriate.

This function checks each constant in pSkipConstants to see that:

  • It is bound to a constant register.
  • It is only used in HLSL shader code.

If a constant is named in the string that is not present in the effect, it is ignored.

+
+ + bb172767 + HRESULT D3DXCreateEffectEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pSkipConstants,[In] unsigned int Flags,[In] ID3DXEffectPool* pPool,[In] ID3DXEffect** ppEffect,[In] ID3DXBuffer** ppCompilationErrors) + D3DXCreateEffectEx +
+ + +

Saves a mesh to a .x file.

+
+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Pointer to an interface, representing the mesh to save to a .x file.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. This parameter may be null.

+

Pointer to an array of structures, containing material information to be saved in the .x file.

+

Pointer to an array of effect instances, one per attribute group in the mesh. This parameter may be null. An effect instance is a particular instance of state information used to initialize an effect. For more information, see .

+

Number of structures in the pMaterials array.

+

A combination of file format and save options when saving an .x file. See D3DX X File Constants.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: .

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXSaveMeshToXA because ANSI strings are being used.

The default file format is binary; however, if a file is specified as both a binary and a text file, it will be saved as a text file. Regardless of the file format, you may also use the compressed format to reduce the file size.

The following is a typical code example of how to use this function.

 *    m_pMesh;           // Mesh object to be saved to a .x file	
+            * m_pMaterials;      // Array of material structs in the mesh	
+            DWORD         m_dwNumMaterials;  // Number of material structs in the mesh DWORD dwFormat = ;  // Binary-format .x file (default)	
+            // DWORD dwFormat = ; // Text-format .x file // Load mesh into m_pMesh and determine values of m_pMaterials and 	
+            // m_dwNumMaterials with calls to D3DXLoadMeshxxx or other D3DX functions // ... ( L"outputxfilename.x", m_pMesh, null, m_pMaterials, null, m_dwNumMaterials, dwFormat );	
+            
+
+ + bb205428 + HRESULT D3DXSaveMeshToXW([In] const wchar_t* pFilename,[In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXMATERIAL* pMaterials,[In] const D3DXEFFECTINSTANCE* pEffectInstances,[In] unsigned int NumMaterials,[In] unsigned int Format) + D3DXSaveMeshToXW +
+ + +

Creates an N-patch mesh from a triangle mesh.

+
+

Address of a reference to an interface that represents the triangle mesh object.

+

Address of a reference to an interface that represents the created patch mesh object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb172782 + HRESULT D3DXCreateNPatchMesh([In] ID3DXMesh* pMeshSysMem,[In] ID3DXPatchMesh** pPatchMesh) + D3DXCreateNPatchMesh +
+ + +

Returns a declarator from a flexible vertex format (FVF) code.

+
+

Combination of that describes the FVF from which to generate the returned declarator array.

+

An array of elements describing the vertex format of the mesh vertices. The upper limit of this declarator array is .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: D3DXERR_INVALIDMESH.

+ + bb172818 + HRESULT D3DXDeclaratorFromFVF([In] D3DFVF FVF,[In, Buffer] D3DVERTEXELEMENT9* pDeclarator) + D3DXDeclaratorFromFVF +
+ + +

Compute tangent, binormal, and normal vectors for a mesh.

+
+

Pointer to an input mesh object.

+

Combination of one or more flags.

Use null to specify the following options:

  • Weight the normal vector length by the angle, in radians, subtended by the two edges leaving the vertex.
  • Compute orthogonal Cartesian coordinates from the UV texture coordinates.
  • Textures are not wrapped in either U or V directions
  • Partial derivatives with respect to texture coordinates are normalized.
  • Vertices are ordered in a counterclockwise direction around each triangle.
  • Use per-vertex normal vectors already present in the input mesh.
  • The results will be stored in the original input mesh. The function will fail if new vertices need to be created.
+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function simply calls with the following input parameters:

 (pMesh, , 0,    , 0, , 0,  , 0,  dwOptions | , null, 0.01f, 0.25f, 0.01f, null, null);	
+            

Singularities are handled as required by grouping edges and splitting vertices. If any vertices need to be split, the function will fail. The computed normal vector at each vertex is always normalized to have unit length.

The most robust solution for computing orthogonal Cartesian coordinates is to not set flags and , so that orthogonal coordinates are computed from both UV texture coordinates. However, in this case, if either U or V is zero, then the function will compute orthogonal coordinates using or respectively.

+
+ + bb172744 + HRESULT D3DXComputeTangentFrame([In] ID3DXMesh* pMesh,[In] unsigned int dwOptions) + D3DXComputeTangentFrame +
+ + +

Generates an optimized face remapping for a triangle list.

+
+

Pointer to triangle list indices to use for ordering vertices.

+

Number of faces in the triangle list. For 16-bit meshes, this is limited to 2^16 - 1 (65535) or fewer faces.

+

Number of vertices referenced by the triangle list.

+

Flag indicating index type: TRUE if indices are 32-bit (more than 65535 indices), if indices are 16-bit (65535 or fewer indices).

+

Pointer to the original mesh face that was split to generate the current face.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This function's optimization procedure is functionally equivalent to calling with the flag, but this function makes more efficient use of vertex caches.

+
+ + bb205376 + HRESULT D3DXOptimizeFaces([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pFaceRemap) + D3DXOptimizeFaces +
+ + +

Welds together replicated vertices that have equal attributes. This method uses specified epsilon values for equality comparisons.

+
+

Pointer to an object, the mesh from which to weld vertices.

+

Combination of one or more flags from D3DXWELDEPSILONSFLAGS.

+

Pointer to a D3DXWeldEpsilons structure, specifying the epsilon values to be used for this method. Use null to initialize all structure members to a default value of 1.0e-6f.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the source mesh. If the edge has no adjacent faces, the value is 0xffffffff. If this parameter is set to null, will be called to create logical adjacency information.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the optimized mesh. If the edge has no adjacent faces, the value is 0xffffffff.

+

An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the welded mesh.

+

Address of a reference to an interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This function uses supplied adjacency information to determine the points that are replicated. Vertices are merged based on an epsilon comparison. Vertices with equal position must already have been calculated and represented by point-representative data.

This function combines logically-welded vertices that have similar components, such as normals or texture coordinates within pEpsilons.

The following example code calls this function with welding enabled. Vertices are compared using epsilon values for normal vector and vertex position. A reference is returned to a face remapping array (pFaceRemap).

 TCHAR            strMediaPath[512];       // X-file path 	
+            LPD3DXBUFFER     pAdjacencyBuffer = null; // adjacency data buffer	
+            LPD3DXBUFFER     pD3DXMtrlBuffer  = null; // material buffer	
+            LPD3DXMESH       pMesh            = null; // mesh object	
+            DWORD            m_dwNumMaterials;        // number of materials	
+             Epsilons;                // structure with epsilon values	
+            DWORD            *pFaceRemap[65536];      // face remapping array	
+            DWORD            i;                       // internal variable // Load the mesh from the specified file hr =  ( strMediaPath, , m_pd3dDevice, &pAdjacencyBuffer, &pD3DXMtrlBuffer, null, &m_dwNumMaterials, &pMesh ) ) if( FAILED( hr ) )  goto End;              // Go to error handling // Set epsilon values Epsilons.Normal = 0.001; Epsilons.Position = 0.1; // Weld the vertices for( i=0; i < 65536; i++ ) {  pFaceRemap[i] = 0;  } hr =  ( pMesh, , &Epsilons, (DWORD*)pAdjacencyBuffer->GetBufferPointer(), (DWORD*)pAdjacencyBuffer->GetBufferPointer(), (DWORD*)pFaceRemap, null ) if( FAILED( hr ) )  goto End;              // Go to error handling	
+            
+
+ + bb205562 + HRESULT D3DXWeldVertices([In] ID3DXMesh* pMesh,[In] unsigned int Flags,[In] const D3DXWELDEPSILONS* pEpsilons,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap) + D3DXWeldVertices +
+ + +

Generates an output vertex declaration from the input declaration. The output declaration is intended for use by the mesh tessellation functions.

+
+

Pointer to the output vertex declaration. See .

+

Pointer to the input vertex declaration. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: .

+ + bb172861 + HRESULT D3DXGenerateOutputDecl([In, Buffer] D3DVERTEXELEMENT9* pOutput,[In, Buffer] const D3DVERTEXELEMENT9* pInput) + D3DXGenerateOutputDecl +
+ + +

Creates a buffer object.

+
+

Size of the buffer to create, in bytes.

+

Address of a reference to an interface, representing the created buffer object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: E_OUTOFMEMORY.

+ + bb172753 + HRESULT D3DXCreateBuffer([In] unsigned int NumBytes,[In] ID3DXBuffer** ppBuffer) + D3DXCreateBuffer +
+ + +

Loads a patch mesh from an object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the structure.

The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of "Texture0" with an annotation called "Name." This will contain the string file name for the texture.

+
+ + bb172896 + HRESULT D3DXLoadPatchMeshFromXof([In] ID3DXFileData* pXofObjMesh,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXPatchMesh** ppMesh) + D3DXLoadPatchMeshFromXof +
+ + +

Tessellates the given mesh using the N-patch tessellation scheme.

+
+

Pointer to an interface, representing the mesh to tessellate.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the source mesh. This parameter may be null.

+

Number of segments per edge to tessellate.

+

Set to TRUE to use quadratic interpolation for normals; set to for linear interpolation.

+

Address of a reference to an interface, representing the returned tessellated mesh.

+

Address of a reference to an interface. If the value of this parameter is not set to null, this buffer will contain an array of three DWORDs per face that specify the three neighbors for each face in the output mesh. This parameter may be null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function tessellates by using the N-patch algorithm.

+
+ + bb205469 + HRESULT D3DXTessellateNPatches([In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacencyIn,[In] float NumSegs,[In] BOOL QuadraticInterpNormals,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppAdjacencyOut) + D3DXTessellateNPatches +
+ + +

Calculates per-triangle IMT's from a custom application-specified signal that varies over the surface of the mesh (generally at a higher frequency than vertex data). The signal is evaluated via a user-specified callback function.

+
+

A reference to an input mesh (see ) which contains the object geometry for calculating the IMT.

+

Zero-based texture coordinate index that identifies which set of texture coordinates to use.

+

The number of components in each data point in the signal.

+

The maximum distance between vertices; the algorithm continues subdividing until the distance between all vertices is less than or equal to fMaxUVDistance.

+

Texture wrap options. This is a combination of one or more FLAGS.

+

A reference to a user-provided evaluator function, which will be used to compute the signal value at arbitrary U,V coordinates. The function follows the prototype of LPD3DXIMTSIGNALCALLBACK.

+

A reference to a user-defined value which is passed to the signal callback function. Typically used by an application to pass a reference to a data structure that provides context information for the callback function.

+

A reference to a callback function to monitor IMT computation progress.

+

A reference to a user-defined variable which is passed to the status callback function. Typically used by an application to pass a reference to a data structure that provides context information for the callback function.

+

A reference to the buffer (see ) containing the returned IMT array. This array can be provided as input to the D3DX UVAtlas Functions to prioritize texture-space allocation in the texture parameterization.

+

If the function succeeds, the return value is ; otherwise, the value is .

+ +

This function requires that the input mesh contain a signal-to-mesh texture mapping (ie. texture coordinates). It allows the user to define a signal arbitrarily over the surface of the mesh.

+
+ + bb172739 + HRESULT D3DXComputeIMTFromSignal([In] ID3DXMesh* pMesh,[In] unsigned int dwTextureIndex,[In] unsigned int uSignalDimension,[In] float fMaxUVDistance,[In] unsigned int dwOptions,[In] __function__stdcall* pSignalCallback,[In] void* pUserData,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData) + D3DXComputeIMTFromSignal +
+ + +

Validates a patch mesh, returning the number of degenerate vertices and patches.

+
+

Pointer to an interface, representing the patch mesh to be tested.

+

Returns the number of degenerate vertices in the patch mesh.

+

Returns the number of degenerate patches in the patch mesh.

+

Returns a reference to a buffer containing a string of errors and warnings that explain the problems found in the patch mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This method validates the mesh by checking for invalid indices. Error information is available from the debugger output.

+
+ + bb205483 + HRESULT D3DXValidPatchMesh([In] ID3DXPatchMesh* pMesh,[In] unsigned int* dwcDegenerateVertices,[In] unsigned int* dwcDegeneratePatches,[In] ID3DXBuffer** ppErrorsAndWarnings) + D3DXValidPatchMesh +
+ + +

Validates a mesh.

+
+

Pointer to an interface, representing the mesh to be tested.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh to be tested.

+

Returns a buffer containing a string of errors and warnings, which explain the problems found in the mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: D3DXERR_INVALIDMESH, , E_OUTOFMEMORY.

+ +

This method validates the mesh by checking for invalid indices. Error information is available from the debugger output.

+
+ + bb205482 + HRESULT D3DXValidMesh([In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacency,[In] ID3DXBuffer** ppErrorsAndWarnings) + D3DXValidMesh +
+ + +

Splits a mesh into meshes smaller than the specified size.

+
+

Pointer to an interface, representing the source mesh.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh to be simplified.

+

Maximum number of vertices in the resulting mesh.

+

Option flags for the new meshes.

+

Number of meshes returned.

+

Buffer containing an array of interfaces for the new meshes. For a source mesh split into n meshes, ppMeshArrayOut is an array of n references.

+

Buffer containing an array of adjacency arrays (DWORDs) for the new meshes. See . This parameter is optional.

+

Buffer containing an array of face remap arrays (DWORDs) for the new meshes. See . This parameter is optional.

+

Buffer containing an array of vertex remap arrays for the new meshes. See . This parameter is optional.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

A common use of this function is to split a mesh with 32-bit indices (more than 65535 vertices) into more than one mesh, each of which has 16-bit indices.

The adjacency, vertex remap and face remap arrays are arrays are DWORDs where each array contains n DWORD references, followed by the DWORD data referenced by the references. For example, to obtain the face remap information for face 3 in mesh 2, the following code could be used, assuming the face remap data was returned in a variable named ppFaceRemapArrayOut.

 const DWORD **face_remaps =  static_cast<DWORD **>(ppFaceRemapArrayOut->GetBufferPointer());	
+            const DWORD remap = face_remaps[2][3];	
+            
+
+ + bb205465 + HRESULT D3DXSplitMesh([In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacencyIn,[In] const unsigned int MaxSize,[In] const unsigned int Options,[In] unsigned int* pMeshesOut,[In] ID3DXBuffer** ppMeshArrayOut,[In] ID3DXBuffer** ppAdjacencyArrayOut,[In] ID3DXBuffer** ppFaceRemapArrayOut,[In] ID3DXBuffer** ppVertRemapArrayOut) + D3DXSplitMesh +
+ + +

Computes the tangent vectors for the texture coordinates given in the texture stage. Provided to support legacy applications. Use for better results.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

If the mesh vertex declaration specifies tangent or binormal fields, will update any user-supplied tangent or binormal data. Alternatively, set TangentIndex to D3DX_DEFAULT to not update the user-supplied tangent data, or set BinormIndex to D3DX_DEFAULT to not update the user-supplied binormal data. TexStageIndex cannot be set to D3DX_DEFAULT.

depends on the mesh vertex declaration containing either the binormal field (BinormIndex), the tangent field (TangentIndex), or both. If both are missing, this function will fail.

This function simply calls with the following input parameters:

 ( Mesh, , TexStageIndex, ( BinormIndex == D3DX_DEFAULT ) ? D3DX_DEFAULT : , // provides backward function compatibility BinormIndex, ( TangentIndex == D3DX_DEFAULT ) ? D3DX_DEFAULT : , TangentIndex, D3DX_DEFAULT, // do not store normals 0, ( Wrap ?  : 0 ) |  | , pAdjacency, -1.01f, -0.01f, -1.01f, null, null);	
+            
+
+ + bb172743 + HRESULT D3DXComputeTangent([In] ID3DXMesh* Mesh,[In] unsigned int TexStage,[In] unsigned int TangentIndex,[In] unsigned int BinormIndex,[In] unsigned int Wrap,[In] const unsigned int* pAdjacency) + D3DXComputeTangent +
+ + +

Determines if a ray intersects with a mesh.

+
+

Pointer to an interface, representing the mesh to be tested.

+

Pointer to a structure, specifying the point where the ray begins.

+

Pointer to a structure, specifying the direction of the ray.

+

Pointer to a . If the ray intersects a triangular face on the mesh, this value will be set to TRUE. Otherwise, this value is set to .

+

Pointer to an index value of the face closest to the ray origin, if pHit is TRUE.

+

Pointer to a barycentric hit coordinate, U.

+

Pointer to a barycentric hit coordinate, V.

+

Pointer to a ray intersection parameter distance.

+

Pointer to an object, containing an array of D3DXINTERSECTINFO structures.

+

Pointer to a DWORD that contains the number of entries in the ppAllHits array.

+

If the function succeeds, the return value is . If the function fails, the return value can be: E_OUTOFMEMORY.

+ +

The function provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

+
+ + bb172882 + HRESULT D3DXIntersect([In] ID3DXBaseMesh* pMesh,[In] const D3DXVECTOR3* pRayPos,[In] const D3DXVECTOR3* pRayDir,[In] BOOL* pHit,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3DXBuffer** ppAllHits,[In] unsigned int* pCountOfHits) + D3DXIntersect +
+ + +

Pack mesh partitioning data into an atlas.

+
+

Pointer to an input mesh (see ) which contains the object geometry for calculating the atlas. At a minimum, the mesh must contain position data and 2D texture coordinates.

+

Texture width.

+

Texture height.

+

The minimum distance, in texels, between two charts on the atlas. The gutter is always scaled by the width; so, if a gutter of 2.5 is used on a 512x512 texture, then the minimum distance between two charts is 2.5 / 512.0 texels.

+

Zero-based texture coordinate index that identifies which set of texture coordinates to use.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. It should be derived from the ppPartitionResultAdjacency returned from . This value cannot be null, because Pack needs to know where charts were cut in the partition step in order to find the edges of each chart.

+

A reference to a callback function (see LPD3DXUVATLASCB) that is useful for monitoring progress.

+

Specify how often D3DX will call the callback; a reasonable default value is 0.0001f.

+

A void reference to be passed back to the callback function.

+

This options parameter is currently reserved.

+

A reference to an containing the array of the final face-partitioning. Each element contains one DWORD per face.

+

If the function succeeds, the return value is ; otherwise, the value is .

+ + bb205480 + HRESULT D3DXUVAtlasPack([In] ID3DXMesh* pMesh,[In] unsigned int uWidth,[In] unsigned int uHeight,[In] float fGutter,[In] unsigned int dwTextureIndex,[In] const unsigned int* pdwPartitionResultAdjacency,[In] __function__stdcall* pStatusCallback,[In] float fCallbackFrequency,[In] void* pUserContext,[In] unsigned int dwOptions,[In] ID3DXBuffer* pFacePartitioning) + D3DXUVAtlasPack +
+ + +

Loads a skin mesh from a DirectX .x file data object.

+
+

Pointer to an interface, representing the file data object to load.

+

Combination of one or more flags, from the D3DXMESH enumeration, specifying creation options for the mesh.

+

Pointer to an interface, the device object associated with the mesh.

+

Address of a reference to an interface. When this method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of structures.

+

Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See . For more information about accessing the buffer, see .

+

Pointer to the number of structures in the ppMaterials array, when the method returns.

+

Address of a reference to an interface, which represents the skinning information.

+

Address of a reference to an interface, which represents the loaded mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY

+ +

This method takes a reference to an internal object in the .x file, enabling you to load the frame hierarchy.

For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the structure.

The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of "Texture0" with an annotation called "Name." This will contain the string file name for the texture.

+
+ + bb172899 + HRESULT D3DXLoadSkinMeshFromXof([In] ID3DXFileData* pxofMesh,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pMatOut,[In] ID3DXSkinInfo** ppSkinInfo,[In] ID3DXMesh** ppMesh) + D3DXLoadSkinMeshFromXof +
+ + +

Creates a mesh object using a declarator.

+
+

Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved.

+

Number of vertices for the mesh. This parameter must be greater than 0.

+

Combination of one or more flags from the D3DXMESH enumeration, specifying options for the mesh.

+

Array of elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF).

+

Pointer to an interface, the device object to be associated with the mesh.

+

Address of a reference to an interface, representing the created mesh object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb172780 + HRESULT D3DXCreateMesh([In] unsigned int NumFaces,[In] unsigned int NumVertices,[In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppMesh) + D3DXCreateMesh +
+ + +

Creates an empty skin mesh object using a flexible vertex format (FVF) code.

+
+

Number of vertices for the skin mesh.

+

Combination of that describes the vertex format for the returned skin mesh.

+

Number of bones for the skin mesh.

+

Address of a reference to an interface, representing the created skin information object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Use SetBoneInfluence to populate the empty skin mesh object returned by this method.

+
+ + bb172794 + HRESULT D3DXCreateSkinInfoFVF([In] unsigned int NumVertices,[In] D3DFVF FVF,[In] unsigned int NumBones,[In] ID3DXSkinInfo** ppSkinInfo) + D3DXCreateSkinInfoFVF +
+ + +

Intersects the specified ray with the given mesh subset. This provides similar functionality to .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be the following value: E_OUTOFMEMORY.

+ +

The function provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

+
+ + bb172884 + HRESULT D3DXIntersectSubset([In] ID3DXBaseMesh* pMesh,[In] unsigned int AttribId,[In] const D3DXVECTOR3* pRayPos,[In] const D3DXVECTOR3* pRayDir,[In] BOOL* pHit,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3DXBuffer** ppAllHits,[In] unsigned int* pCountOfHits) + D3DXIntersectSubset +
+ + +

Returns the size of a vertex for a flexible vertex format (FVF).

+
+

FVF to be queried. A combination of .

+

The FVF vertex size, in bytes.

+ + bb172866 + unsigned int D3DXGetFVFVertexSize([In] D3DFVF FVF) + D3DXGetFVFVertexSize +
+ + +

Returns the number of elements in the vertex declaration.

+
+

A reference to the vertex declaration. See .

+

The number of elements in the vertex declaration.

+ + bb172863 + unsigned int D3DXGetDeclLength([In, Buffer] const D3DVERTEXELEMENT9* pDecl) + D3DXGetDeclLength +
+ + +

Cleans a mesh, preparing it for simplification.

+
+

Vertex operations to perform in preparation for mesh cleaning. See .

+

Pointer to an interface, representing the mesh to be cleaned.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh to be cleaned.

+

Address of a reference to an interface, representing the returned cleaned mesh. The same mesh is returned that was passed in if no cleaning was necessary.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the output mesh.

+

Returns a buffer containing a string of errors and warnings, which explain the problems found in the mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This function cleans a mesh using the cleaning method and options specified in the CleanType parameter. See the enumeration for a description of the available options.

+
+ + bb172719 + HRESULT D3DXCleanMesh([In] D3DXCLEANTYPE CleanType,[In] ID3DXMesh* pMeshIn,[In] const unsigned int* pAdjacencyIn,[In] ID3DXMesh** ppMeshOut,[In] unsigned int* pAdjacencyOut,[In] ID3DXBuffer** ppErrorsAndWarnings) + D3DXCleanMesh +
+ + +

Computes the intersection of a ray and a triangle.

+
+

Pointer to a structure, describing the first triangle vertex position.

+

Pointer to a structure, describing the second triangle vertex position.

+

Pointer to a structure, describing the third triangle vertex position.

+

Pointer to a structure, specifying the point where the ray begins.

+

Pointer to a structure, specifying the direction of the ray.

+

Barycentric hit coordinates, U.

+

Barycentric hit coordinates, V.

+

Ray-intersection parameter distance.

+

Returns TRUE if the ray intersects the area of the triangle. Otherwise, returns .

+ +

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

+
+ + bb204928 + BOOL D3DXIntersectTri([In] const D3DXVECTOR3* p0,[In] const D3DXVECTOR3* p1,[In] const D3DXVECTOR3* p2,[In] const D3DXVECTOR3* pRayPos,[In] const D3DXVECTOR3* pRayDir,[In] float* pU,[In] float* pV,[In] float* pDist) + D3DXIntersectTri +
+ + +

Converts the specified mesh subset into a single triangle strip.

+
+

Pointer to an interface, representing the mesh to convert to a strip.

+

Attribute ID of the mesh subset to convert to strips.

+

Combination of one or more flags from the D3DXMESH enumeration, specifying options for creating the index buffer. Cannot be . The index buffer will be created with 32-bit or 16-bit indices, depending on the format of the index buffer of the mesh specified by the MeshIn parameter.

+

Pointer to an interface, representing the index buffer containing the strip.

+

Number of indices in the buffer returned in the ppIndexBuffer parameter.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

Before running this function, call Optimize or , with the flag set.

+
+ + bb172749 + HRESULT D3DXConvertMeshSubsetToSingleStrip([In] ID3DXBaseMesh* MeshIn,[In] unsigned int AttribId,[In] unsigned int IBOptions,[In] IDirect3DIndexBuffer9** ppIndexBuffer,[In] unsigned int* pNumIndices) + D3DXConvertMeshSubsetToSingleStrip +
+ + +

Creates an empty skin mesh object using a declarator.

+
+

Number of vertices for the skin mesh.

+

Array of elements, describing the vertex format for the returned mesh.

+

Number of bones for the skin mesh.

+

Address of a reference to an interface, representing the created skin mesh object.

+

If the function succeeds, the return value is . If the function fails, the return value can be: E_OUTOFMEMORY.

+ +

Use SetBoneInfluence to populate the empty skin mesh object returned by this method.

+
+ + bb172792 + HRESULT D3DXCreateSkinInfo([In] unsigned int NumVertices,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] unsigned int NumBones,[In] ID3DXSkinInfo** ppSkinInfo) + D3DXCreateSkinInfo +
+ + +

Returns the size of a vertex from the vertex declaration.

+
+

A reference to the vertex declaration. See .

+

The zero-based stream index.

+

The vertex declaration size, in bytes.

+ + bb172864 + unsigned int D3DXGetDeclVertexSize([In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] unsigned int Stream) + D3DXGetDeclVertexSize +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT D3DXGeneratePMesh([In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,[In] const float* pVertexWeights,[In] unsigned int MinValue,[In] unsigned int Options,[In] ID3DXPMesh** ppPMesh) + D3DXGeneratePMesh + + + +

Tessellates a rectangular higher-order surface patch into a triangle mesh.

+
+

Vertex buffer containing the patch data.

+

Pointer to an array of four floating-point values that identify the number of segments into which each edge of the rectangle patch should be divided when tessellated. See .

+

Vertex declaration structure that defines the vertex data. See .

+

Describes a rectangular patch. See .

+

Pointer to the created mesh. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Use to get the number of output vertices and indices that the tessellation function needs.

+
+ + bb205470 + HRESULT D3DXTessellateRectPatch([In] IDirect3DVertexBuffer9* pVB,[In] const float* pNumSegs,[In] const D3DVERTEXELEMENT9* pdwInDecl,[In] const D3DRECTPATCH_INFO* pRectPatchInfo,[In] ID3DXMesh* pMesh) + D3DXTessellateRectPatch +
+ + +

Returns a flexible vertex format (FVF) code from a declarator.

+
+

Array of elements, describing the FVF code.

+

Pointer to a DWORD value, representing the returned combination of that describes the vertex format returned from the declarator.

+ +

This function will fail for any declarator that does not map directly to an FVF.

+
+ + bb172854 + HRESULT D3DXFVFFromDeclarator([In, Buffer] const D3DVERTEXELEMENT9* pDeclarator,[Out] D3DFVF* pFVF) + D3DXFVFFromDeclarator +
+ + +

Computes a coordinate-axis oriented bounding box.

+
+

Pointer to the first position.

+

Number of vertices.

+

Count or number of bytes between vertices.

+

Pointer to a structure, describing the returned lower-left corner of the bounding box.

+

Pointer to a structure, describing the returned upper-right corner of the bounding box.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: .

+ + bb204920 + HRESULT D3DXComputeBoundingBox([In] const D3DXVECTOR3* pFirstPosition,[In] unsigned int NumVertices,[In] unsigned int dwStride,[In] D3DXVECTOR3* pMin,[In] D3DXVECTOR3* pMax) + D3DXComputeBoundingBox +
+ + +

Creates a skin mesh from another mesh.

+
+

Pointer to an object, the mesh from which to create the skin mesh.

+

The length of the array attached to the BoneId. See .

+

Pointer to an array of bone combinations. See .

+

Address of a reference to an interface representing the created skin mesh object.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following: E_OUTOFMEMORY.

+ + bb172793 + HRESULT D3DXCreateSkinInfoFromBlendedMesh([In] ID3DXBaseMesh* pMesh,[In] unsigned int NumBones,[In] const D3DXBONECOMBINATION* pBoneCombinationTable,[In] ID3DXSkinInfo** ppSkinInfo) + D3DXCreateSkinInfoFromBlendedMesh +
+ + +

Performs tangent frame computations on a mesh. Tangent, binormal, and optionally normal vectors are generated. Singularities are handled as required by grouping edges and splitting vertices.

+
+

Pointer to an input mesh object.

+

Specifies the texture coordinate input semantic. If D3DX_DEFAULT, the function assumes that there are no texture coordinates, and the function will fail unless normal vector calculation is specified.

+

If a mesh has multiple texture coordinates, specifies the texture coordinate to use for the tangent frame computations. If zero, the mesh has only a single texture coordinate.

+

Specifies the output semantic for the type, typically , that describes where the partial derivative with respect to the U texture coordinate will be stored. If D3DX_DEFAULT, then this partial derivative will not be stored.

+

Specifies the semantic index at which to store the partial derivative with respect to the U texture coordinate.

+

Specifies the type, typically , that describes where the partial derivative with respect to the V texture coordinate will be stored. If D3DX_DEFAULT, then this partial derivative will not be stored.

+

Specifies the semantic index at which to store the partial derivative with respect to the V texture coordinate.

+

Specifies the output normal semantic, typically , that describes where the normal vector at each vertex will be stored. If D3DX_DEFAULT, then this normal vector will not be stored.

+

Specifies the semantic index at which to store the normal vector at each vertex.

+

Combination of one or more flags that specify tangent frame computation options. If null, the following options will be specified:

Description Flag Value
Weight the normal vector length by the angle, in radians, subtended by the two edges leaving the vertex.& !( | )
Compute orthogonal Cartesian coordinates from texture coordinates (u, v). See Remarks.& !( | )
Textures are not wrapped in either u or v directions& !( )
Partial derivatives with respect to texture coordinates are normalized.& !( )
Vertices are ordered in a counterclockwise direction around each triangle.& !( )
Use per-vertex normal vectors already present in the input mesh.& !( )

?

If is not set, the input mesh is cloned. The original mesh must therefore have sufficient space to store the computed normal vector and partial derivative data.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. The number of bytes in this array must be at least 3 * GetNumFaces * sizeof(DWORD).

+

Specifies the maximum cosine of the angle at which two partial derivatives are deemed to be incompatible with each other. If the dot product of the direction of the two partial derivatives in adjacent triangles is less than or equal to this threshold, then the vertices shared between these triangles will be split.

+

Specifies the maximum magnitude of a partial derivative at which a vertex will be deemed singular. As multiple triangles are incident on a point that have nearby tangent frames, but altogether cancel each other out (such as at the top of a sphere), the magnitude of the partial derivative will decrease. If the magnitude is less than or equal to this threshold, then the vertex will be split for every triangle that contains it.

+

Similar to fPartialEdgeThreshold, specifies the maximum cosine of the angle between two normals that is a threshold beyond which vertices shared between triangles will be split. If the dot product of the two normals is less than the threshold, the shared vertices will be split, forming a hard edge between neighboring triangles. If the dot product is more than the threshold, neighboring triangles will have their normals interpolated.

+

Address of a reference to an output mesh object that receives the computed tangent, binormal, and normal vector data.

+

Address of a reference to an output buffer object that receives a mapping of new vertices computed by this method to the original vertices. The buffer is an array of DWORDs, with the array size defined as the number of vertices in ppMeshOut.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

A simplified version of this function is available as .

The computed normal vector at each vertex is always normalized to have unit length.

The most robust solution for computing orthogonal Cartesian coordinates is to not set flags and , so that orthogonal coordinates are computed from both texture coordinates u and v. However, in this case, if either u or v is zero, then the function will compute orthogonal coordinates using or , respectively.

+
+ + bb172745 + HRESULT D3DXComputeTangentFrameEx([In] ID3DXMesh* pMesh,[In] unsigned int dwTextureInSemantic,[In] unsigned int dwTextureInIndex,[In] unsigned int dwUPartialOutSemantic,[In] unsigned int dwUPartialOutIndex,[In] unsigned int dwVPartialOutSemantic,[In] unsigned int dwVPartialOutIndex,[In] unsigned int dwNormalOutSemantic,[In] unsigned int dwNormalOutIndex,[In] unsigned int dwOptions,[In] const unsigned int* pdwAdjacency,[In] float fPartialEdgeThreshold,[In] float fSingularPointThreshold,[In] float fNormalEdgeThreshold,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppVertexMapping) + D3DXComputeTangentFrameEx +
+ + +

Determines if a ray intersects the volume of a sphere's bounding box.

+
+

Pointer to a structure, specifying the center coordinate of the sphere.

+

Radius of the sphere.

+

Pointer to a structure, specifying the origin coordinate of the ray.

+

Pointer to a structure, specifying the direction of the ray. This vector should not be (0,0,0) but does not need to be normalized.

+

Returns TRUE if the ray intersects the volume of the sphere's bounding box. Otherwise, returns .

+ +

determines if the ray intersects the volume of the sphere's bounding box, not just the surface of the sphere.

+
+ + bb204995 + BOOL D3DXSphereBoundProbe([In] const D3DXVECTOR3* pCenter,[In] float Radius,[In] const D3DXVECTOR3* pRayPosition,[In] const D3DXVECTOR3* pRayDirection) + D3DXSphereBoundProbe +
+ + +

Create a UV atlas for a mesh.

+
+

Pointer to an input mesh (see ) which contains the object geometry for calculating the atlas. At a minimum, the mesh must contain position data and 2D texture coordinates.

+

The maximum number of charts to partition the mesh into. See remarks about the partitioning modes. Use 0 to tell D3DX that the atlas should be parameterized based on stretch.

+

The amount of stretching allowed. 0 means no stretching is allowed, 1 means any amount of stretching can be used.

+

Texture width.

+

Texture height.

+

The minimum distance, in texels, between two charts on the atlas. The gutter is always scaled by the width; so, if a gutter of 2.5 is used on a 512x512 texture, then the minimum distance between two charts is 2.5 / 512.0 texels.

+

Zero-based texture coordinate index that identifies which set of texture coordinates to use.

+

A reference to an array of adjacency data. with 3 DWORDs per face, indicating which triangles are adjacent to each other (see ).

+

An array with 3 DWORDS per face. Each face indicates if an edge is false or not. A non-false edge is indicated by -1, a false edge is indicated by any other value. This enables the parameterization of a mesh of quads where the edges down the middle of each quad will not be cut.

+

A reference to an array of integrated metric tensors that describes how to stretch a triangle (see IntegratedMetricTensor).

+

A reference to a callback function (see LPD3DXUVATLASCB) that is useful for monitoring progress.

+

Specify how often D3DX will call the callback; a reasonable default value is 0.0001f.

+

Pointer to a user-defined value which is passed to the callback function; typically used by an application to pass a reference to a data structure that provides context information for the callback function.

+

Specify the quality of the charts generated. See D3DXUVATLAS.

+

Pointer to the created mesh with the atlas (see ).

+

A reference to an array of the final face-partitioning data. Each element contains one DWORD per face (see ).

+

A reference to an array of remapped vertices. Each array element identifies the original vertex that each final vertex came from (if the vertex was split during remapping). Each array element contains one DWORD per vertex.

+

A reference to the maximum stretch value generated by the atlas algorithm. The range is between 0.0 and 1.0.

+

A reference to the number of charts created by the atlas algorithm. If dwMaxChartNumber is too low, this parameter will return the minimum number of charts required to create an atlas.

+

If the function succeeds, the return value is ; otherwise, the value is .

+ +

can partition mesh geometry two ways:

  • Based on the number of charts
  • Based on the maximum allowed stretch. If the maximum allowed stretch is 0, each triangle will likely be in its own chart.
+
+ + bb205479 + HRESULT D3DXUVAtlasCreate([In] ID3DXMesh* pMesh,[In] unsigned int uMaxChartNumber,[In] float fMaxStretch,[In] unsigned int uWidth,[In] unsigned int uHeight,[In] float fGutter,[In] unsigned int dwTextureIndex,[In] const unsigned int* pdwAdjacency,[In] const unsigned int* pdwFalseEdgeAdjacency,[In] const float* pfIMTArray,[In] __function__stdcall* pStatusCallback,[In] float fCallbackFrequency,[In] void* pUserContext,[In] unsigned int dwOptions,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppFacePartitioning,[In] ID3DXBuffer** ppVertexRemapArray,[In] float* pfMaxStretchOut,[In] unsigned int* puNumChartsOut) + D3DXUVAtlasCreate +
+ + +

Create a UV atlas for a mesh.

+
+

Pointer to an input mesh (see ) that contains the object geometry for calculating the atlas. At a minimum, the mesh must contain position data and 2D texture coordinates.

+

The maximum number of charts to partition the mesh into. See remarks about the partitioning modes. Use 0 to tell D3DX that the atlas should be parameterized based on stretch.

+

The amount of stretching allowed. 0 means no stretching is allowed, 1 means any amount of stretching can be used.

+

Zero-based texture coordinate index that identifies which set of texture coordinates to use.

+

A reference to an array of adjacency data with 3 DWORDs per face, indicating which triangles are adjacent to each other (see ).

+

An array with 3 DWORDS per face. Each face indicates if an edge is false or not. A non-false edge is indicated by -1, a false edge is indicated by any other value. This enables the parameterization of a mesh of quads where the edges down the middle of each quad will not be cut.

+

A reference to an array of integrated metric tensors that describes how to stretch a triangle (see IntegratedMetricTensor).

+

A reference to a callback function (see LPD3DXUVATLASCB) that is useful for monitoring progress.

+

Specify how often D3DX will call the callback; a reasonable default value is 0.0001f.

+

Pointer to a user-defined value that is passed to the callback function; typically used by an application to pass a reference to a data structure that provides context information for the callback function.

+

Specify the quality of the charts generated by combining one or more D3DXUVATLAS flags.

+

Pointer to the created mesh with the atlas (see ).

+

A reference to an array of the final face-partitioning data. Each element contains one DWORD per face (see ).

+

A reference to an array of remapped vertices. Each array element identifies the original vertex each final vertex came from (if the vertex was split during remapping). Each array element contains one DWORD per vertex.

+

Address of a reference to an interface. This buffer will contain an array of three DWORDs per face that specify the three neighbors for each face in the output mesh. This parameter must not be null, because the subsequent call to () requires it.

+

A reference to the maximum stretch value generated by the atlas algorithm. The range is between 0.0 and 1.0.

+

A reference to the number of charts created by the atlas algorithm. If dwMaxChartNumber is too low, this parameter will return the minimum number of charts required to create an atlas.

+

If the function succeeds, the return value is ; otherwise, the value is .

+ +

is similar to , except that does not performing the final packing step.

+
+ + bb205481 + HRESULT D3DXUVAtlasPartition([In] ID3DXMesh* pMesh,[In] unsigned int uMaxChartNumber,[In] float fMaxStretch,[In] unsigned int dwTextureIndex,[In] const unsigned int* pdwAdjacency,[In] const unsigned int* pdwFalseEdgeAdjacency,[In] const float* pfIMTArray,[In] __function__stdcall* pStatusCallback,[In] float fCallbackFrequency,[In] void* pUserContext,[In] unsigned int dwOptions,[In] ID3DXMesh** ppMeshOut,[In] ID3DXBuffer** ppFacePartitioning,[In] ID3DXBuffer** ppVertexRemapArray,[In] ID3DXBuffer** ppPartitionResultAdjacency,[In] float* pfMaxStretchOut,[In] unsigned int* puNumChartsOut) + D3DXUVAtlasPartition +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT D3DXCreatePMeshFromStream([In] IStream* pStream,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXPMesh** ppPMesh) + D3DXCreatePMeshFromStream + + + +

Calculates per-triangle IMT's from a texture mapped onto a mesh, to be used optionally as input to the D3DX UVAtlas Functions.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is ; otherwise, the value is .

+ +

Given a texture that maps over the surface of the mesh, the algorithm computes the IMT for each face. This will cause triangles containing lower-frequency signal data to take up less space in the final texture atlas when parameterized with the UVAtlas functions. The texture is assumed to be interpolated over the mesh bilinearly.

+
+ + bb172740 + HRESULT D3DXComputeIMTFromTexture([In] ID3DXMesh* pMesh,[In] IDirect3DTexture9* pTexture,[In] unsigned int dwTextureIndex,[In] unsigned int dwOptions,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData) + D3DXComputeIMTFromTexture +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT D3DXCreateSPMesh([In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,[In] const float* pVertexWeights,[In] ID3DXSPMesh** ppSMesh) + D3DXCreateSPMesh + + + +

Concatenates a group of meshes into one common mesh. This method can optionally apply a matrix transformation to each input mesh and its texture coordinates.

+
+

Array of input mesh references (see ). The number of elements in the array is NumMeshes.

+

Number of input meshes to concatenate.

+

Mesh creation options; this is a combination of one or more D3DXMESH flags. The mesh creation options are equivalent to the options parameter required by .

+

Optional array of geometry transforms. The number of elements in the array is NumMeshes; each element is a transformation matrix (see ). May be null.

+

Optional array of texture transforms. The number of elements in the array is NumMeshes; each element is a transformation matrix (see ). This parameter may be null.

+

Optional reference to a vertex declaration (see ). This parameter may be null.

+

Pointer to a device that is used to create the new mesh.

+

Address of a reference to the mesh created (see ).

+

If the function succeeds, the return value is . If the function fails, the return value can be one of these: , E_OUTOFMEMORY.

+ +

If no vertex declaration is given as part of the Options mesh creation parameter, the method will generate a union of all of the vertex declarations of the submeshes, promoting channels and types if necessary. The method will create an attribute table from attribute tables of the input meshes. To ensure creation of an attribute table, call Optimize with Flags set to and (see D3DXMESHOPT).

+
+ + bb172746 + HRESULT D3DXConcatenateMeshes([In] ID3DXMesh** ppMeshes,[In] unsigned int NumMeshes,[In] unsigned int Options,[In] const D3DXMATRIX* pGeomXForms,[In] const D3DXMATRIX* pTextureXForms,[In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppMeshOut) + D3DXConcatenateMeshes +
+ + +

Determines whether a ray intersects the volume of a box's bounding box.

+
+

Pointer to a , describing the lower-left corner of the bounding box. See Remarks.

+

Pointer to a structure, describing the upper-right corner of the bounding box. See Remarks.

+

Pointer to a structure, specifying the origin coordinate of the ray.

+

Pointer to a structure, specifying the direction of the ray. This vector should not be (0,0,0) but does not need to be normalized.

+

Returns TRUE if the ray intersects the volume of the box's bounding box. Otherwise, returns .

+ +

determines if the ray intersects the volume of the box's bounding box, not just the surface of the box.

The values passed to are xmin, xmax, ymin, ymax, zmin, and zmax. Thus, the following defines the corners of the bounding box.

 xmax, ymax, zmax	
+            xmax, ymax, zmin	
+            xmax, ymin, zmax	
+            xmax, ymin, zmin	
+            xmin, ymax, zmax	
+            xmin, ymax, zmin	
+            xmin, ymin, zmax	
+            xmin, ymin, zmin	
+            

The depth of the bounding box in the z direction is zmax - zmin, in the y direction is ymax - ymin, and in the x direction is xmax - xmin. For example, with the following minimum and maximum vectors, min (-1, -1, -1) and max (1, 1, 1), the bounding box is defined in the following manner.

 1,  1,  1 1,  1, -1 1, -1,  1 1, -1, -1	
+            -1,  1,  1	
+            -1,  1, -1	
+            -1, -1,  1	
+            -1, -1, -l	
+            
+
+ + bb204916 + BOOL D3DXBoxBoundProbe([In] const D3DXVECTOR3* pMin,[In] const D3DXVECTOR3* pMax,[In] const D3DXVECTOR3* pRayPosition,[In] const D3DXVECTOR3* pRayDirection) + D3DXBoxBoundProbe +
+ + +

Loads a mesh from a resource.

+
+

Handle to the module where the resource is located, or null for the module associated with the image the operating system used to create the current process. See remarks.

+

Pointer to a string that specifies the resource to create the mesh from. See remarks.

+

Pointer to a string that specifies the resource type. See remarks.

+

Combination of one or more flags from the D3DXMESH enumeration that specify creation options for the mesh.

+

Pointer to an interface, the device object associated with the mesh.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh.

+

Address of a reference to an interface. When this method returns, this parameter is filled with an array of structures, containing information saved in the DirectX file.

+

Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See . For more information about accessing the buffer, see .

+

Pointer to the number of structures in the ppMaterials array, when the method returns.

+

Address of a reference to an interface, representing the loaded mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

See FindResource to find out more about the Module, Name and Type parameters.

All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.

For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the structure.

The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of "Texture0" with an annotation called "Name." This will contain the string file name for the texture.

+
+ + bb172893 + HRESULT D3DXLoadMeshFromXResource([In] HINSTANCE Module,[In] const char* Name,[In] const char* Type,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh) + D3DXLoadMeshFromXResource +
+ + +

Generates a simplified mesh using the provided weights that come as close as possible to the given MinValue.

+
+

Pointer to an interface, representing the source mesh.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh to be simplified.

+

Pointer to a structure, containing the weight for each vertex component. If this parameter is set to null, a default structure is used. See Remarks.

+

Pointer to an array of vertex weights. If this parameter is set to null, all vertex weights are set to 1.0.

+

Number of vertices or faces, depending on the flag set in the Options parameter, by which to simplify the source mesh.

+

Specifies simplification options for the mesh. One of the flags in D3DXMESHSIMP can be set.

+

Address of a reference to an interface, representing the returned simplification mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function generates a mesh that has MinValue vertices or faces.

If the simplification process cannot reduce the mesh to MinValue, the call still succeeds because MinValue is a desired minimum, not an absolute minimum.

If pVertexAttributeWeights is set to null, the following values are assigned to the default structure.

  AttributeWeights; AttributeWeights.Position  = 1.0;	
+            AttributeWeights.Boundary =  1.0;	
+            AttributeWeights.Normal   =  1.0;	
+            AttributeWeights.Diffuse  =  0.0;	
+            AttributeWeights.Specular =  0.0;	
+            AttributeWeights.Tex[8]   =  {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};	
+            

This default structure is what most applications should use because it considers only geometric and normal adjustment. Only in special cases will the other member fields need to be modified.

+
+ + bb205463 + HRESULT D3DXSimplifyMesh([In] ID3DXMesh* pMesh,[In] const unsigned int* pAdjacency,[In] const D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,[In] const float* pVertexWeights,[In] unsigned int MinValue,[In] unsigned int Options,[In] ID3DXMesh** ppMesh) + D3DXSimplifyMesh +
+ + +

Creates a mesh object using a flexible vertex format (FVF) code.

+
+

Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the max DWORD value, typically 232 - 1, because the last index is reserved.

+

Number of vertices for the mesh. This parameter must be greater than 0.

+

Combination of one or more flags from the D3DXMESH enumeration, specifying creation options for the mesh.

+

Combination of that describes the vertex format for the returned mesh. This function does not support .

+

Pointer to an interface, the device object to be associated with the mesh.

+

Address of a reference to an interface, representing the created mesh object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb172781 + HRESULT D3DXCreateMeshFVF([In] unsigned int NumFaces,[In] unsigned int NumVertices,[In] unsigned int Options,[In] D3DFVF FVF,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppMesh) + D3DXCreateMeshFVF +
+ + +

Calculate per-triangle IMT's from from per-vertex data. This function allows you to calculate the IMT based off of any value in a mesh (color, normal, etc).

+
+

A reference to an input mesh (see ) which contains the object geometry for calculating the IMT.

+

A reference to an array of per-vertex data from which IMT will be computed. The array size is uSignalStride * v, where v is the number of vertices in the mesh.

+

The number of floats per vertex.

+

The number of bytes per vertex in the array. This must be a multiple of sizeof(float)

+

Texture wrap options. This is a combination of one or more FLAGS.

+

A reference to a callback function to monitor IMT computation progress.

+

A reference to a user-defined variable which is passed to the status callback function. Typically used by an application to pass a reference to a data structure that provides context information for the callback function.

+

A reference to the buffer (see ) containing the returned IMT array. This array can be provided as input to the D3DX UVAtlas Functions to prioritize texture-space allocation in the texture parameterization.

+

If the function succeeds, the return value is ; otherwise, the value is .

+ + bb172738 + HRESULT D3DXComputeIMTFromPerVertexSignal([In] ID3DXMesh* pMesh,[In] const float* pfVertexSignal,[In] unsigned int uSignalDimension,[In] unsigned int uSignalStride,[In] unsigned int dwOptions,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData) + D3DXComputeIMTFromPerVertexSignal +
+ + +

Generates an optimized vertex remapping for a triangle list. This function is commonly used after applying the face remapping generated by .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

By default, a mesh uses 16 bit indices when it is created unless the application specifies otherwise. To check whether an existing mesh uses 16-bit or 32-bit indices, call and check for the flag.

+
+ + bb205377 + HRESULT D3DXOptimizeVertices([In] const void* pbIndices,[In] unsigned int cFaces,[In] unsigned int cVertices,[In] BOOL b32BitIndices,[In, Buffer] int* pVertexRemap) + D3DXOptimizeVertices +
+ + +

Loads a mesh from a DirectX .x file.

+
+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Combination of one or more flags from the D3DXMESH enumeration, which specifies creation options for the mesh.

+

Pointer to an interface, the device object associated with the mesh.

+

Pointer to a buffer that contains adjacency data. The adjacency data contains an array of three DWORDs per face that specify the three neighbors for each face in the mesh. For more information about accessing the buffer, see .

+

Pointer to a buffer containing materials data. The buffer contains an array of structures, containing information from the DirectX file. For more information about accessing the buffer, see .

+

Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See . For more information about accessing the buffer, see .

+

Pointer to the number of structures in the ppMaterials array, when the method returns.

+

Address of a reference to an interface, representing the loaded mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXLoadMeshFromXA because ANSI strings are being used.

All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.

For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the structure.

The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of "Texture0" with an annotation called "Name." This will contain the string file name for the texture.

+
+ + bb172890 + HRESULT D3DXLoadMeshFromXof([In] ID3DXFileData* pxofMesh,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh) + D3DXLoadMeshFromXof +
+ + +

Creates a mesh from a control-patch mesh.

+
+

Patch information structure. For more information, see .

+

Number of patches.

+

Number of control vertices in the patch.

+

Unused. Reserved for later use.

+

Array of elements, describing the vertex format for the returned mesh.

+

Pointer the device that creates the patch mesh. See .

+

Pointer to the object that is created.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This method takes an input patch mesh and converts it to a tessellated mesh. Patch meshes use 16-bit index buffers. Therefore, indices to LockIndexBuffer are 16 bits.

+
+ + bb172783 + HRESULT D3DXCreatePatchMesh([In] const D3DXPATCHINFO* pInfo,[In] unsigned int dwNumPatches,[In] unsigned int dwNumVertices,[In] unsigned int dwOptions,[In, Buffer] const D3DVERTEXELEMENT9* pDecl,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXPatchMesh** pPatchMesh) + D3DXCreatePatchMesh +
+ + +

Gets the size of the rectangle patch.

+
+

Number of segments per edge to tessellate.

+

Pointer to a DWORD that contains the number of triangles in the patch.

+

Pointer to a DWORD that contains the number of vertices in the patch.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb205423 + HRESULT D3DXRectPatchSize([In] const float* pfNumSegs,[Out] unsigned int* pdwTriangles,[Out] unsigned int* pdwVertices) + D3DXRectPatchSize +
+ + +

Tessellates a triangular higher-order surface patch into a triangle mesh.

+
+

Vertex buffer containing the patch data.

+

Pointer to an array of three floating-point values that identify the number of segments into which each edge of the triangle patch should be divided when tessellated. See .

+

Vertex declaration structure that defines the vertex data. See .

+

Describes a triangle patch. See .

+

Pointer to the created mesh. See .

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Use to get the number of output vertices and indices that the tessellation function needs.

+
+ + bb205471 + HRESULT D3DXTessellateTriPatch([In] IDirect3DVertexBuffer9* pVB,[In] const float* pNumSegs,[In] const D3DVERTEXELEMENT9* pInDecl,[In] const D3DTRIPATCH_INFO* pTriPatchInfo,[In] ID3DXMesh* pMesh) + D3DXTessellateTriPatch +
+ + +

Computes a bounding sphere for the mesh.

+
+

Pointer to first position.

+

Number of vertices.

+

Number of bytes between position vectors. Use GetNumBytesPerVertex, , or to get the vertex stride.

+

structure, defining the coordinate center of the returned bounding sphere.

+

Radius of the returned bounding sphere.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: .

+ + bb172736 + HRESULT D3DXComputeBoundingSphere([In] const D3DXVECTOR3* pFirstPosition,[In] unsigned int NumVertices,[In] unsigned int dwStride,[In] D3DXVECTOR3* pCenter,[In] float* pRadius) + D3DXComputeBoundingSphere +
+ + +

Loads a mesh from a DirectX .x file.

+
+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Combination of one or more flags from the D3DXMESH enumeration, which specifies creation options for the mesh.

+

Pointer to an interface, the device object associated with the mesh.

+

Pointer to a buffer that contains adjacency data. The adjacency data contains an array of three DWORDs per face that specify the three neighbors for each face in the mesh. For more information about accessing the buffer, see .

+

Pointer to a buffer containing materials data. The buffer contains an array of structures, containing information from the DirectX file. For more information about accessing the buffer, see .

+

Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See . For more information about accessing the buffer, see .

+

Pointer to the number of structures in the ppMaterials array, when the method returns.

+

Address of a reference to an interface, representing the loaded mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXLoadMeshFromXA because ANSI strings are being used.

All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.

For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the structure.

The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of "Texture0" with an annotation called "Name." This will contain the string file name for the texture.

+
+ + bb172890 + HRESULT D3DXLoadMeshFromXW([In] const wchar_t* pFilename,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh) + D3DXLoadMeshFromXW +
+ + +

Loads a mesh from memory.

+
+

Pointer to the memory buffer which contains the mesh data.

+

Size of the file in memory, in bytes.

+

Combination of one or more flags from the D3DXMESH enumeration, specifying creation options for the mesh.

+

Pointer to an interface, the device object associated with the mesh.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh.

+

Address of a reference to an interface. When this method returns, this parameter is filled with an array of structures, containing information saved in the DirectX file.

+

Pointer to a buffer containing an array of effect instances, one per attribute group in the returned mesh. An effect instance is a particular instance of state information used to initialize an effect. See . For more information about accessing the buffer, see .

+

Pointer to the number of structures in the ppMaterials array, when the method returns.

+

Address of a reference to an interface, representing the loaded mesh.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

All the meshes in the file will be collapsed into one output mesh. If the file contains a frame hierarchy, all the transformations will be applied to the mesh.

For mesh files that do not contain effect instance information, default effect instances will be generated from the material information in the .x file. A default effect instance will have default values that correspond to the members of the structure.

The default texture name is also filled in, but is handled differently. The name will be Texture0@Name, which corresponds to an effect variable by the name of "Texture0" with an annotation called "Name." This will contain the string file name for the texture.

+
+ + bb172891 + HRESULT D3DXLoadMeshFromXInMemory([In] const void* Memory,[In] unsigned int SizeOfMemory,[In] unsigned int Options,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXBuffer** ppAdjacency,[In] ID3DXBuffer** ppMaterials,[In] ID3DXBuffer** ppEffectInstances,[In] unsigned int* pNumMaterials,[In] ID3DXMesh** ppMesh) + D3DXLoadMeshFromXInMemory +
+ + +

Convert the specified mesh subset into a series of strips.

+
+

Pointer to an interface, representing the mesh to convert to a strip.

+

Attribute ID of the mesh subset to convert to strips.

+

Combination of one or more flags from the D3DXMESH enumeration, specifying options for creating the index buffer. Cannot be . The index buffer will be created with 32-bit or 16-bit indices depending on the format of the index buffer of the mesh specified by the MeshIn parameter.

+

Pointer to an interface, representing index buffer containing the strip.

+

Number of indices in the buffer returned in the ppIndexBuffer parameter.

+

Buffer containing an array of one DWORD per strip, which specifies the number of triangles in the that strip.

+

Number of individual strips in the index buffer and corresponding strip length array.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

Before running this function, call Optimize or , with the flag set.

+
+ + bb172750 + HRESULT D3DXConvertMeshSubsetToStrips([In] ID3DXBaseMesh* MeshIn,[In] unsigned int AttribId,[In] unsigned int IBOptions,[In] IDirect3DIndexBuffer9** ppIndexBuffer,[In] unsigned int* pNumIndices,[In] ID3DXBuffer** ppStripLengths,[In] unsigned int* pNumStrips) + D3DXConvertMeshSubsetToStrips +
+ + +

Calculate per-triangle IMT's from per-texel data. This function is similar to , but it uses a float array to pass in the data, and it can calculate higher dimensional values than 4.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is ; otherwise, the value is .

+ + bb172737 + HRESULT D3DXComputeIMTFromPerTexelSignal([In] ID3DXMesh* pMesh,[In] unsigned int dwTextureIndex,[In] float* pfTexelSignal,[In] unsigned int uWidth,[In] unsigned int uHeight,[In] unsigned int uSignalDimension,[In] unsigned int uComponents,[In] unsigned int dwOptions,[In] __function__stdcall* pStatusCallback,[In] void* pUserContext,[In] ID3DXBuffer** ppIMTData) + D3DXComputeIMTFromPerTexelSignal +
+ + +

Gets the size of the triangle patch.

+
+

Number of segments per edge to tessellate.

+

Pointer to a DWORD that contains the number of triangles in the patch.

+

Pointer to a DWORD that contains the number of vertices in the triangle patch.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb205476 + HRESULT D3DXTriPatchSize([In] const float* pfNumSegs,[Out] unsigned int* pdwTriangles,[Out] unsigned int* pdwVertices) + D3DXTriPatchSize +
+ + +

Computes unit normals for each vertex in a mesh. Provided to support legacy applications. Use for better results.

+
+ No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The input mesh must have the flag specified in its flexible vertex format (FVF).

A normal for a vertex is generated by averaging the normals of all faces that share that vertex.

If adjacency is provided, replicated vertices are ignored and "smoothed" over. If adjacency is not provided, replicated vertices will have normals averaged in from only the faces explicitly referencing them.

This function simply calls with the following input parameters:

 ( pMesh, D3DX_DEFAULT, 0, D3DX_DEFAULT, 0, D3DX_DEFAULT, 0, , 0,  | , pAdjacency, -1.01f, -0.01f, -1.01f, null, null);	
+            
+
+ + bb172742 + HRESULT D3DXComputeNormals([In] ID3DXBaseMesh* pMesh,[In] const unsigned int* pAdjacency) + D3DXComputeNormals +
+ + +

Disassemble a shader.

Note??Instead of using this legacy function, we recommend that you use the API.

+
+ No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172820 + HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly) + D3DXDisassembleShader +
+ + +

Preprocesses a shader without performing compilation. This resolves all #defines and #includes, providing a self-contained shader for subsequent compilation.

Note??Instead of using this legacy function, we recommend that you use the API.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb205398 + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + D3DXPreprocessShader +
+ + +

Compile a shader file.

Note??Instead of using this legacy function, we recommend that you compile offline by using the Fxc.exe command-line compiler or use the API.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_NOTIMPL, E_OUTOFMEMORY.

E_NOTIMPL is returned if you're using 1.1 shaders (vs_1_1and ps_1_1).

+ + bb172732 + HRESULT D3DXCompileShaderFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + D3DXCompileShaderFromFileW +
+ + +

Creates a texture shader object from the compiled shader.

+
+

Pointer to the function DWORD stream.

+

Returns an object which can be used to procedurally fill the contents of a texture using the functions.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172808 + HRESULT D3DXCreateTextureShader([In] const unsigned int* pFunction,[In] ID3DXTextureShader** ppTextureShader) + D3DXCreateTextureShader +
+ + +

Get the semantics for all shader output elements.

+
+

Pointer to the shader function DWORD stream.

+

Pointer to an array of structures. The function will fill this array with the semantics for each output element referenced by the shader. This array is assumed to contain at least MAXD3DDECLLENGTH elements. However, calling with pSemantics = null will return the number of elements needed for pCount.

+

Returns the number of elements in pSemantics.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172873 + HRESULT D3DXGetShaderOutputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount) + D3DXGetShaderOutputSemantics +
+ + +

Gets the semantics for the shader inputs. Use this method to determine the input vertex format.

+
+

Pointer to the shader function DWORD stream.

+

Pointer to an array of structures. The function will fill this array with the semantics for each input element referenced by the shader. This array is assumed to contain at least MAXD3DDECLLENGTH elements. However, calling with pSemantics = null will return the number of elements needed for pCount.

+

Returns the number of elements in pSemantics.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

Use to return a list of input semantics required by the shader. This is the way to find out what the input vertex format is for a high-level shader language (HLSL) shader. If the shader has additional inputs that your vertex declaration is missing, you could create an extra vertex stream that has a stride of 0 that has the missing components with default values. For instance, this technique could be used to provide default vertex color for models that do not specify it.

+
+ + bb172872 + HRESULT D3DXGetShaderInputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount) + D3DXGetShaderInputSemantics +
+ + +

Returns the name of the highest high-level shader language (HLSL) profile supported by a given device.

+
+

Pointer to the device. See .

+

The HLSL profile name.

If the device does not support pixel shaders then the function returns null.

+ +

A shader profile specifies the assembly shader version to use and the capabilities available to the HLSL compiler when compiling a shader. The following table lists the pixel shader profiles that are supported.

Shader ProfileDescription
ps_1_1Compile to ps_1_1 version.
ps_1_2Compile to ps_1_2 version.
ps_1_3Compile to ps_1_3 version.
ps_1_4Compile to ps_1_4 version.
ps_2_0Compile to ps_2_0 version.
ps_2_aSame as the ps_2_0 profile, with the following additional capabilities available for the compiler to target:
  • Number of Temporary Registers (r#) is greater than or equal to 22.
  • Arbitrary source swizzle.
  • Gradient instructions: dsx, dsy.
  • Predication.
  • No dependent texture read limit.
  • No limit for the number of texture instructions.
ps_2_bSame as the ps_2_0 profile, with the following additional capabilities available for the compiler to target:
  • Number of Temporary Registers (r#) is greater than or equal to 32.
  • No limit for the number of texture instructions.
ps_3_0Compile to ps_3_0 version.

?

For more information about the differences between shader versions, see Pixel Shader Differences.

+
+ + bb172870 + const char* D3DXGetPixelShaderProfile([In] IDirect3DDevice9* pDevice) + D3DXGetPixelShaderProfile +
+ + +

Searches through a shader for a particular comment. The comment is identified by a four-character code (FOURCC) in the first DWORD of the comment.

+
+

Pointer to the shader function DWORD stream.

+

FOURCC code that identifies the comment block. See FourCC Formats.

+

Returns a reference to the comment data (not including the comment token and FOURCC code). This value can be null.

+

Returns the size of the comment data in bytes. This value can be null.

+

If the function succeeds, the return value is . If the comment is not found, and no other error has occurred, S_FALSE is returned.

+ + bb172838 + HRESULT D3DXFindShaderComment([In] const void* pFunction,[In] unsigned int FourCC,[Out] const void** ppData,[Out] unsigned int* pSizeInBytes) + D3DXFindShaderComment +
+ + +

Assemble a shader.

+
+

Handle to a module containing the effect description. If this parameter is null, the current module will be used.

+

Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

An optional null terminated array of structures. This value may be null.

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See Flags for details.

+

Returns a buffer containing the created shader. This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.

+

Returns a buffer containing a listing of errors and warnings that were encountered during the compile. These are the same messages the debugger displays when running in debug mode. This value may be null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXAssembleShaderFromResourceA because ANSI strings are being used.

+
+ + bb172709 + HRESULT D3DXAssembleShaderFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs) + D3DXAssembleShaderFromResourceW +
+ + +

Assemble a shader.

+
+

Pointer to a memory buffer that contains the shader data.

+

Length of the effect data, in bytes.

+

An optional null terminated array of structures. This value may be null.

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See Flags for details.

+

Returns a buffer containing the created shader. This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.

+

Returns a buffer containing a listing of errors and warnings that were encountered during the compile. These are the same messages the debugger displays when running in debug mode. This value may be null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172707 + HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs) + D3DXAssembleShader +
+ + +

Compile a shader file.

Note??Instead of using this legacy function, we recommend that you compile offline by using the Fxc.exe command-line compiler or use the API.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172731 + HRESULT D3DXCompileShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + D3DXCompileShader +
+ + +

Get the sampler names referenced in a shader.

+
+

Pointer to the shader function DWORD stream.

+

Pointer to an array of LPCSTRs. The function will fill this array with references to the sampler names contained within pFunction. The maximum array size is the maximum number of sampler registers (16 for vs_3_0 and ps_3_0).

To find the number of samplers used, check pCount after calling with pSamplers = null.

+

Returns the number of samplers referenced by the shader.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172874 + HRESULT D3DXGetShaderSamplers([In] const void* pFunction,[In, Out, Buffer] const void** pSamplers,[InOut] unsigned int* pCount) + D3DXGetShaderSamplers +
+ + +

Gets the shader-constant table embedded inside a shader.

+
+

Pointer to the function DWORD stream.

+

Returns the constant table interface (see ) that manages the constant table.

+ +

A constant table is generated by and embedded in the shader body. If you need additional virtual address space, see .

+
+ + bb172871 + HRESULT D3DXGetShaderConstantTable([In] const void* pFunction,[Out] ID3DXConstantTable** ppConstantTable) + D3DXGetShaderConstantTable +
+ + +

Assemble a shader.

+
+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

An optional null terminated array of structures. This value may be null.

+

Optional interface reference, , to use for handling #include directives. If this value is null, #includes will either be honored when compiling from a file or will cause an error when compiled from a resource or memory.

+

Compile options identified by various flags. The Direct3D 10 HLSL compiler is now the default. See Flags for details.

+

Returns a buffer containing the created shader. This buffer contains the compiled shader code, as well as any embedded debug and symbol table information.

+

Returns a buffer containing a listing of errors and warnings that were encountered during the compile. These are the same messages the debugger displays when running in debug mode. This value may be null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXAssembleShaderFromFileA because ANSI strings are being used.

+
+ + bb172708 + HRESULT D3DXAssembleShaderFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs) + D3DXAssembleShaderFromFileW +
+ + +

Gets the shader-constant table embedded inside a shader.

+
+

Pointer to the function DWORD stream.

+

Use the D3DXCONSTTABLE_LARGEADDRESSAWARE flag to access up to 4 GB of virtual address space (instead of the default of 2 GB). If you do not need the additional virtual address space, use .

+

Returns the constant table interface (see ) that manages the constant table.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

A constant table is generated by and embedded in the shader body.

+
+ + bb943959 + HRESULT D3DXGetShaderConstantTableEx([In] const void* pFunction,[In] unsigned int Flags,[In] ID3DXConstantTable** ppConstantTable) + D3DXGetShaderConstantTableEx +
+ + +

Returns the name of the highest high-level shader language (HLSL) profile supported by a given device.

+
+

Pointer to the device. See .

+

The HLSL profile name.

If the device does not support vertex shaders then the function returns null.

+ +

A shader profile specifies the assembly shader version to use and the capabilities available to the HLSL compiler when compiling a shader. The following table lists the vertex shader profiles that are supported.

Shader ProfileDescription
vs_1_1Compile to vs_1_1 version.
vs_2_0Compile to vs_2_0 version.
vs_2_aSame as the vs_2_0 profile, with the following additional capabilities available for the compiler to target:
  • Number of Temporary Registers (r#) is greater than or equal to 13.
  • Dynamic flow control instruction.
  • Predication.
vs_3_0Compile to vs_3_0 version.

?

For more information about the differences between shader versions, see Vertex Shader Differences.

+
+ + bb172877 + const char* D3DXGetVertexShaderProfile([In] IDirect3DDevice9* pDevice) + D3DXGetVertexShaderProfile +
+ + +

Preprocesses a shader resource without performing compilation. This resolves all #defines and #includes, providing a self-contained shader for subsequent compilation.

Note??Instead of using this legacy function, we recommend that you use the API.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb205400 + HRESULT D3DXPreprocessShaderFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + D3DXPreprocessShaderFromResourceW +
+ + +

Compile a shader file.

Note??Instead of using this legacy function, we recommend that you compile offline by using the Fxc.exe command-line compiler or use the API.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb172733 + HRESULT D3DXCompileShaderFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + D3DXCompileShaderFromResourceW +
+ + +

Preprocesses a shader file without performing compilation. This resolves all #defines and #includes, providing a self-contained shader for subsequent compilation.

Note??Instead of using this legacy function, we recommend that you use the API.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ + bb205399 + HRESULT D3DXPreprocessShaderFromFileW([In] const wchar_t* pSrcFile,[In, Buffer, Optional] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + D3DXPreprocessShaderFromFileW +
+ + +

Returns the size of the shader byte code, in bytes.

+
+

Pointer to the function DWORD stream.

+

Returns the size of the shader byte code, in bytes.

+ + bb172875 + unsigned int D3DXGetShaderSize([In] const void* pFunction) + D3DXGetShaderSize +
+ + +

Returns the shader version of the compiled shader.

+
+

Pointer to the function DWORD stream.

+

Returns the shader version of the given shader, or zero if the shader function is null.

+ + bb172876 + unsigned int D3DXGetShaderVersion([In] const void* pFunction) + D3DXGetShaderVersion +
+ + +

Uses a left-handed coordinate system to create a mesh containing a cylinder.

+
+

Pointer to an interface, representing the device associated with the created cylinder mesh.

+

Radius at the negative Z end. Value should be greater than or equal to 0.0f.

+

Radius at the positive Z end. Value should be greater than or equal to 0.0f.

+

Length of the cylinder along the z-axis.

+

Number of slices about the main axis.

+

Number of stacks along the main axis.

+

Address of a reference to the output shape, an interface.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. null can be specified.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The created cylinder is centered at the origin, and its axis is aligned with the z-axis.

This function creates a mesh with the creation option and | flexible vertex format (FVF).

+
+ + bb172762 + HRESULT D3DXCreateCylinder([In] IDirect3DDevice9* pDevice,[In] float Radius1,[In] float Radius2,[In] float Length,[In] unsigned int Slices,[In] unsigned int Stacks,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency) + D3DXCreateCylinder +
+ + +

Uses a left-handed coordinate system to create a mesh containing a torus.

+
+

Pointer to an interface, representing the device associated with the created torus mesh.

+

Inner-radius of the torus. Value should be greater than or equal to 0.0f.

+

Outer-radius of the torus. Value should be greater than or equal to 0.0f.

+

Number of sides in a cross-section. Value must be greater than or equal to 3.

+

Number of rings making up the torus. Value must be greater than or equal to 3.

+

Address of a reference to the output shape, an interface.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. null can be specified.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The created torus is centered at the origin, and its axis is aligned with the z-axis. The inner radius of the torus is the radius of the cross-section (the minor radius), and the outer radius of the torus is the radius of the central hole.

This function returns a mesh that can be used later for drawing or manipulation by the application.

This function creates a mesh with the creation option and | flexible vertex format (FVF).

+
+ + bb172809 + HRESULT D3DXCreateTorus([In] IDirect3DDevice9* pDevice,[In] float InnerRadius,[In] float OuterRadius,[In] unsigned int Sides,[In] unsigned int Rings,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency) + D3DXCreateTorus +
+ + +

Uses a left-handed coordinate system to create a mesh containing a sphere.

+
+

Pointer to an interface, representing the device associated with the created sphere mesh.

+

Radius of the sphere. This value should be greater than or equal to 0.0f.

+

Number of slices about the main axis.

+

Number of stacks along the main axis.

+

Address of a reference to the output shape, an interface.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. null can be specified.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The created sphere is centered at the origin, and its axis is aligned with the z-axis.

This function creates a mesh with the creation option and | flexible vertex format (FVF).

+
+ + bb172795 + HRESULT D3DXCreateSphere([In] IDirect3DDevice9* pDevice,[In] float Radius,[In] unsigned int Slices,[In] unsigned int Stacks,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency) + D3DXCreateSphere +
+ + +

Uses a left-handed coordinate system to create a mesh containing a teapot.

+
+

Pointer to an interface, representing the device associated with the created teapot mesh.

+

Address of a reference to the output shape, an interface.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. null can be specified.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function creates a mesh with the creation option and | flexible vertex format (FVF).

+
+ + bb172798 + HRESULT D3DXCreateTeapot([In] IDirect3DDevice9* pDevice,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency) + D3DXCreateTeapot +
+ + +

Uses a left-handed coordinate system to create a mesh containing an axis-aligned box.

+
+

Pointer to an interface, representing the device associated with the created box mesh.

+

Width of the box, along the x-axis.

+

Height of the box, along the y-axis.

+

Depth of the box, along the z-axis.

+

Address of a reference to the output shape, an interface.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. null can be specified.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The created box is centered at the origin.

This function creates a mesh with the creation option and | flexible vertex format (FVF).

+
+ + bb172752 + HRESULT D3DXCreateBox([In] IDirect3DDevice9* pDevice,[In] float Width,[In] float Height,[In] float Depth,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency) + D3DXCreateBox +
+ + +

Uses a left-handed coordinate system to create a mesh containing an + n-sided polygon.

+
+

Pointer to an interface, representing the device associated with the created polygon mesh.

+

Length of each side.

+

Number of sides for the polygon. Value must be greater than or equal to 3.

+

Address of a reference to the output shape, an interface.

+

Address of a reference to an interface. When the method returns, this parameter is filled with an array of three DWORDs per face that specify the three neighbors for each face in the mesh. null can be specified.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The created polygon is centered at the origin.

This function creates a mesh with the creation option and | flexible vertex format (FVF).

+
+ + bb172785 + HRESULT D3DXCreatePolygon([In] IDirect3DDevice9* pDevice,[In] float Length,[In] unsigned int Sides,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency) + D3DXCreatePolygon +
+ + +

Creates a mesh containing the specified text, using the font associated with the device context.

+
+

Pointer to the device that created the mesh.

+

Device context, containing the font for output. The font selected by the device context must be a TrueType font.

+

Pointer to a string that specifies the text to generate. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Maximum chordal deviation from TrueType font outlines.

+

Amount to extrude text in the negative z-direction.

+

Pointer to the returned mesh.

+

Pointer to a buffer containing adjacency information. May be null.

+

Pointer to an array of GLYPHMETRICSFLOAT structures that contain the glyph metric data. Each element contains information about the position and orientation of the corresponding glyph in the string. The number of elements in the array should be equal to the number of characters in the string. Note that the origin in each structure is not relative to the entire string, but rather is relative to that character cell. To compute the entire bounding box, add the increment for each glyph while traversing the string. If you are not concerned with the glyph sizes, set this parameter to null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateTextA because ANSI strings are being used.

This function creates a mesh with the creation option and | flexible vertex format (FVF).

+
+ + bb172799 + HRESULT D3DXCreateTextW([In] IDirect3DDevice9* pDevice,[In] HDC hDC,[In] const wchar_t* pText,[In] float Deviation,[In] float Extrusion,[In] ID3DXMesh** ppMesh,[In] ID3DXBuffer** ppAdjacency,[In] LPGLYPHMETRICSFLOAT pGlyphMetrics) + D3DXCreateTextW +
+ + +

Retrieves information about a given image file in memory.

+
+

VOID reference to the source file in memory.

+

Size of file in memory, in bytes. .

+

Pointer to a structure to be filled with the description of the data in the source file.

+ + bb172868 + HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo) + D3DXGetImageInfoFromFileInMemory +
+ + +

Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.

+
+

Pointer to an object, representing the texture to be filled.

+

Pointer to a texture shader object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following:D3DERR_NOTAVAILABLE, .

+ +

The texture target must be an HLSL function that takes contains the following semantics:

  • One input parameter must use a POSITION semantic.
  • One input parameter must use a PSIZE semantic.
  • The function must return a parameter that uses the COLOR semantic.

The input parameters can be in any order. For an example, see

+
+ + bb172836 + HRESULT D3DXFillVolumeTextureTX([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] ID3DXTextureShader* pTextureShader) + D3DXFillVolumeTextureTX +
+ + +

Creates an empty cube texture, adjusting the calling parameters as needed.

+
+

Pointer to an interface, representing the device to be associated with the texture.

+

Width and height of the cube texture, in pixels. For example, if the cube texture is an 8-pixel by 8-pixel cube, the value for this parameter should be 8.

+

Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.

+

0, , or . Setting this flag to indicates that the surface is to be used as a render target. The resource can then be passed to the pNewRenderTarget parameter of the SetRenderTarget method. If is specified, the application should check that the device supports this operation by calling CheckDeviceFormat. For more information about using dynamic textures, see Using Dynamic Textures.

+

Member of the enumerated type, describing the requested pixel format for the cube texture. The returned cube texture might have a different format from that specified by Format. Applications should check the format of the returned cube texture.

+

Member of the enumerated type, describing the memory class into which the cube texture should be placed.

+

Address of a reference to an interface, representing the created cube texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , E_OUTOFMEMORY.

+ +

Cube textures differ from other surfaces in that they are collections of surfaces.

Internally, uses to adjust the calling parameters. Therefore, calls to will often succeed where calls to CreateCubeTexture would fail.

+
+ + bb172755 + HRESULT D3DXCreateCubeTexture([In] IDirect3DDevice9* pDevice,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] IDirect3DCubeTexture9** ppCubeTexture) + D3DXCreateCubeTexture +
+ + +

Creates a volume texture from a file. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.

+
+ + bb172814 + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + D3DXCreateVolumeTextureFromFileInMemoryEx +
+ + +

Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.

+
+

Pointer to an object, representing the texture to be filled.

+

Pointer to a texture shader object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , .

+ +

The texture target must be an HLSL function that takes contains the following semantics:

  • One input parameter must use a POSITION semantic.
  • One input parameter must use a PSIZE semantic.
  • The function must return a parameter that uses the COLOR semantic.

The following is an example of such an HLSL function:

 float4 TextureGradientFill( float2 vTexCoord : POSITION,  float2 vTexelSize : PSIZE) : COLOR  { float r,g, b, xSq,ySq, a; xSq = 2.f*vTexCoord.x-1.f; xSq *= xSq; ySq = 2.f*vTexCoord.y-1.f; ySq *= ySq; a = sqrt(xSq+ySq); if (a > 1.0f) { a = 1.0f-(a-1.0f); } else if (a < 0.2f) { a = 0.2f; } r = 1-vTexCoord.x; g = 1-vTexCoord.y; b = vTexCoord.x; return float4(r, g, b, a); };	
+            

Note that the input parameters can be in any order, but both input semantics must be represented.

+
+ + bb172834 + HRESULT D3DXFillTextureTX([In] IDirect3DTexture9* pTexture,[In] ID3DXTextureShader* pTextureShader) + D3DXFillTextureTX +
+ + +

Checks cube-texture-creation parameters.

+
+

Pointer to an interface, representing the device to be associated with the cube texture.

+

Pointer to the requested width and height in pixels, or null. Returns the corrected size.

+

Pointer to the number of requested mipmap levels, or null. Returns the corrected number of mipmap levels.

+

0 or . Setting this flag to indicates that the surface is to be used as a render target. The resource can then be passed to the pNewRenderTarget parameter of the SetRenderTarget method. If is specified, the application should check that the device supports this operation by calling CheckDeviceFormat.

+

Pointer to a member of the enumerated type. Specifies the desired pixel format, or null. Returns the corrected format.

+

Member of the enumerated type, describing the memory class into which the texture should be placed.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , .

+ +

If parameters to this function are invalid, this function returns corrected parameters.

Cube textures differ from other surfaces in that they are collections of surfaces. To call SetRenderTarget with a cube texture, you must select an individual face using GetCubeMapSurface and pass the resulting surface to SetRenderTarget.

+
+ + bb172715 + HRESULT D3DXCheckCubeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pSize,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool) + D3DXCheckCubeTextureRequirements +
+ + +

Creates a texture from a file.

+
+

Pointer to an interface, representing the device to be associated with the texture.

+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Address of a reference to an interface, representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateTextureFromFileA because ANSI strings are being used.

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

The function is equivalent to (pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppTexture).

Mipmapped textures automatically have each level filled with the loaded texture.

When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, the images need to be loaded manually.

Note that a resource created with this function will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

For the best performance when using :

  1. Doing image scaling and format conversion at load time can be slow. Store images in the format and resolution they will be used. If the target hardware requires power of two dimensions, create and store images using power of two dimensions.
  2. Consider using DirectDraw surface (DDS) files. Because DDS files can be used to represent any Direct3D 9 texture format, they are very easy for D3DX to read. Also, they can store mipmaps, so any mipmap-generation algorithms can be used to author the images.
+
+ + bb172801 + HRESULT D3DXCreateTextureFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] IDirect3DTexture9** ppTexture) + D3DXCreateTextureFromFileW +
+ + +

Loads a surface from a file.

+
+

Pointer to an interface. Specifies the destination surface, which receives the image.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination rectangle. Set this parameter to null to specify the entire surface.

+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Pointer to a structure. Specifies the source rectangle. Set this parameter to null to specify the entire image.

+

Combination of one or more controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys Thus, for opaque black, the value would be equal to 0xFF000000.

+

Pointer to a structure to be filled with a description of the data in the source image file, or null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXLoadSurfaceFromFileA because ANSI strings are being used.

This function handles conversion to and from compressed texture formats and supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Writing to a non-level-zero surface will not cause the dirty rectangle to be updated. If is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call AddDirtyRect on the surface.

+
+ + bb172900 + HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + D3DXLoadSurfaceFromFileW +
+ + +

Uses a user-provided function to fill each texel of each mip level of a given cube texture.

+
+

Pointer to an interface, representing the filled texture.

+

Pointer to a user-provided evaluator function, which will be used to compute the value of each texel. The function follows the prototype of LPD3DXFILL3D.

+

Pointer to an arbitrary block of user-defined data. This reference will be passed to the function provided in pFunction.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: .

+ +

Here is an example that creates a function called ColorCubeFill, which relies on .

 // Define a function that matches the prototype of LPD3DXFILL3D	
+            VOID WINAPI ColorCubeFill (* pOut, const * pTexCoord, 	
+            const * pTexelSize, LPVOID pData)	
+            { *pOut = (pTexCoord->x, pTexCoord->y, pTexCoord->z, 0.0f);	
+            } // Fill the texture using 	
+            if (FAILED (hr =  (m_pTexture, ColorCubeFill, null)))	
+            { return hr;	
+            }	
+            
+
+ + bb172831 + HRESULT D3DXFillCubeTexture([In] IDirect3DCubeTexture9* pCubeTexture,[In] __function__stdcall* pFunction,[In] void* pData) + D3DXFillCubeTexture +
+ + +

Creates an empty volume texture, adjusting the calling parameters as needed.

+
+

Pointer to an interface, representing the device to be associated with the volume texture.

+

Width in pixels. This value must be nonzero. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Height in pixels. This value must be nonzero. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Depth in pixels. This value must be nonzero. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.

+

0 or . For more information about using dynamic textures, see Using Dynamic Textures.

+

Member of the enumerated type, describing the requested pixel format for the volume texture. The returned volume texture might have a different format from that specified by Format. Applications should check the format of the returned volume texture.

+

Member of the enumerated type, describing the memory class into which the volume texture should be placed.

+

Address of a reference to an interface, representing the created volume texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , E_OUTOFMEMORY .

+ +

Internally, uses to adjust the calling parameters. Therefore, calls to will often succeed where calls to CreateVolumeTexture would fail.

+
+ + bb172810 + HRESULT D3DXCreateVolumeTexture([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + D3DXCreateVolumeTexture +
+ + +

Loads a volume from a file.

+
+

Pointer to an interface. Specifies the destination volume.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination box. Set this parameter to null to specify the entire volume.

+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Pointer to a structure. Specifies the source box. Set this parameter to null to specify the entire volume.

+

Combination of one or more , controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

Pointer to a structure to be filled with a description of the data in the source image file, or null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXLoadVolumeFromFileA because ANSI strings are being used.

This function handles conversion to and from compressed texture formats and supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call on the volume texture.

+
+ + bb172905 + HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const wchar_t* pSrcFile,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + D3DXLoadVolumeFromFileW +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT D3DXLoadSurfaceFromResourceW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + D3DXLoadSurfaceFromResourceW + + + +

Creates a texture from a file. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateTextureFromFileExA because ANSI strings are being used.

Use to determine if your device can support the texture given the current state.

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Mipmapped textures automatically have each level filled with the loaded texture. When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, then the images need to be loaded manually.

For the best performance when using :

  1. Doing image scaling and format conversion at load time can be slow. Store images in the format and resolution they will be used. If the target hardware requires power of 2 dimensions, then create and store images using power of 2 dimensions.
  2. For mipmap image creation at load time, filter using . A box filter is much faster than other filter types such as .
  3. Consider using DDS files. Since DDS files can be used to represent any Direct3D 9 texture format, they are very easy for D3DX to read. Also, they can store mipmaps, so any mipmap-generation algorithms can be used to author the images.

When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.

+
+ + bb172802 + HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + D3DXCreateTextureFromFileExW +
+ + +

Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.

+
+

Pointer to an interface, representing the destination texture.

+

Pointer to an interface, representing the source height-map texture.

+

Pointer to a type that contains the source palette of 256 colors or null.

+

One or more flags that control generation of normal maps.

+

One flag specifying the source of height information.

+

Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following value: .

+ +

This method computes the normal by using the central difference with a kernel size of 3x3. The central differencing denominator used is 2.0. RGB channels in the destination contain biased (x,y,z) components of the normal.

+
+ + bb172741 + HRESULT D3DXComputeNormalMap([In] IDirect3DTexture9* pTexture,[In] IDirect3DTexture9* pSrcTexture,[Out, Buffer] const PALETTEENTRY* pSrcPalette,[In] unsigned int Flags,[In] unsigned int Channel,[In] float Amplitude) + D3DXComputeNormalMap +
+ + +

Checks volume-texture-creation parameters.

+
+

Pointer to an interface, representing the device to be associated with the volume texture.

+

Pointer to the requested width in pixels, or null. Returns the corrected size.

+

Pointer to the requested height in pixels, or null. Returns the corrected size.

+

Pointer to the requested depth in pixels, or null. Returns the corrected size.

+

Pointer to the number of requested mipmap levels, or null. Returns the corrected number of mipmap levels.

+

Currently not used, set to 0.

+

Pointer to a member of the enumerated type. Specifies the desired pixel format, or null. Returns the corrected format.

+

Member of the enumerated type, describing the memory class into which the volume texture should be placed.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , .

+ +

If parameters to this function are invalid, this function returns corrected parameters.

+
+ + bb172718 + HRESULT D3DXCheckVolumeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pDepth,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool) + D3DXCheckVolumeTextureRequirements +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + D3DXLoadSurfaceFromFileInMemory + + + +

Creates a texture from a file in memory.

+
+

Pointer to an interface representing the device to be associated with the texture.

+

Pointer to the file in memory from which to create the texture.

+

Size in bytes of the file in memory.

+

Address of a reference to an interface representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The function is equivalent to (pDevice, pSrcData, SrcDataSize, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppTexture).

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Note that a resource created with this function when called from a object will be placed in the memory class denoted by . When this method is called from a object the resource will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

+
+ + bb172803 + HRESULT D3DXCreateTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DTexture9** ppTexture) + D3DXCreateTextureFromFileInMemory +
+ + +

Creates a cube texture from a resource specified by a string. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateCubeTextureFromResourceExA because ANSI strings are being used.

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Cube textures differ from other surfaces in that they are collections of surfaces. To call SetRenderTarget with a cube texture, you must select an individual face using GetCubeMapSurface and pass the resulting surface to SetRenderTarget.

uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.

+
+ + bb172761 + HRESULT D3DXCreateCubeTextureFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo,[In] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + D3DXCreateCubeTextureFromResourceExW +
+ + +

Creates a volume texture from a file in memory.

+
+

Pointer to an interface, representing the device to be associated with the volume texture.

+

Pointer to the file in memory from which to create the volume texture.

+

Size of the file in memory, in bytes.

+

Address of a reference to an interface, representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

The function is equivalent to (pDevice, pSrcFile, SrcData, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppVolumeTexture).

Note that a resource created with this function when called from a object will be placed in the memory class denoted by . When this method is called from a object the resource will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

+
+ + bb172813 + HRESULT D3DXCreateVolumeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + D3DXCreateVolumeTextureFromFileInMemory +
+ + +

Loads a volume from another volume.

+
+

Pointer to an interface. Specifies the destination volume, which receives the image.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination box. Set this parameter to null to specify the entire volume.

+

A Pointer to an interface. Specifies the source volume.

+

Pointer to a structure, the source palette of 256 colors or null.

+

Pointer to a structure. Specifies the source box. Set this parameter to null to specify the entire volume.

+

A combination of one or more , controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call on the surface.

+
+ + bb172909 + HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey) + D3DXLoadVolumeFromVolume +
+ + +

Saves a texture to a file.

+
+

Pointer to a string that specifies the file name of the destination image. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

specifying the file format to use when saving. This function supports saving to all formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).

+

Pointer to interface, containing the texture to be saved.

+

Pointer to a structure containing a palette of 256 colors. This parameter can be null.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXSaveTextureToFileA because ANSI strings are being used.

This function handles conversion to and from compressed texture formats.

If the volume is nondynamic (because of a usage parameter set to 0 at the creation) and located in video memory (the memory pool set to ), will fail because D3DX cannot lock nondynamic volumes located in video memory.

+
+ + bb205433 + HRESULT D3DXSaveTextureToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette) + D3DXSaveTextureToFileW +
+ + +

Creates a texture from a file.

+
+

Pointer to an interface, representing the device to be associated with the texture.

+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Address of a reference to an interface, representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateTextureFromFileA because ANSI strings are being used.

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

The function is equivalent to (pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppTexture).

Mipmapped textures automatically have each level filled with the loaded texture.

When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, the images need to be loaded manually.

Note that a resource created with this function will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

For the best performance when using :

  1. Doing image scaling and format conversion at load time can be slow. Store images in the format and resolution they will be used. If the target hardware requires power of two dimensions, create and store images using power of two dimensions.
  2. Consider using DirectDraw surface (DDS) files. Because DDS files can be used to represent any Direct3D 9 texture format, they are very easy for D3DX to read. Also, they can store mipmaps, so any mipmap-generation algorithms can be used to author the images.
+
+ + bb172801 + HRESULT D3DXCreateCubeTextureFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] IDirect3DCubeTexture9** ppCubeTexture) + D3DXCreateCubeTextureFromFileW +
+ + +

Creates a cube texture from a file in memory. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Cube textures differ from other surfaces in that they are collections of surfaces. To call SetRenderTarget with a cube texture, you must select an individual face using GetCubeMapSurface and pass the resulting surface to SetRenderTarget .

This method is designed to be used for loading image files stored as RT_RCDATA, which is an application-defined resource (raw data). Otherwise this method will fail.

For details on , see the Platform SDK. Note that as of DirectX 8.0, the peFlags member of the structure does not function as documented in the Platform SDK. The peFlags member is now the alpha channel for 8-bit palettized formats.

uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format

When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.

+
+ + bb172759 + HRESULT D3DXCreateCubeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + D3DXCreateCubeTextureFromFileInMemoryEx +
+ + +

Creates a texture from a resource. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateTextureFromResourceExA because ANSI strings are being used.

The resource being loaded must be of type RT_BITMAP or RT_RCDATA. Resource type RT_RCDATA is used to load formats other than bitmaps (such as .tga, .jpg, and .dds).

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

+
+ + bb172806 + HRESULT D3DXCreateTextureFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo,[In] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + D3DXCreateTextureFromResourceExW +
+ + +

Retrieves information about a given image file.

+
+

File name of image to retrieve information about. If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.

+

Pointer to a structure to be filled with the description of the data in the source file.

+ +

This function supports both Unicode and ANSI strings.

+
+ + bb172867 + HRESULT D3DXGetImageInfoFromFileW([In] const wchar_t* pSrcFile,[Out] D3DXIMAGE_INFO* pSrcInfo) + D3DXGetImageInfoFromFileW +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT D3DXFilterTexture([In] IDirect3DBaseTexture9* pBaseTexture,[In, Buffer] const PALETTEENTRY* pPalette,[In] unsigned int SrcLevel,[In] D3DX_FILTER Filter) + D3DXFilterTexture + + + +

Loads a surface from memory.

+
+

Pointer to an interface. Specifies the destination surface, which receives the image.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination rectangle. Set this parameter to null to specify the entire surface.

+

Pointer to the upper left corner of the source image in memory.

+

Member of the enumerated type, the pixel format of the source image.

+

Pitch of source image, in bytes. For DXT formats, this number should represent the width of one row of cells, in bytes.

+

Pointer to a structure, the source palette of 256 colors or null.

+

Pointer to a structure. Specifies the dimensions of the source image in memory. This value cannot be null.

+

Combination of one or more controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA.

+ +

This function handles conversion to and from compressed texture formats.

Writing to a non-level-zero surface will not cause the dirty rectangle to be updated. If is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call AddDirtyRect on the surface.

+
+ + bb172902 + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + D3DXLoadSurfaceFromMemory +
+ + +

Saves a texture to an image file.

+
+

specifying the file format to use when saving. This function supports saving to all formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).

+

Pointer to interface containing the image to be saved.

+

Pointer to a structure containing a palette of 256 colors. This parameter can be null.

+

Address of a reference to an that will store the image.

+ +

This function handles conversion to and from compressed texture formats.

+
+ + bb205434 + HRESULT D3DXSaveTextureToFileInMemory([Out] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DBaseTexture9* pSrcTexture,[In, Buffer] const PALETTEENTRY* pSrcPalette) + D3DXSaveTextureToFileInMemory +
+ + +

Checks texture-creation parameters.

+
+

Pointer to an interface, representing the device to be associated with the texture.

+

Pointer to the requested width in pixels, or null. Returns the corrected size.

+

Pointer to the requested height in pixels, or null. Returns the corrected size.

+

Pointer to number of requested mipmap levels, or null. Returns the corrected number of mipmap levels.

+

0 or . Setting this flag to indicates that the surface is to be used as a render target. The resource can then be passed to the pNewRenderTarget parameter of the SetRenderTarget method. If is specified, the application should check that the device supports this operation by calling CheckDeviceFormat.

+

Pointer to a member of the enumerated type. Specifies the desired pixel format, or null. Returns the corrected format.

+

Member of the enumerated type, describing the memory class into which the texture should be placed.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , .

+ +

If parameters to this function are invalid, this function returns corrected parameters.

This function uses the following heuristics when comparing the requested requirements against available formats:

  • Do not choose a format that has fewer channels.
  • Avoid FOURCC And 24-bit formats unless explicitly requested.
  • Try not to add new channels.
  • Try not to change the number of bits per channel.
  • Try to avoid converting between types of formats. For instance, avoid converting an ARGB format to a depth format.
+
+ + bb172716 + HRESULT D3DXCheckTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool) + D3DXCheckTextureRequirements +
+ + +

Saves a volume to a file on disk.

+
+

Pointer to a string that specifies the file name of the destination image. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

specifying the file format to use when saving. This function supports saving to all formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).

+

Pointer to interface containing the image to be saved.

+

Pointer to a structure containing a palette of 256 colors. This parameter can be null.

+

Pointer to a structure. Specifies the source box. Set this parameter to null to specify the entire volume.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to >D3DXSaveVolumeToFileA because ANSI strings are being used.

This function handles conversion to and from compressed texture formats.

If the volume is nondynamic (because of a usage parameter set to 0 at the creation) and located in video memory (the memory pool set to ), will fail because D3DX cannot lock nondynamic volumes located in video memory.

+
+ + bb205435 + HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox) + D3DXSaveVolumeToFileW +
+ + +

Loads a volume from a resource.

+
+

Pointer to an interface. Specifies the destination volume.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination box. Set this parameter to null to specify the entire volume.

+

Handle to the module where the resource is located, or null for module associated with the image the operating system used to create the current process.

+

Pointer to a string that specifies the file name of the source image. If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.

+

Pointer to a structure. Specifies the source box. Set this parameter to null to specify the entire volume.

+

Combination of one or more , controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

Pointer to a structure to be filled with a description of the data in the source image file, or null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA.

+ +

The resource being loaded must be a bitmap resource(RT_BITMAP).

This function handles conversion to and from compressed texture formats.

Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call on the volume texture.

This function supports both Unicode and ANSI strings.

+
+ + bb172908 + HRESULT D3DXLoadVolumeFromResourceW([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + D3DXLoadVolumeFromResourceW +
+ + +

Creates a volume texture from a resource specified by a string. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateVolumeTextureFromResourceExA because ANSI strings are being used.

The resource being loaded must be an application-defined resource (RT_RCDATA).

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

+
+ + bb172816 + HRESULT D3DXCreateVolumeTextureFromResourceExW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo,[In] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + D3DXCreateVolumeTextureFromResourceExW +
+ + +

Creates a cube texture from a resource.

+
+

Pointer to an interface, representing the device to be associated with the cube texture.

+

Handle to the module where the resource is located, or null for the module associated with the image the operating system used to create the current process.

+

Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Address of a reference to an interface, representing the created cube texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateCubeTextureFromResourceA because ANSI strings are being used.

The function is equivalent to (pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppCubeTexture).

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Note that a resource created with this function when called from a object will be placed in the memory class denoted by . When this method is called from a object the resource will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.

+
+ + bb172760 + HRESULT D3DXCreateCubeTextureFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] IDirect3DCubeTexture9** ppCubeTexture) + D3DXCreateCubeTextureFromResourceW +
+ + +

Saves a surface to a file.

+
+

Pointer to a string that specifies the file name of the destination image. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

specifying the file format to use when saving. This function supports saving to all formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).

+

Pointer to interface, containing the image to be saved.

+

Pointer to a structure containing a palette of 256 colors. This parameter can be null.

+

Pointer to a structure. Specifies the source rectangle. Set this parameter to null to specify the entire image.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXSaveSurfaceToFileA because ANSI strings are being used.

This function handles conversion to and from compressed texture formats.

+
+ + bb205431 + HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + D3DXSaveSurfaceToFileW +
+ + +

Creates a cube texture from a file in memory.

+
+

Pointer to an interface, representing the device to be associated with the cube texture.

+

Pointer to the file in memory from which to create the cubemap. See Remarks.

+

Size of the file in memory, in bytes.

+

Address of a reference to an interface, representing the created cube texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

The function is equivalent to (pDevice, pSrcData, SrcDataSize, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppCubeTexture).

Note that a resource created with this function when called from a object will be placed in the memory class denoted by . When this method is called from a object the resource will be placed in the memory class denoted by .

This method is designed to be used for loading image files stored as RT_RCDATA, which is an application-defined resource (raw data). Otherwise this method will fail.

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.

+
+ + bb172758 + HRESULT D3DXCreateCubeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DCubeTexture9** ppCubeTexture) + D3DXCreateCubeTextureFromFileInMemory +
+ + +

Creates a cube texture from a file. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateCubeTextureFromFileExA because ANSI strings are being used.

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Cube textures differ from other surfaces in that they are collections of surfaces. To call SetRenderTarget with a cube texture, you must select an individual face using GetCubeMapSurface and pass the resulting surface to SetRenderTarget.

uses the DirectDraw surface (DDS) file format. The DirectX Texture Editor (Dxtex.exe) enables you to generate a cube map from other file formats and save it in the DDS file format.

When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.

+
+ + bb172757 + HRESULT D3DXCreateCubeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DCubeTexture9** ppCubeTexture) + D3DXCreateCubeTextureFromFileExW +
+ + +

Retrieves information about a given image in a resource.

+
+

Module where the resource is loaded. Set this parameter to null to specify the module associated with the image that the operating system used to create the current process.

+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Pointer to a structure to be filled with the description of the data in the source file.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXGetImageInfoFromResourceA because ANSI strings are being used.

+
+ + bb172869 + HRESULT D3DXGetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[Out] D3DXIMAGE_INFO* pSrcInfo) + D3DXGetImageInfoFromResourceW +
+ + +

Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture.

+
+

Pointer to an object, representing the texture to be filled.

+

Pointer to a texture shader object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , .

+ +

The texture target must be an HLSL function that takes contains the following semantics:

  • One input parameter must use a POSITION semantic.
  • One input parameter must use a PSIZE semantic.
  • The function must return a parameter that uses the COLOR semantic.

The input parameters can be in any order. For an example, see

+
+ + bb172832 + HRESULT D3DXFillCubeTextureTX([In] IDirect3DCubeTexture9* pCubeTexture,[In] ID3DXTextureShader* pTextureShader) + D3DXFillCubeTextureTX +
+ + +

Uses a user-provided function to fill each texel of each mip level of a given texture.

+
+

Pointer to an interface, representing the filled texture.

+

Pointer to a user-provided evaluator function, which will be used to compute the value of each texel. The function follows the prototype of LPD3DXFILL2D.

+

Pointer to an arbitrary block of user-defined data. This reference will be passed to the function provided in pFunction.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: .

+ +

Here is an example that creates a function called ColorFill, which relies on .

 // Define a function that matches the prototype of LPD3DXFILL3D	
+            VOID WINAPI ColorFill (* pOut, const * pTexCoord, 	
+            const * pTexelSize, LPVOID pData)	
+            { *pOut = (pTexCoord->x, pTexCoord->y, 0.0f, 0.0f);	
+            } // Fill the texture using 	
+            if (FAILED (hr =  (m_pTexture, ColorFill, null)))	
+            { return hr;	
+            }	
+            
+
+ + bb172833 + HRESULT D3DXFillTexture([In] IDirect3DTexture9* pTexture,[In] __function__stdcall* pFunction,[In] void* pData) + D3DXFillTexture +
+ + +

Saves a surface to an image file.

+
+

Address of a reference to an that will store the image.

+

specifying the file format to use when saving. This function supports saving to all formats except Portable Pixmap (.ppm) and Targa/Truevision Graphics Adapter (.tga).

+

Pointer to interface containing the image to be saved.

+

Pointer to a structure containing a palette of 256 colors. This parameter can be null.

+

Pointer to a structure. Specifies the source rectangle. Set this parameter to null to specify the entire image.

+

If the function succeeds, the return value is . If the function fails, the return value can be the following: .

+ +

This function handles conversion to and from compressed texture formats.

+
+ + bb205432 + HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + D3DXSaveSurfaceToFileInMemory +
+ + +

Creates a volume texture from a file.

+
+

Pointer to an interface, representing the device to be associated with the volume texture.

+

Pointer to a string that specifies the file name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Address of a reference to an interface representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateVolumeTextureFromFileA because ANSI strings are being used.

The function is equivalent to (pDevice, pSrcFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppVolumeTexture).

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Mipmapped textures automatically have each level filled with the loaded texture.

When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, then the images need to be loaded manually.

Note that a resource created with this function when called from a object will be placed in the memory class denoted by . When this method is called from a object the resource will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

+
+ + bb172811 + HRESULT D3DXCreateVolumeTextureFromFileW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + D3DXCreateVolumeTextureFromFileW +
+ + +

Creates a texture from a resource.

+
+

Pointer to an interface, representing the device to be associated with the texture.

+

Handle to the module where the resource is located, or null for module associated with the image the operating system used to create the current process.

+

Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Address of a reference to an interface, representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateTextureFromResourceA because ANSI strings are being used.

The function is equivalent to (pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppTexture).

The resource being loaded must be of type RT_BITMAP or RT_RCDATA. Resource type RT_RCDATA is used to load formats other than bitmaps (such as .tga, .jpg, and .dds).

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Note that a resource created with this function when called from a object will be placed in the memory class denoted by . When this method is called from a object the resource will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

+
+ + bb172805 + HRESULT D3DXCreateTextureFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] IDirect3DTexture9** ppTexture) + D3DXCreateTextureFromResourceW +
+ + +

Loads a volume from memory.

+
+

Pointer to an interface. Specifies the destination volume, which receives the image.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination box. Set this parameter to null to specify the entire volume.

+

Pointer to the top-left corner of the source volume in memory.

+

Member of the enumerated type, the pixel format of the source volume.

+

Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one row of cells, in bytes.

+

Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one slice of cells, in bytes.

+

Pointer to a structure, the source palette of 256 colors or null.

+

Pointer to a structure. Specifies the source box. null is not a valid value for this parameter.

+

A combination of one or more controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA.

+ +

Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call on the volume texture.

+
+ + bb172907 + HRESULT D3DXLoadVolumeFromMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcRowPitch,[In] unsigned int SrcSlicePitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey) + D3DXLoadVolumeFromMemory +
+ + +

Creates a volume texture from a file.

+
+

Pointer to an interface, representing the device to be associated with the texture.

+

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Width in pixels. If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Height, in pixels. If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Depth, in pixels. If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file. The maximum dimension that a driver supports (for width, height, and depth) can be found in MaxVolumeExtent in .

+

Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.

+

0, , or . Setting this flag to indicates that the surface is to be used as a render target. The resource can then be passed to the pNewRenderTarget parameter of the SetRenderTarget method. If either or is specified, Pool must be set to , and the application should check that the device supports this operation by calling CheckDeviceFormat. indicates that the surface should be handled dynamically. For more information about using dynamic textures, see Using Dynamic Textures.

+

Member of the enumerated type, describing the requested pixel format for the texture. The returned texture might have a different format from that specified by Format. Applications should check the format of the returned texture. If , the format is taken from the file. If D3DFMT_FROM_FILE, the format is taken exactly as it is in the file, and the call will fail if this violates device capabilities.

+

Member of the enumerated type, describing the memory class into which the texture should be placed.

+

A combination of one or more controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

A combination of one or more controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying . In addition, use bits 27-31 to specify the number of mip levels to be skipped (from the top of the mipmap chain) when a .dds texture is loaded into memory; this allows you to skip up to 32 levels.

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

Pointer to a structure to be filled in with a description of the data in the source image file, or null.

+

Pointer to a structure, representing a 256-color palette to fill in, or null.

+

Address of a reference to an interface, representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateVolumeTextureFromFileExA because ANSI strings are being used.

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Mipmapped textures automatically have each level filled with the loaded volume texture. When loading images into mipmapped textures, some devices are unable to go to a 1x1 image and this function will fail. If this happens, then the images need to be loaded manually.

When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.

+
+ + bb172812 + HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Depth,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + D3DXCreateVolumeTextureFromFileExW +
+ + +

Creates a texture from a file in memory. This is a more advanced function than .

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

For details about , see the Platform SDK. Note that as of DirectX 8.0, the peFlags member of the structure does not function as documented in the Platform SDK. The peFlags member is now the alpha channel for 8-bit palettized formats.

When skipping mipmap levels while loading a .dds file, use the D3DX_SKIP_DDS_MIP_LEVELS macro to generate the MipFilter value. This macro takes the number of levels to skip and the filter type and returns the filter value, which would then be passed into the MipFilter parameter.

+
+ + bb172804 + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + D3DXCreateTextureFromFileInMemoryEx +
+ + +

Saves a volume to a buffer. The method creates an buffer to store the data, and returns that object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be the following:

+ + bb205436 + HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox) + D3DXSaveVolumeToFileInMemory +
+ + +

Creates a volume texture from a resource.

+
+

Pointer to an interface, representing the device to be associated with the volume texture.

+

Handle to the module where the resource is located, or null for the module associated with the image the operating system used to create the current process.

+

Pointer to a string that specifies the resource name. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the string data type resolves to LPCSTR. See Remarks.

+

Address of a reference to an interface representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateVolumeTextureFromResourceA because ANSI strings are being used.

The function is equivalent to (pDevice, hSrcModule, pSrcResource, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, , , D3DX_DEFAULT, D3DX_DEFAULT, 0, null, null, ppVolumeTexture).

The resource being loaded must be an application-defined resource (RT_RCDATA).

This function supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Note that a resource created with this function when called from a object will be placed in the memory class denoted by . When this method is called from a object the resource will be placed in the memory class denoted by .

Filtering is automatically applied to a texture created using this method. The filtering is equivalent to | in .

+
+ + bb172815 + HRESULT D3DXCreateVolumeTextureFromResourceW([In] IDirect3DDevice9* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + D3DXCreateVolumeTextureFromResourceW +
+ + +

Creates an empty texture, adjusting the calling parameters as needed.

+
+

Pointer to an interface, representing the device to be associated with the texture.

+

Width in pixels. If this value is 0, a value of 1 is used. See Remarks.

+

Height in pixels. If this value is 0, a value of 1 is used. See Remarks.

+

Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created.

+

0, , or . Setting this flag to indicates that the surface is to be used as a render target by calling the SetRenderTarget method. If either or is specified, the application should check that the device supports this operation by calling CheckDeviceFormat. For more information about using dynamic textures, see Using Dynamic Textures.

+

Member of the enumerated type, describing the requested pixel format for the texture. The returned texture may be of a different format from that specified, if the device does not support the requested format. Applications should check the format of the returned texture to see if it matches the format requested.

+

Member of the enumerated type, describing the memory class into which the texture should be placed.

+

Address of a reference to an interface, representing the created texture object.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , , , E_OUTOFMEMORY.

+ +

Internally, uses to adjust the calling parameters. Therefore, calls to will often succeed where calls to CreateTexture would fail.

If both Height and Width are set to D3DX_DEFAULT, a value of 256 is used for both parameters. If either Height or Width is set to D3DX_DEFAULT And the other parameter is set to a numeric value, the texture will be square with both the height and width equal to the numeric value.

+
+ + bb172800 + HRESULT D3DXCreateTexture([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] IDirect3DTexture9** ppTexture) + D3DXCreateTexture +
+ + +

Uses a user-provided function to fill each texel of each mip level of a given volume texture.

+
+

Pointer to an interface, representing the filled texture.

+

Pointer to a user-provided evaluator function, which will be used to compute the value of each texel. The function follows the prototype of LPD3DXFILL3D.

+

Pointer to an arbitrary block of user-defined data. This reference will be passed to the function provided in pFunction.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: .

+ +

If the volume is non-dynamic (because usage is set to 0 when it is created), and located in video memory (the memory pool set to ), will fail because the volume cannot be locked.

This example creates a function called ColorVolumeFill, which relies on .

 // Define a function that matches the prototype of LPD3DXFILL3D	
+            VOID WINAPI ColorVolumeFill (* pOut, const * pTexCoord, 	
+            const * pTexelSize, LPVOID pData)	
+            { *pOut = (pTexCoord->x, pTexCoord->y, pTexCoord->z, 0.0f);	
+            } // Fill volume texture	
+            if (FAILED (hr =  (m_pTexture, ColorVolumeFill, null)))	
+            { return hr;	
+            }	
+            
+
+ + bb172835 + HRESULT D3DXFillVolumeTexture([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] __function__stdcall* pFunction,[In] void* pData) + D3DXFillVolumeTexture +
+ + +

Loads a surface from another surface with color conversion.

+
+

Pointer to an interface. Specifies the destination surface, which receives the image.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination rectangle. Set this parameter to null to specify the entire surface.

+

Pointer to an interface, representing the source surface.

+

Pointer to a structure, the source palette of 256 colors or null.

+

Pointer to a structure. Specifies the source rectangle. Set this parameter to null to specify the entire surface.

+

A combination of one or more , controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

This function handles conversion to and from compressed texture formats.

Writing to a non-level-zero surface will not cause the dirty rectangle to be updated. If is called and the surface was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call AddDirtyRect on the surface.

+
+ + bb172904 + HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + D3DXLoadSurfaceFromSurface +
+ + +

Loads a volume from a file in memory.

+
+

Pointer to an interface. Specifies the destination volume.

+

Pointer to a structure, the destination palette of 256 colors or null.

+

Pointer to a structure. Specifies the destination box. Set this parameter to null to specify the entire volume.

+

Pointer to the file in memory from which to load the volume.

+

Size in bytes of the file in memory.

+

Pointer to a structure. Specifies the source box. Set this parameter to null to specify the entire volume.

+

Combination of one or more , controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | .

+

value to replace with transparent black, or 0 to disable the colorkey. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000.

+

Pointer to a structure to be filled with a description of the data in the source image file, or null.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

This function handles conversion to and from compressed texture formats and supports the following file formats: .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. See .

Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call on the volume texture.

+
+ + bb172906 + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + D3DXLoadVolumeFromFileInMemory +
+ + +

Creates an instance of an object.

+
+ No documentation. +

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: E_POINTER, E_OUTOFMEMORY.

+ +

After using this function, use RegisterTemplates or RegisterEnumTemplates to register templates, CreateEnumObject to create an enumerator object, or CreateSaveObject to create a save object.

+
+ + bb172830 + HRESULT D3DXFileCreate([In] ID3DXFile** lplpDirectXFile) + D3DXFileCreate +
+ + + Functions + + + + + Constant ConflictingRenderState. + D3DERR_CONFLICTINGRENDERSTATE + + + Constant ConflictingTextureFilter. + D3DERR_CONFLICTINGTEXTUREFILTER + + + Constant ConflictingTexturePalette. + D3DERR_CONFLICTINGTEXTUREPALETTE + + + Constant DeviceHung. + D3DERR_DEVICEHUNG + + + Constant DeviceLost. + D3DERR_DEVICELOST + + + Constant DeviceNotReset. + D3DERR_DEVICENOTRESET + + + Constant DeviceRemoved. + D3DERR_DEVICEREMOVED + + + Constant DriverInternalError. + D3DERR_DRIVERINTERNALERROR + + + Constant InvalidCall. + D3DERR_INVALIDCALL + + + Constant InvalidDevice. + D3DERR_INVALIDDEVICE + + + Constant MoreData. + D3DERR_MOREDATA + + + Constant NoAutomaticGeneration. + D3DOK_NOAUTOGEN + + + Constant NotAvailable. + D3DERR_NOTAVAILABLE + + + Constant NotFound. + D3DERR_NOTFOUND + + + Constant OutOfVideoMemory. + D3DERR_OUTOFVIDEOMEMORY + + + Constant PresentModeChanged. + S_PRESENT_MODE_CHANGED + + + Constant PresentOccluded. + S_PRESENT_OCCLUDED + + + Constant ResidentInSharedMemory. + S_RESIDENT_IN_SHARED_MEMORY + + + Constant Success. + D3D_OK + + + Constant TooManyOperations. + D3DERR_TOOMANYOPERATIONS + + + Constant UnsupportedAlphaArgument. + D3DERR_UNSUPPORTEDALPHAARG + + + Constant UnsupportedAlphaOperation. + D3DERR_UNSUPPORTEDALPHAOPERATION + + + Constant UnsupportedColorArgument. + D3DERR_UNSUPPORTEDCOLORARG + + + Constant UnsupportedColorOperation. + D3DERR_UNSUPPORTEDCOLOROPERATION + + + Constant UnsupportedFactorValue. + D3DERR_UNSUPPORTEDFACTORVALUE + + + Constant UnsupportedTextureFilter. + D3DERR_UNSUPPORTEDTEXTUREFILTER + + + Constant WasStillDrawing. + D3DERR_WASSTILLDRAWING + + + Constant WrongTextureFormat. + D3DERR_WRONGTEXTUREFORMAT + + + +

An application implements this interface to handle callbacks in animation sets generated by calls to .

+
+ +

The LPD3DXANIMATIONCALLBACKHANDLER type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXANIMATIONCALLBACKHANDLER;	
+            
+
+ + bb205624 + ID3DXAnimationCallbackHandler + ID3DXAnimationCallbackHandler +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

The application implements this method. This method is called when a callback occurs for an animation set in one of the tracks during a call to .

+
+ No documentation. + No documentation. +

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR.

+ + bb205625 + HRESULT ID3DXAnimationCallbackHandler::HandleCallback([In] unsigned int Track,[In] void* pCallbackData) + ID3DXAnimationCallbackHandler::HandleCallback +
+ + +

This interface is used to control animation functionality, connecting animation sets with the transformation frames that are being animated. The interface has methods to mix multiple animations and to modify blending parameters over time to enable smooth transitions and other effects.

+
+ +

Create an animation controller object with .

The LPD3DXANIMATIONCONTROLLER type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXANIMATIONCONTROLLER;	
+            

The D3DXEVENTHANDLE type is defined as an event handle to animation controller events.

 typedef DWORD D3DXEVENTHANDLE;	
+            

The LPD3DXEVENTHANDLE type is defined as a reference to an event handle to animation controller events.

 typedef D3DXEVENTHANDLE *LPD3DXEVENTHANDLE;	
+            
+
+ + bb205626 + ID3DXAnimationController + ID3DXAnimationController +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get the maximum number of animation outputs the animation controller can support.

+
+

The maximum number of animation outputs the controller can manage.

+ + bb205634 + unsigned int ID3DXAnimationController::GetMaxNumAnimationOutputs() + ID3DXAnimationController::GetMaxNumAnimationOutputs +
+ + +

Gets the maximum number of animation sets the animation controller can support.

+
+

The maximum number of animation sets the controller can manage.

+ + bb205635 + unsigned int ID3DXAnimationController::GetMaxNumAnimationSets() + ID3DXAnimationController::GetMaxNumAnimationSets +
+ + +

Gets the maximum number of tracks in the animation controller.

+
+

Number of tracks.

+ +

The maximum number of tracks the controller can manage.

+
+ + bb205637 + unsigned int ID3DXAnimationController::GetMaxNumTracks() + ID3DXAnimationController::GetMaxNumTracks +
+ + +

Gets the maximum number of events the animation controller can support.

+
+

The maximum number of events the controller can manage.

+ + bb205636 + unsigned int ID3DXAnimationController::GetMaxNumEvents() + ID3DXAnimationController::GetMaxNumEvents +
+ + +

Adds an animation output to the animation controller and registers references for scale, rotate, and translate (SRT) transformations.

+
+

Name of the animation output.

+

Pointer to a structure containing SRT transformation data. Can be null.

+

Pointer to a vector that describes the scale of the animation set. Can be null.

+

Pointer to a quaternion that describes the rotation of the animation set. Can be null.

+

Pointer to a vector that describes the translation of the animation set. Can be null.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

If the animation output is already registered, pMatrix will be filled with the input transformation data.

Animation sets created with automatically register all loaded animation sets.

+
+ + bb205650 + HRESULT ID3DXAnimationController::RegisterAnimationOutput([In] const char* pName,[In] D3DXMATRIX* pMatrix,[In] D3DXVECTOR3* pScale,[In] D3DXQUATERNION* pRotation,[In] D3DXVECTOR3* pTranslation) + ID3DXAnimationController::RegisterAnimationOutput +
+ + +

Adds an animation set to the animation controller.

+
+

Pointer to the animation set to add.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205651 + HRESULT ID3DXAnimationController::RegisterAnimationSet([In] ID3DXAnimationSet* pAnimSet) + ID3DXAnimationController::RegisterAnimationSet +
+ + +

Removes an animation set from the animation controller.

+
+

Pointer to the animation set to remove.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , .

+ + bb205664 + HRESULT ID3DXAnimationController::UnregisterAnimationSet([In] ID3DXAnimationSet* pAnimSet) + ID3DXAnimationController::UnregisterAnimationSet +
+ + +

Returns the number of animation sets currently registered in the animation controller.

+
+

Number of animation sets.

+ +

The controller contains any number of animations sets and tracks. Animation sets can be registered with RegisterAnimationOutput. An animation controller created by a call to will automatically register loaded animation sets.

+
+ + bb205638 + unsigned int ID3DXAnimationController::GetNumAnimationSets() + ID3DXAnimationController::GetNumAnimationSets +
+ + +

Gets an animation set.

+
+

Index of the animation set.

+

Pointer to the animation set.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

The animation controller contains an array of animation sets. This method returns one of them at the given index.

+
+ + bb205629 + HRESULT ID3DXAnimationController::GetAnimationSet([In] unsigned int Index,[Out] ID3DXAnimationSet** ppAnimationSet) + ID3DXAnimationController::GetAnimationSet +
+ + +

Gets an animation set, given its name.

+
+

String containing the name of the animation set.

+

Pointer to the animation set.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

The animation controller contains an array of animation sets. This method returns an animation set that has the given name.

+
+ + bb205630 + HRESULT ID3DXAnimationController::GetAnimationSetByName([In] const char* szName,[In] ID3DXAnimationSet** ppAnimationSet) + ID3DXAnimationController::GetAnimationSetByName +
+ + +

Animates the mesh and advances the global animation time by a specified amount.

+
+

Amount, in seconds, by which to advance the global animation time. TimeDelta value must be non-negative or zero.

+

Pointer to a user-defined animation callback handler interface, .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205627 + HRESULT ID3DXAnimationController::AdvanceTime([In] double TimeDelta,[In] ID3DXAnimationCallbackHandler* pCallbackHandler) + ID3DXAnimationController::AdvanceTime +
+ + +

Resets the global animation time to zero. Any pending events will retain their original schedules, but in the new timeframe.

+
+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

This method is typically used when the global animation time value is nearing the maximum precision of DOUBLE storage, or 264 - 1.

+
+ + bb205652 + HRESULT ID3DXAnimationController::ResetTime() + ID3DXAnimationController::ResetTime +
+ + +

Gets the global animation time.

+
+

Returns the global animation time.

+ +

Animations are designed using a local animation time and mixed into global time with AdvanceTime.

+
+ + bb205640 + double ID3DXAnimationController::GetTime() + ID3DXAnimationController::GetTime +
+ + +

Applies the animation set to the specified track.

+
+

Identifier of the track to which the animation set is applied.

+

Pointer to the animation set to be added to the track.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

This method sets the animation set to the specified track for mixing. The animation set for each track is blended according to the track weight and speed when AdvanceTime is called.

+
+ + bb205654 + HRESULT ID3DXAnimationController::SetTrackAnimationSet([In] unsigned int Track,[In] ID3DXAnimationSet* pAnimSet) + ID3DXAnimationController::SetTrackAnimationSet +
+ + +

Gets the animation set for the given track.

+
+

Track identifier.

+

Pointer to the animation set for the given track.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205641 + HRESULT ID3DXAnimationController::GetTrackAnimationSet([In] unsigned int Track,[Out] ID3DXAnimationSet** ppAnimSet) + ID3DXAnimationController::GetTrackAnimationSet +
+ + +

Sets the priority blending weight for the specified animation track.

+
+

Track identifier.

+

Track priority. This parameter should be set to one of the constants from .

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205658 + HRESULT ID3DXAnimationController::SetTrackPriority([In] unsigned int Track,[In] D3DXPRIORITY_TYPE Priority) + ID3DXAnimationController::SetTrackPriority +
+ + +

Sets the track speed. The track speed is similar to a multiplier that is used to speed up or slow down the playback of the track.

+
+

Identifier of the track to set the speed on.

+

New speed.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205659 + HRESULT ID3DXAnimationController::SetTrackSpeed([In] unsigned int Track,[In] float Speed) + ID3DXAnimationController::SetTrackSpeed +
+ + +

Sets the track weight. The weight is used to determine how to blend multiple tracks together.

+
+

Identifier of the track to set the weight on.

+

Weight value.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205660 + HRESULT ID3DXAnimationController::SetTrackWeight([In] unsigned int Track,[In] float Weight) + ID3DXAnimationController::SetTrackWeight +
+ + +

Sets the track to the specified local animation time.

+
+

Track identifier.

+

Local animation time value to assign to the track.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205657 + HRESULT ID3DXAnimationController::SetTrackPosition([In] unsigned int Track,[In] double Position) + ID3DXAnimationController::SetTrackPosition +
+ + +

Enables or disables a track in the animation controller.

+
+

Identifier of the track to be mixed.

+

Enable value. Set to TRUE to enable this track in the controller, or to to prevent it from being mixed.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ +

To mix a track with other tracks, the Enable flag must be set to TRUE. Conversely, setting the flag to will prevent the track from being mixed with other tracks.

+
+ + bb205656 + HRESULT ID3DXAnimationController::SetTrackEnable([In] unsigned int Track,[In] BOOL Enable) + ID3DXAnimationController::SetTrackEnable +
+ + +

Sets the track description.

+
+

Identifier of the track to modify.

+

Description of the track.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205655 + HRESULT ID3DXAnimationController::SetTrackDesc([In] unsigned int Track,[In] D3DXTRACK_DESC* pDesc) + ID3DXAnimationController::SetTrackDesc +
+ + +

Gets the track description.

+
+

Track identifier.

+

Pointer to the track description. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205642 + HRESULT ID3DXAnimationController::GetTrackDesc([In] unsigned int Track,[In] D3DXTRACK_DESC* pDesc) + ID3DXAnimationController::GetTrackDesc +
+ + +

Sets the priority blending weight used by the animation controller.

+
+

Priority blending weight used by the animation controller.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: .

+ +

The blend weight is used to blend high and low priority tracks together.

+
+ + bb205653 + HRESULT ID3DXAnimationController::SetPriorityBlend([In] float BlendWeight) + ID3DXAnimationController::SetPriorityBlend +
+ + +

Gets the current priority blending weight used by the animation controller.

+
+

Returns the current priority blending weight.

+ +

The priority blending weight is used to blend high and low priority tracks together.

+
+ + bb205639 + float ID3DXAnimationController::GetPriorityBlend() + ID3DXAnimationController::GetPriorityBlend +
+ + +

Sets an event key that changes the rate of play of an animation track.

+
+

Identifier of the track to modify.

+

New speed of the animation track.

+

Global time key. Specifies the global time when the change will take place.

+

Transition time, which specifies how long the smooth transition will take to complete.

+

Specifies the transition type used for transitioning between speeds. See .

+

Event handle to the priority blend event. null is returned if one or more of the input parameters is invalid, or no free event is available.

+ + bb205648 + unsigned int ID3DXAnimationController::KeyTrackSpeed([In] unsigned int Track,[In] float NewSpeed,[In] double StartTime,[In] double Duration,[In] D3DXTRANSITION_TYPE Transition) + ID3DXAnimationController::KeyTrackSpeed +
+ + +

Sets an event key that changes the weight of an animation track. The weight is used as a multiplier when combining multiple tracks together.

+
+

Identifier of the track to modify.

+

New weight of the track.

+

Global time key. Specifies the global time when the change will take place.

+

Transition time, which specifies how long the smooth transition will take to complete.

+

Specifies the transition type used for transitioning between weights. See .

+

Event handle to the priority blend event. null is returned if one or more of the input parameters is invalid, or no free event is available.

+ +

The weight is used like a multiplier to determine how much of this track to blend together with other tracks.

+
+ + bb205649 + unsigned int ID3DXAnimationController::KeyTrackWeight([In] unsigned int Track,[In] float NewWeight,[In] double StartTime,[In] double Duration,[In] D3DXTRANSITION_TYPE Transition) + ID3DXAnimationController::KeyTrackWeight +
+ + +

Sets an event key that changes the local time of an animation track.

+
+

Identifier of the track to modify.

+

New local time of the animation track.

+

Global time key. Specifies the global time when the change will take place.

+

Event handle to the priority blend event. null is returned if Track is invalid, or if no free event is available.

+ + bb205647 + unsigned int ID3DXAnimationController::KeyTrackPosition([In] unsigned int Track,[In] double NewPosition,[In] double StartTime) + ID3DXAnimationController::KeyTrackPosition +
+ + +

Sets an event key that enables or disables an animation track.

+
+

Identifier of the animation track to modify.

+

Enable flag. Set this to TRUE to enable the animation track, or to to disable the track.

+

Global time key. Specifies the global time when the change will take place.

+

Event handle to the priority blend event. null is returned if Track is invalid.

+ + bb205646 + unsigned int ID3DXAnimationController::KeyTrackEnable([In] unsigned int Track,[In] BOOL NewEnable,[In] double StartTime) + ID3DXAnimationController::KeyTrackEnable +
+ + +

Sets blending event keys for the specified animation track.

+
+

Number between 0 and 1 that is used to blend tracks together.

+

Global time to start the blend.

+

Global time duration of the blend.

+

Specifies the transition type used for the duration of the blend. See .

+

Event handle to the priority blend event. null is returned if one or more of the input parameters is invalid, or no free event is available.

+ +

The animation controller blends in three phases: low priority tracks are blended first, high priority tracks are blended second, and then the results of both are blended.

+
+ + bb205645 + unsigned int ID3DXAnimationController::KeyPriorityBlend([In] float NewBlendWeight,[In] double StartTime,[In] double Duration,[In] D3DXTRANSITION_TYPE Transition) + ID3DXAnimationController::KeyPriorityBlend +
+ + +

Removes a specified event from an animation track, preventing the execution of the event.

+
+

Event handle to the event to be removed from the animation track.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205663 + HRESULT ID3DXAnimationController::UnkeyEvent([In] unsigned int hEvent) + ID3DXAnimationController::UnkeyEvent +
+ + +

Removes all events from a specified animation track.

+
+

Identifier of the track on which all events should be removed.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

This method prevents the execution of all events previously scheduled on the track, and discards all data associated with those events.

+
+ + bb205662 + HRESULT ID3DXAnimationController::UnkeyAllTrackEvents([In] unsigned int Track) + ID3DXAnimationController::UnkeyAllTrackEvents +
+ + +

Removes all scheduled priority blend events from the animation controller.

+
+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205661 + HRESULT ID3DXAnimationController::UnkeyAllPriorityBlends() + ID3DXAnimationController::UnkeyAllPriorityBlends +
+ + +

Returns an event handle to the event currently running on the specified animation track.

+
+

Track identifier.

+

Type of event to query.

+

Event handle to the event currently running on the specified track. null is returned if no event is running on the specified track.

+ + bb205632 + unsigned int ID3DXAnimationController::GetCurrentTrackEvent([In] unsigned int Track,[In] D3DXEVENT_TYPE EventType) + ID3DXAnimationController::GetCurrentTrackEvent +
+ + +

Returns an event handle to a priority blend event that is currently running.

+
+

Event handle to the currently running priority blend event. null is returned if no priority blend event is currently running.

+ + bb205631 + unsigned int ID3DXAnimationController::GetCurrentPriorityBlend() + ID3DXAnimationController::GetCurrentPriorityBlend +
+ + +

Returns an event handle to the next event scheduled to occur after a specified event on an animation track.

+
+

Track identifier.

+

Event handle to a specified event after which to search for a following event. If set to null, then the method will return the next scheduled event.

+

Event handle to the next event scheduled to run on the specified track. null is returned if no new event is scheduled.

+ +

This method can be used iteratively to locate a desired event by repeatedly passing in null for hEvent.

Note??Do not iterate further after the method has returned null.

+
+ + bb205644 + unsigned int ID3DXAnimationController::GetUpcomingTrackEvent([In] unsigned int Track,[In] unsigned int hEvent) + ID3DXAnimationController::GetUpcomingTrackEvent +
+ + +

Returns an event handle to the next priority blend event scheduled to occur after a specified event.

+
+

Event handle to a specified event after which to search for a following priority blend event. If set to null, then the method will return the next scheduled priority blend event.

+

Event handle to the next scheduled priority blend event. null is returned if no new priority blend event is scheduled.

+ +

This method can be used iteratively to locate a desired priority blend event by repeatedly passing in null for hEvent.

Note??Do not iterate further after the method has returned null.

+
+ + bb205643 + unsigned int ID3DXAnimationController::GetUpcomingPriorityBlend([In] unsigned int hEvent) + ID3DXAnimationController::GetUpcomingPriorityBlend +
+ + +

Checks whether a specified event handle is valid and the animation event has not yet completed.

+
+

Event handle to an animation event.

+

Returns if the event handle is valid and the event has not yet completed.

Returns E_FAIL if the event handle is invalid and/or the event has completed.

+ +

The method will indicate that an event handle is valid even if the event is running but has not yet completed.

+
+ + bb205665 + HRESULT ID3DXAnimationController::ValidateEvent([In] unsigned int hEvent) + ID3DXAnimationController::ValidateEvent +
+ + +

Gets a description of a specified animation event.

+
+

Event handle to an animation event to describe.

+

Pointer to a structure that contains a description of the animation event.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205633 + HRESULT ID3DXAnimationController::GetEventDesc([In] unsigned int hEvent,[In] D3DXEVENT_DESC* pDesc) + ID3DXAnimationController::GetEventDesc +
+ + +

Clones, or copies, an animation controller.

+
+

Maximum number of animation outputs the controller can support.

+

Maximum number of animation sets the controller can support.

+

Maximum number of tracks the controller can support.

+

Maximum number of events the controller can support.

+

Address of a reference to the cloned animation controller.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb205628 + HRESULT ID3DXAnimationController::CloneAnimationController([In] unsigned int MaxNumAnimationOutputs,[In] unsigned int MaxNumAnimationSets,[In] unsigned int MaxNumTracks,[In] unsigned int MaxNumEvents,[In] ID3DXAnimationController** ppAnimController) + ID3DXAnimationController::CloneAnimationController +
+ + +

Get the maximum number of animation outputs the animation controller can support.

+
+ + bb205634 + GetMaxNumAnimationOutputs + GetMaxNumAnimationOutputs + unsigned int ID3DXAnimationController::GetMaxNumAnimationOutputs() +
+ + +

Gets the maximum number of animation sets the animation controller can support.

+
+ + bb205635 + GetMaxNumAnimationSets + GetMaxNumAnimationSets + unsigned int ID3DXAnimationController::GetMaxNumAnimationSets() +
+ + +

Gets the maximum number of tracks in the animation controller.

+
+ +

The maximum number of tracks the controller can manage.

+
+ + bb205637 + GetMaxNumTracks + GetMaxNumTracks + unsigned int ID3DXAnimationController::GetMaxNumTracks() +
+ + +

Gets the maximum number of events the animation controller can support.

+
+ + bb205636 + GetMaxNumEvents + GetMaxNumEvents + unsigned int ID3DXAnimationController::GetMaxNumEvents() +
+ + +

Returns the number of animation sets currently registered in the animation controller.

+
+ +

The controller contains any number of animations sets and tracks. Animation sets can be registered with RegisterAnimationOutput. An animation controller created by a call to will automatically register loaded animation sets.

+
+ + bb205638 + GetNumAnimationSets + GetNumAnimationSets + unsigned int ID3DXAnimationController::GetNumAnimationSets() +
+ + +

Gets the global animation time.

+
+ +

Animations are designed using a local animation time and mixed into global time with AdvanceTime.

+
+ + bb205640 + GetTime + GetTime + double ID3DXAnimationController::GetTime() +
+ + +

Gets or sets the current priority blending weight used by the animation controller.

+
+ +

The priority blending weight is used to blend high and low priority tracks together.

+
+ + bb205639 + GetPriorityBlend / SetPriorityBlend + GetPriorityBlend + float ID3DXAnimationController::GetPriorityBlend() +
+ + +

Returns an event handle to a priority blend event that is currently running.

+
+ + bb205631 + GetCurrentPriorityBlend + GetCurrentPriorityBlend + unsigned int ID3DXAnimationController::GetCurrentPriorityBlend() +
+ + +

This interface encapsulates the minimum functionality required of an animation set by an animation controller. Advanced users might want to implement this interface themselves to suit their specialized needs; for most users, however, the derived and interfaces should suffice.

+
+ +

An animation set consists of animations for many nodes for the same animation.

The LPD3DXANIMATIONSET type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXANIMATIONSET;	
+            
+
+ + bb205667 + ID3DXAnimationSet + ID3DXAnimationSet +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the animation set name.

+
+

Name of the animation set.

+ + bb205671 + const char* ID3DXAnimationSet::GetName() + ID3DXAnimationSet::GetName +
+ + +

Gets the period of the animation set.

+
+

Period of the animation set.

+ +

The period is the range of time that the animation key frames are valid. For looping animations, this is the period of the loop. The time units that the key frames are specified in (for example, seconds) is determined by the application.

+
+ + bb205673 + double ID3DXAnimationSet::GetPeriod() + ID3DXAnimationSet::GetPeriod +
+ + +

Returns time position in the local timeframe of an animation set.

+
+

Local time of the animation set.

+

Time position as measured in the timeframe of the animation set. This value will be bounded by the period of the animation set.

+ +

The time position returned by this method can be used as the PeriodicPosition parameter of .

+
+ + bb205674 + double ID3DXAnimationSet::GetPeriodicPosition([In] double Position) + ID3DXAnimationSet::GetPeriodicPosition +
+ + +

Gets the number of animations in the animation set.

+
+

Number of animations in the animation set.

+ + bb205672 + unsigned int ID3DXAnimationSet::GetNumAnimations() + ID3DXAnimationSet::GetNumAnimations +
+ + +

Gets the name of an animation, given its index.

+
+

Index of the animation.

+

Address of a reference to a string that receives the animation name.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR.

+ + bb205669 + HRESULT ID3DXAnimationSet::GetAnimationNameByIndex([In] unsigned int Index,[In] const char** ppName) + ID3DXAnimationSet::GetAnimationNameByIndex +
+ + +

Gets the index of an animation, given its name.

+
+

Name of the animation.

+

Pointer to the animation index.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR.

+ + bb205668 + HRESULT ID3DXAnimationSet::GetAnimationIndexByName([In] const char* pName,[In] unsigned int* pIndex) + ID3DXAnimationSet::GetAnimationIndexByName +
+ + +

Gets the scale, rotation, and translation values of the animation set.

+
+

Position of the animation set. The position can be obtained by calling .

+

Animation index.

+

Pointer to the vector that describes the scale of the animation set.

+

Pointer to the quaternion that describes the rotation of the animation set.

+

Pointer to the vector that describes the translation of the animation set.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR.

+ + bb205675 + HRESULT ID3DXAnimationSet::GetSRT([In] double PeriodicPosition,[In] unsigned int Animation,[Out] D3DXVECTOR3* pScale,[Out] D3DXQUATERNION* pRotation,[Out] D3DXVECTOR3* pTranslation) + ID3DXAnimationSet::GetSRT +
+ + +

Gets information about a specific callback in the animation set.

+
+

Position from which to find callbacks.

+

Callback search flags. This parameter can be set to a combination of one or more flags from .

+

Pointer to the position of the callback.

+

Address of the callback data reference.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR.

+ + bb205670 + HRESULT ID3DXAnimationSet::GetCallback([In] double Position,[In] unsigned int Flags,[Out] double* pCallbackPosition,[In] void** ppCallbackData) + ID3DXAnimationSet::GetCallback +
+ + +

Gets the animation set name.

+
+ + bb205671 + GetName + GetName + const char* ID3DXAnimationSet::GetName() +
+ + +

Gets the period of the animation set.

+
+ +

The period is the range of time that the animation key frames are valid. For looping animations, this is the period of the loop. The time units that the key frames are specified in (for example, seconds) is determined by the application.

+
+ + bb205673 + GetPeriod + GetPeriod + double ID3DXAnimationSet::GetPeriod() +
+ + +

Gets the number of animations in the animation set.

+
+ + bb205672 + GetNumAnimations + GetNumAnimations + unsigned int ID3DXAnimationSet::GetNumAnimations() +
+ + +

Locks a vertex buffer and obtains a reference to the vertex buffer memory.

+
+ +

When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer.

+
+ + bb205749 + ID3DXBaseMesh + ID3DXBaseMesh +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Draws a subset of a mesh.

+
+

DWORD that specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

The subset that is specified by AttribId will be rendered by the method, using the primitive type, so an index buffer must be properly initialized.

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.

+
+ + bb205736 + HRESULT ID3DXBaseMesh::DrawSubset([In] unsigned int AttribId) + ID3DXBaseMesh::DrawSubset +
+ + +

Retrieves the number of faces in the mesh.

+
+

Returns the number of faces in the mesh.

+ + bb205744 + unsigned int ID3DXBaseMesh::GetNumFaces() + ID3DXBaseMesh::GetNumFaces +
+ + +

Retrieves the number of vertices in the mesh.

+
+

Returns the number of vertices in the mesh.

+ + bb205745 + unsigned int ID3DXBaseMesh::GetNumVertices() + ID3DXBaseMesh::GetNumVertices +
+ + +

Gets the fixed function vertex value.

+
+

Returns the flexible vertex format (FVF) codes.

+ +

This method can return 0 if the vertex format cannot be mapped directly to an FVF code. This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.

+
+ + bb205741 + unsigned int ID3DXBaseMesh::GetFVF() + ID3DXBaseMesh::GetFVF +
+ + +

Retrieves a declaration describing the vertices in the mesh.

+
+

Array of elements describing the vertex format of the mesh vertices. The upper limit of this declarator array is . The vertex element array ends with the D3DDECL_END macro.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

The array of elements includes the D3DDECL_END macro, which ends the declaration.

+
+ + bb205739 + HRESULT ID3DXBaseMesh::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration) + ID3DXBaseMesh::GetDeclaration +
+ + +

Gets the number of bytes per vertex.

+
+

Returns the number of bytes per vertex.

+ + bb205743 + unsigned int ID3DXBaseMesh::GetNumBytesPerVertex() + ID3DXBaseMesh::GetNumBytesPerVertex +
+ + +

Retrieves the mesh options enabled for this mesh at creation time.

+
+

Returns a combination of one or more of the following flags, indicating the options enabled for this mesh at creation time.

ValueDescription
Use 32-bit indices.
Use the usage flag for vertex and index buffers.
Equivalent to specifying both and .
Use the usage flag for vertex and index buffers.
Specifying this flag causes the vertex and index buffer of the mesh to be created with flag. This is required if the mesh object is to be rendered using N-Patch enhancement.
Equivalent to specifying both and .
Use the usage flag for vertex and index buffers.
Use the usage flag for index buffers.
Use the memory class for index buffers.
Use the memory class for index buffers.
Use the usage flag for index buffers.
Equivalent to specifying both and .
Use the usage flag for vertex buffers.
Use the memory class for vertex buffers.
Use the memory class for vertex buffers.
Use the usage flag for vertex buffers.
Equivalent to specifying both and .

?

+ + bb205746 + unsigned int ID3DXBaseMesh::GetOptions() + ID3DXBaseMesh::GetOptions +
+ + +

Retrieves the device associated with the mesh.

+
+

Address of a reference to an interface, representing the Direct3D device object associated with the mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+
+ + bb205740 + HRESULT ID3DXBaseMesh::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXBaseMesh::GetDevice +
+ + +

Clones a mesh using a flexible vertex format (FVF) code.

+
+

A combination of one or more D3DXMESH flags specifying creation options for the mesh.

+

Combination of FVF codes, which specifies the vertex format for the vertices in the output mesh. For the values of the codes, see .

+

Pointer to an interface representing the device object associated with the mesh.

+

Address of a reference to an interface, representing the cloned mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

is used to reformat and change the vertex data layout. This is done by creating a new mesh object. For example, use it to to add space for normals, texture coordinates, colors, weights, etc. that were not present before.

updates the vertex declaration with different semantic information without changing the layout of the vertex buffer. This method does not modify the contents of the vertex buffer. For example, use it to relabel a 3D texture coordinate as a binormal or tangent or vice versa.

+
+ + bb205733 + HRESULT ID3DXBaseMesh::CloneMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppCloneMesh) + ID3DXBaseMesh::CloneMeshFVF +
+ + +

Clones a mesh using a declarator.

+
+

A combination of one or more D3DXMESH flags specifying creation options for the mesh.

+

An array of elements, which specify the vertex format for the vertices in the output mesh.

+

Pointer to an interface, representing the device object associated with the mesh.

+

Address of a reference to an interface, representing the cloned mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

is used to reformat and change the vertex data layout. This is done by creating a new mesh object. For example, use it to add space for normals, texture coordinates, colors, weights, etc. that were not present before.

updates the vertex declaration with different semantic information without changing the layout of the vertex buffer. This method does not modify the contents of the vertex buffer. For example, use it to relabel a 3D texture coordinate as a binormal or tangent or vice versa.

+
+ + bb205732 + HRESULT ID3DXBaseMesh::CloneMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXMesh** ppCloneMesh) + ID3DXBaseMesh::CloneMesh +
+ + +

Retrieves the vertex buffer associated with the mesh.

+
+

Address of a reference to an interface, representing the vertex buffer object associated with the mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205747 + HRESULT ID3DXBaseMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB) + ID3DXBaseMesh::GetVertexBuffer +
+ + +

Retrieves the data in an index buffer.

+
+

Address of a reference to an interface, representing the index buffer object associated with the mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205742 + HRESULT ID3DXBaseMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB) + ID3DXBaseMesh::GetIndexBuffer +
+ + +

Locks a vertex buffer and obtains a reference to the vertex buffer memory.

+
+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

VOID* reference to a buffer containing the vertex data.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer.

+
+ + bb205749 + HRESULT ID3DXBaseMesh::LockVertexBuffer([In] unsigned int Flags,[In] void** ppData) + ID3DXBaseMesh::LockVertexBuffer +
+ + +

Unlocks a vertex buffer.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205751 + HRESULT ID3DXBaseMesh::UnlockVertexBuffer() + ID3DXBaseMesh::UnlockVertexBuffer +
+ + +

Locks an index buffer and obtains a reference to the index buffer memory.

+
+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

VOID* reference to a buffer containing the index data. The count of indices in this buffer will be equal to * 3.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

When working with index buffers, you are allowed to make multiple lock calls. However, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set index buffer.

+
+ + bb205748 + HRESULT ID3DXBaseMesh::LockIndexBuffer([In] unsigned int Flags,[In] void** ppData) + ID3DXBaseMesh::LockIndexBuffer +
+ + +

Unlocks an index buffer.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205750 + HRESULT ID3DXBaseMesh::UnlockIndexBuffer() + ID3DXBaseMesh::UnlockIndexBuffer +
+ + +

Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh.

+
+

Pointer to an array of structures, representing the entries in the mesh's attribute table. Specify null to retrieve the value for pAttribTableSize.

+

Pointer to either the number of entries stored in pAttribTable or a value to be filled in with the number of entries stored in the attribute table for the mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

An attribute table is created by and passing for the Flags parameter.

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame.

+
+ + bb205738 + HRESULT ID3DXBaseMesh::GetAttributeTable([Out] D3DXATTRIBUTERANGE* pAttribTable,[Out] unsigned int* pAttribTableSize) + ID3DXBaseMesh::GetAttributeTable +
+ + +

Converts point representative data to mesh adjacency information.

+
+

Pointer to an array of one DWORD per vertex of the mesh that contains point representative data. This parameter is optional. Supplying a null value will cause this parameter to be interpreted as an "identity" array.

+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. The number of bytes in this array must be at least 3 * * sizeof(DWORD).

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb205735 + HRESULT ID3DXBaseMesh::ConvertPointRepsToAdjacency([In] const unsigned int* pPRep,[In] unsigned int* pAdjacency) + ID3DXBaseMesh::ConvertPointRepsToAdjacency +
+ + +

Converts mesh adjacency information to an array of point representatives.

+
+

Pointer to an array of three DWORDs per face that specify the three neighbors for each face in the mesh. The number of bytes in this array must be at least 3 * * sizeof(DWORD).

+

Pointer to an array of one DWORD per vertex of the mesh that will be filled with point representative data.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb205734 + HRESULT ID3DXBaseMesh::ConvertAdjacencyToPointReps([In] const unsigned int* pAdjacency,[In] unsigned int* pPRep) + ID3DXBaseMesh::ConvertAdjacencyToPointReps +
+ + +

Generate a list of mesh edges, as well as a list of faces that share each edge.

+
+

Specifies that vertices that differ in position by less than epsilon should be treated as coincident.

+

Pointer to an array of three DWORDs per face to be filled with the indices of adjacent faces. The number of bytes in this array must be at least 3 * * sizeof(DWORD).

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

After an application generates adjacency information for a mesh, the mesh data can be optimized for better drawing performance.

The order of the entries in the adjacency buffer is determined by the order of the vertex indices in the index buffer. The adjacent triangle 0 always corresponds to the edge between the indices of the corners 0 and 1. The adjacent triangle 1 always corresponds to the edge between the indices of the corners 1 and 2 while the adjacent triangle 2 corresponds to the edge between the indices of the corners 2 and 0.

+
+ + bb205737 + HRESULT ID3DXBaseMesh::GenerateAdjacency([In] float Epsilon,[In] unsigned int* pAdjacency) + ID3DXBaseMesh::GenerateAdjacency +
+ + +

This method allows the user to change the mesh declaration without changing the data layout of the vertex buffer. The call is valid only if the old and new declaration formats have the same vertex size.

+
+

An array of elements, describing the vertex format of the mesh vertices. The upper limit of this declarator array is .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

is used to reformat and change the vertex data layout. For example, use it to to add space for normals, texture coordinates, colors, weights, etc. that were not present before.

is a method for updating the vertex declaration with different semantic information, without changing the layout of the vertex buffer. For example, use it to relabel a 3D texture coordinate as a binormal or tangent, or vice versa.

+
+ + bb205752 + HRESULT ID3DXBaseMesh::UpdateSemantics([In] D3DVERTEXELEMENT9* Declaration) + ID3DXBaseMesh::UpdateSemantics +
+ + +

Gets the fixed function vertex value.

+
+ +

This method can return 0 if the vertex format cannot be mapped directly to an FVF code. This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.

+
+ + bb205741 + GetFVF + GetFVF + unsigned int ID3DXBaseMesh::GetFVF() +
+ + +

Gets the number of bytes per vertex.

+
+ + bb205743 + GetNumBytesPerVertex + GetNumBytesPerVertex + unsigned int ID3DXBaseMesh::GetNumBytesPerVertex() +
+ + +

Retrieves the mesh options enabled for this mesh at creation time.

+
+ + bb205746 + GetOptions + GetOptions + unsigned int ID3DXBaseMesh::GetOptions() +
+ + +

Retrieves the device associated with the mesh.

+
+ +

Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+
+ + bb205740 + GetDevice + GetDevice + HRESULT ID3DXBaseMesh::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Retrieves the vertex buffer associated with the mesh.

+
+ + bb205747 + GetVertexBuffer + GetVertexBuffer + HRESULT ID3DXBaseMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB) +
+ + +

Retrieves the data in an index buffer.

+
+ + bb205742 + GetIndexBuffer + GetIndexBuffer + HRESULT ID3DXBaseMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB) +
+ + +

An application uses the methods of this interface to implement a key frame animation set stored in a compressed data format.

+
+ +

Create a compressed-format key frame animation set with .

The LPD3DXCOMPRESSEDANIMATIONSET type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXCOMPRESSEDANIMATIONSET;	
+            
+
+ + bb205756 + ID3DXCompressedAnimationSet + ID3DXCompressedAnimationSet +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the type of the animation set playback loop.

+
+

Type of the animation set playback loop. See .

+ + bb205760 + D3DXPLAYBACK_TYPE ID3DXCompressedAnimationSet::GetPlaybackType() + ID3DXCompressedAnimationSet::GetPlaybackType +
+ + +

Gets the number of animation key frame ticks that occur per second.

+
+

Number of animation key frame ticks that occur per second.

+ + bb205761 + double ID3DXCompressedAnimationSet::GetSourceTicksPerSecond() + ID3DXCompressedAnimationSet::GetSourceTicksPerSecond +
+ + +

Gets the data buffer that stores compressed key frame animation data.

+
+

Address of a reference to the data buffer that receives compressed key frame animation data.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205758 + HRESULT ID3DXCompressedAnimationSet::GetCompressedData([Out] ID3DXBuffer** ppCompressedData) + ID3DXCompressedAnimationSet::GetCompressedData +
+ + +

Gets the number of callback keys in the animation set.

+
+

Number of callback keys in the animation set.

+ + bb205759 + unsigned int ID3DXCompressedAnimationSet::GetNumCallbackKeys() + ID3DXCompressedAnimationSet::GetNumCallbackKeys +
+ + +

Fills an array with callback key data used for key frame animation.

+
+

Pointer to a user-allocated array of structures that the method is to fill with callback data.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb205757 + HRESULT ID3DXCompressedAnimationSet::GetCallbackKeys([In] D3DXKEY_CALLBACK* pCallbackKeys) + ID3DXCompressedAnimationSet::GetCallbackKeys +
+ + +

Gets the type of the animation set playback loop.

+
+ + bb205760 + GetPlaybackType + GetPlaybackType + D3DXPLAYBACK_TYPE ID3DXCompressedAnimationSet::GetPlaybackType() +
+ + +

Gets the number of animation key frame ticks that occur per second.

+
+ + bb205761 + GetSourceTicksPerSecond + GetSourceTicksPerSecond + double ID3DXCompressedAnimationSet::GetSourceTicksPerSecond() +
+ + +

Gets the data buffer that stores compressed key frame animation data.

+
+ + bb205758 + GetCompressedData + GetCompressedData + HRESULT ID3DXCompressedAnimationSet::GetCompressedData([Out] ID3DXBuffer** ppCompressedData) +
+ + +

Gets the number of callback keys in the animation set.

+
+ + bb205759 + GetNumCallbackKeys + GetNumCallbackKeys + unsigned int ID3DXCompressedAnimationSet::GetNumCallbackKeys() +
+ + +

This is a user-implemented interface that allows a user to set the device state from an effect. Each of the methods in this interface must be implemented by the user and will then be used as callbacks to the application when either of the following occur:

  • An effect calls .
  • Effect state is dynamically updated by calling the appropriate state change API. See individual method pages for details.

When an application uses the state manager to implement custom callbacks, an effect no longer automatically saves and restores state when calling and . Because the application has implemented a custom save and restore behavior in the callbacks, this automatic behavior is bypassed.

+
+ +

A user creates an interface by implementing a class that derives from this interface, and implementing all the interface methods. Once the interface is created, you can get or set the state manager within an effect using and .

The LPD3DXEFFECTSTATEMANAGER type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXEFFECTSTATEMANAGER;	
+            
+
+ + bb205795 + ID3DXEffectStateManager + ID3DXEffectStateManager +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

A callback function that must be implemented by a user to set a transform.

+
+

The type of transform to apply the matrix to. See .

+

A transformation matrix. See .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205809 + HRESULT ID3DXEffectStateManager::SetTransform([In] D3DTRANSFORMSTATETYPE State,[In] const D3DMATRIX* pMatrix) + ID3DXEffectStateManager::SetTransform +
+ + +

A callback function that must be implemented by a user to set material state.

+
+

A reference to the material state. See .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205799 + HRESULT ID3DXEffectStateManager::SetMaterial([In] const D3DMATERIAL9* pMaterial) + ID3DXEffectStateManager::SetMaterial +
+ + +

A callback function that must be implemented by a user to set a light.

+
+

The zero-based index of the light. This is the same index in .

+

The light object. See .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205798 + HRESULT ID3DXEffectStateManager::SetLight([In] unsigned int Index,[In] const D3DLIGHT9* pLight) + ID3DXEffectStateManager::SetLight +
+ + +

A callback function that must be implemented by a user to enable/disable a light.

+
+

The zero-based index of the light. This is the same index in .

+

True to enable the light, false otherwise.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205796 + HRESULT ID3DXEffectStateManager::LightEnable([In] unsigned int Index,[In] BOOL Enable) + ID3DXEffectStateManager::LightEnable +
+ + +

A callback function that must be implemented by a user to set render state.

+
+

The render state to set.

+

The render state value. See Effect States (Direct3D 9).

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205805 + HRESULT ID3DXEffectStateManager::SetRenderState([In] D3DRENDERSTATETYPE State,[In] unsigned int Value) + ID3DXEffectStateManager::SetRenderState +
+ + +

A callback function that must be implemented by a user to set a texture.

+
+

The stage to which the texture is assigned. This is the index value in or .

+

A reference to the texture object. This can be any of the Direct3D texture types (cube, volume, etc.). See .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205807 + HRESULT ID3DXEffectStateManager::SetTexture([In] unsigned int Stage,[In] IDirect3DBaseTexture9* pTexture) + ID3DXEffectStateManager::SetTexture +
+ + +

A callback function that must be implemented by a user to set the texture stage state.

+
+

The stage that the texture is assigned to. This is the index value in or .

+

Defines the type of operation that a texture stage will perform. See .

+

Can be either an operation () or an argument value (), depending on what is chosen for Type.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205808 + HRESULT ID3DXEffectStateManager::SetTextureStageState([In] unsigned int Stage,[In] D3DTEXTURESTAGESTATETYPE Type,[In] unsigned int Value) + ID3DXEffectStateManager::SetTextureStageState +
+ + +

A callback function that must be implemented by a user to set a sampler.

+
+

The zero-based sampler number.

+

Identifies sampler state, which can specify the filtering, addressing, or the border color. See .

+

A value from one of the sampler state types in Type.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205806 + HRESULT ID3DXEffectStateManager::SetSamplerState([In] unsigned int Sampler,[In] D3DSAMPLERSTATETYPE Type,[In] unsigned int Value) + ID3DXEffectStateManager::SetSamplerState +
+ + +

A callback function that must be implemented by a user to set the number of subdivision segments for N-patches.

+
+

Break the surface into this number of subdivisions. This is the same as the number used by .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205800 + HRESULT ID3DXEffectStateManager::SetNPatchMode([In] float NumSegments) + ID3DXEffectStateManager::SetNPatchMode +
+ + +

A callback function that must be implemented by a user to set a FVF code.

+
+

The FVF constant, that determines how to interpret vertex data. See .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205797 + HRESULT ID3DXEffectStateManager::SetFVF([In] D3DFVF FVF) + ID3DXEffectStateManager::SetFVF +
+ + +

A callback function that must be implemented by a user to set a vertex shader.

+
+

A reference to a vertex shader object. See .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205810 + HRESULT ID3DXEffectStateManager::SetVertexShader([In] IDirect3DVertexShader9* pShader) + ID3DXEffectStateManager::SetVertexShader +
+ + +

A callback function that must be implemented by a user to set an array of vertex shader floating-point constants.

+
+

The zero-based index of the first constant register.

+

An array of floating-point constants.

+

The number of registers in pConstantData.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205812 + HRESULT ID3DXEffectStateManager::SetVertexShaderConstantF([In] unsigned int RegisterIndex,[In] const float* pConstantData,[In] unsigned int RegisterCount) + ID3DXEffectStateManager::SetVertexShaderConstantF +
+ + +

A callback function that must be implemented by a user to set an array of vertex shader integer constants.

+
+

The zero-based index of the first constant register.

+

An array of integer constants.

+

The number of registers in pConstantData.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205813 + HRESULT ID3DXEffectStateManager::SetVertexShaderConstantI([In] unsigned int RegisterIndex,[In] const int* pConstantData,[In] unsigned int RegisterCount) + ID3DXEffectStateManager::SetVertexShaderConstantI +
+ + +

A callback function that must be implemented by a user to set an array of vertex shader Boolean constants.

+
+

The zero-based index of the first constant register.

+

An array of Boolean constants.

+

The number of registers in pConstantData.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205811 + HRESULT ID3DXEffectStateManager::SetVertexShaderConstantB([In] unsigned int RegisterIndex,[In] const BOOL* pConstantData,[In] unsigned int RegisterCount) + ID3DXEffectStateManager::SetVertexShaderConstantB +
+ + +

A callback function that must be implemented by a user to set a pixel shader.

+
+

A reference to a pixel shader object. See .

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205801 + HRESULT ID3DXEffectStateManager::SetPixelShader([In] IDirect3DPixelShader9* pShader) + ID3DXEffectStateManager::SetPixelShader +
+ + +

A callback function that must be implemented by a user to set an array of vertex shader floating-point constants.

+
+

The zero-based index of the first constant register.

+

An array of floating-point constants.

+

The number of registers in pConstantData.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205803 + HRESULT ID3DXEffectStateManager::SetPixelShaderConstantF([In] unsigned int RegisterIndex,[In] const float* pConstantData,[In] unsigned int RegisterCount) + ID3DXEffectStateManager::SetPixelShaderConstantF +
+ + +

A callback function that must be implemented by a user to set an array of vertex shader integer constants.

+
+

The zero-based index of the first constant register.

+

An array of integer constants.

+

The number of registers in pConstantData.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205804 + HRESULT ID3DXEffectStateManager::SetPixelShaderConstantI([In] unsigned int RegisterIndex,[In] const int* pConstantData,[In] unsigned int RegisterCount) + ID3DXEffectStateManager::SetPixelShaderConstantI +
+ + +

A callback function that must be implemented by a user to set an array of vertex shader Boolean constants.

+
+

The zero-based index of the first constant register.

+

An array of Boolean constants.

+

The number of registers in pConstantData.

+

The user-implemented method should return . If the callback fails when setting the device state, either of the following will occur:

  • The effect will fail during .
  • The dynamic effect state call (such as ) will fail.
+ + bb205802 + HRESULT ID3DXEffectStateManager::SetPixelShaderConstantB([In] unsigned int RegisterIndex,[In] const BOOL* pConstantData,[In] unsigned int RegisterCount) + ID3DXEffectStateManager::SetPixelShaderConstantB +
+ + +

A callback function that must be implemented by a user to set material state.

+
+ + bb205799 + SetMaterial + SetMaterial + HRESULT ID3DXEffectStateManager::SetMaterial([In] const D3DMATERIAL9* pMaterial) +
+ + +

A callback function that must be implemented by a user to set the number of subdivision segments for N-patches.

+
+ + bb205800 + SetNPatchMode + SetNPatchMode + HRESULT ID3DXEffectStateManager::SetNPatchMode([In] float NumSegments) +
+ + +

A callback function that must be implemented by a user to set a FVF code.

+
+ + bb205797 + SetFVF + SetFVF + HRESULT ID3DXEffectStateManager::SetFVF([In] D3DFVF FVF) +
+ + +

A callback function that must be implemented by a user to set a vertex shader.

+
+ + bb205810 + SetVertexShader + SetVertexShader + HRESULT ID3DXEffectStateManager::SetVertexShader([In] IDirect3DVertexShader9* pShader) +
+ + +

A callback function that must be implemented by a user to set a pixel shader.

+
+ + bb205801 + SetPixelShader + SetPixelShader + HRESULT ID3DXEffectStateManager::SetPixelShader([In] IDirect3DPixelShader9* pShader) +
+ + +

This interface is implemented by the application to allocate or free frame and mesh container objects. Methods on this are called during loading and destroying frame hierarchies.

+
+ +

The LPD3DXALLOCATEHIERARCHY type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXALLOCATEHIERARCHY;	
+            
+
+ + bb205619 + ID3DXAllocateHierarchy + ID3DXAllocateHierarchy +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Requests allocation of a frame object.

+
+

Name of the frame to be created.

+

Returns the created frame object.

+

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb205620 + HRESULT ID3DXAllocateHierarchy::CreateFrame([In] const char* Name,[In] D3DXFRAME** ppNewFrame) + ID3DXAllocateHierarchy::CreateFrame +
+ + +

Requests allocation of a mesh container object.

+
+

Name of the mesh.

+

Pointer to the mesh data structure. See .

+

Array of materials used in the mesh.

+

Array of effect instances used in the mesh. See .

+

Number of materials in the materials array.

+

Adjacency array for the mesh.

+

Pointer to the skin mesh object if skin data is found. See .

+

Returns the created mesh container. See .

+

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb205621 + HRESULT ID3DXAllocateHierarchy::CreateMeshContainer([In] const char* Name,[In] const D3DXMESHDATA* pMeshData,[In] const D3DXMATERIAL* pMaterials,[In] const D3DXEFFECTINSTANCE* pEffectInstances,[In] unsigned int NumMaterials,[In] const unsigned int* pAdjacency,[In] ID3DXSkinInfo* pSkinInfo,[In] D3DXMESHCONTAINER** ppNewMeshContainer) + ID3DXAllocateHierarchy::CreateMeshContainer +
+ + +

Requests deallocation of a frame object.

+
+

Pointer to the frame to be deallocated.

+

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb205622 + HRESULT ID3DXAllocateHierarchy::DestroyFrame([In] D3DXFRAME* pFrameToFree) + ID3DXAllocateHierarchy::DestroyFrame +
+ + +

Requests deallocation of a mesh container object.

+
+

Pointer to the mesh container object to be deallocated.

+

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb205623 + HRESULT ID3DXAllocateHierarchy::DestroyMeshContainer([In] D3DXMESHCONTAINER* pMeshContainerToFree) + ID3DXAllocateHierarchy::DestroyMeshContainer +
+ + +

This interface is implemented by the application to save any additional user data embedded in .x files. An instance of this interface is passed to , and D3DX calls the appropriate method on this interface every time the appropriate data is encountered. For example, for each frame object in the .x file, is called and passed the child data.

+
+ +

The LPD3DXLOADUSERDATA type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXLOADUSERDATA;	
+            
+
+ + bb174034 + ID3DXLoadUserData + ID3DXLoadUserData +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Load top level data from a .x file.

+
+

Pointer to a .x file data structure. This is defined in Dxfile.h.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb174037 + HRESULT ID3DXLoadUserData::LoadTopLevelData([In] ID3DXFileData* pXofChildData) + ID3DXLoadUserData::LoadTopLevelData +
+ + +

Load frame child data from a .x file.

+
+

Pointer to a mesh container. See .

+

Pointer to a .x file data structure. This is defined in Dxfile.h.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb174035 + HRESULT ID3DXLoadUserData::LoadFrameChildData([In] D3DXFRAME* pFrame,[In] ID3DXFileData* pXofChildData) + ID3DXLoadUserData::LoadFrameChildData +
+ + +

Load mesh child data from a .x file.

+
+

Pointer to a mesh container. See .

+

Pointer to a .x file data structure. This is defined in Dxfile.h.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb174036 + HRESULT ID3DXLoadUserData::LoadMeshChildData([In] D3DXMESHCONTAINER* pMeshContainer,[In] ID3DXFileData* pXofChildData) + ID3DXLoadUserData::LoadMeshChildData +
+ + +

is a user-implemented interface to provide callbacks for #include directives during shader compilation. Each of the methods in this interface must be implemented by the user which will then be used as callbacks to the application when one of the following occurs:

  • An HLSL shader that contains a #include is compiled by calling one of the *** functions.
  • An assembly shader #include is assembled by calling any of the *** functions.
  • An effect that contains a #include is compiled by by calling any of the *** or *** functions.
+
+ +

A user creates an interface by implementing a class that derives from this interface, and implementing all the interface methods.

The LPD3DXINCLUDE type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXINCLUDE;	
+            
+
+ + bb173986 + ID3DXInclude + ID3DXInclude +
+ + + A user-implemented method for opening and reading the contents of a shader #include file. + + A -typed value that indicates the location of the #include file. + Name of the #include file. + Pointer to the container that includes the #include file. + Stream that is associated with fileName to be read. This reference remains valid until is called. + HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes) + + + + A user-implemented method for closing a shader #include file. + + + If was successful, Close is guaranteed to be called before the API using the interface returns. + + This is a reference that was returned by the corresponding call. + HRESULT Close([None] LPCVOID pData) + + + +

Applications use the methods of the interface to manipulate an index buffer resource.

+
+ +

The interface is obtained by calling the method.

This interface inherits additional functionality from the interface.

This interface, like all COM interfaces, inherits from the interface.

The LPDIRECT3DINDEXBUFFER9 and PDIRECT3DINDEXBUFFER9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;	
+            
+
+ + bb205865 + IDirect3DIndexBuffer9 + IDirect3DIndexBuffer9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Locks a range of index data and obtains a reference to the index buffer memory.

+
+

Offset into the index data to lock, in bytes. Lock the entire index buffer by specifying 0 for both parameters, SizeToLock and OffsetToLock.

+

Size of the index data to lock, in bytes. Lock the entire index buffer by specifying 0 for both parameters, SizeToLock and OffsetToLock.

+

VOID* reference to a memory buffer containing the returned index data.

+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

As a general rule, do not hold a lock across more than one frame. When working with index buffers, you are allowed to make multiple lock calls. However, you must ensure that the number of lock calls match the number of unlock calls. calls will not succeed with any outstanding lock count on any currently set index buffer.

The and flags are valid only on buffers created with .

See Programming Tips (Direct3D 9) for information about using or .

+
+ + bb205867 + HRESULT IDirect3DIndexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags) + IDirect3DIndexBuffer9::Lock +
+ + +

Unlocks index data.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205868 + HRESULT IDirect3DIndexBuffer9::Unlock() + IDirect3DIndexBuffer9::Unlock +
+ + +

Retrieves a description of the index buffer resource.

+
+

Pointer to a structure, describing the returned index buffer.

+

If the method succeeds, the return value is . is returned if the argument is invalid.

+ + bb205866 + HRESULT IDirect3DIndexBuffer9::GetDesc([Out] D3DINDEXBUFFER_DESC* pDesc) + IDirect3DIndexBuffer9::GetDesc +
+ + + Initializes a new instance of the class. + + The device. + The size in bytes. + The usage. + The pool. + if set to true use 16bit index buffer, otherwise, use 32bit index buffer. + bb174357 + HRESULT IDirect3DDevice9::CreateIndexBuffer([In] unsigned int Length,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DIndexBuffer9** ppIndexBuffer,[In] void** pSharedHandle) + IDirect3DDevice9::CreateIndexBuffer + + + + Initializes a new instance of the class. + + The device. + The size in bytes. + The usage. + The pool. + if set to true use 16bit index buffer, otherwise, use 32bit index buffer. + The shared handle. + bb174357 + HRESULT IDirect3DDevice9::CreateIndexBuffer([In] unsigned int Length,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DIndexBuffer9** ppIndexBuffer,[In] void** pSharedHandle) + IDirect3DDevice9::CreateIndexBuffer + + + + Locks the specified index buffer. + + The offset in the buffer. + The size of the buffer to lock. + The lock flags. + A containing the locked index buffer. + bb205867 + HRESULT IDirect3DIndexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags) + IDirect3DIndexBuffer9::Lock + + + + Locks the specified index buffer. + + The offset in the buffer. + The size of the buffer to lock. + The lock flags. + A containing the locked index buffer. + bb205867 + HRESULT IDirect3DIndexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags) + IDirect3DIndexBuffer9::Lock + + + +

Retrieves a description of the index buffer resource.

+
+ + bb205866 + GetDesc + GetDesc + HRESULT IDirect3DIndexBuffer9::GetDesc([Out] D3DINDEXBUFFER_DESC* pDesc) +
+ + +

This interface is implemented by the application to save any additional user data embedded in .x files. An instance of this interface is passed to , and D3DX calls the appropriate method on this interface every time the appropriate data is encountered. For example, for each frame object in the .x file, is called and passed the child data.

+
+ +

The LPD3DXSAVEUSERDATA type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXSAVEUSERDATA;	
+            
+
+ + bb174199 + ID3DXSaveUserData + ID3DXSaveUserData +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Add child data to the frame.

+
+

Pointer to a mesh container. See .

+

Pointer to a .x file save object. Use the reference to call to add a child data object. Do not save the data with .

+

Pointer to a .x file data node. Use the reference to call to add a child data object.

+

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ +

and provide a mechanism for adding a template to a .x file for saving user data.

+
+ + bb174200 + HRESULT ID3DXSaveUserData::AddFrameChildData([In] const D3DXFRAME* pFrame,[In] ID3DXFileSaveObject* pXofSave,[In] ID3DXFileSaveData* pXofFrameData) + ID3DXSaveUserData::AddFrameChildData +
+ + +

Add child data to the mesh.

+
+

Pointer to a mesh container. See .

+

Pointer to a .x file save object. Use the reference to call to add a child data object. Do not save the data with .

+

Pointer to a .x file data node. Use the reference to call to add a child data object.

+

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb174201 + HRESULT ID3DXSaveUserData::AddMeshChildData([In] const D3DXMESHCONTAINER* pMeshContainer,[In] ID3DXFileSaveObject* pXofSave,[In] ID3DXFileSaveData* pXofMeshData) + ID3DXSaveUserData::AddMeshChildData +
+ + +

Add a top level object before the frame hierarchy.

+
+

Pointer to a .x file save object. Use this reference to call IDirectXFileSaveObject::CreateDataObject to create the data object to be saved. Then call IDirectXFileSaveObject::SaveData to save the data.

+

The return values of this method are implemented by an application programmer. In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb174203 + HRESULT ID3DXSaveUserData::AddTopLevelDataObjectsPre([In] ID3DXFileSaveObject* pXofSave) + ID3DXSaveUserData::AddTopLevelDataObjectsPre +
+ + +

Add a top level object after the frame hierarchy.

+
+

Pointer to a .x file save object. Use this reference to call IDirectXFileSaveObject::CreateDataObject to create the data object to be saved. Then call IDirectXFileSaveObject::SaveData to save the data.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ + bb174202 + HRESULT ID3DXSaveUserData::AddTopLevelDataObjectsPost([In] ID3DXFileSaveObject* pXofSave) + ID3DXSaveUserData::AddTopLevelDataObjectsPost +
+ + +

A callback for the user to register a .x file template.

+
+

Use this reference to register user-defined .x file templates. See . Do not use this parameter to add data objects.

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ +

and provide a mechanism for adding a template to a .x file for saving user data.

+
+ + bb174204 + HRESULT ID3DXSaveUserData::RegisterTemplates([In] ID3DXFile* pXFileApi) + ID3DXSaveUserData::RegisterTemplates +
+ + +

A callback for the user to save a .x file template.

+
+

Pointer to a .x file save object. Do not use this parameter to add data objects. See .

+

The return values of this method are implemented by an application programmer.In general, if no error occurs, program the method to return . Otherwise, program the method to return an appropriate error message from D3DERR or D3DXERR, as this will cause to fail also, and return the error.

+ +

and provide a mechanism for adding a template to a .x file for saving user data.

+
+ + bb174205 + HRESULT ID3DXSaveUserData::SaveTemplates([In] ID3DXFileSaveObject* pXofSave) + ID3DXSaveUserData::SaveTemplates +
+ + +

An application uses the methods of this interface to implement a key frame animation set.

+
+ +

Create a keyframed animation set with .

The LPD3DXKEYFRAMEDANIMATIONSET type is defined as a reference to this interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXKEYFRAMEDANIMATIONSET;	
+            
+
+ + bb173989 + ID3DXKeyframedAnimationSet + ID3DXKeyframedAnimationSet +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the type of the animation set playback loop.

+
+

Type of the animation set playback loop. See .

+ + bb173997 + D3DXPLAYBACK_TYPE ID3DXKeyframedAnimationSet::GetPlaybackType() + ID3DXKeyframedAnimationSet::GetPlaybackType +
+ + +

Gets the number of animation key frame ticks that occur per second.

+
+

Number of animation key frame ticks that occur per second.

+ + bb174004 + double ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond() + ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond +
+ + +

Gets the number of scale keys in the specified key frame animation.

+
+

Animation index.

+

Number of scale keys in the specified key frame animation.

+ + bb173995 + unsigned int ID3DXKeyframedAnimationSet::GetNumScaleKeys([In] unsigned int Animation) + ID3DXKeyframedAnimationSet::GetNumScaleKeys +
+ + +

Fills an array with scale key data used for key frame animation.

+
+

Animation index.

+

Pointer to a user-allocated array of vectors that the method is to fill with animation scale data.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174003 + HRESULT ID3DXKeyframedAnimationSet::GetScaleKeys([In] unsigned int Animation,[In] D3DXKEY_VECTOR3* pScaleKeys) + ID3DXKeyframedAnimationSet::GetScaleKeys +
+ + +

Get scale information for a specific key frame in the animation set.

+
+

Animation index.

+

Key frame.

+

Pointer to the scale data. See .

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174002 + HRESULT ID3DXKeyframedAnimationSet::GetScaleKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pScaleKey) + ID3DXKeyframedAnimationSet::GetScaleKey +
+ + +

Set scale information for a specific key frame in the animation set.

+
+

Animation index.

+

Key frame.

+

Pointer to the scale data. See .

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174010 + HRESULT ID3DXKeyframedAnimationSet::SetScaleKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pScaleKey) + ID3DXKeyframedAnimationSet::SetScaleKey +
+ + +

Gets the number of rotation keys in the specified key frame animation.

+
+

Animation index.

+

Number of rotation keys in the specified key frame animation.

+ + bb173994 + unsigned int ID3DXKeyframedAnimationSet::GetNumRotationKeys([In] unsigned int Animation) + ID3DXKeyframedAnimationSet::GetNumRotationKeys +
+ + +

Fills an array with rotational key data used for key frame animation.

+
+

Animation index.

+

Pointer to a user-allocated array of quaternions that the method is to fill with animation rotation data.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174001 + HRESULT ID3DXKeyframedAnimationSet::GetRotationKeys([In] unsigned int Animation,[In] D3DXKEY_QUATERNION* pRotationKeys) + ID3DXKeyframedAnimationSet::GetRotationKeys +
+ + +

Get rotation information for a specific key frame in the animation set.

+
+

Animation index.

+

Key frame.

+

Pointer to the rotation data. See .

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb173998 + HRESULT ID3DXKeyframedAnimationSet::GetRotationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_QUATERNION* pRotationKey) + ID3DXKeyframedAnimationSet::GetRotationKey +
+ + +

Set rotation information for a specific key frame in the animation set.

+
+

Animation index.

+

Key frame.

+

Pointer to the rotation data. See .

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174009 + HRESULT ID3DXKeyframedAnimationSet::SetRotationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_QUATERNION* pRotationKey) + ID3DXKeyframedAnimationSet::SetRotationKey +
+ + +

Gets the number of translation keys in the specified key frame animation.

+
+

Animation index.

+

Number of translation keys in the specified key frame animation.

+ + bb173996 + unsigned int ID3DXKeyframedAnimationSet::GetNumTranslationKeys([In] unsigned int Animation) + ID3DXKeyframedAnimationSet::GetNumTranslationKeys +
+ + +

Fills an array with translational key data used for key frame animation.

+
+

Animation index.

+

Pointer to a user-allocated array of vectors that the method is to fill with animation translation data.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174006 + HRESULT ID3DXKeyframedAnimationSet::GetTranslationKeys([In] unsigned int Animation,[In] D3DXKEY_VECTOR3* pTranslationKeys) + ID3DXKeyframedAnimationSet::GetTranslationKeys +
+ + +

Get translation information for a specific key frame in the animation set.

+
+

Animation index.

+

Key Frame.

+

Pointer to the rotation information. See .

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174005 + HRESULT ID3DXKeyframedAnimationSet::GetTranslationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pTranslationKey) + ID3DXKeyframedAnimationSet::GetTranslationKey +
+ + +

Set translation information for a specific key frame in the animation set.

+
+

Animation index.

+

Key Frame.

+

Pointer to the translation data. See .

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174011 + HRESULT ID3DXKeyframedAnimationSet::SetTranslationKey([In] unsigned int Animation,[In] unsigned int Key,[In] D3DXKEY_VECTOR3* pTranslationKey) + ID3DXKeyframedAnimationSet::SetTranslationKey +
+ + +

Gets the number of callback keys in the animation set.

+
+

Number of callback keys in the animation set.

+ + bb173993 + unsigned int ID3DXKeyframedAnimationSet::GetNumCallbackKeys() + ID3DXKeyframedAnimationSet::GetNumCallbackKeys +
+ + +

Fills an array with callback key data used for key frame animation.

+
+

Pointer to a user-allocated array of structures that the method is to fill with callback data.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb173992 + HRESULT ID3DXKeyframedAnimationSet::GetCallbackKeys([In] D3DXKEY_CALLBACK* pCallbackKeys) + ID3DXKeyframedAnimationSet::GetCallbackKeys +
+ + +

Gets information about a specific callback in the animation set.

+
+

Animation index.

+

Pointer to the callback function.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb173991 + HRESULT ID3DXKeyframedAnimationSet::GetCallbackKey([In] unsigned int Key,[In] D3DXKEY_CALLBACK* pCallbackKey) + ID3DXKeyframedAnimationSet::GetCallbackKey +
+ + +

Sets information about a specific callback in the animation set.

+
+

Animation index.

+

Pointer to the callback function.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174008 + HRESULT ID3DXKeyframedAnimationSet::SetCallbackKey([In] unsigned int Key,[In] D3DXKEY_CALLBACK* pCallbackKey) + ID3DXKeyframedAnimationSet::SetCallbackKey +
+ + +

Removes the scale data at the specified key frame.

+
+

Animation identifier.

+

Key frame.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

This method is slow and should not be used after an animation has begun to play.

+
+ + bb174014 + HRESULT ID3DXKeyframedAnimationSet::UnregisterScaleKey([In] unsigned int Animation,[In] unsigned int Key) + ID3DXKeyframedAnimationSet::UnregisterScaleKey +
+ + +

Removes the rotation data at the specified key frame.

+
+

Animation identifier.

+

Key frame.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

This method is slow and should not be used after an animation has begun to play.

+
+ + bb174013 + HRESULT ID3DXKeyframedAnimationSet::UnregisterRotationKey([In] unsigned int Animation,[In] unsigned int Key) + ID3DXKeyframedAnimationSet::UnregisterRotationKey +
+ + +

Removes the translation data at the specified key frame.

+
+

Animation identifier.

+

Key frame.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ +

This method is slow and should not be used after an animation has begun to play.

+
+ + bb174015 + HRESULT ID3DXKeyframedAnimationSet::UnregisterTranslationKey([In] unsigned int Animation,[In] unsigned int Key) + ID3DXKeyframedAnimationSet::UnregisterTranslationKey +
+ + +

Register the scale, rotate, and translate (SRT) key frame data for an animation.

+
+

Pointer to the animation name.

+

Number of scale keys.

+

Number of rotation keys.

+

Number of translation keys.

+

Address of a reference to a user-allocated array of vectors that the method fills with scale data.

+

Address of a reference to a user-allocated array of quaternions that the method fills with rotation data.

+

Address of a reference to a user-allocated array of vectors that the method fills with translation data.

+

Returns the animation index.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned:

+ + bb174007 + HRESULT ID3DXKeyframedAnimationSet::RegisterAnimationSRTKeys([In] const char* pName,[In] unsigned int NumScaleKeys,[In] unsigned int NumRotationKeys,[In] unsigned int NumTranslationKeys,[In] const D3DXKEY_VECTOR3* pScaleKeys,[In] const D3DXKEY_QUATERNION* pRotationKeys,[In] const D3DXKEY_VECTOR3* pTranslationKeys,[In] unsigned int* pAnimationIndex) + ID3DXKeyframedAnimationSet::RegisterAnimationSRTKeys +
+ + +

Transforms animations in an animation set into a compressed format and returns a reference to the buffer that stores the compressed data.

+
+

One of the values that define the compression mode used for storing compressed animation set data. is the only value currently supported.

+

Desired compression loss ratio, in the range from 0 to 1.

+

Pointer to a transformation frame hierarchy. Can be null.

+

Address of a reference to the compressed animation set.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: , E_OUTOFMEMORY.

+ + bb173990 + HRESULT ID3DXKeyframedAnimationSet::Compress([In] unsigned int Flags,[In] float Lossiness,[In] D3DXFRAME* pHierarchy,[In] ID3DXBuffer** ppCompressedData) + ID3DXKeyframedAnimationSet::Compress +
+ + +

Remove the animation data from the animation set.

+
+

The animation index.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

+ + bb174012 + HRESULT ID3DXKeyframedAnimationSet::UnregisterAnimation([In] unsigned int Index) + ID3DXKeyframedAnimationSet::UnregisterAnimation +
+ + +

Gets the type of the animation set playback loop.

+
+ + bb173997 + GetPlaybackType + GetPlaybackType + D3DXPLAYBACK_TYPE ID3DXKeyframedAnimationSet::GetPlaybackType() +
+ + +

Gets the number of animation key frame ticks that occur per second.

+
+ + bb174004 + GetSourceTicksPerSecond + GetSourceTicksPerSecond + double ID3DXKeyframedAnimationSet::GetSourceTicksPerSecond() +
+ + +

Gets the number of callback keys in the animation set.

+
+ + bb173993 + GetNumCallbackKeys + GetNumCallbackKeys + unsigned int ID3DXKeyframedAnimationSet::GetNumCallbackKeys() +
+ + +

The interface implements line drawing using textured triangles.

+
+ +

Create a line drawing object with .

The LPD3DXLINE type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXLINE;	
+            
+
+ + bb174016 + ID3DXLine + ID3DXLine +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the Direct3D device associated with the line object.

+
+

Address of a reference to an interface, representing the Direct3D device object associated with the line object.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174022 + HRESULT ID3DXLine::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXLine::GetDevice +
+ + +

Prepares a device for drawing lines.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Calling is optional. If called outside of a / sequence, the draw functions will internally call and . To avoid extra overhead, this method should be used if more than one draw function will be called successively.

This method must be called from inside an and sequence.

cannot be used as a substitute for either or .

+
+ + bb174017 + HRESULT ID3DXLine::Begin() + ID3DXLine::Begin +
+ + +

Draws a line strip in screen space. Input is in the form of an array that defines points (of ) on the line strip.

+
+ No documentation. + No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174018 + HRESULT ID3DXLine::Draw([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] D3DCOLOR Color) + ID3DXLine::Draw +
+ + +

Draws a line strip in screen space with a specified input transformation matrix.

+
+

Array of vertices that make up the line. See .

+

Number of vertices in the vertex list.

+

A scale, rotate, and translate (SRT) matrix for transforming the points. See . If this matrix is a projection matrix, any stippled lines will be drawn with a perspective-correct stippling pattern. Or, you can transform the vertices and use to draw the line with a nonperspective-correct stipple pattern.

+

Color of the line. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174019 + HRESULT ID3DXLine::DrawTransform([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] const D3DXMATRIX* pTransform,[In] D3DCOLOR Color) + ID3DXLine::DrawTransform +
+ + +

Applies a stipple pattern to the line.

+
+

Describes the stipple pattern: 1 is opaque, 0 is transparent.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174031 + HRESULT ID3DXLine::SetPattern([In] unsigned int dwPattern) + ID3DXLine::SetPattern +
+ + +

Gets the line stipple pattern.

+
+

Returns the line stipple pattern: 1 is opaque, 0 is transparent.

+ + bb174024 + unsigned int ID3DXLine::GetPattern() + ID3DXLine::GetPattern +
+ + +

Stretches the stipple pattern along the line direction.

+
+

Stipple pattern scaling value. 1.0f is the default value and represents no scaling. A value less than 1.0f shrinks the pattern, and a value greater than 1.0 stretches the pattern.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174032 + HRESULT ID3DXLine::SetPatternScale([In] float fPatternScale) + ID3DXLine::SetPatternScale +
+ + +

Gets the stipple-pattern scale value.

+
+

Returns the value used to scale the stipple-pattern. 1.0f is the default value and represents no scaling. A value less than 1.0f shrinks the pattern, and a value greater than 1.0 stretches the pattern.

+ + bb174025 + float ID3DXLine::GetPatternScale() + ID3DXLine::GetPatternScale +
+ + +

Specifies the thickness of the line.

+
+

Describes the line width.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174033 + HRESULT ID3DXLine::SetWidth([In] float fWidth) + ID3DXLine::SetWidth +
+ + +

Gets the thickness of the line.

+
+

The line thickness.

+ + bb174026 + float ID3DXLine::GetWidth() + ID3DXLine::GetWidth +
+ + +

Toggles line antialiasing.

+
+

Toggles antialiasing on and off. TRUE turns antialiasing on, and turns antialiasing off.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174029 + HRESULT ID3DXLine::SetAntialias([In] BOOL bAntialias) + ID3DXLine::SetAntialias +
+ + +

Gets the line antialiasing state.

+
+

Returns the antialiasing switch value. TRUE means antialiasing is on, and means antialiasing is off.

+ + bb174021 + BOOL ID3DXLine::GetAntialias() + ID3DXLine::GetAntialias +
+ + +

Toggles the mode to draw OpenGL-style lines.

+
+

Toggles OpenGL-style line drawing. TRUE enables OpenGL-style lines, and enables Direct3D-style lines.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174030 + HRESULT ID3DXLine::SetGLLines([In] BOOL bGLLines) + ID3DXLine::SetGLLines +
+ + +

Gets the OpenGL-style line-drawing mode.

+
+

Returns TRUE if OpenGL-style lines are enabled, and if Direct3D-style lines are enabled.

+ + bb174023 + BOOL ID3DXLine::GetGLLines() + ID3DXLine::GetGLLines +
+ + +

Restores the device state to how it was when was called.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

cannot be used as a substitute for either or .

+
+ + bb174020 + HRESULT ID3DXLine::End() + ID3DXLine::End +
+ + +

Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method should be called whenever the device is lost or before the user calls . Even if the device was not actually lost, is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling and then .

+
+ + bb174027 + HRESULT ID3DXLine::OnLostDevice() + ID3DXLine::OnLostDevice +
+ + +

Use this method to re-acquire resources and save initial state.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

should be called each time the device is reset (using ), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.

+
+ + bb174028 + HRESULT ID3DXLine::OnResetDevice() + ID3DXLine::OnResetDevice +
+ + + Instantiates a left-handed coordinate system to create a . + + Pointer to an interface, representing the device associated with the created box mesh. + + This function creates a mesh with the creation option and | Flexible Vertex Format (FVF). + + HRESULT D3DXCreateLine([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXLine** ppLine) + + + + Draws a line strip in screen space. Input is in the form of an array that defines points (of ) on the line strip. + + No documentation. + No documentation. + HRESULT ID3DXLine::Draw([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] D3DCOLOR Color) + + + + Draws a line strip in screen space. Input is in the form of an array that defines points (of ) on the line strip. + + No documentation. + No documentation. + HRESULT ID3DXLine::Draw([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] D3DCOLOR Color) + + + + Draws a line strip in screen space with a specified input transformation matrix. + + Array of vertices that make up the line. See . + A scale, rotate, and translate (SRT) matrix for transforming the points. See . If this matrix is a projection matrix, any stippled lines will be drawn with a perspective-correct stippling pattern. Or, you can transform the vertices and use to draw the line with a nonperspective-correct stipple pattern. + Color of the line. See . + If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA. + HRESULT ID3DXLine::DrawTransform([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] const D3DXMATRIX* pTransform,[In] D3DCOLOR Color) + + + + Draws a line strip in screen space with a specified input transformation matrix. + + Array of vertices that make up the line. See . + A scale, rotate, and translate (SRT) matrix for transforming the points. See . If this matrix is a projection matrix, any stippled lines will be drawn with a perspective-correct stippling pattern. Or, you can transform the vertices and use to draw the line with a nonperspective-correct stipple pattern. + Color of the line. See . + If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA. + HRESULT ID3DXLine::DrawTransform([In] const void* pVertexList,[In] unsigned int dwVertexListCount,[In] const D3DXMATRIX* pTransform,[In] D3DCOLOR Color) + + + +

Retrieves the Direct3D device associated with the line object.

+
+ + bb174022 + GetDevice + GetDevice + HRESULT ID3DXLine::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Gets or sets the line stipple pattern.

+
+ + bb174024 + GetPattern / SetPattern + GetPattern + unsigned int ID3DXLine::GetPattern() +
+ + +

Gets or sets the stipple-pattern scale value.

+
+ + bb174025 + GetPatternScale / SetPatternScale + GetPatternScale + float ID3DXLine::GetPatternScale() +
+ + +

Gets or sets the thickness of the line.

+
+ + bb174026 + GetWidth / SetWidth + GetWidth + float ID3DXLine::GetWidth() +
+ + +

Gets or sets the line antialiasing state.

+
+ + bb174021 + GetAntialias / SetAntialias + GetAntialias + BOOL ID3DXLine::GetAntialias() +
+ + +

Gets or sets the OpenGL-style line-drawing mode.

+
+ + bb174023 + GetGLLines / SetGLLines + GetGLLines + BOOL ID3DXLine::GetGLLines() +
+ + +

Applications use the methods of the interface to manipulate mesh objects.

+
+ +

To obtain the interface, call either the or function.

This interface inherits additional functionality from the interface.

The LPD3DXMESH type is defined as a reference to the interface.

 typedef struct  *LPD3DXMESH;	
+            
+
+ + bb174069 + ID3DXMesh + ID3DXMesh +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Locks the mesh buffer that contains the mesh attribute data, and returns a reference to it.

+
+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

Address of a reference to a buffer containing a DWORD for each face in the mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If has been called, the mesh will also have an attribute table that can be accessed using the method.

+
+ + bb174070 + HRESULT ID3DXMesh::LockAttributeBuffer([In] unsigned int Flags,[In] unsigned int** ppData) + ID3DXMesh::LockAttributeBuffer +
+ + +

Unlocks an attribute buffer.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174074 + HRESULT ID3DXMesh::UnlockAttributeBuffer() + ID3DXMesh::UnlockAttributeBuffer +
+ + +

Generates a new mesh with reordered faces and vertices to optimize drawing performance.

+
+

Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except , , and ).

+

Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the source mesh. If the edge has no adjacent faces, the value is 0xffffffff. See Remarks.

+

Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the optimized mesh. If the edge has no adjacent faces, the value is 0xffffffff.

+

An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is null, face remap data is not returned.

+

Address of a reference to an interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.

+

Address of a reference to an interface, representing the optimized mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling . The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.

This method is very similar to the method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh.

+
+ + bb174071 + HRESULT ID3DXMesh::Optimize([In] unsigned int Flags,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] ID3DXMesh** ppOptMesh) + ID3DXMesh::Optimize +
+ + +

Generates a mesh with reordered faces and vertices to optimize drawing performance. This method reorders the existing mesh.

+
+

Combination of one or more D3DXMESHOPT flags, specifying the type of optimization to perform.

+

Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the source mesh. If the edge has no adjacent faces, the value is 0xffffffff.

+

Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the optimized mesh. If the edge has no adjacent faces, the value is 0xffffffff. If the value supplied for this argument is null, adjacency data is not returned.

+

An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is null, face remap data is not returned.

+

Address of a reference to an interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. If the value supplied for this argument is null, vertex remap data is not returned.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_CANNOTATTRSORT, E_OUTOFMEMORY.

+ +

Before running , an application must generate an adjacency buffer by calling . The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.

Note??This method will fail if the mesh is sharing its vertex buffer with another mesh, unless the is set in Flags.

+
+ + bb174072 + HRESULT ID3DXMesh::OptimizeInplace([In] unsigned int Flags,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap) + ID3DXMesh::OptimizeInplace +
+ + +

Sets the attribute table for a mesh and the number of entries stored in the table.

+
+

Pointer to an array of structures, representing the entries in the mesh attribute table.

+

Number of attributes in the mesh attribute table.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling again.

+
+ + bb174073 + HRESULT ID3DXMesh::SetAttributeTable([In] const D3DXATTRIBUTERANGE* pAttribTable,[In] unsigned int cAttribTableSize) + ID3DXMesh::SetAttributeTable +
+ + +

This interface encapsulates patch mesh functionality.

+
+ +

A patch mesh is a mesh that consists of a series of patches.

To obtain the interface, call the function.

The LPD3DXPATCHMESH type is defined as a reference to the interface, as follows:

 typedef struct  *LPD3DXPATCHMESH;	
+            
+
+ + bb174075 + ID3DXPatchMesh + ID3DXPatchMesh +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the number of patches in the mesh.

+
+

The number of patches.

+ + bb174083 + unsigned int ID3DXPatchMesh::GetNumPatches() + ID3DXPatchMesh::GetNumPatches +
+ + +

Gets the number of vertices in the mesh.

+
+

The number of vertices.

+ + bb174084 + unsigned int ID3DXPatchMesh::GetNumVertices() + ID3DXPatchMesh::GetNumVertices +
+ + +

Gets the vertex declaration.

+
+

Array of elements describing the vertex format of the mesh vertices. The dimension of this declarator array is . The vertex element array ends with the D3DDECL_END macro.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The array of elements includes the D3DDECL_END macro, which ends the declaration.

+
+ + bb174079 + HRESULT ID3DXPatchMesh::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration) + ID3DXPatchMesh::GetDeclaration +
+ + +

Gets the number of control vertices per patch.

+
+

The number of control vertices per patch.

+ + bb174078 + unsigned int ID3DXPatchMesh::GetControlVerticesPerPatch() + ID3DXPatchMesh::GetControlVerticesPerPatch +
+ + +

Gets the type of patch.

+
+

The patch type.

+ +

For more information about patch types, see .

+
+ + bb174085 + unsigned int ID3DXPatchMesh::GetOptions() + ID3DXPatchMesh::GetOptions +
+ + +

Gets the device that created the mesh.

+
+

Pointer to the device.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb174080 + HRESULT ID3DXPatchMesh::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXPatchMesh::GetDevice +
+ + +

Gets the attributes of the patch.

+
+

Pointer to the structures containing the patch attributes. For more information about patch attributes, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ + bb174086 + HRESULT ID3DXPatchMesh::GetPatchInfo([In] D3DXPATCHINFO* PatchInfo) + ID3DXPatchMesh::GetPatchInfo +
+ + +

Gets the mesh vertex buffer.

+
+

Pointer to the vertex buffer.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This method assumes uniform tessellation.

+
+ + bb174088 + HRESULT ID3DXPatchMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB) + ID3DXPatchMesh::GetVertexBuffer +
+ + +

Gets the mesh index buffer.

+
+

Pointer to the index buffer.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The index buffer contains the vertex ordering in the vertex buffer. The index buffer is used to access the vertex buffer when the mesh is rendered.

+
+ + bb174082 + HRESULT ID3DXPatchMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB) + ID3DXPatchMesh::GetIndexBuffer +
+ + +

Lock the vertex buffer.

+
+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

VOID* reference to a memory buffer containing the returned vertex data.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The vertex buffer is usually locked, written to, and then unlocked for reading.

Patch meshes use 16-bit index buffers.

+
+ + bb174091 + HRESULT ID3DXPatchMesh::LockVertexBuffer([In] unsigned int flags,[In] void** ppData) + ID3DXPatchMesh::LockVertexBuffer +
+ + +

Unlock the vertex buffer.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The vertex buffer is usually locked, written to, and then unlocked for reading.

+
+ + bb174098 + HRESULT ID3DXPatchMesh::UnlockVertexBuffer() + ID3DXPatchMesh::UnlockVertexBuffer +
+ + +

Lock the index buffer.

+
+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

VOID* reference to a memory buffer containing the returned index data.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The index buffer is usually locked, written to, and then unlocked for reading. Patch mesh index buffers are 16-bit buffers.

+
+ + bb174090 + HRESULT ID3DXPatchMesh::LockIndexBuffer([In] unsigned int flags,[In] void** ppData) + ID3DXPatchMesh::LockIndexBuffer +
+ + +

Unlock the index buffer.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The index buffer is usually locked, written to, and then unlocked for reading.

+
+ + bb174097 + HRESULT ID3DXPatchMesh::UnlockIndexBuffer() + ID3DXPatchMesh::UnlockIndexBuffer +
+ + +

Locks the attribute buffer.

+
+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

Address of a reference to a buffer containing a DWORD for each face in the mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The attribute buffer is usually locked, written to, and then unlocked for reading.

+
+ + bb174089 + HRESULT ID3DXPatchMesh::LockAttributeBuffer([In] unsigned int flags,[In] unsigned int** ppData) + ID3DXPatchMesh::LockAttributeBuffer +
+ + +

Unlock the attribute buffer.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

The attribute buffer is usually locked, written to, and then unlocked for reading.

+
+ + bb174096 + HRESULT ID3DXPatchMesh::UnlockAttributeBuffer() + ID3DXPatchMesh::UnlockAttributeBuffer +
+ + +

Gets the size of the tessellated mesh, given a tessellation level.

+
+

Tessellation level.

+

Adaptive tessellation. For adaptive tessellation, set this value to TRUE and set fTessLevel to the maximum tessellation value. This will result in the maximum mesh size necessary for adaptive tessellation.

+

Pointer to the number of triangles generated by the tessellated mesh.

+

Pointer to the number of vertices generated by the tessellated mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This method assumes uniform tessellation.

+
+ + bb174087 + HRESULT ID3DXPatchMesh::GetTessSize([In] float fTessLevel,[In] unsigned int Adaptive,[Out] unsigned int* NumTriangles,[Out] unsigned int* NumVertices) + ID3DXPatchMesh::GetTessSize +
+ + +

Generate a list of mesh edges and the patches that share each edge.

+
+

Specifies that vertices that differ in position by less than the tolerance should be treated as coincident.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

After an application generates adjacency information for a mesh, the mesh data can be optimized for better drawing performance. This method determines which patches are adjacent (within the provided tolerance). This information is used internally to optimize tessellation.

+
+ + bb174077 + HRESULT ID3DXPatchMesh::GenerateAdjacency([In] float Tolerance) + ID3DXPatchMesh::GenerateAdjacency +
+ + +

Creates a new patch mesh with the specified vertex declaration.

+
+

Combination of one or more D3DXMESH flags that specify creation options for the mesh.

+

Array of elements that specify the vertex format for the vertices in the output mesh.

+

Address of a reference to an interface that represents the cloned mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

CloneMesh converts the vertex buffer to the new vertex declaration. Entries in the vertex declaration that are new to the original mesh are set to 0. If the current mesh has adjacency, the new mesh will also have adjacency.

+
+ + bb174076 + HRESULT ID3DXPatchMesh::CloneMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDecl,[In] ID3DXPatchMesh** pMesh) + ID3DXPatchMesh::CloneMesh +
+ + +

Optimizes the patch mesh for efficient tessellation.

+
+

Currently unused.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_CANNOTATTRSORT.

+ +

After an application generates adjacency information for a mesh, the mesh data can be optimized (reordered) for better drawing performance. This method determines which patches are adjacent (within the provided tolerance).

Adjacency information is also used to optimize tessellation. Generate adjacency information once and tessellate repeatedly by calling . The optimization performed is independent of the actual tessellation level used. However, if the mesh vertices are changed, you must regenerate the adjacency information.

+
+ + bb174092 + HRESULT ID3DXPatchMesh::Optimize([In] unsigned int flags) + ID3DXPatchMesh::Optimize +
+ + +

Sets mesh geometry displacement parameters.

+
+

Texture containing the displacement data.

+

Minification level. For more information, see .

+

Magnification level. For more information, see .

+

Mip filter level. For more information, see .

+

Texture address wrap mode. For more information, see

+

Level of detail bias value.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Displacement maps can only be 2D textures. Mipmapping is ignored for nonadaptive tessellation.

+
+ + bb174093 + HRESULT ID3DXPatchMesh::SetDisplaceParam([In] IDirect3DBaseTexture9* Texture,[In] D3DTEXTUREFILTERTYPE MinFilter,[In] D3DTEXTUREFILTERTYPE MagFilter,[In] D3DTEXTUREFILTERTYPE MipFilter,[In] D3DTEXTUREADDRESS Wrap,[In] unsigned int dwLODBias) + ID3DXPatchMesh::SetDisplaceParam +
+ + +

Gets mesh geometry displacement parameters.

+
+

Texture containing the displacement data.

+

Minification level. For more information, see .

+

Magnification level. For more information, see .

+

Mip filter level. For more information, see .

+

Texture address wrap mode. For more information, see .

+

Level of detail bias value.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Displacement maps can only be 2D textures. Mipmapping is ignored for nonadaptive tessellation.

+
+ + bb174081 + HRESULT ID3DXPatchMesh::GetDisplaceParam([Out] IDirect3DBaseTexture9** Texture,[Out] D3DTEXTUREFILTERTYPE* MinFilter,[Out] D3DTEXTUREFILTERTYPE* MagFilter,[Out] D3DTEXTUREFILTERTYPE* MipFilter,[Out] D3DTEXTUREADDRESS* Wrap,[Out] unsigned int* dwLODBias) + ID3DXPatchMesh::GetDisplaceParam +
+ + +

Performs uniform tessellation based on the tessellation level.

+
+

Tessellation level. This is the number of vertices introduced between existing vertices. The range of this float parameter is 0 < fTessLevel <= 32.

+

Resulting tessellated mesh. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This function will perform more efficiently if the patch mesh has been optimized using .

+
+ + bb174094 + HRESULT ID3DXPatchMesh::Tessellate([In] float fTessLevel,[In] ID3DXMesh* pMesh) + ID3DXPatchMesh::Tessellate +
+ + +

Performs adaptive tessellation based on the z-based adaptive tessellation criterion.

+
+

Specifies a 4D vector that is dotted with the vertices to get the per-vertex adaptive tessellation amount. Each edge is tessellated to the average value of the tessellation levels for the two vertices it connects.

+

Maximum limit for adaptive tessellation. This is the number of vertices introduced between existing vertices. This integer value can range from 1 to 32, inclusive.

+

Minimum limit for adaptive tessellation. This is the number of vertices introduced between existing vertices. This integer value can range from 1 to 32, inclusive.

+

Resulting tessellated mesh. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This function will perform more efficiently if the patch mesh has been optimized using .

+
+ + bb174095 + HRESULT ID3DXPatchMesh::TessellateAdaptive([In] const D3DXVECTOR4* pTrans,[In] unsigned int dwMaxTessLevel,[In] unsigned int dwMinTessLevel,[In] ID3DXMesh* pMesh) + ID3DXPatchMesh::TessellateAdaptive +
+ + +

Gets the number of patches in the mesh.

+
+ + bb174083 + GetNumPatches + GetNumPatches + unsigned int ID3DXPatchMesh::GetNumPatches() +
+ + +

Gets the number of vertices in the mesh.

+
+ + bb174084 + GetNumVertices + GetNumVertices + unsigned int ID3DXPatchMesh::GetNumVertices() +
+ + +

Gets the number of control vertices per patch.

+
+ + bb174078 + GetControlVerticesPerPatch + GetControlVerticesPerPatch + unsigned int ID3DXPatchMesh::GetControlVerticesPerPatch() +
+ + +

Gets the type of patch.

+
+ +

For more information about patch types, see .

+
+ + bb174085 + GetOptions + GetOptions + unsigned int ID3DXPatchMesh::GetOptions() +
+ + +

Gets the device that created the mesh.

+
+ + bb174080 + GetDevice + GetDevice + HRESULT ID3DXPatchMesh::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Gets the mesh vertex buffer.

+
+ +

This method assumes uniform tessellation.

+
+ + bb174088 + GetVertexBuffer + GetVertexBuffer + HRESULT ID3DXPatchMesh::GetVertexBuffer([Out] IDirect3DVertexBuffer9** ppVB) +
+ + +

Gets the mesh index buffer.

+
+ +

The index buffer contains the vertex ordering in the vertex buffer. The index buffer is used to access the vertex buffer when the mesh is rendered.

+
+ + bb174082 + GetIndexBuffer + GetIndexBuffer + HRESULT ID3DXPatchMesh::GetIndexBuffer([Out] IDirect3DIndexBuffer9** ppIB) +
+ + +

Applications use the methods of the interface to encapsulate the functionality of a pixel shader.

+
+ +

The LPDIRECT3DPIXELSHADER9 and PDIRECT3DPIXELSHADER9 types are defined as references to the interface.

typedef struct  *LPDIRECT3DPIXELSHADER9, *PDIRECT3DPIXELSHADER9;
+
+ + bb205869 + IDirect3DPixelShader9 + IDirect3DPixelShader9 +
+ + Constant MaxDynamicFlowControlDepth. + D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH + + + Constant MinDynamicFlowControlDepth. + D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH + + + Constant MaxTemps. + D3DPS20_MAX_NUMTEMPS + + + Constant MinTemps. + D3DPS20_MIN_NUMTEMPS + + + Constant MaxStaticFlowControlDepth. + D3DPS20_MAX_STATICFLOWCONTROLDEPTH + + + Constant MinStaticFlowControlDepth. + D3DPS20_MIN_STATICFLOWCONTROLDEPTH + + + Constant MaxInstructionSlots. + D3DPS20_MAX_NUMINSTRUCTIONSLOTS + + + Constant MinInstructionSlots. + D3DPS20_MIN_NUMINSTRUCTIONSLOTS + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the device.

+
+

Pointer to the interface that is returned.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205870 + HRESULT IDirect3DPixelShader9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DPixelShader9::GetDevice +
+ + +

Gets a reference to the shader data.

+
+

Pointer to a buffer that contains the shader data. The application needs to allocate enough room for this.

+

Size of the data, in bytes. To get the buffer size that is needed to retrieve the data, set pData = null when calling GetFunction. Then call GetFunction with the returned size, to get the buffer data.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ + bb205871 + HRESULT IDirect3DPixelShader9::GetFunction([In] void* arg0,[InOut] unsigned int* pSizeOfData) + IDirect3DPixelShader9::GetFunction +
+ + + Initializes a new instance of the class. + + The device. + The function. + HRESULT IDirect3DDevice9::CreatePixelShader([In] const void* pFunction,[Out, Fast] IDirect3DPixelShader9** ppShader) + + + +

Gets the device.

+
+ + bb205870 + GetDevice + GetDevice + HRESULT IDirect3DPixelShader9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + + Gets the bytecode associated to this shader.. + + + + + No documentation. + + + bb280447 + ID3DXPMesh + ID3DXPMesh + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXPMesh::ClonePMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXPMesh** ppCloneMesh) + ID3DXPMesh::ClonePMeshFVF + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXPMesh::ClonePMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] ID3DXPMesh** ppCloneMesh) + ID3DXPMesh::ClonePMesh + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXPMesh::SetNumFaces([In] unsigned int Faces) + ID3DXPMesh::SetNumFaces + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXPMesh::SetNumVertices([In] unsigned int Vertices) + ID3DXPMesh::SetNumVertices + + + + No documentation. + + No documentation. + + unsigned int ID3DXPMesh::GetMaxFaces() + ID3DXPMesh::GetMaxFaces + + + + No documentation. + + No documentation. + + unsigned int ID3DXPMesh::GetMinFaces() + ID3DXPMesh::GetMinFaces + + + + No documentation. + + No documentation. + + unsigned int ID3DXPMesh::GetMaxVertices() + ID3DXPMesh::GetMaxVertices + + + + No documentation. + + No documentation. + + unsigned int ID3DXPMesh::GetMinVertices() + ID3DXPMesh::GetMinVertices + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXPMesh::Save([In] IStream* pStream,[In] const D3DXMATERIAL* pMaterials,[In] const D3DXEFFECTINSTANCE* pEffectInstances,[In] unsigned int NumMaterials) + ID3DXPMesh::Save + + + +

Generates a new mesh with reordered faces and vertices to optimize drawing performance.

+
+

Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except , , and ).

+

Pointer to an array of three DWORDs per face that specifies the three neighbors for each face in the optimized mesh. If the edge has no adjacent faces, the value is 0xffffffff.

+

An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is null, face remap data is not returned.

+

Address of a reference to an interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.

+

Address of a reference to an interface, representing the optimized mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling . The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.

This method is very similar to the method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh.

+
+ + bb174071 + HRESULT ID3DXPMesh::Optimize([In] unsigned int Flags,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] ID3DXMesh** ppOptMesh) + ID3DXPMesh::Optimize +
+ + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXPMesh::OptimizeBaseLOD([In] unsigned int Flags,[In] unsigned int* pFaceRemap) + ID3DXPMesh::OptimizeBaseLOD + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXPMesh::TrimByFaces([In] unsigned int NewFacesMin,[In] unsigned int NewFacesMax,[In] unsigned int* rgiFaceRemap,[In] unsigned int* rgiVertRemap) + ID3DXPMesh::TrimByFaces + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXPMesh::TrimByVertices([In] unsigned int NewVerticesMin,[In] unsigned int NewVerticesMax,[In] unsigned int* rgiFaceRemap,[In] unsigned int* rgiVertRemap) + ID3DXPMesh::TrimByVertices + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXPMesh::GetAdjacency([Out] unsigned int* pAdjacency) + ID3DXPMesh::GetAdjacency + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXPMesh::GenerateVertexHistory([In] unsigned int* pVertexHistory) + ID3DXPMesh::GenerateVertexHistory + + + + No documentation. + + + GetMaxFaces + GetMaxFaces + unsigned int ID3DXPMesh::GetMaxFaces() + + + + No documentation. + + + GetMinFaces + GetMinFaces + unsigned int ID3DXPMesh::GetMinFaces() + + + + No documentation. + + + GetMaxVertices + GetMaxVertices + unsigned int ID3DXPMesh::GetMaxVertices() + + + + No documentation. + + + GetMinVertices + GetMinVertices + unsigned int ID3DXPMesh::GetMinVertices() + + + + No documentation. + + + GetAdjacency + GetAdjacency + HRESULT ID3DXPMesh::GetAdjacency([Out] unsigned int* pAdjacency) + + + +

Applications use the methods of the interface to perform asynchronous queries on a driver.

+
+ +

The LPDIRECT3DQUERY9 and PDIRECT3DQUERY9 types are defined as references to the interface.

typedef struct  *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
+
+ + bb205872 + IDirect3DQuery9 + IDirect3DQuery9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the device that is being queried.

+
+

Pointer to the device being queried. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205875 + HRESULT IDirect3DQuery9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DQuery9::GetDevice +
+ + +

Gets the query type.

+
+

Returns the query type. See .

+ + bb205876 + D3DQUERYTYPE IDirect3DQuery9::GetType() + IDirect3DQuery9::GetType +
+ + +

Gets the number of bytes in the query data.

+
+

Returns the number of bytes of query data.

+ + bb205874 + unsigned int IDirect3DQuery9::GetDataSize() + IDirect3DQuery9::GetDataSize +
+ + +

Issue a query.

+
+

Query flags specify the type of state change for the query. See and .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A signaled query means the query has completed, the data is available, and will return .

+
+ + bb205877 + HRESULT IDirect3DQuery9::Issue([In] D3DISSUE dwIssueFlags) + IDirect3DQuery9::Issue +
+ + +

Polls a queried resource to get the query state or a query result. For more information about queries, see Queries (Direct3D 9).

+
+ No documentation. + No documentation. + No documentation. +

The return type identifies the query state (see Queries (Direct3D 9)). The method returns if the query data is available and S_FALSE if it is not. These are considered successful return values. If the method fails when D3DGETDATA_FLUSH is used, the return value can be .

+ +

It is possible to lose the device while polling for query status. When D3DGETDATA_FLUSH is specified, this method will return in response to a lost device. This allows an application to prevent threads from endlessly polling due to a lost device (which cannot respond to the query).

An application must never write code that only invokes GetData ( ... , 0 ), expecting that GetData will eventually return by itself over time. This is true, even if the application has used the FLUSH flag with GetData in the past. For example:

// Enables an infinite loop:	
+            while( pQuery->GetData( ... , 0 ) == S_FALSE ) ; // Still enables an infinite loop:	
+            pQuery->GetData( ... , D3DGETDATA_FLUSH );	
+            while( pQuery->GetData( ... , 0 ) == S_FALSE ) ; // Does not enable an infinite loop because eventually the command	
+            // buffer will fill up and that will cause a flush to occur.	
+            while( pQuery->GetData( ..., 0 ) == S_FALSE ) { pDevice->SetTexture(...); pDevice->Draw(...);	
+            }	
+            
+
+ + bb205873 + HRESULT IDirect3DQuery9::GetData([In] void* pData,[In] unsigned int dwSize,[In] unsigned int dwGetDataFlags) + IDirect3DQuery9::GetData +
+ + + Initializes a new instance of the class. + + The device. + The type. + + + + +

Gets the device that is being queried.

+
+ + bb205875 + GetDevice + GetDevice + HRESULT IDirect3DQuery9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Gets the number of bytes in the query data.

+
+ + bb205874 + GetDataSize + GetDataSize + unsigned int IDirect3DQuery9::GetDataSize() +
+ + + Gets the type. + + D3DQUERYTYPE IDirect3DQuery9::GetType() + + + +

The interface is used to generalize the process of rendering to environment maps.

+
+ +

An environment map is used to texture-map scene geometry to provide a more sophisticated scene without using complex geometry. This interface supports creating surfaces for the following kinds of geometry: cube, half sphere or hemispheric, parabolic, or sphere.

The interface is obtained by calling the function.

The LPD3DXRenderToEnvMap type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXRenderToEnvMap;	
+            
+
+ + bb174181 + ID3DXRenderToEnvMap + ID3DXRenderToEnvMap +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the Direct3D device associated with the environment map.

+
+

Address of a reference to an interface that represents the Direct3D device object associated with the environment map.

+

If the method succeeds, the return value is . If the method fails, the return value can be . Calling this method increases the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+ + bb174189 + HRESULT ID3DXRenderToEnvMap::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXRenderToEnvMap::GetDevice +
+ + +

Retrieves the description of the render surface.

+
+

Pointer to a structure that describes the rendering surface.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174188 + HRESULT ID3DXRenderToEnvMap::GetDesc([Out] D3DXRTE_DESC* pDesc) + ID3DXRenderToEnvMap::GetDesc +
+ + +

Initiate the rendering of a cubic environment map.

+
+

Pointer to an interface that represents the cube texture to which to render.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

See to draw each of the 6 faces.

+
+ + bb174182 + HRESULT ID3DXRenderToEnvMap::BeginCube([In] IDirect3DCubeTexture9* pCubeTex) + ID3DXRenderToEnvMap::BeginCube +
+ + +

Initiate the rendering of a spherical environment map.

+
+

Pointer to an interface that represents the texture to which to render.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: .E_FAIL

+ +

See to draw the face.

+
+ + bb174185 + HRESULT ID3DXRenderToEnvMap::BeginSphere([In] IDirect3DTexture9* pTex) + ID3DXRenderToEnvMap::BeginSphere +
+ + +

Initiate the rendering of a hemispheric environment map.

+
+

Pointer to an interface that represents the positive texture render surface.

+

Pointer to an interface that represents the negative texture render surface.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: .E_FAIL

+ +

See to draw the face.

+
+ + bb174183 + HRESULT ID3DXRenderToEnvMap::BeginHemisphere([In] IDirect3DTexture9* pTexZPos,[In] IDirect3DTexture9* pTexZNeg) + ID3DXRenderToEnvMap::BeginHemisphere +
+ + +

Initiate the rendering of a parabolic environment map.

+
+

Pointer to an interface that represents the positive render texture.

+

Pointer to an interface that represents the negative render texture.

+

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: .E_FAIL

+ +

See to draw the faces.

+
+ + bb174184 + HRESULT ID3DXRenderToEnvMap::BeginParabolic([In] IDirect3DTexture9* pTexZPos,[In] IDirect3DTexture9* pTexZNeg) + ID3DXRenderToEnvMap::BeginParabolic +
+ + +

Initiate the drawing of each face of an environment map.

+
+

The first face of the environmental cube map. See .

+

A valid combination of one or more flags.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method must be called once for each type of environment map. The only exception is a cubic environment map which requires this method to be called six times, once for each face in . For more information, see Environment Mapping (Direct3D 9).

+
+ + bb174187 + HRESULT ID3DXRenderToEnvMap::Face([In] D3DCUBEMAP_FACES Face,[In] unsigned int MipFilter) + ID3DXRenderToEnvMap::Face +
+ + +

Restore all render targets and, if needed, compose all the rendered faces into the environment map surface.

+
+

A valid combination of one or more flags.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174186 + HRESULT ID3DXRenderToEnvMap::End([In] unsigned int MipFilter) + ID3DXRenderToEnvMap::End +
+ + +

Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost, or before resetting a device.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method should be called whenever the device is lost or before the user calls . Even if the device was not actually lost, is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling and then .

+
+ + bb174190 + HRESULT ID3DXRenderToEnvMap::OnLostDevice() + ID3DXRenderToEnvMap::OnLostDevice +
+ + +

Use this method to re-acquire resources and save initial state.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

should be called each time the device is reset (using ), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.

+
+ + bb174191 + HRESULT ID3DXRenderToEnvMap::OnResetDevice() + ID3DXRenderToEnvMap::OnResetDevice +
+ + +

Retrieves the Direct3D device associated with the environment map.

+
+ + bb174189 + GetDevice + GetDevice + HRESULT ID3DXRenderToEnvMap::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Retrieves the description of the render surface.

+
+ + bb174188 + GetDesc + GetDesc + HRESULT ID3DXRenderToEnvMap::GetDesc([Out] D3DXRTE_DESC* pDesc) +
+ + +

The interface is used to generalize the process of rendering to surfaces.

+
+ +

Surfaces can be used in a variety of ways including render targets, off-screen rendering, or rendering to textures.

A surface can be configured using a separate viewport using the method, to provide a custom render view. If the surface is not a render target, a compatible render target is used, and the result is copied to the surface at the end of the scene.

The interface is obtained by calling the function.

The LPD3DXRENDERTOSURFACE type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXRENDERTOSURFACE;	
+            
+
+ + bb174192 + ID3DXRenderToSurface + ID3DXRenderToSurface +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the Direct3D device associated with the render surface.

+
+

Address of a reference to an interface, representing the Direct3D device object associated with the render surface.

+

If the method succeeds, the return value is . If the method fails, the return value can be . Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

+ + bb174196 + HRESULT ID3DXRenderToSurface::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXRenderToSurface::GetDevice +
+ + +

Retrieves the parameters of the render surface.

+
+

Pointer to a structure, describing the parameters of the render surface.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174195 + HRESULT ID3DXRenderToSurface::GetDesc([Out] D3DXRTS_DESC* pDesc) + ID3DXRenderToSurface::GetDesc +
+ + +

Begins a scene.

+
+

Pointer to an interface, representing the render surface.

+

Pointer to a structure, describing the viewport for the scene.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: . D3DXERR_INVALIDDATA E_OUTOFMEMORY

+ + bb174193 + HRESULT ID3DXRenderToSurface::BeginScene([In] IDirect3DSurface9* pSurface,[In] const D3DVIEWPORT9* pViewport) + ID3DXRenderToSurface::BeginScene +
+ + +

Ends a scene.

+
+

Filter options, enumerated in .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174194 + HRESULT ID3DXRenderToSurface::EndScene([In] D3DX_FILTER MipFilter) + ID3DXRenderToSurface::EndScene +
+ + +

Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost or before resetting a device.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method should be called whenever the device is lost or before the user calls . Even if the device was not actually lost, is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling and then .

+
+ + bb174197 + HRESULT ID3DXRenderToSurface::OnLostDevice() + ID3DXRenderToSurface::OnLostDevice +
+ + +

Use this method to re-acquire resources and save initial state.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

should be called each time the device is reset (using ), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.

+
+ + bb174198 + HRESULT ID3DXRenderToSurface::OnResetDevice() + ID3DXRenderToSurface::OnResetDevice +
+ + + Creates a render surface. + +

Pointer to an interface, the device to be associated with the render surface.

+

Width of the render surface, in pixels.

+

Height of the render surface, in pixels.

+

Member of the enumerated type, describing the pixel format of the render surface.

+

If TRUE, the render surface supports a depth-stencil surface. Otherwise, this member is set to . This function will create a new depth buffer.

+

If DepthStencil is set to TRUE, this parameter is a member of the enumerated type, describing the depth-stencil format of the render surface.

+ bb172791 + HRESULT D3DXCreateRenderToSurface([In] IDirect3DDevice9* pDevice,[In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] BOOL DepthStencil,[In] D3DFORMAT DepthStencilFormat,[In] ID3DXRenderToSurface** ppRenderToSurface) + D3DXCreateRenderToSurface +
+ + +

Retrieves the Direct3D device associated with the render surface.

+
+ + bb174196 + GetDevice + GetDevice + HRESULT ID3DXRenderToSurface::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Retrieves the parameters of the render surface.

+
+ + bb174195 + GetDesc + GetDesc + HRESULT ID3DXRenderToSurface::GetDesc([Out] D3DXRTS_DESC* pDesc) +
+ + + No documentation. + + + bb280438 + ID3DXSPMesh + ID3DXSPMesh + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + No documentation. + + No documentation. + + unsigned int ID3DXSPMesh::GetNumFaces() + ID3DXSPMesh::GetNumFaces + + + + No documentation. + + No documentation. + + unsigned int ID3DXSPMesh::GetNumVertices() + ID3DXSPMesh::GetNumVertices + + + + No documentation. + + No documentation. + + unsigned int ID3DXSPMesh::GetFVF() + ID3DXSPMesh::GetFVF + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration) + ID3DXSPMesh::GetDeclaration + + + + No documentation. + + No documentation. + + unsigned int ID3DXSPMesh::GetOptions() + ID3DXSPMesh::GetOptions + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXSPMesh::GetDevice + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::CloneMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pVertexRemapOut,[In] ID3DXMesh** ppCloneMesh) + ID3DXSPMesh::CloneMeshFVF + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::CloneMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pVertexRemapOut,[In] ID3DXMesh** ppCloneMesh) + ID3DXSPMesh::CloneMesh + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::ClonePMeshFVF([In] unsigned int Options,[In] unsigned int FVF,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pVertexRemapOut,[In] float* pErrorsByFace,[In] ID3DXPMesh** ppCloneMesh) + ID3DXSPMesh::ClonePMeshFVF + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::ClonePMesh([In] unsigned int Options,[In] const D3DVERTEXELEMENT9* pDeclaration,[In] IDirect3DDevice9* pD3DDevice,[In] unsigned int* pVertexRemapOut,[In] float* pErrorsbyFace,[In] ID3DXPMesh** ppCloneMesh) + ID3DXSPMesh::ClonePMesh + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::ReduceFaces([In] unsigned int Faces) + ID3DXSPMesh::ReduceFaces + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::ReduceVertices([In] unsigned int Vertices) + ID3DXSPMesh::ReduceVertices + + + + No documentation. + + No documentation. + + unsigned int ID3DXSPMesh::GetMaxFaces() + ID3DXSPMesh::GetMaxFaces + + + + No documentation. + + No documentation. + + unsigned int ID3DXSPMesh::GetMaxVertices() + ID3DXSPMesh::GetMaxVertices + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::GetVertexAttributeWeights([In] D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights) + ID3DXSPMesh::GetVertexAttributeWeights + + + + No documentation. + + No documentation. + No documentation. + + HRESULT ID3DXSPMesh::GetVertexWeights([Out] float* pVertexWeights) + ID3DXSPMesh::GetVertexWeights + + + + No documentation. + + + GetNumFaces + GetNumFaces + unsigned int ID3DXSPMesh::GetNumFaces() + + + + No documentation. + + + GetNumVertices + GetNumVertices + unsigned int ID3DXSPMesh::GetNumVertices() + + + + No documentation. + + + GetFVF + GetFVF + unsigned int ID3DXSPMesh::GetFVF() + + + + No documentation. + + + GetOptions + GetOptions + unsigned int ID3DXSPMesh::GetOptions() + + + + No documentation. + + + GetDevice + GetDevice + HRESULT ID3DXSPMesh::GetDevice([Out] IDirect3DDevice9** ppDevice) + + + + No documentation. + + + GetMaxFaces + GetMaxFaces + unsigned int ID3DXSPMesh::GetMaxFaces() + + + + No documentation. + + + GetMaxVertices + GetMaxVertices + unsigned int ID3DXSPMesh::GetMaxVertices() + + + + No documentation. + + + GetVertexWeights + GetVertexWeights + HRESULT ID3DXSPMesh::GetVertexWeights([Out] float* pVertexWeights) + + + + No documentation. + + + bb280439 + ID3DXSkinInfo + ID3DXSkinInfo + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Sets the influence value for a bone.

+
+

Bone number.

+

Number of influences.

+

The array of vertices influenced by a bone.

+

The array of weights influenced by a bone.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174224 + HRESULT ID3DXSkinInfo::SetBoneInfluence([In] unsigned int bone,[In] unsigned int numInfluences,[In] const unsigned int* vertices,[In] const float* weights) + ID3DXSkinInfo::SetBoneInfluence +
+ + +

Sets an influence value of a bone on a single vertex.

+
+

Index of the bone. Must be between 0 and the number of bones.

+

Index of the influence array of the specified bone.

+

Blend factor of the specified bone influence.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174227 + HRESULT ID3DXSkinInfo::SetBoneVertexInfluence([In] unsigned int boneNum,[In] unsigned int influenceNum,[In] float weight) + ID3DXSkinInfo::SetBoneVertexInfluence +
+ + +

Gets the number of influences for a bone.

+
+

Bone number.

+

Returns the number of influences for a bone.

+ + bb174220 + unsigned int ID3DXSkinInfo::GetNumBoneInfluences([In] unsigned int bone) + ID3DXSkinInfo::GetNumBoneInfluences +
+ + +

Gets the vertices and weights that a bone influences.

+
+

Bone number.

+

Get the array of vertices influenced by a bone.

+

Get the array of weights influenced by a bone.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Use to find out how many vertices the bone influences.

+
+ + bb174211 + HRESULT ID3DXSkinInfo::GetBoneInfluence([In] unsigned int bone,[Out] unsigned int* vertices,[Out] float* weights) + ID3DXSkinInfo::GetBoneInfluence +
+ + +

Retrieves the blend factor and vertex affected by a specified bone influence.

+
+

Index of the bone. Must be between 0 and the number of bones.

+

Index of the influence array of the specified bone.

+

Pointer to the blend factor influenced by influenceNum.

+

Pointer to the vertex influenced by influenceNum.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174214 + HRESULT ID3DXSkinInfo::GetBoneVertexInfluence([In] unsigned int boneNum,[In] unsigned int influenceNum,[Out] float* pWeight,[Out] unsigned int* pVertexNum) + ID3DXSkinInfo::GetBoneVertexInfluence +
+ + +

Gets the maximum number of influences for any vertex in the mesh.

+
+

Pointer to the maximum vertex influence.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174218 + HRESULT ID3DXSkinInfo::GetMaxVertexInfluences([Out] unsigned int* maxVertexInfluences) + ID3DXSkinInfo::GetMaxVertexInfluences +
+ + +

Gets the number of bones.

+
+

Returns the number of bones.

+ + bb174221 + unsigned int ID3DXSkinInfo::GetNumBones() + ID3DXSkinInfo::GetNumBones +
+ + +

Retrieves the index of the bone influence affecting a single vertex.

+
+

Index of the bone. Must be between 0 and the number of bones.

+

Index of the vertex for which the bone influence is to be found. Must be between 0 and the number of vertices in the mesh.

+

Pointer to the index of the bone influence that affects vertexNum.

+

If the method succeeds, the return value is . If the specified bone does not influence the given vertex, S_FALSE is returned. If the method fails, the return value can be .

+ + bb174210 + HRESULT ID3DXSkinInfo::FindBoneVertexInfluenceIndex([In] unsigned int boneNum,[In] unsigned int vertexNum,[In] unsigned int* pInfluenceIndex) + ID3DXSkinInfo::FindBoneVertexInfluenceIndex +
+ + +

Gets the maximum face influences in a triangle mesh with the specified index buffer.

+
+

Pointer to the index buffer that contains the mesh index data.

+

Number of faces in the mesh.

+

Pointer to the maximum face influences.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174217 + HRESULT ID3DXSkinInfo::GetMaxFaceInfluences([In] IDirect3DIndexBuffer9* pIB,[In] unsigned int NumFaces,[Out] unsigned int* maxFaceInfluences) + ID3DXSkinInfo::GetMaxFaceInfluences +
+ + +

Sets the minimum bone influence. Influence values smaller than this are ignored.

+
+

Minimum influence value. Influence values smaller than this are ignored.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174230 + HRESULT ID3DXSkinInfo::SetMinBoneInfluence([In] float MinInfl) + ID3DXSkinInfo::SetMinBoneInfluence +
+ + +

Gets the minimum bone influence. Influence values smaller than this are ignored.

+
+

Returns the minimum bone influence value.

+ + bb174219 + float ID3DXSkinInfo::GetMinBoneInfluence() + ID3DXSkinInfo::GetMinBoneInfluence +
+ + +

Sets the bone name.

+
+

Bone number

+

Bone name

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Bone names are returned by .

+
+ + bb174225 + HRESULT ID3DXSkinInfo::SetBoneName([In] unsigned int Bone,[In] const char* pName) + ID3DXSkinInfo::SetBoneName +
+ + +

Gets the bone name, from the bone index.

+
+

Bone number.

+

Returns the bone name. Do not free this string.

+ + bb174212 + const char* ID3DXSkinInfo::GetBoneName([In] unsigned int Bone) + ID3DXSkinInfo::GetBoneName +
+ + +

Sets the bone offset matrix.

+
+

Bone number.

+

Pointer to the bone offset matrix.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Bone names are returned by .

+
+ + bb174226 + HRESULT ID3DXSkinInfo::SetBoneOffsetMatrix([In] unsigned int Bone,[In] const D3DXMATRIX* pBoneTransform) + ID3DXSkinInfo::SetBoneOffsetMatrix +
+ + +

Gets the bone offset matrix.

+
+

Bone number.

+

Returns a reference to the bone offset matrix. Do not free this reference.

+ + bb174213 + D3DXMATRIX* ID3DXSkinInfo::GetBoneOffsetMatrix([In] unsigned int Bone) + ID3DXSkinInfo::GetBoneOffsetMatrix +
+ + +

Clones a skin info object.

+
+

Address of a reference to an object, which will contain the cloned object if the method is successful.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174207 + HRESULT ID3DXSkinInfo::Clone([In] ID3DXSkinInfo** ppSkinInfo) + ID3DXSkinInfo::Clone +
+ + +

Updates bone influence information to match vertices after they are reordered. This method should be called if the target vertex buffer has been reordered externally.

+
+

Number of vertices to remap.

+

Array of DWORDS whose length is specified by NumVertices.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Each element in pVertexRemap specifies the previous vertex index for that position. For example, if a vertex was in position 3 but has been remapped to position 5, then the fifth element of pVertexRemap should contain 3. The vertex remap array returned by can be used.

+
+ + bb174223 + HRESULT ID3DXSkinInfo::Remap([In] unsigned int NumVertices,[In] unsigned int* pVertexRemap) + ID3DXSkinInfo::Remap +
+ + +

Sets the flexible vertex format (FVF) type.

+
+

Flexible vertex format. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174229 + HRESULT ID3DXSkinInfo::SetFVF([In] unsigned int FVF) + ID3DXSkinInfo::SetFVF +
+ + +

Sets the vertex declaration.

+
+

Pointer to an array of elements.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174228 + HRESULT ID3DXSkinInfo::SetDeclaration([In] const D3DVERTEXELEMENT9* pDeclaration) + ID3DXSkinInfo::SetDeclaration +
+ + +

Gets the fixed function vertex value.

+
+

Returns the flexible vertex format (FVF) codes.

+ +

This method can return 0 if the vertex format cannot be mapped directly to an FVF code. This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.

+
+ + bb174216 + unsigned int ID3DXSkinInfo::GetFVF() + ID3DXSkinInfo::GetFVF +
+ + +

Gets the vertex declaration.

+
+

Array of elements describing the vertex format of the mesh vertices. The upper limit of this declarator array is . The vertex element array ends with the D3DDECL_END macro.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

The array of elements includes the D3DDECL_END macro, which ends the declaration.

+
+ + bb174215 + HRESULT ID3DXSkinInfo::GetDeclaration([In] D3DVERTEXELEMENT9* Declaration) + ID3DXSkinInfo::GetDeclaration +
+ + +

Applies software skinning to the target vertices based on the current matrices.

+
+

Bone transform matrix.

+

Inverse transpose of the bone transform matrix.

+

Pointer to the buffer containing the source vertices.

+

Pointer to the buffer containing the destination vertices.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

When used to skin vertices with two position elements, this method skins the second position element with the inverse of the bone instead of the bone itself.

+
+ + bb174231 + HRESULT ID3DXSkinInfo::UpdateSkinnedMesh([In] const D3DXMATRIX* pBoneTransforms,[In] const D3DXMATRIX* pBoneInvTransposeTransforms,[In] const void* pVerticesSrc,[In] void* pVerticesDst) + ID3DXSkinInfo::UpdateSkinnedMesh +
+ + +

Takes a mesh and returns a new mesh with per-vertex blend weights and a bone combination table. The table describes which bones affect which subsets of the mesh.

+
+

Input mesh. See .

+

Currently unused.

+

Input mesh adjacency information.

+

Output mesh adjacency information.

+

An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the blended mesh. If the value supplied for this argument is null, face remap data is not returned.

+

Address of a reference to an interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. This parameter is optional; null may be used.

+

Pointer to a DWORD that will contain the maximum number of bone influences required per vertex for this skinning method.

+

Pointer to the number of bones in the bone combination table.

+

Pointer to the bone combination table. The data is organized in a structure.

+

Pointer to the new mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Each element in the remap array specifies the previous index for that position. For example, if a vertex was in position 3 but has been remapped to position 5, then the fifth element of pVertexRemap will contain 3.

This method does not run on hardware that does not support fixed-function vertex blending.

+
+ + bb174208 + HRESULT ID3DXSkinInfo::ConvertToBlendedMesh([In] ID3DXMesh* pMesh,[In] unsigned int Options,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] unsigned int* pMaxFaceInfl,[In] unsigned int* pNumBoneCombinations,[In] ID3DXBuffer** ppBoneCombinationTable,[In] ID3DXMesh** ppMesh) + ID3DXSkinInfo::ConvertToBlendedMesh +
+ + +

Takes a mesh and returns a new mesh with per-vertex blend weights, indices, and a bone combination table. The table describes which bone palettes affect which subsets of the mesh.

+
+

The input mesh. See .

+

Currently unused.

+

Number of bone matrices available for matrix palette skinning.

+

Input mesh adjacency information.

+

Output mesh adjacency information.

+

An array of DWORDs, one per face, that identifies the original mesh face that corresponds to each face in the blended mesh. If the value supplied for this argument is null, face remap data is not returned.

+

Address of a reference to an interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. This parameter is optional; null may be used.

+

Pointer to a DWORD that will contain the maximum number of bone influences required per vertex for this skinning method.

+

Pointer to the number of bones in the bone combination table.

+

Pointer to the bone combination table. The data is organized in a structure.

+

Pointer to the new mesh.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Each element in the remap arrays specifies the previous index for that position. For example, if a vertex was in position 3 but has been remapped to position 5, then the fifth element of pVertexRemap will contain 3.

This method does not run on hardware that does not support fixed-function vertex blending.

+
+ + bb174209 + HRESULT ID3DXSkinInfo::ConvertToIndexedBlendedMesh([In] ID3DXMesh* pMesh,[In] unsigned int Options,[In] unsigned int paletteSize,[In] const unsigned int* pAdjacencyIn,[In] unsigned int* pAdjacencyOut,[In] unsigned int* pFaceRemap,[In] ID3DXBuffer** ppVertexRemap,[In] unsigned int* pMaxVertexInfl,[In] unsigned int* pNumBoneCombinations,[In] ID3DXBuffer** ppBoneCombinationTable,[In] ID3DXMesh** ppMesh) + ID3DXSkinInfo::ConvertToIndexedBlendedMesh +
+ + +

Gets the maximum number of influences for any vertex in the mesh.

+
+ + bb174218 + GetMaxVertexInfluences + GetMaxVertexInfluences + HRESULT ID3DXSkinInfo::GetMaxVertexInfluences([Out] unsigned int* maxVertexInfluences) +
+ + +

Gets the number of bones.

+
+ + bb174221 + GetNumBones + GetNumBones + unsigned int ID3DXSkinInfo::GetNumBones() +
+ + +

Gets or sets the minimum bone influence. Influence values smaller than this are ignored.

+
+ + bb174219 + GetMinBoneInfluence / SetMinBoneInfluence + GetMinBoneInfluence + float ID3DXSkinInfo::GetMinBoneInfluence() +
+ + +

Gets or sets the fixed function vertex value.

+
+ +

This method can return 0 if the vertex format cannot be mapped directly to an FVF code. This will occur for a mesh created from a vertex declaration that doesn't have the same order and elements supported by the FVF codes.

+
+ + bb174216 + GetFVF / SetFVF + GetFVF + unsigned int ID3DXSkinInfo::GetFVF() +
+ + +

The interface provides a set of methods that simplify the process of drawing sprites using Microsoft Direct3D.

+
+ +

The interface is obtained by calling the function.

The application typically first calls , which allows control over the device render state, alpha blending, and sprite transformation and sorting. Then for each sprite to be displayed, call . can be called repeatedly to store any number of sprites. To display the batched sprites to the device, call or .

The LPD3DXSPRITE type is defined as a reference to the interface.

 typedef interface  ;	
+            typedef interface  *LPD3DXSPRITE;	
+            
+
+ + bb174249 + ID3DXSprite + ID3DXSprite +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the device associated with the sprite object.

+
+

Address of a reference to an interface, representing the Direct3D device object associated with the sprite object.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned.

+ +

Calling this method will increase the internal reference count on the interface.

+
+ + bb174254 + HRESULT ID3DXSprite::GetDevice([Out] IDirect3DDevice9** ppDevice) + ID3DXSprite::GetDevice +
+ + +

Gets the sprite transform.

+
+

Pointer to a that contains a transform of the sprite from the original world space.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned.

+ + bb174255 + HRESULT ID3DXSprite::GetTransform([Out] D3DXMATRIX* pTransform) + ID3DXSprite::GetTransform +
+ + +

Sets the sprite transform.

+
+

Pointer to a that contains a transform of the sprite from the original world space. Use this transform to scale, rotate, or transform the sprite.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned.

+ + bb174258 + HRESULT ID3DXSprite::SetTransform([In] const D3DXMATRIX* pTransform) + ID3DXSprite::SetTransform +
+ + +

Sets the right-handed world-view transform for a sprite. A call to this method is required before billboarding or sorting sprites.

+
+

Pointer to a that contains a world transform. If null, the identity matrix is used for the world transform.

+

Pointer to a that contains a view transform. If null, the identity matrix is used for the view transform.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned.

+ +

A call to this method (or to ) is required if the sprite will be rendered with the D3DXSprite__BILLBOARD, D3DXSprite__SORT_DEPTH_FRONTTOBACK, or D3DXSprite__SORT_DEPTH_BACKTOFRONT flag value in .

+
+ + bb174260 + HRESULT ID3DXSprite::SetWorldViewRH([In] const D3DXMATRIX* pWorld,[In] const D3DXMATRIX* pView) + ID3DXSprite::SetWorldViewRH +
+ + +

Sets the left-handed world-view transform for a sprite. A call to this method is required before billboarding or sorting sprites.

+
+

Pointer to a that contains a world transform. If null, the identity matrix is used for the world transform.

+

Pointer to a that contains a view transform. If null, the identity matrix is used for the view transform.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned.

+ +

A call to this method (or to ) is required if the sprite will be rendered with the D3DXSprite__BILLBOARD, D3DXSprite__SORT_DEPTH_FRONTTOBACK, or D3DXSprite__SORT_DEPTH_BACKTOFRONT flag value in .

+
+ + bb174259 + HRESULT ID3DXSprite::SetWorldViewLH([In] const D3DXMATRIX* pWorld,[In] const D3DXMATRIX* pView) + ID3DXSprite::SetWorldViewLH +
+ + +

Prepares a device for drawing sprites.

+
+

Combination of zero or more flags that describe sprite rendering options. For this method, the valid flags are:

  • D3DXSPRITE__BILLBOARD
  • D3DXSPRITE__SORT_DEPTH_BACKTOFRONT
  • D3DXSPRITE__SORT_DEPTH_FRONTTOBACK
  • D3DXSPRITE__SORT_TEXTURE

For a description of the flags and for information on how to control device state capture and device view transforms, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

+ +

This method must be called from inside a . . . sequence. cannot be used as a substitute for either or .

This method will set the following states on the device.

Render States:

Type ()Value
TRUE
0x00
AlphaCmpCaps
TRUE
| | |
0

?

Texture Stage States:

Stage IdentifierType ()Value
0
0
0
0
0
0
00
0
1
1

?

Sampler States:

Sampler Stage IndexType ()Value
0
0
0 if TextureFilterCaps includes ; otherwise
00
0MaxAnisotropy
0 if TextureFilterCaps includes ; otherwise
0 if TextureFilterCaps includes ; otherwise
00
00

?

Note??This method disables N-patches.

+
+ + bb174250 + HRESULT ID3DXSprite::Begin([In] D3DXSPRITE Flags) + ID3DXSprite::Begin +
+ + +

Adds a sprite to the list of batched sprites.

+
+

Pointer to an interface that represents the sprite texture.

+

Pointer to a structure that indicates the portion of the source texture to use for the sprite. If this parameter is null, then the entire source image is used for the sprite.

+

Pointer to a vector that identifies the center of the sprite. If this argument is null, the point (0,0,0) is used, which is the upper-left corner.

+

Pointer to a vector that identifies the position of the sprite. If this argument is null, the point (0,0,0) is used, which is the upper-left corner.

+

type. The color and alpha channels are modulated by this value. A value of 0xFFFFFFFF maintains the original source color and alpha data. Use the D3DCOLOR_RGBA macro to help generate this color.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

To scale, rotate, or translate a sprite, call with a matrix that contains the scale, rotate, and translate (SRT) values, before calling . For information about setting SRT values in a matrix, see Matrix Transforms.

+
+ + bb174251 + HRESULT ID3DXSprite::Draw([In] IDirect3DTexture9* pTexture,[In] const void* pSrcRect,[In] const void* pCenter,[In] const void* pPosition,[In] D3DCOLOR Color) + ID3DXSprite::Draw +
+ + +

Forces all batched sprites to be submitted to the device. Device states remain as they were after the last call to . The list of batched sprites is then cleared.

+
+

If the method succeeds, the return value is . If the method fails, the following value will be returned.

+ + bb174253 + HRESULT ID3DXSprite::Flush() + ID3DXSprite::Flush +
+ + +

Calls and restores the device state to how it was before was called.

+
+

If the method succeeds, the return value is . If the method fails, the following value will be returned.

+ +

cannot be used as a substitute for either or .

+
+ + bb174252 + HRESULT ID3DXSprite::End() + ID3DXSprite::End +
+ + +

Use this method to release all references to video memory resources and delete all stateblocks. This method should be called whenever a device is lost or before resetting a device.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method should be called whenever the device is lost or before the user calls . Even if the device was not actually lost, is responsible for freeing stateblocks and other resources that may need to be released before resetting the device. As a result, the font object cannot be used again before calling and then .

+
+ + bb174256 + HRESULT ID3DXSprite::OnLostDevice() + ID3DXSprite::OnLostDevice +
+ + +

Use this method to re-acquire resources and save initial state.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

should be called each time the device is reset (using ), before any other methods are called. This is a good place to re-acquire video-memory resources and capture state blocks.

+
+ + bb174257 + HRESULT ID3DXSprite::OnResetDevice() + ID3DXSprite::OnResetDevice +
+ + + Creates a sprite object which is associated with a particular device. Sprite objects are used to draw 2D images to the screen. + + A reference to the device (see ) that will draw the sprite. + + This interface can be used to draw two dimensional images in screen space of the associated device. + + HRESULT D3DXCreateSprite([In] IDirect3DDevice9* pDevice,[Out, Fast] ID3DXSprite** ppSprite) + + + +

Adds a sprite to the list of batched sprites.

+
+

Pointer to an interface that represents the sprite texture.

+

type. The color and alpha channels are modulated by this value. A value of 0xFFFFFFFF maintains the original source color and alpha data. Use the D3DCOLOR_RGBA macro to help generate this color.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

To scale, rotate, or translate a sprite, call with a matrix that contains the scale, rotate, and translate (SRT) values, before calling . For information about setting SRT values in a matrix, see Matrix Transforms.

+
+ bb174251 + HRESULT ID3DXSprite::Draw([In] IDirect3DTexture9* pTexture,[In] const RECT* pSrcRect,[In] const D3DXVECTOR3* pCenter,[In] const D3DXVECTOR3* pPosition,[In] D3DCOLOR Color) + ID3DXSprite::Draw +
+ + +

Adds a sprite to the list of batched sprites.

+
+

Pointer to an interface that represents the sprite texture.

+

Pointer to a structure that indicates the portion of the source texture to use for the sprite. If this parameter is null, then the entire source image is used for the sprite.

+

Pointer to a vector that identifies the center of the sprite. If this argument is null, the point (0,0,0) is used, which is the upper-left corner.

+

Pointer to a vector that identifies the position of the sprite. If this argument is null, the point (0,0,0) is used, which is the upper-left corner.

+

type. The color and alpha channels are modulated by this value. A value of 0xFFFFFFFF maintains the original source color and alpha data. Use the D3DCOLOR_RGBA macro to help generate this color.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

To scale, rotate, or translate a sprite, call with a matrix that contains the scale, rotate, and translate (SRT) values, before calling . For information about setting SRT values in a matrix, see Matrix Transforms.

+
+ bb174251 + HRESULT ID3DXSprite::Draw([In] IDirect3DTexture9* pTexture,[In] const RECT* pSrcRect,[In] const D3DXVECTOR3* pCenter,[In] const D3DXVECTOR3* pPosition,[In] D3DCOLOR Color) + ID3DXSprite::Draw +
+ + +

Retrieves the device associated with the sprite object.

+
+ +

Calling this method will increase the internal reference count on the interface.

+
+ + bb174254 + GetDevice + GetDevice + HRESULT ID3DXSprite::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Gets or sets the sprite transform.

+
+ + bb174255 + GetTransform / SetTransform + GetTransform + HRESULT ID3DXSprite::GetTransform([Out] D3DXMATRIX* pTransform) +
+ + +

Applications use the methods of the interface to encapsulate render states.

+
+ +

This interface can be used to save and restore pipeline state. It can also be used to capture the current state.

The LPDIRECT3DSTATEBLOCK9 and PDIRECT3DSTATEBLOCK9 types are defined as references to the interface.

typedef struct  *LPDIRECT3DSTATEBLOCK9, *PDIRECT3DSTATEBLOCK9;
+
+ + bb205887 + IDirect3DStateBlock9 + IDirect3DStateBlock9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the device.

+
+

Pointer to the interface that is returned.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205891 + HRESULT IDirect3DStateBlock9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DStateBlock9::GetDevice +
+ + +

Capture the current value of states that are included in a stateblock.

+
+

If the method succeeds, the return value is . If the method fails because capture cannot be done while in record mode, the return value is .

+ +

The Capture method captures current values for states within an existing state block. It does not capture the entire state of the device. For example:

 * pStateBlock = null; pd3dDevice->BeginStateBlock();	
+            // Add the ZENABLE state to the stateblock 	
+            pd3dDevice->SetRenderState ( ,  );	
+            pd3dDevice->EndStateBlock ( &pStateBlock ); // Change the current value that is stored in the state block	
+            pd3dDevice->SetRenderState ( ,  );	
+            pStateBlock->Capture();			 pStateBlock->Release();	
+            

Creating an empty stateblock and calling the Capture method does nothing if no states have been set.

The Capture method will not capture information for lights that are explicitly or implicitly created after the stateblock is created.

+
+ + bb205890 + HRESULT IDirect3DStateBlock9::Capture() + IDirect3DStateBlock9::Capture +
+ + +

Apply the state block to the current device state.

+
+

If the method succeeds, the return value is . If the method fails while in record mode, the return value is .

+ + bb205889 + HRESULT IDirect3DStateBlock9::Apply() + IDirect3DStateBlock9::Apply +
+ + + Initializes a new instance of the class. + + The device. + The type. + + + +

Gets the device.

+
+ + bb205891 + GetDevice + GetDevice + HRESULT IDirect3DStateBlock9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Applications use the methods of the interface to query and prepare surfaces.

+
+ +

The LPDIRECT3DSURFACE9 and PDIRECT3DSURFACE9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;	
+            
+
+ + bb205892 + IDirect3DSurface9 + IDirect3DSurface9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Provides access to the parent cube texture or texture (mipmap) object, if this surface is a child level of a cube texture or a mipmap. This method can also provide access to the parent swap chain if the surface is a back-buffer child.

+
+

Reference identifier of the container being requested.

+

Address of a reference to fill with the container reference if the query succeeds. See Remarks.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If the surface is created using CreateRenderTarget or CreateOffscreenPlainSurface or CreateDepthStencilSurface, the surface is considered stand alone. In this case, GetContainer will return the Direct3D device used to create the surface.

If the call succeeds, the reference count of the container is increased by one.

Here's an example getting the parent texture of a mip surface.

 // Assumes pSurface is a valid  reference	
+            void *pContainer = null;	
+             *pTexture = null;	
+             hr = pSurface->GetContainer(IID_IDirect3DTexture9, &pContainer);	
+            if (SUCCEEDED(hr) && pContainer)	
+            { pTexture = ( *)pContainer;	
+            }	
+            
+
+ + bb205893 + HRESULT IDirect3DSurface9::GetContainer([In] const GUID& riid,[Out] void** ppContainer) + IDirect3DSurface9::GetContainer +
+ + +

Retrieves a description of the surface.

+
+

Pointer to a structure, describing the surface.

+

If the method succeeds, the return value is .

is returned if the argument is invalid.

+ + bb205895 + HRESULT IDirect3DSurface9::GetDesc([Out] D3DSURFACE_DESC* pDesc) + IDirect3DSurface9::GetDesc +
+ + +

Locks a rectangle on a surface.

+
+

Pointer to a structure that describes the locked region.

+

Pointer to a rectangle to lock. Specified by a reference to a structure. Specifying null for this parameter expands the dirty region to cover the entire surface.

+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

You may not specify a subrect when using . For a description of the flags, see .

+

If the method succeeds, the return value is .

If the method fails, the return value can be or .

+ +

If the flag is specified and the driver cannot lock the surface immediately, will return so that an application can use the CPU cycles while waiting for the driver to lock the surface.

The only lockable format for a depth-stencil surface is . See .

For performance reasons, dirty regions are recorded only for level zero of a texture. Dirty regions are automatically recorded when is called without or . See for more information.

A multisample back buffer cannot be locked.

This method cannot retrieve data from a surface that is is contained by a texture resource created with because such a texture must be assigned to memory and is therefore not lockable. In this case, use instead to copy texture data from device memory to system memory.

+
+ + bb205896 + HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + IDirect3DSurface9::LockRect +
+ + +

Unlocks a rectangle on a surface.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205898 + HRESULT IDirect3DSurface9::UnlockRect() + IDirect3DSurface9::UnlockRect +
+ + +

Retrieves a device context.

+
+

Pointer to the device context for the surface.

+ +

The following restrictions apply.

  • is valid on the following formats only: , , , and . Formats that contain Alpha are not supported because the GDI implementations don't have a well-defined behavior on the alpha channel. For more information about formats, see .
  • Only one device context per surface can be returned at a time.
  • will fail if the surface is already locked. If the surface is a member of a mipmap or cubemap, fails if any other mipmap or cubemap member is locked.
  • fails on render targets unless they were created lockable (or, in the case of back buffers, with the flag).
  • For surfaces not created with , will fail on default pool () surfaces unless they are dynamic () or are lockable render targets.
  • will fail on surfaces.

When a device context is outstanding on a surface, the application may not call these methods:

*

?

* (on a swap chain that contains the surface)

causes an implicit lock; do not retain the device context for later use. Call to release it.

It is valid to call / on levels of a mipmap or cubemap, however, these calls will be slow to all miplevels except the topmost level, and GDI operations to these miplevels will not be accelerated.

The hdc provides access to Win32 and GDI functionality.

+
+ + bb205894 + HRESULT IDirect3DSurface9::GetDC([Out] HDC* phdc) + IDirect3DSurface9::GetDC +
+ + +

Release a device context handle.

+
+

Handle to a device context.

+

If the method succeeds, the return value is . is returned if the argument is invalid.

+ +

An hdc is a Windows resource. It must be released after use so Windows can return it to the pool of available resources.

This method will release only the device context returned by . Otherwise, this method will fail.

+
+ + bb205897 + HRESULT IDirect3DSurface9::ReleaseDC([In] HDC hdc) + IDirect3DSurface9::ReleaseDC +
+ + + Creates a depth-stencil surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [discard]. + A reference to a , representing the created depth-stencil surface resource. + HRESULT IDirect3DDevice9::CreateDepthStencilSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + + + + Creates a depth-stencil surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [discard]. + The shared handle. + A reference to a , representing the created depth-stencil surface resource. + HRESULT IDirect3DDevice9::CreateDepthStencilSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + + + + Creates a depth-stencil surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [discard]. + The usage. + A reference to a , representing the created depth-stencil surface resource. + HRESULT IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + + + + Creates a depth-stencil surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [discard]. + The usage. + The shared handle. + A reference to a , representing the created depth-stencil surface resource. + HRESULT IDirect3DDevice9Ex::CreateDepthStencilSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Discard,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + + + + Create an off-screen surface. + + The device. + The width. + The height. + The format. + The pool. + A created. + HRESULT IDirect3DDevice9::CreateOffscreenPlainSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + + + + Create an off-screen surface. + + The device. + The width. + The height. + The format. + The pool. + The shared handle. + A created. + HRESULT IDirect3DDevice9::CreateOffscreenPlainSurface([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + + + + Create an off-screen surface. + + The device. + The width. + The height. + The format. + The pool. + The usage. + + A created. + + HRESULT IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + + + + Create an off-screen surface. + + The device. + The width. + The height. + The format. + The pool. + The usage. + The shared handle. + + A created. + + HRESULT IDirect3DDevice9Ex::CreateOffscreenPlainSurfaceEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + + + + Creates a render-target surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [lockable]. + + A render-target . + + HRESULT IDirect3DDevice9::CreateRenderTarget([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + + + + Creates a render-target surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [lockable]. + The shared handle. + + A render-target . + + HRESULT IDirect3DDevice9::CreateRenderTarget([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle) + + + + Creates a render-target surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [lockable]. + The usage. + A render-target . + HRESULT IDirect3DDevice9Ex::CreateRenderTargetEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + + + + Creates a render-target surface. + + The device. + The width. + The height. + The format. + Type of the multisample. + The multisample quality. + if set to true [lockable]. + The usage. + The shared handle. + A render-target . + HRESULT IDirect3DDevice9Ex::CreateRenderTargetEx([In] unsigned int Width,[In] unsigned int Height,[In] D3DFORMAT Format,[In] D3DMULTISAMPLE_TYPE MultiSample,[In] unsigned int MultisampleQuality,[In] BOOL Lockable,[Out] IDirect3DSurface9** ppSurface,[In] void** pSharedHandle,[In] unsigned int Usage) + + + + Loads a surface from a file. + + The surface. + Name of the file. + The filter. + The color key. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file. + + The surface. + Name of the file. + The filter. + The color key. + The source rectangle. + The destination rectangle. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file. + + The surface. + Name of the file. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The image information. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file. + + The surface. + Name of the file. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The palette. + The image information. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileW([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const wchar_t* pSrcFile,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The memory. + The filter. + The color key. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The memory. + The filter. + The color key. + The source rectangle. + The destination rectangle. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The memory. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The image information. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The memory. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The palette. + The image information. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The stream. + The filter. + The color key. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The stream. + The filter. + The color key. + The source rectangle. + The destination rectangle. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The stream. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The image information. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The stream. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The palette. + The image information. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from a file in memory. + + The surface. + The stream. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The palette. + The image information. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromFileInMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a surface from memory. + + The surface. + The data. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from memory. + + The surface. + The data. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + The destination rectangle. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from memory. + + The surface. + The data. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + The source palette. + The destination palette. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from memory. + + The surface. + The data. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + The destination rectangle. + The source palette. + The destination palette. + A object describing the result of the operation. + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from memory. + + The surface. + The stream. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from memory. + + The surface. + The stream. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + The destination rectangle. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from memory. + + The surface. + The stream. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + The source palette. + The destination palette. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from memory. + + The surface. + The stream. + The filter. + The color key. + The source format. + The source pitch. + The source rectangle. + The destination rectangle. + The source palette. + The destination palette. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromMemory([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcPitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from a source surface. + + The destination surface. + The source surface. + The filter. + The color key. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from a source surface. + + The destination surface. + The source surface. + The filter. + The color key. + The source rectangle. + The destination rectangle. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a surface from a source surface. + + The destination surface. + The source surface. + The filter. + The color key. + The source rectangle. + The destination rectangle. + The destination palette. + The source palette. + + A object describing the result of the operation. + + HRESULT D3DXLoadSurfaceFromSurface([In] IDirect3DSurface9* pDestSurface,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestRect,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Gets the parent cube texture or texture (mipmap) object, if this surface is a child level of a cube texture or a mipmap. + This method can also provide access to the parent swap chain if the surface is a back-buffer child. + + + The GUID. + The parent container texture. + + + + Locks a rectangle on a surface. + + The type of lock to perform. + A pointer to the locked region + HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a surface. + + The rectangle to lock. + The type of lock to perform. + A pointer to the locked region + HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a surface. + + The type of lock to perform. + The stream pointing to the locked region. + A pointer to the locked region + HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a surface. + + The rectangle to lock. + The type of lock to perform. + The stream pointing to the locked region. + A pointer to the locked region + HRESULT IDirect3DSurface9::LockRect([Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Saves a surface to a file. + + The surface. + Name of the file. + The format. + + A object describing the result of the operation. + + HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + + + + Saves a surface to a file. + + The surface. + Name of the file. + The format. + The rectangle. + + A object describing the result of the operation. + + HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + + + + Saves a surface to a file. + + The surface. + Name of the file. + The format. + The rectangle. + The palette. + + A object describing the result of the operation. + + HRESULT D3DXSaveSurfaceToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + + + + Saves a surface to a stream. + + The surface. + The format. + + A object describing the result of the operation. + + HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + + + + Saves a surface to a stream. + + The surface. + The format. + The rectangle. + + A object describing the result of the operation. + + HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + + + + Saves a surface to a stream. + + The surface. + The format. + The rectangle. + The palette. + + A object describing the result of the operation. + + HRESULT D3DXSaveSurfaceToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DSurface9* pSrcSurface,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcRect) + + + +

Retrieves a description of the surface.

+
+ + bb205895 + GetDesc + GetDesc + HRESULT IDirect3DSurface9::GetDesc([Out] D3DSURFACE_DESC* pDesc) +
+ + +

Presents the contents of the next buffer in the sequence of back buffers owned by the swap chain.

+
+ +

The Present method is a shortcut to Present. Present has been updated to take a flag allowing the application to request that the method return immediately when the driver reports that it cannot schedule a presentation.

If necessary, a stretch operation is applied to transfer the pixels within the source rectangle to the destination rectangle in the client area of the target window.

Present will fail if called between BeginScene and EndScene pairs unless the render target is not the current render target (such as the back buffer you get from creating an additional swap chain). This is a new behavior for Direct3D 9.

+
+ + bb205908 + IDirect3DSwapChain9 + IDirect3DSwapChain9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Presents the contents of the next buffer in the sequence of back buffers owned by the swap chain.

+
+

Pointer to the source rectangle (see ). Use null to present the entire surface. This value must be null unless the swap chain was created with . If the rectangle exceeds the source surface, the rectangle is clipped to the source surface.

+

Pointer to the destination rectangle in client coordinates (see ). This value must be null unless the swap chain was created with . Use null to fill the entire client area. If the rectangle exceeds the destination client area, the rectangle is clipped to the destination client area.

+

Destination window whose client area is taken as the target for this presentation. If this value is null, the runtime uses the hDeviceWindow member of for the presentation.

+

This value must be null unless the swap chain was created with . See Flipping Surfaces (Direct3D 9). If this value is non-null, the contained region is expressed in back buffer coordinates. The rectangles within the region are the minimal set of pixels that need to be updated. This method takes these rectangles into account when optimizing the presentation by copying only the pixels within the region, or some suitably expanded set of rectangles. This is an aid to optimization only, and the application should not rely on the region being copied exactly. The implementation may choose to copy the whole source rectangle.

+

Allows the application to request that the method return immediately when the driver reports that it cannot schedule a presentation. Valid values are 0, or any combination of or .

  • If dwFlags = 0, this method behaves as it did prior to Direct3D 9. Present will spin until the hardware is free, without returning an error.
  • If dwFlags = , and the hardware is busy processing or waiting for a vertical sync interval, the method will return .
  • If dwFlags = , gamma correction is performed from linear space to sRGB for windowed swap chains. This flag will take effect only when the driver exposes (see Gamma (Direct3D 9)). Appliations should specify this flag if the backbuffer format is 16-bit floating point in order to match windowed mode present to fullscreen gamma behavior.
+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , , , E_OUTOFMEMORY.

+ +

The Present method is a shortcut to Present. Present has been updated to take a flag allowing the application to request that the method return immediately when the driver reports that it cannot schedule a presentation.

If necessary, a stretch operation is applied to transfer the pixels within the source rectangle to the destination rectangle in the client area of the target window.

Present will fail if called between BeginScene and EndScene pairs unless the render target is not the current render target (such as the back buffer you get from creating an additional swap chain). This is a new behavior for Direct3D 9.

+
+ + bb205908 + HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + IDirect3DSwapChain9::Present +
+ + +

Generates a copy of the swapchain's front buffer and places that copy in a system memory buffer provided by the application.

+
+

Pointer to an interface that will receive a copy of the swapchain's front buffer. The data is returned in successive rows with no intervening space, starting from the vertically highest row to the lowest. For windowed mode, the size of the destination surface should be the size of the desktop. For full screen mode, the size of the destination surface should be the screen size.

+

If the method succeeds, the return value is . If BackBuffer exceeds or equals the total number of back buffers, the function fails and returns .

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205905 + HRESULT IDirect3DSwapChain9::GetFrontBufferData([In] IDirect3DSurface9* pDestSurface) + IDirect3DSwapChain9::GetFrontBufferData +
+ + +

Retrieves a back buffer from the swap chain of the device.

+
+

Index of the back buffer object to return. Back buffers are numbered from 0 to the total number of back buffers - 1. A value of 0 returns the first back buffer, not the front buffer. The front buffer is not accessible through this method. Use to retrieve a copy of the front buffer.

+

Stereo view is not supported in Direct3D 9, so the only valid value for this parameter is .

+

Address of a reference to an interface, representing the returned back buffer surface.

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak. You must release any surfaces obtained through this method before releasing the swap chain it belongs to.

+
+ + bb205902 + HRESULT IDirect3DSwapChain9::GetBackBuffer([In] unsigned int iBackBuffer,[In] D3DBACKBUFFER_TYPE Type,[Out] IDirect3DSurface9** ppBackBuffer) + IDirect3DSwapChain9::GetBackBuffer +
+ + +

Returns information describing the raster of the monitor on which the swap chain is presented.

+
+

Pointer to a structure filled with information about the position or other status of the raster on the monitor driven by this adapter.

+

If the method succeeds, the return value is . is returned if pRasterStatus is invalid or if the device does not support reading the current scan line. To determine if the device supports reading the scan line, check for the flag in the Caps member of .

+ + bb205907 + HRESULT IDirect3DSwapChain9::GetRasterStatus([Out] D3DRASTER_STATUS* pRasterStatus) + IDirect3DSwapChain9::GetRasterStatus +
+ + +

Retrieves the display mode's spatial resolution, color resolution, and refresh frequency.

+
+

Pointer to a structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205904 + HRESULT IDirect3DSwapChain9::GetDisplayMode([Out] D3DDISPLAYMODE* pMode) + IDirect3DSwapChain9::GetDisplayMode +
+ + +

Retrieves the device associated with the swap chain.

+
+

Address of a reference to an interface to fill with the device reference, if the query succeeds.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method allows navigation to the owning device object.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205903 + HRESULT IDirect3DSwapChain9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DSwapChain9::GetDevice +
+ + +

Retrieves the presentation parameters associated with a swap chain.

+
+

Pointer to the presentation parameters. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method can be used to see the presentation parameters of the parent swap chain of a surface (a back buffer, for instance). The parent swap chain can be retrieved with .

+
+ + bb205906 + HRESULT IDirect3DSwapChain9::GetPresentParameters([Out] D3DPRESENT_PARAMETERS* pPresentationParameters) + IDirect3DSwapChain9::GetPresentParameters +
+ + + Initializes a new instance of the class. + + The device. + The present parameters. + HRESULT IDirect3DDevice9::CreateAdditionalSwapChain([In] D3DPRESENT_PARAMETERS* pPresentationParameters,[In] IDirect3DSwapChain9** pSwapChain) + + + + Retrieves a back buffer from the swap chain of the device. + + The i back buffer. + The back buffer from the swap chain of the device. + HRESULT IDirect3DSwapChain9::GetBackBuffer([In] unsigned int iBackBuffer,[In] D3DBACKBUFFER_TYPE Type,[Out] IDirect3DSurface9** ppBackBuffer) + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + The present flags. + HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + The present flags. + The area of the back buffer that should be presented. + The area of the front buffer that should receive the result of the presentation. + HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + The present flags. + The area of the back buffer that should be presented. + The area of the front buffer that should receive the result of the presentation. + The destination window whose client area is taken as the target for this presentation. + HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + + Presents the contents of the next buffer in the sequence of back buffers to the screen. + + The flags. + The area of the back buffer that should be presented. + The area of the front buffer that should receive the result of the presentation. + The destination window whose client area is taken as the target for this presentation. + Specifies a region on the back buffer that contains the minimal amount of pixels that need to be updated. + HRESULT IDirect3DSwapChain9::Present([In, Optional] const void* pSourceRect,[InOut, Optional] const void* pDestRect,[In] HWND hDestWindowOverride,[In] const RGNDATA* pDirtyRegion,[In] unsigned int dwFlags) + + + +

Returns information describing the raster of the monitor on which the swap chain is presented.

+
+ + bb205907 + GetRasterStatus + GetRasterStatus + HRESULT IDirect3DSwapChain9::GetRasterStatus([Out] D3DRASTER_STATUS* pRasterStatus) +
+ + +

Retrieves the display mode's spatial resolution, color resolution, and refresh frequency.

+
+ + bb205904 + GetDisplayMode + GetDisplayMode + HRESULT IDirect3DSwapChain9::GetDisplayMode([Out] D3DDISPLAYMODE* pMode) +
+ + +

Retrieves the device associated with the swap chain.

+
+ +

This method allows navigation to the owning device object.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205903 + GetDevice + GetDevice + HRESULT IDirect3DSwapChain9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Retrieves the presentation parameters associated with a swap chain.

+
+ +

This method can be used to see the presentation parameters of the parent swap chain of a surface (a back buffer, for instance). The parent swap chain can be retrieved with .

+
+ + bb205906 + GetPresentParameters + GetPresentParameters + HRESULT IDirect3DSwapChain9::GetPresentParameters([Out] D3DPRESENT_PARAMETERS* pPresentationParameters) +
+ + +

Applications use the methods of the interface to manipulate a swap chain.

+
+ +

There is always at least one swap chain for each device, known as the implicit swap chain. However, an additional swap chain for rendering multiple views from the same device can be created by calling the CreateAdditionalSwapChain method.

This interface, like all COM interfaces, inherits from the interface.

The LPDIRECT3DSWAPCHAIN9 and PDIRECT3DSWAPCHAIN9 types are defined as references to the interface.

objects are returned as a reference to an object when GetSwapChain is called on an instance of . + The interface is obtained by calling QueryInterface on the instance of that was returned by GetSwapChain.

+
+ + bb172503 + IDirect3DSwapChain9Ex + IDirect3DSwapChain9Ex +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Returns the number of times the swapchain has been processed.

+
+

Pointer to a UINT to be filled with the number of times the method has been called. The count will also be incremented by calling some other APIs such as .

+

the method was successful.

+ + bb205900 + HRESULT IDirect3DSwapChain9Ex::GetLastPresentCount([Out] unsigned int* pLastPresentCount) + IDirect3DSwapChain9Ex::GetLastPresentCount +
+ + + No documentation. + + No documentation. + No documentation. + + HRESULT IDirect3DSwapChain9Ex::GetPresentStats([Out] D3DPRESENTSTATS* pPresentationStatistics) + IDirect3DSwapChain9Ex::GetPresentStats + + + +

Retrieves the display mode's spatial resolution, color resolution, refresh frequency, and rotation settings.

+
+

Pointer to a structure containing data about the display mode of the adapter. As opposed to the display mode of the device, which may not be active if the device does not own full-screen mode.

+

Pointer to a indicating the type of screen rotation the application will do. The value returned through this reference is important when the flag is used; otherwise, it can be set to null.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb509715 + HRESULT IDirect3DSwapChain9Ex::GetDisplayModeEx([Out] D3DDISPLAYMODEEX* pMode,[Out] D3DDISPLAYROTATION* pRotation) + IDirect3DSwapChain9Ex::GetDisplayModeEx +
+ + +

Returns the number of times the swapchain has been processed.

+
+ + bb205900 + GetLastPresentCount + GetLastPresentCount + HRESULT IDirect3DSwapChain9Ex::GetLastPresentCount([Out] unsigned int* pLastPresentCount) +
+ + + No documentation. + + + GetPresentStats + GetPresentStats + HRESULT IDirect3DSwapChain9Ex::GetPresentStats([Out] D3DPRESENTSTATS* pPresentationStatistics) + + + +

Applications use the methods of the interface to manipulate a texture resource.

+
+ +

The interface can be obtained by calling the method or one of the xxx functions.

This interface inherits additional functionality from the interface.

This interface, like all COM interfaces, inherits from the interface.

The LPDIRECT3DTEXTURE9 and PDIRECT3DTEXTURE9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;	
+            
+
+ + bb205909 + IDirect3DTexture9 + IDirect3DTexture9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves a level description of a texture resource.

+
+

Identifies a level of the texture resource. This method returns a surface description for the level specified by this parameter.

+

Pointer to a structure, describing the returned level.

+ + bb205911 + HRESULT IDirect3DTexture9::GetLevelDesc([In] unsigned int Level,[Out] D3DSURFACE_DESC* pDesc) + IDirect3DTexture9::GetLevelDesc +
+ + +

Retrieves the specified texture surface level.

+
+

Identifies a level of the texture resource. This method returns a surface for the level specified by this parameter. The top-level surface is denoted by 0.

+

Address of a reference to an interface, representing the returned surface.

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205912 + HRESULT IDirect3DTexture9::GetSurfaceLevel([In] unsigned int Level,[Out] IDirect3DSurface9** ppSurfaceLevel) + IDirect3DTexture9::GetSurfaceLevel +
+ + +

Locks a rectangle on a texture resource.

+
+

Specifies the level of the texture resource to lock.

+

Pointer to a structure, describing the locked region.

+

Pointer to a rectangle to lock. Specified by a reference to a structure. Specifying null for this parameter expands the dirty region to cover the entire texture.

+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

You may not specify a subrect when using . For a description of the flags, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

Textures created with are not lockable. Textures created in video memory are lockable when created with USAGE_DYNAMIC.

For performance reasons, dirty regions are recorded only for level zero of a texture. Dirty regions are automatically recorded when is called without or . See for more information.

The only lockable format for a depth-stencil texture is D3DLOCK_D16_LOCKABLE.

Video memory textures cannot be locked, but must be modified by calling or . There are exceptions for some proprietary driver pixel formats that Direct3D 9 does not recognize. These can be locked.

This method cannot retrieve data from a texture resource created with because such a texture must be assigned to memory and is therefore not lockable. In this case, use instead to copy texture data from device memory to system memory.

+
+ + bb205913 + HRESULT IDirect3DTexture9::LockRect([In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + IDirect3DTexture9::LockRect +
+ + +

Unlocks a rectangle on a texture resource.

+
+

Specifies the level of the texture resource to unlock.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205914 + HRESULT IDirect3DTexture9::UnlockRect([In] unsigned int Level) + IDirect3DTexture9::UnlockRect +
+ + +

Adds a dirty region to a texture resource.

+
+

Pointer to a structure, specifying the dirty region to add. Specifying null expands the dirty region to cover the entire texture.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) rectangle or box is also dirty. Dirty regions are automatically recorded when is called without or . The destination surface of is also marked dirty automatically.

Using and explicitly specifying dirty regions can be used to increase the efficiency of . Using this method, applications can optimize what subset of a resource is copied by specifying dirty regions on the resource. However, the dirty regions may be expanded to optimize alignment.

+
+ + bb205910 + HRESULT IDirect3DTexture9::AddDirtyRect([In] const void* pDirtyRect) + IDirect3DTexture9::AddDirtyRect +
+ + + Initializes a new instance of the class. + + The device. + The width. + The height. + The level count. + The usage. + The format. + The pool. + HRESULT IDirect3DDevice9::CreateTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DTexture9** ppTexture,[In] void** pSharedHandle) + + + + Initializes a new instance of the class. + + The device. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The shared handle. + HRESULT IDirect3DDevice9::CreateTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DTexture9** ppTexture,[In] void** pSharedHandle) + + + + Checks texture-creation parameters. + + Device associated with the texture. + The width. + The height. + Requested number of mipmap levels for the texture. + The requested usage for the texture. + Requested format for the texture. + Memory class where the resource will be placed. + + A value type containing the proposed values to pass to the texture creation functions. + + HRESULT D3DXCheckTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool) + + + + Computes the normal map. + + The texture. + The source texture. + The flags. + The channel. + The amplitude. + A object describing the result of the operation. + HRESULT D3DXComputeNormalMap([In] IDirect3DTexture9* pTexture,[In] IDirect3DTexture9* pSrcTexture,[Out, Buffer] const PALETTEENTRY* pSrcPalette,[In] unsigned int Flags,[In] unsigned int Channel,[In] float Amplitude) + + + + Computes the normal map. + + The texture. + The source texture. + The palette. + The flags. + The channel. + The amplitude. + A object describing the result of the operation. + HRESULT D3DXComputeNormalMap([In] IDirect3DTexture9* pTexture,[In] IDirect3DTexture9* pSrcTexture,[Out, Buffer] const PALETTEENTRY* pSrcPalette,[In] unsigned int Flags,[In] unsigned int Channel,[In] float Amplitude) + + + + Uses a user-provided function to fill each texel of each mip level of a given texture. + + A function that is used to fill the texture. + A object describing the result of the operation. + HRESULT D3DXFillTexture([In] IDirect3DTexture9* pTexture,[In] __function__stdcall* pFunction,[In] void* pData) + + + + Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture. + + A texture shader object that is used to fill the texture. + A object describing the result of the operation. + HRESULT D3DXFillTextureTX([In] IDirect3DTexture9* pTexture,[In] ID3DXTextureShader* pTextureShader) + + + + Locks a rectangle on a texture resource. + + The level. + The flags. + + A describing the region locked. + + HRESULT IDirect3DTexture9::LockRect([In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a texture resource. + + The level. + The flags. + The stream pointing to the locked region. + + A describing the region locked. + + HRESULT IDirect3DTexture9::LockRect([In] unsigned int Level,[Out] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a texture resource. + + The level. + The rectangle. + The flags. + + A describing the region locked. + + HRESULT IDirect3DTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Locks a rectangle on a texture resource. + + The level. + The rectangle. + The flags. + The stream pointing to the locked region. + + A describing the region locked. + + HRESULT IDirect3DTexture9::LockRect([In] D3DCUBEMAP_FACES FaceType,[In] unsigned int Level,[In] D3DLOCKED_RECT* pLockedRect,[In] const void* pRect,[In] D3DLOCK Flags) + + + + Adds a dirty region to a texture resource. + + + A object describing the result of the operation. + + HRESULT IDirect3DTexture9::AddDirtyRect([In] const void* pDirtyRect) + + + + Adds a dirty region to a texture resource. + + The dirty rect ref. + + A object describing the result of the operation. + + HRESULT IDirect3DTexture9::AddDirtyRect([In] const void* pDirtyRect) + + + + Creates a from a file + + The device. + The filename. + + A + + HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a file + + The device. + The filename. + The usage. + The pool. + + A + + HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a file + + The device. + The filename. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a file + + The device. + The filename. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a file + + The device. + The filename. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + + A + + HRESULT D3DXCreateTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The usage. + The pool. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The stream. + A + HRESULT D3DXCreateTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The stream. + The usage. + The pool. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The stream. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The buffer. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + A + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + The pointer. + The size in bytes. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + + Creates a from a stream. + + The device. + Name of the file. + The width. + The height. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DTexture9** ppTexture) + + + +

The interface.

+
+ +

The interface is obtained by calling the function.

The interface, like all COM interfaces, inherits the interface.

The LPD3DXTEXTURESHADER type is defined as a reference to the interface.

 typedef interface  *LPD3DXTEXTURESHADER;	
+            
+
+ + bb174276 + ID3DXTextureShader + ID3DXTextureShader +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets a reference to the function DWORD stream.

+
+

A reference to the function DWORD stream. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174283 + HRESULT ID3DXTextureShader::GetFunction([Out] ID3DXBuffer** ppFunction) + ID3DXTextureShader::GetFunction +
+ + +

Get a reference to the constant table.

+
+

Pointer to an interface, which contains the constants.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174278 + HRESULT ID3DXTextureShader::GetConstantBuffer([Out] ID3DXBuffer** ppConstantBuffer) + ID3DXTextureShader::GetConstantBuffer +
+ + +

Gets a description of the constant table.

+
+

The attributes of the constant table. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ + bb174282 + HRESULT ID3DXTextureShader::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc) + ID3DXTextureShader::GetDesc +
+ + +

Gets a reference to the array of constants in the constant table.

+
+

Unique identifier to a constant. See .

+

Returns a reference to an array of descriptions. See .

+

The input supplied must be the maximum size of the array. The output is the number of elements that are filled in the array when the function returns.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

+ +

Samplers can appear more than once in a constant table, therefore, this method can return an array of descriptions each with a different register index.

+
+ + bb174280 + HRESULT ID3DXTextureShader::GetConstantDesc([In] D3DXHANDLE hConstant,[Out, Buffer] D3DXCONSTANT_DESC* pConstantDesc,[InOut] unsigned int* pCount) + ID3DXTextureShader::GetConstantDesc +
+ + +

Gets a constant by looking up its index.

+
+

A handle to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use null.

+

Zero-based index of the constant.

+

Returns a unique identifier to the constant.

+ +

To get a constant from an array of constants, use .

+
+ + bb174277 + D3DXHANDLE ID3DXTextureShader::GetConstant([In] D3DXHANDLE hConstant,[In] unsigned int Index) + ID3DXTextureShader::GetConstant +
+ + +

Gets a constant by looking up its name.

+
+

A handle to the parent data structure. If the constant is a top-level parameter (there is no parent data structure), use null.

+

A string containing the name of the constant.

+

Returns a unique identifier to the constant.

+ + bb174279 + D3DXHANDLE ID3DXTextureShader::GetConstantByName([In] D3DXHANDLE hConstant,[In] const char* pName) + ID3DXTextureShader::GetConstantByName +
+ + +

Get a constant from the constant table.

+
+

A handle to the array of constants. This value may not be null.

+

Zero-based index of the element in the constant table.

+

Returns a unique identifier to the constant.

+ +

To get a constant that is not part of an array, use or .

+
+ + bb174281 + D3DXHANDLE ID3DXTextureShader::GetConstantElement([In] D3DXHANDLE hConstant,[In] unsigned int Index) + ID3DXTextureShader::GetConstantElement +
+ + +

Sets the constants to the default values declared in the shader.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174286 + HRESULT ID3DXTextureShader::SetDefaults() + ID3DXTextureShader::SetDefaults +
+ + +

Sets the constant table with the data in the buffer.

+
+

Unique identifier to a constant. See .

+

A reference to a buffer containing the constant data.

+

Size of the buffer, in bytes.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174297 + HRESULT ID3DXTextureShader::SetValue([In] D3DXHANDLE hConstant,[In] const void* pData,[In] unsigned int Bytes) + ID3DXTextureShader::SetValue +
+ + +

Sets a value.

+
+

Unique identifier to the constant. See .

+

value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174284 + HRESULT ID3DXTextureShader::SetBool([In] D3DXHANDLE hConstant,[In] BOOL b) + ID3DXTextureShader::SetBool +
+ + +

Sets an array of values.

+
+

Unique identifier to the array of constants. See .

+

Array of values.

+

Number of values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174285 + HRESULT ID3DXTextureShader::SetBoolArray([In] D3DXHANDLE hConstant,[In] const BOOL* pb,[In] unsigned int Count) + ID3DXTextureShader::SetBoolArray +
+ + +

Sets an integer value.

+
+

Unique identifier to the constant. See .

+

Integer value.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174289 + HRESULT ID3DXTextureShader::SetInt([In] D3DXHANDLE hConstant,[In] int n) + ID3DXTextureShader::SetInt +
+ + +

Sets an array of integers.

+
+

Unique identifier to the array of constants. See .

+

Array of integers.

+

Number of integers in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174290 + HRESULT ID3DXTextureShader::SetIntArray([In] D3DXHANDLE hConstant,[In] const int* pn,[In] unsigned int Count) + ID3DXTextureShader::SetIntArray +
+ + +

Sets a floating-point number.

+
+

Unique identifier to the constant. See .

+

Floating-point number.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174287 + HRESULT ID3DXTextureShader::SetFloat([In] D3DXHANDLE hConstant,[In] float f) + ID3DXTextureShader::SetFloat +
+ + +

Sets an array of floating-point numbers.

+
+

Unique identifier to the array of constants. See .

+

Array of floating-point numbers.

+

Number of floating-point values in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174288 + HRESULT ID3DXTextureShader::SetFloatArray([In] D3DXHANDLE hConstant,[In] const float* pf,[In] unsigned int Count) + ID3DXTextureShader::SetFloatArray +
+ + +

Sets a 4D vector.

+
+

Unique identifier to the vector constant. See .

+

Pointer to a 4D vector. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174298 + HRESULT ID3DXTextureShader::SetVector([In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector) + ID3DXTextureShader::SetVector +
+ + +

Sets an array of 4D vectors.

+
+

Unique identifier to the array of vector constants. See .

+

Array of 4D vectors. See .

+

Number of vectors in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb174299 + HRESULT ID3DXTextureShader::SetVectorArray([In] D3DXHANDLE hConstant,[In] const D3DXVECTOR4* pVector,[In] unsigned int Count) + ID3DXTextureShader::SetVectorArray +
+ + +

Sets a non-transposed matrix.

+
+

Unique identifier to the matrix of constants. See .

+

Pointer to a non-transposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A non-transposed matrix contains row-major data; that is, each vector is contained in a row.

+
+ + bb174291 + HRESULT ID3DXTextureShader::SetMatrix([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix) + ID3DXTextureShader::SetMatrix +
+ + +

Sets an array of non-transposed matrices.

+
+

Unique identifier to the array of constant matrices. See .

+

Array of non-transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A non-transposed matrix contains row-major data; that is, each vector is contained in a row.

+
+ + bb174292 + HRESULT ID3DXTextureShader::SetMatrixArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXTextureShader::SetMatrixArray +
+ + +

Sets an array of references to non-transposed matrices.

+
+

Unique identifier to an array of constant matrices. See .

+

Array of references to non-transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A non-transposed matrix contains row-major data; that is, each vector is contained in a row.

+
+ + bb174293 + HRESULT ID3DXTextureShader::SetMatrixPointerArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXTextureShader::SetMatrixPointerArray +
+ + +

Sets a transposed matrix.

+
+

Unique identifier to the matrix of constants. See .

+

Pointer to a transposed matrix. See .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

+
+ + bb174294 + HRESULT ID3DXTextureShader::SetMatrixTranspose([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix) + ID3DXTextureShader::SetMatrixTranspose +
+ + +

Sets an array of transposed matrices.

+
+

Unique identifier to the array of matrix constants. See .

+

Array of transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

+
+ + bb174295 + HRESULT ID3DXTextureShader::SetMatrixTransposeArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX* pMatrix,[In] unsigned int Count) + ID3DXTextureShader::SetMatrixTransposeArray +
+ + +

Sets an array of references to transposed matrices.

+
+

Unique identifier to the array of matrix constants. See .

+

Array of references to transposed matrices. See .

+

Number of matrices in the array.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

A transposed matrix contains column-major data; that is, each vector is contained in a column.

+
+ + bb174296 + HRESULT ID3DXTextureShader::SetMatrixTransposePointerArray([In] D3DXHANDLE hConstant,[In] const D3DXMATRIX** ppMatrix,[In] unsigned int Count) + ID3DXTextureShader::SetMatrixTransposePointerArray +
+ + +

Gets a reference to the function DWORD stream.

+
+ + bb174283 + GetFunction + GetFunction + HRESULT ID3DXTextureShader::GetFunction([Out] ID3DXBuffer** ppFunction) +
+ + +

Get a reference to the constant table.

+
+ + bb174278 + GetConstantBuffer + GetConstantBuffer + HRESULT ID3DXTextureShader::GetConstantBuffer([Out] ID3DXBuffer** ppConstantBuffer) +
+ + +

Gets a description of the constant table.

+
+ + bb174282 + GetDesc + GetDesc + HRESULT ID3DXTextureShader::GetDesc([Out] D3DXCONSTANTTABLE_DESC* pDesc) +
+ + +

Applications use the methods of the interface to manipulate vertex buffer resources.

+
+ +

The interface is obtained by calling the method.

This interface inherits additional functionality from the interface.

This interface, like all COM interfaces, inherits from the interface.

The LPDIRECT3DVERTEXBUFFER9 and PDIRECT3DVERTEXBUFFER9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;	
+            
+
+ + bb205915 + IDirect3DVertexBuffer9 + IDirect3DVertexBuffer9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Locks a range of vertex data and obtains a reference to the vertex buffer memory.

+
+

Offset into the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock.

+

Size of the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock.

+

VOID* reference to a memory buffer containing the returned vertex data.

+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

As a general rule, do not hold a lock across more than one frame. When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer.

The and flags are valid only on buffers created with .

For information about using or with , see Using Dynamic Vertex and Index Buffers.

+
+ + bb205917 + HRESULT IDirect3DVertexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags) + IDirect3DVertexBuffer9::Lock +
+ + +

Unlocks vertex data.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205918 + HRESULT IDirect3DVertexBuffer9::Unlock() + IDirect3DVertexBuffer9::Unlock +
+ + +

Retrieves a description of the vertex buffer resource.

+
+

Pointer to a structure, describing the returned vertex buffer.

+

If the method succeeds, the return value is . is returned if the argument is invalid.

+ + bb205916 + HRESULT IDirect3DVertexBuffer9::GetDesc([Out] D3DVERTEXBUFFER_DESC* pDesc) + IDirect3DVertexBuffer9::GetDesc +
+ + + Initializes a new instance of the class. + + The device that will be used to create the buffer. + Size of the buffer, in bytes. + The requested usage of the buffer. + The vertex format of the vertices in the buffer. If set to .None, the buffer will be a non-FVF buffer. + The memory class into which the resource will be placed. + bb174364 + HRESULT IDirect3DDevice9::CreateVertexBuffer([In] unsigned int Length,[In] D3DUSAGE Usage,[In] D3DFVF FVF,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVertexBuffer9** ppVertexBuffer,[In] void** pSharedHandle) + IDirect3DDevice9::CreateVertexBuffer + + + + Initializes a new instance of the class. + + The device that will be used to create the buffer. + Size of the buffer, in bytes. + The requested usage of the buffer. + The vertex format of the vertices in the buffer. If set to .None, the buffer will be a non-FVF buffer. + The memory class into which the resource will be placed. + The variable that will receive the shared handle for this resource. + This method is only available in Direct3D9 Ex. + bb174364 + HRESULT IDirect3DDevice9::CreateVertexBuffer([In] unsigned int Length,[In] D3DUSAGE Usage,[In] D3DFVF FVF,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVertexBuffer9** ppVertexBuffer,[In] void** pSharedHandle) + IDirect3DDevice9::CreateVertexBuffer + + + + Locks a range of vertex data and obtains a pointer to the vertex buffer memory. + + + As a general rule, do not hold a lock across more than one frame. When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer. The D3DLOCK_DISCARD and D3DLOCK_NOOVERWRITE flags are valid only on buffers created with D3DUSAGE_DYNAMIC. For information about using D3DLOCK_DISCARD or D3DLOCK_NOOVERWRITE with IDirect3DVertexBuffer9::Lock, see {{Using Dynamic Vertex and Index Buffers}}. + + Offset into the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. + Size of the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. + Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are: D3DLOCK_DISCARD D3DLOCK_NO_DIRTY_UPDATE D3DLOCK_NOSYSLOCK D3DLOCK_READONLY D3DLOCK_NOOVERWRITE For a description of the flags, see . + A if the method succeeds. + bb205917 + HRESULT IDirect3DVertexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags) + IDirect3DVertexBuffer9::Lock + + + + Locks a range of vertex data and obtains a pointer to the vertex buffer memory. + + + As a general rule, do not hold a lock across more than one frame. When working with vertex buffers, you are allowed to make multiple lock calls; however, you must ensure that the number of lock calls match the number of unlock calls. DrawPrimitive calls will not succeed with any outstanding lock count on any currently set vertex buffer. The D3DLOCK_DISCARD and D3DLOCK_NOOVERWRITE flags are valid only on buffers created with D3DUSAGE_DYNAMIC. For information about using D3DLOCK_DISCARD or D3DLOCK_NOOVERWRITE with IDirect3DVertexBuffer9::Lock, see {{Using Dynamic Vertex and Index Buffers}}. + + Offset into the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. + Size of the vertex data to lock, in bytes. To lock the entire vertex buffer, specify 0 for both parameters, SizeToLock and OffsetToLock. + Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are: D3DLOCK_DISCARD D3DLOCK_NO_DIRTY_UPDATE D3DLOCK_NOSYSLOCK D3DLOCK_READONLY D3DLOCK_NOOVERWRITE For a description of the flags, see . + A if the method succeeds. + bb205917 + HRESULT IDirect3DVertexBuffer9::Lock([In] unsigned int OffsetToLock,[In] unsigned int SizeToLock,[Out] void** ppbData,[In] D3DLOCK Flags) + IDirect3DVertexBuffer9::Lock + + + +

Retrieves a description of the vertex buffer resource.

+
+ + bb205916 + GetDesc + GetDesc + HRESULT IDirect3DVertexBuffer9::GetDesc([Out] D3DVERTEXBUFFER_DESC* pDesc) +
+ + +

Applications use the methods of the interface to encapsulate the vertex shader declaration.

+
+ +

A vertex shader declaration is made up of an array of vertex elements.

The LPDIRECT3DVERTEXDECLARATION9 and PDIRECT3DVERTEXDECLARATION9 types are defined as references to the interface.

typedef struct  *LPDIRECT3DVERTEXDECLARATION9, *PDIRECT3DVERTEXDECLARATION9;
+
+ + bb205919 + IDirect3DVertexDeclaration9 + IDirect3DVertexDeclaration9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the current device.

+
+

Pointer to the interface that is returned.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ + bb205921 + HRESULT IDirect3DVertexDeclaration9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DVertexDeclaration9::GetDevice +
+ + +

Gets the vertex shader declaration.

+
+

Array of vertex elements (see ) that make up a vertex shader declaration. The application needs to allocate enough room for this. The vertex element array ends with the D3DDECL_END macro.

+

Number of elements in the array. The application needs to allocate enough room for this.

+

If the method succeeds, the return value is . If the method fails, the return value can be: .

+ +

The number of elements, pNumElements, includes the D3DDECL_END macro, which ends the declaration. So the element count is actually one higher than the number of valid vertex elements.

Here's an example that will return the vertex declaration array of up to 256 elements:

  decl[MAXD3DDECLLENGTH];	
+            UINT numElements;	
+             hr = m_pVertexDeclaration->GetDeclaration( decl, &numElements);	
+            

Specify null for pDeclto get the number of elements in the declaration.

+
+ + bb205920 + HRESULT IDirect3DVertexDeclaration9::GetDeclaration([Out, Buffer] D3DVERTEXELEMENT9* pElement,[InOut] unsigned int* pNumElements) + IDirect3DVertexDeclaration9::GetDeclaration +
+ + + Create a vertex shader declaration from the device and the vertex elements. + + + See the {{Vertex Declaration (Direct3D 9)}} page for a detailed description of how to map vertex declarations between different versions of DirectX. + + The device. + An array of vertex elements. + If the method succeeds + HRESULT IDirect3DDevice9::CreateVertexDeclaration([In, Buffer] const D3DVERTEXELEMENT9* pVertexElements,[None] IDirect3DVertexDeclaration9** ppDecl) + + + +

Gets the current device.

+
+ + bb205921 + GetDevice + GetDevice + HRESULT IDirect3DVertexDeclaration9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + + Gets the elements. + + HRESULT IDirect3DVertexDeclaration9::GetDeclaration([Out, Buffer] D3DVERTEXELEMENT9* pElement,[InOut] unsigned int* pNumElements) + + + +

Applications use the methods of the interface to encapsulate the functionality of a vertex shader.

+
+ +

The LPDIRECT3DVERTEXSHADER9 and PDIRECT3DVERTEXSHADER9 types are defined as references to the interface.

typedef struct  *LPDIRECT3DVERTEXSHADER9, *PDIRECT3DVERTEXSHADER9;
+
+ + bb205922 + IDirect3DVertexShader9 + IDirect3DVertexShader9 +
+ + Constant MaxDynamicFlowControlDepth. + D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH + + + Constant MinDynamicFlowControlDepth. + D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH + + + Constant MaxTemps. + D3DVS20_MAX_NUMTEMPS + + + Constant MinTemps. + D3DVS20_MIN_NUMTEMPS + + + Constant MaxStaticFlowControlDepth. + D3DVS20_MAX_STATICFLOWCONTROLDEPTH + + + Constant MinStaticFlowControlDepth. + D3DVS20_MIN_STATICFLOWCONTROLDEPTH + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the device.

+
+

Pointer to the interface that is returned.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205923 + HRESULT IDirect3DVertexShader9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DVertexShader9::GetDevice +
+ + +

Gets a reference to the shader data.

+
+

Pointer to a buffer that contains the shader data. The application needs to allocate enough room for this.

+

Size of the data, in bytes. To get the buffer size that is needed to retrieve the data, set pData = null when calling GetFunction. Then call GetFunction with the returned size, to get the buffer data.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205924 + HRESULT IDirect3DVertexShader9::GetFunction([In] void* arg0,[InOut] unsigned int* pSizeOfData) + IDirect3DVertexShader9::GetFunction +
+ + + Initializes a new instance of the class. + + The device. + The function. + HRESULT IDirect3DDevice9::CreateVertexShader([In] const void* pFunction,[Out, Fast] IDirect3DVertexShader9** ppShader) + + + +

Gets the device.

+
+ + bb205923 + GetDevice + GetDevice + HRESULT IDirect3DVertexShader9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + + Gets the bytecode associated to this shader.. + + + + +

Applications use the methods of the interface to manipulate volume resources.

+
+ +

The interface is obtained by calling the method.

This interface, like all COM interfaces, inherits from the interface.

The LPDIRECT3DVOLUME9 and PDIRECT3DVOLUME9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;	
+            
+
+ + bb205932 + IDirect3DVolume9 + IDirect3DVolume9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the device associated with a volume.

+
+

Address of a reference to an interface to fill with the device reference, if the query succeeds.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

This method allows navigation to the owning device object.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205936 + HRESULT IDirect3DVolume9::GetDevice([Out] IDirect3DDevice9** ppDevice) + IDirect3DVolume9::GetDevice +
+ + +

Associates data with the volume that is intended for use by the application, not by Direct3D.

+
+

Reference to the globally unique identifier that identifies the private data to set.

+

Pointer to a buffer that contains the data to associate with the volume.

+

Size of the buffer at pData in bytes.

+

Value that describes the type of data being passed, or indicates to the application that the data should be invalidated when the resource changes.

ItemDescription

(none)

If no flags are specified, Direct3D allocates memory to hold the data within the buffer and copies the data into the new buffer. The buffer allocated by Direct3D is automatically freed, as appropriate.

D3DSPD_IUNKNOWN

The data at pData is a reference to an interface. SizeOfData must be set to the size of a reference to an interface, sizeof(*). Direct3D automatically calls through pData and when the private data is destroyed. Private data will be destroyed by a subsequent call to with the same , a subsequent call to , or when the object is released. For more information, see Remarks.

?

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , E_OUTOFMEMORY.

+ +

Direct3D does not manage the memory at pData. If this buffer was dynamically allocated, it is the calling application's responsibility to free the memory.

Data is passed by value, and multiple sets of data can be associated with a single volume.

+
+ + bb205939 + HRESULT IDirect3DVolume9::SetPrivateData([In] const GUID& refguid,[In] const void* pData,[In] unsigned int SizeOfData,[In] unsigned int Flags) + IDirect3DVolume9::SetPrivateData +
+ + +

Copies the private data associated with the volume to a provided buffer.

+
+

Reference to (C++) or address of (C) the globally unique identifier that identifies the private data to retrieve.

+

Pointer to a previously allocated buffer to fill with the requested private data if the call succeeds. The application calling this method is responsible for allocating and releasing this buffer. If this parameter is null, this method will return the buffer size in pSizeOfData.

+

Pointer to the size of the buffer at pData, in bytes. If this value is less than the actual size of the private data, such as 0, the method sets this parameter to the required buffer size, and the method returns .

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , .

+ + bb205937 + HRESULT IDirect3DVolume9::GetPrivateData([In] const GUID& refguid,[In] void* pData,[Out] unsigned int* pSizeOfData) + IDirect3DVolume9::GetPrivateData +
+ + +

Frees the specified private data associated with this volume.

+
+

Reference to the globally unique identifier that identifies the private data to free.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , .

+ +

Direct3D calls this method automatically when a volume is released.

+
+ + bb205933 + HRESULT IDirect3DVolume9::FreePrivateData([In] const GUID& refguid) + IDirect3DVolume9::FreePrivateData +
+ + +

Provides access to the parent volume texture object, if this surface is a child level of a volume texture.

+
+

Reference identifier of the volume being requested.

+

Address of a reference to fill with the container reference, if the query succeeds.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

If the call succeeds, the reference count of the container is increased by one.

Here's an example getting the parent volume texture of a volume texture.

 // Assumes pSurface is a valid  reference	
+            void *pContainer = null;	
+             *pVolumeTexture = null;	
+             hr = pVolume->GetContainer(IID_IDirect3DVolumeTexture9, &pContainer);	
+            if (SUCCEEDED(hr) && pContainer)	
+            { pVolumeTexture = ( *)pContainer;	
+            
+
+ + bb205934 + HRESULT IDirect3DVolume9::GetContainer([In] const GUID& riid,[In] void** ppContainer) + IDirect3DVolume9::GetContainer +
+ + +

Retrieves a description of the volume.

+
+

Pointer to a structure, describing the volume.

+

If the method succeeds, the return value is . is returned if the argument is invalid.

+ + bb205935 + HRESULT IDirect3DVolume9::GetDesc([Out] D3DVOLUME_DESC* pDesc) + IDirect3DVolume9::GetDesc +
+ + +

Locks a box on a volume resource.

+
+

Pointer to a structure, describing the locked region.

+

Pointer to a box to lock. Specified by a reference to a structure. Specifying null for this parameter locks the entire volume.

+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For performance reasons, dirty regions are only recorded for level zero of a texture. Dirty regions are automatically recorded when is called without or . See for more information.

+
+ + bb205938 + HRESULT IDirect3DVolume9::LockBox([Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags) + IDirect3DVolume9::LockBox +
+ + +

Unlocks a box on a volume resource.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205940 + HRESULT IDirect3DVolume9::UnlockBox() + IDirect3DVolume9::UnlockBox +
+ + + Loads a volume from memory. + + Pointer to a structure, the destination palette of 256 colors or null. + Pointer to a structure. Specifies the destination box. Set this parameter to null to specify the entire volume. + Pointer to the top-left corner of the source volume in memory. + Member of the enumerated type, the pixel format of the source volume. + Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one row of cells, in bytes. + Pitch of source image, in bytes. For DXT formats (compressed texture formats), this number should represent the size of one slice of cells, in bytes. + Pointer to a structure, the source palette of 256 colors or null. + Pointer to a structure. Specifies the source box. null is not a valid value for this parameter. + A combination of one or more controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying | . + value to replace with transparent black, or 0 to disable the color key. This is always a 32-bit ARGB color, independent of the source image format. Alpha is significant and should usually be set to FF for opaque color keys. Thus, for opaque black, the value would be equal to 0xFF000000. + If the function succeeds, the return value is . If the function fails, the return value can be one of the following values: , D3DXERR_INVALIDDATA. + + Writing to a non-level-zero surface of the volume texture will not cause the dirty rectangle to be updated. If is called and the texture was not already dirty (this is unlikely under normal usage scenarios), the application needs to explicitly call on the volume texture. + + HRESULT D3DXLoadVolumeFromMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcMemory,[In] D3DFORMAT SrcFormat,[In] unsigned int SrcRowPitch,[In] unsigned int SrcSlicePitch,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey) + + + + Loads a volume from a file on the disk. + + The volume. + Name of the file. + The filter. + The color key. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo) + + + + Loads a volume from a file on the disk. + + The volume. + Name of the file. + The filter. + The color key. + The source box. + The destination box. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo) + + + + Loads a volume from a file on the disk. + + The volume. + Name of the file. + The filter. + The color key. + The source box. + The destination box. + The image information. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo) + + + + Loads a volume from a file on the disk. + + The volume. + Name of the file. + The filter. + The color key. + The source box. + The destination box. + The palette. + The image information. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileW([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] const wchar_t* pSrcFile,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey,[In] D3DXIMAGE_INFO* pSrcInfo) + + + + Loads a volume from a file in memory. + + The volume. + The memory. + The filter. + The color key. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a file in memory. + + The volume. + The memory. + The filter. + The color key. + The source box. + The destination box. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a file in memory. + + The volume. + The memory. + The filter. + The color key. + The source box. + The destination box. + The image information. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a file in memory. + + The volume. + The memory. + The filter. + The color key. + The source box. + The destination box. + The palette. + The image information. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a file in a stream. + + The volume. + The stream. + The filter. + The color key. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a file in a stream. + + The volume. + The stream. + The filter. + The color key. + The source box. + The destination box. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a file in a stream. + + The volume. + The stream. + The filter. + The color key. + The source box. + The destination box. + The image information. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a file in a stream. + + The volume. + The stream. + The filter. + The color key. + The source box. + The destination box. + The palette. + The image information. + A object describing the result of the operation. + HRESULT D3DXLoadVolumeFromFileInMemory([In] IDirect3DVolume9* pDestVolume,[Out, Buffer] const PALETTEENTRY* pDestPalette,[In] const void* pDestBox,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] const void* pSrcBox,[In] D3DX_FILTER Filter,[In] int ColorKey,[In] void* pSrcInfo) + + + + Loads a volume from a source volume. + + The destination volume. + The source volume. + The filter. + The color key. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey) + + + + Loads a volume from a source volume. + + The destination volume. + The source volume. + The filter. + The color key. + The source box. + The destination box. + + A object describing the result of the operation. + + HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey) + + + + Loads a volume from a source volume. + + The destination volume. + The source volume. + The filter. + The color key. + The source box. + The destination box. + The destination palette. + The source palette. + A object describing the result of the operation. + HRESULT D3DXLoadVolumeFromVolume([In] IDirect3DVolume9* pDestVolume,[In] const PALETTEENTRY* pDestPalette,[In] const D3DBOX* pDestBox,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox,[In] unsigned int Filter,[In] D3DCOLOR ColorKey) + + + + Locks a box on a volume resource. + + The flags. + + The locked region of this resource + + HRESULT IDirect3DVolume9::LockBox([Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags) + + + + Locks a box on a volume resource. + + The box. + The flags. + The locked region of this resource + HRESULT IDirect3DVolume9::LockBox([Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags) + + + + Saves a volume to a file on disk. + + The volume. + Name of the file. + The format. + + A object describing the result of the operation. + + HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox) + + + + Saves a volume to a file on disk. + + The volume. + Name of the file. + The format. + The box. + + A object describing the result of the operation. + + HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox) + + + + Saves a volume to a file on disk. + + The volume. + Name of the file. + The format. + The box. + The palette. + A object describing the result of the operation. + HRESULT D3DXSaveVolumeToFileW([In] const wchar_t* pDestFile,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In] const PALETTEENTRY* pSrcPalette,[In] const D3DBOX* pSrcBox) + + + + Saves a volume to a . + + The volume. + The format. + + A object describing the result of the operation. + + HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox) + + + + Saves a volume to a . + + The volume. + The format. + The box. + + A object describing the result of the operation. + + HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox) + + + + Saves a volume to a . + + The volume. + The format. + The box. + The palette. + A object describing the result of the operation. + HRESULT D3DXSaveVolumeToFileInMemory([In] ID3DXBuffer** ppDestBuf,[In] D3DXIMAGE_FILEFORMAT DestFormat,[In] IDirect3DVolume9* pSrcVolume,[In, Buffer] const PALETTEENTRY* pSrcPalette,[In] const void* pSrcBox) + + + +

Retrieves the device associated with a volume.

+
+ +

This method allows navigation to the owning device object.

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205936 + GetDevice + GetDevice + HRESULT IDirect3DVolume9::GetDevice([Out] IDirect3DDevice9** ppDevice) +
+ + +

Retrieves a description of the volume.

+
+ + bb205935 + GetDesc + GetDesc + HRESULT IDirect3DVolume9::GetDesc([Out] D3DVOLUME_DESC* pDesc) +
+ + +

Applications use the methods of the interface to manipulate a volume texture resource.

+
+ +

The interface can be obtained by calling the CreateVolumeTexture method or one of the xxx functions.

This interface inherits additional functionality from the interface.

This interface, like all COM interfaces, inherits from the interface.

The LPDIRECT3DVOLUMETEXTURE9 and PDIRECT3DVOLUMETEXTURE9 types are defined as references to the interface.

 typedef struct  *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;	
+            
+
+ + bb205941 + IDirect3DVolumeTexture9 + IDirect3DVolumeTexture9 +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves a level description of a volume texture resource.

+
+

Identifies a level of the volume texture resource. This method returns a volume description for the level specified by this parameter.

+

Pointer to a structure, describing the returned volume texture level.

+ + bb205943 + HRESULT IDirect3DVolumeTexture9::GetLevelDesc([In] unsigned int Level,[Out] D3DVOLUME_DESC* pDesc) + IDirect3DVolumeTexture9::GetLevelDesc +
+ + +

Retrieves the specified volume texture level.

+
+

Identifies a level of the volume texture resource. This method returns a volume for the level specified by this parameter.

+

Address of a reference to an interface, representing the returned volume level.

+ +

Calling this method will increase the internal reference count on the interface. Failure to call IUnknown::Release when finished using this interface results in a memory leak.

+
+ + bb205944 + HRESULT IDirect3DVolumeTexture9::GetVolumeLevel([In] unsigned int Level,[Out] IDirect3DVolume9** ppVolumeLevel) + IDirect3DVolumeTexture9::GetVolumeLevel +
+ + +

Locks a box on a volume texture resource.

+
+

Specifies the level of the volume texture resource to lock.

+

Pointer to a structure, describing the locked region.

+

Pointer to the volume to lock. This parameter is specified by a reference to a structure. Specifying null for this parameter locks the entire volume level.

+

Combination of zero or more locking flags that describe the type of lock to perform. For this method, the valid flags are:

For a description of the flags, see .

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For performance reasons, dirty regions are only recorded for level zero of a texture. Dirty regions are automatically recorded when LockBox is called without or . For more information, see UpdateTexture.

+
+ + bb205945 + HRESULT IDirect3DVolumeTexture9::LockBox([In] unsigned int Level,[Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags) + IDirect3DVolumeTexture9::LockBox +
+ + +

Unlocks a box on a volume texture resource.

+
+

Specifies the level of the volume texture resource to unlock.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ + bb205946 + HRESULT IDirect3DVolumeTexture9::UnlockBox([In] unsigned int Level) + IDirect3DVolumeTexture9::UnlockBox +
+ + +

Adds a dirty region to a volume texture resource.

+
+

Pointer to a structure, specifying the dirty region to add. Specifying null expands the dirty region to cover the entire volume texture.

+

If the method succeeds, the return value is . If the method fails, the return value can be .

+ +

For performance reasons, dirty regions are only recorded for level zero of a texture. For sublevels, it is assumed that the corresponding (scaled) box is also dirty. Dirty regions are automatically recorded when LockBox is called without or .

Using and explicitly specifying dirty regions can be used to increase the efficiency of UpdateTexture. Using this method, applications can optimize what subset of a resource is copied by specifying dirty boxes on the resource. However, the dirty regions may be expanded to optimize alignment.

+
+ + bb205942 + HRESULT IDirect3DVolumeTexture9::AddDirtyBox([In] const void* pDirtyBox) + IDirect3DVolumeTexture9::AddDirtyBox +
+ + + Initializes a new instance of the class. + + The device. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + HRESULT IDirect3DDevice9::CreateVolumeTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVolumeTexture9** ppVolumeTexture,[In] void** pSharedHandle) + + + + Initializes a new instance of the class. + + The device. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The shared handle. + HRESULT IDirect3DDevice9::CreateVolumeTexture([In] unsigned int Width,[In] unsigned int Height,[In] unsigned int Levels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[Out, Fast] IDirect3DVolumeTexture9** ppVolumeTexture,[In] void** pSharedHandle) + + + + Checks texture-creation parameters. + + Device associated with the texture. + The width. + The height. + The depth. + Requested number of mipmap levels for the texture. + The requested usage for the texture. + Requested format for the texture. + Memory class where the resource will be placed. + + A value type containing the proposed values to pass to the texture creation functions. + + HRESULT D3DXCheckVolumeTextureRequirements([In] IDirect3DDevice9* pDevice,[InOut] unsigned int* pWidth,[InOut] unsigned int* pHeight,[InOut] unsigned int* pDepth,[InOut] unsigned int* pNumMipLevels,[In] unsigned int Usage,[InOut] D3DFORMAT* pFormat,[In] D3DPOOL Pool) + + + + Uses a user-provided function to fill each texel of each mip level of a given texture. + + A function that is used to fill the texture. + A object describing the result of the operation. + HRESULT D3DXFillVolumeTexture([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] __function__stdcall* pFunction,[In] void* pData) + + + + Uses a compiled high-level shader language (HLSL) function to fill each texel of each mipmap level of a texture. + + A texture shader object that is used to fill the texture. + A object describing the result of the operation. + HRESULT D3DXFillVolumeTextureTX([In] IDirect3DVolumeTexture9* pVolumeTexture,[In] ID3DXVolumeTextureShader* pVolumeTextureShader) + + + + Locks a box on a volume texture resource. + + The level. + The flags. + + A describing the region locked. + + HRESULT IDirect3DVolumeTexture9::LockBox([In] unsigned int Level,[Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags) + + + + Locks a box on a volume texture resource. + + The level. + The box. + The flags. + + A describing the region locked. + + HRESULT IDirect3DVolumeTexture9::LockBox([In] unsigned int Level,[Out] D3DLOCKED_BOX* pLockedVolume,[In] const void* pBox,[In] D3DLOCK Flags) + + + + Adds a dirty region to a texture resource. + + + A object describing the result of the operation. + + HRESULT IDirect3DVolumeTexture9::AddDirtyBox([In] const void* pDirtyBox) + + + + Adds a dirty region to a texture resource. + + The direct box ref. + + A object describing the result of the operation. + + HRESULT IDirect3DVolumeTexture9::AddDirtyBox([In] const void* pDirtyBox) + + + + Creates a from a file + + The device. + The filename. + + A + + HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a file + + The device. + The filename. + The usage. + The pool. + + A + + HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a file + + The device. + The filename. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a file + + The device. + The filename. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a file + + The device. + The filename. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateVolumeTextureFromFileExW([In] IDirect3DDevice9* pDevice,[In] const wchar_t* pSrcFile,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[In] void* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The usage. + The pool. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a memory buffer. + + The device. + The buffer. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The stream. + A + HRESULT D3DXCreateVolumeTextureFromFileInMemory([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The usage. + The pool. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The buffer. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The stream. + The size bytes. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + A + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + The pointer. + The size in bytes. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + + Creates a from a stream. + + The device. + Name of the file. + The width. + The height. + The depth. + The level count. + The usage. + The format. + The pool. + The filter. + The mip filter. + The color key. + The image information. + The palette. + + A + + HRESULT D3DXCreateVolumeTextureFromFileInMemoryEx([In] IDirect3DDevice9* pDevice,[In] const void* pSrcData,[In] unsigned int SrcDataSize,[In] unsigned int Size,[In] unsigned int MipLevels,[In] unsigned int Usage,[In] D3DFORMAT Format,[In] D3DPOOL Pool,[In] unsigned int Filter,[In] unsigned int MipFilter,[In] D3DCOLOR ColorKey,[Out] D3DXIMAGE_INFO* pSrcInfo,[Out, Buffer] PALETTEENTRY* pPalette,[In] IDirect3DVolumeTexture9** ppVolumeTexture) + + + +

Applications use the methods of the interface to create instances of the and interfaces, and to register templates.

+
+ +

An object also contains a local template store. This local storage may be added to only with the and methods.

and objects created with and also utilize the template store of the parent object.

The interface is obtained by calling the function.

The globally unique identifier () for the interface is IID_ID3DXFile.

The LPD3DXFILE type is defined as a reference to the interface.

 typedef interface  *LPD3DXFILE;	
+            
+
+ + bb205836 + ID3DXFile + ID3DXFile +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Creates an enumerator object that will read a .x file.

+
+

The data source. Either:

  • A file name
  • A D3DXF_FILELOADMEMORY structure
  • A D3DXF_FILELOADRESOURCE structure

Depending on the value of loadflags.

+

Value that specifies the source of the data. This value can be one of the D3DXF_FILELOADOPTIONS flags.

+

Address of a reference to an interface, representing the created enumerator object.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_PARSEERROR.

+ +

After using this method, use one of the methods to retrieve a data object.

+
+ + bb173957 + HRESULT ID3DXFile::CreateEnumObject([In] const void* arg0,[In] unsigned int arg1,[In] ID3DXFileEnumObject** arg2) + ID3DXFile::CreateEnumObject +
+ + +

Creates a save object that will be used to save data to a .x file.

+
+

Pointer to the name of the file to use for saving data.

+

Value that specifies the name of the file to which data is to be saved. This value can be one of the File Save Options flags.

+

Indicates the format to use when saving the .x file. This value can be one of the File Formats flags. For more information, see Remarks.

+

Address of a reference to an interface, representing the created save object.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_PARSEERROR.

+ +

After using this method, use methods of the interface to create data objects and to save templates or data.

For the saved file format dwFileFormat, one of the binary, legacy binary, or text flags in File Formats must be specified. The file can be compressed by using the optional flag.

The file format values can be combined in a logical OR to create compressed text or compressed binary files. If you indicate that the file format should be text and compressed, the file will be written out first as text and then compressed. However, compressed text files are not as efficient as binary text files; in most cases, therefore, you will want to indicate binary and compressed.

+
+ + bb173958 + HRESULT ID3DXFile::CreateSaveObject([In] const void* arg0,[In] unsigned int arg1,[In] unsigned int arg2,[In] ID3DXFileSaveObject** arg3) + ID3DXFile::CreateSaveObject +
+ + +

Registers custom templates.

+
+

Pointer to a buffer consisting of a .x file in text or binary format that contains templates.

+

Size of the buffer pointed to by pvData, in bytes.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_PARSEERROR.

+ +

The following code fragment provides an example call to RegisterTemplates And example contents for the buffer to which pvData points.

 #define XSKINEXP_TEMPLATES \ "xof 0303txt 0032\ template XSkinMeshHeader \ { \ <3CF169CE-FF7C-44ab-93C0-F78F62D172E2> \ WORD nMaxSkinWeightsPerVertex; \ WORD nMaxSkinWeightsPerFace; \ WORD nBones; \ } \ template VertexDuplicationIndices \ { \ <B8D65549-D7C9-4995-89CF-53A9A8B031E3> \ DWORD nIndices; \ DWORD nOriginalVertices; \ array DWORD indices[nIndices]; \ } \ template SkinWeights \ { \ <6F0D123B-BAD2-4167-A0D0-80224F25FABB> \ STRING transformNodeName;\ DWORD nWeights; \ array DWORD vertexIndices[nWeights]; \ array float weights[nWeights]; \ Matrix4x4 matrixOffset; \ }"	
+            .	
+            .	
+            . LPD3DXFILE pD3DXFile = null; if ( FAILED  (hr = pD3DXFile->RegisterTemplates(  (LPVOID)XSKINEXP_TEMPLATES, sizeof( XSKINEXP_TEMPLATES ) - 1 ) ) )	
+            goto End;	
+            

All templates must specify a name and a UUID.

This method calls the RegisterEnumTemplates method, obtaining an interface reference by calling CreateEnumObject with pvData as the first parameter.

+
+ + bb173960 + HRESULT ID3DXFile::RegisterTemplates([In] const void* arg0,[In] SIZE_T arg1) + ID3DXFile::RegisterTemplates +
+ + +

Registers custom templates, given an enumeration object.

+
+ No documentation. +

If the method succeeds, the return value is .

If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ +

When this method is called, it copies templates stored with the , representing the file, to the local template store of the object.

If an reference is not available, call the RegisterTemplates method instead.

+
+ + bb173959 + HRESULT ID3DXFile::RegisterEnumTemplates([In] ID3DXFileEnumObject* arg0) + ID3DXFile::RegisterEnumTemplates +
+ + +

Applications use the methods of the interface to build or to access the immediate hierarchy of the data object. Template restrictions determine the hierarchy.

+
+ +

Data types allowed by the template are called optional members. The optional members are not required, but an object might miss important information without them. These optional members are saved as children of the data object. A child can be another data object or a reference to an earlier data object.

The for the interface is IID_ID3DXFileData.

The LPD3DXFILEDATA type is defined as a reference to this interface.

 typedef interface  *LPD3DXFILEDATA;	
+            
+
+ + bb205837 + ID3DXFileData + ID3DXFileData +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the enumeration object in this file data object.

+
+

Address of a reference to receive the enumeration object in this file data object.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb205840 + HRESULT ID3DXFileData::GetEnum([Out] ID3DXFileEnumObject** arg0) + ID3DXFileData::GetEnum +
+ + +

Retrieves the name of this file data object.

+
+

Address of a reference to receive the name of this file data object. If this parameter is null, then puiSize will return the size of the string. If szName points to valid memory, the name of this file data object will be copied into szName up to the number of characters given by puiSize.

+

Pointer to the size of the string that represents the name of this file data object. This parameter can be null if szName provides a reference to the name. This parameter will return the size of the string if szName is null.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ +

For this method to succeed, either szName or puiSize must be non-null.

+
+ + bb205842 + HRESULT ID3DXFileData::GetName([In] char* arg0,[Out] SIZE_T* arg1) + ID3DXFileData::GetName +
+ + +

Retrieves the of this file data object.

+
+

Pointer to a to receive the ID of this file data object. If the file data object has no ID, the returned parameter value will be GUID_NULL.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb205841 + HRESULT ID3DXFileData::GetId([In] GUID* arg0) + ID3DXFileData::GetId +
+ + +

Accesses the .x file data.

+
+

Pointer to the size of the .x file data.

+

Address of a reference to receive the file data object's interface reference. See Remarks.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ +

The ppData reference is only valid during a ... sequence. You can make multiple lock calls. However, you must ensure that the number of lock calls matches the number of unlock calls.

Because file data is not guaranteed to be aligned properly with byte boundaries, you should access ppData with UNALIGNED references.

Returned parameter values are not guaranteed to be valid due to possible file corruption; therefore, your code should verify the returned parameter values.

+
+ + bb205845 + HRESULT ID3DXFileData::Lock([In] SIZE_T* arg0,[In] const void** arg1) + ID3DXFileData::Lock +
+ + +

Ends the lifespan of the ppData reference returned by .

+
+

The return value is .

+ +

You must ensure that the number of calls matches the number of calls. After calling Unlock, the ppData reference returned by should no longer be used.

+
+ + bb205846 + HRESULT ID3DXFileData::Unlock() + ID3DXFileData::Unlock +
+ + +

Retrieves the template ID in this file data object.

+
+

Pointer to the representing the template in this file data object.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb205843 + HRESULT ID3DXFileData::GetType([Out] GUID* arg0) + ID3DXFileData::GetType +
+ + +

Indicates whether this file data object is a reference object that points to another child data object.

+
+

Returns TRUE if the file data object is a reference object; returns otherwise.

+ + bb205844 + BOOL ID3DXFileData::IsReference() + ID3DXFileData::IsReference +
+ + +

Retrieves the number of children in this file data object.

+
+

Address of a reference to receive the number of children in this file data object.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb205839 + HRESULT ID3DXFileData::GetChildren([Out] SIZE_T* arg0) + ID3DXFileData::GetChildren +
+ + +

Retrieves a child object in this file data object.

+
+

ID of the child object to retrieve.

+

Address of a reference to receive the child object's interface reference.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following values: D3DXFERR_BADVALUE, D3DXFERR_NOMOREOBJECTS.

+ + bb205838 + HRESULT ID3DXFileData::GetChild([In] SIZE_T arg0,[Out] ID3DXFileData** arg1) + ID3DXFileData::GetChild +
+ + +

Retrieves the enumeration object in this file data object.

+
+ + bb205840 + GetEnum + GetEnum + HRESULT ID3DXFileData::GetEnum([Out] ID3DXFileEnumObject** arg0) +
+ + +

Retrieves the template ID in this file data object.

+
+ + bb205843 + GetType + GetType + HRESULT ID3DXFileData::GetType([Out] GUID* arg0) +
+ + +

Indicates whether this file data object is a reference object that points to another child data object.

+
+ + bb205844 + IsReference + IsReference + BOOL ID3DXFileData::IsReference() +
+ + +

Retrieves the number of children in this file data object.

+
+ + bb205839 + GetChildren + GetChildren + HRESULT ID3DXFileData::GetChildren([Out] SIZE_T* arg0) +
+ + +

Applications use the methods of the interface to cycle through the child file data objects in the file and to retrieve a child object by its globally unique identifier () or by its name.

+
+ +

The for the interface is IID_ID3DXFileEnumObject.

The LPD3DXFILEENUMOBJECT type is defined as a reference to this interface.

 typedef interface  *LPD3DXFILEENUMOBJECT;	
+            
+
+ + bb205847 + ID3DXFileEnumObject + ID3DXFileEnumObject +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves the object.

+
+ No documentation. +

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb205852 + HRESULT ID3DXFileEnumObject::GetFile([Out] ID3DXFile** arg0) + ID3DXFileEnumObject::GetFile +
+ + +

Retrieves the number of child objects in this file data object.

+
+

Address of a reference to receive the number of child objects in this file data object.

+

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb205849 + HRESULT ID3DXFileEnumObject::GetChildren([Out] SIZE_T* arg0) + ID3DXFileEnumObject::GetChildren +
+ + +

Retrieves a child object in this file data object.

+
+

ID of the child object to retrieve.

+

Address of a reference to receive the child object's interface reference.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, D3DXFERR_NOMOREOBJECTS.

+ + bb205848 + HRESULT ID3DXFileEnumObject::GetChild([In] SIZE_T arg0,[Out] ID3DXFileData** arg1) + ID3DXFileEnumObject::GetChild +
+ + +

Retrieves the data object that has the specified .

+
+

Reference to the requested .

+

Address of a reference to an interface, representing the returned file data object.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following:DXFILEERR_BADVALUE, DXFILEERR_NOTFOUND.

+ +

Obtain the rguid of the current file data object with the method.

+
+ + bb205850 + HRESULT ID3DXFileEnumObject::GetDataObjectById([In] const GUID& arg0,[In] ID3DXFileData** arg1) + ID3DXFileEnumObject::GetDataObjectById +
+ + +

Retrieves the data object that has the specified name.

+
+

Pointer to the requested name.

+

Address of a reference to an interface, representing the returned file data object.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following:DXFILEERR_BADVALUE, DXFILEERR_NOTFOUND.

+ +

Obtain the name szName of the current file data object with the method.

+
+ + bb205851 + HRESULT ID3DXFileEnumObject::GetDataObjectByName([In] const char* arg0,[In] ID3DXFileData** arg1) + ID3DXFileEnumObject::GetDataObjectByName +
+ + +

Retrieves the object.

+
+ + bb205852 + GetFile + GetFile + HRESULT ID3DXFileEnumObject::GetFile([Out] ID3DXFile** arg0) +
+ + +

Retrieves the number of child objects in this file data object.

+
+ + bb205849 + GetChildren + GetChildren + HRESULT ID3DXFileEnumObject::GetChildren([Out] SIZE_T* arg0) +
+ + +

Applications use the methods of the interface to add data objects as children of a .x file data node.

+
+ +

The for the interface is IID_ID3DXFileSaveObject.

The LPD3DXFileSaveData type is defined as a reference to this interface.

 typedef interface  *LPD3DXFILESAVEDATA;	
+            
+
+ + bb205853 + ID3DXFileSaveData + ID3DXFileSaveData +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Retrieves a reference to this file data node.

+
+ No documentation. +

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb173951 + HRESULT ID3DXFileSaveData::GetSave([Out] ID3DXFileSaveObject** arg0) + ID3DXFileSaveData::GetSave +
+ + +

Retrieves the name of this file data node.

+
+ No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ +

For this method to succeed, either szName or puiSize must be non-null.

+
+ + bb173950 + HRESULT ID3DXFileSaveData::GetName([In] char* arg0,[Out] SIZE_T* arg1) + ID3DXFileSaveData::GetName +
+ + +

Retrieves the of this file data node.

+
+ No documentation. +

If the method succeeds, the return value is . If the method fails, the following value will be returned: D3DXFERR_BADVALUE.

+ + bb205856 + HRESULT ID3DXFileSaveData::GetId([In] GUID* arg0) + ID3DXFileSaveData::GetId +
+ + +

Retrieves the template ID of this file data node.

+
+

Pointer to the representing the template in this file data node.

+

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, D3DXFERR_BADVALUE.

+ + bb173952 + HRESULT ID3DXFileSaveData::GetType([Out] GUID* arg0) + ID3DXFileSaveData::GetType +
+ + +

Adds a data object as a child of the file data node.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, D3DXFERR_BADVALUE, E_OUTOFMEMORY.

+ + bb205854 + HRESULT ID3DXFileSaveData::AddDataObject([In] const GUID& arg0,[In] const char* arg1,[In] const GUID* arg2,[In] SIZE_T arg3,[In] const void* arg4,[In] ID3DXFileSaveData** arg5) + ID3DXFileSaveData::AddDataObject +
+ + +

Adds a data reference as a child of this file data node. The data reference points to a file data object.

+
+ No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, D3DXFERR_BADVALUE, E_OUTOFMEMORY.

+ +

The file data object being referenced must have either a name or a . The file data object must also derive from a different parent object.

+
+ + bb205855 + HRESULT ID3DXFileSaveData::AddDataReference([In] const char* arg0,[In] const GUID* arg1) + ID3DXFileSaveData::AddDataReference +
+ + +

Retrieves a reference to this file data node.

+
+ + bb173951 + GetSave + GetSave + HRESULT ID3DXFileSaveData::GetSave([Out] ID3DXFileSaveObject** arg0) +
+ + +

Retrieves the template ID of this file data node.

+
+ + bb173952 + GetType + GetType + HRESULT ID3DXFileSaveData::GetType([Out] GUID* arg0) +
+ + +

Applications use the methods of the interface to write a .x file to disk, and to add and save data objects and templates.

+
+ +

Templates are not required in every file. For example, you could put all templates into a single .x file rather than duplicating them in every .x file.

The interface is obtained by calling the method.

The globally unique identifier () for the interface is IID_ID3DXFileSaveObject.

The LPD3DXFILESAVEOBJECT type is defined as a reference to this interface.

 typedef interface  *LPD3DXFILESAVEOBJECT;	
+            
+
+ + bb173953 + ID3DXFileSaveObject + ID3DXFileSaveObject +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Gets the interface of the object that created this object.

+
+ No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADVALUE, E_NOINTERFACE, E_POINTER.

+ + bb173955 + HRESULT ID3DXFileSaveObject::GetFile([Out] ID3DXFile** arg0) + ID3DXFileSaveObject::GetFile +
+ + +

Adds a data object as a child of the object.

+
+ No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. +

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: D3DXFERR_BADOBJECT, DXFILEERR_BADVALUE, E_OUTOFMEMORY.

+ +

If a data reference object will reference the data object, either the szName or pId parameter must be non-null.

Save the created data to disk by using the method.

+
+ + bb173954 + HRESULT ID3DXFileSaveObject::AddDataObject([In] const GUID& arg0,[In] const char* arg1,[In] const GUID* arg2,[In] SIZE_T arg3,[In] const void* arg4,[In] ID3DXFileSaveData** arg5) + ID3DXFileSaveObject::AddDataObject +
+ + +

Saves a data object and its children to a .x file on disk.

+
+

If the method succeeds, the return value is . If the method fails, the return value can be the following: D3DXFERR_BADOBJECT.

+ +

After this method succeeds, , and can no longer be called until a new object is created.

+
+ + bb173956 + HRESULT ID3DXFileSaveObject::Save() + ID3DXFileSaveObject::Save +
+ + +

Gets the interface of the object that created this object.

+
+ + bb173955 + GetFile + GetFile + HRESULT ID3DXFileSaveObject::GetFile([Out] ID3DXFile** arg0) +
+ + +

Stores an attribute table entry.

+
+ +

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.

The LPD3DXATTRIBUTERANGE type is defined as a reference to the structure.

 typedef * LPD3DXATTRIBUTERANGE;	
+            
+
+ + bb172710 + D3DXATTRIBUTERANGE + D3DXATTRIBUTERANGE +
+ + +

Attribute table identifier.

+
+ + bb172710 + unsigned int AttribId + unsigned int AttribId +
+ + +

Starting face.

+
+ + bb172710 + unsigned int FaceStart + unsigned int FaceStart +
+ + +

Face count.

+
+ + bb172710 + unsigned int FaceCount + unsigned int FaceCount +
+ + +

Starting vertex.

+
+ + bb172710 + unsigned int VertexStart + unsigned int VertexStart +
+ + +

Vertex count.

+
+ + bb172710 + unsigned int VertexCount + unsigned int VertexCount +
+ + +

Specifies mesh weight attributes.

+
+ +

This structure describes how a simplification operation will consider vertex data when calculating relative costs between collapsing edges. For example, if the Normal field is 0.0, the simplification operation will ignore the vertex normal component when calculating the error for the collapse. However, if the Normal field is 1.0, the simplification operation will use the vertex normal component. If the Normal field is 2.0, double the amount of errors; if the Normal field is 4.0, then quadruple the number of errors, and so on.

The LPD3DXATTRIBUTEWEIGHTS type is defined as a reference to the structure.

 typedef * LPD3DXATTRIBUTEWEIGHTS;	
+            
+
+ + bb172711 + D3DXATTRIBUTEWEIGHTS + D3DXATTRIBUTEWEIGHTS +
+ + +

Position.

+
+ + bb172711 + float Position + float Position +
+ + +

Blend weight.

+
+ + bb172711 + float Boundary + float Boundary +
+ + +

Normal.

+
+ + bb172711 + float Normal + float Normal +
+ + +

Diffuse lighting value.

+
+ + bb172711 + float Diffuse + float Diffuse +
+ + +

Specular lighting value.

+
+ + bb172711 + float Specular + float Specular +
+ + +

Tangent.

+
+ + bb172711 + float Tangent + float Tangent +
+ + +

Binormal.

+
+ + bb172711 + float Binormal + float Binormal +
+ + +

Eight texture coordinates.

+
+ + bb172711 + float Texcoord[8] + float Texcoord +
+ + +

Throughput metrics for help in understanding the performance of an application.

+
+ + bb172539 + D3DDEVINFO_D3D9BANDWIDTHTIMINGS + D3DDEVINFO_D3D9BANDWIDTHTIMINGS +
+ + +

The bandwidth or maximum data transfer rate from the host CPU to the GPU. This is typically the bandwidth of the PCI or AGP bus which connects the CPU and the GPU.

+
+ + bb172539 + float MaxBandwidthUtilized + float MaxBandwidthUtilized +
+ + +

Memory utilized percentage when uploading data from the host CPU to the GPU.

+
+ + bb172539 + float FrontEndUploadMemoryUtilizedPercent + float FrontEndUploadMemoryUtilizedPercent +
+ + +

Vertex throughput percentage. This is the number of vertices processed compared to the theoretical maximum vertex processing rate.

+
+ + bb172539 + float VertexRateUtilizedPercent + float VertexRateUtilizedPercent +
+ + +

Triangle set-up throughput percentage. This is the number of triangles that are set up for rasterization compared to the theoretical maximum triangle set-up rate.

+
+ + bb172539 + float TriangleSetupRateUtilizedPercent + float TriangleSetupRateUtilizedPercent +
+ + +

Pixel fill throughput percentage. This is the number of pixels that are filled compared to the theoretical pixel fill.

+
+ + bb172539 + float FillRateUtilizedPercent + float FillRateUtilizedPercent +
+ + +

Defines a volume.

+
+ +

includes the left, top, and front edges; however, the right, bottom, and back edges are not included. For example, a box that is 100 units wide and begins at 0 (thus, including the points up to and including 99) would be expressed with a value of 0 for the Left member and a value of 100 for the Right member. Note that a value of 99 is not used for the Right member.

The restrictions on side ordering observed for are left to right, top to bottom, and front to back.

+
+ + bb172510 + D3DBOX + D3DBOX +
+ + +

Position of the left side of the box on the x-axis.

+
+ + bb172510 + unsigned int Left + unsigned int Left +
+ + +

Position of the top of the box on the y-axis.

+
+ + bb172510 + unsigned int Top + unsigned int Top +
+ + +

Position of the right side of the box on the x-axis.

+
+ + bb172510 + unsigned int Right + unsigned int Right +
+ + +

Position of the bottom of the box on the y-axis.

+
+ + bb172510 + unsigned int Bottom + unsigned int Bottom +
+ + +

Position of the front of the box on the z-axis.

+
+ + bb172510 + unsigned int Front + unsigned int Front +
+ + +

Position of the back of the box on the z-axis.

+
+ + bb172510 + unsigned int Back + unsigned int Back +
+ + +

Measure the cache hit rate performance for textures and indexed vertices.

+
+ +

An efficient cache is typically closer to a 90 percent hit rate, and an inefficient cache is typically closer to a 10 percent hit rate (although a low percentage is not necessarily a problem).

+
+ + bb172540 + D3DDEVINFO_D3D9CACHEUTILIZATION + D3DDEVINFO_D3D9CACHEUTILIZATION +
+ + +

The hit rate for finding a texture in the texture cache. This assumes there is a texture cache. Increasing the level-of-detail bias to use the most detailed texture, using many large textures, or producing a near random texture access pattern on large textures with custom shader code can dramatically affect the texture cache hit rate.

+
+ + bb172540 + float TextureCacheHitRate + float TextureCacheHitRate +
+ + +

The hit rate for finding transformed vertices in the vertex cache. The GPU is designed to transform indexed vertices and may store them in a vertex cache. If you are using meshes, or may result in better vertex cache utilization.

+
+ + bb172540 + float PostTransformVertexCacheHitRate + float PostTransformVertexCacheHitRate +
+ + +

Describes a callback key for use in key frame animation.

+
+ + bb172886 + D3DXKEY_CALLBACK + D3DXKEY_CALLBACK +
+ + +

Key frame time stamp.

+
+ + bb172886 + float Time + float Time +
+ + +

Pointer to user callback data.

+
+ + bb172886 + void* pCallbackData + void pCallbackData +
+ + +

Describes the current clip status.

+
+ +

When clipping is enabled during vertex processing (by ProcessVertices, DrawPrimitive, or other drawing functions), Direct3D computes a clip code for every vertex. The clip code is a combination of D3DCS_* bits. When a vertex is outside a particular clipping plane, the corresponding bit is set in the clipping code. Direct3D maintains the clip status using , which has ClipUnion and ClipIntersection members. ClipUnion is a bitwise OR of all vertex clip codes and ClipIntersection is a bitwise AND of all vertex clip codes. Initial values are zero for ClipUnion and 0xFFFFFFFF for ClipIntersection. When is set to , ClipUnion and ClipIntersection are set to zero. Direct3D updates the clip status during drawing calls. To compute clip status for a particular object, set ClipUnion and ClipIntersection to their initial value and continue drawing.

Clip status is not updated by DrawRectPatch and DrawTriPatch because there is no software emulation for them.

+
+ + bb172516 + D3DCLIPSTATUS9 + D3DCLIPSTATUS9 +
+ + +

Clip union flags that describe the current clip status. This member can be one or more of the following flags:

ValueMeaning

Combination of all clip flags.

All vertices are clipped by the left plane of the viewing frustum.

All vertices are clipped by the right plane of the viewing frustum.

All vertices are clipped by the top plane of the viewing frustum.

All vertices are clipped by the bottom plane of the viewing frustum.

All vertices are clipped by the front plane of the viewing frustum.

All vertices are clipped by the back plane of the viewing frustum.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

Application-defined clipping planes.

?

+
+ + bb172516 + unsigned int ClipUnion + unsigned int ClipUnion +
+ + +

Clip intersection flags that describe the current clip status. This member can take the same flags as ClipUnion.

+
+ + bb172516 + unsigned int ClipIntersection + unsigned int ClipIntersection +
+ + +

A description of a constant in a constant table.

+
+ + bb172748 + D3DXCONSTANT_DESC + D3DXCONSTANT_DESC +
+ + +

Name of the constant.

+
+ + bb172748 + const char* Name + char Name +
+ + +

Constant data type. See .

+
+ + bb172748 + D3DXREGISTER_SET RegisterSet + D3DXREGISTER_SET RegisterSet +
+ + +

Zero-based index of the constant in the table.

+
+ + bb172748 + unsigned int RegisterIndex + unsigned int RegisterIndex +
+ + +

Number of registers that contain data.

+
+ + bb172748 + unsigned int RegisterCount + unsigned int RegisterCount +
+ + +

Parameter class. See .

+
+ + bb172748 + D3DXPARAMETER_CLASS Class + D3DXPARAMETER_CLASS Class +
+ + +

Parameter type. See .

+
+ + bb172748 + D3DXPARAMETER_TYPE Type + D3DXPARAMETER_TYPE Type +
+ + +

Number of rows.

+
+ + bb172748 + unsigned int Rows + unsigned int Rows +
+ + +

Number of columns.

+
+ + bb172748 + unsigned int Columns + unsigned int Columns +
+ + +

Number of elements in the array.

+
+ + bb172748 + unsigned int Elements + unsigned int Elements +
+ + +

Number of structure member sub-parameters.

+
+ + bb172748 + unsigned int StructMembers + unsigned int StructMembers +
+ + +

Data size in number of bytes.

+
+ + bb172748 + unsigned int Bytes + unsigned int Bytes +
+ + +

Pointer to the default value.

+
+ + bb172748 + const void* DefaultValue + void DefaultValue +
+ + +

A description of the constant table.

+
+ + bb172747 + D3DXCONSTANTTABLE_DESC + D3DXCONSTANTTABLE_DESC +
+ + +

Name of the constant table creator.

+
+ + bb172747 + const char* Creator + char Creator +
+ + +

Shader version.

+
+ + bb172747 + unsigned int Version + unsigned int Version +
+ + +

Number of constants in the constant table.

+
+ + bb172747 + unsigned int Constants + unsigned int Constants +
+ + +

Describes the creation parameters for a device.

+
+ + bb172538 + D3DDEVICE_CREATION_PARAMETERS + D3DDEVICE_CREATION_PARAMETERS +
+ + +

Ordinal number that denotes the display adapter. D3DADAPTER_DEFAULT is always the primary display adapter. Use this ordinal as the Adapter parameter for any of the methods. Note that different instances of Direct3D 9.0 objects can use different ordinals. Adapters can enter or leave a system when users, for example, add or remove monitors from a multiple-monitor system or when they hot-swap a laptop. Consequently, use this ordinal only in a Direct3D 9.0 instance known to be valid, that is, either the Direct3D 9.0 that created this interface or the Direct3D 9.0 returned from GetDirect3D, as called through this interface.

+
+ + bb172538 + unsigned int AdapterOrdinal + unsigned int AdapterOrdinal +
+ + +

Member of the enumerated type. Denotes the amount of emulated functionality for this device. The value of this parameter mirrors the value passed to the CreateDevice call that created this device.

+
+ + bb172538 + D3DDEVTYPE DeviceType + D3DDEVTYPE DeviceType +
+ + +

Window handle to which focus belongs for this Direct3D device. The value of this parameter mirrors the value passed to the CreateDevice call that created this device.

+
+ + bb172538 + HWND hFocusWindow + HWND hFocusWindow +
+ + +

A combination of one or more constants that control global behavior of the device. These constants mirror the constants passed to CreateDevice when the device was created.

+
+ + bb172538 + unsigned int BehaviorFlags + unsigned int BehaviorFlags +
+ + +

Specifies types of display modes to filter out.

+
+ + bb172550 + D3DDISPLAYMODEFILTER + D3DDISPLAYMODEFILTER +
+ + +

The size of this structure. This should always be set to sizeof().

+
+ + bb172550 + unsigned int Size + unsigned int Size +
+ + +

The display mode format to filter out. See .

+
+ + bb172550 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

Whether the scanline ordering is interlaced or progressive. See .

+
+ + bb172550 + D3DSCANLINEORDERING ScanLineOrdering + D3DSCANLINEORDERING ScanLineOrdering +
+ + +

Describes an effect object.

+
+ +

An effect object can contain multiple rendering techniques and parameters for the same effect.

+
+ + bb172824 + D3DXEFFECT_DESC + D3DXEFFECT_DESC +
+ + +

String that contains the name of the effect creator.

+
+ + bb172824 + const char* Creator + char Creator +
+ + +

Number of parameters used for effect.

+
+ + bb172824 + unsigned int Parameters + unsigned int Parameters +
+ + +

Number of techniques that can render the effect.

+
+ + bb172824 + unsigned int Techniques + unsigned int Techniques +
+ + +

Number of functions that can render the effect.

+
+ + bb172824 + unsigned int Functions + unsigned int Functions +
+ + +

Describes an animation event.

+
+ + bb172826 + D3DXEVENT_DESC + D3DXEVENT_DESC +
+ + +

Event type, as defined in .

+
+ + bb172826 + D3DXEVENT_TYPE Type + D3DXEVENT_TYPE Type +
+ + +

Event track identifier.

+
+ + bb172826 + unsigned int Track + unsigned int Track +
+ + +

Start time of the event in global time.

+
+ + bb172826 + double StartTime + double StartTime +
+ + +

Duration of the event in global time.

+
+ + bb172826 + double Duration + double Duration +
+ + +

Transition style of the event, as defined in .

+
+ + bb172826 + D3DXTRANSITION_TYPE Transition + D3DXTRANSITION_TYPE Transition +
+ + +

Track weight for the event.

+
+ + bb172826 + float Weight + float Weight +
+ + +

Track speed for the event.

+
+ + bb172826 + float Speed + float Speed +
+ + +

Track position for the event.

+
+ + bb172826 + double Position + double Position +
+ + +

Enable flag.

+
+ + bb172826 + BOOL Enable + BOOL Enable +
+ + +

Returns material information saved in Direct3D (.x) files.

+
+ +

The and functions return an array of structures that specify the material color and name of the texture for each material in the mesh. The application is then required to load the texture.

The LPD3DXMATERIAL type is defined as a reference to the structure.

 typedef struct * LPD3DXMATERIAL;	
+            
+
+ + bb172911 + D3DXMATERIAL + D3DXMATERIAL +
+ + +

structure that describes the material properties.

+
+ + bb172911 + D3DMATERIAL9 MatD3D + D3DMATERIAL9 MatD3D +
+ + +

Pointer to a string that specifies the file name of the texture.

+
+ + bb172911 + char* pTextureFilename + char pTextureFilename +
+ + +

Defines the attributes of a font.

+
+ +

The compiler setting also determines the structure type. If Unicode is defined, the structure type resolves to a ; otherwise the structure type resolves to a D3DXFONT_DESCA.

Possible values of the above members are given in the GDI structure.

+
+ + bb172843 + D3DXFONT_DESCW + D3DXFONT_DESCW +
+ + +

Height, in logical units, of the font's character cell or character.

+
+ + bb172843 + int Height + int Height +
+ + +

Width, in logical units, of characters in the font.

+
+ + bb172843 + unsigned int Width + unsigned int Width +
+ + +

Weight of the font in the range from 0 through 1000.

+
+ + bb172843 + D3DX9_FONT_WEIGHT Weight + D3DX9_FONT_WEIGHT Weight +
+ + +

Number of mip levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created. If the value is 1, the texture space is mapped identically to the screen space.

+
+ + bb172843 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

Set to TRUE for an Italic font.

+
+ + bb172843 + BOOL Italic + BOOL Italic +
+ + +

Character set.

+
+ + bb172843 + D3DX9_FONT_CHARSET CharSet + D3DX9_FONT_CHARSET CharSet +
+ + +

Output precision. The output precision defines how closely the output must match the requested font height, width, character orientation, escapement, pitch, and font type.

+
+ + bb172843 + D3DX9_FONT_PRECISION OutputPrecision + D3DX9_FONT_PRECISION OutputPrecision +
+ + +

Output quality.

+
+ + bb172843 + D3DX9_FONT_QUALITY Quality + D3DX9_FONT_QUALITY Quality +
+ + +

Pitch and family of the font.

+
+ + bb172843 + D3DX9_FONT_PITCHFAMILY PitchAndFamily + D3DX9_FONT_PITCHFAMILY PitchAndFamily +
+ + +

A null-terminated string or characters that specifies the typeface name of the font. The length of the string must not exceed 32 characters, including the terminating null character. If FaceName is an empty string, the first font that matches the other specified attributes will be used. If the compiler settings require Unicode, the data type TCHAR resolves to WCHAR; otherwise, the data type resolves to CHAR. See Remarks.

+
+ + bb172843 + wchar_t FaceName[32] + wchar_t FaceName +
+ + +

Encapsulates a transform frame in a transformation frame hierarchy.

+
+ +

An application can derive from this structure to add other data.

+
+ + bb172845 + D3DXFRAME + D3DXFRAME +
+ + +

Name of the frame.

+
+ + bb172845 + char* Name + char Name +
+ + +

Transformation matrix.

+
+ + bb172845 + D3DXMATRIX TransformationMatrix + D3DXMATRIX TransformationMatrix +
+ + +

Pointer to the mesh container.

+
+ + bb172845 + D3DXMESHCONTAINER* pMeshContainer + D3DXMESHCONTAINER pMeshContainer +
+ + +

Pointer to a sibling frame.

+
+ + bb172845 + D3DXFRAME* pFrameSibling + D3DXFRAME pFrameSibling +
+ + +

Pointer to a child frame.

+
+ + bb172845 + D3DXFRAME* pFrameFirstChild + D3DXFRAME pFrameFirstChild +
+ + + No documentation. + + + bb280311 + D3DXFUNCTION_DESC + D3DXFUNCTION_DESC + + + + No documentation. + + + bb280311 + const char* Name + char Name + + + + No documentation. + + + bb280311 + unsigned int Annotations + unsigned int Annotations + + + +

Contains red, green, and blue ramp data.

+
+ + bb172561 + D3DGAMMARAMP + D3DGAMMARAMP +
+ + +

Array of 256 WORD element that describes the red gamma ramp.

+
+ + bb172561 + unsigned short red[256] + unsigned short red +
+ + +

Array of 256 WORD element that describes the green gamma ramp.

+
+ + bb172561 + unsigned short green[256] + unsigned short green +
+ + +

Array of 256 WORD element that describes the blue gamma ramp.

+
+ + bb172561 + unsigned short blue[256] + unsigned short blue +
+ + +

Returns a description of the original contents of an image file.

+
+ + bb172879 + D3DXIMAGE_INFO + D3DXIMAGE_INFO +
+ + +

Width of original image in pixels.

+
+ + bb172879 + unsigned int Width + unsigned int Width +
+ + +

Height of original image in pixels.

+
+ + bb172879 + unsigned int Height + unsigned int Height +
+ + +

Depth of original image in pixels.

+
+ + bb172879 + unsigned int Depth + unsigned int Depth +
+ + +

Number of mip levels in original image.

+
+ + bb172879 + unsigned int MipLevels + unsigned int MipLevels +
+ + +

A value from the enumerated type that most closely describes the data in the original image.

+
+ + bb172879 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

Represents the type of the texture stored in the file. It is either , , or D3DRTYPE_CubeTexture.

+
+ + bb172879 + D3DRESOURCETYPE ResourceType + D3DRESOURCETYPE ResourceType +
+ + +

Represents the format of the image file.

+
+ + bb172879 + D3DXIMAGE_FILEFORMAT ImageFileFormat + D3DXIMAGE_FILEFORMAT ImageFileFormat +
+ + + Retrieves information about a given image file on the disk. + + The filename. + A structure + HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo) + + + + Retrieves information about a given image file in memory. + + The memory. + A structure + HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo) + + + + Retrieves information about a given image file from a stream. + + The stream. + A structure + This method keeps the position of the stream + HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo) + + + + Retrieves information about a given image file from a stream. + + The stream. + if set to true preserve the stream position; false will move the stream pointer. + A structure + HRESULT D3DXGetImageInfoFromFileInMemory([In] const void* pSrcData,[In] unsigned int SrcDataSize,[Out] D3DXIMAGE_INFO* pSrcInfo) + + + +

Describes an index buffer.

+
+ + bb172563 + D3DINDEXBUFFER_DESC + D3DINDEXBUFFER_DESC +
+ + +

Member of the enumerated type, describing the surface format of the index buffer data.

+
+ + bb172563 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

Member of the enumerated type, identifying this resource as an index buffer.

+
+ + bb172563 + D3DRESOURCETYPE Type + D3DRESOURCETYPE Type +
+ + +

Combination of one or more of the following flags, specifying the usage for this resource.

ValueMeaning

Set to indicate that the index buffer content will never require clipping.

Set to indicate that the index buffer requires dynamic memory use. This is useful for drivers because it enables them to decide where to place the buffer. In general, static index buffers are placed in video memory and dynamic index buffers are placed in AGP memory. Note that there is no separate static usage; if you do not specify the index buffer is made static. is strictly enforced through the and locking flags. As a result, and are only valid on index buffers created with ; they are not valid flags on static vertex buffers.

For more information about using dynamic index buffers, see Using Dynamic Vertex and Index Buffers.

Note that cannot be specified on managed index buffers. For more information, see Managing Resources (Direct3D 9).

Set to indicate when the index buffer is to be used for drawing high-order primitives.

Set to indicate when the index buffer is to be used for drawing N patches.

Set to indicate when the index buffer is to be used for drawing point sprites or indexed point lists.

Set to indicate that the buffer is to be used with software processing.

Informs the system that the application writes only to the index buffer. Using this flag enables the driver to choose the best memory location for efficient write operations and rendering. Attempts to read from an index buffer that is created with this capability can result in degraded performance.

?

+
+ + bb172563 + D3DUSAGE Usage + D3DUSAGE Usage +
+ + +

Member of the enumerated type, specifying the class of memory allocated for this index buffer.

+
+ + bb172563 + D3DPOOL Pool + D3DPOOL Pool +
+ + +

Size of the index buffer, in bytes.

+
+ + bb172563 + unsigned int Size + unsigned int Size +
+ + +

Percent of time processing data in the driver. These statistics may help identify cases when the driver is waiting for other resources.

+
+ +

These metrics help identify when a driver is waiting and what it is waiting for. High percentages are not necessarily a problem.

These system-global metrics may or may not be implemented. Depending on the specific hardware, these metrics may not support multiple queries simultaneously.

+
+ + bb172541 + D3DDEVINFO_D3D9INTERFACETIMINGS + D3DDEVINFO_D3D9INTERFACETIMINGS +
+ + +

Percentage of time the driver spent waiting for the GPU to finish using a locked resource (and wasn't specified).

+
+ + bb172541 + float WaitingForGPUToUseApplicationResourceTimePercent + float WaitingForGPUToUseApplicationResourceTimePercent +
+ + +

Percentage of time the driver spent waiting for the GPU to finish processing some commands before the driver could send more. This indicates the driver has run out of room to send commands to the GPU.

+
+ + bb172541 + float WaitingForGPUToAcceptMoreCommandsTimePercent + float WaitingForGPUToAcceptMoreCommandsTimePercent +
+ + +

Percentage of time the driver spent waiting for the GPU latency to reduce to less than three rendering frames.

If an application is GPU-limited, the driver must stall the CPU until the GPU gets within three frames. This prevents an application from queuing up many seconds' worth of rendering calls which may dramatically increase the latency between when the user inputs new data and when the user sees the results of that input. In general, the driver can track the number of times Present is called to prevent queuing up more than three frames of rendering work.

+
+ + bb172541 + float WaitingForGPUToStayWithinLatencyTimePercent + float WaitingForGPUToStayWithinLatencyTimePercent +
+ + +

Percentage of time the driver spent waiting for a resource that cannot be pipelined (that is operated in parallel). An application may want to avoid using a non-pipelined resource for performance reasons.

+
+ + bb172541 + float WaitingForGPUExclusiveResourceTimePercent + float WaitingForGPUExclusiveResourceTimePercent +
+ + +

Percentage of time the driver spent waiting for other GPU processing.

+
+ + bb172541 + float WaitingForGPUOtherTimePercent + float WaitingForGPUOtherTimePercent +
+ + +

Defines a set of lighting properties.

+
+ + bb172566 + D3DLIGHT9 + D3DLIGHT9 +
+ + +

Type of the light source. This value is one of the members of the enumerated type.

+
+ + bb172566 + D3DLIGHTTYPE Type + D3DLIGHTTYPE Type +
+ + +

Diffuse color emitted by the light. This member is a structure.

+
+ + bb172566 + D3DCOLORVALUE Diffuse + D3DCOLORVALUE Diffuse +
+ + +

Specular color emitted by the light. This member is a structure.

+
+ + bb172566 + D3DCOLORVALUE Specular + D3DCOLORVALUE Specular +
+ + +

Ambient color emitted by the light. This member is a structure.

+
+ + bb172566 + D3DCOLORVALUE Ambient + D3DCOLORVALUE Ambient +
+ + +

Position of the light in world space, specified by a structure. This member has no meaning for directional lights and is ignored in that case.

+
+ + bb172566 + D3DVECTOR Position + D3DVECTOR Position +
+ + +

Direction that the light is pointing in world space, specified by a structure. This member has meaning only for directional and spotlights. This vector need not be normalized, but it should have a nonzero length.

+
+ + bb172566 + D3DVECTOR Direction + D3DVECTOR Direction +
+ + +

Distance beyond which the light has no effect. The maximum allowable value for this member is the square root of FLT_MAX. This member does not affect directional lights.

+
+ + bb172566 + float Range + float Range +
+ + +

Decrease in illumination between a spotlight's inner cone (the angle specified by Theta) and the outer edge of the outer cone (the angle specified by Phi).

The effect of falloff on the lighting is subtle. Furthermore, a small performance penalty is incurred by shaping the falloff curve. For these reasons, most developers set this value to 1.0.

+
+ + bb172566 + float Falloff + float Falloff +
+ + +

Value specifying how the light intensity changes over distance. Attenuation values are ignored for directional lights. This member represents an attenuation constant. For information about attenuation, see Light Properties (Direct3D 9). Valid values for this member range from 0.0 to infinity. For non-directional lights, all three attenuation values should not be set to 0.0 at the same time.

+
+ + bb172566 + float Attenuation0 + float Attenuation0 +
+ + +

Value specifying how the light intensity changes over distance. Attenuation values are ignored for directional lights. This member represents an attenuation constant. For information about attenuation, see Light Properties (Direct3D 9). Valid values for this member range from 0.0 to infinity. For non-directional lights, all three attenuation values should not be set to 0.0 at the same time.

+
+ + bb172566 + float Attenuation1 + float Attenuation1 +
+ + +

Value specifying how the light intensity changes over distance. Attenuation values are ignored for directional lights. This member represents an attenuation constant. For information about attenuation, see Light Properties (Direct3D 9). Valid values for this member range from 0.0 to infinity. For non-directional lights, all three attenuation values should not be set to 0.0 at the same time.

+
+ + bb172566 + float Attenuation2 + float Attenuation2 +
+ + +

Angle, in radians, of a spotlight's inner cone - that is, the fully illuminated spotlight cone. This value must be in the range from 0 through the value specified by Phi.

+
+ + bb172566 + float Theta + float Theta +
+ + +

Angle, in radians, defining the outer edge of the spotlight's outer cone. Points outside this cone are not lit by the spotlight. This value must be between 0 and pi.

+
+ + bb172566 + float Phi + float Phi +
+ + + No documentation. + + + bb280342 + D3DLOCKED_BOX + D3DLOCKED_BOX + + + + No documentation. + + + bb280342 + int RowPitch + int RowPitch + + + + No documentation. + + + bb280342 + int SlicePitch + int SlicePitch + + + + No documentation. + + + bb280342 + void* pBits + void pBits + + + +

Describes a locked rectangular region.

+
+ +

The pitch for DXTn formats is different from what was returned in DirectX 7. It now refers to the number of bytes in a row of blocks. For example, if you have a width of 16, then you will have a pitch of 4 blocks (4*8 for DXT1, 4*16 for DXT2-5.)

+
+ + bb172570 + D3DLOCKED_RECT + D3DLOCKED_RECT +
+ + +

Number of bytes in one row of the surface.

+
+ + bb172570 + int Pitch + int Pitch +
+ + +

Pointer to the locked bits. If a was provided to the LockRect call, pBits will be appropriately offset from the start of the surface.

+
+ + bb172570 + void* pBits + void pBits +
+ + +

Describes preprocessor definitions used by an effect object.

+
+ +

To use s in more than one line, prefix each new line character with a backslash (like a #define in the C language). For example:

 sample=	
+            macro.Name = "DO_CODE_BLOCK";	
+            macro.Definition = "/* here is a block of code */\\\n" "{ do something ... }\\\n";	
+            

Notice the 3 backslash characters at the end of the line. The first two are required to output a single '\', followed by the newline character "\n". Optionally, you may also want to terminate your lines using "\\\r\n".

+
+ + bb172910 + D3DXMACRO + D3DXMACRO +
+ + +

Preprocessor name.

+
+ + bb172910 + const char* Name + char Name +
+ + +

Definition name.

+
+ + bb172910 + const char* Definition + char Definition +
+ + + Initializes a new instance of the struct. + + The name. + The definition. + + + +

Specifies material properties.

+
+ +

To turn off specular highlights, set to , using . This is the fastest option because no specular highlights will be calculated.

For more information about using the lighting engine to calculate specular lighting, see Specular Lighting (Direct3D 9).

+
+ + bb172571 + D3DMATERIAL9 + D3DMATERIAL9 +
+ + +

Value specifying the diffuse color of the material. See .

+
+ + bb172571 + D3DCOLORVALUE Diffuse + D3DCOLORVALUE Diffuse +
+ + +

Value specifying the ambient color of the material. See .

+
+ + bb172571 + D3DCOLORVALUE Ambient + D3DCOLORVALUE Ambient +
+ + +

Value specifying the specular color of the material. See .

+
+ + bb172571 + D3DCOLORVALUE Specular + D3DCOLORVALUE Specular +
+ + +

Value specifying the emissive color of the material. See .

+
+ + bb172571 + D3DCOLORVALUE Emissive + D3DCOLORVALUE Emissive +
+ + +

Floating-point value specifying the sharpness of specular highlights. The higher the value, the sharper the highlight.

+
+ + bb172571 + float Power + float Power +
+ + + No documentation. + + + bb280302 + D3DXMESHCONTAINER + D3DXMESHCONTAINER + + + + No documentation. + + + bb280302 + char* Name + char Name + + + + No documentation. + + + bb280302 + D3DXMESHDATA MeshData + D3DXMESHDATA MeshData + + + + No documentation. + + + bb280302 + D3DXMATERIAL* pMaterials + D3DXMATERIAL pMaterials + + + + No documentation. + + + bb280302 + D3DXEFFECTINSTANCE* pEffects + D3DXEFFECTINSTANCE pEffects + + + + No documentation. + + + bb280302 + unsigned int NumMaterials + unsigned int NumMaterials + + + + No documentation. + + + bb280302 + unsigned int* pAdjacency + unsigned int pAdjacency + + + + No documentation. + + + bb280302 + ID3DXSkinInfo* pSkinInfo + ID3DXSkinInfo pSkinInfo + + + + No documentation. + + + bb280302 + D3DXMESHCONTAINER* pNextMeshContainer + D3DXMESHCONTAINER pNextMeshContainer + + + + Gets or sets the materials. + + + The materials. + + + + +

Mesh data structure.

+
+ + bb205372 + D3DXMESHDATA + D3DXMESHDATA +
+ + +

Defines the mesh data type. See .

+
+ + bb205372 + D3DXMESHDATATYPE Type + D3DXMESHDATATYPE Type +
+ + +

Pointer to a mesh. See .

+
+ + bb205372 + ID3DXMesh* pMesh + ID3DXMesh pMesh +
+ + +

Pointer to a patch mesh. See .

+
+ + bb205372 + ID3DXPMesh* pPMesh + ID3DXPMesh pPMesh +
+ + +

Pointer to a patch mesh. See .

+
+ + bb205372 + ID3DXPatchMesh* pPatchMesh + ID3DXPatchMesh pPatchMesh +
+ + +

Describes a parameter used for an effect object.

+
+ + bb205379 + D3DXPARAMETER_DESC + D3DXPARAMETER_DESC +
+ + +

Name of the parameter.

+
+ + bb205379 + const char* Name + char Name +
+ + +

Semantic meaning, also called the usage.

+
+ + bb205379 + const char* Semantic + char Semantic +
+ + +

Parameter class. Set this to one of the values in .

+
+ + bb205379 + D3DXPARAMETER_CLASS Class + D3DXPARAMETER_CLASS Class +
+ + +

Parameter type. Set this to one of the values in .

+
+ + bb205379 + D3DXPARAMETER_TYPE Type + D3DXPARAMETER_TYPE Type +
+ + +

Number of rows in the array.

+
+ + bb205379 + unsigned int Rows + unsigned int Rows +
+ + +

Number of columns in the array.

+
+ + bb205379 + unsigned int Columns + unsigned int Columns +
+ + +

Number of elements in the array.

+
+ + bb205379 + unsigned int Elements + unsigned int Elements +
+ + +

Number of annotations.

+
+ + bb205379 + unsigned int Annotations + unsigned int Annotations +
+ + +

Number of structure members.

+
+ + bb205379 + unsigned int StructMembers + unsigned int StructMembers +
+ + +

Parameter attributes. See Effect Constants.

+
+ + bb205379 + unsigned int Flags + unsigned int Flags +
+ + +

The size of the parameter, in bytes.

+
+ + bb205379 + unsigned int Bytes + unsigned int Bytes +
+ + +

Describes a pass for an effect object.

+
+ + bb205381 + D3DXPASS_DESC + D3DXPASS_DESC +
+ + +

String value used for the pass.

+
+ + bb205381 + const char* Name + char Name +
+ + +

Annotations are user-specific data that can be attached to any technique, pass, or parameter. See Add Information to Effect Parameters with_Annotations.

+
+ + bb205381 + unsigned int Annotations + unsigned int Annotations +
+ + +

Pointer to the vertex shader function. If an effect is created with , this structure will return a null reference when called by GetPassDesc.

+
+ + bb205381 + const unsigned int* pVertexShaderFunction + unsigned int pVertexShaderFunction +
+ + +

Pointer to the pixel shader function. If an effect is created with , this structure will return a null reference when called by GetPassDesc.

+
+ + bb205381 + const unsigned int* pPixelShaderFunction + unsigned int pPixelShaderFunction +
+ + +

Structure that contains the attributes of a patch mesh.

+
+ +

A mesh is a set of faces, each of which is described by a simple polygon. Objects can be created by connecting several meshes together. A patch mesh is constructed from patches. A patch is a four-sided piece of geometry constructed from curves. The type of curve used and the order of the curve can be varied so that the patch surface will fit almost any surface shape.

The following types of patch combinations are supported:

Patch TypeBasisDegree
RectangleBezier2,3,5
RectangleB-Spline2,3,5
RectangleCatmull-Rom3
TriangleBezier2,3,5
N-patchN/A3

?

+
+ + bb205382 + D3DXPATCHINFO + D3DXPATCHINFO +
+ + +

The patch type. For information about patch types, see .

+
+ + bb205382 + D3DXPATCHMESHTYPE PatchType + D3DXPATCHMESHTYPE PatchType +
+ + +

Degree of the curves used to construct the patch. For information about the degrees supported, see .

+
+ + bb205382 + D3DDEGREETYPE Degree + D3DDEGREETYPE Degree +
+ + +

Type of curve used to construct the patch. For information about the basis types supported, see .

+
+ + bb205382 + D3DBASISTYPE Basis + D3DBASISTYPE Basis +
+ + +

Percent of time processing data in the pipeline.

+
+ +

For best performance, a balanced load is recommended.

+
+ + bb172542 + D3DDEVINFO_D3D9PIPELINETIMINGS + D3DDEVINFO_D3D9PIPELINETIMINGS +
+ + +

Percent of time spent running vertex shaders.

+
+ + bb172542 + float VertexProcessingTimePercent + float VertexProcessingTimePercent +
+ + +

Percent of time spent running pixel shaders.

+
+ + bb172542 + float PixelProcessingTimePercent + float PixelProcessingTimePercent +
+ + +

Percent of time spent doing other processing.

+
+ + bb172542 + float OtherGPUProcessingTimePercent + float OtherGPUProcessingTimePercent +
+ + +

Percent of time not processing anything.

+
+ + bb172542 + float GPUIdleTimePercent + float GPUIdleTimePercent +
+ + +

Pixel shader driver caps.

+
+ + bb172591 + D3DPSHADERCAPS2_0 + D3DPSHADERCAPS2_0 +
+ + +

Instruction predication is supported if this value is nonzero. See setp_comp - vs.

+
+ + bb172591 + D3DPS20CAPS Caps + D3DPS20CAPS Caps +
+ + +

Either 0 or 24, which represents the depth of the dynamic flow control instruction nesting. See .

+
+ + bb172591 + int DynamicFlowControlDepth + int DynamicFlowControlDepth +
+ + +

The number of temporary registers supported. See .

+
+ + bb172591 + int NumTemps + int NumTemps +
+ + +

The depth of nesting of the loop - vs/rep - vs and call - vs/callnz bool - vs instructions. See .

+
+ + bb172591 + int StaticFlowControlDepth + int StaticFlowControlDepth +
+ + +

The number of instruction slots supported. See .

+
+ + bb172591 + int NumInstructionSlots + int NumInstructionSlots +
+ + +

Describes swapchain statistics relating to PresentEx calls.

+
+ +

When a 9Ex application adopts Flip Mode present (), applications can detect frame dropping by calling GetPresentStatistics at any point in time. In effect, they can do the following.

  1. Render to the back buffer
  2. Call Present
  3. Call GetPresentStats and store the resulting structure
  4. Render the next frame to the back buffer
  5. Call Present
  6. Repeat steps 4 and 5 one or more times
  7. Call GetPresentStats and store the resulting structure
  8. Compare the values of PresentRefreshCount from the two stored structures. The application can calculate the corresponding PresentRefreshCount of a particular PresentCount parameter based on the assumptions of PresentRefreshCount increment and PresentCount assignment of frame presents. If the PresentRefreshCount last sampled does not match the PresentCount (i.e. if the PresentRefreshCount has incremented but PresentCount has not, then there was frame dropping.)

Applications can determine whether a frame has been dropped by sampling any two instances of PresentCount and GetPresentStats (by calling GetPresentStats API at any two points in time). For example, a media application that is presenting at the same rate as the monitor refresh rate (for example, monitor refresh rate is 60Hz, the application presents a frame every 1/60 seconds) wants to present frames A, B, C, D, E, each corresponding to Present IDs (PresentCount) 1, 2, 3, 7, 8.

The application code looks like the following sequence.

  1. Render frame A to the back buffer
  2. Call Present, PresentCount = 1
  3. Call GetPresentStats and store the resulting structure
  4. Render the next 4 frames, B, C, D, E, respectively
  5. Call Present 4 times, PresentCounts = 2, 3, 7, 8, respectively
  6. Call GetPresentStats and store the resulting structure
  7. Compare the values of PresentRefreshCount from the two stored structures. If the difference is 2, i.e. 2 vblank intervals has elapsed between the two GetPresentStats API calls, then the last presented frame should be frame C. Because the application presents once very vblank interval (the refresh rate of the monitor), the time elapsed between when frame A is presented and when frame C is presented should be 2 vblanks.
  8. Compare the values of PresentCount from the two stored structures. If the first PresentCount is 1 (corresponding to frame A) and the second PresentCount is 3 (corresponding to frame C), then no frames have been dropped. If the second PresentCount is 3, which corresponds to frame D, then the application knows that one frame has been dropped.

Note that GetPresentStatistics will be processed after it is called, regardless of the state of FLIPEX mode PresentEx calls.

Windows?Vista:??The Present calls will be queued and then processed before GetPresentStats call will be processed.

When an application detects that the presentation of certain frames are behind, it can skip those frames and correct the presentation to re-synchronize with the vblank. To do this, an application can simply not render the late frames and start rendering with the next correct frame in the queue. However, if an application has already started the rendering of late frames, it can use a new Present parameter in D3D9Ex called . The flag will be passed in the parameters of Present API call and indicates to the runtime that the frame will be processed immediately within the next vblank interval, effectively not visible on screen at all. Here is the application usage example after the last step in the previous example.

  1. Render the next frame to the back buffer
  2. Discover from PresentRefreshCount that the next frame is already late
  3. Set Present interval to
  4. Call Present on the next frame

Applications can synchronize video and audio streams in the same manner because the behavior of GetPresentStatistics does not change in that scenario.

D3D9Ex Flip Mode provides frame statistics information to windowed applications and full screen 9Ex applications.

Windows?Vista:??Use the DWM APIs for retrieving present statistics.

When Desktop Window Manager is turned off, windowed mode 9Ex applications using flip mode will receive present statistics information of limited accuracy.

Windows?Vista:??

If an application is not fast enough to keep up with the monitor's refresh rate, possibly due to slow hardware or lack of system resources, then it can experience a graphics glitch. A glitch is a so-called visual hiccup. If a monitor is set to refresh at 60 Hz, and the application can only manage 30 fps, then half of the frames will have glitches.

Applications can detect a glitch by keeping track of SynchRefreshCount. For example, an application might perform the following sequence of actions.

  1. Render to the back buffer.
  2. Call Present.
  3. Call GetPresentStats and store the resulting structure.
  4. Render the next frame to the back buffer.
  5. Call Present.
  6. Call GetPresentStats and store the resulting structure.
  7. Compare the values of SyncRefreshCount from the two stored structures. If the difference is greater than one, then a frame was skipped.
+
+ + bb172587 + D3DPRESENTSTATS + D3DPRESENTSTATS +
+ + + No documentation. + + + bb172587 + unsigned int PresentCount + unsigned int PresentCount + + + + No documentation. + + + bb172587 + unsigned int PresentRefreshCount + unsigned int PresentRefreshCount + + + + No documentation. + + + bb172587 + unsigned int SyncRefreshCount + unsigned int SyncRefreshCount + + + + No documentation. + + + bb172587 + LARGE_INTEGER SyncQPCTime + LARGE_INTEGER SyncQPCTime + + + + No documentation. + + + bb172587 + LARGE_INTEGER SyncGPUTime + LARGE_INTEGER SyncGPUTime + + + +

Describes the presentation parameters.

+
+ + bb172588 + D3DPRESENT_PARAMETERS + D3DPRESENT_PARAMETERS +
+ + +

Width of the new swap chain's back buffers, in pixels. If Windowed is (the presentation is full-screen), this value must equal the width of one of the enumerated display modes found through EnumAdapterModes. If Windowed is TRUE and either BackBufferWidth or BackBufferHeight is zero, the corresponding dimension of the client area of the hDeviceWindow (or the focus window, if hDeviceWindow is null) is taken.

+
+ + bb172588 + unsigned int BackBufferWidth + unsigned int BackBufferWidth +
+ + +

Height of the new swap chain's back buffers, in pixels. If Windowed is (the presentation is full-screen), this value must equal the height of one of the enumerated display modes found through EnumAdapterModes. If Windowed is TRUE and either BackBufferWidth or BackBufferHeight is zero, the corresponding dimension of the client area of the hDeviceWindow (or the focus window, if hDeviceWindow is null) is taken.

+
+ + bb172588 + unsigned int BackBufferHeight + unsigned int BackBufferHeight +
+ + +

The back buffer format. For more information about formats, see . This value must be one of the render-target formats as validated by CheckDeviceType. You can use GetDisplayMode to obtain the current format.

In fact, can be specified for the BackBufferFormat while in windowed mode. This tells the runtime to use the current display-mode format and eliminates the need to call GetDisplayMode.

For windowed applications, the back buffer format no longer needs to match the display-mode format because color conversion can now be done by the hardware (if the hardware supports color conversion). The set of possible back buffer formats is constrained, but the runtime will allow any valid back buffer format to be presented to any desktop format. (There is the additional requirement that the device be operable in the desktop; devices typically do not operate in 8 bits per pixel modes.)

Full-screen applications cannot do color conversion.

+
+ + bb172588 + D3DFORMAT BackBufferFormat + D3DFORMAT BackBufferFormat +
+ + +

This value can be between 0 and (or when using Direct3D 9Ex). Values of 0 are treated as 1. If the number of back buffers cannot be created, the runtime will fail the method call and fill this value with the number of back buffers that could be created. As a result, an application can call the method twice with the same structure and expect it to work the second time.

The method fails if one back buffer cannot be created. The value of BackBufferCount influences what set of swap effects are allowed. Specifically, any swap effect requires that there be exactly one back buffer.

+
+ + bb172588 + unsigned int BackBufferCount + unsigned int BackBufferCount +
+ + +

Member of the enumerated type. The value must be unless SwapEffect has been set to . Multisampling is supported only if the swap effect is .

+
+ + bb172588 + D3DMULTISAMPLE_TYPE MultiSampleType + D3DMULTISAMPLE_TYPE MultiSampleType +
+ + +

Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by CheckDeviceMultiSampleType. Passing a larger value returns the error . Paired values of render targets or of depth stencil surfaces and must match.

+
+ + bb172588 + unsigned int MultiSampleQuality + unsigned int MultiSampleQuality +
+ + +

Member of the enumerated type. The runtime will guarantee the implied semantics concerning buffer swap behavior; therefore, if Windowed is TRUE and SwapEffect is set to , the runtime will create one extra back buffer and copy whichever becomes the front buffer at presentation time.

requires that BackBufferCount be set to 1.

will be enforced in the debug runtime by filling any buffer with noise after it is presented.

Differences between Direct3D9 and Direct3D9Ex

In Direct3D9Ex, is added to designate when an application is adopting flip mode. That is, whan an application's frame is passed in window's mode (instead of copied) to the Desktop Window Manager(DWM) for composition. Flip mode provides more efficient memory bandwidth and enables an application to take advantage of full-screen-present statistics. It does not change full screen behavior. Flip mode behavior is available beginning with Windows 7.

?

+
+ + bb172588 + D3DSWAPEFFECT SwapEffect + D3DSWAPEFFECT SwapEffect +
+ + +

The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during Present.

  • For a full-screen application, this is a handle to the top window (which is the focus window).

    For applications that use multiple full-screen devices (such as a multimonitor system), exactly one device can use the focus window as the device window. All other devices must have unique device windows.

  • For a windowed-mode application, this handle will be the default target window for Present. If this handle is null, the focus window will be taken.

Note that no attempt is made by the runtime to reflect user changes in window size. The back buffer is not implicitly reset when this window is reset. However, the Present method does automatically track window position changes.

+
+ + bb172588 + HWND hDeviceWindow + HWND hDeviceWindow +
+ + +

TRUE if the application runs windowed; if the application runs full-screen.

+
+ + bb172588 + BOOL Windowed + BOOL Windowed +
+ + +

If this value is TRUE, Direct3D will manage depth buffers for the application. The device will create a depth-stencil buffer when it is created. The depth-stencil buffer will be automatically set as the render target of the device. When the device is reset, the depth-stencil buffer will be automatically destroyed and recreated in the new size.

If EnableAutoDepthStencil is TRUE, then AutoDepthStencilFormat must be a valid depth-stencil format.

+
+ + bb172588 + BOOL EnableAutoDepthStencil + BOOL EnableAutoDepthStencil +
+ + +

Member of the enumerated type. The format of the automatic depth-stencil surface that the device will create. This member is ignored unless EnableAutoDepthStencil is TRUE.

+
+ + bb172588 + D3DFORMAT AutoDepthStencilFormat + D3DFORMAT AutoDepthStencilFormat +
+ + +

One of the constants.

+
+ + bb172588 + D3DPRESENTFLAG Flags + D3DPRESENTFLAG Flags +
+ + +

The rate at which the display adapter refreshes the screen. The value depends on the mode in which the application is running:

  • For windowed mode, the refresh rate must be 0.
  • For full-screen mode, the refresh rate is one of the refresh rates returned by EnumAdapterModes.
+
+ + bb172588 + unsigned int FullScreen_RefreshRateInHz + unsigned int FullScreen_RefreshRateInHz +
+ + +

The maximum rate at which the swap chain's back buffers can be presented to the front buffer. For a detailed explanation of the modes and the intervals that are supported, see .

+
+ + bb172588 + D3DPRESENT_INTERVAL PresentationInterval + D3DPRESENT_INTERVAL PresentationInterval +
+ + + Initializes a new instance of the struct. + + Width of the back buffer. + Height of the back buffer. + + + + Initializes a new instance of the struct. + + Width of the back buffer. + Height of the back buffer. + The back buffer format. + The back buffer count. + Type of the multi sample. + The multi sample quality. + The swap effect. + The device window handle. + if set to true [windowed]. + if set to true [enable auto depth stencil]. + The auto depth stencil format. + The present flags. + The full screen refresh rate in Hz. + The presentation interval. + + + + Init this structure to defaults + + + + +

Describes the raster status.

+
+ + bb172596 + D3DRASTER_STATUS + D3DRASTER_STATUS +
+ + +

TRUE if the raster is in the vertical blank period. if the raster is not in the vertical blank period.

+
+ + bb172596 + BOOL InVBlank + BOOL InVBlank +
+ + +

If InVBlank is , then this value is an integer roughly corresponding to the current scan line painted by the raster. Scan lines are numbered in the same way as Direct3D surface coordinates: 0 is the top of the primary surface, extending to the value (height of the surface - 1) at the bottom of the display.

If InVBlank is TRUE, then this value is set to zero and can be ignored.

+
+ + bb172596 + unsigned int ScanLine + unsigned int ScanLine +
+ + +

Describes a rectangular high-order patch.

+
+ +

The following diagram identifies the parameters that specify a rectangle patch.

Each of the vertices in the vertex buffer is shown as a black dot. In this case, the vertex buffer has 20 vertices in it, 16 of which are in the rectangle patch. The stride is the number of vertices in the width of the vertex buffer, in this case five. The x offset to the first vertex is called the StartIndexVertexWidth and is in this case 1. The y offset to the first patch vertex is called the StartIndexVertexHeight and is in this case 0.

To render a stream of individual rectangular patches (non-mosaic), you should interpret your geometry as a long narrow (1 x N) rectangular patch. The structure for such a strip (cubic B?zier) would be set up in the following manner.

  RectInfo; RectInfo.Width = 4;	
+            RectInfo.Height = 4;	
+            RectInfo.Stride = 4;	
+            RectInfo.Basis = ;	
+            RectInfo.Order = D3DORDER_CUBIC;	
+            RectInfo.StartVertexOffsetWidth = 0;	
+            RectInfo.StartVertexOffsetHeight = 4*i;  // The variable i is the index of the 	
+            //   patch you want to render.	
+            
+
+ + bb172598 + D3DRECTPATCH_INFO + D3DRECTPATCH_INFO +
+ + +

Starting vertex offset width, in number of vertices.

+
+ + bb172598 + unsigned int StartVertexOffsetWidth + unsigned int StartVertexOffsetWidth +
+ + +

Starting vertex offset height, in number of vertices.

+
+ + bb172598 + unsigned int StartVertexOffsetHeight + unsigned int StartVertexOffsetHeight +
+ + +

Width of each vertex, in number of vertices.

+
+ + bb172598 + unsigned int Width + unsigned int Width +
+ + +

Height of each vertex, in number of vertices.

+
+ + bb172598 + unsigned int Height + unsigned int Height +
+ + +

Width of the imaginary two-dimensional vertex array, which occupies the same space as the vertex buffer. For an example, see the diagram below.

+
+ + bb172598 + unsigned int Stride + unsigned int Stride +
+ + +

Member of the enumerated type, defining the basis type for the rectangular high-order patch.

ValueOrder supportedWidth and height
Linear, cubic, and quinticWidth = height = (DWORD)order + 1
Linear, cubic, and quinticWidth = height > (DWORD)order
D3DBASIS_INTERPOLATECubicWidth = height > (DWORD)order

?

+
+ + bb172598 + D3DBASISTYPE Basis + D3DBASISTYPE Basis +
+ + +

Member of the enumerated type, defining the degree for the rectangular patch.

+
+ + bb172598 + D3DDEGREETYPE Degree + D3DDEGREETYPE Degree +
+ + +

Describes an off-screen render target used by an instance of .

+
+ +

This method is used to return the creation parameters used when creating an object.

+
+ + bb205425 + D3DXRTE_DESC + D3DXRTE_DESC +
+ + + No documentation. + + + bb205425 + unsigned int Size + unsigned int Size + + + + No documentation. + + + bb205425 + unsigned int MipLevels + unsigned int MipLevels + + + + No documentation. + + + bb205425 + D3DFORMAT Format + D3DFORMAT Format + + + + No documentation. + + + bb205425 + BOOL DepthStencil + BOOL DepthStencil + + + + No documentation. + + + bb205425 + D3DFORMAT DepthStencilFormat + D3DFORMAT DepthStencilFormat + + + +

Describes a render surface.

+
+ + bb205426 + D3DXRTS_DESC + D3DXRTS_DESC +
+ + +

Width of the render surface, in pixels.

+
+ + bb205426 + unsigned int Width + unsigned int Width +
+ + +

Height of the render surface, in pixels.

+
+ + bb205426 + unsigned int Height + unsigned int Height +
+ + +

Member of the enumerated type, describing the pixel format of the render surface.

+
+ + bb205426 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

If TRUE, the render surface supports a depth-stencil surface; otherwise this member is set to .

+
+ + bb205426 + BOOL DepthStencil + BOOL DepthStencil +
+ + +

If DepthStencil is set to TRUE, this parameter is a member of the enumerated type, describing the depth-stencil format of the render surface.

+
+ + bb205426 + D3DFORMAT DepthStencilFormat + D3DFORMAT DepthStencilFormat +
+ + + No documentation. + + + bb280347 + D3DDEVINFO_RESOURCEMANAGER + D3DDEVINFO_RESOURCEMANAGER + + + + No documentation. + + + bb280347 + D3DRESOURCESTATS stats[8] + D3DRESOURCESTATS stats + + + +

Resource statistics gathered by the D3DDEVINFO_ResourceManager when using the asynchronous query mechanism.

+
+ + bb172600 + D3DRESOURCESTATS + D3DRESOURCESTATS +
+ + + No documentation. + + + bb172600 + BOOL bThrashing + BOOL bThrashing + + + + No documentation. + + + bb172600 + unsigned int ApproxBytesDownloaded + unsigned int ApproxBytesDownloaded + + + + No documentation. + + + bb172600 + unsigned int NumEvicts + unsigned int NumEvicts + + + + No documentation. + + + bb172600 + unsigned int NumVidCreates + unsigned int NumVidCreates + + + + No documentation. + + + bb172600 + unsigned int LastPri + unsigned int LastPri + + + + No documentation. + + + bb172600 + unsigned int NumUsed + unsigned int NumUsed + + + + No documentation. + + + bb172600 + unsigned int NumUsedInVidMem + unsigned int NumUsedInVidMem + + + + No documentation. + + + bb172600 + unsigned int WorkingSet + unsigned int WorkingSet + + + + No documentation. + + + bb172600 + unsigned int WorkingSetBytes + unsigned int WorkingSetBytes + + + + No documentation. + + + bb172600 + unsigned int TotalManaged + unsigned int TotalManaged + + + + No documentation. + + + bb172600 + unsigned int TotalBytes + unsigned int TotalBytes + + + + No documentation. + + + bb280307 + D3DXKEY_QUATERNION + D3DXKEY_QUATERNION + + + + No documentation. + + + bb280307 + float Time + float Time + + + + No documentation. + + + bb280307 + D3DXQUATERNION Value + D3DXQUATERNION Value + + + +

Describes a vector key for use in key frame animation. It specifies a vector at a given time. This is used for scale and translation keys.

+
+ + bb172889 + D3DXKEY_VECTOR3 + D3DXKEY_VECTOR3 +
+ + +

Key frame time stamp.

+
+ + bb172889 + float Time + float Time +
+ + +

3D vector that supplies scale and/or translation values.

+
+ + bb172889 + D3DXVECTOR3 Value + D3DXVECTOR3 Value +
+ + + No documentation. + + + bb205439 + D3DXSHADER_CONSTANTINFO + D3DXSHADER_CONSTANTINFO + + + +

Offset from the beginning of this structure, in bytes, to the string that contains the constant information.

+
+ + bb205439 + unsigned int Name + unsigned int Name +
+ + +

Register set. See .

+
+ + bb205439 + unsigned short RegisterSet + unsigned short RegisterSet +
+ + +

The register index.

+
+ + bb205439 + unsigned short RegisterIndex + unsigned short RegisterIndex +
+ + +

Number of registers.

+
+ + bb205439 + unsigned short RegisterCount + unsigned short RegisterCount +
+ + +

Reserved.

+
+ + bb205439 + unsigned short Reserved + unsigned short Reserved +
+ + +

Offset from the beginning of this structure, in bytes, to the string that contains the D3DXSHADER_TYPEINFO information.

+
+ + bb205439 + unsigned int TypeInfo + unsigned int TypeInfo +
+ + +

Offset from the beginning of this structure, in bytes, to the string that contains the default value.

+
+ + bb205439 + unsigned int DefaultValue + unsigned int DefaultValue +
+ + +

Helper structure for managing a shader constant table. This can also be done using .

+
+ +

Shader constant information is included in a tab-delimited table of comments. All offsets are measured in bytes from the beginning of the structure. Entries in the constant table are sorted by Creator in ascending order.

A shader constant table can be managed with the interfaces. Alternatively, you can manage the constant table with .

This size member is often initialized using the following:

  constantTable;	
+            constantTable.Size = sizeof()	
+            
+
+ + bb205440 + D3DXSHADER_CONSTANTTABLE + D3DXSHADER_CONSTANTTABLE +
+ + + No documentation. + + + bb205440 + unsigned int Size + unsigned int Size + + + + No documentation. + + + bb205440 + unsigned int Creator + unsigned int Creator + + + + No documentation. + + + bb205440 + unsigned int Version + unsigned int Version + + + + No documentation. + + + bb205440 + unsigned int Constants + unsigned int Constants + + + + No documentation. + + + bb205440 + unsigned int ConstantInfo + unsigned int ConstantInfo + + + + No documentation. + + + bb205440 + unsigned int Flags + unsigned int Flags + + + + No documentation. + + + bb205440 + unsigned int Target + unsigned int Target + + + +

Semantics map a parameter to vertex or pixel shader registers. They can also be optional descriptive strings attached to non-register parameters.

+
+ +

Semantics are required for vertex and pixel shader, input and output registers.

+
+ + bb205437 + D3DXSEMANTIC + D3DXSEMANTIC +
+ + +

Options that identify how resources are used. See .

+
+ + bb205437 + D3DDECLUSAGE Usage + D3DDECLUSAGE Usage +
+ + +

Options that modify how the usage is interpreted. The usage and usage index make up a vertex declaration. See Vertex Declaration (Direct3D 9).

+
+ + bb205437 + unsigned int UsageIndex + unsigned int UsageIndex +
+ + +

Percent of time processing shader data.

+
+ +

For best performance, a balanced load is recommended.

+
+ + bb172543 + D3DDEVINFO_D3D9STAGETIMINGS + D3DDEVINFO_D3D9STAGETIMINGS +
+ + +

Percent of time in shader spent on memory accesses.

+
+ + bb172543 + float MemoryProcessingPercent + float MemoryProcessingPercent +
+ + +

Percent of time processing (moving data around in registers or doing mathematical operations).

+
+ + bb172543 + float ComputationProcessingPercent + float ComputationProcessingPercent +
+ + +

Describes a surface.

+
+ + bb172611 + D3DSURFACE_DESC + D3DSURFACE_DESC +
+ + +

Member of the enumerated type, describing the surface format.

+
+ + bb172611 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

Member of the enumerated type, identifying this resource as a surface.

+
+ + bb172611 + D3DRESOURCETYPE Type + D3DRESOURCETYPE Type +
+ + +

Either the or values. For more information, see .

+
+ + bb172611 + D3DUSAGE Usage + D3DUSAGE Usage +
+ + +

Member of the enumerated type, specifying the class of memory allocated for this surface.

+
+ + bb172611 + D3DPOOL Pool + D3DPOOL Pool +
+ + +

Member of the enumerated type, specifying the levels of full-scene multisampling supported by the surface.

+
+ + bb172611 + D3DMULTISAMPLE_TYPE MultiSampleType + D3DMULTISAMPLE_TYPE MultiSampleType +
+ + +

Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by CheckDeviceMultiSampleType. Passing a larger value returns the error, . The MultisampleQuality values of paired render targets, depth stencil surfaces and the MultiSample type must all match.

+
+ + bb172611 + unsigned int MultiSampleQuality + unsigned int MultiSampleQuality +
+ + +

Width of the surface, in pixels.

+
+ + bb172611 + unsigned int Width + unsigned int Width +
+ + +

Height of the surface, in pixels.

+
+ + bb172611 + unsigned int Height + unsigned int Height +
+ + +

Describes a technique used by an effect.

+
+ +

Some video cards can render two textures in a single pass. However, if a card does not have this capability, it is often possible to render the same effect in two passes, using one texture for each pass.

+
+ + bb205468 + D3DXTECHNIQUE_DESC + D3DXTECHNIQUE_DESC +
+ + +

String that contains the technique name.

+
+ + bb205468 + const char* Name + char Name +
+ + +

Number of rendering passes the technique requires. See Remarks.

+
+ + bb205468 + unsigned int Passes + unsigned int Passes +
+ + +

The number of annotations. See Add Information to Effect Parameters with_Annotations.

+
+ + bb205468 + unsigned int Annotations + unsigned int Annotations +
+ + +

Describes an animation track and specifies blending weight, speed, and position for the track at a given time.

+
+ +

Tracks with the same priority are blended together, and the two resulting values are then blended using the priority blend factor. A track must have an animation set (stored separately) associated with it.

+
+ + bb205474 + D3DXTRACK_DESC + D3DXTRACK_DESC +
+ + +

Priority type, as defined in .

+
+ + bb205474 + D3DXPRIORITY_TYPE Priority + D3DXPRIORITY_TYPE Priority +
+ + +

Weight value. The weight determines the proportion of this track to blend with other tracks.

+
+ + bb205474 + float Weight + float Weight +
+ + +

Speed value. This is used similarly to a multiplier to scale the period of the track.

+
+ + bb205474 + float Speed + float Speed +
+ + +

Time position of the track, in the local timeframe of its current animation set.

+
+ + bb205474 + double Position + double Position +
+ + +

Track enable/disable. To enable, set to TRUE. To disable, set to .

+
+ + bb205474 + BOOL Enable + BOOL Enable +
+ + +

Describes a triangular high-order patch.

+
+ +

For example, the following diagram identifies the vertex order and segment numbers for a cubic B?zier triangle patch. The vertex order determines the segment numbers used by DrawTriPatch. The offset is the number of bytes to the first triangle patch vertex in the vertex buffer.

+
+ + bb172620 + D3DTRIPATCH_INFO + D3DTRIPATCH_INFO +
+ + +

Starting vertex offset, in number of vertices.

+
+ + bb172620 + unsigned int StartVertexOffset + unsigned int StartVertexOffset +
+ + +

Number of vertices.

+
+ + bb172620 + unsigned int NumVertices + unsigned int NumVertices +
+ + +

Member of the enumerated type, which defines the basis type for the triangular high-order patch. The only valid value for this member is .

+
+ + bb172620 + D3DBASISTYPE Basis + D3DBASISTYPE Basis +
+ + +

Member of the enumerated type, defining the degree type for the triangular high-order patch.

ValueNumber of vertices
10
3
N/A
21

?

N/A - Not available. Not supported.

+
+ + bb172620 + D3DDEGREETYPE Degree + D3DDEGREETYPE Degree +
+ + +

DirectX 8.1 and later versions only.

The structure describes vertex-cache information of a device.

+
+ +

DirectX 8.1 versions only. The Direct3D runtime calls a driver's D3dGetDriverState function to obtain vertex-cache information from the driver. In this D3dGetDriverState call, the runtime specifies the D3DDEVINFOID_VCACHE flag in the dwFlags member of the DD_GETDRIVERSTATEDATA structure that the runtime passes. The driver specifies vertex-cache information in a structure and returns it at the lpdwStates member of DD_GETDRIVERSTATEDATA.

DirectX 9.0 and later versions only. The Direct3D runtime specifies D3DDP2OP_CREATEQUERY and D3DDP2OP_ISSUEQUERY commands in calls to the driver's D3dDrawPrimitives2 callback to create driver-side resources for the query and then to asynchronously query the driver for vertex-cache information. In the call with the D3DDP2OP_CREATEQUERY command, the runtime specifies the query type in the QueryType member of the D3DHAL_DP2CREATEQUERY structure.

When the driver completes a vertex-cache query, the driver sets the total size of the response buffer in the dwErrorOffset member of the D3DHAL_DRAWPRIMITIVES2DATA structure and sets the ddrval member of D3DHAL_DRAWPRIMITIVES2DATA to for successful completion. The driver also overwrites the incoming command buffer with the outgoing response buffer. This response buffer contains a D3DHAL_DP2RESPONSEQUERY structure that identifies a response for the vertex-cache query. This D3DHAL_DP2RESPONSEQUERY is followed by the vertex-cache data in the structure.

+
+ + ff544702 + D3DDEVINFO_VCACHE + D3DDEVINFO_VCACHE +
+ + +

Specifies the bit pattern. The driver must specify the bit pattern as the CACH four-character code (FOURCC) value. The driver can use the MAKEFOURCC macro as follows to specify the FOURCC value as CACH:

MAKEFOURCC('C', 'A', 'C', 'H');
+
+ + ff544702 + unsigned int Pattern + unsigned int Pattern +
+ + +

Specifies the method of mesh optimization. The driver can use one of the following values to specify the mesh optimization that it uses:

ValueMeaning

(0)

Longest strips optimization

D3DXMESHOPT_VCACHE (1)

Vertex-cache based optimization

?

+
+ + ff544702 + unsigned int OptMethod + unsigned int OptMethod +
+ + +

Specifies the effective size, in entries, for which the driver optimizes the vertex cache. The actual cache size is not required to be the size specified in CacheSize because in most cases the actual cache size turns out to be larger. The driver only specifies an optimized size in CacheSize if it also specifies D3DXMESHOPT_VCACHE in the OptMethod member.

+
+ + ff544702 + unsigned int CacheSize + unsigned int CacheSize +
+ + +

Specifies the number that should be used as part of a trial-and-error procedure when determining when to restart the strips list. This number can be set from 1 to the value in the CacheSize member. Typically, the best values are near CacheSize/2.

+
+ + ff544702 + unsigned int MagicNumber + unsigned int MagicNumber +
+ + +

Describes a vertex buffer.

+
+ + bb172629 + D3DVERTEXBUFFER_DESC + D3DVERTEXBUFFER_DESC +
+ + +

Member of the enumerated type, describing the surface format of the vertex buffer data.

+
+ + bb172629 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

Member of the enumerated type, identifying this resource as a vertex buffer.

+
+ + bb172629 + D3DRESOURCETYPE Type + D3DRESOURCETYPE Type +
+ + +

Combination of one or more flags.

+
+ + bb172629 + D3DUSAGE Usage + D3DUSAGE Usage +
+ + +

Member of the enumerated type, specifying the class of memory allocated for this vertex buffer.

+
+ + bb172629 + D3DPOOL Pool + D3DPOOL Pool +
+ + +

Size of the vertex buffer, in bytes.

+
+ + bb172629 + unsigned int Size + unsigned int Size +
+ + +

Combination of that describes the vertex format of the vertices in this buffer.

+
+ + bb172629 + D3DFVF FVF + D3DFVF FVF +
+ + +

Defines the vertex data layout. Each vertex can contain one or more data types, and each data type is described by a vertex element.

+
+ +

Vertex data is defined using an array of structures. Use D3DDECL_END to declare the last element in the declaration.

+
+ + bb172630 + D3DVERTEXELEMENT9 + D3DVERTEXELEMENT9 +
+ + +

Stream number.

+
+ + bb172630 + unsigned short Stream + unsigned short Stream +
+ + +

Offset from the beginning of the vertex data to the data associated with the particular data type.

+
+ + bb172630 + unsigned short Offset + unsigned short Offset +
+ + +

The data type, specified as a . One of several predefined types that define the data size. Some methods have an implied type.

+
+ + bb172630 + D3DDECLTYPE Type + D3DDECLTYPE Type +
+ + +

The method specifies the tessellator processing, which determines how the tessellator interprets (or operates on) the vertex data. For more information, see .

+
+ + bb172630 + D3DDECLMETHOD Method + D3DDECLMETHOD Method +
+ + +

Defines what the data will be used for; that is, the interoperability between vertex data layouts and vertex shaders. Each usage acts to bind a vertex declaration to a vertex shader. In some cases, they have a special interpretation. For example, an element that specifies or is used by the N-patch tessellator to set up tessellation. See for a list of the available semantics. can be used for user-defined fields (which don't have an existing usage defined).

+
+ + bb172630 + D3DDECLUSAGE Usage + D3DDECLUSAGE Usage +
+ + +

Modifies the usage data to allow the user to specify multiple usage types.

+
+ + bb172630 + unsigned char UsageIndex + unsigned char UsageIndex +
+ + + Used for closing a VertexElement declaration. + + + + + Initializes the struct. + + + + + Initializes a new instance of the struct. + + The stream. + The offset. + The type. + The method. + The usage. + Index of the usage. + + + +

Vertex shader caps.

+
+ + bb172635 + D3DVSHADERCAPS2_0 + D3DVSHADERCAPS2_0 +
+ + +

Instruction predication is supported if this value is nonzero. See setp_comp - vs.

+
+ + bb172635 + D3DVS20CAPS Caps + D3DVS20CAPS Caps +
+ + +

Either 0 or 24, which represents the depth of the dynamic flow control instruction nesting. See .

+
+ + bb172635 + int DynamicFlowControlDepth + int DynamicFlowControlDepth +
+ + +

The number of temporary registers supported. See .

+
+ + bb172635 + int NumTemps + int NumTemps +
+ + +

The depth of nesting of the loop - vs/rep - vs and call - vs/callnz bool - vs instructions. See .

+
+ + bb172635 + int StaticFlowControlDepth + int StaticFlowControlDepth +
+ + +

Reports the number of triangles that have been processed and clipped by the runtime's software vertex processing.

+
+ +

Use the debug runtime and software vertex processing to get the number of non-clipped and clipped primitives for a particular scene. Primitives will typically be clipped based on a guard band (if one is present). The clipping guard band is set with parameters such as GuardBandLeft in .

+
+ + bb172544 + D3DDEVINFO_D3DVERTEXSTATS + D3DDEVINFO_D3DVERTEXSTATS +
+ + +

Total number of triangles that are not clipped in this frame.

+
+ + bb172544 + unsigned int NumRenderedTriangles + unsigned int NumRenderedTriangles +
+ + +

Number of new triangles generated by clipping.

+
+ + bb172544 + unsigned int NumExtraClippingTriangles + unsigned int NumExtraClippingTriangles +
+ + +

Describes a volume.

+
+ + bb172633 + D3DVOLUME_DESC + D3DVOLUME_DESC +
+ + +

Member of the enumerated type, describing the surface format of the volume.

+
+ + bb172633 + D3DFORMAT Format + D3DFORMAT Format +
+ + +

Member of the enumerated type, identifying this resource as a volume.

+
+ + bb172633 + D3DRESOURCETYPE Type + D3DRESOURCETYPE Type +
+ + +

Currently not used. Always returned as 0.

+
+ + bb172633 + D3DUSAGE Usage + D3DUSAGE Usage +
+ + +

Member of the enumerated type, specifying the class of memory allocated for this volume.

+
+ + bb172633 + D3DPOOL Pool + D3DPOOL Pool +
+ + +

Width of the volume, in pixels.

+
+ + bb172633 + unsigned int Width + unsigned int Width +
+ + +

Height of the volume, in pixels.

+
+ + bb172633 + unsigned int Height + unsigned int Height +
+ + +

Depth of the volume, in pixels.

+
+ + bb172633 + unsigned int Depth + unsigned int Depth +
+ + +

Specifies tolerance values for each vertex component when comparing vertices to determine if they are similar enough to be welded together.

+
+ +

The LPD3DXWELDEPSILONS type is defined as a reference to the structure.

 typedef  *LPD3DXWELDEPSILONS;	
+            
+
+ + bb205560 + D3DXWELDEPSILONS + D3DXWELDEPSILONS +
+ + +

Position

+
+ + bb205560 + float Position + float Position +
+ + +

Blend weight

+
+ + bb205560 + float BlendWeights + float BlendWeights +
+ + +

Normal

+
+ + bb205560 + float Normal + float Normal +
+ + +

Point size value

+
+ + bb205560 + float PSize + float PSize +
+ + +

Specular lighting value

+
+ + bb205560 + float Specular + float Specular +
+ + +

Diffuse lighting value

+
+ + bb205560 + float Diffuse + float Diffuse +
+ + +

Tangent

+
+ + bb205560 + float Tangent + float Tangent +
+ + +

Binormal

+
+ + bb205560 + float Binormal + float Binormal +
+ + +

Tessellation factor

+
+ + bb205560 + float TessFactor + float TessFactor +
+ + +

Eight texture coordinates

+
+ + bb205560 + float Texcoord[8] + float Texcoord +
+ + +

Identifies compressed key frame animation data.

+
+ + bb174824 + XFILECOMPRESSEDANIMATIONSET + XFILECOMPRESSEDANIMATIONSET +
+ + +

Total size, in bytes, of the compressed data in the compressed key frame animation data buffer.

+
+ + bb174824 + unsigned int CompressedBlockSize + unsigned int CompressedBlockSize +
+ + +

Number of animation key frame ticks that occur per second.

+
+ + bb174824 + float TicksPerSec + float TicksPerSec +
+ + +

Type of the animation set playback loop. See .

+
+ + bb174824 + unsigned int PlaybackType + unsigned int PlaybackType +
+ + +

Minimum buffer size, in bytes, required to hold compressed key frame animation data. Value is equal to ( ( CompressedBlockSize + 3 ) / 4 ).

+
+ + bb174824 + unsigned int BufferLength + unsigned int BufferLength +
+ + + Shadow callback for . + + + + + Return a pointer to the unmanaged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + + Internal Include Callback + + + + + A user-implemented method for opening and reading the contents of a shader #include file. + + This pointer + A -typed value that indicates the location of the #include file. + Name of the #include file. + Pointer to the container that includes the #include file. + Pointer to the buffer that Open returns that contains the include directives. This pointer remains valid until is called. + Pointer to the number of bytes that Open returns in ppData. + The user-implemented method should return S_OK. If Open fails when reading the #include file, the application programming interface (API) that caused Open to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions. + HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes) + + + + A user-implemented method for closing a shader #include file. + + + If was successful, Close is guaranteed to be called before the API using the interface returns. + + This pointer + Pointer to the buffer that contains the include directives. This is the pointer that was returned by the corresponding call. + The user-implemented Close method should return S_OK. If Close fails when it closes the #include file, the application programming interface (API) that caused Close to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions. + HRESULT Close([None] LPCVOID pData) + + + + Internal class used to initialize this assembly. + + + + + Initializes this assembly. + + + This method is called when the assembly is loaded. + + + + + The namespace provides a managed Direct3D9 API. + + bb219837 + Direct3D9 + Direct3D9 + + + The PaletteEntry struct contains the color and usage of an entry in a logical palette. + PALETTEENTRY + + + + The red intensity value for the palette entry. + + + + + The green intensity value for the palette entry. + + + + + The blue intensity value for the palette entry. + + + + + Indicates how the palette entry is to be used. + TODO define an enum for flags + + + + + Represents the compiled bytecode of a shader or effect. + + Blob + + + + Initializes a new instance of the class. + + A containing the compiled bytecode. + + + + Initializes a new instance of the class. + + A containing the compiled bytecode. + + + + Initializes a new instance of the class. + + The buffer. + + + + Initializes a new instance of the class. + + a pointer to a compiler bytecode + size of the bytecode + + + + Initializes a new instance of the class. + + The BLOB. + + + + Gets the size of the shader from a function pointer. + + The shader function pointer. + Size of the shader + + + + Assembles a shader from the given source data. + + The source shader data. + Compilation options. + A object representing the raw shader stream. + HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs) + + + + Assembles a shader from the given source data. + + The source shader data. + Compilation options. + A object representing the raw shader stream. + HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs) + + + + Assembles a shader from the given source data. + + The source shader data. + Macro definitions. + An interface to use for handling #include directives. + Compilation options. + A object representing the raw shader stream. + HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs) + + + + Assembles a shader from the given source data. + + The source shader data. + Macro definitions. + An interface to use for handling #include directives. + Compilation options. + A object representing the raw shader stream. + HRESULT D3DXAssembleShader([In] const void* pSrcData,[In] unsigned int SrcDataLen,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs) + + + + Assembles a shader from file. + + Name of the shader file. + Compilation options. + A object representing the raw shader stream. + + + + Assembles a shader from file. + + Name of the shader file. + Macro definitions. + An interface to use for handling #include directives. + Compilation options. + + A object representing the raw shader stream. + + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + A set of macros to define during compilation. + An interface for handling include files. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + A set of macros to define during compilation. + An interface for handling include files. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles the provided shader or effect source. + + A string containing the source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + A set of macros to define during compilation. + An interface for handling include files. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles a shader or effect from a file on disk. + + The name of the source file to compile. + The shader target or set of shader features to compile against. + Shader compilation options. + A set of macros to define during compilation. + An interface for handling include files. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles a shader or effect from a file on disk. + + The name of the source file to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + A set of macros to define during compilation. + An interface for handling include files. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Compiles the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to compile. + The name of the shader entry-point function, or null for an effect file. + The shader target or set of shader features to compile against. + Shader compilation options. + A set of macros to define during compilation. + An interface for handling include files. + + The compiled shader bytecode, or null if the method fails. + + HRESULT D3DXCompileShader([In] const char* pSrcData,[In] unsigned int SrcDataLen,[In] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] const char* pFunctionName,[In] const char* pProfile,[In] unsigned int Flags,[In] ID3DXBuffer** ppShader,[In] ID3DXBuffer** ppErrorMsgs,[In] ID3DXConstantTable** ppConstantTable) + + + + Disassembles compiled HLSL code back into textual source. + + The textual source of the shader or effect. + HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly) + + + + Disassembles compiled HLSL code back into textual source. + + if set to true [enable color code]. + + The textual source of the shader or effect. + + HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly) + + + + Disassembles compiled HLSL code back into textual source. + + if set to true [enable color code]. + Commenting information to embed in the disassembly. + + The textual source of the shader or effect. + + HRESULT D3DXDisassembleShader([In] const void* pShader,[In] BOOL EnableColorCode,[In] const char* pComments,[In] ID3DXBuffer** ppDisassembly) + + + + Searches through the shader for the specified comment. + + A FOURCC code used to identify the comment. + The comment data. + HRESULT D3DXFindShaderComment([In] const void* pFunction,[In] unsigned int FourCC,[Out] const void** ppData,[Out] unsigned int* pSizeInBytes) + + + + Gets the set of semantics for shader inputs. + + The set of semantics for shader inputs. + HRESULT D3DXGetShaderInputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount) + + + + Gets the set of semantics for shader outputs. + + The set of semantics for shader outputs. + HRESULT D3DXGetShaderOutputSemantics([In] const void* pFunction,[In, Out, Buffer] D3DXSEMANTIC* pSemantics,[InOut] unsigned int* pCount) + + + + Gets the sampler names references in the shader. + + The set of referenced sampler names. + HRESULT D3DXGetShaderSamplers([In] const void* pFunction,[In] const char** pSamplers,[In] unsigned int* pCount) + + + + Extracts the major version component of a shader version number. + + The shader version number. + The major version component. + + + + Extracts the minor version component of a shader version number. + + The shader version number. + The minor version component. + + + + Converts a shader version number into a managed object. + + The shader version number. + The parsed shader version information. + + + + Loads from the specified stream. + + The stream. + A shader bytecode + + + + Saves to the specified file name. + + Name of the file. + + + + Saves this bytecode to the specified stream. + + The stream. + + + + Create a ShaderBytecode from a pointer. + + The pointer. + + + + + Preprocesses the provided shader or effect source. + + A string containing the source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + The preprocessed shader source. + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Preprocesses the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + The preprocessed shader source. + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Preprocesses the provided shader or effect source. + + An array of bytes containing the raw source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + The preprocessed shader source. + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Preprocesses the provided shader or effect source. + + The shader source PTR. + Length of the shader source. + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + + The preprocessed shader source. + + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Preprocesses the provided shader or effect source. + + A string containing the source of the shader or effect to preprocess. + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + The preprocessed shader source. + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Preprocesses a shader or effect from a file on disk. + + The name of the source file to compile. + The preprocessed shader source. + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Preprocesses a shader or effect from a file on disk. + + The name of the source file to compile. + A set of macros to define during preprocessing. + An interface for handling include files. + The preprocessed shader source. + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Preprocesses a shader or effect from a file on disk. + + The name of the source file to compile. + A set of macros to define during preprocessing. + An interface for handling include files. + When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. + The preprocessed shader source. + HRESULT D3DXPreprocessShader([In] const void* pSrcData,[In] unsigned int SrcDataSize,[In, Buffer] const D3DXMACRO* pDefines,[In] ID3DXInclude* pInclude,[In] ID3DXBuffer** ppShaderText,[In] ID3DXBuffer** ppErrorMsgs) + + + + Read a compiled shader bytecode from a Stream and return a ShaderBytecode + + + + + + + Read a compiled shader bytecode from a Stream and return a ShaderBytecode + + + + + + + Gets the buffer pointer. + + + + + Gets or sets the size of the buffer. + + + The size of the buffer. + + + + + Gets the shader constant table. + + HRESULT D3DXGetShaderConstantTable([In] const void* pFunction,[In] ID3DXConstantTable** ppConstantTable) + + + + Gets the version of the shader. + + unsigned int D3DXGetShaderVersion([In] const void* pFunction) + + + + Gets the raw data of the compiled bytecode. + + + + + Width of the texture. + + + + + Height of the texture. + + + + + Format of the texture. + + + + + Mip level count of the texture. + + + + + Helper methods to create special . + + + + + Calculates a specific TEXCOORDSIZEN . + + The size of the texcoord. The value must be in the range [1,4] (Number of floating point values) + Index of the coord. + The + If size is not in the range [1,4] + + + + + + Contains requested texture creation parameters for volume textures. + + None + + + + The requested width of the texture, in pixels. + + + + + The requested height of the texture, in pixels. + + + + + The requested depth of the texture, in pixels. + + + + + The requested surface format. + + + + + The requested mip level count. + + + + diff --git a/distribution/SharpDX.dll b/distribution/SharpDX.dll new file mode 100644 index 0000000000000000000000000000000000000000..0899027726958dafb683a6763ee20f4984a7bc25 GIT binary patch literal 558080 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ð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 literal 0 HcmV?d00001 diff --git a/distribution/SharpDX.xml b/distribution/SharpDX.xml new file mode 100644 index 00000000..e7ad107b --- /dev/null +++ b/distribution/SharpDX.xml @@ -0,0 +1,48704 @@ + + + + SharpDX + + + +

+ Represents a unit independent angle using a single-precision floating-point + internal representation. + + + + + Implement this interface to serialize datas with . + + + + + Reads or writes datas from/to the given binary serializer. + + The binary serializer. + + + + A value that specifies the size of a single degree. + + + + + A value that specifies the size of a single minute. + + + + + A value that specifies the size of a single second. + + + + + A value that specifies the size of a single radian. + + + + + A value that specifies the size of a single milliradian. + + + + + A value that specifies the size of a single gradian. + + + + + The internal representation of the angle. + + + + + Initializes a new instance of the SharpDX.AngleSingle structure with the + given unit dependant angle and unit type. + + A unit dependant measure of the angle. + The type of unit the angle argument is. + + + + Initializes a new instance of the SharpDX.AngleSingle structure using the + arc length formula (θ = s/r). + + The measure of the arc. + The radius of the circle. + + + + Wraps this SharpDX.AngleSingle to be in the range [π, -π]. + + + + + Wraps this SharpDX.AngleSingle to be in the range [0, 2π). + + + + + Wraps the SharpDX.AngleSingle given in the value argument to be in the range [π, -π]. + + A SharpDX.AngleSingle to wrap. + The SharpDX.AngleSingle that is wrapped. + + + + Wraps the SharpDX.AngleSingle given in the value argument to be in the range [0, 2π). + + A SharpDX.AngleSingle to wrap. + The SharpDX.AngleSingle that is wrapped. + + + + Compares two SharpDX.AngleSingle instances and returns the smaller angle. + + The first SharpDX.AngleSingle instance to compare. + The second SharpDX.AngleSingle instance to compare. + The smaller of the two given SharpDX.AngleSingle instances. + + + + Compares two SharpDX.AngleSingle instances and returns the greater angle. + + The first SharpDX.AngleSingle instance to compare. + The second SharpDX.AngleSingle instance to compare. + The greater of the two given SharpDX.AngleSingle instances. + + + + Adds two SharpDX.AngleSingle objects and returns the result. + + The first object to add. + The second object to add. + The value of the two objects added together. + + + + Subtracts two SharpDX.AngleSingle objects and returns the result. + + The first object to subtract. + The second object to subtract. + The value of the two objects subtracted. + + + + Multiplies two SharpDX.AngleSingle objects and returns the result. + + The first object to multiply. + The second object to multiply. + The value of the two objects multiplied together. + + + + Divides two SharpDX.AngleSingle objects and returns the result. + + The numerator object. + The denominator object. + The value of the two objects divided. + + + + Returns a System.Boolean that indicates whether the values of two SharpDX.Angle + objects are equal. + + The first object to compare. + The second object to compare. + True if the left and right parameters have the same value; otherwise, false. + + + + Returns a System.Boolean that indicates whether the values of two SharpDX.Angle + objects are not equal. + + The first object to compare. + The second object to compare. + True if the left and right parameters do not have the same value; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is less than another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is less than right; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is greater than another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is greater than right; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is less than or equal to another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is less than or equal to right; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is greater than or equal to another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is greater than or equal to right; otherwise, false. + + + + Returns the value of the SharpDX.AngleSingle operand. (The sign of + the operand is unchanged.) + + A SharpDX.AngleSingle object. + The value of the value parameter. + + + + Returns the the negated value of the SharpDX.AngleSingle operand. + + A SharpDX.AngleSingle object. + The negated value of the value parameter. + + + + Adds two SharpDX.AngleSingle objects and returns the result. + + The first object to add. + The second object to add. + The value of the two objects added together. + + + + Subtracts two SharpDX.AngleSingle objects and returns the result. + + The first object to subtract + The second object to subtract. + The value of the two objects subtracted. + + + + Multiplies two SharpDX.AngleSingle objects and returns the result. + + The first object to multiply. + The second object to multiply. + The value of the two objects multiplied together. + + + + Divides two SharpDX.AngleSingle objects and returns the result. + + The numerator object. + The denominator object. + The value of the two objects divided. + + + + Compares this instance to a specified object and returns an integer that + indicates whether the value of this instance is less than, equal to, or greater + than the value of the specified object. + + The object to compare. + + A signed integer that indicates the relationship of the current instance + to the obj parameter. If the value is less than zero, the current instance + is less than the other. If the value is zero, the current instance is equal + to the other. If the value is greater than zero, the current instance is + greater than the other. + + + + + Compares this instance to a second SharpDX.AngleSingle and returns + an integer that indicates whether the value of this instance is less than, + equal to, or greater than the value of the specified object. + + The object to compare. + + A signed integer that indicates the relationship of the current instance + to the obj parameter. If the value is less than zero, the current instance + is less than the other. If the value is zero, the current instance is equal + to the other. If the value is greater than zero, the current instance is + greater than the other. + + + + + Returns a value that indicates whether the current instance and a specified + SharpDX.AngleSingle object have the same value. + + The object to compare. + + Returns true if this SharpDX.AngleSingle object and another have the same value; + otherwise, false. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this SharpDX.AngleSingle instance. + + A 32-bit signed integer hash code. + + + + Returns a value that indicates whether the current instance and a specified + object have the same value. + + The object to compare. + + Returns true if the obj parameter is a SharpDX.AngleSingle object or a type + capable of implicit conversion to a SharpDX.AngleSingle value, and + its value is equal to the value of the current SharpDX.Angle + object; otherwise, false. + + + + + + + + Gets or sets the total number of revolutions this SharpDX.AngleSingle represents. + + + + + Gets or sets the total number of degrees this SharpDX.AngleSingle represents. + + + + + Gets or sets the minutes component of the degrees this SharpDX.AngleSingle represents. + When setting the minutes, if the value is in the range (-60, 60) the whole degrees are + not changed; otherwise, the whole degrees may be changed. Fractional values may set + the seconds component. + + + + + Gets or sets the seconds of the degrees this SharpDX.AngleSingle represents. + When setting the seconds, if the value is in the range (-60, 60) the whole minutes + or whole degrees are not changed; otherwise, the whole minutes or whole degrees + may be changed. + + + + + Gets or sets the total number of radians this SharpDX.AngleSingle represents. + + + + + Gets or sets the total number of milliradians this SharpDX.AngleSingle represents. + One milliradian is equal to 1/(2000π). + + + + + Gets or sets the total number of gradians this SharpDX.AngleSingle represents. + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a right angle (i.e. 90° or π/2). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a straight angle (i.e. 180° or π). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a full rotation angle (i.e. 360° or 2π). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is an oblique angle (i.e. is not 90° or a multiple of 90°). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is an acute angle (i.e. less than 90° but greater than 0°). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is an obtuse angle (i.e. greater than 90° but less than 180°). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a reflex angle (i.e. greater than 180° but less than 360°). + + + + + Gets a SharpDX.AngleSingle instance that complements this angle (i.e. the two angles add to 90°). + + + + + Gets a SharpDX.AngleSingle instance that supplements this angle (i.e. the two angles add to 180°). + + + + + Gets a new SharpDX.AngleSingle instance that represents the zero angle (i.e. 0°). + + + + + Gets a new SharpDX.AngleSingle instance that represents the right angle (i.e. 90° or π/2). + + + + + Gets a new SharpDX.AngleSingle instance that represents the straight angle (i.e. 180° or π). + + + + + Gets a new SharpDX.AngleSingle instance that represents the full rotation angle (i.e. 360° or 2π). + + + + + A boolean value stored on 4 bytes (instead of 1 in .NET). + + + + + Initializes a new instance of the class. + + if set to true [bool value]. + + + + Indicates whether this instance and a specified object are equal. + + The other. + true if and this instance are the same type and represent the same value; otherwise, false. + + + + Implements the ==. + + The left. + The right. + The result of the operator. + + + + Implements the !=. + + The left. + The right. + The result of the operator. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + + + + Represents an axis-aligned bounding box in three dimensional space. + + + + + The minimum point of the box. + + + + + The maximum point of the box. + + + + + Initializes a new instance of the struct. + + The minimum vertex of the bounding box. + The maximum vertex of the bounding box. + + + + Retrieves the eight corners of the bounding box. + + An array of points representing the eight corners of the bounding box. + + + + Retrieves the eight corners of the bounding box. + + An array of points representing the eight corners of the bounding box. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines whether the current objects contains a point. + + The point to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a point. + + The point to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The box to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The box to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The sphere to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The sphere to test. + The type of containment the two objects have. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the box. + When the method completes, contains the newly constructed bounding box. + Thrown when is null. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the box. + The newly constructed bounding box. + Thrown when is null. + + + + Constructs a from a given sphere. + + The sphere that will designate the extents of the box. + When the method completes, contains the newly constructed bounding box. + + + + Constructs a from a given sphere. + + The sphere that will designate the extents of the box. + The newly constructed bounding box. + + + + Constructs a that is as large as the total combined area of the two specified boxes. + + The first box to merge. + The second box to merge. + When the method completes, contains the newly constructed bounding box. + + + + Constructs a that is as large as the total combined area of the two specified boxes. + + The first box to merge. + The second box to merge. + The newly constructed bounding box. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Defines a frustum which can be used in frustum culling, zoom to Extents (zoom to fit) operations, + (matrix, frustum, camera) interchange, and many kind of intersection testing. + + + + + Creates a new instance of BoundingFrustum. + + Combined matrix that usually takes view × projection matrix. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + Returns one of the 6 planes related to this frustum. + + Plane index where 0 fro Left, 1 for Right, 2 for Top, 3 for Bottom, 4 for Near, 5 for Far + + + + + Creates a new frustum relaying on perspective camera parameters + + The camera pos. + The look dir. + Up dir. + The fov. + The znear. + The zfar. + The aspect. + The bounding frustum calculated from perspective camera + + + + Creates a new frustum relaying on perspective camera parameters + + The camera params. + The bounding frustum from camera params + + + + Returns the 8 corners of the frustum, element0 is Near1 (near right down corner) + , element1 is Near2 (near right top corner) + , element2 is Near3 (near Left top corner) + , element3 is Near4 (near Left down corner) + , element4 is Far1 (far right down corner) + , element5 is Far2 (far right top corner) + , element6 is Far3 (far left top corner) + , element7 is Far4 (far left down corner) + + The 8 corners of the frustum + + + + Returns the 8 corners of the frustum, element0 is Near1 (near right down corner) + , element1 is Near2 (near right top corner) + , element2 is Near3 (near Left top corner) + , element3 is Near4 (near Left down corner) + , element4 is Far1 (far right down corner) + , element5 is Far2 (far right top corner) + , element6 is Far3 (far left top corner) + , element7 is Far4 (far left down corner) + + The 8 corners of the frustum + + + + Extracts perspective camera parameters from the frustum, doesn't work with orthographic frustums. + + Perspective camera parameters from the frustum + + + + Checks whether a point lay inside, intersects or lay outside the frustum. + + The point. + Type of the containment + + + + Checks whether a point lay inside, intersects or lay outside the frustum. + + The point. + Type of the containment + + + + Checks whether a group of points lay totally inside the frustum (Contains), or lay partially inside the frustum (Intersects), or lay outside the frustum (Disjoint). + + The points. + Type of the containment + + + + Checks whether a group of points lay totally inside the frustum (Contains), or lay partially inside the frustum (Intersects), or lay outside the frustum (Disjoint). + + The points. + Type of the containment. + + + + Determines the intersection relationship between the frustum and a bounding box. + + The box. + Type of the containment + + + + Determines the intersection relationship between the frustum and a bounding box. + + The box. + Type of the containment + + + + Determines the intersection relationship between the frustum and a bounding box. + + The box. + Type of the containment. + + + + Determines the intersection relationship between the frustum and a bounding sphere. + + The sphere. + Type of the containment + + + + Determines the intersection relationship between the frustum and a bounding sphere. + + The sphere. + Type of the containment + + + + Determines the intersection relationship between the frustum and a bounding sphere. + + The sphere. + Type of the containment. + + + + Determines the intersection relationship between the frustum and another bounding frustum. + + The frustum. + Type of the containment + + + + Determines the intersection relationship between the frustum and another bounding frustum. + + The frustum. + Type of the containment + + + + Determines the intersection relationship between the frustum and another bounding frustum. + + The frustum. + Type of the containment. + + + + Checks whether the current BoundingFrustum intersects a BoundingSphere. + + The sphere. + Type of the containment + + + + Checks whether the current BoundingFrustum intersects a BoundingSphere. + + The sphere. + Set to true if the current BoundingFrustum intersects a BoundingSphere. + + + + Checks whether the current BoundingFrustum intersects a BoundingBox. + + The box. + true if the current BoundingFrustum intersects a BoundingSphere. + + + + Checks whether the current BoundingFrustum intersects a BoundingBox. + + The box. + true if the current BoundingFrustum intersects a BoundingSphere. + + + + Checks whether the current BoundingFrustum intersects the specified Plane. + + The plane. + Plane intersection type. + + + + Checks whether the current BoundingFrustum intersects the specified Plane. + + The plane. + Plane intersection type. + + + + Get the width of the frustum at specified depth. + + the depth at which to calculate frustum width. + With of the frustum at the specified depth + + + + Get the height of the frustum at specified depth. + + the depth at which to calculate frustum height. + Height of the frustum at the specified depth + + + + Checks whether the current BoundingFrustum intersects the specified Ray. + + The ray. + true if the current BoundingFrustum intersects the specified Ray. + + + + Checks whether the current BoundingFrustum intersects the specified Ray. + + The Ray to check for intersection with. + The distance at which the ray enters the frustum if there is an intersection and the ray starts outside the frustum. + The distance at which the ray exits the frustum if there is an intersection. + true if the current BoundingFrustum intersects the specified Ray. + + + + Get the distance which when added to camera position along the lookat direction will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + if the returned value is positive, the camera will move toward the lookat direction (ZoomIn). + if the returned value is negative, the camera will move in the reverse direction of the lookat direction (ZoomOut). + + The points. + The zoom to fit distance + + + + Get the distance which when added to camera position along the lookat direction will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + if the returned value is positive, the camera will move toward the lookat direction (ZoomIn). + if the returned value is negative, the camera will move in the reverse direction of the lookat direction (ZoomOut). + + The bounding box. + The zoom to fit distance + + + + Get the vector shift which when added to camera position will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + + The points. + The zoom to fit vector + + + + Get the vector shift which when added to camera position will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + + The bounding box. + The zoom to fit vector + + + + + + + Gets or sets the Matrix that describes this bounding frustum. + + + + + Gets the near plane of the BoundingFrustum. + + + + + Gets the far plane of the BoundingFrustum. + + + + + Gets the left plane of the BoundingFrustum. + + + + + Gets the right plane of the BoundingFrustum. + + + + + Gets the top plane of the BoundingFrustum. + + + + + Gets the bottom plane of the BoundingFrustum. + + + + + Indicate whether the current BoundingFrustrum is Orthographic. + + + true if the current BoundingFrustrum is Orthographic; otherwise, false. + + + + + Represents a bounding sphere in three dimensional space. + + + + + The center of the sphere in three dimensional space. + + + + + The radius of the sphere. + + + + + Initializes a new instance of the struct. + + The center of the sphere in three dimensional space. + The radius of the sphere. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines whether the current objects contains a point. + + The point to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The box to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The sphere to test. + The type of containment the two objects have. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the sphere. + The start index from points array to start compute the bounding sphere. + The count of points to process to compute the bounding sphere. + When the method completes, contains the newly constructed bounding sphere. + points + + start + or + count + + + + + Constructs a that fully contains the given points. + + The points that will be contained by the sphere. + When the method completes, contains the newly constructed bounding sphere. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the sphere. + The newly constructed bounding sphere. + + + + Constructs a from a given box. + + The box that will designate the extents of the sphere. + When the method completes, the newly constructed bounding sphere. + + + + Constructs a from a given box. + + The box that will designate the extents of the sphere. + The newly constructed bounding sphere. + + + + Constructs a that is the as large as the total combined area of the two specified spheres. + + The first sphere to merge. + The second sphere to merge. + When the method completes, contains the newly constructed bounding sphere. + + + + Constructs a that is the as large as the total combined area of the two specified spheres. + + The first sphere to merge. + The second sphere to merge. + The newly constructed bounding sphere. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Callback base implementation of . + + + + + Base class for a class. + + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Occurs when this instance is starting to be disposed. + + + + + Occurs when this instance is fully disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + true if this instance is disposed; otherwise, false. + + + + + Use this interface to tag a class that is called by an unmanaged + object. A class must dispose the + on dispose. + + + + + Gets or sets the unmanaged shadow callback. + + The unmanaged shadow callback. + + This property is set whenever this instance has an unmanaged shadow callback + registered. This callback must be disposed when disposing this instance. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Provides for default value types. + + + + + A default for . + + + + + An observable collection. + + Type of a collection item + + + + Raised when an item is added to this instance. + + + + + Raised when a item is removed from this instance. + + + + + An event providing the item changed in a collection (inserted or removed). + + Type of a collection item + + + + Initializes a new instance of the class. + + The item from the collection. + + + + Gets the item from the collection that was inserted or removed. + + The collection item. + + + + An observable dictionary. + + The dictionary's key type. + The dictionary's value type. + + + + + + + + + + + + + + + + + + + + + + Gets the enumerator of this dictionary. + + The enumerator instance of the dictionary. + + + + Removes all items from the dictionary. + + + + + Adds a new value with the specified key to dictionary. + + The added key. + The added value. + + + + Checks whether the dictionary contains the specified key. + + The key to check for presence. + true if the dictionary contains the provided key, false - otherwise. + + + + Removes the value corresponding to the specified key from dictionary. + + The key to remove. + true if the item was removed, false - otherwise. + + + + Tries to get the value associated with the specified key. + + The key. + Contains the returned value on success. + true if the value was returned successfuly, false - otherwise. + + + + + + + + + + + + + + + + + + + + + + + + + Returns the collection of the keys present in dictionary. + + + + + Gets the collection of the values present in dictionary. + + + + + Gets the cound of items present in dictionary. + + + + + Is raised when a new item is added to the dictionary. + + + + + Is raised when an item is removed from the dictionary. + + + + + Gets or sets a value associated with the specified key. + + The key. + The associated value. + + + + + + + Event arguments for the and events. + + The dictionary key type. + The dictionary value type. + + + + Initializes a new instance of the class from the provided . + + The that contains the event arguments. + + + + Initializes a new instance of the class from the provided key and value. + + The event's key argument. + The event's value argument. + + + + Gets the event's key argument. + + + + + Gets the event's value argument. + + + + + A generic collection for effect framework. + + Type of the collection + + + + Adds the specified item. + + The item. + + + + Determines whether this collection contains an element with the specified name. + + The name. + true if [contains] an element with the specified name; otherwise, false. + + + + Gets the number of objects in the collection. + + + + Gets a specific element in the collection by using an index value. + Index of the EffectTechnique to get. + + + Gets a specific element in the collection by using a name. + Name of the EffectTechnique to get. + + + + Use to provide a debug view on a custom collection. Use this by adding + an attribute [DebuggerTypeProxy(typeof(CollectionDebugView))] to your custom collection. + + + + + Initializes a new instance of the class. + + The collection. + collection + + + + Gets the items. + + The items. + + + + + Initializes a new instance of the class. + + The collection. + collection + + + + Gets the items. + + The items. + + + + Helper class to allow programmatic capturing of graphics information that can be loaded later in Visual Studio. + This is a managed implementation of the VsDbg class (http://msdn.microsoft.com/en-us/library/vstudio/dn440549.aspx). + Requires to have installed VS Remote Tools. + http://msdn.microsoft.com/en-us/library/vstudio/hh708963.aspx + http://msdn.microsoft.com/en-us/library/vstudio/hh780905.aspx + + + + + Creates a new instance of the class and prepares the in-app component of graphics diagnostics to actively capture and record graphics information.. + + The destination filename for log writing. + + + + Copies the contents of the active graphics log (.vsglog) file into a new file. + + The new log file name. + + + + Toggles the graphics diagnostics HUD overlay on or off. + + + + + Adds a custom message to the graphics diagnostics HUD (Head-Up Display). + + The message to add. + + + + Captures the remainder of the current frame to the graphics log file. + + + + + Begins a capture interval that will end with . + + A instance that once disposed, calls automatically the method. + + + + Ends a capture interval that was started with . + + + + + Finalizes the graphics log file, closes it, and frees resources that were used while the app was actively recording graphics information. + + Ignored. + + + + Helper structure to ease the begin/end graphics capturing + + + var debugger = new VSGraphicsDebugger(); + using(debugger.BeginCapture()) + { + ... + } + + + + + Creates a new instance of the structure. + + The attanched graphics debugger. + + + + Ends the capture by calling . + + + + + Represents a 3x3 Matrix ( contains only Scale and Rotation ). + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The identity . + + + + + Value at row 1 column 1 of the Matrix3x3. + + + + + Value at row 1 column 2 of the Matrix3x3. + + + + + Value at row 1 column 3 of the Matrix3x3. + + + + + Value at row 2 column 1 of the Matrix3x3. + + + + + Value at row 2 column 2 of the Matrix3x3. + + + + + Value at row 2 column 3 of the Matrix3x3. + + + + + Value at row 3 column 1 of the Matrix3x3. + + + + + Value at row 3 column 2 of the Matrix3x3. + + + + + Value at row 3 column 3 of the Matrix3x3. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value to assign at row 1 column 1 of the Matrix3x3. + The value to assign at row 1 column 2 of the Matrix3x3. + The value to assign at row 1 column 3 of the Matrix3x3. + The value to assign at row 2 column 1 of the Matrix3x3. + The value to assign at row 2 column 2 of the Matrix3x3. + The value to assign at row 2 column 3 of the Matrix3x3. + The value to assign at row 3 column 1 of the Matrix3x3. + The value to assign at row 3 column 2 of the Matrix3x3. + The value to assign at row 3 column 3 of the Matrix3x3. + + + + Initializes a new instance of the struct. + + The values to assign to the components of the Matrix3x3. This must be an array with sixteen elements. + Thrown when is null. + Thrown when contains more or less than sixteen elements. + + + + Calculates the determinant of the Matrix3x3. + + The determinant of the Matrix3x3. + + + + Inverts the Matrix3x3. + + + + + Transposes the Matrix3x3. + + + + + Orthogonalizes the specified Matrix3x3. + + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the Matrix3x3 will be orthogonal to any other given row in the + Matrix3x3. + Because this method uses the modified Gram-Schmidt process, the resulting Matrix3x3 + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the Matrix3x3 rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified Matrix3x3. + + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting Matrix3x3 + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the Matrix3x3 rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Decomposes a Matrix3x3 into an orthonormalized Matrix3x3 Q and a right triangular Matrix3x3 R. + + When the method completes, contains the orthonormalized Matrix3x3 of the decomposition. + When the method completes, contains the right triangular Matrix3x3 of the decomposition. + + + + Decomposes a Matrix3x3 into a lower triangular Matrix3x3 L and an orthonormalized Matrix3x3 Q. + + When the method completes, contains the lower triangular Matrix3x3 of the decomposition. + When the method completes, contains the orthonormalized Matrix3x3 of the decomposition. + + + + Decomposes a Matrix3x3 into a scale, rotation, and translation. + + When the method completes, contains the scaling component of the decomposed Matrix3x3. + When the method completes, contains the rotation component of the decomposed Matrix3x3. + + This method is designed to decompose an SRT transformation Matrix3x3 only. + + + + + Decomposes a uniform scale matrix into a scale, rotation, and translation. + A uniform scale matrix has the same scale in every axis. + + When the method completes, contains the scaling component of the decomposed matrix. + When the method completes, contains the rotation component of the decomposed matrix. + + This method is designed to decompose only an SRT transformation matrix that has the same scale in every axis. + + + + + Exchanges two rows in the Matrix3x3. + + The first row to exchange. This is an index of the row starting at zero. + The second row to exchange. This is an index of the row starting at zero. + + + + Exchanges two columns in the Matrix3x3. + + The first column to exchange. This is an index of the column starting at zero. + The second column to exchange. This is an index of the column starting at zero. + + + + Creates an array containing the elements of the Matrix3x3. + + A 9-element array containing the components of the Matrix3x3. + + + + Determines the sum of two matrices. + + The first Matrix3x3 to add. + The second Matrix3x3 to add. + When the method completes, contains the sum of the two matrices. + + + + Determines the sum of two matrices. + + The first Matrix3x3 to add. + The second Matrix3x3 to add. + The sum of the two matrices. + + + + Determines the difference between two matrices. + + The first Matrix3x3 to subtract. + The second Matrix3x3 to subtract. + When the method completes, contains the difference between the two matrices. + + + + Determines the difference between two matrices. + + The first Matrix3x3 to subtract. + The second Matrix3x3 to subtract. + The difference between the two matrices. + + + + Scales a Matrix3x3 by the given value. + + The Matrix3x3 to scale. + The amount by which to scale. + When the method completes, contains the scaled Matrix3x3. + + + + Scales a Matrix3x3 by the given value. + + The Matrix3x3 to scale. + The amount by which to scale. + The scaled Matrix3x3. + + + + Determines the product of two matrices. + + The first Matrix3x3 to multiply. + The second Matrix3x3 to multiply. + The product of the two matrices. + + + + Determines the product of two matrices. + + The first Matrix3x3 to multiply. + The second Matrix3x3 to multiply. + The product of the two matrices. + + + + Scales a Matrix3x3 by the given value. + + The Matrix3x3 to scale. + The amount by which to scale. + When the method completes, contains the scaled Matrix3x3. + + + + Scales a Matrix3x3 by the given value. + + The Matrix3x3 to scale. + The amount by which to scale. + The scaled Matrix3x3. + + + + Determines the quotient of two matrices. + + The first Matrix3x3 to divide. + The second Matrix3x3 to divide. + When the method completes, contains the quotient of the two matrices. + + + + Determines the quotient of two matrices. + + The first Matrix3x3 to divide. + The second Matrix3x3 to divide. + The quotient of the two matrices. + + + + Performs the exponential operation on a Matrix3x3. + + The Matrix3x3 to perform the operation on. + The exponent to raise the Matrix3x3 to. + When the method completes, contains the exponential Matrix3x3. + Thrown when the is negative. + + + + Performs the exponential operation on a Matrix3x3. + + The Matrix3x3 to perform the operation on. + The exponent to raise the Matrix3x3 to. + The exponential Matrix3x3. + Thrown when the is negative. + + + + Negates a Matrix3x3. + + The Matrix3x3 to be negated. + When the method completes, contains the negated Matrix3x3. + + + + Negates a Matrix3x3. + + The Matrix3x3 to be negated. + The negated Matrix3x3. + + + + Performs a linear interpolation between two matrices. + + Start Matrix3x3. + End Matrix3x3. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two matrices. + + Start Matrix3x3. + End Matrix3x3. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two matrices. + + Start Matrix3x3. + End Matrix3x3. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two matrices. + + + + Performs a cubic interpolation between two matrices. + + Start Matrix3x3. + End Matrix3x3. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two matrices. + + + + Calculates the transpose of the specified Matrix3x3. + + The Matrix3x3 whose transpose is to be calculated. + When the method completes, contains the transpose of the specified Matrix3x3. + + + + Calculates the transpose of the specified Matrix3x3. + + The Matrix3x3 whose transpose is to be calculated. + When the method completes, contains the transpose of the specified Matrix3x3. + + + + Calculates the transpose of the specified Matrix3x3. + + The Matrix3x3 whose transpose is to be calculated. + The transpose of the specified Matrix3x3. + + + + Calculates the inverse of the specified Matrix3x3. + + The Matrix3x3 whose inverse is to be calculated. + When the method completes, contains the inverse of the specified Matrix3x3. + + + + Calculates the inverse of the specified Matrix3x3. + + The Matrix3x3 whose inverse is to be calculated. + The inverse of the specified Matrix3x3. + + + + Orthogonalizes the specified Matrix3x3. + + The Matrix3x3 to orthogonalize. + When the method completes, contains the orthogonalized Matrix3x3. + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the Matrix3x3 will be orthogonal to any other given row in the + Matrix3x3. + Because this method uses the modified Gram-Schmidt process, the resulting Matrix3x3 + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the Matrix3x3 rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthogonalizes the specified Matrix3x3. + + The Matrix3x3 to orthogonalize. + The orthogonalized Matrix3x3. + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the Matrix3x3 will be orthogonal to any other given row in the + Matrix3x3. + Because this method uses the modified Gram-Schmidt process, the resulting Matrix3x3 + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the Matrix3x3 rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified Matrix3x3. + + The Matrix3x3 to orthonormalize. + When the method completes, contains the orthonormalized Matrix3x3. + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting Matrix3x3 + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the Matrix3x3 rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified Matrix3x3. + + The Matrix3x3 to orthonormalize. + The orthonormalized Matrix3x3. + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting Matrix3x3 + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the Matrix3x3 rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Brings the Matrix3x3 into upper triangular form using elementary row operations. + + The Matrix3x3 to put into upper triangular form. + When the method completes, contains the upper triangular Matrix3x3. + + If the Matrix3x3 is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the Matrix3x3 represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the Matrix3x3 into upper triangular form using elementary row operations. + + The Matrix3x3 to put into upper triangular form. + The upper triangular Matrix3x3. + + If the Matrix3x3 is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the Matrix3x3 represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the Matrix3x3 into lower triangular form using elementary row operations. + + The Matrix3x3 to put into lower triangular form. + When the method completes, contains the lower triangular Matrix3x3. + + If the Matrix3x3 is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the Matrix3x3 represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the Matrix3x3 into lower triangular form using elementary row operations. + + The Matrix3x3 to put into lower triangular form. + The lower triangular Matrix3x3. + + If the Matrix3x3 is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the Matrix3x3 represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the Matrix3x3 into row echelon form using elementary row operations; + + The Matrix3x3 to put into row echelon form. + When the method completes, contains the row echelon form of the Matrix3x3. + + + + Brings the Matrix3x3 into row echelon form using elementary row operations; + + The Matrix3x3 to put into row echelon form. + When the method completes, contains the row echelon form of the Matrix3x3. + + + + Creates a left-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + When the method completes, contains the created billboard Matrix3x3. + + + + Creates a left-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + The created billboard Matrix3x3. + + + + Creates a right-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + When the method completes, contains the created billboard Matrix3x3. + + + + Creates a right-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + The created billboard Matrix3x3. + + + + Creates a left-handed, look-at Matrix3x3. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at Matrix3x3. + + + + Creates a left-handed, look-at Matrix3x3. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at Matrix3x3. + + + + Creates a right-handed, look-at Matrix3x3. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at Matrix3x3. + + + + Creates a right-handed, look-at Matrix3x3. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at Matrix3x3. + + + + Builds a Matrix3x3 that can be used to reflect vectors about a plane. + + The plane for which the reflection occurs. This parameter is assumed to be normalized. + When the method completes, contains the reflection Matrix3x3. + + + + Builds a Matrix3x3 that can be used to reflect vectors about a plane. + + The plane for which the reflection occurs. This parameter is assumed to be normalized. + The reflection Matrix3x3. + + + + Creates a Matrix3x3 that flattens geometry into a shadow. + + The light direction. If the W component is 0, the light is directional light; if the + W component is 1, the light is a point light. + The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized. + When the method completes, contains the shadow Matrix3x3. + + + + Creates a Matrix3x3 that flattens geometry into a shadow. + + The light direction. If the W component is 0, the light is directional light; if the + W component is 1, the light is a point light. + The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized. + The shadow Matrix3x3. + + + + Creates a Matrix3x3 that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + When the method completes, contains the created scaling Matrix3x3. + + + + Creates a Matrix3x3 that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + The created scaling Matrix3x3. + + + + Creates a Matrix3x3 that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + When the method completes, contains the created scaling Matrix3x3. + + + + Creates a Matrix3x3 that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + The created scaling Matrix3x3. + + + + Creates a Matrix3x3 that uniformly scales along all three axis. + + The uniform scale that is applied along all axis. + When the method completes, contains the created scaling Matrix3x3. + + + + Creates a Matrix3x3 that uniformly scales along all three axis. + + The uniform scale that is applied along all axis. + The created scaling Matrix3x3. + + + + Creates a Matrix3x3 that rotates around the x-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation Matrix3x3. + + + + Creates a Matrix3x3 that rotates around the x-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation Matrix3x3. + + + + Creates a Matrix3x3 that rotates around the y-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation Matrix3x3. + + + + Creates a Matrix3x3 that rotates around the y-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation Matrix3x3. + + + + Creates a Matrix3x3 that rotates around the z-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation Matrix3x3. + + + + Creates a Matrix3x3 that rotates around the z-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation Matrix3x3. + + + + Creates a Matrix3x3 that rotates around an arbitrary axis. + + The axis around which to rotate. This parameter is assumed to be normalized. + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation Matrix3x3. + + + + Creates a Matrix3x3 that rotates around an arbitrary axis. + + The axis around which to rotate. This parameter is assumed to be normalized. + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation Matrix3x3. + + + + Creates a rotation Matrix3x3 from a quaternion. + + The quaternion to use to build the Matrix3x3. + The created rotation Matrix3x3. + + + + Creates a rotation Matrix3x3 from a quaternion. + + The quaternion to use to build the Matrix3x3. + The created rotation Matrix3x3. + + + + Creates a rotation Matrix3x3 with a specified yaw, pitch, and roll. + + Yaw around the y-axis, in radians. + Pitch around the x-axis, in radians. + Roll around the z-axis, in radians. + When the method completes, contains the created rotation Matrix3x3. + + + + Creates a rotation Matrix3x3 with a specified yaw, pitch, and roll. + + Yaw around the y-axis, in radians. + Pitch around the x-axis, in radians. + Roll around the z-axis, in radians. + The created rotation Matrix3x3. + + + + Adds two matrices. + + The first Matrix3x3 to add. + The second Matrix3x3 to add. + The sum of the two matrices. + + + + Assert a Matrix3x3 (return it unchanged). + + The Matrix3x3 to assert (unchanged). + The asserted (unchanged) Matrix3x3. + + + + Subtracts two matrices. + + The first Matrix3x3 to subtract. + The second Matrix3x3 to subtract. + The difference between the two matrices. + + + + Negates a Matrix3x3. + + The Matrix3x3 to negate. + The negated Matrix3x3. + + + + Scales a Matrix3x3 by a given value. + + The Matrix3x3 to scale. + The amount by which to scale. + The scaled Matrix3x3. + + + + Scales a Matrix3x3 by a given value. + + The Matrix3x3 to scale. + The amount by which to scale. + The scaled Matrix3x3. + + + + Multiplies two matrices. + + The first Matrix3x3 to multiply. + The second Matrix3x3 to multiply. + The product of the two matrices. + + + + Scales a Matrix3x3 by a given value. + + The Matrix3x3 to scale. + The amount by which to scale. + The scaled Matrix3x3. + + + + Divides two matrices. + + The first Matrix3x3 to divide. + The second Matrix3x3 to divide. + The quotient of the two matrices. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Convert the 3x3 Matrix to a 4x4 Matrix. + + A 4x4 Matrix with zero translation and M44=1 + + + + Convert the 4x4 Matrix to a 3x3 Matrix. + + A 3x3 Matrix + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified are equal. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Gets or sets the first row in the Matrix3x3; that is M11, M12, M13 + + + + + Gets or sets the second row in the Matrix3x3; that is M21, M22, M23 + + + + + Gets or sets the third row in the Matrix3x3; that is M31, M32, M33 + + + + + Gets or sets the first column in the Matrix3x3; that is M11, M21, M31 + + + + + Gets or sets the second column in the Matrix3x3; that is M12, M22, M32 + + + + + Gets or sets the third column in the Matrix3x3; that is M13, M23, M33 + + + + + Gets or sets the scale of the Matrix3x3; that is M11, M22, and M33. + + + + + Gets a value indicating whether this instance is an identity Matrix3x3. + + + true if this instance is an identity Matrix3x3; otherwise, false. + + + + + Gets or sets the component at the specified index. + + The value of the Matrix3x3 component, depending on the index. + The zero-based index of the component to access. + The value of the component at the specified index. + Thrown when the is out of the range [0, 15]. + + + + Gets or sets the component at the specified index. + + The value of the Matrix3x3 component, depending on the index. + The row of the Matrix3x3 to access. + The column of the Matrix3x3 to access. + The value of the component at the specified index. + Thrown when the or is out of the range [0, 3]. + + + + Internal class used to initialize this assembly. + + + + + Initializes this assembly. + + + This method is called when the assembly is loaded. + + + + + OrientedBoundingBox (OBB) is a rectangular block, much like an AABB (BoundingBox) but with an arbitrary orientation. + + + + + Half lengths of the box along each axis. + + + + + The matrix which aligns and scales the box, and its translation vector represents the center of the box. + + + + + Creates an from a BoundingBox. + + The BoundingBox to create from. + + Initially, the OBB is axis-aligned box, but it can be rotated and transformed later. + + + + + Creates an which contained between two minimum and maximum points. + + The minimum vertex of the bounding box. + The maximum vertex of the bounding box. + + Initially, the OrientedBoundingBox is axis-aligned box, but it can be rotated and transformed later. + + + + + Creates an that fully contains the given points. + + The points that will be contained by the box. + + This method is not for computing the best tight-fitting OrientedBoundingBox. + And initially, the OrientedBoundingBox is axis-aligned box, but it can be rotated and transformed later. + + + + + Retrieves the eight corners of the bounding box. + + An array of points representing the eight corners of the bounding box. + + + + Transforms this box using a transformation matrix. + + The transformation matrix. + + While any kind of transformation can be applied, it is recommended to apply scaling using scale method instead, which + scales the Extents and keeps the Transformation matrix for rotation only, and that preserves collision detection accuracy. + + + + + Transforms this box using a transformation matrix. + + The transformation matrix. + + While any kind of transformation can be applied, it is recommended to apply scaling using scale method instead, which + scales the Extents and keeps the Transformation matrix for rotation only, and that preserves collision detection accuracy. + + + + + Scales the by scaling its Extents without affecting the Transformation matrix, + By keeping Transformation matrix scaling-free, the collision detection methods will be more accurate. + + + + + + Scales the by scaling its Extents without affecting the Transformation matrix, + By keeping Transformation matrix scaling-free, the collision detection methods will be more accurate. + + + + + + Scales the by scaling its Extents without affecting the Transformation matrix, + By keeping Transformation matrix scaling-free, the collision detection methods will be more accurate. + + + + + + Translates the to a new position using a translation vector; + + the translation vector. + + + + Translates the to a new position using a translation vector; + + the translation vector. + + + + Returns the size of the taking into consideration the scaling applied to the transformation matrix. + + The size of the consideration + + This method is computationally expensive, so if no scale is applied to the transformation matrix + use property instead. + + + + + Returns the square size of the taking into consideration the scaling applied to the transformation matrix. + + The size of the consideration + + + + Determines whether a contains a point. + + The point to test. + The type of containment the two objects have. + + + + Determines whether a contains a point. + + The point to test. + The type of containment the two objects have. + + + + Determines whether a contains an array of points>. + + The points array to test. + The type of containment. + + + + Determines whether a contains a . + + The sphere to test. + Optimize the check operation by assuming that has no scaling applied + The type of containment the two objects have. + + This method is not designed for which has a non-uniform scaling applied to its transformation matrix. + But any type of scaling applied using Scale method will keep this method accurate. + + + + + Check the intersection between two + + The OrientedBoundingBoxs to test. + The type of containment the two objects have. + + For accuracy, The transformation matrix for both must not have any scaling applied to it. + Anyway, scaling using Scale method will keep this method accurate. + + + + + Check the intersection between an and a line defined by two points + + The first point in the line. + The second point in the line. + The type of containment the two objects have. + + For accuracy, The transformation matrix for the must not have any scaling applied to it. + Anyway, scaling using Scale method will keep this method accurate. + + + + + Check the intersection between an and + + The BoundingBox to test. + The type of containment the two objects have. + + For accuracy, The transformation matrix for the must not have any scaling applied to it. + Anyway, scaling using Scale method will keep this method accurate. + + + + + Determines whether there is an intersection between a and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + Whether the two objects intersected. + + + + Get the axis-aligned which contains all corners. + + The axis-aligned BoundingBox of this OrientedBoundingBox. + + + + Calculates the matrix required to transfer any point from one local coordinates to another. + + The source OrientedBoundingBox. + The target OrientedBoundingBox. + + If true, the method will use a fast algorithm which is inapplicable if a scale is applied to the transformation matrix of the OrientedBoundingBox. + + + + + + Merge an OrientedBoundingBox B into another OrientedBoundingBox A, by expanding A to contain B and keeping A orientation. + + The to merge into it. + The to be merged + + If true, the method will use a fast algorithm which is inapplicable if a scale is applied to the transformation matrix of the OrientedBoundingBox. + + + Unlike merging axis aligned boxes, The operation is not interchangeable, because it keeps A orientation and merge B into it. + + + + + Merge this OrientedBoundingBox into another OrientedBoundingBox, keeping the other OrientedBoundingBox orientation. + + The other to merge into. + + If true, the method will use a fast algorithm which is inapplicable if a scale is applied to the transformation matrix of the OrientedBoundingBox. + + + + + Merge another OrientedBoundingBox into this OrientedBoundingBox. + + The other to merge into this OrientedBoundingBox. + + If true, the method will use a fast algorithm which is inapplicable if a scale is applied to the transformation matrix of the OrientedBoundingBox. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + + + + The size of the if no scaling is applied to the transformation matrix. + + + The property will return the actual size even if the scaling is applied using Scale method, + but if the scaling is applied to transformation matrix, use GetSize Function instead. + + + + + Returns the center of the . + + + + + Random functions on commun types. + + + + + Gets random float number within range. + + Current . + Minimum. + Maximum. + Random float number. + + + + Gets random double number within range. + + Current . + Minimum. + Maximum. + Random double number. + + + + Gets random long number. + + Current . + Random long number. + + + + Gets random long number within range. + + Current . + Minimum. + Maximum. + Random long number. + + + + Gets random within range. + + Current . + Minimum. + Maximum. + Random . + + + + Gets random within range. + + Current . + Minimum. + Maximum. + Random . + + + + Gets random within range. + + Current . + Minimum. + Maximum. + Random . + + + + Gets random opaque . + + Current . + Random . + + + + Gets random opaque . + + Current . + Minimum brightness. + Maximum brightness + Random . + + + + Gets random . + + Current . + Minimum brightness. + Maximum brightness + Alpha value. + Random . + + + + Gets random . + + Current . + Minimum brightness. + Maximum brightness + Minimum alpha. + Maximum alpha. + Random . + + + + Gets random . + + Current . + Minimum. + Maximum. + Random . + + + + Gets random . + + Current . + Minimum. + Maximum. + Random . + + + + Task utility for threading. + + + + + Runs the specified action in a thread. + + The action. + Name of the task. + + + + Defines the viewport dimensions using float coordinates for (X,Y,Width,Height). + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Width dimension of the viewport. + + + + + Height dimension of the viewport. + + + + + Gets or sets the minimum depth of the clip volume. + + + + + Gets or sets the maximum depth of the clip volume. + + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + The minimum depth of the clip volume. + The maximum depth of the clip volume. + + + + Initializes a new instance of the struct. + + A bounding box that defines the location and size of the viewport in a render target. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified object is equal to this instance. + + The object to compare with this instance. + + true if the specified object is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Retrieves a string representation of this object. + + A that represents this instance. + + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + A combined WorldViewProjection matrix. + The projected vector. + + + + Converts a screen space point into a corresponding point in world space. + + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + The unprojected Vector. + + + + Converts a screen space point into a corresponding point in world space. + + The vector to project. + An inverted combined WorldViewProjection matrix. + The unprojected vector. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Gets the size of this resource. + + The bounds. + + + + Gets the aspect ratio used by the viewport. + + The aspect ratio. + + + + A fast method to pass array of to SharpDX methods. + + + + + Initializes a new instance of the class. + + The array. + + + + Initializes a new instance of the class. + + The size. + + + + Gets an object at the specified index. + + The index. + A + + + + Sets an object at the specified index. + + The index. + The value. + + + + + + + Gets the pointer to the native array associated to this instance. + + + + + Gets the length. + + + + + A typed version of + + Type of the + + + + Initializes a new instance of the class. + + The array. + + + + Initializes a new instance of the class. + + The size. + + + + Gets or sets the with the specified i. + + + + + Generic class to hold a shader compilation results. + + Type of the class containing the generated bytecode. + + + + Initializes a new instance of the class. + + The bytecode. + Result code from compilation. + The message. + + + + + + + Gets the Shader bytecode. + + + + + Gets the result code from the compilation. + + + + + Gets a value indicating whether this instance has errors. + + + true if this instance has errors; otherwise, false. + + + + + Gets the message. + + + Message are warning or error messages. + + + + + Represents a four dimensional mathematical vector of bool (32 bits per bool value). + + + + + The size of the type, in bytes. + + + + + A with all of its components set to false. + + + + + The X unit (true, 0, 0, 0). + + + + + The Y unit (0, true, 0, 0). + + + + + The Z unit (0, 0, true, 0). + + + + + The W unit (0, 0, 0, true). + + + + + A with all of its components set to true. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Performs an implicit conversion from array to . + + The input. + The result of the conversion. + + + + Performs an implicit conversion from to array. + + The input. + The result of the conversion. + + + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + The assembly is the core assembly providing infrastructure for all managed DirectX API. + + + + + Represents a 32-bit color (4 bytes) in the form of RGBA (in byte order: R, G, B, A). + + + List of predefined . + + + + + The red component of the color. + + + + + The green component of the color. + + + + + The blue component of the color. + + + + + The alpha component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. Alpha is set to 255. + + The red component of the color. + The green component of the color. + The blue component of the color. + + + + Initializes a new instance of the struct. Passed values are clamped within byte range. + + The red component of the color. + The green component of the color. + The blue component of the color. + + + + Initializes a new instance of the struct. Alpha is set to 255. Passed values are clamped within byte range. + + The red component of the color. + The green component of the color. + The blue component of the color. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. Alpha is set to 255. + + The red component of the color. + The green component of the color. + The blue component of the color. + + + + Initializes a new instance of the struct. + + The red, green, blue, and alpha components of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue components of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. Alpha is set to 255. + + The red, green, and blue components of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Initializes a new instance of the struct. + + The values to assign to the alpha, red, green, and blue components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Converts the color into a three component color. + + A three component color containing the red, green, and blue components of the color. + + + + Converts the color into a four component vector. + + A four component vector containing all four color components. + + + + Creates an array containing the elements of the color. + + A four-element array containing the components of the color in RGBA order. + + + + Gets the brightness. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the hue. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the saturation. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The premultiplied result. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The premultiplied result. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed ABGR integer. + + A packed integer containing all four color components in ABGR order + A color. + + + + Converts the color from a packed ABGR integer. + + A packed integer containing all four color components in ABGR order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colors. + + + + Returns a color containing the largest components of the specified colorss. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchanged). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Convert this instance to a + + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an explicit conversion from to . + + The value. + + The result of the conversion. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel element (byte). + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel element (byte). + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Zero color. + + + + + Transparent color. + + + + + AliceBlue color. + + + + + AntiqueWhite color. + + + + + Aqua color. + + + + + Aquamarine color. + + + + + Azure color. + + + + + Beige color. + + + + + Bisque color. + + + + + Black color. + + + + + BlanchedAlmond color. + + + + + Blue color. + + + + + BlueViolet color. + + + + + Brown color. + + + + + BurlyWood color. + + + + + CadetBlue color. + + + + + Chartreuse color. + + + + + Chocolate color. + + + + + Coral color. + + + + + CornflowerBlue color. + + + + + Cornsilk color. + + + + + Crimson color. + + + + + Cyan color. + + + + + DarkBlue color. + + + + + DarkCyan color. + + + + + DarkGoldenrod color. + + + + + DarkGray color. + + + + + DarkGreen color. + + + + + DarkKhaki color. + + + + + DarkMagenta color. + + + + + DarkOliveGreen color. + + + + + DarkOrange color. + + + + + DarkOrchid color. + + + + + DarkRed color. + + + + + DarkSalmon color. + + + + + DarkSeaGreen color. + + + + + DarkSlateBlue color. + + + + + DarkSlateGray color. + + + + + DarkTurquoise color. + + + + + DarkViolet color. + + + + + DeepPink color. + + + + + DeepSkyBlue color. + + + + + DimGray color. + + + + + DodgerBlue color. + + + + + Firebrick color. + + + + + FloralWhite color. + + + + + ForestGreen color. + + + + + Fuchsia color. + + + + + Gainsboro color. + + + + + GhostWhite color. + + + + + Gold color. + + + + + Goldenrod color. + + + + + Gray color. + + + + + Green color. + + + + + GreenYellow color. + + + + + Honeydew color. + + + + + HotPink color. + + + + + IndianRed color. + + + + + Indigo color. + + + + + Ivory color. + + + + + Khaki color. + + + + + Lavender color. + + + + + LavenderBlush color. + + + + + LawnGreen color. + + + + + LemonChiffon color. + + + + + LightBlue color. + + + + + LightCoral color. + + + + + LightCyan color. + + + + + LightGoldenrodYellow color. + + + + + LightGray color. + + + + + LightGreen color. + + + + + LightPink color. + + + + + LightSalmon color. + + + + + LightSeaGreen color. + + + + + LightSkyBlue color. + + + + + LightSlateGray color. + + + + + LightSteelBlue color. + + + + + LightYellow color. + + + + + Lime color. + + + + + LimeGreen color. + + + + + Linen color. + + + + + Magenta color. + + + + + Maroon color. + + + + + MediumAquamarine color. + + + + + MediumBlue color. + + + + + MediumOrchid color. + + + + + MediumPurple color. + + + + + MediumSeaGreen color. + + + + + MediumSlateBlue color. + + + + + MediumSpringGreen color. + + + + + MediumTurquoise color. + + + + + MediumVioletRed color. + + + + + MidnightBlue color. + + + + + MintCream color. + + + + + MistyRose color. + + + + + Moccasin color. + + + + + NavajoWhite color. + + + + + Navy color. + + + + + OldLace color. + + + + + Olive color. + + + + + OliveDrab color. + + + + + Orange color. + + + + + OrangeRed color. + + + + + Orchid color. + + + + + PaleGoldenrod color. + + + + + PaleGreen color. + + + + + PaleTurquoise color. + + + + + PaleVioletRed color. + + + + + PapayaWhip color. + + + + + PeachPuff color. + + + + + Peru color. + + + + + Pink color. + + + + + Plum color. + + + + + PowderBlue color. + + + + + Purple color. + + + + + Red color. + + + + + RosyBrown color. + + + + + RoyalBlue color. + + + + + SaddleBrown color. + + + + + Salmon color. + + + + + SandyBrown color. + + + + + SeaGreen color. + + + + + SeaShell color. + + + + + Sienna color. + + + + + Silver color. + + + + + SkyBlue color. + + + + + SlateBlue color. + + + + + SlateGray color. + + + + + Snow color. + + + + + SpringGreen color. + + + + + SteelBlue color. + + + + + Tan color. + + + + + Teal color. + + + + + Thistle color. + + + + + Tomato color. + + + + + Turquoise color. + + + + + Violet color. + + + + + Wheat color. + + + + + White color. + + + + + WhiteSmoke color. + + + + + Yellow color. + + + + + YellowGreen color. + + + + + Gets or sets the component at the specified index. + + The value of the alpha, red, green, or blue component, depending on the index. + The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Represents a 32-bit color (4 bytes) in the form of BGRA (in byte order: B, G, B, A). + + + + + The blue component of the color. + + + + + The green component of the color. + + + + + The red component of the color. + + + + + The alpha component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red, green, blue, and alpha components of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue components of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in BGRA order. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in BGRA. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Converts the color into a three component color. + + A three component color containing the red, green, and blue components of the color. + + + + Converts the color into a four component vector. + + A four component vector containing all four color components. + + + + Creates an array containing the elements of the color. + + A four-element array containing the components of the color in BGRA order. + + + + Gets the brightness. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the hue. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the saturation. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed RGBA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Converts the color from a packed RGBA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colorss. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colorss. + + + + Returns a color containing the largest components of the specified colorss. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The premultiplied result. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The premultiplied result. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchange). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an explicit conversion from to . + + The value. + + The result of the conversion. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel (byte). + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel (byte). + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Gets or sets the component at the specified index. + + The value of the alpha, red, green, or blue component, depending on the index. + The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Base interface for a component base. + + + + + Gets the name of this component. + + The name. + + + + A service registry is a that provides methods to register and unregister services. + + + + + Gets the service object of specified type. The service must be registered with the type key. + + This method will thrown an exception if the service is not registered, it null value can be accepted - use the method. + The type of the service to get. + The service instance. + Is thrown when the corresponding service is not registered. + + + + Adds a service to this service provider. + + The type of service to add. + The instance of the service provider to add. + Service type cannot be null + Service is already registered + + + + Adds a service to this service provider. + + The type of the service to add. + The instance of the service provider to add. + Service type cannot be null + Service is already registered + + + + Removes the object providing a specified service. + + The type of service. + + + + Occurs when a new service is added. + + + + + Occurs when when a service is removed. + + + + + Path utility methods. + + + + + Transform a path by replacing '/' by '\' and transforming relative '..' or current path '.' to an absolute path. See remarks. + + A path string + A normalized path. + + Unlike , this doesn't make a path absolute to the actual file system. + + + + + Specify the size used for encoding length for array while using a , just before an array is encoded. + + + + + Use variable length 7Bit Encoding that will output from 1 byte to 5 byte depending on the range of length value. + + + + + Output a length as a byte. The length must not be greater than 255. + + + + + Output a length as an ushort. The length must not be greater than 65535. + + + + + Output a length as an int. The length must not be greater than 2^31 - 1. + + + + + The namespace contains a serialization API. + + + + + Flags used when serializing a value with a . + + + + + Normal serialize (not dynamic, not nullable). + + + + + Serialize a value as a dynamic value (the output stream will contain a magic-code for each encoded object). + + + + + Serialize a value that can be null. + + + + + A singleton string is a string that has a unique instance in memory, See remarks for usage scenarios. + + + This class should mostly be used internally for performance reasons, in scenarios where equals/hashcode + could be invoked frequently, and the set of strings is limited. Internally, + string is using the method and also is precaching the hashcode of the string. + + + + + Initializes a new instance of the struct. + + The text. + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + A lightweight Component base class. + + + + + Occurs while this component is disposing and before it is disposed. + + + + + Gets or sets a value indicating whether the name of this instance is immutable. + + true if this instance is name immutable; otherwise, false. + + + + Initializes a new instance of the class with a mutable name. + + + + + Initializes a new instance of the class with an immutable name. + + The name. + + + + Gets the name of this component. + + The name. + + + + Gets or sets the tag associated to this object. + + The tag. + + + + Occurs when a property value changes. + + + + + Pointer to a native buffer with a specific size. + + + + + Gets an Empty Data Pointer. + + + + + Initializes a new instance of the struct. + + The pointer. + The size. + + + + Initializes a new instance of the struct. + + The pointer. + The size. + + + + Pointer to the buffer. + + + + + Size in bytes of the buffer. + + + + + Converts this DataPointer to a . + + An instance of a . + + + + Converts this DataPointer to a . + + An instance of a . + + + + Converts this instance to a read only byte buffer. + + A readonly byte buffer. + + DataPointer is Zero + or + Size cannot be < 0 + + + + + Converts this instance to a read only typed buffer. + + Type of a buffer element + A readonly typed buffer. + DataPointer is Zero + + + + Reads the content of the unmanaged memory location of this instance to the specified buffer. + + Type of a buffer element + The buffer. + The offset in the array to write to. + The number of T element to read from the memory location. + buffer + DataPointer is Zero + buffer;Total buffer size cannot be larger than size of this data pointer + + + + Writes the content of the specified buffer to the unmanaged memory location of this instance. + + Type of a buffer element + The buffer. + buffer + DataPointer is Zero + + + + Writes the content of the specified buffer to the unmanaged memory location of this instance. + + + The buffer to read from. + The offset in the array to read from. + The number of T element to write to the memory location. + buffer + DataPointer is Zero + buffer;Total buffer size cannot be larger than size of this data pointer + + + + Implements the ==. + + The left. + The right. + The result of the operator. + + + + Implements the !=. + + The left. + The right. + The result of the operator. + + + + Gets a value indicating whether this instance is empty (zeroed). + + true if this instance is empty; otherwise, false. + + + + The namespace contains classes to help to diagnostic of COM object lifecycles Dispose and Release methods. + + + + + The namespace contains enumerations and structures shared by , and assemblies. + + + + + A class to dispose instances and allocated unmanaged memory. + + + + + Disposes all object collected by this class and clear the list. The collector can still be used for collecting. + + + To completely dispose this instance and avoid further dispose, use method instead. + + + + + Disposes of object resources. + + If true, managed resources should be + disposed of in addition to unmanaged resources. + + + + Adds a object or a allocated using to the list of the objects to dispose. + + To dispose. + If toDispose argument is not IDisposable or a valid memory pointer allocated by + + + + Dispose a disposable object and set the reference to null. Removes this object from this instance.. + + Object to dispose. + + + + Removes a disposable object to the list of the objects to dispose. + + + To dispose. + + + + Gets the number of elements to dispose. + + The number of elements to dispose. + + + + Frustum camera parameters. + + + + + Position of the camera. + + + + + Looking at direction of the camera. + + + + + Up direction. + + + + + Field of view. + + + + + Z near distance. + + + + + Z far distance. + + + + + Aspect ratio. + + + + + Equality comparer using the identify of the object. + + Type of the parameter + + From http://stackoverflow.com/questions/8946790/how-to-use-an-objects-identity-as-key-for-dictionaryk-v. + + + + + Represents a three dimensional mathematical int vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0). + + + + + The Y unit (0, 1, 0). + + + + + The Z unit (0, 0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + When the method completes, contains the modulated vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + The modulated vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchanged). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Performs an implicit conversion from array to . + + The input. + The result of the conversion. + + + + Performs an implicit conversion from to array. + + The input. + The result of the conversion. + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + The namespace contains helper classes in replacement of some classes in useful under Windows 8 Metro. + + + + + This enumeration defines constants that indicate the role that the system has assigned to an audio endpoint device. + + dd370842 + ERole + ERole + + + + Games, system notification sounds, and voice commands + + + + + Music, movies, narration, and live music recording. + + + + + Voice communications (talking to another person). + + + + + The namespace contains common structures and helper classes for audio/video processing. + + + + + Use this attribute to specify the id of a dynamic type with . + + + + + Initializes a new instance of the class. + + The id to register as a dynamic type. + + + + Initializes a new instance of the class. + + The id to register as a dynamic type. + + + + Gets the id. + + The id. + + + + Exceptions thrown when an invalid chunk is decoded. + + + + + Initializes a new instance of the class with a specified error message. + + The chunk id. + The expected chunk id. + + + + Gets the chunk id. + + The chunk id. + + + + Gets the expected chunk id. + + The expected chunk id. + + + + Serializer action. + + The value to read or write. + The serializer. + + + + This class provides serialization methods for types implementing the . + + + BinarySerializer is a basic binary serializer with the following features: +
    +
  • 10x times faster and smaller than default System Serialization and Xml Serialization.
  • +
  • Supports for all primitive types, array/List<T>/Dictionary of primitive types, custom data via (struct or class) and array/List/Dictionary of custom data.
  • +
  • Optimized binary format, data serialized to the strict minimum.
  • +
  • Should be compatible with Win8/WinRT, Desktop.
  • +
  • Not reflection based serializer, but fully compile time serializer.
  • +
  • Format could be read back from C/C++.
  • + +
+
+
+ + + A disposable component base class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with an immutable name. + + The name. + + + + Releases unmanaged and - optionally - managed resources + + + + + Disposes of object resources. + + If true, managed resources should be + disposed of in addition to unmanaged resources. + + + + Adds a disposable object to the list of the objects to dispose. + + To dispose. + + + + Dispose a disposable object and set the reference to null. Removes this object from the ToDispose list. + + Object to dispose. + + + + Removes a disposable object to the list of the objects to dispose. + + + To dispose. + + + + Gets or sets the disposables. + + The disposables. + + + + Gets or sets a value indicating whether this instance is attached to a collector. + + + true if this instance is attached to a collector; otherwise, false. + + + + + Gets a value indicating whether this instance is disposed. + + + true if this instance is disposed; otherwise, false. + + + + + Occurs when when Dispose is called. + + + + + Gets the reader and throws an exception if this serializer is in Write mode. + + The context object that requires a Reader. + A BinaryReader. + context + If this reader is not in read mode + + + + Initializes a new instance of the class. + + The stream to read or write to. + The read or write mode. + + + + Initializes a new instance of the class. + + The stream to read or write to. + The read or write mode. + Default encoding used for strings. This parameter can be overriden later using Encoding property. + + + + Gets a tag value with the specified key. + + The tag key. + A tag value associated to a key + + + + Determines whether a tag with a specified key is already stored. + + The key. + true if a tag with a specified key is already stored; otherwise, false. + + + + Removes a tag with the specified key. + + The key. + + + + Sets a tag value with the specified key. + + The key. + The value. + + + + + Register a dynamic serializer for a particular type implementing the interface and having the . + + Type of the element to serialize. + + + + Register a dynamic serializer for a particular type implementing the interface. + + Type of the element to serialize. + The id to use for serializing T. + + + + Register a dynamic array serializer for a particular type implementing the interface. + + Type of the element in the array. + The id to use for serializing T[]. + + + + Register a dynamic List<T> serializer for a particular type implementing the interface. + + Type of the element in the List<T>. + The id to use for serializing List<T>. + + + + Register a dynamic serializer using an external action. + + Type of the element to serialize. + The id to use for serializing T. + The serializer. + + + + Begin to serialize a a new chunk. + + The chunk id. + If the chuck to read is not the expecting chunk. + + A Chunk is an identifiable portion of data that will serialized. Chunk are useful to encapsulate a variable + data (and check for the presence of the chunk Id). Chunk are storing a 4 bytes identifier and the length of + the chunk before reading/writing actual data. + + + + + Ends a chunk. + + If there EndChunk is called without a previous BeginChunk. + If the size of data read from the chunk is different from chunk size. + + + + Deserialize a data from the underlying stream. + + Type of the data to load. + An instance of the loaded data. + + + + Serializes the specified value to the underlying stream. + + Type of the data to save. + The value to save. + + + + Flush the underlying + + + + + Serializes a dynamic value that can be nullable. + + Known type of the value to serialize. The known type is not the runtime type that will be actually serialized. + The value to serialize based on its runtime type. + + + + Serializes a dynamic value. + + Known type of the value to serialize. The known type is not the runtime type that will be actually serialized. + The value to serialize based on its runtime type. + Type of serialization, see . + + + + Serializes a static value implementing the interface. + + Type of the data to serialize. + The value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a static value implementing the interface. Unlike , + this method doesn't allocate a new instance when reading but use the reference value. + + Type of the data to serialize. + The value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an enum value. + + Type of the enum to serialize. + The value to serialize + If type T is not an enum. + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an array of primitives using serialization methods implemented by this instance for each item in the array. + + Type of the primitive data to serialize. + An array of primitive value to serialize + The serializer to user to serialize the T values. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes count elements in an array of primitives using serialization methods implemented by this instance for each item in the array. + + Type of the primitive data to serialize. + An array of primitive value to serialize + Count elements to serialize. See remarks. + The serializer to user to serialize the T values. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
+ Caution: Also unlike the plain array version, the count is not serialized. This method is useful + when we want to serialize the count of an array separately from the array. +
+
+ + + Serializes an array of static values that are implementing the interface. + + Type of the data to serialize. + An array of value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an array of static values that are implementing the interface. + + Type of the data to serialize. + An array of value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes count elements in an array of static values that are implementing the interface. + + Type of the data to serialize. + An array of value to serialize + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
+ Caution: Also unlike the plain array version, the count is not serialized. This method is useful + when we want to serialize the count of an array separately from the array. +
+
+ + + Serializes an array of bytes. + + An array of bytes to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an array of bytes. + + An array of bytes to serialize + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
+ Caution: Also unlike the plain array version, the count is not serialized. This method is useful + when we want to serialize the count of an array separately from the array. +
+
+ + + Serializes a list of static values that are implementing the interface. + + Type of the data to serialize. + A list of value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a list of static values that are implementing the interface. + + Type of the data to serialize. + A list of value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a list of primitive values using a specific serializer method from this instance. + + Type of the data to serialize. + A list of value to serialize + A method of this instance to serialize the primitive T type + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes count elements from a list of static values that are implementing the interface. + + Type of the data to serialize. + A list of value to serialize + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
+ Caution: Also unlike the plain array version, the count is not serialized. This method is useful + when we want to serialize the count of an array separately from the array. +
+
+ + + Serializes count elements from a list of primitive values using a specific serializer method from this instance. + + Type of the data to serialize. + A list of value to serialize + A method of this instance to serialize the primitive T type + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
+ Caution: Also unlike the plain array version, the count is not serialized. This method is useful + when we want to serialize the count of an array separately from the array. +
+
+ + + Serializes a dictionary of key/values that are both implementing the interface. + + Type of key to serialize. + Type of value to serialize. + A dictionary to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a dictionary of key/values. + + Type of key to serialize that is implementing the interface. + Type of primitive value with its associated serializer. + A dictionary to serialize + Serializer used for the TValue. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a dictionary of key/values. + + Type of primitive value with its associated serializer. + Type of value to serialize that is implementing the interface. + A dictionary to serialize + Serializer used for the TKey. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a dictionary of key/values. + + Type of primitive key with its associated serializer. + Type of primitive value with its associated serializer. + A dictionary to serialize + Serializer used for the TKey. + Serializer used for the TValue. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single string value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single string value. + + The value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single string value. + + The value to serialize + Write a null byte at the end of the string. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single fixed length string value. + + The value to serialize + Read/write a specific number of characters. + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single boolean value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single byte value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single sbyte value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single short value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single ushort value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single int value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single int as a packed value (from 1 byte to 5 byte. if value < 128, then 1 byte...etc.) + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a memory region. + + The pointer to an unmanaged memory region. For read operation, this pointer must be allocated by the caller. + If the end of stream was reached before reading all the bytes. + Note that depending on the serialization , this method reads or writes the value. + This method doesn't serialize the sizeInBytes of the region, so the size must be serialized separately. + + + + + Serializes a memory region. + + The data pointer. For read operation, this pointer must be allocated by the caller. + The size in bytes. See remarks. + If the end of stream was reached before reading all the bytes. + Note that depending on the serialization , this method reads or writes the value. + This method doesn't serialize the sizeInBytes of the region, so the size must be serialized separately. + + + + + Serializes a single uint value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single long value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single ulong value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single char value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single float value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single double value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single DateTime value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single Guid value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Underlying stream this instance is reading/writing to. + + + + + Reader used to directly read from the underlying stream. + + + + + Writer used to directly write to the underlying stream. + + + + + Gets or sets the serialization mode. + + The serialization mode. + + + + Gets or sets the encoding used to serialized strings. + + The encoding. + When setting a null encoding + + + + Enables to serialize an object only once using object reference. Default is false. + + true if [allow null]; otherwise, false. + If an invalid matching pair of true/false is detected. + + + + Serialization mode used by . + + + + + Reads the data from the stream. + + + + + Writes the data to the stream. + + + + + Shadow attribute used to associate a COM callbackable interface to its Shadow implementation. + + + + + Initializes a new instance of class. + + Type of the associated shadow + + + + Get ShadowAttribute from type. + + Type to get shadow attribute + The associated shadow attribute or null if no shadow attribute were found + + + + Gets the value. + + + + + Represents a 4x4 mathematical Matrix5x4. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The identity . + + + + + Value at row 1 column 1 of the Matrix5x4. + + + + + Value at row 1 column 2 of the Matrix5x4. + + + + + Value at row 1 column 3 of the Matrix5x4. + + + + + Value at row 1 column 4 of the Matrix5x4. + + + + + Value at row 2 column 1 of the Matrix5x4. + + + + + Value at row 2 column 2 of the Matrix5x4. + + + + + Value at row 2 column 3 of the Matrix5x4. + + + + + Value at row 2 column 4 of the Matrix5x4. + + + + + Value at row 3 column 1 of the Matrix5x4. + + + + + Value at row 3 column 2 of the Matrix5x4. + + + + + Value at row 3 column 3 of the Matrix5x4. + + + + + Value at row 3 column 4 of the Matrix5x4. + + + + + Value at row 4 column 1 of the Matrix5x4. + + + + + Value at row 4 column 2 of the Matrix5x4. + + + + + Value at row 4 column 3 of the Matrix5x4. + + + + + Value at row 4 column 4 of the Matrix5x4. + + + + + Value at row 5 column 1 of the Matrix5x4. + + + + + Value at row 5 column 2 of the Matrix5x4. + + + + + Value at row 5 column 3 of the Matrix5x4. + + + + + Value at row 5 column 4 of the Matrix5x4. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value to assign at row 1 column 1 of the Matrix5x4. + The value to assign at row 1 column 2 of the Matrix5x4. + The value to assign at row 1 column 3 of the Matrix5x4. + The value to assign at row 1 column 4 of the Matrix5x4. + The value to assign at row 2 column 1 of the Matrix5x4. + The value to assign at row 2 column 2 of the Matrix5x4. + The value to assign at row 2 column 3 of the Matrix5x4. + The value to assign at row 2 column 4 of the Matrix5x4. + The value to assign at row 3 column 1 of the Matrix5x4. + The value to assign at row 3 column 2 of the Matrix5x4. + The value to assign at row 3 column 3 of the Matrix5x4. + The value to assign at row 3 column 4 of the Matrix5x4. + The value to assign at row 4 column 1 of the Matrix5x4. + The value to assign at row 4 column 2 of the Matrix5x4. + The value to assign at row 4 column 3 of the Matrix5x4. + The value to assign at row 4 column 4 of the Matrix5x4. + The value to assign at row 5 column 1 of the Matrix5x4. + The value to assign at row 5 column 2 of the Matrix5x4. + The value to assign at row 5 column 3 of the Matrix5x4. + The value to assign at row 5 column 4 of the Matrix5x4. + + + + Initializes a new instance of the struct. + + The values to assign to the components of the Matrix5x4. This must be an array with sixteen elements. + Thrown when is null. + Thrown when contains more or less than sixteen elements. + + + + Determines the sum of two matrices. + + The first Matrix5x4 to add. + The second Matrix5x4 to add. + When the method completes, contains the sum of the two matrices. + + + + Determines the sum of two matrices. + + The first Matrix5x4 to add. + The second Matrix5x4 to add. + The sum of the two matrices. + + + + Determines the difference between two matrices. + + The first Matrix5x4 to subtract. + The second Matrix5x4 to subtract. + When the method completes, contains the difference between the two matrices. + + + + Determines the difference between two matrices. + + The first Matrix5x4 to subtract. + The second Matrix5x4 to subtract. + The difference between the two matrices. + + + + Scales a Matrix5x4 by the given value. + + The Matrix5x4 to scale. + The amount by which to scale. + When the method completes, contains the scaled Matrix5x4. + + + + Scales a Matrix5x4 by the given value. + + The Matrix5x4 to scale. + The amount by which to scale. + When the method completes, contains the scaled Matrix5x4. + + + + Negates a Matrix5x4. + + The Matrix5x4 to be negated. + When the method completes, contains the negated Matrix5x4. + + + + Negates a Matrix5x4. + + The Matrix5x4 to be negated. + The negated Matrix5x4. + + + + Performs a linear interpolation between two matrices. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two matrices. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two matrices. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two matrices. + + + + Performs a cubic interpolation between two matrices. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two matrices. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, y-axis and w-axis + + Scaling factor for all three axes. + When the method completes, contains the created scaling Matrix5x4. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + The created scaling Matrix5x4. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, z-axis and w-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + Scaling factor that is applied along the w-axis. + When the method completes, contains the created scaling Matrix5x4. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, z-axis and w-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + Scaling factor that is applied along the w-axis. + The created scaling Matrix5x4. + + + + Creates a Matrix5x4 that uniformly scales along all three axis. + + The uniform scale that is applied along all axis. + When the method completes, contains the created scaling Matrix5x4. + + + + Creates a Matrix5x4 that uniformly scales along all three axis. + + The uniform scale that is applied along all axis. + The created scaling Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + The offset for all three coordinate planes. + When the method completes, contains the created translation Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + The offset for all three coordinate planes. + The created translation Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + W-coordinate offset. + When the method completes, contains the created translation Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + W-coordinate offset. + The created translation Matrix5x4. + + + + Adds two matrices. + + The first Matrix5x4 to add. + The second Matrix5x4 to add. + The sum of the two matrices. + + + + Assert a Matrix5x4 (return it unchanged). + + The Matrix5x4 to assert (unchanged). + The asserted (unchanged) Matrix5x4. + + + + Subtracts two matrices. + + The first Matrix5x4 to subtract. + The second Matrix5x4 to subtract. + The difference between the two matrices. + + + + Negates a Matrix5x4. + + The Matrix5x4 to negate. + The negated Matrix5x4. + + + + Scales a Matrix5x4 by a given value. + + The Matrix5x4 to scale. + The amount by which to scale. + The scaled Matrix5x4. + + + + Scales a Matrix5x4 by a given value. + + The Matrix5x4 to scale. + The amount by which to scale. + The scaled Matrix5x4. + + + + Scales a Matrix5x4 by a given value. + + The Matrix5x4 to scale. + The amount by which to scale. + The scaled Matrix5x4. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Gets or sets the first row in the Matrix5x4; that is M11, M12, M13, and M14. + + + + + Gets or sets the second row in the Matrix5x4; that is M21, M22, M23, and M24. + + + + + Gets or sets the third row in the Matrix5x4; that is M31, M32, M33, and M34. + + + + + Gets or sets the fourth row in the Matrix5x4; that is M41, M42, M43, and M44. + + + + + Gets or sets the fifth row in the Matrix5x4; that is M51, M52, M53, and M54. + + + + + Gets or sets the translation of the Matrix5x4; that is M41, M42, and M43. + + + + + Gets or sets the scale of the Matrix5x4; that is M11, M22, and M33. + + + + + Gets a value indicating whether this instance is an identity Matrix5x4. + + + true if this instance is an identity Matrix5x4; otherwise, false. + + + + + Gets or sets the component at the specified index. + + The value of the Matrix5x4 component, depending on the index. + The zero-based index of the component to access. + The value of the component at the specified index. + Thrown when the is out of the range [0, 15]. + + + + Gets or sets the component at the specified index. + + The value of the Matrix5x4 component, depending on the index. + The row of the Matrix5x4 to access. + The column of the Matrix5x4 to access. + The value of the component at the specified index. + Thrown when the or is out of the range [0, 3]. + + + + Descriptor used to provide detailed message for a particular . + + + + + Initializes a new instance of the class. + + The HRESULT error code. + The module (ex: SharpDX.Direct2D1). + The API code (ex: D2D1_ERR_...). + The description of the result code if any. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + + + + Performs an implicit conversion from to . + + The result. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Registers a provider. + + Type of the descriptors provider. + + Providers are usually registered at module init when SharpDX assemblies are loaded. + + + + + Finds the specified result descriptor. + + The result code. + A descriptor for the specified result + + + + Gets the result. + + + + + Gets the HRESULT error code. + + The HRESULT error code. + + + + Gets the module (ex: SharpDX.Direct2D1) + + + + + Gets the native API code (ex: D2D1_ERR_ ...) + + + + + Gets the API code (ex: DemiceRemoved ...) + + + + + Gets the description of the result code if any. + + + + + Structure using the same layout than . + + + + + A zero size with (width, height) = (0,0) + + + + + A zero size with (width, height) = (0,0) + + + + + Initializes a new instance of the struct. + + The x. + The y. + + + + Width. + + + + + Height. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + + + + Structure using the same layout than . + + + + + A zero size with (width, height) = (0,0) + + + + + A zero size with (width, height) = (0,0) + + + + + Initializes a new instance of the struct. + + The x. + The y. + + + + Width. + + + + + Height. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + + + + Structure using the same layout than . + + + + + A point with (0,0) coordinates. + + + + + Initializes a new instance of the struct. + + The x. + The y. + + + + Left coordinate. + + + + + Top coordinate. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + + + + Helper class for PIX. + + + + + Marks the beginning of a user-defined event. PIX can use this event to trigger an action. + + The Event color. + The Event Name. + The zero-based level of the hierarchy that this event is starting in. If an error occurs, the return value will be negative. + D3DPERF_BeginEvent + + + + Marks the beginning of a user-defined event. PIX can use this event to trigger an action. + + The Event color. + The Event formatted Name. + The parameters to use for the formatted name. + + The zero-based level of the hierarchy that this event is starting in. If an error occurs, the return value will be negative. + + D3DPERF_BeginEvent + + + + Mark the end of a user-defined event. PIX can use this event to trigger an action. + + The level of the hierarchy in which the event is ending. If an error occurs, this value is negative. + D3DPERF_EndEvent + + + + Mark an instantaneous event. PIX can use this event to trigger an action. + + The color. + The name. + D3DPERF_SetMarker + + + + Mark an instantaneous event. PIX can use this event to trigger an action. + + The color. + The name to format. + The parameters to use to format the name. + D3DPERF_SetMarker + + + + Set this to false to notify PIX that the target program does not give permission to be profiled. + + if set to true PIX profiling is authorized. Default to true. + D3DPERF_SetOptions + + + + Gets a value indicating whether this instance is currently profiled by PIX. + + + true if this instance is currently profiled; otherwise, false. + + D3DPERF_GetStatus + + + + Windows File Helper. + + + + + Checks if the specified file path exists. + + The file path. + true if the specified file path exists, false otherwise + + + + Opens a binary file, reads the contents of the file into a byte array, and then closes the file. + + The file to open for reading. + A byte array containing the contents of the file. + + + + Opens a text file, reads all lines of the file, and then closes the file. + + The file to open for reading. + A string containing all lines of the file. + + + + Opens a text file, reads all lines of the file, and then closes the file. + + The file to open for reading. + The encoding. + The sharing. + A string containing all lines of the file. + + + + Gets the last write time access for the specified path. + + The path. + The last write time access + + + + Reads to a file. + + The file handle. + The buffer. + The number of bytes to read. + The number of bytes read. + The overlapped. + A Result + ReadFile + + + + Writes to a file. + + The file handle. + The buffer. + The number of bytes to read. + The number of bytes read. + The overlapped. + A Result + WriteFile + + + + Sets the file pointer. + + The handle. + The distance to move. + The distance to move high. + The seek origin. + + SetFilePointerEx + + + + Sets the end of file. + + The handle. + + SetEndOfFile + + + + Creates the file. + + Name of the file. + The desired access. + The share mode. + The security attributes. + The creation disposition. + The flags and attributes. + The template file. + A handle to the created file. IntPtr.Zero if failed. + CreateFile + + + + Gets the size of the file. + + The handle. + Size of the file. + + GetFileSizeEx + + + + Windows File Helper. + + + + + Initializes a new instance of the class. + + Name of the file. + The file mode. + The access mode. + The share mode. + + + + + + + + + + + + + + + + Reads a block of bytes from the stream and writes the data in a given buffer. + + When this method returns, contains the specified buffer with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The byte offset in array at which the read bytes will be placed. + The maximum number of bytes to read. + array is null. + The total number of bytes read into the buffer. This might be less than the number of bytes requested if that number of bytes are not currently available, or zero if the end of the stream is reached. + + + + + + + Writes a block of bytes to this stream using data from a buffer. + + The buffer containing data to write to the stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + + + + + + + + + + + + + + + + Native File access flags. + + + + + Read access. + + + + + Write access. + + + + + Read/Write Access, + + + + + Execute access. + + + + + All access + + + + + Native file attributes. + + + + + None attribute. + + + + + Read only attribute. + + + + + Hidden attribute. + + + + + System attribute. + + + + + Directory attribute. + + + + + Archive attribute. + + + + + Device attribute. + + + + + Normal attribute. + + + + + Temporary attribute. + + + + + Sparse file attribute. + + + + + ReparsePoint attribute. + + + + + Compressed attribute. + + + + + Offline attribute. + + + + + Not content indexed attribute. + + + + + Encrypted attribute. + + + + + Write through attribute. + + + + + Overlapped attribute. + + + + + No buffering attribute. + + + + + Random access attribute. + + + + + Sequential scan attribute. + + + + + Delete on close attribute. + + + + + Backup semantics attribute. + + + + + Post semantics attribute. + + + + + Open reparse point attribute. + + + + + Open no recall attribute. + + + + + First pipe instance attribute. + + + + + Native file creation disposition. + + + + + Creates a new file. The function fails if a specified file exists. + + + + + Creates a new file, always. + If a file exists, the function overwrites the file, clears the existing attributes, combines the specified file attributes, + and flags with FILE_ATTRIBUTE_ARCHIVE, but does not set the security descriptor that the SECURITY_ATTRIBUTES structure specifies. + + + + + Opens a file. The function fails if the file does not exist. + + + + + Opens a file, always. + If a file does not exist, the function creates a file as if dwCreationDisposition is CREATE_NEW. + + + + + Opens a file and truncates it so that its size is 0 (zero) bytes. The function fails if the file does not exist. + The calling process must open the file with the GENERIC_WRITE access right. + + + + + Native file share. + + + + + None flag. + + + + + Enables subsequent open operations on an object to request read access. + Otherwise, other processes cannot open the object if they request read access. + If this flag is not specified, but the object has been opened for read access, the function fails. + + + + + Enables subsequent open operations on an object to request write access. + Otherwise, other processes cannot open the object if they request write access. + If this flag is not specified, but the object has been opened for write access, the function fails. + + + + + Read and Write flags. + + + + + Enables subsequent open operations on an object to request delete access. + Otherwise, other processes cannot open the object if they request delete access. + If this flag is not specified, but the object has been opened for delete access, the function fails. + + + + + Direct2D Matrix3x2. Supports implicit cast from . + + + + + Gets the identity matrix. + + The identity matrix. + + + + Element (1,1) + + + + + Element (1,2) + + + + + Element (2,1) + + + + + Element (2,2) + + + + + Element (3,1) + + + + + Element (3,2) + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value to assign at row 1 column 1 of the matrix. + The value to assign at row 1 column 2 of the matrix. + The value to assign at row 2 column 1 of the matrix. + The value to assign at row 2 column 2 of the matrix. + The value to assign at row 3 column 1 of the matrix. + The value to assign at row 3 column 2 of the matrix. + + + + Initializes a new instance of the struct. + + The values to assign to the components of the matrix. This must be an array with six elements. + Thrown when is null. + Thrown when contains more or less than six elements. + + + + Creates an array containing the elements of the matrix. + + A sixteen-element array containing the components of the matrix. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + When the method completes, contains the sum of the two matrices. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + The sum of the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + When the method completes, contains the difference between the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Determines the quotient of two matrices. + + The first matrix to divide. + The second matrix to divide. + When the method completes, contains the quotient of the two matrices. + + + + Negates a matrix. + + The matrix to be negated. + When the method completes, contains the negated matrix. + + + + Negates a matrix. + + The matrix to be negated. + The negated matrix. + + + + Performs a linear interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two matrices. + + + + Performs a cubic interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two matrices. + + + + Creates a matrix that scales along the x-axis and y-axis. + + Scaling factor for both axes. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis and y-axis. + + Scaling factor for both axes. + The created scaling matrix. + + + + Creates a matrix that scales along the x-axis and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + The created scaling matrix. + + + + Creates a matrix that uniformly scales along both axes. + + The uniform scale that is applied along both axes. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that uniformly scales along both axes. + + The uniform scale that is applied along both axes. + The created scaling matrix. + + + + Creates a matrix that is scaling from a specified center. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + The center of the scaling. + The created scaling matrix. + + + + Creates a matrix that is scaling from a specified center. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + The center of the scaling. + The created scaling matrix. + + + + Calculates the determinant of this matrix. + + Result of the determinant. + + + + Creates a matrix that rotates. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis. + The created rotation matrix. + + + + Creates a matrix that rotates about a specified center. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis. + The center of the rotation. + The created rotation matrix. + + + + Creates a matrix that rotates about a specified center. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis. + The center of the rotation. + When the method completes, contains the created rotation matrix. + + + + Creates a transformation matrix. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis. + X-coordinate offset. + Y-coordinate offset. + When the method completes, contains the created transformation matrix. + + + + Creates a transformation matrix. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Angle of rotation in radians. + X-coordinate offset. + Y-coordinate offset. + The created transformation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for both coordinate planes. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for both coordinate planes. + The created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + The created translation matrix. + + + + Transforms a vector by this matrix. + + The matrix to use as a transformation matrix. + The original vector to apply the transformation. + The result of the transformation for the input vector. + + + + Transforms a vector by this matrix. + + The matrix to use as a transformation matrix. + The original vector to apply the transformation. + The result of the transformation for the input vector. + + + + + Calculates the inverse of this matrix instance. + + + + + Calculates the inverse of the specified matrix. + + The matrix whose inverse is to be calculated. + the inverse of the specified matrix. + + + + Creates a skew matrix. + + Angle of skew along the X-axis in radians. + Angle of skew along the Y-axis in radians. + The created skew matrix. + + + + Creates a skew matrix. + + Angle of skew along the X-axis in radians. + Angle of skew along the Y-axis in radians. + When the method completes, contains the created skew matrix. + + + + Calculates the inverse of the specified matrix. + + The matrix whose inverse is to be calculated. + When the method completes, contains the inverse of the specified matrix. + + + + Adds two matrices. + + The first matrix to add. + The second matrix to add. + The sum of the two matrices. + + + + Assert a matrix (return it unchanged). + + The matrix to assert (unchanged). + The asserted (unchanged) matrix. + + + + Subtracts two matrices. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matrices. + + + + Negates a matrix. + + The matrix to negate. + The negated matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Multiplies two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Divides two matrices. + + The first matrix to divide. + The second matrix to divide. + The quotient of the two matrices. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Performs an implicit conversion from to . + + The matrix. + The result of the conversion. + + + + Gets or sets the first row in the matrix; that is M11 and M12. + + + + + Gets or sets the second row in the matrix; that is M21 and M22. + + + + + Gets or sets the third row in the matrix; that is M31 and M32. + + + + + Gets or sets the first column in the matrix; that is M11, M21, and M31. + + + + + Gets or sets the second column in the matrix; that is M12, M22, and M32. + + + + + Gets or sets the translation of the matrix; that is M31 and M32. + + + + + Gets or sets the scale of the matrix; that is M11 and M22. + + + + + Gets a value indicating whether this instance is an identity matrix. + + + true if this instance is an identity matrix; otherwise, false. + + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The zero-based index of the component to access. + The value of the component at the specified index. + Thrown when the is out of the range [0, 5]. + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The row of the matrix to access. + The column of the matrix to access. + The value of the component at the specified index. + Thrown when the or is out of the range [0, 3]. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + The ShadowContainer is the main container used internally to keep references to all native COM/C++ callbacks. + It is stored in the property . + + + + + Contains static methods to help in determining intersections, containment, etc. + + + + + Determines the closest point between a point and a triangle. + + The point to test. + The first vertex to test. + The second vertex to test. + The third vertex to test. + When the method completes, contains the closest point between the two objects. + + + + Determines the closest point between a and a point. + + The plane to test. + The point to test. + When the method completes, contains the closest point between the two objects. + + + + Determines the closest point between a and a point. + + The box to test. + The point to test. + When the method completes, contains the closest point between the two objects. + + + + Determines the closest point between a and a point. + + + The point to test. + When the method completes, contains the closest point between the two objects; + or, if the point is directly in the center of the sphere, contains . + + + + Determines the closest point between a and a . + + The first sphere to test. + The second sphere to test. + When the method completes, contains the closest point between the two objects; + or, if the point is directly in the center of the sphere, contains . + + If the two spheres are overlapping, but not directly on top of each other, the closest point + is the 'closest' point of intersection. This can also be considered is the deepest point of + intersection. + + + + + Determines the distance between a and a point. + + The plane to test. + The point to test. + The distance between the two objects. + + + + Determines the distance between a and a point. + + The box to test. + The point to test. + The distance between the two objects. + + + + Determines the distance between a and a . + + The first box to test. + The second box to test. + The distance between the two objects. + + + + Determines the distance between a and a point. + + The sphere to test. + The point to test. + The distance between the two objects. + + + + Determines the distance between a and a . + + The first sphere to test. + The second sphere to test. + The distance between the two objects. + + + + Determines whether there is an intersection between a and a point. + + The ray to test. + The point to test. + Whether the two objects intersect. + + + + Determines whether there is an intersection between a and a . + + The first ray to test. + The second ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersect. + + This method performs a ray vs ray intersection test based on the following formula + from Goldman. + s = det([o_2 - o_1, d_2, d_1 x d_2]) / ||d_1 x d_2||^2 + t = det([o_2 - o_1, d_1, d_1 x d_2]) / ||d_1 x d_2||^2 + Where o_1 is the position of the first ray, o_2 is the position of the second ray, + d_1 is the normalized direction of the first ray, d_2 is the normalized direction + of the second ray, det denotes the determinant of a matrix, x denotes the cross + product, [ ] denotes a matrix, and || || denotes the length or magnitude of a vector. + + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The plane to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersect. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The plane to test + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a triangle. + + The ray to test. + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + This method tests if the ray intersects either the front or back of the triangle. + If the ray is parallel to the triangle's plane, no intersection is assumed to have + happened. If the intersection of the ray and the triangle is behind the origin of + the ray, no intersection is assumed to have happened. In both cases of assumptions, + this method returns false. + + + + + Determines whether there is an intersection between a and a triangle. + + The ray to test. + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The box to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The box to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The sphere to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The sphere to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a point. + + The plane to test. + The point to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The first plane to test. + The second plane to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The first plane to test. + The second plane to test. + When the method completes, contains the line of intersection + as a , or a zero ray if there was no intersection. + Whether the two objects intersected. + + Although a ray is set to have an origin, the ray returned by this method is really + a line in three dimensions which has no real origin. The ray is considered valid when + both the positive direction is used and when the negative direction is used. + + + + + Determines whether there is an intersection between a and a triangle. + + The plane to test. + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The plane to test. + The box to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The plane to test. + The sphere to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The first box to test. + The second box to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The box to test. + The sphere to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a triangle. + + The sphere to test. + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + First sphere to test. + Second sphere to test. + Whether the two objects intersected. + + + + Determines whether a contains a point. + + The box to test. + The point to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The first box to test. + The second box to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The box to test. + The sphere to test. + The type of containment the two objects have. + + + + Determines whether a contains a point. + + The sphere to test. + The point to test. + The type of containment the two objects have. + + + + Determines whether a contains a triangle. + + The sphere to test. + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The sphere to test. + The box to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The first sphere to test. + The second sphere to test. + The type of containment the two objects have. + + + + Represents a color in the form of rgb. + + + + + The Black color (0, 0, 0). + + + + + The White color (1, 1, 1, 1). + + + + + The red component of the color. + + + + + The green component of the color. + + + + + The blue component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue components of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all three color components in RGB order. + The alpha component is ignored. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue components of the color. This must be an array with three elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Converts the color into a packed integer. + + A packed integer containing all three color components. + The alpha channel is set to 255. + + + + Converts the color into a packed integer. + + A packed integer containing all three color components. + The alpha channel is set to 255. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Creates an array containing the elements of the color. + + A three-element array containing the components of the color. + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colors. + + + + Returns a color containing the largest components of the specified colors. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The color alpha. + The premultiplied result. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The color alpha. + The premultiplied color. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchanged). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel element (float) + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel element (float). + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Gets or sets the component at the specified index. + + The value of the red, green, or blue component, depending on the index. + The index of the component to access. Use 0 for the red component, 1 for the green component, and 2 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 2]. + + + + Represents a color in the form of rgba. + + + + + The Black color (0, 0, 0, 1). + + + + + The White color (1, 1, 1, 1). + + + + + The red component of the color. + + + + + The green component of the color. + + + + + The blue component of the color. + + + + + The alpha component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red, green, blue, and alpha components of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue components of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, blue, and alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Initializes a new instance of the struct. + + used to initialize the color. + + + + Initializes a new instance of the struct. + + used to initialize the color. + The alpha component of the color. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Converts the color into a four component vector. + + A four component vector containing all four color components. + + + + Creates an array containing the elements of the color. + + A four-element array containing the components of the color. + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colors. + + + + Returns a color containing the largest components of the specified colors. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The premultiplied result. + + + + Computes the premultiplied value of the provided color. + + The non-premultiplied value. + The premultiplied result. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchanged). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + + The result of the conversion. + + + + + Performs an explicit conversion from to . + + The value. + + The result of the conversion. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel (float). + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format to apply to each channel (float). + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Gets or sets the component at the specified index. + + The value of the red, green, blue, and alpha components, depending on the index. + The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Gets or sets the unmanaged callback. + + The unmanaged callback. + + This property is set whenever this instance has an unmanaged callback + registered. This callback must be disposed when disposing this instance. + + + + + Root IUnknown class to interop with COM object + + + + + Root class for all Cpp interop object. + + + + + The native pointer + + + + + Default constructor. + + Pointer to Cpp Object + + + + Initializes a new instance of the class. + + + + + Performs an explicit conversion from to . + + The CPP object. + + The result of the conversion. + + + + + Initializes this instance with a pointer from a temporary object and set the pointer of the temporary + object to IntPtr.Zero. + + The instance to get the NativePointer. + + + + Initializes this instance with a pointer from a temporary object and set the pointer of the temporary + object to IntPtr.Zero. + + The instance to get the NativePointer. + + + + Method called when is going to be update. + + + + + Method called when the is updated. + + + + + Instantiate a ComObject from a native pointer. + + The ComObject class that will be returned + The native pointer to a com object. + An instance of T binded to the native pointer + + + + Return the unmanaged C++ pointer from a instance. + + The type of the callback. + The callback. + A pointer to the unmanaged C++ object of the callback + + + + Gets or sets a custom user tag object to associate with this instance.. + + The tag object. + + + + Get a pointer to the underlying Cpp Object + + + + + Base interface for Component Object Model (COM). + + + + + Queries the supported COM interface on this instance. + + The guid of the interface. + The output COM object reference. + If successful, + + + + Increments the reference count for an interface on this instance. + + The method returns the new reference count. + + + + Decrements the reference count for an interface on this instance. + + The method returns the new reference count. + + + + Initializes a new instance of the class. + + Pointer to Cpp Object + + + + Initializes a new instance of the class from a IUnknown object. + + Reference to a IUnknown object + + + + Initializes a new instance of the class. + + + + + Query this instance for a particular COM GUID/interface support. + + GUID query interface + output object associated with this GUID, IntPtr.Zero in interface is not supported + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Query instance for a particular COM GUID/interface support. + + GUID query interface + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Compares 2 COM objects and return true if the native pointer is the same. + + The left. + The right. + true if the native pointer is the same, false otherwise + + + + Query this instance for a particular COM interface support. + + The type of the COM interface to query + An instance of the queried interface + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Query this instance for a particular COM interface support. + + The type of the COM interface to query + An instance of the queried interface + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Queries a managed object for a particular COM interface support (This method is a shortcut to ) + + The type of the COM interface to query + The managed COM object. + An instance of the queried interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Queries a managed object for a particular COM interface support (This method is a shortcut to ) + + The type of the COM interface to query + The managed COM object. + An instance of the queried interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Queries a managed object for a particular COM interface support. + + The type of the COM interface to query + The managed COM object. + An instance of the queried interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Queries a managed object for a particular COM interface support. + + The type of the COM interface to query + A pointer to a COM object. + An instance of the queried interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Query Interface for a particular interface support. + + An instance of the queried interface or null if it is not supported + + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Performs an explicit conversion from to . + + The native pointer. + + The result of the conversion. + + + + + Query Interface for a particular interface support and attach to the given instance. + + + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + ms682317 + IUnknown::Release + IUnknown::Release + + + + Base class for unmanaged callbackable Com object. + + + + + Initializes a new instance of the class. + + Pointer to Cpp Object + + + + Initializes a new instance of the class. + + + + + Implements but it cannot not be set. + This is only used to support for interop with unmanaged callback. + + + + + A COM Interface Callback + + + + + An Interface shadow callback + + + + + Initializes the specified shadow instance from a vtbl and a callback. + + The callback. + + + + Gets the callback. + + + + + Gets the VTBL associated with this shadow instance. + + + + + Default Constructor. + + number of methods to allocate in the VTBL + + + + Add a method supported by this interface. This method is typically called from inherited constructor. + + the managed delegate method + + + + Gets the pointer to the vtbl. + + + + + A compilation exception. + + + + + The base class for errors that occur in SharpDX. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The result code that caused this exception. + + + + Initializes a new instance of the class. + + The result descriptor. + + + + Initializes a new instance of the class. + + The error result code. + The message describing the exception. + + + + Initializes a new instance of the class. + + The error result code. + The message describing the exception. + formatting arguments + + + + Initializes a new instance of the class. + + The message describing the exception. + formatting arguments + + + + Initializes a new instance of the class. + + The message describing the exception. + The exception that caused this exception. + formatting arguments + + + + Gets the Result code for the exception. This value indicates + the specific type of failure that occurred within SharpDX. + + + + + Gets the Result code for the exception. This value indicates + the specific type of failure that occurred within SharpDX. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The error code. + The message. + + + + Global configuration. + + + + + Enables or disables object tracking. Default is disabled (false). + + + Object Tracking is used to track COM object lifecycle creation/dispose. When this option is enabled + objects can be tracked using . Using Object tracking has a significant + impact on performance and should be used only while debugging. + + + + + Enables or disables release of on finalizer. Default is disabled (false). + + + + + Enables or disables writing a warning via if a was disposed in the finalizer. Default is enabled (true). + + + + + Throws a when a shader or effect compilation error occurred. Default is enabled (true). + + + + + By default all objects in the process are tracked. + Use this property to track objects per thread. + + + + + Provides access to data organized in 3D. + + + + + Initializes a new instance of the struct. + + The datapointer. + The row pitch. + The slice pitch. + + + + Initializes a new instance of the struct. + + The data pointer. + + + + Pointer to the data. + + + + + Gets the number of bytes per row. + + + + + Gets the number of bytes per slice (for a 3D texture, a slice is a 2D image) + + + + + Gets a value indicating whether this instance is empty. + + true if this instance is empty; otherwise, false. + + + + Provides access to data organized in 2D. + + + + + Initializes a new instance of the class. + + The data pointer. + The pitch. + + + + Pointer to the data. + + + + + Gets the number of bytes per row. + + + + + Provides a stream interface to a buffer located in unmanaged memory. + + + + + Initializes a new instance of the class from a Blob buffer. + + The buffer. + + + + Initializes a new instance of the class, using a managed buffer as a backing store. + + + A managed array to be used as a backing store. + true if reading from the buffer should be allowed; otherwise, false. + true if writing to the buffer should be allowed; otherwise, false. + Index inside the buffer in terms of element count (not size in bytes). + True to keep the managed buffer and pin it, false will allocate unmanaged memory and make a copy of it. Default is true. + + + + + Initializes a new instance of the class, and allocates a new buffer to use as a backing store. + + The size of the buffer to be allocated, in bytes. + + true if reading from the buffer should be allowed; otherwise, false. + + true if writing to the buffer should be allowed; otherwise, false. + + + + Initializes a new instance of the class. + + The data pointer. + + + + Initializes a new instance of the class, using an unmanaged buffer as a backing store. + + A pointer to the buffer to be used as a backing store. + The size of the buffer provided, in bytes. + + true if reading from the buffer should be allowed; otherwise, false. + + true if writing to the buffer should be allowed; otherwise, false. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Not supported. + + Always thrown. + + + + Reads a single value from the current stream and advances the current + position within this stream by the number of bytes read. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the value to be read from the stream. + The value that was read. + This stream does not support reading. + + + + Reads a float. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + a float from the stream + + + + Reads a int. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an int from the stream + + + + Reads a short. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an short from the stream + + + + Reads a bool. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an bool from the stream + + + + Reads a Vector2. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Vector2 from the stream + + + + Reads a Vector3. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Vector3 from the stream + + + + Reads a Vector4. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Vector4 from the stream + + + + Reads a Color3. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Color3 from the stream + + + + Reads a Color4. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Color4 from the stream + + + + Reads a Half. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half from the stream + + + + Reads a Half2. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half2 from the stream + + + + Reads a Half3. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half3 from the stream + + + + Reads a Half4. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half4 from the stream + + + + Reads a Matrix. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + a Matrix from the stream + + + + Reads a Quaternion. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + a Quaternion from the stream + + + + + + + Reads a sequence of bytes from the current stream and advances the position + within the stream by the number of bytes read. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of values to be read from the stream. + The zero-based byte offset in buffer at which to begin storing + the data read from the current stream. + The maximum number of bytes to be read from the current stream. + The number of bytes read from the stream. + This stream does not support reading. + + + + Reads a sequence of bytes from the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies bytes from to the current stream. + The zero-based byte offset in at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Reads an array of values from the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the values to be read from the stream. + An array of values that was read from the current stream. + + + + Reads a sequence of elements from the current stream into a target buffer and + advances the position within the stream by the number of bytes read. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of values to be read from the stream. + The zero-based byte offset in buffer at which to begin storing + the data read from the current stream. + The number of values to be read from the current stream. + The number of bytes read from the stream. + This stream does not support reading. + + + + Sets the position within the current stream. + + Attempted to seek outside of the bounds of the stream. + + + + Not supported. + + Always ignored. + Always thrown. + + + + Writes a single value to the stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the value to be written to the stream. + The value to write to the stream. + The stream does not support writing. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes a sequence of bytes to the current stream and advances the current + position within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + This stream does not support writing. + + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies bytes from to the current stream. + The zero-based byte offset in at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Writes an array of values to the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of values to be written to the current stream. + This stream does not support writing. + + + + Writes a range of bytes to the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + A pointer to the location to start copying from. + The number of bytes to copy from source to the current stream. + This stream does not support writing. + + + + Writes an array of values to the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the values to be written to the stream. + An array of values to be written to the stream. + The zero-based offset in data at which to begin copying values to the current stream. + The number of values to be written to the current stream. If this is zero, + all of the contents will be written. + This stream does not support writing. + + + + Performs an explicit conversion from to . + + The from value. + The result of the conversion. + + + + Gets a value indicating whether the current stream supports reading. + + + true if the stream supports reading; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + Always true. + + + + Gets a value indicating whether the current stream supports writing. + + + true if the stream supports writing; otherwise, false. + + + + Gets the internal pointer to the current stream's backing store. + + An IntPtr to the buffer being used as a backing store. + + + + Gets the length in bytes of the stream. + + A long value representing the length of the stream in bytes. + + + + Gets or sets the position within the current stream. + + The current position within the stream. + Stream Class + + + + Gets the position pointer. + + The position pointer. + + + + Gets the length of the remaining. + + The length of the remaining. + + + + Provides methods to perform fast read/write random access data on a buffer located in an unmanaged memory. + + + This class doesn't validate the position read/write from. It is the responsibility of the client of this class + to verify that access is done within the size of the buffer. + + + + + Creates the specified user buffer. + + Type of the buffer. + The buffer to use as a DataBuffer. + Index inside the buffer in terms of element count (not size in bytes). + True to keep the managed buffer and pin it, false will allocate unmanaged memory and make a copy of it. Default is true. + An instance of a DataBuffer + + + + Initializes a new instance of the class, and allocates a new buffer to use as a backing store. + + The size of the buffer to be allocated, in bytes. + + is less than 1. + + + + Initializes a new instance of the class. + + The data pointer. + + + + Initializes a new instance of the class, using an unmanaged buffer as a backing store. + + A pointer to the buffer to be used as a backing store. + The size of the buffer provided, in bytes. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears the buffer. + + + + + Gets a single value from the current buffer at the specified position. + + Relative position in bytes from the beginning of the buffer to get the data from. + The type of the value to be read from the buffer. + The value that was read. + + + + Gets a single value from the current buffer at the specified position. + + The type of the value to be read from the buffer. + Relative position in bytes from the beginning of the buffer to get the data from. + The value as out. + The value that was read. + + + + Gets a float. + + Relative position in bytes from the beginning of the buffer to get the data from. + a float from the buffer + + + + Gets a int. + + Relative position in bytes from the beginning of the buffer to get the data from. + an int from the buffer + + + + Gets a short. + + Relative position in bytes from the beginning of the buffer to get the data from. + an short from the buffer + + + + Gets a bool. + + Relative position in bytes from the beginning of the buffer to get the data from. + an bool from the buffer + + + + Gets a Vector2. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Vector2 from the buffer + + + + Gets a Vector3. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Vector3 from the buffer + + + + Gets a Vector4. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Vector4 from the buffer + + + + Gets a Color3. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Color3 from the buffer + + + + Gets a Color4. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Color4 from the buffer + + + + Gets a Half. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half from the buffer + + + + Gets a Half2. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half2 from the buffer + + + + Gets a Half3. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half3 from the buffer + + + + Gets a Half4. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half4 from the buffer + + + + Gets a Matrix. + + Relative position in bytes from the beginning of the buffer to get the data from. + a Matrix from the buffer + + + + Gets a Quaternion. + + Relative position in bytes from the beginning of the buffer to get the data from. + a Quaternion from the buffer + + + + Gets an array of values from a position in the buffer. + + Relative position in bytes from the beginning of the buffer to get the data from. + number of T instance to get from the positionInBytes + The type of the values to be read from the buffer. + An array of values that was read from the current buffer. + + + + Gets a sequence of elements from a position in the buffer into a target buffer. + + Relative position in bytes from the beginning of the buffer to get the data from. + An array of values to be read from the buffer. + The zero-based byte offset in buffer at which to begin storing + the data read from the current buffer. + The number of values to be read from the current buffer. + + + + Sets a single value to the buffer at a specified position. + + The type of the value to be written to the buffer. + Relative position in bytes from the beginning of the buffer to set the data to. + The value to write to the buffer. + + + + Sets a single value to the buffer at a specified position. + + The type of the value to be written to the buffer. + Relative position in bytes from the beginning of the buffer to set the data to. + The value to write to the buffer. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets an array of values to a specified position into the buffer. + + Relative position in bytes from the beginning of the buffer to set the data to. + An array of values to be written to the current buffer. + + + + Sets a range of data to a specified position into the buffer. + + Relative position in bytes from the beginning of the buffer to set the data to. + A pointer to the location to start copying from. + The number of bytes to copy from source to the current buffer. + + + + Sets an array of values to a specified position into the buffer. + + The type of the values to be written to the buffer. + Relative position in bytes from the beginning of the buffer to set the data to. + An array of values to be written to the buffer. + The zero-based offset in data at which to begin copying values to the current buffer. + The number of values to be written to the current buffer. If this is zero, + all of the contents will be written. + + + + Performs an explicit conversion from to . + + The from value. + The result of the conversion. + + + + Gets a pointer to the buffer used as a backing store.. + + An IntPtr to the buffer being used as a backing store. + + + + Gets the length in bytes of the buffer. + + A long value representing the length of the buffer in bytes. + + + + Contains information about a tracked COM object. + + + + + Initializes a new instance of the class. + + The creation time. + The com object to track. + The stack trace. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the time the object was created. + + The creation time. + + + + Gets a weak reference to the tracked object. + + The weak reference to the tracked object. + + + + Gets the stack trace when the track object was created. + + The stack trace. + + + + Gets a value indicating whether the tracked object is alive. + + true if tracked object is alive; otherwise, false. + + + + Event args for used by . + + + + + The object being tracked/untracked. + + + + + Initializes a new instance of the class. + + The o. + + + + Track all allocated objects. + + + + + Initializes the class. + + + + + Called when [process exit]. + + The sender. + The instance containing the event data. + + + + Tracks the specified COM object. + + The COM object. + + + + Finds a list of object reference from a specified COM object pointer. + + The COM object pointer. + A list of object reference + + + + Finds the object reference for a specific COM object. + + The COM object. + An object reference + + + + Untracks the specified COM object. + + The COM object. + + + + Reports all COM object that are active and not yet disposed. + + + + + Reports all COM object that are active and not yet disposed. + + + + + Occurs when a ComObject is tracked. + + + + + Occurs when a ComObject is untracked. + + + + + Describes the type of angle. + + + + + Specifies an angle measurement in revolutions. + + + + + Specifies an angle measurement in degrees. + + + + + Specifies an angle measurement in radians. + + + + + Specifies an angle measurement in gradians. + + + + + Describes how one bounding volume contains another. + + + + + The two bounding volumes don't intersect at all. + + + + + One bounding volume completely contains another. + + + + + The two bounding volumes overlap. + + + + + Describes the result of an intersection with a plane in three dimensions. + + + + + The object is behind the plane. + + + + + The object is in front of the plane. + + + + + The object is intersecting the plane. + + + + + FunctionCallback + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + +

Driver type options.

+
+ +

The driver type is required when calling or .

+
+ + ff476328 + D3D_DRIVER_TYPE + D3D_DRIVER_TYPE +
+ + +

The driver type is unknown.

+
+ + ff476328 + D3D_DRIVER_TYPE_UNKNOWN + D3D_DRIVER_TYPE_UNKNOWN +
+ + +

A hardware driver, which implements Direct3D features in hardware. This is the primary driver that you should use in your Direct3D applications because it provides the best performance. A hardware driver uses hardware acceleration (on supported hardware) but can also use software for parts of the pipeline that are not supported in hardware. This driver type is often referred to as a hardware abstraction layer or HAL.

+
+ + ff476328 + D3D_DRIVER_TYPE_HARDWARE + D3D_DRIVER_TYPE_HARDWARE +
+ + +

A reference driver, which is a software implementation that supports every Direct3D feature. A reference driver is designed for accuracy rather than speed and as a result is slow but accurate. The rasterizer portion of the driver does make use of special CPU instructions whenever it can, but it is not intended for retail applications; use it only for feature testing, demonstration of functionality, debugging, or verifying bugs in other drivers. The reference device for this driver is installed by the Windows SDK 8.0 or later and is intended only as a debug aid for development purposes. This driver may be referred to as a REF driver, a reference driver, or a reference rasterizer.

Note??When you use the REF driver in Windows Store apps, the REF driver renders correctly but doesn't display any output on the screen. To verify bugs in hardware drivers for Windows Store apps, use for the WARP driver instead.

+
+ + ff476328 + D3D_DRIVER_TYPE_REFERENCE + D3D_DRIVER_TYPE_REFERENCE +
+ + +

A null driver, which is a reference driver without render capability. This driver is commonly used for debugging non-rendering API calls, it is not appropriate for retail applications. This driver is installed by the DirectX SDK.

+
+ + ff476328 + D3D_DRIVER_TYPE_NULL + D3D_DRIVER_TYPE_NULL +
+ + +

A software driver, which is a driver implemented completely in software. The software implementation is not intended for a high-performance application due to its very slow performance.

+
+ + ff476328 + D3D_DRIVER_TYPE_SOFTWARE + D3D_DRIVER_TYPE_SOFTWARE +
+ + +

A WARP driver, which is a high-performance software rasterizer. The rasterizer supports feature levels 9_1 through level 10_1 with a high performance software implementation. For information about limitations creating a WARP device on certain feature levels, see Limitations Creating WARP and Reference Devices. For more information about using a WARP driver, see Windows Advanced Rasterization Platform (WARP) In-Depth Guide.

Note??The WARP driver that Windows?8 includes supports feature levels 9_1 through level 11_1.

Note??The WARP driver that Windows?8.1 includes fully supports feature level 11_1, including tiled, IDXGIDevice3::Trim, shared BCn surfaces, minblend, and map default.

+
+ + ff476328 + D3D_DRIVER_TYPE_WARP + D3D_DRIVER_TYPE_WARP +
+ + +

Describes the set of features targeted by a Direct3D device.

+
+ +

For an overview of the capabilities of each feature level, see Overview For Each Feature Level.

For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.

+
+ + ff476329 + D3D_FEATURE_LEVEL + D3D_FEATURE_LEVEL +
+ + +

Targets features supported by feature level 9.1 including shader model 2.

+
+ + ff476329 + D3D_FEATURE_LEVEL_9_1 + D3D_FEATURE_LEVEL_9_1 +
+ + +

Targets features supported by feature level 9.2 including shader model 2.

+
+ + ff476329 + D3D_FEATURE_LEVEL_9_2 + D3D_FEATURE_LEVEL_9_2 +
+ + +

Targets features supported by feature level 9.3 including shader model 2.0b.

+
+ + ff476329 + D3D_FEATURE_LEVEL_9_3 + D3D_FEATURE_LEVEL_9_3 +
+ + +

Targets features supported by Direct3D 10.0 including shader model 4.

+
+ + ff476329 + D3D_FEATURE_LEVEL_10_0 + D3D_FEATURE_LEVEL_10_0 +
+ + +

Targets features supported by Direct3D 10.1 including shader model 4.

+
+ + ff476329 + D3D_FEATURE_LEVEL_10_1 + D3D_FEATURE_LEVEL_10_1 +
+ + +

Targets features supported by Direct3D 11.0 including shader model 5.

+
+ + ff476329 + D3D_FEATURE_LEVEL_11_0 + D3D_FEATURE_LEVEL_11_0 +
+ + +

Values that indicate how the pipeline interprets vertex data that is bound to the input-assembler stage. These primitive topology values determine how the vertex data is rendered on screen.

+
+ +

Use the method and a value from to bind a primitive topology to the input-assembler stage. Use the method to retrieve the primitive topology for the input-assembler stage.

The following diagram shows the various primitive types for a geometry shader object.

+
+ + ff728726 + D3D_PRIMITIVE_TOPOLOGY + D3D_PRIMITIVE_TOPOLOGY +
+ + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_UNDEFINED + D3D_PRIMITIVE_TOPOLOGY_UNDEFINED + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_POINTLIST + D3D_PRIMITIVE_TOPOLOGY_POINTLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_LINELIST + D3D_PRIMITIVE_TOPOLOGY_LINELIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ + D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + ff728726 + D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST + + + +

Values that identify the type of resource to be viewed as a shader resource.

+
+ +

A -typed value is specified in the ViewDimension member of the structure or the Dimension member of the structure.

+
+ + ff728736 + D3D_SRV_DIMENSION + D3D_SRV_DIMENSION +
+ + +

The type is unknown.

+
+ + ff728736 + D3D_SRV_DIMENSION_UNKNOWN + D3D_SRV_DIMENSION_UNKNOWN +
+ + +

The resource is a buffer.

+
+ + ff728736 + D3D_SRV_DIMENSION_BUFFER + D3D_SRV_DIMENSION_BUFFER +
+ + +

The resource is a 1D texture.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURE1D + D3D_SRV_DIMENSION_TEXTURE1D +
+ + +

The resource is an array of 1D textures.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURE1DARRAY + D3D_SRV_DIMENSION_TEXTURE1DARRAY +
+ + +

The resource is a 2D texture.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURE2D + D3D_SRV_DIMENSION_TEXTURE2D +
+ + +

The resource is an array of 2D textures.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURE2DARRAY + D3D_SRV_DIMENSION_TEXTURE2DARRAY +
+ + +

The resource is a multisampling 2D texture.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURE2DMS + D3D_SRV_DIMENSION_TEXTURE2DMS +
+ + +

The resource is an array of multisampling 2D textures.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURE2DMSARRAY + D3D_SRV_DIMENSION_TEXTURE2DMSARRAY +
+ + +

The resource is a 3D texture.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURE3D + D3D_SRV_DIMENSION_TEXTURE3D +
+ + +

The resource is a cube texture.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURECUBE + D3D_SRV_DIMENSION_TEXTURECUBE +
+ + +

The resource is an array of cube textures.

+
+ + ff728736 + D3D_SRV_DIMENSION_TEXTURECUBEARRAY + D3D_SRV_DIMENSION_TEXTURECUBEARRAY +
+ + +

The resource is a raw buffer. For more info about raw viewing of buffers, see Raw Views of Buffers.

+
+ + ff728736 + D3D_SRV_DIMENSION_BUFFEREX + D3D_SRV_DIMENSION_BUFFEREX +
+ + + Functions + + + + + Constant DebugObjectName. + WKPDID_D3DDebugObjectName + + + + Functions + + + + + +

Creates a buffer.

+
+

Number of bytes in the blob.

+

The address of a reference to the ID3DBlob interface that is used to retrieve the buffer.

+

Returns one of the Direct3D 11 return codes.

+ +

The latest D3dcompiler_nn.dll contains the compiler function. Therefore, you are no longer required to create and use an arbitrary length data buffer by using the D3D10CreateBlob function that is contained in D3d10.dll.

Windows Phone 8.1: This API is supported.

+
+ + ff728672 + HRESULT D3DCreateBlob([In] SIZE_T Size,[Out, Fast] ID3D10Blob** ppBlob) + D3DCreateBlob +
+ + +

This interface is used to return arbitrary length data.

+
+ +

An is obtained by calling D3D10CreateBlob.

The ID3DBlob interface is type defined in the D3DCommon.h header file as a interface, which is fully defined in the D3DCommon.h header file. ID3DBlob is version neutral and can be used in code for any Direct3D version.

Blobs can be used as a data buffer, storing vertex, adjacency, and material information during mesh optimization and loading operations. Also, these objects are used to return object code and error messages in APIs that compile vertex, geometry and pixel shaders.

+
+ + bb173507 + ID3D10Blob + ID3D10Blob +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Get a reference to the data.

+
+

Returns a reference.

+ + bb173508 + void* ID3D10Blob::GetBufferPointer() + ID3D10Blob::GetBufferPointer +
+ + +

Get the size.

+
+

The size of the data, in bytes.

+ + bb173509 + SIZE_T ID3D10Blob::GetBufferSize() + ID3D10Blob::GetBufferSize +
+ + +

Get a reference to the data.

+
+ + bb173508 + GetBufferPointer + GetBufferPointer + void* ID3D10Blob::GetBufferPointer() +
+ + +

Get the size.

+
+ + bb173509 + GetBufferSize + GetBufferSize + SIZE_T ID3D10Blob::GetBufferSize() +
+ + +

A multithread interface accesses multithread settings and can only be used if the thread-safe layer is turned on.

+
+ +

This interface is obtained by querying it from the Interface using IUnknown::QueryInterface.

+
+ + bb173816 + ID3D10Multithread + ID3D10Multithread +
+ + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

Enter a device's critical section.

+
+ +

Entering a device's critical section prevents other threads from simultaneously calling that device's methods (if multithread protection is set to true), calling DXGI methods, and calling the methods of all resource, view, shader, state, and asynchronous interfaces.

This function should be used in multithreaded applications when there is a series of graphics commands that must happen in order. This function is typically called at the beginning of the series of graphics commands, and is typically called after those graphics commands.

+
+ + bb173817 + void ID3D10Multithread::Enter() + ID3D10Multithread::Enter +
+ + +

Leave a device's critical section.

+
+ +

This function is typically used in multithreaded applications when there is a series of graphics commands that must happen in order. is typically called at the beginning of a series of graphics commands, and this function is typically called after those graphics commands.

+
+ + bb173819 + void ID3D10Multithread::Leave() + ID3D10Multithread::Leave +
+ + +

Turn multithreading on or off.

+
+

True to turn multithreading on, false to turn it off.

+

True if multithreading was turned on prior to calling this method, false otherwise.

+ + bb173820 + BOOL ID3D10Multithread::SetMultithreadProtected([In] BOOL bMTProtect) + ID3D10Multithread::SetMultithreadProtected +
+ + +

Find out if multithreading is turned on or not.

+
+

Whether or not multithreading is turned on. True means on, false means off.

+ + bb173818 + BOOL ID3D10Multithread::GetMultithreadProtected() + ID3D10Multithread::GetMultithreadProtected +
+ + +

Defines a shader macro.

+
+ +

You can use shader macros in your shaders. The structure defines a single shader macro as shown in the following example:

  Shader_Macros[1] = { "zero", "0"  };	
+            

The following shader or effect creation functions take an array of shader macros as an input parameter:

  • D3D10CompileShader
  • D3DX10PreprocessShaderFromFile
  • D3DX11CreateAsyncShaderPreprocessProcessor
+
+ + ff728732 + D3D_SHADER_MACRO + D3D_SHADER_MACRO +
+ + +

The macro name.

+
+ + ff728732 + const char* Name + char Name +
+ + +

The macro definition.

+
+ + ff728732 + const char* Definition + char Definition +
+ + + Initializes a new instance of the struct. + + + The name. + + + The definition. + + + + + No documentation. + + + SPEAKER_FLAGS + SPEAKER_FLAGS + + + + No documentation. + + + SPEAKER_FRONT_LEFT + SPEAKER_FRONT_LEFT + + + + No documentation. + + + SPEAKER_FRONT_RIGHT + SPEAKER_FRONT_RIGHT + + + + No documentation. + + + SPEAKER_FRONT_CENTER + SPEAKER_FRONT_CENTER + + + + No documentation. + + + SPEAKER_LOW_FREQUENCY + SPEAKER_LOW_FREQUENCY + + + + No documentation. + + + SPEAKER_BACK_LEFT + SPEAKER_BACK_LEFT + + + + No documentation. + + + SPEAKER_BACK_RIGHT + SPEAKER_BACK_RIGHT + + + + No documentation. + + + SPEAKER_FRONT_LEFT_OF_CENTER + SPEAKER_FRONT_LEFT_OF_CENTER + + + + No documentation. + + + SPEAKER_FRONT_RIGHT_OF_CENTER + SPEAKER_FRONT_RIGHT_OF_CENTER + + + + No documentation. + + + SPEAKER_BACK_CENTER + SPEAKER_BACK_CENTER + + + + No documentation. + + + SPEAKER_SIDE_LEFT + SPEAKER_SIDE_LEFT + + + + No documentation. + + + SPEAKER_SIDE_RIGHT + SPEAKER_SIDE_RIGHT + + + + No documentation. + + + SPEAKER_TOP_CENTER + SPEAKER_TOP_CENTER + + + + No documentation. + + + SPEAKER_TOP_FRONT_LEFT + SPEAKER_TOP_FRONT_LEFT + + + + No documentation. + + + SPEAKER_TOP_FRONT_CENTER + SPEAKER_TOP_FRONT_CENTER + + + + No documentation. + + + SPEAKER_TOP_FRONT_RIGHT + SPEAKER_TOP_FRONT_RIGHT + + + + No documentation. + + + SPEAKER_TOP_BACK_LEFT + SPEAKER_TOP_BACK_LEFT + + + + No documentation. + + + SPEAKER_TOP_BACK_CENTER + SPEAKER_TOP_BACK_CENTER + + + + No documentation. + + + SPEAKER_TOP_BACK_RIGHT + SPEAKER_TOP_BACK_RIGHT + + + + No documentation. + + + SPEAKER_RESERVED + SPEAKER_RESERVED + + + + No documentation. + + + SPEAKER_ALL + SPEAKER_ALL + + + + No documentation. + + + SPEAKER_MONO + SPEAKER_MONO + + + + No documentation. + + + SPEAKER_STEREO + SPEAKER_STEREO + + + + No documentation. + + + SPEAKER_2POINT1 + SPEAKER_2POINT1 + + + + No documentation. + + + SPEAKER_SURROUND + SPEAKER_SURROUND + + + + No documentation. + + + SPEAKER_QUAD + SPEAKER_QUAD + + + + No documentation. + + + SPEAKER_4POINT1 + SPEAKER_4POINT1 + + + + No documentation. + + + SPEAKER_5POINT1 + SPEAKER_5POINT1 + + + + No documentation. + + + SPEAKER_7POINT1 + SPEAKER_7POINT1 + + + + No documentation. + + + SPEAKER_5POINT1_SURROUND + SPEAKER_5POINT1_SURROUND + + + + No documentation. + + + SPEAKER_7POINT1_SURROUND + SPEAKER_7POINT1_SURROUND + + + + None. + + + None + None + + + + No documentation. + + + ff539946 + HID_USAGE_ID + HID_USAGE_ID + + + +

Aliased

+
+ + ff539946 + HID_USAGE_GENERIC_POINTER + HID_USAGE_GENERIC_POINTER +
+ + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_MOUSE + HID_USAGE_GENERIC_MOUSE + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_JOYSTICK + HID_USAGE_GENERIC_JOYSTICK + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_GAMEPAD + HID_USAGE_GENERIC_GAMEPAD + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_KEYBOARD + HID_USAGE_GENERIC_KEYBOARD + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_KEYPAD + HID_USAGE_GENERIC_KEYPAD + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSTEM_CTL + HID_USAGE_GENERIC_SYSTEM_CTL + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_X + HID_USAGE_GENERIC_X + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_Y + HID_USAGE_GENERIC_Y + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_Z + HID_USAGE_GENERIC_Z + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_RX + HID_USAGE_GENERIC_RX + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_RY + HID_USAGE_GENERIC_RY + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_RZ + HID_USAGE_GENERIC_RZ + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SLIDER + HID_USAGE_GENERIC_SLIDER + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_DIAL + HID_USAGE_GENERIC_DIAL + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_WHEEL + HID_USAGE_GENERIC_WHEEL + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_HATSWITCH + HID_USAGE_GENERIC_HATSWITCH + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_COUNTED_BUFFER + HID_USAGE_GENERIC_COUNTED_BUFFER + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_BYTE_COUNT + HID_USAGE_GENERIC_BYTE_COUNT + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_MOTION_WAKEUP + HID_USAGE_GENERIC_MOTION_WAKEUP + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_VX + HID_USAGE_GENERIC_VX + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_VY + HID_USAGE_GENERIC_VY + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_VZ + HID_USAGE_GENERIC_VZ + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_VBRX + HID_USAGE_GENERIC_VBRX + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_VBRY + HID_USAGE_GENERIC_VBRY + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_VBRZ + HID_USAGE_GENERIC_VBRZ + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_VNO + HID_USAGE_GENERIC_VNO + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_POWER + HID_USAGE_GENERIC_SYSCTL_POWER + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_SLEEP + HID_USAGE_GENERIC_SYSCTL_SLEEP + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_WAKE + HID_USAGE_GENERIC_SYSCTL_WAKE + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU + HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_MAIN_MENU + HID_USAGE_GENERIC_SYSCTL_MAIN_MENU + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_APP_MENU + HID_USAGE_GENERIC_SYSCTL_APP_MENU + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_HELP_MENU + HID_USAGE_GENERIC_SYSCTL_HELP_MENU + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_MENU_EXIT + HID_USAGE_GENERIC_SYSCTL_MENU_EXIT + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_MENU_SELECT + HID_USAGE_GENERIC_SYSCTL_MENU_SELECT + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT + HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_MENU_LEFT + HID_USAGE_GENERIC_SYSCTL_MENU_LEFT + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_MENU_UP + HID_USAGE_GENERIC_SYSCTL_MENU_UP + + + + No documentation. + + + ff539946 + HID_USAGE_GENERIC_SYSCTL_MENU_DOWN + HID_USAGE_GENERIC_SYSCTL_MENU_DOWN + + + + No documentation. + + + ff539946 + HID_USAGE_SIMULATION_RUDDER + HID_USAGE_SIMULATION_RUDDER + + + + No documentation. + + + ff539946 + HID_USAGE_SIMULATION_THROTTLE + HID_USAGE_SIMULATION_THROTTLE + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_NOEVENT + HID_USAGE_KEYBOARD_NOEVENT + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_ROLLOVER + HID_USAGE_KEYBOARD_ROLLOVER + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_POSTFAIL + HID_USAGE_KEYBOARD_POSTFAIL + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_UNDEFINED + HID_USAGE_KEYBOARD_UNDEFINED + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_aA + HID_USAGE_KEYBOARD_aA + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_zZ + HID_USAGE_KEYBOARD_zZ + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_ONE + HID_USAGE_KEYBOARD_ONE + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_ZERO + HID_USAGE_KEYBOARD_ZERO + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_LCTRL + HID_USAGE_KEYBOARD_LCTRL + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_LSHFT + HID_USAGE_KEYBOARD_LSHFT + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_LALT + HID_USAGE_KEYBOARD_LALT + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_LGUI + HID_USAGE_KEYBOARD_LGUI + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_RCTRL + HID_USAGE_KEYBOARD_RCTRL + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_RSHFT + HID_USAGE_KEYBOARD_RSHFT + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_RALT + HID_USAGE_KEYBOARD_RALT + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_RGUI + HID_USAGE_KEYBOARD_RGUI + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_SCROLL_LOCK + HID_USAGE_KEYBOARD_SCROLL_LOCK + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_NUM_LOCK + HID_USAGE_KEYBOARD_NUM_LOCK + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_CAPS_LOCK + HID_USAGE_KEYBOARD_CAPS_LOCK + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_F1 + HID_USAGE_KEYBOARD_F1 + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_F12 + HID_USAGE_KEYBOARD_F12 + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_RETURN + HID_USAGE_KEYBOARD_RETURN + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_ESCAPE + HID_USAGE_KEYBOARD_ESCAPE + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_DELETE + HID_USAGE_KEYBOARD_DELETE + + + + No documentation. + + + ff539946 + HID_USAGE_KEYBOARD_PRINT_SCREEN + HID_USAGE_KEYBOARD_PRINT_SCREEN + + + + No documentation. + + + ff539946 + HID_USAGE_LED_NUM_LOCK + HID_USAGE_LED_NUM_LOCK + + + + No documentation. + + + ff539946 + HID_USAGE_LED_CAPS_LOCK + HID_USAGE_LED_CAPS_LOCK + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SCROLL_LOCK + HID_USAGE_LED_SCROLL_LOCK + + + + No documentation. + + + ff539946 + HID_USAGE_LED_COMPOSE + HID_USAGE_LED_COMPOSE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_KANA + HID_USAGE_LED_KANA + + + + No documentation. + + + ff539946 + HID_USAGE_LED_POWER + HID_USAGE_LED_POWER + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SHIFT + HID_USAGE_LED_SHIFT + + + + No documentation. + + + ff539946 + HID_USAGE_LED_DO_NOT_DISTURB + HID_USAGE_LED_DO_NOT_DISTURB + + + + No documentation. + + + ff539946 + HID_USAGE_LED_MUTE + HID_USAGE_LED_MUTE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_TONE_ENABLE + HID_USAGE_LED_TONE_ENABLE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_HIGH_CUT_FILTER + HID_USAGE_LED_HIGH_CUT_FILTER + + + + No documentation. + + + ff539946 + HID_USAGE_LED_LOW_CUT_FILTER + HID_USAGE_LED_LOW_CUT_FILTER + + + + No documentation. + + + ff539946 + HID_USAGE_LED_EQUALIZER_ENABLE + HID_USAGE_LED_EQUALIZER_ENABLE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SOUND_FIELD_ON + HID_USAGE_LED_SOUND_FIELD_ON + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SURROUND_FIELD_ON + HID_USAGE_LED_SURROUND_FIELD_ON + + + + No documentation. + + + ff539946 + HID_USAGE_LED_REPEAT + HID_USAGE_LED_REPEAT + + + + No documentation. + + + ff539946 + HID_USAGE_LED_STEREO + HID_USAGE_LED_STEREO + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SAMPLING_RATE_DETECT + HID_USAGE_LED_SAMPLING_RATE_DETECT + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SPINNING + HID_USAGE_LED_SPINNING + + + + No documentation. + + + ff539946 + HID_USAGE_LED_CAV + HID_USAGE_LED_CAV + + + + No documentation. + + + ff539946 + HID_USAGE_LED_CLV + HID_USAGE_LED_CLV + + + + No documentation. + + + ff539946 + HID_USAGE_LED_RECORDING_FORMAT_DET + HID_USAGE_LED_RECORDING_FORMAT_DET + + + + No documentation. + + + ff539946 + HID_USAGE_LED_OFF_HOOK + HID_USAGE_LED_OFF_HOOK + + + + No documentation. + + + ff539946 + HID_USAGE_LED_RING + HID_USAGE_LED_RING + + + + No documentation. + + + ff539946 + HID_USAGE_LED_MESSAGE_WAITING + HID_USAGE_LED_MESSAGE_WAITING + + + + No documentation. + + + ff539946 + HID_USAGE_LED_DATA_MODE + HID_USAGE_LED_DATA_MODE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_BATTERY_OPERATION + HID_USAGE_LED_BATTERY_OPERATION + + + + No documentation. + + + ff539946 + HID_USAGE_LED_BATTERY_OK + HID_USAGE_LED_BATTERY_OK + + + + No documentation. + + + ff539946 + HID_USAGE_LED_BATTERY_LOW + HID_USAGE_LED_BATTERY_LOW + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SPEAKER + HID_USAGE_LED_SPEAKER + + + + No documentation. + + + ff539946 + HID_USAGE_LED_HEAD_SET + HID_USAGE_LED_HEAD_SET + + + + No documentation. + + + ff539946 + HID_USAGE_LED_HOLD + HID_USAGE_LED_HOLD + + + + No documentation. + + + ff539946 + HID_USAGE_LED_MICROPHONE + HID_USAGE_LED_MICROPHONE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_COVERAGE + HID_USAGE_LED_COVERAGE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_NIGHT_MODE + HID_USAGE_LED_NIGHT_MODE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SEND_CALLS + HID_USAGE_LED_SEND_CALLS + + + + No documentation. + + + ff539946 + HID_USAGE_LED_CALL_PICKUP + HID_USAGE_LED_CALL_PICKUP + + + + No documentation. + + + ff539946 + HID_USAGE_LED_CONFERENCE + HID_USAGE_LED_CONFERENCE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_STAND_BY + HID_USAGE_LED_STAND_BY + + + + No documentation. + + + ff539946 + HID_USAGE_LED_CAMERA_ON + HID_USAGE_LED_CAMERA_ON + + + + No documentation. + + + ff539946 + HID_USAGE_LED_CAMERA_OFF + HID_USAGE_LED_CAMERA_OFF + + + + No documentation. + + + ff539946 + HID_USAGE_LED_ON_LINE + HID_USAGE_LED_ON_LINE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_OFF_LINE + HID_USAGE_LED_OFF_LINE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_BUSY + HID_USAGE_LED_BUSY + + + + No documentation. + + + ff539946 + HID_USAGE_LED_READY + HID_USAGE_LED_READY + + + + No documentation. + + + ff539946 + HID_USAGE_LED_PAPER_OUT + HID_USAGE_LED_PAPER_OUT + + + + No documentation. + + + ff539946 + HID_USAGE_LED_PAPER_JAM + HID_USAGE_LED_PAPER_JAM + + + + No documentation. + + + ff539946 + HID_USAGE_LED_REMOTE + HID_USAGE_LED_REMOTE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_FORWARD + HID_USAGE_LED_FORWARD + + + + No documentation. + + + ff539946 + HID_USAGE_LED_REVERSE + HID_USAGE_LED_REVERSE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_STOP + HID_USAGE_LED_STOP + + + + No documentation. + + + ff539946 + HID_USAGE_LED_REWIND + HID_USAGE_LED_REWIND + + + + No documentation. + + + ff539946 + HID_USAGE_LED_FAST_FORWARD + HID_USAGE_LED_FAST_FORWARD + + + + No documentation. + + + ff539946 + HID_USAGE_LED_PLAY + HID_USAGE_LED_PLAY + + + + No documentation. + + + ff539946 + HID_USAGE_LED_PAUSE + HID_USAGE_LED_PAUSE + + + + No documentation. + + + ff539946 + HID_USAGE_LED_RECORD + HID_USAGE_LED_RECORD + + + + No documentation. + + + ff539946 + HID_USAGE_LED_ERROR + HID_USAGE_LED_ERROR + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SELECTED_INDICATOR + HID_USAGE_LED_SELECTED_INDICATOR + + + + No documentation. + + + ff539946 + HID_USAGE_LED_IN_USE_INDICATOR + HID_USAGE_LED_IN_USE_INDICATOR + + + + No documentation. + + + ff539946 + HID_USAGE_LED_MULTI_MODE_INDICATOR + HID_USAGE_LED_MULTI_MODE_INDICATOR + + + + No documentation. + + + ff539946 + HID_USAGE_LED_INDICATOR_ON + HID_USAGE_LED_INDICATOR_ON + + + + No documentation. + + + ff539946 + HID_USAGE_LED_INDICATOR_FLASH + HID_USAGE_LED_INDICATOR_FLASH + + + + No documentation. + + + ff539946 + HID_USAGE_LED_INDICATOR_SLOW_BLINK + HID_USAGE_LED_INDICATOR_SLOW_BLINK + + + + No documentation. + + + ff539946 + HID_USAGE_LED_INDICATOR_FAST_BLINK + HID_USAGE_LED_INDICATOR_FAST_BLINK + + + + No documentation. + + + ff539946 + HID_USAGE_LED_INDICATOR_OFF + HID_USAGE_LED_INDICATOR_OFF + + + + No documentation. + + + ff539946 + HID_USAGE_LED_FLASH_ON_TIME + HID_USAGE_LED_FLASH_ON_TIME + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SLOW_BLINK_ON_TIME + HID_USAGE_LED_SLOW_BLINK_ON_TIME + + + + No documentation. + + + ff539946 + HID_USAGE_LED_SLOW_BLINK_OFF_TIME + HID_USAGE_LED_SLOW_BLINK_OFF_TIME + + + + No documentation. + + + ff539946 + HID_USAGE_LED_FAST_BLINK_ON_TIME + HID_USAGE_LED_FAST_BLINK_ON_TIME + + + + No documentation. + + + ff539946 + HID_USAGE_LED_FAST_BLINK_OFF_TIME + HID_USAGE_LED_FAST_BLINK_OFF_TIME + + + + No documentation. + + + ff539946 + HID_USAGE_LED_INDICATOR_COLOR + HID_USAGE_LED_INDICATOR_COLOR + + + + No documentation. + + + ff539946 + HID_USAGE_LED_RED + HID_USAGE_LED_RED + + + + No documentation. + + + ff539946 + HID_USAGE_LED_GREEN + HID_USAGE_LED_GREEN + + + + No documentation. + + + ff539946 + HID_USAGE_LED_AMBER + HID_USAGE_LED_AMBER + + + + No documentation. + + + ff539946 + HID_USAGE_LED_GENERIC_INDICATOR + HID_USAGE_LED_GENERIC_INDICATOR + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_PHONE + HID_USAGE_TELEPHONY_PHONE + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_ANSWERING_MACHINE + HID_USAGE_TELEPHONY_ANSWERING_MACHINE + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_MESSAGE_CONTROLS + HID_USAGE_TELEPHONY_MESSAGE_CONTROLS + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_HANDSET + HID_USAGE_TELEPHONY_HANDSET + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_HEADSET + HID_USAGE_TELEPHONY_HEADSET + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_KEYPAD + HID_USAGE_TELEPHONY_KEYPAD + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON + HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_REDIAL + HID_USAGE_TELEPHONY_REDIAL + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_TRANSFER + HID_USAGE_TELEPHONY_TRANSFER + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_DROP + HID_USAGE_TELEPHONY_DROP + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_LINE + HID_USAGE_TELEPHONY_LINE + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_RING_ENABLE + HID_USAGE_TELEPHONY_RING_ENABLE + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_SEND + HID_USAGE_TELEPHONY_SEND + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_KEYPAD_0 + HID_USAGE_TELEPHONY_KEYPAD_0 + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_KEYPAD_D + HID_USAGE_TELEPHONY_KEYPAD_D + + + + No documentation. + + + ff539946 + HID_USAGE_TELEPHONY_HOST_AVAILABLE + HID_USAGE_TELEPHONY_HOST_AVAILABLE + + + + No documentation. + + + ff539946 + HID_USAGE_MS_BTH_HF_DIALNUMBER + HID_USAGE_MS_BTH_HF_DIALNUMBER + + + + No documentation. + + + ff539946 + HID_USAGE_MS_BTH_HF_DIALMEMORY + HID_USAGE_MS_BTH_HF_DIALMEMORY + + + + No documentation. + + + ff539946 + HID_USAGE_CONSUMERCTRL + HID_USAGE_CONSUMERCTRL + + + + No documentation. + + + ff539946 + HID_USAGE_DIGITIZER_PEN + HID_USAGE_DIGITIZER_PEN + + + + No documentation. + + + ff539946 + HID_USAGE_DIGITIZER_IN_RANGE + HID_USAGE_DIGITIZER_IN_RANGE + + + + No documentation. + + + ff539946 + HID_USAGE_DIGITIZER_TIP_SWITCH + HID_USAGE_DIGITIZER_TIP_SWITCH + + + + No documentation. + + + ff539946 + HID_USAGE_DIGITIZER_BARREL_SWITCH + HID_USAGE_DIGITIZER_BARREL_SWITCH + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE + HID_USAGE_PAGE + + + +

Aliased

+
+ + ff539946 + HID_USAGE_PAGE_UNDEFINED + HID_USAGE_PAGE_UNDEFINED +
+ + + No documentation. + + + ff539946 + HID_USAGE_PAGE_GENERIC + HID_USAGE_PAGE_GENERIC + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_SIMULATION + HID_USAGE_PAGE_SIMULATION + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_VR + HID_USAGE_PAGE_VR + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_SPORT + HID_USAGE_PAGE_SPORT + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_GAME + HID_USAGE_PAGE_GAME + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_KEYBOARD + HID_USAGE_PAGE_KEYBOARD + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_LED + HID_USAGE_PAGE_LED + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_BUTTON + HID_USAGE_PAGE_BUTTON + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_ORDINAL + HID_USAGE_PAGE_ORDINAL + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_TELEPHONY + HID_USAGE_PAGE_TELEPHONY + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_CONSUMER + HID_USAGE_PAGE_CONSUMER + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_DIGITIZER + HID_USAGE_PAGE_DIGITIZER + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_UNICODE + HID_USAGE_PAGE_UNICODE + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_ALPHANUMERIC + HID_USAGE_PAGE_ALPHANUMERIC + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE + HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_MEDICAL + HID_USAGE_PAGE_MEDICAL + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_MONITOR_PAGE0 + HID_USAGE_PAGE_MONITOR_PAGE0 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_MONITOR_PAGE1 + HID_USAGE_PAGE_MONITOR_PAGE1 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_MONITOR_PAGE2 + HID_USAGE_PAGE_MONITOR_PAGE2 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_MONITOR_PAGE3 + HID_USAGE_PAGE_MONITOR_PAGE3 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_POWER_PAGE0 + HID_USAGE_PAGE_POWER_PAGE0 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_POWER_PAGE1 + HID_USAGE_PAGE_POWER_PAGE1 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_POWER_PAGE2 + HID_USAGE_PAGE_POWER_PAGE2 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_POWER_PAGE3 + HID_USAGE_PAGE_POWER_PAGE3 + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_BARCODE + HID_USAGE_PAGE_BARCODE + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_SCALE + HID_USAGE_PAGE_SCALE + + + + No documentation. + + + ff539946 + HID_USAGE_PAGE_MSR + HID_USAGE_PAGE_MSR + + + + No documentation. + + + WAVE_FORMAT_ENCODING + WAVE_FORMAT_ENCODING + + + + No documentation. + + + WAVE_FORMAT_UNKNOWN + WAVE_FORMAT_UNKNOWN + + + + No documentation. + + + WAVE_FORMAT_ADPCM + WAVE_FORMAT_ADPCM + + + + No documentation. + + + WAVE_FORMAT_IEEE_FLOAT + WAVE_FORMAT_IEEE_FLOAT + + + + No documentation. + + + WAVE_FORMAT_VSELP + WAVE_FORMAT_VSELP + + + + No documentation. + + + WAVE_FORMAT_IBM_CVSD + WAVE_FORMAT_IBM_CVSD + + + + No documentation. + + + WAVE_FORMAT_ALAW + WAVE_FORMAT_ALAW + + + + No documentation. + + + WAVE_FORMAT_MULAW + WAVE_FORMAT_MULAW + + + + No documentation. + + + WAVE_FORMAT_DTS + WAVE_FORMAT_DTS + + + + No documentation. + + + WAVE_FORMAT_DRM + WAVE_FORMAT_DRM + + + + No documentation. + + + WAVE_FORMAT_WMAVOICE9 + WAVE_FORMAT_WMAVOICE9 + + + + No documentation. + + + WAVE_FORMAT_WMAVOICE10 + WAVE_FORMAT_WMAVOICE10 + + + + No documentation. + + + WAVE_FORMAT_OKI_ADPCM + WAVE_FORMAT_OKI_ADPCM + + + + No documentation. + + + WAVE_FORMAT_DVI_ADPCM + WAVE_FORMAT_DVI_ADPCM + + + + No documentation. + + + WAVE_FORMAT_IMA_ADPCM + WAVE_FORMAT_IMA_ADPCM + + + + No documentation. + + + WAVE_FORMAT_MEDIASPACE_ADPCM + WAVE_FORMAT_MEDIASPACE_ADPCM + + + + No documentation. + + + WAVE_FORMAT_SIERRA_ADPCM + WAVE_FORMAT_SIERRA_ADPCM + + + + No documentation. + + + WAVE_FORMAT_G723_ADPCM + WAVE_FORMAT_G723_ADPCM + + + + No documentation. + + + WAVE_FORMAT_DIGISTD + WAVE_FORMAT_DIGISTD + + + + No documentation. + + + WAVE_FORMAT_DIGIFIX + WAVE_FORMAT_DIGIFIX + + + + No documentation. + + + WAVE_FORMAT_DIALOGIC_OKI_ADPCM + WAVE_FORMAT_DIALOGIC_OKI_ADPCM + + + + No documentation. + + + WAVE_FORMAT_MEDIAVISION_ADPCM + WAVE_FORMAT_MEDIAVISION_ADPCM + + + + No documentation. + + + WAVE_FORMAT_CU_CODEC + WAVE_FORMAT_CU_CODEC + + + + No documentation. + + + WAVE_FORMAT_YAMAHA_ADPCM + WAVE_FORMAT_YAMAHA_ADPCM + + + + No documentation. + + + WAVE_FORMAT_SONARC + WAVE_FORMAT_SONARC + + + + No documentation. + + + WAVE_FORMAT_DSPGROUP_TRUESPEECH + WAVE_FORMAT_DSPGROUP_TRUESPEECH + + + + No documentation. + + + WAVE_FORMAT_ECHOSC1 + WAVE_FORMAT_ECHOSC1 + + + + No documentation. + + + WAVE_FORMAT_AUDIOFILE_AF36 + WAVE_FORMAT_AUDIOFILE_AF36 + + + + No documentation. + + + WAVE_FORMAT_APTX + WAVE_FORMAT_APTX + + + + No documentation. + + + WAVE_FORMAT_AUDIOFILE_AF10 + WAVE_FORMAT_AUDIOFILE_AF10 + + + + No documentation. + + + WAVE_FORMAT_PROSODY_1612 + WAVE_FORMAT_PROSODY_1612 + + + + No documentation. + + + WAVE_FORMAT_LRC + WAVE_FORMAT_LRC + + + + No documentation. + + + WAVE_FORMAT_DOLBY_AC2 + WAVE_FORMAT_DOLBY_AC2 + + + + No documentation. + + + WAVE_FORMAT_GSM610 + WAVE_FORMAT_GSM610 + + + + No documentation. + + + WAVE_FORMAT_MSNAUDIO + WAVE_FORMAT_MSNAUDIO + + + + No documentation. + + + WAVE_FORMAT_ANTEX_ADPCME + WAVE_FORMAT_ANTEX_ADPCME + + + + No documentation. + + + WAVE_FORMAT_CONTROL_RES_VQLPC + WAVE_FORMAT_CONTROL_RES_VQLPC + + + + No documentation. + + + WAVE_FORMAT_DIGIREAL + WAVE_FORMAT_DIGIREAL + + + + No documentation. + + + WAVE_FORMAT_DIGIADPCM + WAVE_FORMAT_DIGIADPCM + + + + No documentation. + + + WAVE_FORMAT_CONTROL_RES_CR10 + WAVE_FORMAT_CONTROL_RES_CR10 + + + + No documentation. + + + WAVE_FORMAT_NMS_VBXADPCM + WAVE_FORMAT_NMS_VBXADPCM + + + + No documentation. + + + WAVE_FORMAT_CS_IMAADPCM + WAVE_FORMAT_CS_IMAADPCM + + + + No documentation. + + + WAVE_FORMAT_ECHOSC3 + WAVE_FORMAT_ECHOSC3 + + + + No documentation. + + + WAVE_FORMAT_ROCKWELL_ADPCM + WAVE_FORMAT_ROCKWELL_ADPCM + + + + No documentation. + + + WAVE_FORMAT_ROCKWELL_DIGITALK + WAVE_FORMAT_ROCKWELL_DIGITALK + + + + No documentation. + + + WAVE_FORMAT_XEBEC + WAVE_FORMAT_XEBEC + + + + No documentation. + + + WAVE_FORMAT_G721_ADPCM + WAVE_FORMAT_G721_ADPCM + + + + No documentation. + + + WAVE_FORMAT_G728_CELP + WAVE_FORMAT_G728_CELP + + + + No documentation. + + + WAVE_FORMAT_MSG723 + WAVE_FORMAT_MSG723 + + + + No documentation. + + + WAVE_FORMAT_MPEG + WAVE_FORMAT_MPEG + + + + No documentation. + + + WAVE_FORMAT_RT24 + WAVE_FORMAT_RT24 + + + + No documentation. + + + WAVE_FORMAT_PAC + WAVE_FORMAT_PAC + + + + No documentation. + + + WAVE_FORMAT_MPEGLAYER3 + WAVE_FORMAT_MPEGLAYER3 + + + + No documentation. + + + WAVE_FORMAT_LUCENT_G723 + WAVE_FORMAT_LUCENT_G723 + + + + No documentation. + + + WAVE_FORMAT_CIRRUS + WAVE_FORMAT_CIRRUS + + + + No documentation. + + + WAVE_FORMAT_ESPCM + WAVE_FORMAT_ESPCM + + + + No documentation. + + + WAVE_FORMAT_VOXWARE + WAVE_FORMAT_VOXWARE + + + + No documentation. + + + WAVE_FORMAT_CANOPUS_ATRAC + WAVE_FORMAT_CANOPUS_ATRAC + + + + No documentation. + + + WAVE_FORMAT_G726_ADPCM + WAVE_FORMAT_G726_ADPCM + + + + No documentation. + + + WAVE_FORMAT_G722_ADPCM + WAVE_FORMAT_G722_ADPCM + + + + No documentation. + + + WAVE_FORMAT_DSAT_DISPLAY + WAVE_FORMAT_DSAT_DISPLAY + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_BYTE_ALIGNED + WAVE_FORMAT_VOXWARE_BYTE_ALIGNED + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC8 + WAVE_FORMAT_VOXWARE_AC8 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC10 + WAVE_FORMAT_VOXWARE_AC10 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC16 + WAVE_FORMAT_VOXWARE_AC16 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC20 + WAVE_FORMAT_VOXWARE_AC20 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_RT24 + WAVE_FORMAT_VOXWARE_RT24 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_RT29 + WAVE_FORMAT_VOXWARE_RT29 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_RT29HW + WAVE_FORMAT_VOXWARE_RT29HW + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_VR12 + WAVE_FORMAT_VOXWARE_VR12 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_VR18 + WAVE_FORMAT_VOXWARE_VR18 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_TQ40 + WAVE_FORMAT_VOXWARE_TQ40 + + + + No documentation. + + + WAVE_FORMAT_SOFTSOUND + WAVE_FORMAT_SOFTSOUND + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_TQ60 + WAVE_FORMAT_VOXWARE_TQ60 + + + + No documentation. + + + WAVE_FORMAT_MSRT24 + WAVE_FORMAT_MSRT24 + + + + No documentation. + + + WAVE_FORMAT_G729A + WAVE_FORMAT_G729A + + + + No documentation. + + + WAVE_FORMAT_MVI_MVI2 + WAVE_FORMAT_MVI_MVI2 + + + + No documentation. + + + WAVE_FORMAT_DF_G726 + WAVE_FORMAT_DF_G726 + + + + No documentation. + + + WAVE_FORMAT_DF_GSM610 + WAVE_FORMAT_DF_GSM610 + + + + No documentation. + + + WAVE_FORMAT_ISIAUDIO + WAVE_FORMAT_ISIAUDIO + + + + No documentation. + + + WAVE_FORMAT_ONLIVE + WAVE_FORMAT_ONLIVE + + + + No documentation. + + + WAVE_FORMAT_SBC24 + WAVE_FORMAT_SBC24 + + + + No documentation. + + + WAVE_FORMAT_DOLBY_AC3_SPDIF + WAVE_FORMAT_DOLBY_AC3_SPDIF + + + + No documentation. + + + WAVE_FORMAT_MEDIASONIC_G723 + WAVE_FORMAT_MEDIASONIC_G723 + + + + No documentation. + + + WAVE_FORMAT_PROSODY_8KBPS + WAVE_FORMAT_PROSODY_8KBPS + + + + No documentation. + + + WAVE_FORMAT_ZYXEL_ADPCM + WAVE_FORMAT_ZYXEL_ADPCM + + + + No documentation. + + + WAVE_FORMAT_PHILIPS_LPCBB + WAVE_FORMAT_PHILIPS_LPCBB + + + + No documentation. + + + WAVE_FORMAT_PACKED + WAVE_FORMAT_PACKED + + + + No documentation. + + + WAVE_FORMAT_MALDEN_PHONYTALK + WAVE_FORMAT_MALDEN_PHONYTALK + + + + No documentation. + + + WAVE_FORMAT_RAW_AAC1 + WAVE_FORMAT_RAW_AAC1 + + + + No documentation. + + + WAVE_FORMAT_RHETOREX_ADPCM + WAVE_FORMAT_RHETOREX_ADPCM + + + + No documentation. + + + WAVE_FORMAT_IRAT + WAVE_FORMAT_IRAT + + + + No documentation. + + + WAVE_FORMAT_VIVO_G723 + WAVE_FORMAT_VIVO_G723 + + + + No documentation. + + + WAVE_FORMAT_VIVO_SIREN + WAVE_FORMAT_VIVO_SIREN + + + + No documentation. + + + WAVE_FORMAT_DIGITAL_G723 + WAVE_FORMAT_DIGITAL_G723 + + + + No documentation. + + + WAVE_FORMAT_SANYO_LD_ADPCM + WAVE_FORMAT_SANYO_LD_ADPCM + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_ACEPLNET + WAVE_FORMAT_SIPROLAB_ACEPLNET + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_ACELP4800 + WAVE_FORMAT_SIPROLAB_ACELP4800 + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_ACELP8V3 + WAVE_FORMAT_SIPROLAB_ACELP8V3 + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_G729 + WAVE_FORMAT_SIPROLAB_G729 + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_G729A + WAVE_FORMAT_SIPROLAB_G729A + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_KELVIN + WAVE_FORMAT_SIPROLAB_KELVIN + + + + No documentation. + + + WAVE_FORMAT_G726ADPCM + WAVE_FORMAT_G726ADPCM + + + + No documentation. + + + WAVE_FORMAT_QUALCOMM_PUREVOICE + WAVE_FORMAT_QUALCOMM_PUREVOICE + + + + No documentation. + + + WAVE_FORMAT_QUALCOMM_HALFRATE + WAVE_FORMAT_QUALCOMM_HALFRATE + + + + No documentation. + + + WAVE_FORMAT_TUBGSM + WAVE_FORMAT_TUBGSM + + + + No documentation. + + + WAVE_FORMAT_MSAUDIO1 + WAVE_FORMAT_MSAUDIO1 + + + + No documentation. + + + WAVE_FORMAT_WMAUDIO2 + WAVE_FORMAT_WMAUDIO2 + + + + No documentation. + + + WAVE_FORMAT_WMAUDIO3 + WAVE_FORMAT_WMAUDIO3 + + + + No documentation. + + + WAVE_FORMAT_WMAUDIO_LOSSLESS + WAVE_FORMAT_WMAUDIO_LOSSLESS + + + + No documentation. + + + WAVE_FORMAT_WMASPDIF + WAVE_FORMAT_WMASPDIF + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_ADPCM + WAVE_FORMAT_UNISYS_NAP_ADPCM + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_ULAW + WAVE_FORMAT_UNISYS_NAP_ULAW + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_ALAW + WAVE_FORMAT_UNISYS_NAP_ALAW + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_16K + WAVE_FORMAT_UNISYS_NAP_16K + + + + No documentation. + + + WAVE_FORMAT_CREATIVE_ADPCM + WAVE_FORMAT_CREATIVE_ADPCM + + + + No documentation. + + + WAVE_FORMAT_CREATIVE_FASTSPEECH8 + WAVE_FORMAT_CREATIVE_FASTSPEECH8 + + + + No documentation. + + + WAVE_FORMAT_CREATIVE_FASTSPEECH10 + WAVE_FORMAT_CREATIVE_FASTSPEECH10 + + + + No documentation. + + + WAVE_FORMAT_UHER_ADPCM + WAVE_FORMAT_UHER_ADPCM + + + + No documentation. + + + WAVE_FORMAT_QUARTERDECK + WAVE_FORMAT_QUARTERDECK + + + + No documentation. + + + WAVE_FORMAT_ILINK_VC + WAVE_FORMAT_ILINK_VC + + + + No documentation. + + + WAVE_FORMAT_RAW_SPORT + WAVE_FORMAT_RAW_SPORT + + + + No documentation. + + + WAVE_FORMAT_ESST_AC3 + WAVE_FORMAT_ESST_AC3 + + + + No documentation. + + + WAVE_FORMAT_GENERIC_PASSTHRU + WAVE_FORMAT_GENERIC_PASSTHRU + + + + No documentation. + + + WAVE_FORMAT_IPI_HSX + WAVE_FORMAT_IPI_HSX + + + + No documentation. + + + WAVE_FORMAT_IPI_RPELP + WAVE_FORMAT_IPI_RPELP + + + + No documentation. + + + WAVE_FORMAT_CS2 + WAVE_FORMAT_CS2 + + + + No documentation. + + + WAVE_FORMAT_SONY_SCX + WAVE_FORMAT_SONY_SCX + + + + No documentation. + + + WAVE_FORMAT_FM_TOWNS_SND + WAVE_FORMAT_FM_TOWNS_SND + + + + No documentation. + + + WAVE_FORMAT_BTV_DIGITAL + WAVE_FORMAT_BTV_DIGITAL + + + + No documentation. + + + WAVE_FORMAT_QDESIGN_MUSIC + WAVE_FORMAT_QDESIGN_MUSIC + + + + No documentation. + + + WAVE_FORMAT_VME_VMPCM + WAVE_FORMAT_VME_VMPCM + + + + No documentation. + + + WAVE_FORMAT_TPC + WAVE_FORMAT_TPC + + + + No documentation. + + + WAVE_FORMAT_OLIGSM + WAVE_FORMAT_OLIGSM + + + + No documentation. + + + WAVE_FORMAT_OLIADPCM + WAVE_FORMAT_OLIADPCM + + + + No documentation. + + + WAVE_FORMAT_OLICELP + WAVE_FORMAT_OLICELP + + + + No documentation. + + + WAVE_FORMAT_OLISBC + WAVE_FORMAT_OLISBC + + + + No documentation. + + + WAVE_FORMAT_OLIOPR + WAVE_FORMAT_OLIOPR + + + + No documentation. + + + WAVE_FORMAT_LH_CODEC + WAVE_FORMAT_LH_CODEC + + + + No documentation. + + + WAVE_FORMAT_NORRIS + WAVE_FORMAT_NORRIS + + + + No documentation. + + + WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS + WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS + + + + No documentation. + + + WAVE_FORMAT_MPEG_ADTS_AAC + WAVE_FORMAT_MPEG_ADTS_AAC + + + + No documentation. + + + WAVE_FORMAT_MPEG_RAW_AAC + WAVE_FORMAT_MPEG_RAW_AAC + + + + No documentation. + + + WAVE_FORMAT_MPEG_LOAS + WAVE_FORMAT_MPEG_LOAS + + + + No documentation. + + + WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC + WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC + + + + No documentation. + + + WAVE_FORMAT_NOKIA_MPEG_RAW_AAC + WAVE_FORMAT_NOKIA_MPEG_RAW_AAC + + + + No documentation. + + + WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC + WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC + + + + No documentation. + + + WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC + WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC + + + + No documentation. + + + WAVE_FORMAT_MPEG_HEAAC + WAVE_FORMAT_MPEG_HEAAC + + + + No documentation. + + + WAVE_FORMAT_DVM + WAVE_FORMAT_DVM + + + + No documentation. + + + WAVE_FORMAT_DTS2 + WAVE_FORMAT_DTS2 + + + + No documentation. + + + WAVE_FORMAT_EXTENSIBLE + WAVE_FORMAT_EXTENSIBLE + + + + No documentation. + + + WAVE_FORMAT_DEVELOPMENT + WAVE_FORMAT_DEVELOPMENT + + + + No documentation. + + + WAVE_FORMAT_PCM + WAVE_FORMAT_PCM + + + + No documentation. + + + STGC + STGC + + + + No documentation. + + + STGC_DEFAULT + STGC_DEFAULT + + + + No documentation. + + + STGC_OVERWRITE + STGC_OVERWRITE + + + + No documentation. + + + STGC_ONLYIFCURRENT + STGC_ONLYIFCURRENT + + + + No documentation. + + + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE + + + + No documentation. + + + STGC_CONSOLIDATE + STGC_CONSOLIDATE + + + + No documentation. + + + SHARPDX_ERRORCODE + SHARPDX_ERRORCODE + + + + No documentation. + + + ERROR_SUCCESS + ERROR_SUCCESS + + + + No documentation. + + + ERROR_INVALID_FUNCTION + ERROR_INVALID_FUNCTION + + + + No documentation. + + + ERROR_FILE_NOT_FOUND + ERROR_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_PATH_NOT_FOUND + ERROR_PATH_NOT_FOUND + + + + No documentation. + + + ERROR_TOO_MANY_OPEN_FILES + ERROR_TOO_MANY_OPEN_FILES + + + + No documentation. + + + ERROR_ACCESS_DENIED + ERROR_ACCESS_DENIED + + + + No documentation. + + + ERROR_INVALID_HANDLE + ERROR_INVALID_HANDLE + + + + No documentation. + + + ERROR_ARENA_TRASHED + ERROR_ARENA_TRASHED + + + + No documentation. + + + ERROR_NOT_ENOUGH_MEMORY + ERROR_NOT_ENOUGH_MEMORY + + + + No documentation. + + + ERROR_INVALID_BLOCK + ERROR_INVALID_BLOCK + + + + No documentation. + + + ERROR_BAD_ENVIRONMENT + ERROR_BAD_ENVIRONMENT + + + + No documentation. + + + ERROR_BAD_FORMAT + ERROR_BAD_FORMAT + + + + No documentation. + + + ERROR_INVALID_ACCESS + ERROR_INVALID_ACCESS + + + + No documentation. + + + ERROR_INVALID_DATA + ERROR_INVALID_DATA + + + + No documentation. + + + ERROR_OUTOFMEMORY + ERROR_OUTOFMEMORY + + + + No documentation. + + + ERROR_INVALID_DRIVE + ERROR_INVALID_DRIVE + + + + No documentation. + + + ERROR_CURRENT_DIRECTORY + ERROR_CURRENT_DIRECTORY + + + + No documentation. + + + ERROR_NOT_SAME_DEVICE + ERROR_NOT_SAME_DEVICE + + + + No documentation. + + + ERROR_NO_MORE_FILES + ERROR_NO_MORE_FILES + + + + No documentation. + + + ERROR_WRITE_PROTECT + ERROR_WRITE_PROTECT + + + + No documentation. + + + ERROR_BAD_UNIT + ERROR_BAD_UNIT + + + + No documentation. + + + ERROR_NOT_READY + ERROR_NOT_READY + + + + No documentation. + + + ERROR_BAD_COMMAND + ERROR_BAD_COMMAND + + + + No documentation. + + + ERROR_CRC + ERROR_CRC + + + + No documentation. + + + ERROR_BAD_LENGTH + ERROR_BAD_LENGTH + + + + No documentation. + + + ERROR_SEEK + ERROR_SEEK + + + + No documentation. + + + ERROR_NOT_DOS_DISK + ERROR_NOT_DOS_DISK + + + + No documentation. + + + ERROR_SECTOR_NOT_FOUND + ERROR_SECTOR_NOT_FOUND + + + + No documentation. + + + ERROR_OUT_OF_PAPER + ERROR_OUT_OF_PAPER + + + + No documentation. + + + ERROR_WRITE_FAULT + ERROR_WRITE_FAULT + + + + No documentation. + + + ERROR_READ_FAULT + ERROR_READ_FAULT + + + + No documentation. + + + ERROR_GEN_FAILURE + ERROR_GEN_FAILURE + + + + No documentation. + + + ERROR_SHARING_VIOLATION + ERROR_SHARING_VIOLATION + + + + No documentation. + + + ERROR_LOCK_VIOLATION + ERROR_LOCK_VIOLATION + + + + No documentation. + + + ERROR_WRONG_DISK + ERROR_WRONG_DISK + + + + No documentation. + + + ERROR_SHARING_BUFFER_EXCEEDED + ERROR_SHARING_BUFFER_EXCEEDED + + + + No documentation. + + + ERROR_HANDLE_EOF + ERROR_HANDLE_EOF + + + + No documentation. + + + ERROR_HANDLE_DISK_FULL + ERROR_HANDLE_DISK_FULL + + + + No documentation. + + + ERROR_NOT_SUPPORTED + ERROR_NOT_SUPPORTED + + + + No documentation. + + + ERROR_REM_NOT_LIST + ERROR_REM_NOT_LIST + + + + No documentation. + + + ERROR_DUP_NAME + ERROR_DUP_NAME + + + + No documentation. + + + ERROR_BAD_NETPATH + ERROR_BAD_NETPATH + + + + No documentation. + + + ERROR_NETWORK_BUSY + ERROR_NETWORK_BUSY + + + + No documentation. + + + ERROR_DEV_NOT_EXIST + ERROR_DEV_NOT_EXIST + + + + No documentation. + + + ERROR_TOO_MANY_CMDS + ERROR_TOO_MANY_CMDS + + + + No documentation. + + + ERROR_ADAP_HDW_ERR + ERROR_ADAP_HDW_ERR + + + + No documentation. + + + ERROR_BAD_NET_RESP + ERROR_BAD_NET_RESP + + + + No documentation. + + + ERROR_UNEXP_NET_ERR + ERROR_UNEXP_NET_ERR + + + + No documentation. + + + ERROR_BAD_REM_ADAP + ERROR_BAD_REM_ADAP + + + + No documentation. + + + ERROR_PRINTQ_FULL + ERROR_PRINTQ_FULL + + + + No documentation. + + + ERROR_NO_SPOOL_SPACE + ERROR_NO_SPOOL_SPACE + + + + No documentation. + + + ERROR_PRINT_CANCELLED + ERROR_PRINT_CANCELLED + + + + No documentation. + + + ERROR_NETNAME_DELETED + ERROR_NETNAME_DELETED + + + + No documentation. + + + ERROR_NETWORK_ACCESS_DENIED + ERROR_NETWORK_ACCESS_DENIED + + + + No documentation. + + + ERROR_BAD_DEV_TYPE + ERROR_BAD_DEV_TYPE + + + + No documentation. + + + ERROR_BAD_NET_NAME + ERROR_BAD_NET_NAME + + + + No documentation. + + + ERROR_TOO_MANY_NAMES + ERROR_TOO_MANY_NAMES + + + + No documentation. + + + ERROR_TOO_MANY_SESS + ERROR_TOO_MANY_SESS + + + + No documentation. + + + ERROR_SHARING_PAUSED + ERROR_SHARING_PAUSED + + + + No documentation. + + + ERROR_REQ_NOT_ACCEP + ERROR_REQ_NOT_ACCEP + + + + No documentation. + + + ERROR_REDIR_PAUSED + ERROR_REDIR_PAUSED + + + + No documentation. + + + ERROR_FILE_EXISTS + ERROR_FILE_EXISTS + + + + No documentation. + + + ERROR_CANNOT_MAKE + ERROR_CANNOT_MAKE + + + + No documentation. + + + ERROR_FAIL_I24 + ERROR_FAIL_I24 + + + + No documentation. + + + ERROR_OUT_OF_STRUCTURES + ERROR_OUT_OF_STRUCTURES + + + + No documentation. + + + ERROR_ALREADY_ASSIGNED + ERROR_ALREADY_ASSIGNED + + + + No documentation. + + + ERROR_INVALID_PASSWORD + ERROR_INVALID_PASSWORD + + + + No documentation. + + + ERROR_INVALID_PARAMETER + ERROR_INVALID_PARAMETER + + + + No documentation. + + + ERROR_NET_WRITE_FAULT + ERROR_NET_WRITE_FAULT + + + + No documentation. + + + ERROR_NO_PROC_SLOTS + ERROR_NO_PROC_SLOTS + + + + No documentation. + + + ERROR_TOO_MANY_SEMAPHORES + ERROR_TOO_MANY_SEMAPHORES + + + + No documentation. + + + ERROR_EXCL_SEM_ALREADY_OWNED + ERROR_EXCL_SEM_ALREADY_OWNED + + + + No documentation. + + + ERROR_SEM_IS_SET + ERROR_SEM_IS_SET + + + + No documentation. + + + ERROR_TOO_MANY_SEM_REQUESTS + ERROR_TOO_MANY_SEM_REQUESTS + + + + No documentation. + + + ERROR_INVALID_AT_INTERRUPT_TIME + ERROR_INVALID_AT_INTERRUPT_TIME + + + + No documentation. + + + ERROR_SEM_OWNER_DIED + ERROR_SEM_OWNER_DIED + + + + No documentation. + + + ERROR_SEM_USER_LIMIT + ERROR_SEM_USER_LIMIT + + + + No documentation. + + + ERROR_DISK_CHANGE + ERROR_DISK_CHANGE + + + + No documentation. + + + ERROR_DRIVE_LOCKED + ERROR_DRIVE_LOCKED + + + + No documentation. + + + ERROR_BROKEN_PIPE + ERROR_BROKEN_PIPE + + + + No documentation. + + + ERROR_OPEN_FAILED + ERROR_OPEN_FAILED + + + + No documentation. + + + ERROR_BUFFER_OVERFLOW + ERROR_BUFFER_OVERFLOW + + + + No documentation. + + + ERROR_DISK_FULL + ERROR_DISK_FULL + + + + No documentation. + + + ERROR_NO_MORE_SEARCH_HANDLES + ERROR_NO_MORE_SEARCH_HANDLES + + + + No documentation. + + + ERROR_INVALID_TARGET_HANDLE + ERROR_INVALID_TARGET_HANDLE + + + + No documentation. + + + ERROR_INVALID_CATEGORY + ERROR_INVALID_CATEGORY + + + + No documentation. + + + ERROR_INVALID_VERIFY_SWITCH + ERROR_INVALID_VERIFY_SWITCH + + + + No documentation. + + + ERROR_BAD_DRIVER_LEVEL + ERROR_BAD_DRIVER_LEVEL + + + + No documentation. + + + ERROR_CALL_NOT_IMPLEMENTED + ERROR_CALL_NOT_IMPLEMENTED + + + + No documentation. + + + ERROR_SEM_TIMEOUT + ERROR_SEM_TIMEOUT + + + + No documentation. + + + ERROR_INSUFFICIENT_BUFFER + ERROR_INSUFFICIENT_BUFFER + + + + No documentation. + + + ERROR_INVALID_NAME + ERROR_INVALID_NAME + + + + No documentation. + + + ERROR_INVALID_LEVEL + ERROR_INVALID_LEVEL + + + + No documentation. + + + ERROR_NO_VOLUME_LABEL + ERROR_NO_VOLUME_LABEL + + + + No documentation. + + + ERROR_MOD_NOT_FOUND + ERROR_MOD_NOT_FOUND + + + + No documentation. + + + ERROR_PROC_NOT_FOUND + ERROR_PROC_NOT_FOUND + + + + No documentation. + + + ERROR_WAIT_NO_CHILDREN + ERROR_WAIT_NO_CHILDREN + + + + No documentation. + + + ERROR_CHILD_NOT_COMPLETE + ERROR_CHILD_NOT_COMPLETE + + + + No documentation. + + + ERROR_DIRECT_ACCESS_HANDLE + ERROR_DIRECT_ACCESS_HANDLE + + + + No documentation. + + + ERROR_NEGATIVE_SEEK + ERROR_NEGATIVE_SEEK + + + + No documentation. + + + ERROR_SEEK_ON_DEVICE + ERROR_SEEK_ON_DEVICE + + + + No documentation. + + + ERROR_IS_JOIN_TARGET + ERROR_IS_JOIN_TARGET + + + + No documentation. + + + ERROR_IS_JOINED + ERROR_IS_JOINED + + + + No documentation. + + + ERROR_IS_SUBSTED + ERROR_IS_SUBSTED + + + + No documentation. + + + ERROR_NOT_JOINED + ERROR_NOT_JOINED + + + + No documentation. + + + ERROR_NOT_SUBSTED + ERROR_NOT_SUBSTED + + + + No documentation. + + + ERROR_JOIN_TO_JOIN + ERROR_JOIN_TO_JOIN + + + + No documentation. + + + ERROR_SUBST_TO_SUBST + ERROR_SUBST_TO_SUBST + + + + No documentation. + + + ERROR_JOIN_TO_SUBST + ERROR_JOIN_TO_SUBST + + + + No documentation. + + + ERROR_SUBST_TO_JOIN + ERROR_SUBST_TO_JOIN + + + + No documentation. + + + ERROR_BUSY_DRIVE + ERROR_BUSY_DRIVE + + + + No documentation. + + + ERROR_SAME_DRIVE + ERROR_SAME_DRIVE + + + + No documentation. + + + ERROR_DIR_NOT_ROOT + ERROR_DIR_NOT_ROOT + + + + No documentation. + + + ERROR_DIR_NOT_EMPTY + ERROR_DIR_NOT_EMPTY + + + + No documentation. + + + ERROR_IS_SUBST_PATH + ERROR_IS_SUBST_PATH + + + + No documentation. + + + ERROR_IS_JOIN_PATH + ERROR_IS_JOIN_PATH + + + + No documentation. + + + ERROR_PATH_BUSY + ERROR_PATH_BUSY + + + + No documentation. + + + ERROR_IS_SUBST_TARGET + ERROR_IS_SUBST_TARGET + + + + No documentation. + + + ERROR_SYSTEM_TRACE + ERROR_SYSTEM_TRACE + + + + No documentation. + + + ERROR_INVALID_EVENT_COUNT + ERROR_INVALID_EVENT_COUNT + + + + No documentation. + + + ERROR_TOO_MANY_MUXWAITERS + ERROR_TOO_MANY_MUXWAITERS + + + + No documentation. + + + ERROR_INVALID_LIST_FORMAT + ERROR_INVALID_LIST_FORMAT + + + + No documentation. + + + ERROR_LABEL_TOO_LONG + ERROR_LABEL_TOO_LONG + + + + No documentation. + + + ERROR_TOO_MANY_TCBS + ERROR_TOO_MANY_TCBS + + + + No documentation. + + + ERROR_SIGNAL_REFUSED + ERROR_SIGNAL_REFUSED + + + + No documentation. + + + ERROR_DISCARDED + ERROR_DISCARDED + + + + No documentation. + + + ERROR_NOT_LOCKED + ERROR_NOT_LOCKED + + + + No documentation. + + + ERROR_BAD_THREADID_ADDR + ERROR_BAD_THREADID_ADDR + + + + No documentation. + + + ERROR_BAD_ARGUMENTS + ERROR_BAD_ARGUMENTS + + + + No documentation. + + + ERROR_BAD_PATHNAME + ERROR_BAD_PATHNAME + + + + No documentation. + + + ERROR_SIGNAL_PENDING + ERROR_SIGNAL_PENDING + + + + No documentation. + + + ERROR_MAX_THRDS_REACHED + ERROR_MAX_THRDS_REACHED + + + + No documentation. + + + ERROR_LOCK_FAILED + ERROR_LOCK_FAILED + + + + No documentation. + + + ERROR_BUSY + ERROR_BUSY + + + + No documentation. + + + ERROR_CANCEL_VIOLATION + ERROR_CANCEL_VIOLATION + + + + No documentation. + + + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_INVALID_SEGMENT_NUMBER + ERROR_INVALID_SEGMENT_NUMBER + + + + No documentation. + + + ERROR_INVALID_ORDINAL + ERROR_INVALID_ORDINAL + + + + No documentation. + + + ERROR_ALREADY_EXISTS + ERROR_ALREADY_EXISTS + + + + No documentation. + + + ERROR_INVALID_FLAG_NUMBER + ERROR_INVALID_FLAG_NUMBER + + + + No documentation. + + + ERROR_SEM_NOT_FOUND + ERROR_SEM_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_STARTING_CODESEG + ERROR_INVALID_STARTING_CODESEG + + + + No documentation. + + + ERROR_INVALID_STACKSEG + ERROR_INVALID_STACKSEG + + + + No documentation. + + + ERROR_INVALID_MODULETYPE + ERROR_INVALID_MODULETYPE + + + + No documentation. + + + ERROR_INVALID_EXE_SIGNATURE + ERROR_INVALID_EXE_SIGNATURE + + + + No documentation. + + + ERROR_EXE_MARKED_INVALID + ERROR_EXE_MARKED_INVALID + + + + No documentation. + + + ERROR_BAD_EXE_FORMAT + ERROR_BAD_EXE_FORMAT + + + + No documentation. + + + ERROR_ITERATED_DATA_EXCEEDS_64k + ERROR_ITERATED_DATA_EXCEEDS_64k + + + + No documentation. + + + ERROR_INVALID_MINALLOCSIZE + ERROR_INVALID_MINALLOCSIZE + + + + No documentation. + + + ERROR_DYNLINK_FROM_INVALID_RING + ERROR_DYNLINK_FROM_INVALID_RING + + + + No documentation. + + + ERROR_IOPL_NOT_ENABLED + ERROR_IOPL_NOT_ENABLED + + + + No documentation. + + + ERROR_INVALID_SEGDPL + ERROR_INVALID_SEGDPL + + + + No documentation. + + + ERROR_AUTODATASEG_EXCEEDS_64k + ERROR_AUTODATASEG_EXCEEDS_64k + + + + No documentation. + + + ERROR_RING2SEG_MUST_BE_MOVABLE + ERROR_RING2SEG_MUST_BE_MOVABLE + + + + No documentation. + + + ERROR_RELOC_CHAIN_XEEDS_SEGLIM + ERROR_RELOC_CHAIN_XEEDS_SEGLIM + + + + No documentation. + + + ERROR_INFLOOP_IN_RELOC_CHAIN + ERROR_INFLOOP_IN_RELOC_CHAIN + + + + No documentation. + + + ERROR_ENVVAR_NOT_FOUND + ERROR_ENVVAR_NOT_FOUND + + + + No documentation. + + + ERROR_NO_SIGNAL_SENT + ERROR_NO_SIGNAL_SENT + + + + No documentation. + + + ERROR_FILENAME_EXCED_RANGE + ERROR_FILENAME_EXCED_RANGE + + + + No documentation. + + + ERROR_RING2_STACK_IN_USE + ERROR_RING2_STACK_IN_USE + + + + No documentation. + + + ERROR_META_EXPANSION_TOO_LONG + ERROR_META_EXPANSION_TOO_LONG + + + + No documentation. + + + ERROR_INVALID_SIGNAL_NUMBER + ERROR_INVALID_SIGNAL_NUMBER + + + + No documentation. + + + ERROR_THREAD_1_INACTIVE + ERROR_THREAD_1_INACTIVE + + + + No documentation. + + + ERROR_LOCKED + ERROR_LOCKED + + + + No documentation. + + + ERROR_TOO_MANY_MODULES + ERROR_TOO_MANY_MODULES + + + + No documentation. + + + ERROR_NESTING_NOT_ALLOWED + ERROR_NESTING_NOT_ALLOWED + + + + No documentation. + + + ERROR_EXE_MACHINE_TYPE_MISMATCH + ERROR_EXE_MACHINE_TYPE_MISMATCH + + + + No documentation. + + + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY + + + + No documentation. + + + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY + + + + No documentation. + + + ERROR_FILE_CHECKED_OUT + ERROR_FILE_CHECKED_OUT + + + + No documentation. + + + ERROR_CHECKOUT_REQUIRED + ERROR_CHECKOUT_REQUIRED + + + + No documentation. + + + ERROR_BAD_FILE_TYPE + ERROR_BAD_FILE_TYPE + + + + No documentation. + + + ERROR_FILE_TOO_LARGE + ERROR_FILE_TOO_LARGE + + + + No documentation. + + + ERROR_FORMS_AUTH_REQUIRED + ERROR_FORMS_AUTH_REQUIRED + + + + No documentation. + + + ERROR_VIRUS_INFECTED + ERROR_VIRUS_INFECTED + + + + No documentation. + + + ERROR_VIRUS_DELETED + ERROR_VIRUS_DELETED + + + + No documentation. + + + ERROR_PIPE_LOCAL + ERROR_PIPE_LOCAL + + + + No documentation. + + + ERROR_BAD_PIPE + ERROR_BAD_PIPE + + + + No documentation. + + + ERROR_PIPE_BUSY + ERROR_PIPE_BUSY + + + + No documentation. + + + ERROR_NO_DATA + ERROR_NO_DATA + + + + No documentation. + + + ERROR_PIPE_NOT_CONNECTED + ERROR_PIPE_NOT_CONNECTED + + + + No documentation. + + + ERROR_MORE_DATA + ERROR_MORE_DATA + + + + No documentation. + + + ERROR_VC_DISCONNECTED + ERROR_VC_DISCONNECTED + + + + No documentation. + + + ERROR_INVALID_EA_NAME + ERROR_INVALID_EA_NAME + + + + No documentation. + + + ERROR_EA_LIST_INCONSISTENT + ERROR_EA_LIST_INCONSISTENT + + + + No documentation. + + + ERROR_NO_MORE_ITEMS + ERROR_NO_MORE_ITEMS + + + + No documentation. + + + ERROR_CANNOT_COPY + ERROR_CANNOT_COPY + + + + No documentation. + + + ERROR_DIRECTORY + ERROR_DIRECTORY + + + + No documentation. + + + ERROR_EAS_DIDNT_FIT + ERROR_EAS_DIDNT_FIT + + + + No documentation. + + + ERROR_EA_FILE_CORRUPT + ERROR_EA_FILE_CORRUPT + + + + No documentation. + + + ERROR_EA_TABLE_FULL + ERROR_EA_TABLE_FULL + + + + No documentation. + + + ERROR_INVALID_EA_HANDLE + ERROR_INVALID_EA_HANDLE + + + + No documentation. + + + ERROR_EAS_NOT_SUPPORTED + ERROR_EAS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_NOT_OWNER + ERROR_NOT_OWNER + + + + No documentation. + + + ERROR_TOO_MANY_POSTS + ERROR_TOO_MANY_POSTS + + + + No documentation. + + + ERROR_PARTIAL_COPY + ERROR_PARTIAL_COPY + + + + No documentation. + + + ERROR_OPLOCK_NOT_GRANTED + ERROR_OPLOCK_NOT_GRANTED + + + + No documentation. + + + ERROR_INVALID_OPLOCK_PROTOCOL + ERROR_INVALID_OPLOCK_PROTOCOL + + + + No documentation. + + + ERROR_DISK_TOO_FRAGMENTED + ERROR_DISK_TOO_FRAGMENTED + + + + No documentation. + + + ERROR_DELETE_PENDING + ERROR_DELETE_PENDING + + + + No documentation. + + + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING + + + + No documentation. + + + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME + + + + No documentation. + + + ERROR_SECURITY_STREAM_IS_INCONSISTENT + ERROR_SECURITY_STREAM_IS_INCONSISTENT + + + + No documentation. + + + ERROR_INVALID_LOCK_RANGE + ERROR_INVALID_LOCK_RANGE + + + + No documentation. + + + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT + + + + No documentation. + + + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED + + + + No documentation. + + + ERROR_MR_MID_NOT_FOUND + ERROR_MR_MID_NOT_FOUND + + + + No documentation. + + + ERROR_SCOPE_NOT_FOUND + ERROR_SCOPE_NOT_FOUND + + + + No documentation. + + + ERROR_FAIL_NOACTION_REBOOT + ERROR_FAIL_NOACTION_REBOOT + + + + No documentation. + + + ERROR_FAIL_SHUTDOWN + ERROR_FAIL_SHUTDOWN + + + + No documentation. + + + ERROR_FAIL_RESTART + ERROR_FAIL_RESTART + + + + No documentation. + + + ERROR_MAX_SESSIONS_REACHED + ERROR_MAX_SESSIONS_REACHED + + + + No documentation. + + + ERROR_THREAD_MODE_ALREADY_BACKGROUND + ERROR_THREAD_MODE_ALREADY_BACKGROUND + + + + No documentation. + + + ERROR_THREAD_MODE_NOT_BACKGROUND + ERROR_THREAD_MODE_NOT_BACKGROUND + + + + No documentation. + + + ERROR_PROCESS_MODE_ALREADY_BACKGROUND + ERROR_PROCESS_MODE_ALREADY_BACKGROUND + + + + No documentation. + + + ERROR_PROCESS_MODE_NOT_BACKGROUND + ERROR_PROCESS_MODE_NOT_BACKGROUND + + + + No documentation. + + + ERROR_INVALID_ADDRESS + ERROR_INVALID_ADDRESS + + + + No documentation. + + + ERROR_USER_PROFILE_LOAD + ERROR_USER_PROFILE_LOAD + + + + No documentation. + + + ERROR_ARITHMETIC_OVERFLOW + ERROR_ARITHMETIC_OVERFLOW + + + + No documentation. + + + ERROR_PIPE_CONNECTED + ERROR_PIPE_CONNECTED + + + + No documentation. + + + ERROR_PIPE_LISTENING + ERROR_PIPE_LISTENING + + + + No documentation. + + + ERROR_VERIFIER_STOP + ERROR_VERIFIER_STOP + + + + No documentation. + + + ERROR_ABIOS_ERROR + ERROR_ABIOS_ERROR + + + + No documentation. + + + ERROR_WX86_WARNING + ERROR_WX86_WARNING + + + + No documentation. + + + ERROR_WX86_ERROR + ERROR_WX86_ERROR + + + + No documentation. + + + ERROR_TIMER_NOT_CANCELED + ERROR_TIMER_NOT_CANCELED + + + + No documentation. + + + ERROR_UNWIND + ERROR_UNWIND + + + + No documentation. + + + ERROR_BAD_STACK + ERROR_BAD_STACK + + + + No documentation. + + + ERROR_INVALID_UNWIND_TARGET + ERROR_INVALID_UNWIND_TARGET + + + + No documentation. + + + ERROR_INVALID_PORT_ATTRIBUTES + ERROR_INVALID_PORT_ATTRIBUTES + + + + No documentation. + + + ERROR_PORT_MESSAGE_TOO_LONG + ERROR_PORT_MESSAGE_TOO_LONG + + + + No documentation. + + + ERROR_INVALID_QUOTA_LOWER + ERROR_INVALID_QUOTA_LOWER + + + + No documentation. + + + ERROR_DEVICE_ALREADY_ATTACHED + ERROR_DEVICE_ALREADY_ATTACHED + + + + No documentation. + + + ERROR_INSTRUCTION_MISALIGNMENT + ERROR_INSTRUCTION_MISALIGNMENT + + + + No documentation. + + + ERROR_PROFILING_NOT_STARTED + ERROR_PROFILING_NOT_STARTED + + + + No documentation. + + + ERROR_PROFILING_NOT_STOPPED + ERROR_PROFILING_NOT_STOPPED + + + + No documentation. + + + ERROR_COULD_NOT_INTERPRET + ERROR_COULD_NOT_INTERPRET + + + + No documentation. + + + ERROR_PROFILING_AT_LIMIT + ERROR_PROFILING_AT_LIMIT + + + + No documentation. + + + ERROR_CANT_WAIT + ERROR_CANT_WAIT + + + + No documentation. + + + ERROR_CANT_TERMINATE_SELF + ERROR_CANT_TERMINATE_SELF + + + + No documentation. + + + ERROR_UNEXPECTED_MM_CREATE_ERR + ERROR_UNEXPECTED_MM_CREATE_ERR + + + + No documentation. + + + ERROR_UNEXPECTED_MM_MAP_ERROR + ERROR_UNEXPECTED_MM_MAP_ERROR + + + + No documentation. + + + ERROR_UNEXPECTED_MM_EXTEND_ERR + ERROR_UNEXPECTED_MM_EXTEND_ERR + + + + No documentation. + + + ERROR_BAD_FUNCTION_TABLE + ERROR_BAD_FUNCTION_TABLE + + + + No documentation. + + + ERROR_NO_GUID_TRANSLATION + ERROR_NO_GUID_TRANSLATION + + + + No documentation. + + + ERROR_INVALID_LDT_SIZE + ERROR_INVALID_LDT_SIZE + + + + No documentation. + + + ERROR_INVALID_LDT_OFFSET + ERROR_INVALID_LDT_OFFSET + + + + No documentation. + + + ERROR_INVALID_LDT_DESCRIPTOR + ERROR_INVALID_LDT_DESCRIPTOR + + + + No documentation. + + + ERROR_TOO_MANY_THREADS + ERROR_TOO_MANY_THREADS + + + + No documentation. + + + ERROR_THREAD_NOT_IN_PROCESS + ERROR_THREAD_NOT_IN_PROCESS + + + + No documentation. + + + ERROR_PAGEFILE_QUOTA_EXCEEDED + ERROR_PAGEFILE_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_LOGON_SERVER_CONFLICT + ERROR_LOGON_SERVER_CONFLICT + + + + No documentation. + + + ERROR_SYNCHRONIZATION_REQUIRED + ERROR_SYNCHRONIZATION_REQUIRED + + + + No documentation. + + + ERROR_NET_OPEN_FAILED + ERROR_NET_OPEN_FAILED + + + + No documentation. + + + ERROR_IO_PRIVILEGE_FAILED + ERROR_IO_PRIVILEGE_FAILED + + + + No documentation. + + + ERROR_CONTROL_C_EXIT + ERROR_CONTROL_C_EXIT + + + + No documentation. + + + ERROR_MISSING_SYSTEMFILE + ERROR_MISSING_SYSTEMFILE + + + + No documentation. + + + ERROR_UNHANDLED_EXCEPTION + ERROR_UNHANDLED_EXCEPTION + + + + No documentation. + + + ERROR_APP_INIT_FAILURE + ERROR_APP_INIT_FAILURE + + + + No documentation. + + + ERROR_PAGEFILE_CREATE_FAILED + ERROR_PAGEFILE_CREATE_FAILED + + + + No documentation. + + + ERROR_INVALID_IMAGE_HASH + ERROR_INVALID_IMAGE_HASH + + + + No documentation. + + + ERROR_NO_PAGEFILE + ERROR_NO_PAGEFILE + + + + No documentation. + + + ERROR_ILLEGAL_FLOAT_CONTEXT + ERROR_ILLEGAL_FLOAT_CONTEXT + + + + No documentation. + + + ERROR_NO_EVENT_PAIR + ERROR_NO_EVENT_PAIR + + + + No documentation. + + + ERROR_DOMAIN_CTRLR_CONFIG_ERROR + ERROR_DOMAIN_CTRLR_CONFIG_ERROR + + + + No documentation. + + + ERROR_ILLEGAL_CHARACTER + ERROR_ILLEGAL_CHARACTER + + + + No documentation. + + + ERROR_UNDEFINED_CHARACTER + ERROR_UNDEFINED_CHARACTER + + + + No documentation. + + + ERROR_FLOPPY_VOLUME + ERROR_FLOPPY_VOLUME + + + + No documentation. + + + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT + + + + No documentation. + + + ERROR_BACKUP_CONTROLLER + ERROR_BACKUP_CONTROLLER + + + + No documentation. + + + ERROR_MUTANT_LIMIT_EXCEEDED + ERROR_MUTANT_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_FS_DRIVER_REQUIRED + ERROR_FS_DRIVER_REQUIRED + + + + No documentation. + + + ERROR_CANNOT_LOAD_REGISTRY_FILE + ERROR_CANNOT_LOAD_REGISTRY_FILE + + + + No documentation. + + + ERROR_DEBUG_ATTACH_FAILED + ERROR_DEBUG_ATTACH_FAILED + + + + No documentation. + + + ERROR_SYSTEM_PROCESS_TERMINATED + ERROR_SYSTEM_PROCESS_TERMINATED + + + + No documentation. + + + ERROR_DATA_NOT_ACCEPTED + ERROR_DATA_NOT_ACCEPTED + + + + No documentation. + + + ERROR_VDM_HARD_ERROR + ERROR_VDM_HARD_ERROR + + + + No documentation. + + + ERROR_DRIVER_CANCEL_TIMEOUT + ERROR_DRIVER_CANCEL_TIMEOUT + + + + No documentation. + + + ERROR_REPLY_MESSAGE_MISMATCH + ERROR_REPLY_MESSAGE_MISMATCH + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA + ERROR_LOST_WRITEBEHIND_DATA + + + + No documentation. + + + ERROR_CLIENT_SERVER_PARAMETERS_INVALID + ERROR_CLIENT_SERVER_PARAMETERS_INVALID + + + + No documentation. + + + ERROR_NOT_TINY_STREAM + ERROR_NOT_TINY_STREAM + + + + No documentation. + + + ERROR_STACK_OVERFLOW_READ + ERROR_STACK_OVERFLOW_READ + + + + No documentation. + + + ERROR_CONVERT_TO_LARGE + ERROR_CONVERT_TO_LARGE + + + + No documentation. + + + ERROR_FOUND_OUT_OF_SCOPE + ERROR_FOUND_OUT_OF_SCOPE + + + + No documentation. + + + ERROR_ALLOCATE_BUCKET + ERROR_ALLOCATE_BUCKET + + + + No documentation. + + + ERROR_MARSHALL_OVERFLOW + ERROR_MARSHALL_OVERFLOW + + + + No documentation. + + + ERROR_INVALID_VARIANT + ERROR_INVALID_VARIANT + + + + No documentation. + + + ERROR_BAD_COMPRESSION_BUFFER + ERROR_BAD_COMPRESSION_BUFFER + + + + No documentation. + + + ERROR_AUDIT_FAILED + ERROR_AUDIT_FAILED + + + + No documentation. + + + ERROR_TIMER_RESOLUTION_NOT_SET + ERROR_TIMER_RESOLUTION_NOT_SET + + + + No documentation. + + + ERROR_INSUFFICIENT_LOGON_INFO + ERROR_INSUFFICIENT_LOGON_INFO + + + + No documentation. + + + ERROR_BAD_DLL_ENTRYPOINT + ERROR_BAD_DLL_ENTRYPOINT + + + + No documentation. + + + ERROR_BAD_SERVICE_ENTRYPOINT + ERROR_BAD_SERVICE_ENTRYPOINT + + + + No documentation. + + + ERROR_IP_ADDRESS_CONFLICT1 + ERROR_IP_ADDRESS_CONFLICT1 + + + + No documentation. + + + ERROR_IP_ADDRESS_CONFLICT2 + ERROR_IP_ADDRESS_CONFLICT2 + + + + No documentation. + + + ERROR_REGISTRY_QUOTA_LIMIT + ERROR_REGISTRY_QUOTA_LIMIT + + + + No documentation. + + + ERROR_NO_CALLBACK_ACTIVE + ERROR_NO_CALLBACK_ACTIVE + + + + No documentation. + + + ERROR_PWD_TOO_SHORT + ERROR_PWD_TOO_SHORT + + + + No documentation. + + + ERROR_PWD_TOO_RECENT + ERROR_PWD_TOO_RECENT + + + + No documentation. + + + ERROR_PWD_HISTORY_CONFLICT + ERROR_PWD_HISTORY_CONFLICT + + + + No documentation. + + + ERROR_UNSUPPORTED_COMPRESSION + ERROR_UNSUPPORTED_COMPRESSION + + + + No documentation. + + + ERROR_INVALID_HW_PROFILE + ERROR_INVALID_HW_PROFILE + + + + No documentation. + + + ERROR_INVALID_PLUGPLAY_DEVICE_PATH + ERROR_INVALID_PLUGPLAY_DEVICE_PATH + + + + No documentation. + + + ERROR_QUOTA_LIST_INCONSISTENT + ERROR_QUOTA_LIST_INCONSISTENT + + + + No documentation. + + + ERROR_EVALUATION_EXPIRATION + ERROR_EVALUATION_EXPIRATION + + + + No documentation. + + + ERROR_ILLEGAL_DLL_RELOCATION + ERROR_ILLEGAL_DLL_RELOCATION + + + + No documentation. + + + ERROR_DLL_INIT_FAILED_LOGOFF + ERROR_DLL_INIT_FAILED_LOGOFF + + + + No documentation. + + + ERROR_VALIDATE_CONTINUE + ERROR_VALIDATE_CONTINUE + + + + No documentation. + + + ERROR_NO_MORE_MATCHES + ERROR_NO_MORE_MATCHES + + + + No documentation. + + + ERROR_RANGE_LIST_CONFLICT + ERROR_RANGE_LIST_CONFLICT + + + + No documentation. + + + ERROR_SERVER_SID_MISMATCH + ERROR_SERVER_SID_MISMATCH + + + + No documentation. + + + ERROR_CANT_ENABLE_DENY_ONLY + ERROR_CANT_ENABLE_DENY_ONLY + + + + No documentation. + + + ERROR_FLOAT_MULTIPLE_FAULTS + ERROR_FLOAT_MULTIPLE_FAULTS + + + + No documentation. + + + ERROR_FLOAT_MULTIPLE_TRAPS + ERROR_FLOAT_MULTIPLE_TRAPS + + + + No documentation. + + + ERROR_NOINTERFACE + ERROR_NOINTERFACE + + + + No documentation. + + + ERROR_DRIVER_FAILED_SLEEP + ERROR_DRIVER_FAILED_SLEEP + + + + No documentation. + + + ERROR_CORRUPT_SYSTEM_FILE + ERROR_CORRUPT_SYSTEM_FILE + + + + No documentation. + + + ERROR_COMMITMENT_MINIMUM + ERROR_COMMITMENT_MINIMUM + + + + No documentation. + + + ERROR_PNP_RESTART_ENUMERATION + ERROR_PNP_RESTART_ENUMERATION + + + + No documentation. + + + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE + + + + No documentation. + + + ERROR_PNP_REBOOT_REQUIRED + ERROR_PNP_REBOOT_REQUIRED + + + + No documentation. + + + ERROR_INSUFFICIENT_POWER + ERROR_INSUFFICIENT_POWER + + + + No documentation. + + + ERROR_MULTIPLE_FAULT_VIOLATION + ERROR_MULTIPLE_FAULT_VIOLATION + + + + No documentation. + + + ERROR_SYSTEM_SHUTDOWN + ERROR_SYSTEM_SHUTDOWN + + + + No documentation. + + + ERROR_PORT_NOT_SET + ERROR_PORT_NOT_SET + + + + No documentation. + + + ERROR_DS_VERSION_CHECK_FAILURE + ERROR_DS_VERSION_CHECK_FAILURE + + + + No documentation. + + + ERROR_RANGE_NOT_FOUND + ERROR_RANGE_NOT_FOUND + + + + No documentation. + + + ERROR_NOT_SAFE_MODE_DRIVER + ERROR_NOT_SAFE_MODE_DRIVER + + + + No documentation. + + + ERROR_FAILED_DRIVER_ENTRY + ERROR_FAILED_DRIVER_ENTRY + + + + No documentation. + + + ERROR_DEVICE_ENUMERATION_ERROR + ERROR_DEVICE_ENUMERATION_ERROR + + + + No documentation. + + + ERROR_MOUNT_POINT_NOT_RESOLVED + ERROR_MOUNT_POINT_NOT_RESOLVED + + + + No documentation. + + + ERROR_INVALID_DEVICE_OBJECT_PARAMETER + ERROR_INVALID_DEVICE_OBJECT_PARAMETER + + + + No documentation. + + + ERROR_MCA_OCCURED + ERROR_MCA_OCCURED + + + + No documentation. + + + ERROR_DRIVER_DATABASE_ERROR + ERROR_DRIVER_DATABASE_ERROR + + + + No documentation. + + + ERROR_SYSTEM_HIVE_TOO_LARGE + ERROR_SYSTEM_HIVE_TOO_LARGE + + + + No documentation. + + + ERROR_DRIVER_FAILED_PRIOR_UNLOAD + ERROR_DRIVER_FAILED_PRIOR_UNLOAD + + + + No documentation. + + + ERROR_VOLSNAP_PREPARE_HIBERNATE + ERROR_VOLSNAP_PREPARE_HIBERNATE + + + + No documentation. + + + ERROR_HIBERNATION_FAILURE + ERROR_HIBERNATION_FAILURE + + + + No documentation. + + + ERROR_FILE_SYSTEM_LIMITATION + ERROR_FILE_SYSTEM_LIMITATION + + + + No documentation. + + + ERROR_ASSERTION_FAILURE + ERROR_ASSERTION_FAILURE + + + + No documentation. + + + ERROR_ACPI_ERROR + ERROR_ACPI_ERROR + + + + No documentation. + + + ERROR_WOW_ASSERTION + ERROR_WOW_ASSERTION + + + + No documentation. + + + ERROR_PNP_BAD_MPS_TABLE + ERROR_PNP_BAD_MPS_TABLE + + + + No documentation. + + + ERROR_PNP_TRANSLATION_FAILED + ERROR_PNP_TRANSLATION_FAILED + + + + No documentation. + + + ERROR_PNP_IRQ_TRANSLATION_FAILED + ERROR_PNP_IRQ_TRANSLATION_FAILED + + + + No documentation. + + + ERROR_PNP_INVALID_ID + ERROR_PNP_INVALID_ID + + + + No documentation. + + + ERROR_WAKE_SYSTEM_DEBUGGER + ERROR_WAKE_SYSTEM_DEBUGGER + + + + No documentation. + + + ERROR_HANDLES_CLOSED + ERROR_HANDLES_CLOSED + + + + No documentation. + + + ERROR_EXTRANEOUS_INFORMATION + ERROR_EXTRANEOUS_INFORMATION + + + + No documentation. + + + ERROR_RXACT_COMMIT_NECESSARY + ERROR_RXACT_COMMIT_NECESSARY + + + + No documentation. + + + ERROR_MEDIA_CHECK + ERROR_MEDIA_CHECK + + + + No documentation. + + + ERROR_GUID_SUBSTITUTION_MADE + ERROR_GUID_SUBSTITUTION_MADE + + + + No documentation. + + + ERROR_STOPPED_ON_SYMLINK + ERROR_STOPPED_ON_SYMLINK + + + + No documentation. + + + ERROR_LONGJUMP + ERROR_LONGJUMP + + + + No documentation. + + + ERROR_PLUGPLAY_QUERY_VETOED + ERROR_PLUGPLAY_QUERY_VETOED + + + + No documentation. + + + ERROR_UNWIND_CONSOLIDATE + ERROR_UNWIND_CONSOLIDATE + + + + No documentation. + + + ERROR_REGISTRY_HIVE_RECOVERED + ERROR_REGISTRY_HIVE_RECOVERED + + + + No documentation. + + + ERROR_DLL_MIGHT_BE_INSECURE + ERROR_DLL_MIGHT_BE_INSECURE + + + + No documentation. + + + ERROR_DLL_MIGHT_BE_INCOMPATIBLE + ERROR_DLL_MIGHT_BE_INCOMPATIBLE + + + + No documentation. + + + ERROR_DBG_EXCEPTION_NOT_HANDLED + ERROR_DBG_EXCEPTION_NOT_HANDLED + + + + No documentation. + + + ERROR_DBG_REPLY_LATER + ERROR_DBG_REPLY_LATER + + + + No documentation. + + + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE + + + + No documentation. + + + ERROR_DBG_TERMINATE_THREAD + ERROR_DBG_TERMINATE_THREAD + + + + No documentation. + + + ERROR_DBG_TERMINATE_PROCESS + ERROR_DBG_TERMINATE_PROCESS + + + + No documentation. + + + ERROR_DBG_CONTROL_C + ERROR_DBG_CONTROL_C + + + + No documentation. + + + ERROR_DBG_PRINTEXCEPTION_C + ERROR_DBG_PRINTEXCEPTION_C + + + + No documentation. + + + ERROR_DBG_RIPEXCEPTION + ERROR_DBG_RIPEXCEPTION + + + + No documentation. + + + ERROR_DBG_CONTROL_BREAK + ERROR_DBG_CONTROL_BREAK + + + + No documentation. + + + ERROR_DBG_COMMAND_EXCEPTION + ERROR_DBG_COMMAND_EXCEPTION + + + + No documentation. + + + ERROR_OBJECT_NAME_EXISTS + ERROR_OBJECT_NAME_EXISTS + + + + No documentation. + + + ERROR_THREAD_WAS_SUSPENDED + ERROR_THREAD_WAS_SUSPENDED + + + + No documentation. + + + ERROR_IMAGE_NOT_AT_BASE + ERROR_IMAGE_NOT_AT_BASE + + + + No documentation. + + + ERROR_RXACT_STATE_CREATED + ERROR_RXACT_STATE_CREATED + + + + No documentation. + + + ERROR_SEGMENT_NOTIFICATION + ERROR_SEGMENT_NOTIFICATION + + + + No documentation. + + + ERROR_BAD_CURRENT_DIRECTORY + ERROR_BAD_CURRENT_DIRECTORY + + + + No documentation. + + + ERROR_FT_READ_RECOVERY_FROM_BACKUP + ERROR_FT_READ_RECOVERY_FROM_BACKUP + + + + No documentation. + + + ERROR_FT_WRITE_RECOVERY + ERROR_FT_WRITE_RECOVERY + + + + No documentation. + + + ERROR_IMAGE_MACHINE_TYPE_MISMATCH + ERROR_IMAGE_MACHINE_TYPE_MISMATCH + + + + No documentation. + + + ERROR_RECEIVE_PARTIAL + ERROR_RECEIVE_PARTIAL + + + + No documentation. + + + ERROR_RECEIVE_EXPEDITED + ERROR_RECEIVE_EXPEDITED + + + + No documentation. + + + ERROR_RECEIVE_PARTIAL_EXPEDITED + ERROR_RECEIVE_PARTIAL_EXPEDITED + + + + No documentation. + + + ERROR_EVENT_DONE + ERROR_EVENT_DONE + + + + No documentation. + + + ERROR_EVENT_PENDING + ERROR_EVENT_PENDING + + + + No documentation. + + + ERROR_CHECKING_FILE_SYSTEM + ERROR_CHECKING_FILE_SYSTEM + + + + No documentation. + + + ERROR_FATAL_APP_EXIT + ERROR_FATAL_APP_EXIT + + + + No documentation. + + + ERROR_PREDEFINED_HANDLE + ERROR_PREDEFINED_HANDLE + + + + No documentation. + + + ERROR_WAS_UNLOCKED + ERROR_WAS_UNLOCKED + + + + No documentation. + + + ERROR_SERVICE_NOTIFICATION + ERROR_SERVICE_NOTIFICATION + + + + No documentation. + + + ERROR_WAS_LOCKED + ERROR_WAS_LOCKED + + + + No documentation. + + + ERROR_LOG_HARD_ERROR + ERROR_LOG_HARD_ERROR + + + + No documentation. + + + ERROR_ALREADY_WIN32 + ERROR_ALREADY_WIN32 + + + + No documentation. + + + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE + + + + No documentation. + + + ERROR_NO_YIELD_PERFORMED + ERROR_NO_YIELD_PERFORMED + + + + No documentation. + + + ERROR_TIMER_RESUME_IGNORED + ERROR_TIMER_RESUME_IGNORED + + + + No documentation. + + + ERROR_ARBITRATION_UNHANDLED + ERROR_ARBITRATION_UNHANDLED + + + + No documentation. + + + ERROR_CARDBUS_NOT_SUPPORTED + ERROR_CARDBUS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_MP_PROCESSOR_MISMATCH + ERROR_MP_PROCESSOR_MISMATCH + + + + No documentation. + + + ERROR_HIBERNATED + ERROR_HIBERNATED + + + + No documentation. + + + ERROR_RESUME_HIBERNATION + ERROR_RESUME_HIBERNATION + + + + No documentation. + + + ERROR_FIRMWARE_UPDATED + ERROR_FIRMWARE_UPDATED + + + + No documentation. + + + ERROR_DRIVERS_LEAKING_LOCKED_PAGES + ERROR_DRIVERS_LEAKING_LOCKED_PAGES + + + + No documentation. + + + ERROR_WAKE_SYSTEM + ERROR_WAKE_SYSTEM + + + + No documentation. + + + ERROR_WAIT_1 + ERROR_WAIT_1 + + + + No documentation. + + + ERROR_WAIT_2 + ERROR_WAIT_2 + + + + No documentation. + + + ERROR_WAIT_3 + ERROR_WAIT_3 + + + + No documentation. + + + ERROR_WAIT_63 + ERROR_WAIT_63 + + + + No documentation. + + + ERROR_ABANDONED_WAIT_0 + ERROR_ABANDONED_WAIT_0 + + + + No documentation. + + + ERROR_ABANDONED_WAIT_63 + ERROR_ABANDONED_WAIT_63 + + + + No documentation. + + + ERROR_USER_APC + ERROR_USER_APC + + + + No documentation. + + + ERROR_KERNEL_APC + ERROR_KERNEL_APC + + + + No documentation. + + + ERROR_ALERTED + ERROR_ALERTED + + + + No documentation. + + + ERROR_ELEVATION_REQUIRED + ERROR_ELEVATION_REQUIRED + + + + No documentation. + + + ERROR_REPARSE + ERROR_REPARSE + + + + No documentation. + + + ERROR_OPLOCK_BREAK_IN_PROGRESS + ERROR_OPLOCK_BREAK_IN_PROGRESS + + + + No documentation. + + + ERROR_VOLUME_MOUNTED + ERROR_VOLUME_MOUNTED + + + + No documentation. + + + ERROR_RXACT_COMMITTED + ERROR_RXACT_COMMITTED + + + + No documentation. + + + ERROR_NOTIFY_CLEANUP + ERROR_NOTIFY_CLEANUP + + + + No documentation. + + + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED + + + + No documentation. + + + ERROR_PAGE_FAULT_TRANSITION + ERROR_PAGE_FAULT_TRANSITION + + + + No documentation. + + + ERROR_PAGE_FAULT_DEMAND_ZERO + ERROR_PAGE_FAULT_DEMAND_ZERO + + + + No documentation. + + + ERROR_PAGE_FAULT_COPY_ON_WRITE + ERROR_PAGE_FAULT_COPY_ON_WRITE + + + + No documentation. + + + ERROR_PAGE_FAULT_GUARD_PAGE + ERROR_PAGE_FAULT_GUARD_PAGE + + + + No documentation. + + + ERROR_PAGE_FAULT_PAGING_FILE + ERROR_PAGE_FAULT_PAGING_FILE + + + + No documentation. + + + ERROR_CACHE_PAGE_LOCKED + ERROR_CACHE_PAGE_LOCKED + + + + No documentation. + + + ERROR_CRASH_DUMP + ERROR_CRASH_DUMP + + + + No documentation. + + + ERROR_BUFFER_ALL_ZEROS + ERROR_BUFFER_ALL_ZEROS + + + + No documentation. + + + ERROR_REPARSE_OBJECT + ERROR_REPARSE_OBJECT + + + + No documentation. + + + ERROR_RESOURCE_REQUIREMENTS_CHANGED + ERROR_RESOURCE_REQUIREMENTS_CHANGED + + + + No documentation. + + + ERROR_TRANSLATION_COMPLETE + ERROR_TRANSLATION_COMPLETE + + + + No documentation. + + + ERROR_NOTHING_TO_TERMINATE + ERROR_NOTHING_TO_TERMINATE + + + + No documentation. + + + ERROR_PROCESS_NOT_IN_JOB + ERROR_PROCESS_NOT_IN_JOB + + + + No documentation. + + + ERROR_PROCESS_IN_JOB + ERROR_PROCESS_IN_JOB + + + + No documentation. + + + ERROR_VOLSNAP_HIBERNATE_READY + ERROR_VOLSNAP_HIBERNATE_READY + + + + No documentation. + + + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY + + + + No documentation. + + + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED + + + + No documentation. + + + ERROR_INTERRUPT_STILL_CONNECTED + ERROR_INTERRUPT_STILL_CONNECTED + + + + No documentation. + + + ERROR_WAIT_FOR_OPLOCK + ERROR_WAIT_FOR_OPLOCK + + + + No documentation. + + + ERROR_DBG_EXCEPTION_HANDLED + ERROR_DBG_EXCEPTION_HANDLED + + + + No documentation. + + + ERROR_DBG_CONTINUE + ERROR_DBG_CONTINUE + + + + No documentation. + + + ERROR_CALLBACK_POP_STACK + ERROR_CALLBACK_POP_STACK + + + + No documentation. + + + ERROR_COMPRESSION_DISABLED + ERROR_COMPRESSION_DISABLED + + + + No documentation. + + + ERROR_CANTFETCHBACKWARDS + ERROR_CANTFETCHBACKWARDS + + + + No documentation. + + + ERROR_CANTSCROLLBACKWARDS + ERROR_CANTSCROLLBACKWARDS + + + + No documentation. + + + ERROR_ROWSNOTRELEASED + ERROR_ROWSNOTRELEASED + + + + No documentation. + + + ERROR_BAD_ACCESSOR_FLAGS + ERROR_BAD_ACCESSOR_FLAGS + + + + No documentation. + + + ERROR_ERRORS_ENCOUNTERED + ERROR_ERRORS_ENCOUNTERED + + + + No documentation. + + + ERROR_NOT_CAPABLE + ERROR_NOT_CAPABLE + + + + No documentation. + + + ERROR_REQUEST_OUT_OF_SEQUENCE + ERROR_REQUEST_OUT_OF_SEQUENCE + + + + No documentation. + + + ERROR_VERSION_PARSE_ERROR + ERROR_VERSION_PARSE_ERROR + + + + No documentation. + + + ERROR_BADSTARTPOSITION + ERROR_BADSTARTPOSITION + + + + No documentation. + + + ERROR_MEMORY_HARDWARE + ERROR_MEMORY_HARDWARE + + + + No documentation. + + + ERROR_DISK_REPAIR_DISABLED + ERROR_DISK_REPAIR_DISABLED + + + + No documentation. + + + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE + + + + No documentation. + + + ERROR_SYSTEM_POWERSTATE_TRANSITION + ERROR_SYSTEM_POWERSTATE_TRANSITION + + + + No documentation. + + + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION + + + + No documentation. + + + ERROR_MCA_EXCEPTION + ERROR_MCA_EXCEPTION + + + + No documentation. + + + ERROR_ACCESS_AUDIT_BY_POLICY + ERROR_ACCESS_AUDIT_BY_POLICY + + + + No documentation. + + + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY + + + + No documentation. + + + ERROR_ABANDON_HIBERFILE + ERROR_ABANDON_HIBERFILE + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR + + + + No documentation. + + + ERROR_BAD_MCFG_TABLE + ERROR_BAD_MCFG_TABLE + + + + No documentation. + + + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE + + + + No documentation. + + + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK + + + + No documentation. + + + ERROR_CANNOT_BREAK_OPLOCK + ERROR_CANNOT_BREAK_OPLOCK + + + + No documentation. + + + ERROR_OPLOCK_HANDLE_CLOSED + ERROR_OPLOCK_HANDLE_CLOSED + + + + No documentation. + + + ERROR_NO_ACE_CONDITION + ERROR_NO_ACE_CONDITION + + + + No documentation. + + + ERROR_INVALID_ACE_CONDITION + ERROR_INVALID_ACE_CONDITION + + + + No documentation. + + + ERROR_EA_ACCESS_DENIED + ERROR_EA_ACCESS_DENIED + + + + No documentation. + + + ERROR_OPERATION_ABORTED + ERROR_OPERATION_ABORTED + + + + No documentation. + + + ERROR_IO_INCOMPLETE + ERROR_IO_INCOMPLETE + + + + No documentation. + + + ERROR_IO_PENDING + ERROR_IO_PENDING + + + + No documentation. + + + ERROR_NOACCESS + ERROR_NOACCESS + + + + No documentation. + + + ERROR_SWAPERROR + ERROR_SWAPERROR + + + + No documentation. + + + ERROR_STACK_OVERFLOW + ERROR_STACK_OVERFLOW + + + + No documentation. + + + ERROR_INVALID_MESSAGE + ERROR_INVALID_MESSAGE + + + + No documentation. + + + ERROR_CAN_NOT_COMPLETE + ERROR_CAN_NOT_COMPLETE + + + + No documentation. + + + ERROR_INVALID_FLAGS + ERROR_INVALID_FLAGS + + + + No documentation. + + + ERROR_UNRECOGNIZED_VOLUME + ERROR_UNRECOGNIZED_VOLUME + + + + No documentation. + + + ERROR_FILE_INVALID + ERROR_FILE_INVALID + + + + No documentation. + + + ERROR_FULLSCREEN_MODE + ERROR_FULLSCREEN_MODE + + + + No documentation. + + + ERROR_NO_TOKEN + ERROR_NO_TOKEN + + + + No documentation. + + + ERROR_BADDB + ERROR_BADDB + + + + No documentation. + + + ERROR_BADKEY + ERROR_BADKEY + + + + No documentation. + + + ERROR_CANTOPEN + ERROR_CANTOPEN + + + + No documentation. + + + ERROR_CANTREAD + ERROR_CANTREAD + + + + No documentation. + + + ERROR_CANTWRITE + ERROR_CANTWRITE + + + + No documentation. + + + ERROR_REGISTRY_RECOVERED + ERROR_REGISTRY_RECOVERED + + + + No documentation. + + + ERROR_REGISTRY_CORRUPT + ERROR_REGISTRY_CORRUPT + + + + No documentation. + + + ERROR_REGISTRY_IO_FAILED + ERROR_REGISTRY_IO_FAILED + + + + No documentation. + + + ERROR_NOT_REGISTRY_FILE + ERROR_NOT_REGISTRY_FILE + + + + No documentation. + + + ERROR_KEY_DELETED + ERROR_KEY_DELETED + + + + No documentation. + + + ERROR_NO_LOG_SPACE + ERROR_NO_LOG_SPACE + + + + No documentation. + + + ERROR_KEY_HAS_CHILDREN + ERROR_KEY_HAS_CHILDREN + + + + No documentation. + + + ERROR_CHILD_MUST_BE_VOLATILE + ERROR_CHILD_MUST_BE_VOLATILE + + + + No documentation. + + + ERROR_NOTIFY_ENUM_DIR + ERROR_NOTIFY_ENUM_DIR + + + + No documentation. + + + ERROR_DEPENDENT_SERVICES_RUNNING + ERROR_DEPENDENT_SERVICES_RUNNING + + + + No documentation. + + + ERROR_INVALID_SERVICE_CONTROL + ERROR_INVALID_SERVICE_CONTROL + + + + No documentation. + + + ERROR_SERVICE_REQUEST_TIMEOUT + ERROR_SERVICE_REQUEST_TIMEOUT + + + + No documentation. + + + ERROR_SERVICE_NO_THREAD + ERROR_SERVICE_NO_THREAD + + + + No documentation. + + + ERROR_SERVICE_DATABASE_LOCKED + ERROR_SERVICE_DATABASE_LOCKED + + + + No documentation. + + + ERROR_SERVICE_ALREADY_RUNNING + ERROR_SERVICE_ALREADY_RUNNING + + + + No documentation. + + + ERROR_INVALID_SERVICE_ACCOUNT + ERROR_INVALID_SERVICE_ACCOUNT + + + + No documentation. + + + ERROR_SERVICE_DISABLED + ERROR_SERVICE_DISABLED + + + + No documentation. + + + ERROR_CIRCULAR_DEPENDENCY + ERROR_CIRCULAR_DEPENDENCY + + + + No documentation. + + + ERROR_SERVICE_DOES_NOT_EXIST + ERROR_SERVICE_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_SERVICE_CANNOT_ACCEPT_CTRL + ERROR_SERVICE_CANNOT_ACCEPT_CTRL + + + + No documentation. + + + ERROR_SERVICE_NOT_ACTIVE + ERROR_SERVICE_NOT_ACTIVE + + + + No documentation. + + + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT + + + + No documentation. + + + ERROR_EXCEPTION_IN_SERVICE + ERROR_EXCEPTION_IN_SERVICE + + + + No documentation. + + + ERROR_DATABASE_DOES_NOT_EXIST + ERROR_DATABASE_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_SERVICE_SPECIFIC_ERROR + ERROR_SERVICE_SPECIFIC_ERROR + + + + No documentation. + + + ERROR_PROCESS_ABORTED + ERROR_PROCESS_ABORTED + + + + No documentation. + + + ERROR_SERVICE_DEPENDENCY_FAIL + ERROR_SERVICE_DEPENDENCY_FAIL + + + + No documentation. + + + ERROR_SERVICE_LOGON_FAILED + ERROR_SERVICE_LOGON_FAILED + + + + No documentation. + + + ERROR_SERVICE_START_HANG + ERROR_SERVICE_START_HANG + + + + No documentation. + + + ERROR_INVALID_SERVICE_LOCK + ERROR_INVALID_SERVICE_LOCK + + + + No documentation. + + + ERROR_SERVICE_MARKED_FOR_DELETE + ERROR_SERVICE_MARKED_FOR_DELETE + + + + No documentation. + + + ERROR_SERVICE_EXISTS + ERROR_SERVICE_EXISTS + + + + No documentation. + + + ERROR_ALREADY_RUNNING_LKG + ERROR_ALREADY_RUNNING_LKG + + + + No documentation. + + + ERROR_SERVICE_DEPENDENCY_DELETED + ERROR_SERVICE_DEPENDENCY_DELETED + + + + No documentation. + + + ERROR_BOOT_ALREADY_ACCEPTED + ERROR_BOOT_ALREADY_ACCEPTED + + + + No documentation. + + + ERROR_SERVICE_NEVER_STARTED + ERROR_SERVICE_NEVER_STARTED + + + + No documentation. + + + ERROR_DUPLICATE_SERVICE_NAME + ERROR_DUPLICATE_SERVICE_NAME + + + + No documentation. + + + ERROR_DIFFERENT_SERVICE_ACCOUNT + ERROR_DIFFERENT_SERVICE_ACCOUNT + + + + No documentation. + + + ERROR_CANNOT_DETECT_DRIVER_FAILURE + ERROR_CANNOT_DETECT_DRIVER_FAILURE + + + + No documentation. + + + ERROR_CANNOT_DETECT_PROCESS_ABORT + ERROR_CANNOT_DETECT_PROCESS_ABORT + + + + No documentation. + + + ERROR_NO_RECOVERY_PROGRAM + ERROR_NO_RECOVERY_PROGRAM + + + + No documentation. + + + ERROR_SERVICE_NOT_IN_EXE + ERROR_SERVICE_NOT_IN_EXE + + + + No documentation. + + + ERROR_NOT_SAFEBOOT_SERVICE + ERROR_NOT_SAFEBOOT_SERVICE + + + + No documentation. + + + ERROR_END_OF_MEDIA + ERROR_END_OF_MEDIA + + + + No documentation. + + + ERROR_FILEMARK_DETECTED + ERROR_FILEMARK_DETECTED + + + + No documentation. + + + ERROR_BEGINNING_OF_MEDIA + ERROR_BEGINNING_OF_MEDIA + + + + No documentation. + + + ERROR_SETMARK_DETECTED + ERROR_SETMARK_DETECTED + + + + No documentation. + + + ERROR_NO_DATA_DETECTED + ERROR_NO_DATA_DETECTED + + + + No documentation. + + + ERROR_PARTITION_FAILURE + ERROR_PARTITION_FAILURE + + + + No documentation. + + + ERROR_INVALID_BLOCK_LENGTH + ERROR_INVALID_BLOCK_LENGTH + + + + No documentation. + + + ERROR_DEVICE_NOT_PARTITIONED + ERROR_DEVICE_NOT_PARTITIONED + + + + No documentation. + + + ERROR_UNABLE_TO_LOCK_MEDIA + ERROR_UNABLE_TO_LOCK_MEDIA + + + + No documentation. + + + ERROR_UNABLE_TO_UNLOAD_MEDIA + ERROR_UNABLE_TO_UNLOAD_MEDIA + + + + No documentation. + + + ERROR_MEDIA_CHANGED + ERROR_MEDIA_CHANGED + + + + No documentation. + + + ERROR_BUS_RESET + ERROR_BUS_RESET + + + + No documentation. + + + ERROR_NO_MEDIA_IN_DRIVE + ERROR_NO_MEDIA_IN_DRIVE + + + + No documentation. + + + ERROR_NO_UNICODE_TRANSLATION + ERROR_NO_UNICODE_TRANSLATION + + + + No documentation. + + + ERROR_DLL_INIT_FAILED + ERROR_DLL_INIT_FAILED + + + + No documentation. + + + ERROR_SHUTDOWN_IN_PROGRESS + ERROR_SHUTDOWN_IN_PROGRESS + + + + No documentation. + + + ERROR_NO_SHUTDOWN_IN_PROGRESS + ERROR_NO_SHUTDOWN_IN_PROGRESS + + + + No documentation. + + + ERROR_IO_DEVICE + ERROR_IO_DEVICE + + + + No documentation. + + + ERROR_SERIAL_NO_DEVICE + ERROR_SERIAL_NO_DEVICE + + + + No documentation. + + + ERROR_IRQ_BUSY + ERROR_IRQ_BUSY + + + + No documentation. + + + ERROR_MORE_WRITES + ERROR_MORE_WRITES + + + + No documentation. + + + ERROR_COUNTER_TIMEOUT + ERROR_COUNTER_TIMEOUT + + + + No documentation. + + + ERROR_FLOPPY_ID_MARK_NOT_FOUND + ERROR_FLOPPY_ID_MARK_NOT_FOUND + + + + No documentation. + + + ERROR_FLOPPY_WRONG_CYLINDER + ERROR_FLOPPY_WRONG_CYLINDER + + + + No documentation. + + + ERROR_FLOPPY_UNKNOWN_ERROR + ERROR_FLOPPY_UNKNOWN_ERROR + + + + No documentation. + + + ERROR_FLOPPY_BAD_REGISTERS + ERROR_FLOPPY_BAD_REGISTERS + + + + No documentation. + + + ERROR_DISK_RECALIBRATE_FAILED + ERROR_DISK_RECALIBRATE_FAILED + + + + No documentation. + + + ERROR_DISK_OPERATION_FAILED + ERROR_DISK_OPERATION_FAILED + + + + No documentation. + + + ERROR_DISK_RESET_FAILED + ERROR_DISK_RESET_FAILED + + + + No documentation. + + + ERROR_EOM_OVERFLOW + ERROR_EOM_OVERFLOW + + + + No documentation. + + + ERROR_NOT_ENOUGH_SERVER_MEMORY + ERROR_NOT_ENOUGH_SERVER_MEMORY + + + + No documentation. + + + ERROR_POSSIBLE_DEADLOCK + ERROR_POSSIBLE_DEADLOCK + + + + No documentation. + + + ERROR_MAPPED_ALIGNMENT + ERROR_MAPPED_ALIGNMENT + + + + No documentation. + + + ERROR_SET_POWER_STATE_VETOED + ERROR_SET_POWER_STATE_VETOED + + + + No documentation. + + + ERROR_SET_POWER_STATE_FAILED + ERROR_SET_POWER_STATE_FAILED + + + + No documentation. + + + ERROR_TOO_MANY_LINKS + ERROR_TOO_MANY_LINKS + + + + No documentation. + + + ERROR_OLD_WIN_VERSION + ERROR_OLD_WIN_VERSION + + + + No documentation. + + + ERROR_APP_WRONG_OS + ERROR_APP_WRONG_OS + + + + No documentation. + + + ERROR_SINGLE_INSTANCE_APP + ERROR_SINGLE_INSTANCE_APP + + + + No documentation. + + + ERROR_RMODE_APP + ERROR_RMODE_APP + + + + No documentation. + + + ERROR_INVALID_DLL + ERROR_INVALID_DLL + + + + No documentation. + + + ERROR_NO_ASSOCIATION + ERROR_NO_ASSOCIATION + + + + No documentation. + + + ERROR_DDE_FAIL + ERROR_DDE_FAIL + + + + No documentation. + + + ERROR_DLL_NOT_FOUND + ERROR_DLL_NOT_FOUND + + + + No documentation. + + + ERROR_NO_MORE_USER_HANDLES + ERROR_NO_MORE_USER_HANDLES + + + + No documentation. + + + ERROR_MESSAGE_SYNC_ONLY + ERROR_MESSAGE_SYNC_ONLY + + + + No documentation. + + + ERROR_SOURCE_ELEMENT_EMPTY + ERROR_SOURCE_ELEMENT_EMPTY + + + + No documentation. + + + ERROR_DESTINATION_ELEMENT_FULL + ERROR_DESTINATION_ELEMENT_FULL + + + + No documentation. + + + ERROR_ILLEGAL_ELEMENT_ADDRESS + ERROR_ILLEGAL_ELEMENT_ADDRESS + + + + No documentation. + + + ERROR_MAGAZINE_NOT_PRESENT + ERROR_MAGAZINE_NOT_PRESENT + + + + No documentation. + + + ERROR_DEVICE_REINITIALIZATION_NEEDED + ERROR_DEVICE_REINITIALIZATION_NEEDED + + + + No documentation. + + + ERROR_DEVICE_REQUIRES_CLEANING + ERROR_DEVICE_REQUIRES_CLEANING + + + + No documentation. + + + ERROR_DEVICE_DOOR_OPEN + ERROR_DEVICE_DOOR_OPEN + + + + No documentation. + + + ERROR_DEVICE_NOT_CONNECTED + ERROR_DEVICE_NOT_CONNECTED + + + + No documentation. + + + ERROR_NOT_FOUND + ERROR_NOT_FOUND + + + + No documentation. + + + ERROR_NO_MATCH + ERROR_NO_MATCH + + + + No documentation. + + + ERROR_SET_NOT_FOUND + ERROR_SET_NOT_FOUND + + + + No documentation. + + + ERROR_POINT_NOT_FOUND + ERROR_POINT_NOT_FOUND + + + + No documentation. + + + ERROR_NO_TRACKING_SERVICE + ERROR_NO_TRACKING_SERVICE + + + + No documentation. + + + ERROR_NO_VOLUME_ID + ERROR_NO_VOLUME_ID + + + + No documentation. + + + ERROR_UNABLE_TO_REMOVE_REPLACED + ERROR_UNABLE_TO_REMOVE_REPLACED + + + + No documentation. + + + ERROR_UNABLE_TO_MOVE_REPLACEMENT + ERROR_UNABLE_TO_MOVE_REPLACEMENT + + + + No documentation. + + + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 + + + + No documentation. + + + ERROR_JOURNAL_DELETE_IN_PROGRESS + ERROR_JOURNAL_DELETE_IN_PROGRESS + + + + No documentation. + + + ERROR_JOURNAL_NOT_ACTIVE + ERROR_JOURNAL_NOT_ACTIVE + + + + No documentation. + + + ERROR_POTENTIAL_FILE_FOUND + ERROR_POTENTIAL_FILE_FOUND + + + + No documentation. + + + ERROR_JOURNAL_ENTRY_DELETED + ERROR_JOURNAL_ENTRY_DELETED + + + + No documentation. + + + ERROR_SHUTDOWN_IS_SCHEDULED + ERROR_SHUTDOWN_IS_SCHEDULED + + + + No documentation. + + + ERROR_SHUTDOWN_USERS_LOGGED_ON + ERROR_SHUTDOWN_USERS_LOGGED_ON + + + + No documentation. + + + ERROR_BAD_DEVICE + ERROR_BAD_DEVICE + + + + No documentation. + + + ERROR_CONNECTION_UNAVAIL + ERROR_CONNECTION_UNAVAIL + + + + No documentation. + + + ERROR_DEVICE_ALREADY_REMEMBERED + ERROR_DEVICE_ALREADY_REMEMBERED + + + + No documentation. + + + ERROR_NO_NET_OR_BAD_PATH + ERROR_NO_NET_OR_BAD_PATH + + + + No documentation. + + + ERROR_BAD_PROVIDER + ERROR_BAD_PROVIDER + + + + No documentation. + + + ERROR_CANNOT_OPEN_PROFILE + ERROR_CANNOT_OPEN_PROFILE + + + + No documentation. + + + ERROR_BAD_PROFILE + ERROR_BAD_PROFILE + + + + No documentation. + + + ERROR_NOT_CONTAINER + ERROR_NOT_CONTAINER + + + + No documentation. + + + ERROR_EXTENDED_ERROR + ERROR_EXTENDED_ERROR + + + + No documentation. + + + ERROR_INVALID_GROUPNAME + ERROR_INVALID_GROUPNAME + + + + No documentation. + + + ERROR_INVALID_COMPUTERNAME + ERROR_INVALID_COMPUTERNAME + + + + No documentation. + + + ERROR_INVALID_EVENTNAME + ERROR_INVALID_EVENTNAME + + + + No documentation. + + + ERROR_INVALID_DOMAINNAME + ERROR_INVALID_DOMAINNAME + + + + No documentation. + + + ERROR_INVALID_SERVICENAME + ERROR_INVALID_SERVICENAME + + + + No documentation. + + + ERROR_INVALID_NETNAME + ERROR_INVALID_NETNAME + + + + No documentation. + + + ERROR_INVALID_SHARENAME + ERROR_INVALID_SHARENAME + + + + No documentation. + + + ERROR_INVALID_PASSWORDNAME + ERROR_INVALID_PASSWORDNAME + + + + No documentation. + + + ERROR_INVALID_MESSAGENAME + ERROR_INVALID_MESSAGENAME + + + + No documentation. + + + ERROR_INVALID_MESSAGEDEST + ERROR_INVALID_MESSAGEDEST + + + + No documentation. + + + ERROR_SESSION_CREDENTIAL_CONFLICT + ERROR_SESSION_CREDENTIAL_CONFLICT + + + + No documentation. + + + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DUP_DOMAINNAME + ERROR_DUP_DOMAINNAME + + + + No documentation. + + + ERROR_NO_NETWORK + ERROR_NO_NETWORK + + + + No documentation. + + + ERROR_CANCELLED + ERROR_CANCELLED + + + + No documentation. + + + ERROR_USER_MAPPED_FILE + ERROR_USER_MAPPED_FILE + + + + No documentation. + + + ERROR_CONNECTION_REFUSED + ERROR_CONNECTION_REFUSED + + + + No documentation. + + + ERROR_GRACEFUL_DISCONNECT + ERROR_GRACEFUL_DISCONNECT + + + + No documentation. + + + ERROR_ADDRESS_ALREADY_ASSOCIATED + ERROR_ADDRESS_ALREADY_ASSOCIATED + + + + No documentation. + + + ERROR_ADDRESS_NOT_ASSOCIATED + ERROR_ADDRESS_NOT_ASSOCIATED + + + + No documentation. + + + ERROR_CONNECTION_INVALID + ERROR_CONNECTION_INVALID + + + + No documentation. + + + ERROR_CONNECTION_ACTIVE + ERROR_CONNECTION_ACTIVE + + + + No documentation. + + + ERROR_NETWORK_UNREACHABLE + ERROR_NETWORK_UNREACHABLE + + + + No documentation. + + + ERROR_HOST_UNREACHABLE + ERROR_HOST_UNREACHABLE + + + + No documentation. + + + ERROR_PROTOCOL_UNREACHABLE + ERROR_PROTOCOL_UNREACHABLE + + + + No documentation. + + + ERROR_PORT_UNREACHABLE + ERROR_PORT_UNREACHABLE + + + + No documentation. + + + ERROR_REQUEST_ABORTED + ERROR_REQUEST_ABORTED + + + + No documentation. + + + ERROR_CONNECTION_ABORTED + ERROR_CONNECTION_ABORTED + + + + No documentation. + + + ERROR_RETRY + ERROR_RETRY + + + + No documentation. + + + ERROR_CONNECTION_COUNT_LIMIT + ERROR_CONNECTION_COUNT_LIMIT + + + + No documentation. + + + ERROR_LOGIN_TIME_RESTRICTION + ERROR_LOGIN_TIME_RESTRICTION + + + + No documentation. + + + ERROR_LOGIN_WKSTA_RESTRICTION + ERROR_LOGIN_WKSTA_RESTRICTION + + + + No documentation. + + + ERROR_INCORRECT_ADDRESS + ERROR_INCORRECT_ADDRESS + + + + No documentation. + + + ERROR_ALREADY_REGISTERED + ERROR_ALREADY_REGISTERED + + + + No documentation. + + + ERROR_SERVICE_NOT_FOUND + ERROR_SERVICE_NOT_FOUND + + + + No documentation. + + + ERROR_NOT_AUTHENTICATED + ERROR_NOT_AUTHENTICATED + + + + No documentation. + + + ERROR_NOT_LOGGED_ON + ERROR_NOT_LOGGED_ON + + + + No documentation. + + + ERROR_CONTINUE + ERROR_CONTINUE + + + + No documentation. + + + ERROR_ALREADY_INITIALIZED + ERROR_ALREADY_INITIALIZED + + + + No documentation. + + + ERROR_NO_MORE_DEVICES + ERROR_NO_MORE_DEVICES + + + + No documentation. + + + ERROR_NO_SUCH_SITE + ERROR_NO_SUCH_SITE + + + + No documentation. + + + ERROR_DOMAIN_CONTROLLER_EXISTS + ERROR_DOMAIN_CONTROLLER_EXISTS + + + + No documentation. + + + ERROR_ONLY_IF_CONNECTED + ERROR_ONLY_IF_CONNECTED + + + + No documentation. + + + ERROR_OVERRIDE_NOCHANGES + ERROR_OVERRIDE_NOCHANGES + + + + No documentation. + + + ERROR_BAD_USER_PROFILE + ERROR_BAD_USER_PROFILE + + + + No documentation. + + + ERROR_NOT_SUPPORTED_ON_SBS + ERROR_NOT_SUPPORTED_ON_SBS + + + + No documentation. + + + ERROR_SERVER_SHUTDOWN_IN_PROGRESS + ERROR_SERVER_SHUTDOWN_IN_PROGRESS + + + + No documentation. + + + ERROR_HOST_DOWN + ERROR_HOST_DOWN + + + + No documentation. + + + ERROR_NON_ACCOUNT_SID + ERROR_NON_ACCOUNT_SID + + + + No documentation. + + + ERROR_NON_DOMAIN_SID + ERROR_NON_DOMAIN_SID + + + + No documentation. + + + ERROR_APPHELP_BLOCK + ERROR_APPHELP_BLOCK + + + + No documentation. + + + ERROR_ACCESS_DISABLED_BY_POLICY + ERROR_ACCESS_DISABLED_BY_POLICY + + + + No documentation. + + + ERROR_REG_NAT_CONSUMPTION + ERROR_REG_NAT_CONSUMPTION + + + + No documentation. + + + ERROR_CSCSHARE_OFFLINE + ERROR_CSCSHARE_OFFLINE + + + + No documentation. + + + ERROR_PKINIT_FAILURE + ERROR_PKINIT_FAILURE + + + + No documentation. + + + ERROR_SMARTCARD_SUBSYSTEM_FAILURE + ERROR_SMARTCARD_SUBSYSTEM_FAILURE + + + + No documentation. + + + ERROR_DOWNGRADE_DETECTED + ERROR_DOWNGRADE_DETECTED + + + + No documentation. + + + ERROR_MACHINE_LOCKED + ERROR_MACHINE_LOCKED + + + + No documentation. + + + ERROR_CALLBACK_SUPPLIED_INVALID_DATA + ERROR_CALLBACK_SUPPLIED_INVALID_DATA + + + + No documentation. + + + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED + + + + No documentation. + + + ERROR_DRIVER_BLOCKED + ERROR_DRIVER_BLOCKED + + + + No documentation. + + + ERROR_INVALID_IMPORT_OF_NON_DLL + ERROR_INVALID_IMPORT_OF_NON_DLL + + + + No documentation. + + + ERROR_ACCESS_DISABLED_WEBBLADE + ERROR_ACCESS_DISABLED_WEBBLADE + + + + No documentation. + + + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER + + + + No documentation. + + + ERROR_RECOVERY_FAILURE + ERROR_RECOVERY_FAILURE + + + + No documentation. + + + ERROR_ALREADY_FIBER + ERROR_ALREADY_FIBER + + + + No documentation. + + + ERROR_ALREADY_THREAD + ERROR_ALREADY_THREAD + + + + No documentation. + + + ERROR_STACK_BUFFER_OVERRUN + ERROR_STACK_BUFFER_OVERRUN + + + + No documentation. + + + ERROR_PARAMETER_QUOTA_EXCEEDED + ERROR_PARAMETER_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_DEBUGGER_INACTIVE + ERROR_DEBUGGER_INACTIVE + + + + No documentation. + + + ERROR_DELAY_LOAD_FAILED + ERROR_DELAY_LOAD_FAILED + + + + No documentation. + + + ERROR_VDM_DISALLOWED + ERROR_VDM_DISALLOWED + + + + No documentation. + + + ERROR_UNIDENTIFIED_ERROR + ERROR_UNIDENTIFIED_ERROR + + + + No documentation. + + + ERROR_INVALID_CRUNTIME_PARAMETER + ERROR_INVALID_CRUNTIME_PARAMETER + + + + No documentation. + + + ERROR_BEYOND_VDL + ERROR_BEYOND_VDL + + + + No documentation. + + + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE + + + + No documentation. + + + ERROR_DRIVER_PROCESS_TERMINATED + ERROR_DRIVER_PROCESS_TERMINATED + + + + No documentation. + + + ERROR_IMPLEMENTATION_LIMIT + ERROR_IMPLEMENTATION_LIMIT + + + + No documentation. + + + ERROR_PROCESS_IS_PROTECTED + ERROR_PROCESS_IS_PROTECTED + + + + No documentation. + + + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING + + + + No documentation. + + + ERROR_DISK_QUOTA_EXCEEDED + ERROR_DISK_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_CONTENT_BLOCKED + ERROR_CONTENT_BLOCKED + + + + No documentation. + + + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE + + + + No documentation. + + + ERROR_APP_HANG + ERROR_APP_HANG + + + + No documentation. + + + ERROR_INVALID_LABEL + ERROR_INVALID_LABEL + + + + No documentation. + + + ERROR_NOT_ALL_ASSIGNED + ERROR_NOT_ALL_ASSIGNED + + + + No documentation. + + + ERROR_SOME_NOT_MAPPED + ERROR_SOME_NOT_MAPPED + + + + No documentation. + + + ERROR_NO_QUOTAS_FOR_ACCOUNT + ERROR_NO_QUOTAS_FOR_ACCOUNT + + + + No documentation. + + + ERROR_LOCAL_USER_SESSION_KEY + ERROR_LOCAL_USER_SESSION_KEY + + + + No documentation. + + + ERROR_NULL_LM_PASSWORD + ERROR_NULL_LM_PASSWORD + + + + No documentation. + + + ERROR_UNKNOWN_REVISION + ERROR_UNKNOWN_REVISION + + + + No documentation. + + + ERROR_REVISION_MISMATCH + ERROR_REVISION_MISMATCH + + + + No documentation. + + + ERROR_INVALID_OWNER + ERROR_INVALID_OWNER + + + + No documentation. + + + ERROR_INVALID_PRIMARY_GROUP + ERROR_INVALID_PRIMARY_GROUP + + + + No documentation. + + + ERROR_NO_IMPERSONATION_TOKEN + ERROR_NO_IMPERSONATION_TOKEN + + + + No documentation. + + + ERROR_CANT_DISABLE_MANDATORY + ERROR_CANT_DISABLE_MANDATORY + + + + No documentation. + + + ERROR_NO_LOGON_SERVERS + ERROR_NO_LOGON_SERVERS + + + + No documentation. + + + ERROR_NO_SUCH_LOGON_SESSION + ERROR_NO_SUCH_LOGON_SESSION + + + + No documentation. + + + ERROR_NO_SUCH_PRIVILEGE + ERROR_NO_SUCH_PRIVILEGE + + + + No documentation. + + + ERROR_PRIVILEGE_NOT_HELD + ERROR_PRIVILEGE_NOT_HELD + + + + No documentation. + + + ERROR_INVALID_ACCOUNT_NAME + ERROR_INVALID_ACCOUNT_NAME + + + + No documentation. + + + ERROR_USER_EXISTS + ERROR_USER_EXISTS + + + + No documentation. + + + ERROR_NO_SUCH_USER + ERROR_NO_SUCH_USER + + + + No documentation. + + + ERROR_GROUP_EXISTS + ERROR_GROUP_EXISTS + + + + No documentation. + + + ERROR_NO_SUCH_GROUP + ERROR_NO_SUCH_GROUP + + + + No documentation. + + + ERROR_MEMBER_IN_GROUP + ERROR_MEMBER_IN_GROUP + + + + No documentation. + + + ERROR_MEMBER_NOT_IN_GROUP + ERROR_MEMBER_NOT_IN_GROUP + + + + No documentation. + + + ERROR_LAST_ADMIN + ERROR_LAST_ADMIN + + + + No documentation. + + + ERROR_WRONG_PASSWORD + ERROR_WRONG_PASSWORD + + + + No documentation. + + + ERROR_ILL_FORMED_PASSWORD + ERROR_ILL_FORMED_PASSWORD + + + + No documentation. + + + ERROR_PASSWORD_RESTRICTION + ERROR_PASSWORD_RESTRICTION + + + + No documentation. + + + ERROR_LOGON_FAILURE + ERROR_LOGON_FAILURE + + + + No documentation. + + + ERROR_ACCOUNT_RESTRICTION + ERROR_ACCOUNT_RESTRICTION + + + + No documentation. + + + ERROR_INVALID_LOGON_HOURS + ERROR_INVALID_LOGON_HOURS + + + + No documentation. + + + ERROR_INVALID_WORKSTATION + ERROR_INVALID_WORKSTATION + + + + No documentation. + + + ERROR_PASSWORD_EXPIRED + ERROR_PASSWORD_EXPIRED + + + + No documentation. + + + ERROR_ACCOUNT_DISABLED + ERROR_ACCOUNT_DISABLED + + + + No documentation. + + + ERROR_NONE_MAPPED + ERROR_NONE_MAPPED + + + + No documentation. + + + ERROR_TOO_MANY_LUIDS_REQUESTED + ERROR_TOO_MANY_LUIDS_REQUESTED + + + + No documentation. + + + ERROR_LUIDS_EXHAUSTED + ERROR_LUIDS_EXHAUSTED + + + + No documentation. + + + ERROR_INVALID_SUB_AUTHORITY + ERROR_INVALID_SUB_AUTHORITY + + + + No documentation. + + + ERROR_INVALID_ACL + ERROR_INVALID_ACL + + + + No documentation. + + + ERROR_INVALID_SID + ERROR_INVALID_SID + + + + No documentation. + + + ERROR_INVALID_SECURITY_DESCR + ERROR_INVALID_SECURITY_DESCR + + + + No documentation. + + + ERROR_BAD_INHERITANCE_ACL + ERROR_BAD_INHERITANCE_ACL + + + + No documentation. + + + ERROR_SERVER_DISABLED + ERROR_SERVER_DISABLED + + + + No documentation. + + + ERROR_SERVER_NOT_DISABLED + ERROR_SERVER_NOT_DISABLED + + + + No documentation. + + + ERROR_INVALID_ID_AUTHORITY + ERROR_INVALID_ID_AUTHORITY + + + + No documentation. + + + ERROR_ALLOTTED_SPACE_EXCEEDED + ERROR_ALLOTTED_SPACE_EXCEEDED + + + + No documentation. + + + ERROR_INVALID_GROUP_ATTRIBUTES + ERROR_INVALID_GROUP_ATTRIBUTES + + + + No documentation. + + + ERROR_BAD_IMPERSONATION_LEVEL + ERROR_BAD_IMPERSONATION_LEVEL + + + + No documentation. + + + ERROR_CANT_OPEN_ANONYMOUS + ERROR_CANT_OPEN_ANONYMOUS + + + + No documentation. + + + ERROR_BAD_VALIDATION_CLASS + ERROR_BAD_VALIDATION_CLASS + + + + No documentation. + + + ERROR_BAD_TOKEN_TYPE + ERROR_BAD_TOKEN_TYPE + + + + No documentation. + + + ERROR_NO_SECURITY_ON_OBJECT + ERROR_NO_SECURITY_ON_OBJECT + + + + No documentation. + + + ERROR_CANT_ACCESS_DOMAIN_INFO + ERROR_CANT_ACCESS_DOMAIN_INFO + + + + No documentation. + + + ERROR_INVALID_SERVER_STATE + ERROR_INVALID_SERVER_STATE + + + + No documentation. + + + ERROR_INVALID_DOMAIN_STATE + ERROR_INVALID_DOMAIN_STATE + + + + No documentation. + + + ERROR_INVALID_DOMAIN_ROLE + ERROR_INVALID_DOMAIN_ROLE + + + + No documentation. + + + ERROR_NO_SUCH_DOMAIN + ERROR_NO_SUCH_DOMAIN + + + + No documentation. + + + ERROR_DOMAIN_EXISTS + ERROR_DOMAIN_EXISTS + + + + No documentation. + + + ERROR_DOMAIN_LIMIT_EXCEEDED + ERROR_DOMAIN_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_INTERNAL_DB_CORRUPTION + ERROR_INTERNAL_DB_CORRUPTION + + + + No documentation. + + + ERROR_INTERNAL_ERROR + ERROR_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GENERIC_NOT_MAPPED + ERROR_GENERIC_NOT_MAPPED + + + + No documentation. + + + ERROR_BAD_DESCRIPTOR_FORMAT + ERROR_BAD_DESCRIPTOR_FORMAT + + + + No documentation. + + + ERROR_NOT_LOGON_PROCESS + ERROR_NOT_LOGON_PROCESS + + + + No documentation. + + + ERROR_LOGON_SESSION_EXISTS + ERROR_LOGON_SESSION_EXISTS + + + + No documentation. + + + ERROR_NO_SUCH_PACKAGE + ERROR_NO_SUCH_PACKAGE + + + + No documentation. + + + ERROR_BAD_LOGON_SESSION_STATE + ERROR_BAD_LOGON_SESSION_STATE + + + + No documentation. + + + ERROR_LOGON_SESSION_COLLISION + ERROR_LOGON_SESSION_COLLISION + + + + No documentation. + + + ERROR_INVALID_LOGON_TYPE + ERROR_INVALID_LOGON_TYPE + + + + No documentation. + + + ERROR_CANNOT_IMPERSONATE + ERROR_CANNOT_IMPERSONATE + + + + No documentation. + + + ERROR_RXACT_INVALID_STATE + ERROR_RXACT_INVALID_STATE + + + + No documentation. + + + ERROR_RXACT_COMMIT_FAILURE + ERROR_RXACT_COMMIT_FAILURE + + + + No documentation. + + + ERROR_SPECIAL_ACCOUNT + ERROR_SPECIAL_ACCOUNT + + + + No documentation. + + + ERROR_SPECIAL_GROUP + ERROR_SPECIAL_GROUP + + + + No documentation. + + + ERROR_SPECIAL_USER + ERROR_SPECIAL_USER + + + + No documentation. + + + ERROR_MEMBERS_PRIMARY_GROUP + ERROR_MEMBERS_PRIMARY_GROUP + + + + No documentation. + + + ERROR_TOKEN_ALREADY_IN_USE + ERROR_TOKEN_ALREADY_IN_USE + + + + No documentation. + + + ERROR_NO_SUCH_ALIAS + ERROR_NO_SUCH_ALIAS + + + + No documentation. + + + ERROR_MEMBER_NOT_IN_ALIAS + ERROR_MEMBER_NOT_IN_ALIAS + + + + No documentation. + + + ERROR_MEMBER_IN_ALIAS + ERROR_MEMBER_IN_ALIAS + + + + No documentation. + + + ERROR_ALIAS_EXISTS + ERROR_ALIAS_EXISTS + + + + No documentation. + + + ERROR_LOGON_NOT_GRANTED + ERROR_LOGON_NOT_GRANTED + + + + No documentation. + + + ERROR_TOO_MANY_SECRETS + ERROR_TOO_MANY_SECRETS + + + + No documentation. + + + ERROR_SECRET_TOO_LONG + ERROR_SECRET_TOO_LONG + + + + No documentation. + + + ERROR_INTERNAL_DB_ERROR + ERROR_INTERNAL_DB_ERROR + + + + No documentation. + + + ERROR_TOO_MANY_CONTEXT_IDS + ERROR_TOO_MANY_CONTEXT_IDS + + + + No documentation. + + + ERROR_LOGON_TYPE_NOT_GRANTED + ERROR_LOGON_TYPE_NOT_GRANTED + + + + No documentation. + + + ERROR_NT_CROSS_ENCRYPTION_REQUIRED + ERROR_NT_CROSS_ENCRYPTION_REQUIRED + + + + No documentation. + + + ERROR_NO_SUCH_MEMBER + ERROR_NO_SUCH_MEMBER + + + + No documentation. + + + ERROR_INVALID_MEMBER + ERROR_INVALID_MEMBER + + + + No documentation. + + + ERROR_TOO_MANY_SIDS + ERROR_TOO_MANY_SIDS + + + + No documentation. + + + ERROR_LM_CROSS_ENCRYPTION_REQUIRED + ERROR_LM_CROSS_ENCRYPTION_REQUIRED + + + + No documentation. + + + ERROR_NO_INHERITANCE + ERROR_NO_INHERITANCE + + + + No documentation. + + + ERROR_FILE_CORRUPT + ERROR_FILE_CORRUPT + + + + No documentation. + + + ERROR_DISK_CORRUPT + ERROR_DISK_CORRUPT + + + + No documentation. + + + ERROR_NO_USER_SESSION_KEY + ERROR_NO_USER_SESSION_KEY + + + + No documentation. + + + ERROR_LICENSE_QUOTA_EXCEEDED + ERROR_LICENSE_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_WRONG_TARGET_NAME + ERROR_WRONG_TARGET_NAME + + + + No documentation. + + + ERROR_MUTUAL_AUTH_FAILED + ERROR_MUTUAL_AUTH_FAILED + + + + No documentation. + + + ERROR_TIME_SKEW + ERROR_TIME_SKEW + + + + No documentation. + + + ERROR_CURRENT_DOMAIN_NOT_ALLOWED + ERROR_CURRENT_DOMAIN_NOT_ALLOWED + + + + No documentation. + + + ERROR_INVALID_WINDOW_HANDLE + ERROR_INVALID_WINDOW_HANDLE + + + + No documentation. + + + ERROR_INVALID_MENU_HANDLE + ERROR_INVALID_MENU_HANDLE + + + + No documentation. + + + ERROR_INVALID_CURSOR_HANDLE + ERROR_INVALID_CURSOR_HANDLE + + + + No documentation. + + + ERROR_INVALID_ACCEL_HANDLE + ERROR_INVALID_ACCEL_HANDLE + + + + No documentation. + + + ERROR_INVALID_HOOK_HANDLE + ERROR_INVALID_HOOK_HANDLE + + + + No documentation. + + + ERROR_INVALID_DWP_HANDLE + ERROR_INVALID_DWP_HANDLE + + + + No documentation. + + + ERROR_TLW_WITH_WSCHILD + ERROR_TLW_WITH_WSCHILD + + + + No documentation. + + + ERROR_CANNOT_FIND_WND_CLASS + ERROR_CANNOT_FIND_WND_CLASS + + + + No documentation. + + + ERROR_WINDOW_OF_OTHER_THREAD + ERROR_WINDOW_OF_OTHER_THREAD + + + + No documentation. + + + ERROR_HOTKEY_ALREADY_REGISTERED + ERROR_HOTKEY_ALREADY_REGISTERED + + + + No documentation. + + + ERROR_CLASS_ALREADY_EXISTS + ERROR_CLASS_ALREADY_EXISTS + + + + No documentation. + + + ERROR_CLASS_DOES_NOT_EXIST + ERROR_CLASS_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_CLASS_HAS_WINDOWS + ERROR_CLASS_HAS_WINDOWS + + + + No documentation. + + + ERROR_INVALID_INDEX + ERROR_INVALID_INDEX + + + + No documentation. + + + ERROR_INVALID_ICON_HANDLE + ERROR_INVALID_ICON_HANDLE + + + + No documentation. + + + ERROR_PRIVATE_DIALOG_INDEX + ERROR_PRIVATE_DIALOG_INDEX + + + + No documentation. + + + ERROR_LISTBOX_ID_NOT_FOUND + ERROR_LISTBOX_ID_NOT_FOUND + + + + No documentation. + + + ERROR_NO_WILDCARD_CHARACTERS + ERROR_NO_WILDCARD_CHARACTERS + + + + No documentation. + + + ERROR_CLIPBOARD_NOT_OPEN + ERROR_CLIPBOARD_NOT_OPEN + + + + No documentation. + + + ERROR_HOTKEY_NOT_REGISTERED + ERROR_HOTKEY_NOT_REGISTERED + + + + No documentation. + + + ERROR_WINDOW_NOT_DIALOG + ERROR_WINDOW_NOT_DIALOG + + + + No documentation. + + + ERROR_CONTROL_ID_NOT_FOUND + ERROR_CONTROL_ID_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_COMBOBOX_MESSAGE + ERROR_INVALID_COMBOBOX_MESSAGE + + + + No documentation. + + + ERROR_WINDOW_NOT_COMBOBOX + ERROR_WINDOW_NOT_COMBOBOX + + + + No documentation. + + + ERROR_INVALID_EDIT_HEIGHT + ERROR_INVALID_EDIT_HEIGHT + + + + No documentation. + + + ERROR_DC_NOT_FOUND + ERROR_DC_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_HOOK_FILTER + ERROR_INVALID_HOOK_FILTER + + + + No documentation. + + + ERROR_INVALID_FILTER_PROC + ERROR_INVALID_FILTER_PROC + + + + No documentation. + + + ERROR_HOOK_NEEDS_HMOD + ERROR_HOOK_NEEDS_HMOD + + + + No documentation. + + + ERROR_GLOBAL_ONLY_HOOK + ERROR_GLOBAL_ONLY_HOOK + + + + No documentation. + + + ERROR_JOURNAL_HOOK_SET + ERROR_JOURNAL_HOOK_SET + + + + No documentation. + + + ERROR_HOOK_NOT_INSTALLED + ERROR_HOOK_NOT_INSTALLED + + + + No documentation. + + + ERROR_INVALID_LB_MESSAGE + ERROR_INVALID_LB_MESSAGE + + + + No documentation. + + + ERROR_SETCOUNT_ON_BAD_LB + ERROR_SETCOUNT_ON_BAD_LB + + + + No documentation. + + + ERROR_LB_WITHOUT_TABSTOPS + ERROR_LB_WITHOUT_TABSTOPS + + + + No documentation. + + + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD + + + + No documentation. + + + ERROR_CHILD_WINDOW_MENU + ERROR_CHILD_WINDOW_MENU + + + + No documentation. + + + ERROR_NO_SYSTEM_MENU + ERROR_NO_SYSTEM_MENU + + + + No documentation. + + + ERROR_INVALID_MSGBOX_STYLE + ERROR_INVALID_MSGBOX_STYLE + + + + No documentation. + + + ERROR_INVALID_SPI_VALUE + ERROR_INVALID_SPI_VALUE + + + + No documentation. + + + ERROR_SCREEN_ALREADY_LOCKED + ERROR_SCREEN_ALREADY_LOCKED + + + + No documentation. + + + ERROR_HWNDS_HAVE_DIFF_PARENT + ERROR_HWNDS_HAVE_DIFF_PARENT + + + + No documentation. + + + ERROR_NOT_CHILD_WINDOW + ERROR_NOT_CHILD_WINDOW + + + + No documentation. + + + ERROR_INVALID_GW_COMMAND + ERROR_INVALID_GW_COMMAND + + + + No documentation. + + + ERROR_INVALID_THREAD_ID + ERROR_INVALID_THREAD_ID + + + + No documentation. + + + ERROR_NON_MDICHILD_WINDOW + ERROR_NON_MDICHILD_WINDOW + + + + No documentation. + + + ERROR_POPUP_ALREADY_ACTIVE + ERROR_POPUP_ALREADY_ACTIVE + + + + No documentation. + + + ERROR_NO_SCROLLBARS + ERROR_NO_SCROLLBARS + + + + No documentation. + + + ERROR_INVALID_SCROLLBAR_RANGE + ERROR_INVALID_SCROLLBAR_RANGE + + + + No documentation. + + + ERROR_INVALID_SHOWWIN_COMMAND + ERROR_INVALID_SHOWWIN_COMMAND + + + + No documentation. + + + ERROR_NO_SYSTEM_RESOURCES + ERROR_NO_SYSTEM_RESOURCES + + + + No documentation. + + + ERROR_NONPAGED_SYSTEM_RESOURCES + ERROR_NONPAGED_SYSTEM_RESOURCES + + + + No documentation. + + + ERROR_PAGED_SYSTEM_RESOURCES + ERROR_PAGED_SYSTEM_RESOURCES + + + + No documentation. + + + ERROR_WORKING_SET_QUOTA + ERROR_WORKING_SET_QUOTA + + + + No documentation. + + + ERROR_PAGEFILE_QUOTA + ERROR_PAGEFILE_QUOTA + + + + No documentation. + + + ERROR_COMMITMENT_LIMIT + ERROR_COMMITMENT_LIMIT + + + + No documentation. + + + ERROR_MENU_ITEM_NOT_FOUND + ERROR_MENU_ITEM_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_KEYBOARD_HANDLE + ERROR_INVALID_KEYBOARD_HANDLE + + + + No documentation. + + + ERROR_HOOK_TYPE_NOT_ALLOWED + ERROR_HOOK_TYPE_NOT_ALLOWED + + + + No documentation. + + + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION + + + + No documentation. + + + ERROR_TIMEOUT + ERROR_TIMEOUT + + + + No documentation. + + + ERROR_INVALID_MONITOR_HANDLE + ERROR_INVALID_MONITOR_HANDLE + + + + No documentation. + + + ERROR_INCORRECT_SIZE + ERROR_INCORRECT_SIZE + + + + No documentation. + + + ERROR_SYMLINK_CLASS_DISABLED + ERROR_SYMLINK_CLASS_DISABLED + + + + No documentation. + + + ERROR_SYMLINK_NOT_SUPPORTED + ERROR_SYMLINK_NOT_SUPPORTED + + + + No documentation. + + + ERROR_XML_PARSE_ERROR + ERROR_XML_PARSE_ERROR + + + + No documentation. + + + ERROR_XMLDSIG_ERROR + ERROR_XMLDSIG_ERROR + + + + No documentation. + + + ERROR_RESTART_APPLICATION + ERROR_RESTART_APPLICATION + + + + No documentation. + + + ERROR_WRONG_COMPARTMENT + ERROR_WRONG_COMPARTMENT + + + + No documentation. + + + ERROR_AUTHIP_FAILURE + ERROR_AUTHIP_FAILURE + + + + No documentation. + + + ERROR_NO_NVRAM_RESOURCES + ERROR_NO_NVRAM_RESOURCES + + + + No documentation. + + + ERROR_EVENTLOG_FILE_CORRUPT + ERROR_EVENTLOG_FILE_CORRUPT + + + + No documentation. + + + ERROR_EVENTLOG_CANT_START + ERROR_EVENTLOG_CANT_START + + + + No documentation. + + + ERROR_LOG_FILE_FULL + ERROR_LOG_FILE_FULL + + + + No documentation. + + + ERROR_EVENTLOG_FILE_CHANGED + ERROR_EVENTLOG_FILE_CHANGED + + + + No documentation. + + + ERROR_INVALID_TASK_NAME + ERROR_INVALID_TASK_NAME + + + + No documentation. + + + ERROR_INVALID_TASK_INDEX + ERROR_INVALID_TASK_INDEX + + + + No documentation. + + + ERROR_THREAD_ALREADY_IN_TASK + ERROR_THREAD_ALREADY_IN_TASK + + + + No documentation. + + + ERROR_INSTALL_SERVICE_FAILURE + ERROR_INSTALL_SERVICE_FAILURE + + + + No documentation. + + + ERROR_INSTALL_USEREXIT + ERROR_INSTALL_USEREXIT + + + + No documentation. + + + ERROR_INSTALL_FAILURE + ERROR_INSTALL_FAILURE + + + + No documentation. + + + ERROR_INSTALL_SUSPEND + ERROR_INSTALL_SUSPEND + + + + No documentation. + + + ERROR_UNKNOWN_PRODUCT + ERROR_UNKNOWN_PRODUCT + + + + No documentation. + + + ERROR_UNKNOWN_FEATURE + ERROR_UNKNOWN_FEATURE + + + + No documentation. + + + ERROR_UNKNOWN_COMPONENT + ERROR_UNKNOWN_COMPONENT + + + + No documentation. + + + ERROR_UNKNOWN_PROPERTY + ERROR_UNKNOWN_PROPERTY + + + + No documentation. + + + ERROR_INVALID_HANDLE_STATE + ERROR_INVALID_HANDLE_STATE + + + + No documentation. + + + ERROR_BAD_CONFIGURATION + ERROR_BAD_CONFIGURATION + + + + No documentation. + + + ERROR_INDEX_ABSENT + ERROR_INDEX_ABSENT + + + + No documentation. + + + ERROR_INSTALL_SOURCE_ABSENT + ERROR_INSTALL_SOURCE_ABSENT + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_VERSION + ERROR_INSTALL_PACKAGE_VERSION + + + + No documentation. + + + ERROR_PRODUCT_UNINSTALLED + ERROR_PRODUCT_UNINSTALLED + + + + No documentation. + + + ERROR_BAD_QUERY_SYNTAX + ERROR_BAD_QUERY_SYNTAX + + + + No documentation. + + + ERROR_INVALID_FIELD + ERROR_INVALID_FIELD + + + + No documentation. + + + ERROR_DEVICE_REMOVED + ERROR_DEVICE_REMOVED + + + + No documentation. + + + ERROR_INSTALL_ALREADY_RUNNING + ERROR_INSTALL_ALREADY_RUNNING + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_OPEN_FAILED + ERROR_INSTALL_PACKAGE_OPEN_FAILED + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_INVALID + ERROR_INSTALL_PACKAGE_INVALID + + + + No documentation. + + + ERROR_INSTALL_UI_FAILURE + ERROR_INSTALL_UI_FAILURE + + + + No documentation. + + + ERROR_INSTALL_LOG_FAILURE + ERROR_INSTALL_LOG_FAILURE + + + + No documentation. + + + ERROR_INSTALL_LANGUAGE_UNSUPPORTED + ERROR_INSTALL_LANGUAGE_UNSUPPORTED + + + + No documentation. + + + ERROR_INSTALL_TRANSFORM_FAILURE + ERROR_INSTALL_TRANSFORM_FAILURE + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_REJECTED + ERROR_INSTALL_PACKAGE_REJECTED + + + + No documentation. + + + ERROR_FUNCTION_NOT_CALLED + ERROR_FUNCTION_NOT_CALLED + + + + No documentation. + + + ERROR_FUNCTION_FAILED + ERROR_FUNCTION_FAILED + + + + No documentation. + + + ERROR_INVALID_TABLE + ERROR_INVALID_TABLE + + + + No documentation. + + + ERROR_DATATYPE_MISMATCH + ERROR_DATATYPE_MISMATCH + + + + No documentation. + + + ERROR_UNSUPPORTED_TYPE + ERROR_UNSUPPORTED_TYPE + + + + No documentation. + + + ERROR_CREATE_FAILED + ERROR_CREATE_FAILED + + + + No documentation. + + + ERROR_INSTALL_TEMP_UNWRITABLE + ERROR_INSTALL_TEMP_UNWRITABLE + + + + No documentation. + + + ERROR_INSTALL_PLATFORM_UNSUPPORTED + ERROR_INSTALL_PLATFORM_UNSUPPORTED + + + + No documentation. + + + ERROR_INSTALL_NOTUSED + ERROR_INSTALL_NOTUSED + + + + No documentation. + + + ERROR_PATCH_PACKAGE_OPEN_FAILED + ERROR_PATCH_PACKAGE_OPEN_FAILED + + + + No documentation. + + + ERROR_PATCH_PACKAGE_INVALID + ERROR_PATCH_PACKAGE_INVALID + + + + No documentation. + + + ERROR_PATCH_PACKAGE_UNSUPPORTED + ERROR_PATCH_PACKAGE_UNSUPPORTED + + + + No documentation. + + + ERROR_PRODUCT_VERSION + ERROR_PRODUCT_VERSION + + + + No documentation. + + + ERROR_INVALID_COMMAND_LINE + ERROR_INVALID_COMMAND_LINE + + + + No documentation. + + + ERROR_INSTALL_REMOTE_DISALLOWED + ERROR_INSTALL_REMOTE_DISALLOWED + + + + No documentation. + + + ERROR_SUCCESS_REBOOT_INITIATED + ERROR_SUCCESS_REBOOT_INITIATED + + + + No documentation. + + + ERROR_PATCH_TARGET_NOT_FOUND + ERROR_PATCH_TARGET_NOT_FOUND + + + + No documentation. + + + ERROR_PATCH_PACKAGE_REJECTED + ERROR_PATCH_PACKAGE_REJECTED + + + + No documentation. + + + ERROR_INSTALL_TRANSFORM_REJECTED + ERROR_INSTALL_TRANSFORM_REJECTED + + + + No documentation. + + + ERROR_INSTALL_REMOTE_PROHIBITED + ERROR_INSTALL_REMOTE_PROHIBITED + + + + No documentation. + + + ERROR_PATCH_REMOVAL_UNSUPPORTED + ERROR_PATCH_REMOVAL_UNSUPPORTED + + + + No documentation. + + + ERROR_UNKNOWN_PATCH + ERROR_UNKNOWN_PATCH + + + + No documentation. + + + ERROR_PATCH_NO_SEQUENCE + ERROR_PATCH_NO_SEQUENCE + + + + No documentation. + + + ERROR_PATCH_REMOVAL_DISALLOWED + ERROR_PATCH_REMOVAL_DISALLOWED + + + + No documentation. + + + ERROR_INVALID_PATCH_XML + ERROR_INVALID_PATCH_XML + + + + No documentation. + + + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT + + + + No documentation. + + + ERROR_INSTALL_SERVICE_SAFEBOOT + ERROR_INSTALL_SERVICE_SAFEBOOT + + + + No documentation. + + + ERROR_FAIL_FAST_EXCEPTION + ERROR_FAIL_FAST_EXCEPTION + + + + No documentation. + + + ERROR_INVALID_USER_BUFFER + ERROR_INVALID_USER_BUFFER + + + + No documentation. + + + ERROR_UNRECOGNIZED_MEDIA + ERROR_UNRECOGNIZED_MEDIA + + + + No documentation. + + + ERROR_NO_TRUST_LSA_SECRET + ERROR_NO_TRUST_LSA_SECRET + + + + No documentation. + + + ERROR_NO_TRUST_SAM_ACCOUNT + ERROR_NO_TRUST_SAM_ACCOUNT + + + + No documentation. + + + ERROR_TRUSTED_DOMAIN_FAILURE + ERROR_TRUSTED_DOMAIN_FAILURE + + + + No documentation. + + + ERROR_TRUSTED_RELATIONSHIP_FAILURE + ERROR_TRUSTED_RELATIONSHIP_FAILURE + + + + No documentation. + + + ERROR_TRUST_FAILURE + ERROR_TRUST_FAILURE + + + + No documentation. + + + ERROR_NETLOGON_NOT_STARTED + ERROR_NETLOGON_NOT_STARTED + + + + No documentation. + + + ERROR_ACCOUNT_EXPIRED + ERROR_ACCOUNT_EXPIRED + + + + No documentation. + + + ERROR_REDIRECTOR_HAS_OPEN_HANDLES + ERROR_REDIRECTOR_HAS_OPEN_HANDLES + + + + No documentation. + + + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_UNKNOWN_PORT + ERROR_UNKNOWN_PORT + + + + No documentation. + + + ERROR_UNKNOWN_PRINTER_DRIVER + ERROR_UNKNOWN_PRINTER_DRIVER + + + + No documentation. + + + ERROR_UNKNOWN_PRINTPROCESSOR + ERROR_UNKNOWN_PRINTPROCESSOR + + + + No documentation. + + + ERROR_INVALID_SEPARATOR_FILE + ERROR_INVALID_SEPARATOR_FILE + + + + No documentation. + + + ERROR_INVALID_PRIORITY + ERROR_INVALID_PRIORITY + + + + No documentation. + + + ERROR_INVALID_PRINTER_NAME + ERROR_INVALID_PRINTER_NAME + + + + No documentation. + + + ERROR_PRINTER_ALREADY_EXISTS + ERROR_PRINTER_ALREADY_EXISTS + + + + No documentation. + + + ERROR_INVALID_PRINTER_COMMAND + ERROR_INVALID_PRINTER_COMMAND + + + + No documentation. + + + ERROR_INVALID_DATATYPE + ERROR_INVALID_DATATYPE + + + + No documentation. + + + ERROR_INVALID_ENVIRONMENT + ERROR_INVALID_ENVIRONMENT + + + + No documentation. + + + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT + + + + No documentation. + + + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT + + + + No documentation. + + + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT + + + + No documentation. + + + ERROR_DOMAIN_TRUST_INCONSISTENT + ERROR_DOMAIN_TRUST_INCONSISTENT + + + + No documentation. + + + ERROR_SERVER_HAS_OPEN_HANDLES + ERROR_SERVER_HAS_OPEN_HANDLES + + + + No documentation. + + + ERROR_RESOURCE_DATA_NOT_FOUND + ERROR_RESOURCE_DATA_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCE_TYPE_NOT_FOUND + ERROR_RESOURCE_TYPE_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCE_NAME_NOT_FOUND + ERROR_RESOURCE_NAME_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCE_LANG_NOT_FOUND + ERROR_RESOURCE_LANG_NOT_FOUND + + + + No documentation. + + + ERROR_NOT_ENOUGH_QUOTA + ERROR_NOT_ENOUGH_QUOTA + + + + No documentation. + + + ERROR_INVALID_TIME + ERROR_INVALID_TIME + + + + No documentation. + + + ERROR_INVALID_FORM_NAME + ERROR_INVALID_FORM_NAME + + + + No documentation. + + + ERROR_INVALID_FORM_SIZE + ERROR_INVALID_FORM_SIZE + + + + No documentation. + + + ERROR_ALREADY_WAITING + ERROR_ALREADY_WAITING + + + + No documentation. + + + ERROR_PRINTER_DELETED + ERROR_PRINTER_DELETED + + + + No documentation. + + + ERROR_INVALID_PRINTER_STATE + ERROR_INVALID_PRINTER_STATE + + + + No documentation. + + + ERROR_PASSWORD_MUST_CHANGE + ERROR_PASSWORD_MUST_CHANGE + + + + No documentation. + + + ERROR_DOMAIN_CONTROLLER_NOT_FOUND + ERROR_DOMAIN_CONTROLLER_NOT_FOUND + + + + No documentation. + + + ERROR_ACCOUNT_LOCKED_OUT + ERROR_ACCOUNT_LOCKED_OUT + + + + No documentation. + + + ERROR_NO_SITENAME + ERROR_NO_SITENAME + + + + No documentation. + + + ERROR_CANT_ACCESS_FILE + ERROR_CANT_ACCESS_FILE + + + + No documentation. + + + ERROR_CANT_RESOLVE_FILENAME + ERROR_CANT_RESOLVE_FILENAME + + + + No documentation. + + + ERROR_KM_DRIVER_BLOCKED + ERROR_KM_DRIVER_BLOCKED + + + + No documentation. + + + ERROR_CONTEXT_EXPIRED + ERROR_CONTEXT_EXPIRED + + + + No documentation. + + + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_AUTHENTICATION_FIREWALL_FAILED + ERROR_AUTHENTICATION_FIREWALL_FAILED + + + + No documentation. + + + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED + + + + No documentation. + + + ERROR_NTLM_BLOCKED + ERROR_NTLM_BLOCKED + + + + No documentation. + + + ERROR_INVALID_PIXEL_FORMAT + ERROR_INVALID_PIXEL_FORMAT + + + + No documentation. + + + ERROR_BAD_DRIVER + ERROR_BAD_DRIVER + + + + No documentation. + + + ERROR_INVALID_WINDOW_STYLE + ERROR_INVALID_WINDOW_STYLE + + + + No documentation. + + + ERROR_METAFILE_NOT_SUPPORTED + ERROR_METAFILE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_TRANSFORM_NOT_SUPPORTED + ERROR_TRANSFORM_NOT_SUPPORTED + + + + No documentation. + + + ERROR_CLIPPING_NOT_SUPPORTED + ERROR_CLIPPING_NOT_SUPPORTED + + + + No documentation. + + + ERROR_INVALID_CMM + ERROR_INVALID_CMM + + + + No documentation. + + + ERROR_INVALID_PROFILE + ERROR_INVALID_PROFILE + + + + No documentation. + + + ERROR_TAG_NOT_FOUND + ERROR_TAG_NOT_FOUND + + + + No documentation. + + + ERROR_TAG_NOT_PRESENT + ERROR_TAG_NOT_PRESENT + + + + No documentation. + + + ERROR_DUPLICATE_TAG + ERROR_DUPLICATE_TAG + + + + No documentation. + + + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE + + + + No documentation. + + + ERROR_PROFILE_NOT_FOUND + ERROR_PROFILE_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_COLORSPACE + ERROR_INVALID_COLORSPACE + + + + No documentation. + + + ERROR_ICM_NOT_ENABLED + ERROR_ICM_NOT_ENABLED + + + + No documentation. + + + ERROR_DELETING_ICM_XFORM + ERROR_DELETING_ICM_XFORM + + + + No documentation. + + + ERROR_INVALID_TRANSFORM + ERROR_INVALID_TRANSFORM + + + + No documentation. + + + ERROR_COLORSPACE_MISMATCH + ERROR_COLORSPACE_MISMATCH + + + + No documentation. + + + ERROR_INVALID_COLORINDEX + ERROR_INVALID_COLORINDEX + + + + No documentation. + + + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE + + + + No documentation. + + + ERROR_CONNECTED_OTHER_PASSWORD + ERROR_CONNECTED_OTHER_PASSWORD + + + + No documentation. + + + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT + + + + No documentation. + + + ERROR_BAD_USERNAME + ERROR_BAD_USERNAME + + + + No documentation. + + + ERROR_NOT_CONNECTED + ERROR_NOT_CONNECTED + + + + No documentation. + + + ERROR_OPEN_FILES + ERROR_OPEN_FILES + + + + No documentation. + + + ERROR_ACTIVE_CONNECTIONS + ERROR_ACTIVE_CONNECTIONS + + + + No documentation. + + + ERROR_DEVICE_IN_USE + ERROR_DEVICE_IN_USE + + + + No documentation. + + + ERROR_UNKNOWN_PRINT_MONITOR + ERROR_UNKNOWN_PRINT_MONITOR + + + + No documentation. + + + ERROR_PRINTER_DRIVER_IN_USE + ERROR_PRINTER_DRIVER_IN_USE + + + + No documentation. + + + ERROR_SPOOL_FILE_NOT_FOUND + ERROR_SPOOL_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_SPL_NO_STARTDOC + ERROR_SPL_NO_STARTDOC + + + + No documentation. + + + ERROR_SPL_NO_ADDJOB + ERROR_SPL_NO_ADDJOB + + + + No documentation. + + + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_PRINT_MONITOR_ALREADY_INSTALLED + ERROR_PRINT_MONITOR_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_INVALID_PRINT_MONITOR + ERROR_INVALID_PRINT_MONITOR + + + + No documentation. + + + ERROR_PRINT_MONITOR_IN_USE + ERROR_PRINT_MONITOR_IN_USE + + + + No documentation. + + + ERROR_PRINTER_HAS_JOBS_QUEUED + ERROR_PRINTER_HAS_JOBS_QUEUED + + + + No documentation. + + + ERROR_SUCCESS_REBOOT_REQUIRED + ERROR_SUCCESS_REBOOT_REQUIRED + + + + No documentation. + + + ERROR_SUCCESS_RESTART_REQUIRED + ERROR_SUCCESS_RESTART_REQUIRED + + + + No documentation. + + + ERROR_PRINTER_NOT_FOUND + ERROR_PRINTER_NOT_FOUND + + + + No documentation. + + + ERROR_PRINTER_DRIVER_WARNED + ERROR_PRINTER_DRIVER_WARNED + + + + No documentation. + + + ERROR_PRINTER_DRIVER_BLOCKED + ERROR_PRINTER_DRIVER_BLOCKED + + + + No documentation. + + + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE + + + + No documentation. + + + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND + + + + No documentation. + + + ERROR_FAIL_REBOOT_REQUIRED + ERROR_FAIL_REBOOT_REQUIRED + + + + No documentation. + + + ERROR_FAIL_REBOOT_INITIATED + ERROR_FAIL_REBOOT_INITIATED + + + + No documentation. + + + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED + + + + No documentation. + + + ERROR_PRINT_JOB_RESTART_REQUIRED + ERROR_PRINT_JOB_RESTART_REQUIRED + + + + No documentation. + + + ERROR_IO_REISSUE_AS_CACHED + ERROR_IO_REISSUE_AS_CACHED + + + + No documentation. + + + ERROR_WINS_INTERNAL + ERROR_WINS_INTERNAL + + + + No documentation. + + + ERROR_CAN_NOT_DEL_LOCAL_WINS + ERROR_CAN_NOT_DEL_LOCAL_WINS + + + + No documentation. + + + ERROR_STATIC_INIT + ERROR_STATIC_INIT + + + + No documentation. + + + ERROR_INC_BACKUP + ERROR_INC_BACKUP + + + + No documentation. + + + ERROR_FULL_BACKUP + ERROR_FULL_BACKUP + + + + No documentation. + + + ERROR_REC_NON_EXISTENT + ERROR_REC_NON_EXISTENT + + + + No documentation. + + + ERROR_RPL_NOT_ALLOWED + ERROR_RPL_NOT_ALLOWED + + + + No documentation. + + + ERROR_DHCP_ADDRESS_CONFLICT + ERROR_DHCP_ADDRESS_CONFLICT + + + + No documentation. + + + ERROR_WMI_GUID_NOT_FOUND + ERROR_WMI_GUID_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_INSTANCE_NOT_FOUND + ERROR_WMI_INSTANCE_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_ITEMID_NOT_FOUND + ERROR_WMI_ITEMID_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_TRY_AGAIN + ERROR_WMI_TRY_AGAIN + + + + No documentation. + + + ERROR_WMI_DP_NOT_FOUND + ERROR_WMI_DP_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_UNRESOLVED_INSTANCE_REF + ERROR_WMI_UNRESOLVED_INSTANCE_REF + + + + No documentation. + + + ERROR_WMI_ALREADY_ENABLED + ERROR_WMI_ALREADY_ENABLED + + + + No documentation. + + + ERROR_WMI_GUID_DISCONNECTED + ERROR_WMI_GUID_DISCONNECTED + + + + No documentation. + + + ERROR_WMI_SERVER_UNAVAILABLE + ERROR_WMI_SERVER_UNAVAILABLE + + + + No documentation. + + + ERROR_WMI_DP_FAILED + ERROR_WMI_DP_FAILED + + + + No documentation. + + + ERROR_WMI_INVALID_MOF + ERROR_WMI_INVALID_MOF + + + + No documentation. + + + ERROR_WMI_INVALID_REGINFO + ERROR_WMI_INVALID_REGINFO + + + + No documentation. + + + ERROR_WMI_ALREADY_DISABLED + ERROR_WMI_ALREADY_DISABLED + + + + No documentation. + + + ERROR_WMI_READ_ONLY + ERROR_WMI_READ_ONLY + + + + No documentation. + + + ERROR_WMI_SET_FAILURE + ERROR_WMI_SET_FAILURE + + + + No documentation. + + + ERROR_INVALID_MEDIA + ERROR_INVALID_MEDIA + + + + No documentation. + + + ERROR_INVALID_LIBRARY + ERROR_INVALID_LIBRARY + + + + No documentation. + + + ERROR_INVALID_MEDIA_POOL + ERROR_INVALID_MEDIA_POOL + + + + No documentation. + + + ERROR_DRIVE_MEDIA_MISMATCH + ERROR_DRIVE_MEDIA_MISMATCH + + + + No documentation. + + + ERROR_MEDIA_OFFLINE + ERROR_MEDIA_OFFLINE + + + + No documentation. + + + ERROR_LIBRARY_OFFLINE + ERROR_LIBRARY_OFFLINE + + + + No documentation. + + + ERROR_EMPTY + ERROR_EMPTY + + + + No documentation. + + + ERROR_NOT_EMPTY + ERROR_NOT_EMPTY + + + + No documentation. + + + ERROR_MEDIA_UNAVAILABLE + ERROR_MEDIA_UNAVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_DISABLED + ERROR_RESOURCE_DISABLED + + + + No documentation. + + + ERROR_INVALID_CLEANER + ERROR_INVALID_CLEANER + + + + No documentation. + + + ERROR_UNABLE_TO_CLEAN + ERROR_UNABLE_TO_CLEAN + + + + No documentation. + + + ERROR_OBJECT_NOT_FOUND + ERROR_OBJECT_NOT_FOUND + + + + No documentation. + + + ERROR_DATABASE_FAILURE + ERROR_DATABASE_FAILURE + + + + No documentation. + + + ERROR_DATABASE_FULL + ERROR_DATABASE_FULL + + + + No documentation. + + + ERROR_MEDIA_INCOMPATIBLE + ERROR_MEDIA_INCOMPATIBLE + + + + No documentation. + + + ERROR_RESOURCE_NOT_PRESENT + ERROR_RESOURCE_NOT_PRESENT + + + + No documentation. + + + ERROR_INVALID_OPERATION + ERROR_INVALID_OPERATION + + + + No documentation. + + + ERROR_MEDIA_NOT_AVAILABLE + ERROR_MEDIA_NOT_AVAILABLE + + + + No documentation. + + + ERROR_DEVICE_NOT_AVAILABLE + ERROR_DEVICE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_REQUEST_REFUSED + ERROR_REQUEST_REFUSED + + + + No documentation. + + + ERROR_INVALID_DRIVE_OBJECT + ERROR_INVALID_DRIVE_OBJECT + + + + No documentation. + + + ERROR_LIBRARY_FULL + ERROR_LIBRARY_FULL + + + + No documentation. + + + ERROR_MEDIUM_NOT_ACCESSIBLE + ERROR_MEDIUM_NOT_ACCESSIBLE + + + + No documentation. + + + ERROR_UNABLE_TO_LOAD_MEDIUM + ERROR_UNABLE_TO_LOAD_MEDIUM + + + + No documentation. + + + ERROR_UNABLE_TO_INVENTORY_DRIVE + ERROR_UNABLE_TO_INVENTORY_DRIVE + + + + No documentation. + + + ERROR_UNABLE_TO_INVENTORY_SLOT + ERROR_UNABLE_TO_INVENTORY_SLOT + + + + No documentation. + + + ERROR_UNABLE_TO_INVENTORY_TRANSPORT + ERROR_UNABLE_TO_INVENTORY_TRANSPORT + + + + No documentation. + + + ERROR_TRANSPORT_FULL + ERROR_TRANSPORT_FULL + + + + No documentation. + + + ERROR_CONTROLLING_IEPORT + ERROR_CONTROLLING_IEPORT + + + + No documentation. + + + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA + + + + No documentation. + + + ERROR_CLEANER_SLOT_SET + ERROR_CLEANER_SLOT_SET + + + + No documentation. + + + ERROR_CLEANER_SLOT_NOT_SET + ERROR_CLEANER_SLOT_NOT_SET + + + + No documentation. + + + ERROR_CLEANER_CARTRIDGE_SPENT + ERROR_CLEANER_CARTRIDGE_SPENT + + + + No documentation. + + + ERROR_UNEXPECTED_OMID + ERROR_UNEXPECTED_OMID + + + + No documentation. + + + ERROR_CANT_DELETE_LAST_ITEM + ERROR_CANT_DELETE_LAST_ITEM + + + + No documentation. + + + ERROR_MESSAGE_EXCEEDS_MAX_SIZE + ERROR_MESSAGE_EXCEEDS_MAX_SIZE + + + + No documentation. + + + ERROR_VOLUME_CONTAINS_SYS_FILES + ERROR_VOLUME_CONTAINS_SYS_FILES + + + + No documentation. + + + ERROR_INDIGENOUS_TYPE + ERROR_INDIGENOUS_TYPE + + + + No documentation. + + + ERROR_NO_SUPPORTING_DRIVES + ERROR_NO_SUPPORTING_DRIVES + + + + No documentation. + + + ERROR_CLEANER_CARTRIDGE_INSTALLED + ERROR_CLEANER_CARTRIDGE_INSTALLED + + + + No documentation. + + + ERROR_IEPORT_FULL + ERROR_IEPORT_FULL + + + + No documentation. + + + ERROR_FILE_OFFLINE + ERROR_FILE_OFFLINE + + + + No documentation. + + + ERROR_REMOTE_STORAGE_NOT_ACTIVE + ERROR_REMOTE_STORAGE_NOT_ACTIVE + + + + No documentation. + + + ERROR_REMOTE_STORAGE_MEDIA_ERROR + ERROR_REMOTE_STORAGE_MEDIA_ERROR + + + + No documentation. + + + ERROR_NOT_A_REPARSE_POINT + ERROR_NOT_A_REPARSE_POINT + + + + No documentation. + + + ERROR_REPARSE_ATTRIBUTE_CONFLICT + ERROR_REPARSE_ATTRIBUTE_CONFLICT + + + + No documentation. + + + ERROR_INVALID_REPARSE_DATA + ERROR_INVALID_REPARSE_DATA + + + + No documentation. + + + ERROR_REPARSE_TAG_INVALID + ERROR_REPARSE_TAG_INVALID + + + + No documentation. + + + ERROR_REPARSE_TAG_MISMATCH + ERROR_REPARSE_TAG_MISMATCH + + + + No documentation. + + + ERROR_VOLUME_NOT_SIS_ENABLED + ERROR_VOLUME_NOT_SIS_ENABLED + + + + No documentation. + + + ERROR_DEPENDENT_RESOURCE_EXISTS + ERROR_DEPENDENT_RESOURCE_EXISTS + + + + No documentation. + + + ERROR_DEPENDENCY_NOT_FOUND + ERROR_DEPENDENCY_NOT_FOUND + + + + No documentation. + + + ERROR_DEPENDENCY_ALREADY_EXISTS + ERROR_DEPENDENCY_ALREADY_EXISTS + + + + No documentation. + + + ERROR_RESOURCE_NOT_ONLINE + ERROR_RESOURCE_NOT_ONLINE + + + + No documentation. + + + ERROR_HOST_NODE_NOT_AVAILABLE + ERROR_HOST_NODE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_NOT_AVAILABLE + ERROR_RESOURCE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_NOT_FOUND + ERROR_RESOURCE_NOT_FOUND + + + + No documentation. + + + ERROR_SHUTDOWN_CLUSTER + ERROR_SHUTDOWN_CLUSTER + + + + No documentation. + + + ERROR_CANT_EVICT_ACTIVE_NODE + ERROR_CANT_EVICT_ACTIVE_NODE + + + + No documentation. + + + ERROR_OBJECT_ALREADY_EXISTS + ERROR_OBJECT_ALREADY_EXISTS + + + + No documentation. + + + ERROR_OBJECT_IN_LIST + ERROR_OBJECT_IN_LIST + + + + No documentation. + + + ERROR_GROUP_NOT_AVAILABLE + ERROR_GROUP_NOT_AVAILABLE + + + + No documentation. + + + ERROR_GROUP_NOT_FOUND + ERROR_GROUP_NOT_FOUND + + + + No documentation. + + + ERROR_GROUP_NOT_ONLINE + ERROR_GROUP_NOT_ONLINE + + + + No documentation. + + + ERROR_HOST_NODE_NOT_RESOURCE_OWNER + ERROR_HOST_NODE_NOT_RESOURCE_OWNER + + + + No documentation. + + + ERROR_HOST_NODE_NOT_GROUP_OWNER + ERROR_HOST_NODE_NOT_GROUP_OWNER + + + + No documentation. + + + ERROR_RESMON_CREATE_FAILED + ERROR_RESMON_CREATE_FAILED + + + + No documentation. + + + ERROR_RESMON_ONLINE_FAILED + ERROR_RESMON_ONLINE_FAILED + + + + No documentation. + + + ERROR_RESOURCE_ONLINE + ERROR_RESOURCE_ONLINE + + + + No documentation. + + + ERROR_QUORUM_RESOURCE + ERROR_QUORUM_RESOURCE + + + + No documentation. + + + ERROR_NOT_QUORUM_CAPABLE + ERROR_NOT_QUORUM_CAPABLE + + + + No documentation. + + + ERROR_CLUSTER_SHUTTING_DOWN + ERROR_CLUSTER_SHUTTING_DOWN + + + + No documentation. + + + ERROR_INVALID_STATE + ERROR_INVALID_STATE + + + + No documentation. + + + ERROR_RESOURCE_PROPERTIES_STORED + ERROR_RESOURCE_PROPERTIES_STORED + + + + No documentation. + + + ERROR_NOT_QUORUM_CLASS + ERROR_NOT_QUORUM_CLASS + + + + No documentation. + + + ERROR_CORE_RESOURCE + ERROR_CORE_RESOURCE + + + + No documentation. + + + ERROR_QUORUM_RESOURCE_ONLINE_FAILED + ERROR_QUORUM_RESOURCE_ONLINE_FAILED + + + + No documentation. + + + ERROR_QUORUMLOG_OPEN_FAILED + ERROR_QUORUMLOG_OPEN_FAILED + + + + No documentation. + + + ERROR_CLUSTERLOG_CORRUPT + ERROR_CLUSTERLOG_CORRUPT + + + + No documentation. + + + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE + + + + No documentation. + + + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE + + + + No documentation. + + + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE + + + + No documentation. + + + ERROR_QUORUM_OWNER_ALIVE + ERROR_QUORUM_OWNER_ALIVE + + + + No documentation. + + + ERROR_NETWORK_NOT_AVAILABLE + ERROR_NETWORK_NOT_AVAILABLE + + + + No documentation. + + + ERROR_NODE_NOT_AVAILABLE + ERROR_NODE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_ALL_NODES_NOT_AVAILABLE + ERROR_ALL_NODES_NOT_AVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_FAILED + ERROR_RESOURCE_FAILED + + + + No documentation. + + + ERROR_CLUSTER_INVALID_NODE + ERROR_CLUSTER_INVALID_NODE + + + + No documentation. + + + ERROR_CLUSTER_NODE_EXISTS + ERROR_CLUSTER_NODE_EXISTS + + + + No documentation. + + + ERROR_CLUSTER_JOIN_IN_PROGRESS + ERROR_CLUSTER_JOIN_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_FOUND + ERROR_CLUSTER_NODE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_EXISTS + ERROR_CLUSTER_NETWORK_EXISTS + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_NOT_FOUND + ERROR_CLUSTER_NETWORK_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_NETINTERFACE_EXISTS + ERROR_CLUSTER_NETINTERFACE_EXISTS + + + + No documentation. + + + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_INVALID_REQUEST + ERROR_CLUSTER_INVALID_REQUEST + + + + No documentation. + + + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER + + + + No documentation. + + + ERROR_CLUSTER_NODE_DOWN + ERROR_CLUSTER_NODE_DOWN + + + + No documentation. + + + ERROR_CLUSTER_NODE_UNREACHABLE + ERROR_CLUSTER_NODE_UNREACHABLE + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_MEMBER + ERROR_CLUSTER_NODE_NOT_MEMBER + + + + No documentation. + + + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_INVALID_NETWORK + ERROR_CLUSTER_INVALID_NETWORK + + + + No documentation. + + + ERROR_CLUSTER_NODE_UP + ERROR_CLUSTER_NODE_UP + + + + No documentation. + + + ERROR_CLUSTER_IPADDR_IN_USE + ERROR_CLUSTER_IPADDR_IN_USE + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_PAUSED + ERROR_CLUSTER_NODE_NOT_PAUSED + + + + No documentation. + + + ERROR_CLUSTER_NO_SECURITY_CONTEXT + ERROR_CLUSTER_NO_SECURITY_CONTEXT + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_NOT_INTERNAL + ERROR_CLUSTER_NETWORK_NOT_INTERNAL + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_UP + ERROR_CLUSTER_NODE_ALREADY_UP + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_DOWN + ERROR_CLUSTER_NODE_ALREADY_DOWN + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_MEMBER + ERROR_CLUSTER_NODE_ALREADY_MEMBER + + + + No documentation. + + + ERROR_CLUSTER_LAST_INTERNAL_NETWORK + ERROR_CLUSTER_LAST_INTERNAL_NETWORK + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS + + + + No documentation. + + + ERROR_INVALID_OPERATION_ON_QUORUM + ERROR_INVALID_OPERATION_ON_QUORUM + + + + No documentation. + + + ERROR_DEPENDENCY_NOT_ALLOWED + ERROR_DEPENDENCY_NOT_ALLOWED + + + + No documentation. + + + ERROR_CLUSTER_NODE_PAUSED + ERROR_CLUSTER_NODE_PAUSED + + + + No documentation. + + + ERROR_NODE_CANT_HOST_RESOURCE + ERROR_NODE_CANT_HOST_RESOURCE + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_READY + ERROR_CLUSTER_NODE_NOT_READY + + + + No documentation. + + + ERROR_CLUSTER_NODE_SHUTTING_DOWN + ERROR_CLUSTER_NODE_SHUTTING_DOWN + + + + No documentation. + + + ERROR_CLUSTER_JOIN_ABORTED + ERROR_CLUSTER_JOIN_ABORTED + + + + No documentation. + + + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS + + + + No documentation. + + + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED + + + + No documentation. + + + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_CLUSTER_RESNAME_NOT_FOUND + ERROR_CLUSTER_RESNAME_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED + + + + No documentation. + + + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST + + + + No documentation. + + + ERROR_CLUSTER_DATABASE_SEQMISMATCH + ERROR_CLUSTER_DATABASE_SEQMISMATCH + + + + No documentation. + + + ERROR_RESMON_INVALID_STATE + ERROR_RESMON_INVALID_STATE + + + + No documentation. + + + ERROR_CLUSTER_GUM_NOT_LOCKER + ERROR_CLUSTER_GUM_NOT_LOCKER + + + + No documentation. + + + ERROR_QUORUM_DISK_NOT_FOUND + ERROR_QUORUM_DISK_NOT_FOUND + + + + No documentation. + + + ERROR_DATABASE_BACKUP_CORRUPT + ERROR_DATABASE_BACKUP_CORRUPT + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT + + + + No documentation. + + + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE + + + + No documentation. + + + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE + + + + No documentation. + + + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_MEMBERSHIP_HALT + ERROR_CLUSTER_MEMBERSHIP_HALT + + + + No documentation. + + + ERROR_CLUSTER_INSTANCE_ID_MISMATCH + ERROR_CLUSTER_INSTANCE_ID_MISMATCH + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP + + + + No documentation. + + + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH + + + + No documentation. + + + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP + + + + No documentation. + + + ERROR_CLUSTER_PARAMETER_MISMATCH + ERROR_CLUSTER_PARAMETER_MISMATCH + + + + No documentation. + + + ERROR_NODE_CANNOT_BE_CLUSTERED + ERROR_NODE_CANNOT_BE_CLUSTERED + + + + No documentation. + + + ERROR_CLUSTER_WRONG_OS_VERSION + ERROR_CLUSTER_WRONG_OS_VERSION + + + + No documentation. + + + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME + + + + No documentation. + + + ERROR_CLUSCFG_ALREADY_COMMITTED + ERROR_CLUSCFG_ALREADY_COMMITTED + + + + No documentation. + + + ERROR_CLUSCFG_ROLLBACK_FAILED + ERROR_CLUSCFG_ROLLBACK_FAILED + + + + No documentation. + + + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT + + + + No documentation. + + + ERROR_CLUSTER_OLD_VERSION + ERROR_CLUSTER_OLD_VERSION + + + + No documentation. + + + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME + + + + No documentation. + + + ERROR_CLUSTER_NO_NET_ADAPTERS + ERROR_CLUSTER_NO_NET_ADAPTERS + + + + No documentation. + + + ERROR_CLUSTER_POISONED + ERROR_CLUSTER_POISONED + + + + No documentation. + + + ERROR_CLUSTER_GROUP_MOVING + ERROR_CLUSTER_GROUP_MOVING + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_TYPE_BUSY + ERROR_CLUSTER_RESOURCE_TYPE_BUSY + + + + No documentation. + + + ERROR_RESOURCE_CALL_TIMED_OUT + ERROR_RESOURCE_CALL_TIMED_OUT + + + + No documentation. + + + ERROR_INVALID_CLUSTER_IPV6_ADDRESS + ERROR_INVALID_CLUSTER_IPV6_ADDRESS + + + + No documentation. + + + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION + + + + No documentation. + + + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS + + + + No documentation. + + + ERROR_CLUSTER_PARTIAL_SEND + ERROR_CLUSTER_PARTIAL_SEND + + + + No documentation. + + + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION + + + + No documentation. + + + ERROR_CLUSTER_INVALID_STRING_TERMINATION + ERROR_CLUSTER_INVALID_STRING_TERMINATION + + + + No documentation. + + + ERROR_CLUSTER_INVALID_STRING_FORMAT + ERROR_CLUSTER_INVALID_STRING_FORMAT + + + + No documentation. + + + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_NULL_DATA + ERROR_CLUSTER_NULL_DATA + + + + No documentation. + + + ERROR_CLUSTER_PARTIAL_READ + ERROR_CLUSTER_PARTIAL_READ + + + + No documentation. + + + ERROR_CLUSTER_PARTIAL_WRITE + ERROR_CLUSTER_PARTIAL_WRITE + + + + No documentation. + + + ERROR_CLUSTER_CANT_DESERIALIZE_DATA + ERROR_CLUSTER_CANT_DESERIALIZE_DATA + + + + No documentation. + + + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT + + + + No documentation. + + + ERROR_CLUSTER_NO_QUORUM + ERROR_CLUSTER_NO_QUORUM + + + + No documentation. + + + ERROR_CLUSTER_INVALID_IPV6_NETWORK + ERROR_CLUSTER_INVALID_IPV6_NETWORK + + + + No documentation. + + + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK + + + + No documentation. + + + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP + + + + No documentation. + + + ERROR_DEPENDENCY_TREE_TOO_COMPLEX + ERROR_DEPENDENCY_TREE_TOO_COMPLEX + + + + No documentation. + + + ERROR_EXCEPTION_IN_RESOURCE_CALL + ERROR_EXCEPTION_IN_RESOURCE_CALL + + + + No documentation. + + + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION + + + + No documentation. + + + ERROR_CLUSTER_NOT_INSTALLED + ERROR_CLUSTER_NOT_INSTALLED + + + + No documentation. + + + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE + + + + No documentation. + + + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER + + + + No documentation. + + + ERROR_CLUSTER_TOO_MANY_NODES + ERROR_CLUSTER_TOO_MANY_NODES + + + + No documentation. + + + ERROR_CLUSTER_OBJECT_ALREADY_USED + ERROR_CLUSTER_OBJECT_ALREADY_USED + + + + No documentation. + + + ERROR_NONCORE_GROUPS_FOUND + ERROR_NONCORE_GROUPS_FOUND + + + + No documentation. + + + ERROR_FILE_SHARE_RESOURCE_CONFLICT + ERROR_FILE_SHARE_RESOURCE_CONFLICT + + + + No documentation. + + + ERROR_CLUSTER_EVICT_INVALID_REQUEST + ERROR_CLUSTER_EVICT_INVALID_REQUEST + + + + No documentation. + + + ERROR_CLUSTER_SINGLETON_RESOURCE + ERROR_CLUSTER_SINGLETON_RESOURCE + + + + No documentation. + + + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR + + + + No documentation. + + + ERROR_CLUSTER_GROUP_BUSY + ERROR_CLUSTER_GROUP_BUSY + + + + No documentation. + + + ERROR_CLUSTER_NOT_SHARED_VOLUME + ERROR_CLUSTER_NOT_SHARED_VOLUME + + + + No documentation. + + + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR + + + + No documentation. + + + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE + + + + No documentation. + + + ERROR_CLUSTER_USE_SHARED_VOLUMES_API + ERROR_CLUSTER_USE_SHARED_VOLUMES_API + + + + No documentation. + + + ERROR_CLUSTER_BACKUP_IN_PROGRESS + ERROR_CLUSTER_BACKUP_IN_PROGRESS + + + + No documentation. + + + ERROR_NON_CSV_PATH + ERROR_NON_CSV_PATH + + + + No documentation. + + + ERROR_CSV_VOLUME_NOT_LOCAL + ERROR_CSV_VOLUME_NOT_LOCAL + + + + No documentation. + + + ERROR_CLUSTER_WATCHDOG_TERMINATING + ERROR_CLUSTER_WATCHDOG_TERMINATING + + + + No documentation. + + + ERROR_ENCRYPTION_FAILED + ERROR_ENCRYPTION_FAILED + + + + No documentation. + + + ERROR_DECRYPTION_FAILED + ERROR_DECRYPTION_FAILED + + + + No documentation. + + + ERROR_FILE_ENCRYPTED + ERROR_FILE_ENCRYPTED + + + + No documentation. + + + ERROR_NO_RECOVERY_POLICY + ERROR_NO_RECOVERY_POLICY + + + + No documentation. + + + ERROR_NO_EFS + ERROR_NO_EFS + + + + No documentation. + + + ERROR_WRONG_EFS + ERROR_WRONG_EFS + + + + No documentation. + + + ERROR_NO_USER_KEYS + ERROR_NO_USER_KEYS + + + + No documentation. + + + ERROR_FILE_NOT_ENCRYPTED + ERROR_FILE_NOT_ENCRYPTED + + + + No documentation. + + + ERROR_NOT_EXPORT_FORMAT + ERROR_NOT_EXPORT_FORMAT + + + + No documentation. + + + ERROR_FILE_READ_ONLY + ERROR_FILE_READ_ONLY + + + + No documentation. + + + ERROR_DIR_EFS_DISALLOWED + ERROR_DIR_EFS_DISALLOWED + + + + No documentation. + + + ERROR_EFS_SERVER_NOT_TRUSTED + ERROR_EFS_SERVER_NOT_TRUSTED + + + + No documentation. + + + ERROR_BAD_RECOVERY_POLICY + ERROR_BAD_RECOVERY_POLICY + + + + No documentation. + + + ERROR_EFS_ALG_BLOB_TOO_BIG + ERROR_EFS_ALG_BLOB_TOO_BIG + + + + No documentation. + + + ERROR_VOLUME_NOT_SUPPORT_EFS + ERROR_VOLUME_NOT_SUPPORT_EFS + + + + No documentation. + + + ERROR_EFS_DISABLED + ERROR_EFS_DISABLED + + + + No documentation. + + + ERROR_EFS_VERSION_NOT_SUPPORT + ERROR_EFS_VERSION_NOT_SUPPORT + + + + No documentation. + + + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE + + + + No documentation. + + + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER + + + + No documentation. + + + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE + + + + No documentation. + + + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE + + + + No documentation. + + + ERROR_CS_ENCRYPTION_FILE_NOT_CSE + ERROR_CS_ENCRYPTION_FILE_NOT_CSE + + + + No documentation. + + + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION + + + + No documentation. + + + ERROR_NO_BROWSER_SERVERS_FOUND + ERROR_NO_BROWSER_SERVERS_FOUND + + + + No documentation. + + + ERROR_LOG_SECTOR_INVALID + ERROR_LOG_SECTOR_INVALID + + + + No documentation. + + + ERROR_LOG_SECTOR_PARITY_INVALID + ERROR_LOG_SECTOR_PARITY_INVALID + + + + No documentation. + + + ERROR_LOG_SECTOR_REMAPPED + ERROR_LOG_SECTOR_REMAPPED + + + + No documentation. + + + ERROR_LOG_BLOCK_INCOMPLETE + ERROR_LOG_BLOCK_INCOMPLETE + + + + No documentation. + + + ERROR_LOG_INVALID_RANGE + ERROR_LOG_INVALID_RANGE + + + + No documentation. + + + ERROR_LOG_BLOCKS_EXHAUSTED + ERROR_LOG_BLOCKS_EXHAUSTED + + + + No documentation. + + + ERROR_LOG_READ_CONTEXT_INVALID + ERROR_LOG_READ_CONTEXT_INVALID + + + + No documentation. + + + ERROR_LOG_RESTART_INVALID + ERROR_LOG_RESTART_INVALID + + + + No documentation. + + + ERROR_LOG_BLOCK_VERSION + ERROR_LOG_BLOCK_VERSION + + + + No documentation. + + + ERROR_LOG_BLOCK_INVALID + ERROR_LOG_BLOCK_INVALID + + + + No documentation. + + + ERROR_LOG_READ_MODE_INVALID + ERROR_LOG_READ_MODE_INVALID + + + + No documentation. + + + ERROR_LOG_NO_RESTART + ERROR_LOG_NO_RESTART + + + + No documentation. + + + ERROR_LOG_METADATA_CORRUPT + ERROR_LOG_METADATA_CORRUPT + + + + No documentation. + + + ERROR_LOG_METADATA_INVALID + ERROR_LOG_METADATA_INVALID + + + + No documentation. + + + ERROR_LOG_METADATA_INCONSISTENT + ERROR_LOG_METADATA_INCONSISTENT + + + + No documentation. + + + ERROR_LOG_RESERVATION_INVALID + ERROR_LOG_RESERVATION_INVALID + + + + No documentation. + + + ERROR_LOG_CANT_DELETE + ERROR_LOG_CANT_DELETE + + + + No documentation. + + + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_LOG_START_OF_LOG + ERROR_LOG_START_OF_LOG + + + + No documentation. + + + ERROR_LOG_POLICY_ALREADY_INSTALLED + ERROR_LOG_POLICY_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_LOG_POLICY_NOT_INSTALLED + ERROR_LOG_POLICY_NOT_INSTALLED + + + + No documentation. + + + ERROR_LOG_POLICY_INVALID + ERROR_LOG_POLICY_INVALID + + + + No documentation. + + + ERROR_LOG_POLICY_CONFLICT + ERROR_LOG_POLICY_CONFLICT + + + + No documentation. + + + ERROR_LOG_PINNED_ARCHIVE_TAIL + ERROR_LOG_PINNED_ARCHIVE_TAIL + + + + No documentation. + + + ERROR_LOG_RECORD_NONEXISTENT + ERROR_LOG_RECORD_NONEXISTENT + + + + No documentation. + + + ERROR_LOG_RECORDS_RESERVED_INVALID + ERROR_LOG_RECORDS_RESERVED_INVALID + + + + No documentation. + + + ERROR_LOG_SPACE_RESERVED_INVALID + ERROR_LOG_SPACE_RESERVED_INVALID + + + + No documentation. + + + ERROR_LOG_TAIL_INVALID + ERROR_LOG_TAIL_INVALID + + + + No documentation. + + + ERROR_LOG_FULL + ERROR_LOG_FULL + + + + No documentation. + + + ERROR_COULD_NOT_RESIZE_LOG + ERROR_COULD_NOT_RESIZE_LOG + + + + No documentation. + + + ERROR_LOG_MULTIPLEXED + ERROR_LOG_MULTIPLEXED + + + + No documentation. + + + ERROR_LOG_DEDICATED + ERROR_LOG_DEDICATED + + + + No documentation. + + + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS + + + + No documentation. + + + ERROR_LOG_ARCHIVE_IN_PROGRESS + ERROR_LOG_ARCHIVE_IN_PROGRESS + + + + No documentation. + + + ERROR_LOG_EPHEMERAL + ERROR_LOG_EPHEMERAL + + + + No documentation. + + + ERROR_LOG_NOT_ENOUGH_CONTAINERS + ERROR_LOG_NOT_ENOUGH_CONTAINERS + + + + No documentation. + + + ERROR_LOG_CLIENT_ALREADY_REGISTERED + ERROR_LOG_CLIENT_ALREADY_REGISTERED + + + + No documentation. + + + ERROR_LOG_CLIENT_NOT_REGISTERED + ERROR_LOG_CLIENT_NOT_REGISTERED + + + + No documentation. + + + ERROR_LOG_FULL_HANDLER_IN_PROGRESS + ERROR_LOG_FULL_HANDLER_IN_PROGRESS + + + + No documentation. + + + ERROR_LOG_CONTAINER_READ_FAILED + ERROR_LOG_CONTAINER_READ_FAILED + + + + No documentation. + + + ERROR_LOG_CONTAINER_WRITE_FAILED + ERROR_LOG_CONTAINER_WRITE_FAILED + + + + No documentation. + + + ERROR_LOG_CONTAINER_OPEN_FAILED + ERROR_LOG_CONTAINER_OPEN_FAILED + + + + No documentation. + + + ERROR_LOG_CONTAINER_STATE_INVALID + ERROR_LOG_CONTAINER_STATE_INVALID + + + + No documentation. + + + ERROR_LOG_STATE_INVALID + ERROR_LOG_STATE_INVALID + + + + No documentation. + + + ERROR_LOG_PINNED + ERROR_LOG_PINNED + + + + No documentation. + + + ERROR_LOG_METADATA_FLUSH_FAILED + ERROR_LOG_METADATA_FLUSH_FAILED + + + + No documentation. + + + ERROR_LOG_INCONSISTENT_SECURITY + ERROR_LOG_INCONSISTENT_SECURITY + + + + No documentation. + + + ERROR_LOG_APPENDED_FLUSH_FAILED + ERROR_LOG_APPENDED_FLUSH_FAILED + + + + No documentation. + + + ERROR_LOG_PINNED_RESERVATION + ERROR_LOG_PINNED_RESERVATION + + + + No documentation. + + + ERROR_INVALID_TRANSACTION + ERROR_INVALID_TRANSACTION + + + + No documentation. + + + ERROR_TRANSACTION_NOT_ACTIVE + ERROR_TRANSACTION_NOT_ACTIVE + + + + No documentation. + + + ERROR_TRANSACTION_REQUEST_NOT_VALID + ERROR_TRANSACTION_REQUEST_NOT_VALID + + + + No documentation. + + + ERROR_TRANSACTION_NOT_REQUESTED + ERROR_TRANSACTION_NOT_REQUESTED + + + + No documentation. + + + ERROR_TRANSACTION_ALREADY_ABORTED + ERROR_TRANSACTION_ALREADY_ABORTED + + + + No documentation. + + + ERROR_TRANSACTION_ALREADY_COMMITTED + ERROR_TRANSACTION_ALREADY_COMMITTED + + + + No documentation. + + + ERROR_TM_INITIALIZATION_FAILED + ERROR_TM_INITIALIZATION_FAILED + + + + No documentation. + + + ERROR_RESOURCEMANAGER_READ_ONLY + ERROR_RESOURCEMANAGER_READ_ONLY + + + + No documentation. + + + ERROR_TRANSACTION_NOT_JOINED + ERROR_TRANSACTION_NOT_JOINED + + + + No documentation. + + + ERROR_TRANSACTION_SUPERIOR_EXISTS + ERROR_TRANSACTION_SUPERIOR_EXISTS + + + + No documentation. + + + ERROR_CRM_PROTOCOL_ALREADY_EXISTS + ERROR_CRM_PROTOCOL_ALREADY_EXISTS + + + + No documentation. + + + ERROR_TRANSACTION_PROPAGATION_FAILED + ERROR_TRANSACTION_PROPAGATION_FAILED + + + + No documentation. + + + ERROR_CRM_PROTOCOL_NOT_FOUND + ERROR_CRM_PROTOCOL_NOT_FOUND + + + + No documentation. + + + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER + + + + No documentation. + + + ERROR_CURRENT_TRANSACTION_NOT_VALID + ERROR_CURRENT_TRANSACTION_NOT_VALID + + + + No documentation. + + + ERROR_TRANSACTION_NOT_FOUND + ERROR_TRANSACTION_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCEMANAGER_NOT_FOUND + ERROR_RESOURCEMANAGER_NOT_FOUND + + + + No documentation. + + + ERROR_ENLISTMENT_NOT_FOUND + ERROR_ENLISTMENT_NOT_FOUND + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_NOT_FOUND + ERROR_TRANSACTIONMANAGER_NOT_FOUND + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_NOT_ONLINE + ERROR_TRANSACTIONMANAGER_NOT_ONLINE + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION + + + + No documentation. + + + ERROR_TRANSACTION_NOT_ROOT + ERROR_TRANSACTION_NOT_ROOT + + + + No documentation. + + + ERROR_TRANSACTION_OBJECT_EXPIRED + ERROR_TRANSACTION_OBJECT_EXPIRED + + + + No documentation. + + + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED + + + + No documentation. + + + ERROR_TRANSACTION_RECORD_TOO_LONG + ERROR_TRANSACTION_RECORD_TOO_LONG + + + + No documentation. + + + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED + + + + No documentation. + + + ERROR_TRANSACTION_INTEGRITY_VIOLATED + ERROR_TRANSACTION_INTEGRITY_VIOLATED + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH + + + + No documentation. + + + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT + + + + No documentation. + + + ERROR_TRANSACTION_MUST_WRITETHROUGH + ERROR_TRANSACTION_MUST_WRITETHROUGH + + + + No documentation. + + + ERROR_TRANSACTION_NO_SUPERIOR + ERROR_TRANSACTION_NO_SUPERIOR + + + + No documentation. + + + ERROR_HEURISTIC_DAMAGE_POSSIBLE + ERROR_HEURISTIC_DAMAGE_POSSIBLE + + + + No documentation. + + + ERROR_TRANSACTIONAL_CONFLICT + ERROR_TRANSACTIONAL_CONFLICT + + + + No documentation. + + + ERROR_RM_NOT_ACTIVE + ERROR_RM_NOT_ACTIVE + + + + No documentation. + + + ERROR_RM_METADATA_CORRUPT + ERROR_RM_METADATA_CORRUPT + + + + No documentation. + + + ERROR_DIRECTORY_NOT_RM + ERROR_DIRECTORY_NOT_RM + + + + No documentation. + + + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE + + + + No documentation. + + + ERROR_LOG_RESIZE_INVALID_SIZE + ERROR_LOG_RESIZE_INVALID_SIZE + + + + No documentation. + + + ERROR_OBJECT_NO_LONGER_EXISTS + ERROR_OBJECT_NO_LONGER_EXISTS + + + + No documentation. + + + ERROR_STREAM_MINIVERSION_NOT_FOUND + ERROR_STREAM_MINIVERSION_NOT_FOUND + + + + No documentation. + + + ERROR_STREAM_MINIVERSION_NOT_VALID + ERROR_STREAM_MINIVERSION_NOT_VALID + + + + No documentation. + + + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION + + + + No documentation. + + + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT + + + + No documentation. + + + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS + + + + No documentation. + + + ERROR_REMOTE_FILE_VERSION_MISMATCH + ERROR_REMOTE_FILE_VERSION_MISMATCH + + + + No documentation. + + + ERROR_HANDLE_NO_LONGER_VALID + ERROR_HANDLE_NO_LONGER_VALID + + + + No documentation. + + + ERROR_NO_TXF_METADATA + ERROR_NO_TXF_METADATA + + + + No documentation. + + + ERROR_LOG_CORRUPTION_DETECTED + ERROR_LOG_CORRUPTION_DETECTED + + + + No documentation. + + + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN + + + + No documentation. + + + ERROR_RM_DISCONNECTED + ERROR_RM_DISCONNECTED + + + + No documentation. + + + ERROR_ENLISTMENT_NOT_SUPERIOR + ERROR_ENLISTMENT_NOT_SUPERIOR + + + + No documentation. + + + ERROR_RECOVERY_NOT_NEEDED + ERROR_RECOVERY_NOT_NEEDED + + + + No documentation. + + + ERROR_RM_ALREADY_STARTED + ERROR_RM_ALREADY_STARTED + + + + No documentation. + + + ERROR_FILE_IDENTITY_NOT_PERSISTENT + ERROR_FILE_IDENTITY_NOT_PERSISTENT + + + + No documentation. + + + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY + + + + No documentation. + + + ERROR_CANT_CROSS_RM_BOUNDARY + ERROR_CANT_CROSS_RM_BOUNDARY + + + + No documentation. + + + ERROR_TXF_DIR_NOT_EMPTY + ERROR_TXF_DIR_NOT_EMPTY + + + + No documentation. + + + ERROR_INDOUBT_TRANSACTIONS_EXIST + ERROR_INDOUBT_TRANSACTIONS_EXIST + + + + No documentation. + + + ERROR_TM_VOLATILE + ERROR_TM_VOLATILE + + + + No documentation. + + + ERROR_ROLLBACK_TIMER_EXPIRED + ERROR_ROLLBACK_TIMER_EXPIRED + + + + No documentation. + + + ERROR_TXF_ATTRIBUTE_CORRUPT + ERROR_TXF_ATTRIBUTE_CORRUPT + + + + No documentation. + + + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION + + + + No documentation. + + + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED + + + + No documentation. + + + ERROR_LOG_GROWTH_FAILED + ERROR_LOG_GROWTH_FAILED + + + + No documentation. + + + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE + + + + No documentation. + + + ERROR_TXF_METADATA_ALREADY_PRESENT + ERROR_TXF_METADATA_ALREADY_PRESENT + + + + No documentation. + + + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET + + + + No documentation. + + + ERROR_TRANSACTION_REQUIRED_PROMOTION + ERROR_TRANSACTION_REQUIRED_PROMOTION + + + + No documentation. + + + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION + + + + No documentation. + + + ERROR_TRANSACTIONS_NOT_FROZEN + ERROR_TRANSACTIONS_NOT_FROZEN + + + + No documentation. + + + ERROR_TRANSACTION_FREEZE_IN_PROGRESS + ERROR_TRANSACTION_FREEZE_IN_PROGRESS + + + + No documentation. + + + ERROR_NOT_SNAPSHOT_VOLUME + ERROR_NOT_SNAPSHOT_VOLUME + + + + No documentation. + + + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES + + + + No documentation. + + + ERROR_DATA_LOST_REPAIR + ERROR_DATA_LOST_REPAIR + + + + No documentation. + + + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION + + + + No documentation. + + + ERROR_TM_IDENTITY_MISMATCH + ERROR_TM_IDENTITY_MISMATCH + + + + No documentation. + + + ERROR_FLOATED_SECTION + ERROR_FLOATED_SECTION + + + + No documentation. + + + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK + + + + No documentation. + + + ERROR_CANNOT_ABORT_TRANSACTIONS + ERROR_CANNOT_ABORT_TRANSACTIONS + + + + No documentation. + + + ERROR_BAD_CLUSTERS + ERROR_BAD_CLUSTERS + + + + No documentation. + + + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION + + + + No documentation. + + + ERROR_VOLUME_DIRTY + ERROR_VOLUME_DIRTY + + + + No documentation. + + + ERROR_NO_LINK_TRACKING_IN_TRANSACTION + ERROR_NO_LINK_TRACKING_IN_TRANSACTION + + + + No documentation. + + + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION + + + + No documentation. + + + ERROR_EXPIRED_HANDLE + ERROR_EXPIRED_HANDLE + + + + No documentation. + + + ERROR_TRANSACTION_NOT_ENLISTED + ERROR_TRANSACTION_NOT_ENLISTED + + + + No documentation. + + + ERROR_CTX_WINSTATION_NAME_INVALID + ERROR_CTX_WINSTATION_NAME_INVALID + + + + No documentation. + + + ERROR_CTX_INVALID_PD + ERROR_CTX_INVALID_PD + + + + No documentation. + + + ERROR_CTX_PD_NOT_FOUND + ERROR_CTX_PD_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_WD_NOT_FOUND + ERROR_CTX_WD_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY + + + + No documentation. + + + ERROR_CTX_SERVICE_NAME_COLLISION + ERROR_CTX_SERVICE_NAME_COLLISION + + + + No documentation. + + + ERROR_CTX_CLOSE_PENDING + ERROR_CTX_CLOSE_PENDING + + + + No documentation. + + + ERROR_CTX_NO_OUTBUF + ERROR_CTX_NO_OUTBUF + + + + No documentation. + + + ERROR_CTX_MODEM_INF_NOT_FOUND + ERROR_CTX_MODEM_INF_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_INVALID_MODEMNAME + ERROR_CTX_INVALID_MODEMNAME + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_ERROR + ERROR_CTX_MODEM_RESPONSE_ERROR + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_TIMEOUT + ERROR_CTX_MODEM_RESPONSE_TIMEOUT + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_BUSY + ERROR_CTX_MODEM_RESPONSE_BUSY + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_VOICE + ERROR_CTX_MODEM_RESPONSE_VOICE + + + + No documentation. + + + ERROR_CTX_TD_ERROR + ERROR_CTX_TD_ERROR + + + + No documentation. + + + ERROR_CTX_WINSTATION_NOT_FOUND + ERROR_CTX_WINSTATION_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_WINSTATION_ALREADY_EXISTS + ERROR_CTX_WINSTATION_ALREADY_EXISTS + + + + No documentation. + + + ERROR_CTX_WINSTATION_BUSY + ERROR_CTX_WINSTATION_BUSY + + + + No documentation. + + + ERROR_CTX_BAD_VIDEO_MODE + ERROR_CTX_BAD_VIDEO_MODE + + + + No documentation. + + + ERROR_CTX_GRAPHICS_INVALID + ERROR_CTX_GRAPHICS_INVALID + + + + No documentation. + + + ERROR_CTX_LOGON_DISABLED + ERROR_CTX_LOGON_DISABLED + + + + No documentation. + + + ERROR_CTX_NOT_CONSOLE + ERROR_CTX_NOT_CONSOLE + + + + No documentation. + + + ERROR_CTX_CLIENT_QUERY_TIMEOUT + ERROR_CTX_CLIENT_QUERY_TIMEOUT + + + + No documentation. + + + ERROR_CTX_CONSOLE_DISCONNECT + ERROR_CTX_CONSOLE_DISCONNECT + + + + No documentation. + + + ERROR_CTX_CONSOLE_CONNECT + ERROR_CTX_CONSOLE_CONNECT + + + + No documentation. + + + ERROR_CTX_SHADOW_DENIED + ERROR_CTX_SHADOW_DENIED + + + + No documentation. + + + ERROR_CTX_WINSTATION_ACCESS_DENIED + ERROR_CTX_WINSTATION_ACCESS_DENIED + + + + No documentation. + + + ERROR_CTX_INVALID_WD + ERROR_CTX_INVALID_WD + + + + No documentation. + + + ERROR_CTX_SHADOW_INVALID + ERROR_CTX_SHADOW_INVALID + + + + No documentation. + + + ERROR_CTX_SHADOW_DISABLED + ERROR_CTX_SHADOW_DISABLED + + + + No documentation. + + + ERROR_CTX_CLIENT_LICENSE_IN_USE + ERROR_CTX_CLIENT_LICENSE_IN_USE + + + + No documentation. + + + ERROR_CTX_CLIENT_LICENSE_NOT_SET + ERROR_CTX_CLIENT_LICENSE_NOT_SET + + + + No documentation. + + + ERROR_CTX_LICENSE_NOT_AVAILABLE + ERROR_CTX_LICENSE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_CTX_LICENSE_CLIENT_INVALID + ERROR_CTX_LICENSE_CLIENT_INVALID + + + + No documentation. + + + ERROR_CTX_LICENSE_EXPIRED + ERROR_CTX_LICENSE_EXPIRED + + + + No documentation. + + + ERROR_CTX_SHADOW_NOT_RUNNING + ERROR_CTX_SHADOW_NOT_RUNNING + + + + No documentation. + + + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE + + + + No documentation. + + + ERROR_ACTIVATION_COUNT_EXCEEDED + ERROR_ACTIVATION_COUNT_EXCEEDED + + + + No documentation. + + + ERROR_CTX_WINSTATIONS_DISABLED + ERROR_CTX_WINSTATIONS_DISABLED + + + + No documentation. + + + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED + + + + No documentation. + + + ERROR_CTX_SESSION_IN_USE + ERROR_CTX_SESSION_IN_USE + + + + No documentation. + + + ERROR_CTX_NO_FORCE_LOGOFF + ERROR_CTX_NO_FORCE_LOGOFF + + + + No documentation. + + + ERROR_CTX_ACCOUNT_RESTRICTION + ERROR_CTX_ACCOUNT_RESTRICTION + + + + No documentation. + + + ERROR_RDP_PROTOCOL_ERROR + ERROR_RDP_PROTOCOL_ERROR + + + + No documentation. + + + ERROR_CTX_CDM_CONNECT + ERROR_CTX_CDM_CONNECT + + + + No documentation. + + + ERROR_CTX_CDM_DISCONNECT + ERROR_CTX_CDM_DISCONNECT + + + + No documentation. + + + ERROR_CTX_SECURITY_LAYER_ERROR + ERROR_CTX_SECURITY_LAYER_ERROR + + + + No documentation. + + + ERROR_TS_INCOMPATIBLE_SESSIONS + ERROR_TS_INCOMPATIBLE_SESSIONS + + + + No documentation. + + + ERROR_TS_VIDEO_SUBSYSTEM_ERROR + ERROR_TS_VIDEO_SUBSYSTEM_ERROR + + + + No documentation. + + + ERROR_DS_NOT_INSTALLED + ERROR_DS_NOT_INSTALLED + + + + No documentation. + + + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY + + + + No documentation. + + + ERROR_DS_NO_ATTRIBUTE_OR_VALUE + ERROR_DS_NO_ATTRIBUTE_OR_VALUE + + + + No documentation. + + + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX + + + + No documentation. + + + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED + + + + No documentation. + + + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS + + + + No documentation. + + + ERROR_DS_BUSY + ERROR_DS_BUSY + + + + No documentation. + + + ERROR_DS_UNAVAILABLE + ERROR_DS_UNAVAILABLE + + + + No documentation. + + + ERROR_DS_NO_RIDS_ALLOCATED + ERROR_DS_NO_RIDS_ALLOCATED + + + + No documentation. + + + ERROR_DS_NO_MORE_RIDS + ERROR_DS_NO_MORE_RIDS + + + + No documentation. + + + ERROR_DS_INCORRECT_ROLE_OWNER + ERROR_DS_INCORRECT_ROLE_OWNER + + + + No documentation. + + + ERROR_DS_RIDMGR_INIT_ERROR + ERROR_DS_RIDMGR_INIT_ERROR + + + + No documentation. + + + ERROR_DS_OBJ_CLASS_VIOLATION + ERROR_DS_OBJ_CLASS_VIOLATION + + + + No documentation. + + + ERROR_DS_CANT_ON_NON_LEAF + ERROR_DS_CANT_ON_NON_LEAF + + + + No documentation. + + + ERROR_DS_CANT_ON_RDN + ERROR_DS_CANT_ON_RDN + + + + No documentation. + + + ERROR_DS_CANT_MOD_OBJ_CLASS + ERROR_DS_CANT_MOD_OBJ_CLASS + + + + No documentation. + + + ERROR_DS_CROSS_DOM_MOVE_ERROR + ERROR_DS_CROSS_DOM_MOVE_ERROR + + + + No documentation. + + + ERROR_DS_GC_NOT_AVAILABLE + ERROR_DS_GC_NOT_AVAILABLE + + + + No documentation. + + + ERROR_SHARED_POLICY + ERROR_SHARED_POLICY + + + + No documentation. + + + ERROR_POLICY_OBJECT_NOT_FOUND + ERROR_POLICY_OBJECT_NOT_FOUND + + + + No documentation. + + + ERROR_POLICY_ONLY_IN_DS + ERROR_POLICY_ONLY_IN_DS + + + + No documentation. + + + ERROR_PROMOTION_ACTIVE + ERROR_PROMOTION_ACTIVE + + + + No documentation. + + + ERROR_NO_PROMOTION_ACTIVE + ERROR_NO_PROMOTION_ACTIVE + + + + No documentation. + + + ERROR_DS_OPERATIONS_ERROR + ERROR_DS_OPERATIONS_ERROR + + + + No documentation. + + + ERROR_DS_PROTOCOL_ERROR + ERROR_DS_PROTOCOL_ERROR + + + + No documentation. + + + ERROR_DS_TIMELIMIT_EXCEEDED + ERROR_DS_TIMELIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_SIZELIMIT_EXCEEDED + ERROR_DS_SIZELIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_ADMIN_LIMIT_EXCEEDED + ERROR_DS_ADMIN_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_COMPARE_FALSE + ERROR_DS_COMPARE_FALSE + + + + No documentation. + + + ERROR_DS_COMPARE_TRUE + ERROR_DS_COMPARE_TRUE + + + + No documentation. + + + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED + + + + No documentation. + + + ERROR_DS_STRONG_AUTH_REQUIRED + ERROR_DS_STRONG_AUTH_REQUIRED + + + + No documentation. + + + ERROR_DS_INAPPROPRIATE_AUTH + ERROR_DS_INAPPROPRIATE_AUTH + + + + No documentation. + + + ERROR_DS_AUTH_UNKNOWN + ERROR_DS_AUTH_UNKNOWN + + + + No documentation. + + + ERROR_DS_REFERRAL + ERROR_DS_REFERRAL + + + + No documentation. + + + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION + + + + No documentation. + + + ERROR_DS_CONFIDENTIALITY_REQUIRED + ERROR_DS_CONFIDENTIALITY_REQUIRED + + + + No documentation. + + + ERROR_DS_INAPPROPRIATE_MATCHING + ERROR_DS_INAPPROPRIATE_MATCHING + + + + No documentation. + + + ERROR_DS_CONSTRAINT_VIOLATION + ERROR_DS_CONSTRAINT_VIOLATION + + + + No documentation. + + + ERROR_DS_NO_SUCH_OBJECT + ERROR_DS_NO_SUCH_OBJECT + + + + No documentation. + + + ERROR_DS_ALIAS_PROBLEM + ERROR_DS_ALIAS_PROBLEM + + + + No documentation. + + + ERROR_DS_INVALID_DN_SYNTAX + ERROR_DS_INVALID_DN_SYNTAX + + + + No documentation. + + + ERROR_DS_IS_LEAF + ERROR_DS_IS_LEAF + + + + No documentation. + + + ERROR_DS_ALIAS_DEREF_PROBLEM + ERROR_DS_ALIAS_DEREF_PROBLEM + + + + No documentation. + + + ERROR_DS_UNWILLING_TO_PERFORM + ERROR_DS_UNWILLING_TO_PERFORM + + + + No documentation. + + + ERROR_DS_LOOP_DETECT + ERROR_DS_LOOP_DETECT + + + + No documentation. + + + ERROR_DS_NAMING_VIOLATION + ERROR_DS_NAMING_VIOLATION + + + + No documentation. + + + ERROR_DS_OBJECT_RESULTS_TOO_LARGE + ERROR_DS_OBJECT_RESULTS_TOO_LARGE + + + + No documentation. + + + ERROR_DS_AFFECTS_MULTIPLE_DSAS + ERROR_DS_AFFECTS_MULTIPLE_DSAS + + + + No documentation. + + + ERROR_DS_SERVER_DOWN + ERROR_DS_SERVER_DOWN + + + + No documentation. + + + ERROR_DS_LOCAL_ERROR + ERROR_DS_LOCAL_ERROR + + + + No documentation. + + + ERROR_DS_ENCODING_ERROR + ERROR_DS_ENCODING_ERROR + + + + No documentation. + + + ERROR_DS_DECODING_ERROR + ERROR_DS_DECODING_ERROR + + + + No documentation. + + + ERROR_DS_FILTER_UNKNOWN + ERROR_DS_FILTER_UNKNOWN + + + + No documentation. + + + ERROR_DS_PARAM_ERROR + ERROR_DS_PARAM_ERROR + + + + No documentation. + + + ERROR_DS_NOT_SUPPORTED + ERROR_DS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_DS_NO_RESULTS_RETURNED + ERROR_DS_NO_RESULTS_RETURNED + + + + No documentation. + + + ERROR_DS_CONTROL_NOT_FOUND + ERROR_DS_CONTROL_NOT_FOUND + + + + No documentation. + + + ERROR_DS_CLIENT_LOOP + ERROR_DS_CLIENT_LOOP + + + + No documentation. + + + ERROR_DS_REFERRAL_LIMIT_EXCEEDED + ERROR_DS_REFERRAL_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_SORT_CONTROL_MISSING + ERROR_DS_SORT_CONTROL_MISSING + + + + No documentation. + + + ERROR_DS_OFFSET_RANGE_ERROR + ERROR_DS_OFFSET_RANGE_ERROR + + + + No documentation. + + + ERROR_DS_ROOT_MUST_BE_NC + ERROR_DS_ROOT_MUST_BE_NC + + + + No documentation. + + + ERROR_DS_ADD_REPLICA_INHIBITED + ERROR_DS_ADD_REPLICA_INHIBITED + + + + No documentation. + + + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA + + + + No documentation. + + + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED + + + + No documentation. + + + ERROR_DS_OBJ_STRING_NAME_EXISTS + ERROR_DS_OBJ_STRING_NAME_EXISTS + + + + No documentation. + + + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA + + + + No documentation. + + + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA + + + + No documentation. + + + ERROR_DS_NO_REQUESTED_ATTS_FOUND + ERROR_DS_NO_REQUESTED_ATTS_FOUND + + + + No documentation. + + + ERROR_DS_USER_BUFFER_TO_SMALL + ERROR_DS_USER_BUFFER_TO_SMALL + + + + No documentation. + + + ERROR_DS_ATT_IS_NOT_ON_OBJ + ERROR_DS_ATT_IS_NOT_ON_OBJ + + + + No documentation. + + + ERROR_DS_ILLEGAL_MOD_OPERATION + ERROR_DS_ILLEGAL_MOD_OPERATION + + + + No documentation. + + + ERROR_DS_OBJ_TOO_LARGE + ERROR_DS_OBJ_TOO_LARGE + + + + No documentation. + + + ERROR_DS_BAD_INSTANCE_TYPE + ERROR_DS_BAD_INSTANCE_TYPE + + + + No documentation. + + + ERROR_DS_MASTERDSA_REQUIRED + ERROR_DS_MASTERDSA_REQUIRED + + + + No documentation. + + + ERROR_DS_OBJECT_CLASS_REQUIRED + ERROR_DS_OBJECT_CLASS_REQUIRED + + + + No documentation. + + + ERROR_DS_MISSING_REQUIRED_ATT + ERROR_DS_MISSING_REQUIRED_ATT + + + + No documentation. + + + ERROR_DS_ATT_NOT_DEF_FOR_CLASS + ERROR_DS_ATT_NOT_DEF_FOR_CLASS + + + + No documentation. + + + ERROR_DS_ATT_ALREADY_EXISTS + ERROR_DS_ATT_ALREADY_EXISTS + + + + No documentation. + + + ERROR_DS_CANT_ADD_ATT_VALUES + ERROR_DS_CANT_ADD_ATT_VALUES + + + + No documentation. + + + ERROR_DS_SINGLE_VALUE_CONSTRAINT + ERROR_DS_SINGLE_VALUE_CONSTRAINT + + + + No documentation. + + + ERROR_DS_RANGE_CONSTRAINT + ERROR_DS_RANGE_CONSTRAINT + + + + No documentation. + + + ERROR_DS_ATT_VAL_ALREADY_EXISTS + ERROR_DS_ATT_VAL_ALREADY_EXISTS + + + + No documentation. + + + ERROR_DS_CANT_REM_MISSING_ATT + ERROR_DS_CANT_REM_MISSING_ATT + + + + No documentation. + + + ERROR_DS_CANT_REM_MISSING_ATT_VAL + ERROR_DS_CANT_REM_MISSING_ATT_VAL + + + + No documentation. + + + ERROR_DS_ROOT_CANT_BE_SUBREF + ERROR_DS_ROOT_CANT_BE_SUBREF + + + + No documentation. + + + ERROR_DS_NO_CHAINING + ERROR_DS_NO_CHAINING + + + + No documentation. + + + ERROR_DS_NO_CHAINED_EVAL + ERROR_DS_NO_CHAINED_EVAL + + + + No documentation. + + + ERROR_DS_NO_PARENT_OBJECT + ERROR_DS_NO_PARENT_OBJECT + + + + No documentation. + + + ERROR_DS_PARENT_IS_AN_ALIAS + ERROR_DS_PARENT_IS_AN_ALIAS + + + + No documentation. + + + ERROR_DS_CANT_MIX_MASTER_AND_REPS + ERROR_DS_CANT_MIX_MASTER_AND_REPS + + + + No documentation. + + + ERROR_DS_CHILDREN_EXIST + ERROR_DS_CHILDREN_EXIST + + + + No documentation. + + + ERROR_DS_OBJ_NOT_FOUND + ERROR_DS_OBJ_NOT_FOUND + + + + No documentation. + + + ERROR_DS_ALIASED_OBJ_MISSING + ERROR_DS_ALIASED_OBJ_MISSING + + + + No documentation. + + + ERROR_DS_BAD_NAME_SYNTAX + ERROR_DS_BAD_NAME_SYNTAX + + + + No documentation. + + + ERROR_DS_ALIAS_POINTS_TO_ALIAS + ERROR_DS_ALIAS_POINTS_TO_ALIAS + + + + No documentation. + + + ERROR_DS_CANT_DEREF_ALIAS + ERROR_DS_CANT_DEREF_ALIAS + + + + No documentation. + + + ERROR_DS_OUT_OF_SCOPE + ERROR_DS_OUT_OF_SCOPE + + + + No documentation. + + + ERROR_DS_OBJECT_BEING_REMOVED + ERROR_DS_OBJECT_BEING_REMOVED + + + + No documentation. + + + ERROR_DS_CANT_DELETE_DSA_OBJ + ERROR_DS_CANT_DELETE_DSA_OBJ + + + + No documentation. + + + ERROR_DS_GENERIC_ERROR + ERROR_DS_GENERIC_ERROR + + + + No documentation. + + + ERROR_DS_DSA_MUST_BE_INT_MASTER + ERROR_DS_DSA_MUST_BE_INT_MASTER + + + + No documentation. + + + ERROR_DS_CLASS_NOT_DSA + ERROR_DS_CLASS_NOT_DSA + + + + No documentation. + + + ERROR_DS_INSUFF_ACCESS_RIGHTS + ERROR_DS_INSUFF_ACCESS_RIGHTS + + + + No documentation. + + + ERROR_DS_ILLEGAL_SUPERIOR + ERROR_DS_ILLEGAL_SUPERIOR + + + + No documentation. + + + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM + + + + No documentation. + + + ERROR_DS_NAME_TOO_MANY_PARTS + ERROR_DS_NAME_TOO_MANY_PARTS + + + + No documentation. + + + ERROR_DS_NAME_TOO_LONG + ERROR_DS_NAME_TOO_LONG + + + + No documentation. + + + ERROR_DS_NAME_VALUE_TOO_LONG + ERROR_DS_NAME_VALUE_TOO_LONG + + + + No documentation. + + + ERROR_DS_NAME_UNPARSEABLE + ERROR_DS_NAME_UNPARSEABLE + + + + No documentation. + + + ERROR_DS_NAME_TYPE_UNKNOWN + ERROR_DS_NAME_TYPE_UNKNOWN + + + + No documentation. + + + ERROR_DS_NOT_AN_OBJECT + ERROR_DS_NOT_AN_OBJECT + + + + No documentation. + + + ERROR_DS_SEC_DESC_TOO_SHORT + ERROR_DS_SEC_DESC_TOO_SHORT + + + + No documentation. + + + ERROR_DS_SEC_DESC_INVALID + ERROR_DS_SEC_DESC_INVALID + + + + No documentation. + + + ERROR_DS_NO_DELETED_NAME + ERROR_DS_NO_DELETED_NAME + + + + No documentation. + + + ERROR_DS_SUBREF_MUST_HAVE_PARENT + ERROR_DS_SUBREF_MUST_HAVE_PARENT + + + + No documentation. + + + ERROR_DS_NCNAME_MUST_BE_NC + ERROR_DS_NCNAME_MUST_BE_NC + + + + No documentation. + + + ERROR_DS_CANT_ADD_SYSTEM_ONLY + ERROR_DS_CANT_ADD_SYSTEM_ONLY + + + + No documentation. + + + ERROR_DS_CLASS_MUST_BE_CONCRETE + ERROR_DS_CLASS_MUST_BE_CONCRETE + + + + No documentation. + + + ERROR_DS_INVALID_DMD + ERROR_DS_INVALID_DMD + + + + No documentation. + + + ERROR_DS_OBJ_GUID_EXISTS + ERROR_DS_OBJ_GUID_EXISTS + + + + No documentation. + + + ERROR_DS_NOT_ON_BACKLINK + ERROR_DS_NOT_ON_BACKLINK + + + + No documentation. + + + ERROR_DS_NO_CROSSREF_FOR_NC + ERROR_DS_NO_CROSSREF_FOR_NC + + + + No documentation. + + + ERROR_DS_SHUTTING_DOWN + ERROR_DS_SHUTTING_DOWN + + + + No documentation. + + + ERROR_DS_UNKNOWN_OPERATION + ERROR_DS_UNKNOWN_OPERATION + + + + No documentation. + + + ERROR_DS_INVALID_ROLE_OWNER + ERROR_DS_INVALID_ROLE_OWNER + + + + No documentation. + + + ERROR_DS_COULDNT_CONTACT_FSMO + ERROR_DS_COULDNT_CONTACT_FSMO + + + + No documentation. + + + ERROR_DS_CROSS_NC_DN_RENAME + ERROR_DS_CROSS_NC_DN_RENAME + + + + No documentation. + + + ERROR_DS_CANT_MOD_SYSTEM_ONLY + ERROR_DS_CANT_MOD_SYSTEM_ONLY + + + + No documentation. + + + ERROR_DS_REPLICATOR_ONLY + ERROR_DS_REPLICATOR_ONLY + + + + No documentation. + + + ERROR_DS_OBJ_CLASS_NOT_DEFINED + ERROR_DS_OBJ_CLASS_NOT_DEFINED + + + + No documentation. + + + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS + + + + No documentation. + + + ERROR_DS_NAME_REFERENCE_INVALID + ERROR_DS_NAME_REFERENCE_INVALID + + + + No documentation. + + + ERROR_DS_CROSS_REF_EXISTS + ERROR_DS_CROSS_REF_EXISTS + + + + No documentation. + + + ERROR_DS_CANT_DEL_MASTER_CROSSREF + ERROR_DS_CANT_DEL_MASTER_CROSSREF + + + + No documentation. + + + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD + + + + No documentation. + + + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX + + + + No documentation. + + + ERROR_DS_DUP_RDN + ERROR_DS_DUP_RDN + + + + No documentation. + + + ERROR_DS_DUP_OID + ERROR_DS_DUP_OID + + + + No documentation. + + + ERROR_DS_DUP_MAPI_ID + ERROR_DS_DUP_MAPI_ID + + + + No documentation. + + + ERROR_DS_DUP_SCHEMA_ID_GUID + ERROR_DS_DUP_SCHEMA_ID_GUID + + + + No documentation. + + + ERROR_DS_DUP_LDAP_DISPLAY_NAME + ERROR_DS_DUP_LDAP_DISPLAY_NAME + + + + No documentation. + + + ERROR_DS_SEMANTIC_ATT_TEST + ERROR_DS_SEMANTIC_ATT_TEST + + + + No documentation. + + + ERROR_DS_SYNTAX_MISMATCH + ERROR_DS_SYNTAX_MISMATCH + + + + No documentation. + + + ERROR_DS_EXISTS_IN_MUST_HAVE + ERROR_DS_EXISTS_IN_MUST_HAVE + + + + No documentation. + + + ERROR_DS_EXISTS_IN_MAY_HAVE + ERROR_DS_EXISTS_IN_MAY_HAVE + + + + No documentation. + + + ERROR_DS_NONEXISTENT_MAY_HAVE + ERROR_DS_NONEXISTENT_MAY_HAVE + + + + No documentation. + + + ERROR_DS_NONEXISTENT_MUST_HAVE + ERROR_DS_NONEXISTENT_MUST_HAVE + + + + No documentation. + + + ERROR_DS_AUX_CLS_TEST_FAIL + ERROR_DS_AUX_CLS_TEST_FAIL + + + + No documentation. + + + ERROR_DS_NONEXISTENT_POSS_SUP + ERROR_DS_NONEXISTENT_POSS_SUP + + + + No documentation. + + + ERROR_DS_SUB_CLS_TEST_FAIL + ERROR_DS_SUB_CLS_TEST_FAIL + + + + No documentation. + + + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX + + + + No documentation. + + + ERROR_DS_EXISTS_IN_AUX_CLS + ERROR_DS_EXISTS_IN_AUX_CLS + + + + No documentation. + + + ERROR_DS_EXISTS_IN_SUB_CLS + ERROR_DS_EXISTS_IN_SUB_CLS + + + + No documentation. + + + ERROR_DS_EXISTS_IN_POSS_SUP + ERROR_DS_EXISTS_IN_POSS_SUP + + + + No documentation. + + + ERROR_DS_RECALCSCHEMA_FAILED + ERROR_DS_RECALCSCHEMA_FAILED + + + + No documentation. + + + ERROR_DS_TREE_DELETE_NOT_FINISHED + ERROR_DS_TREE_DELETE_NOT_FINISHED + + + + No documentation. + + + ERROR_DS_CANT_DELETE + ERROR_DS_CANT_DELETE + + + + No documentation. + + + ERROR_DS_ATT_SCHEMA_REQ_ID + ERROR_DS_ATT_SCHEMA_REQ_ID + + + + No documentation. + + + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX + + + + No documentation. + + + ERROR_DS_CANT_CACHE_ATT + ERROR_DS_CANT_CACHE_ATT + + + + No documentation. + + + ERROR_DS_CANT_CACHE_CLASS + ERROR_DS_CANT_CACHE_CLASS + + + + No documentation. + + + ERROR_DS_CANT_REMOVE_ATT_CACHE + ERROR_DS_CANT_REMOVE_ATT_CACHE + + + + No documentation. + + + ERROR_DS_CANT_REMOVE_CLASS_CACHE + ERROR_DS_CANT_REMOVE_CLASS_CACHE + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_DN + ERROR_DS_CANT_RETRIEVE_DN + + + + No documentation. + + + ERROR_DS_MISSING_SUPREF + ERROR_DS_MISSING_SUPREF + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_INSTANCE + ERROR_DS_CANT_RETRIEVE_INSTANCE + + + + No documentation. + + + ERROR_DS_CODE_INCONSISTENCY + ERROR_DS_CODE_INCONSISTENCY + + + + No documentation. + + + ERROR_DS_DATABASE_ERROR + ERROR_DS_DATABASE_ERROR + + + + No documentation. + + + ERROR_DS_GOVERNSID_MISSING + ERROR_DS_GOVERNSID_MISSING + + + + No documentation. + + + ERROR_DS_MISSING_EXPECTED_ATT + ERROR_DS_MISSING_EXPECTED_ATT + + + + No documentation. + + + ERROR_DS_NCNAME_MISSING_CR_REF + ERROR_DS_NCNAME_MISSING_CR_REF + + + + No documentation. + + + ERROR_DS_SECURITY_CHECKING_ERROR + ERROR_DS_SECURITY_CHECKING_ERROR + + + + No documentation. + + + ERROR_DS_SCHEMA_NOT_LOADED + ERROR_DS_SCHEMA_NOT_LOADED + + + + No documentation. + + + ERROR_DS_SCHEMA_ALLOC_FAILED + ERROR_DS_SCHEMA_ALLOC_FAILED + + + + No documentation. + + + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX + + + + No documentation. + + + ERROR_DS_GCVERIFY_ERROR + ERROR_DS_GCVERIFY_ERROR + + + + No documentation. + + + ERROR_DS_DRA_SCHEMA_MISMATCH + ERROR_DS_DRA_SCHEMA_MISMATCH + + + + No documentation. + + + ERROR_DS_CANT_FIND_DSA_OBJ + ERROR_DS_CANT_FIND_DSA_OBJ + + + + No documentation. + + + ERROR_DS_CANT_FIND_EXPECTED_NC + ERROR_DS_CANT_FIND_EXPECTED_NC + + + + No documentation. + + + ERROR_DS_CANT_FIND_NC_IN_CACHE + ERROR_DS_CANT_FIND_NC_IN_CACHE + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_CHILD + ERROR_DS_CANT_RETRIEVE_CHILD + + + + No documentation. + + + ERROR_DS_SECURITY_ILLEGAL_MODIFY + ERROR_DS_SECURITY_ILLEGAL_MODIFY + + + + No documentation. + + + ERROR_DS_CANT_REPLACE_HIDDEN_REC + ERROR_DS_CANT_REPLACE_HIDDEN_REC + + + + No documentation. + + + ERROR_DS_BAD_HIERARCHY_FILE + ERROR_DS_BAD_HIERARCHY_FILE + + + + No documentation. + + + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED + + + + No documentation. + + + ERROR_DS_CONFIG_PARAM_MISSING + ERROR_DS_CONFIG_PARAM_MISSING + + + + No documentation. + + + ERROR_DS_COUNTING_AB_INDICES_FAILED + ERROR_DS_COUNTING_AB_INDICES_FAILED + + + + No documentation. + + + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED + + + + No documentation. + + + ERROR_DS_INTERNAL_FAILURE + ERROR_DS_INTERNAL_FAILURE + + + + No documentation. + + + ERROR_DS_UNKNOWN_ERROR + ERROR_DS_UNKNOWN_ERROR + + + + No documentation. + + + ERROR_DS_ROOT_REQUIRES_CLASS_TOP + ERROR_DS_ROOT_REQUIRES_CLASS_TOP + + + + No documentation. + + + ERROR_DS_REFUSING_FSMO_ROLES + ERROR_DS_REFUSING_FSMO_ROLES + + + + No documentation. + + + ERROR_DS_MISSING_FSMO_SETTINGS + ERROR_DS_MISSING_FSMO_SETTINGS + + + + No documentation. + + + ERROR_DS_UNABLE_TO_SURRENDER_ROLES + ERROR_DS_UNABLE_TO_SURRENDER_ROLES + + + + No documentation. + + + ERROR_DS_DRA_GENERIC + ERROR_DS_DRA_GENERIC + + + + No documentation. + + + ERROR_DS_DRA_INVALID_PARAMETER + ERROR_DS_DRA_INVALID_PARAMETER + + + + No documentation. + + + ERROR_DS_DRA_BUSY + ERROR_DS_DRA_BUSY + + + + No documentation. + + + ERROR_DS_DRA_BAD_DN + ERROR_DS_DRA_BAD_DN + + + + No documentation. + + + ERROR_DS_DRA_BAD_NC + ERROR_DS_DRA_BAD_NC + + + + No documentation. + + + ERROR_DS_DRA_DN_EXISTS + ERROR_DS_DRA_DN_EXISTS + + + + No documentation. + + + ERROR_DS_DRA_INTERNAL_ERROR + ERROR_DS_DRA_INTERNAL_ERROR + + + + No documentation. + + + ERROR_DS_DRA_INCONSISTENT_DIT + ERROR_DS_DRA_INCONSISTENT_DIT + + + + No documentation. + + + ERROR_DS_DRA_CONNECTION_FAILED + ERROR_DS_DRA_CONNECTION_FAILED + + + + No documentation. + + + ERROR_DS_DRA_BAD_INSTANCE_TYPE + ERROR_DS_DRA_BAD_INSTANCE_TYPE + + + + No documentation. + + + ERROR_DS_DRA_OUT_OF_MEM + ERROR_DS_DRA_OUT_OF_MEM + + + + No documentation. + + + ERROR_DS_DRA_MAIL_PROBLEM + ERROR_DS_DRA_MAIL_PROBLEM + + + + No documentation. + + + ERROR_DS_DRA_REF_ALREADY_EXISTS + ERROR_DS_DRA_REF_ALREADY_EXISTS + + + + No documentation. + + + ERROR_DS_DRA_REF_NOT_FOUND + ERROR_DS_DRA_REF_NOT_FOUND + + + + No documentation. + + + ERROR_DS_DRA_OBJ_IS_REP_SOURCE + ERROR_DS_DRA_OBJ_IS_REP_SOURCE + + + + No documentation. + + + ERROR_DS_DRA_DB_ERROR + ERROR_DS_DRA_DB_ERROR + + + + No documentation. + + + ERROR_DS_DRA_NO_REPLICA + ERROR_DS_DRA_NO_REPLICA + + + + No documentation. + + + ERROR_DS_DRA_ACCESS_DENIED + ERROR_DS_DRA_ACCESS_DENIED + + + + No documentation. + + + ERROR_DS_DRA_NOT_SUPPORTED + ERROR_DS_DRA_NOT_SUPPORTED + + + + No documentation. + + + ERROR_DS_DRA_RPC_CANCELLED + ERROR_DS_DRA_RPC_CANCELLED + + + + No documentation. + + + ERROR_DS_DRA_SOURCE_DISABLED + ERROR_DS_DRA_SOURCE_DISABLED + + + + No documentation. + + + ERROR_DS_DRA_SINK_DISABLED + ERROR_DS_DRA_SINK_DISABLED + + + + No documentation. + + + ERROR_DS_DRA_NAME_COLLISION + ERROR_DS_DRA_NAME_COLLISION + + + + No documentation. + + + ERROR_DS_DRA_SOURCE_REINSTALLED + ERROR_DS_DRA_SOURCE_REINSTALLED + + + + No documentation. + + + ERROR_DS_DRA_MISSING_PARENT + ERROR_DS_DRA_MISSING_PARENT + + + + No documentation. + + + ERROR_DS_DRA_PREEMPTED + ERROR_DS_DRA_PREEMPTED + + + + No documentation. + + + ERROR_DS_DRA_ABANDON_SYNC + ERROR_DS_DRA_ABANDON_SYNC + + + + No documentation. + + + ERROR_DS_DRA_SHUTDOWN + ERROR_DS_DRA_SHUTDOWN + + + + No documentation. + + + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET + + + + No documentation. + + + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA + + + + No documentation. + + + ERROR_DS_DRA_EXTN_CONNECTION_FAILED + ERROR_DS_DRA_EXTN_CONNECTION_FAILED + + + + No documentation. + + + ERROR_DS_INSTALL_SCHEMA_MISMATCH + ERROR_DS_INSTALL_SCHEMA_MISMATCH + + + + No documentation. + + + ERROR_DS_DUP_LINK_ID + ERROR_DS_DUP_LINK_ID + + + + No documentation. + + + ERROR_DS_NAME_ERROR_RESOLVING + ERROR_DS_NAME_ERROR_RESOLVING + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NOT_FOUND + ERROR_DS_NAME_ERROR_NOT_FOUND + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NOT_UNIQUE + ERROR_DS_NAME_ERROR_NOT_UNIQUE + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NO_MAPPING + ERROR_DS_NAME_ERROR_NO_MAPPING + + + + No documentation. + + + ERROR_DS_NAME_ERROR_DOMAIN_ONLY + ERROR_DS_NAME_ERROR_DOMAIN_ONLY + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING + + + + No documentation. + + + ERROR_DS_CONSTRUCTED_ATT_MOD + ERROR_DS_CONSTRUCTED_ATT_MOD + + + + No documentation. + + + ERROR_DS_WRONG_OM_OBJ_CLASS + ERROR_DS_WRONG_OM_OBJ_CLASS + + + + No documentation. + + + ERROR_DS_DRA_REPL_PENDING + ERROR_DS_DRA_REPL_PENDING + + + + No documentation. + + + ERROR_DS_DS_REQUIRED + ERROR_DS_DS_REQUIRED + + + + No documentation. + + + ERROR_DS_INVALID_LDAP_DISPLAY_NAME + ERROR_DS_INVALID_LDAP_DISPLAY_NAME + + + + No documentation. + + + ERROR_DS_NON_BASE_SEARCH + ERROR_DS_NON_BASE_SEARCH + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_ATTS + ERROR_DS_CANT_RETRIEVE_ATTS + + + + No documentation. + + + ERROR_DS_BACKLINK_WITHOUT_LINK + ERROR_DS_BACKLINK_WITHOUT_LINK + + + + No documentation. + + + ERROR_DS_EPOCH_MISMATCH + ERROR_DS_EPOCH_MISMATCH + + + + No documentation. + + + ERROR_DS_SRC_NAME_MISMATCH + ERROR_DS_SRC_NAME_MISMATCH + + + + No documentation. + + + ERROR_DS_SRC_AND_DST_NC_IDENTICAL + ERROR_DS_SRC_AND_DST_NC_IDENTICAL + + + + No documentation. + + + ERROR_DS_DST_NC_MISMATCH + ERROR_DS_DST_NC_MISMATCH + + + + No documentation. + + + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC + + + + No documentation. + + + ERROR_DS_SRC_GUID_MISMATCH + ERROR_DS_SRC_GUID_MISMATCH + + + + No documentation. + + + ERROR_DS_CANT_MOVE_DELETED_OBJECT + ERROR_DS_CANT_MOVE_DELETED_OBJECT + + + + No documentation. + + + ERROR_DS_PDC_OPERATION_IN_PROGRESS + ERROR_DS_PDC_OPERATION_IN_PROGRESS + + + + No documentation. + + + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD + + + + No documentation. + + + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION + + + + No documentation. + + + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS + + + + No documentation. + + + ERROR_DS_NC_MUST_HAVE_NC_PARENT + ERROR_DS_NC_MUST_HAVE_NC_PARENT + + + + No documentation. + + + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE + + + + No documentation. + + + ERROR_DS_DST_DOMAIN_NOT_NATIVE + ERROR_DS_DST_DOMAIN_NOT_NATIVE + + + + No documentation. + + + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER + + + + No documentation. + + + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP + + + + No documentation. + + + ERROR_DS_CANT_MOVE_RESOURCE_GROUP + ERROR_DS_CANT_MOVE_RESOURCE_GROUP + + + + No documentation. + + + ERROR_DS_INVALID_SEARCH_FLAG + ERROR_DS_INVALID_SEARCH_FLAG + + + + No documentation. + + + ERROR_DS_NO_TREE_DELETE_ABOVE_NC + ERROR_DS_NO_TREE_DELETE_ABOVE_NC + + + + No documentation. + + + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE + + + + No documentation. + + + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE + + + + No documentation. + + + ERROR_DS_SAM_INIT_FAILURE + ERROR_DS_SAM_INIT_FAILURE + + + + No documentation. + + + ERROR_DS_SENSITIVE_GROUP_VIOLATION + ERROR_DS_SENSITIVE_GROUP_VIOLATION + + + + No documentation. + + + ERROR_DS_CANT_MOD_PRIMARYGROUPID + ERROR_DS_CANT_MOD_PRIMARYGROUPID + + + + No documentation. + + + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD + + + + No documentation. + + + ERROR_DS_NONSAFE_SCHEMA_CHANGE + ERROR_DS_NONSAFE_SCHEMA_CHANGE + + + + No documentation. + + + ERROR_DS_SCHEMA_UPDATE_DISALLOWED + ERROR_DS_SCHEMA_UPDATE_DISALLOWED + + + + No documentation. + + + ERROR_DS_CANT_CREATE_UNDER_SCHEMA + ERROR_DS_CANT_CREATE_UNDER_SCHEMA + + + + No documentation. + + + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION + + + + No documentation. + + + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE + + + + No documentation. + + + ERROR_DS_INVALID_GROUP_TYPE + ERROR_DS_INVALID_GROUP_TYPE + + + + No documentation. + + + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN + + + + No documentation. + + + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN + + + + No documentation. + + + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER + + + + No documentation. + + + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER + + + + No documentation. + + + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER + + + + No documentation. + + + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER + + + + No documentation. + + + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER + + + + No documentation. + + + ERROR_DS_HAVE_PRIMARY_MEMBERS + ERROR_DS_HAVE_PRIMARY_MEMBERS + + + + No documentation. + + + ERROR_DS_STRING_SD_CONVERSION_FAILED + ERROR_DS_STRING_SD_CONVERSION_FAILED + + + + No documentation. + + + ERROR_DS_NAMING_MASTER_GC + ERROR_DS_NAMING_MASTER_GC + + + + No documentation. + + + ERROR_DS_DNS_LOOKUP_FAILURE + ERROR_DS_DNS_LOOKUP_FAILURE + + + + No documentation. + + + ERROR_DS_COULDNT_UPDATE_SPNS + ERROR_DS_COULDNT_UPDATE_SPNS + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_SD + ERROR_DS_CANT_RETRIEVE_SD + + + + No documentation. + + + ERROR_DS_KEY_NOT_UNIQUE + ERROR_DS_KEY_NOT_UNIQUE + + + + No documentation. + + + ERROR_DS_WRONG_LINKED_ATT_SYNTAX + ERROR_DS_WRONG_LINKED_ATT_SYNTAX + + + + No documentation. + + + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD + + + + No documentation. + + + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY + + + + No documentation. + + + ERROR_DS_CANT_START + ERROR_DS_CANT_START + + + + No documentation. + + + ERROR_DS_INIT_FAILURE + ERROR_DS_INIT_FAILURE + + + + No documentation. + + + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION + + + + No documentation. + + + ERROR_DS_SOURCE_DOMAIN_IN_FOREST + ERROR_DS_SOURCE_DOMAIN_IN_FOREST + + + + No documentation. + + + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST + + + + No documentation. + + + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED + + + + No documentation. + + + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN + + + + No documentation. + + + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER + + + + No documentation. + + + ERROR_DS_SRC_SID_EXISTS_IN_FOREST + ERROR_DS_SRC_SID_EXISTS_IN_FOREST + + + + No documentation. + + + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH + + + + No documentation. + + + ERROR_SAM_INIT_FAILURE + ERROR_SAM_INIT_FAILURE + + + + No documentation. + + + ERROR_DS_DRA_SCHEMA_INFO_SHIP + ERROR_DS_DRA_SCHEMA_INFO_SHIP + + + + No documentation. + + + ERROR_DS_DRA_SCHEMA_CONFLICT + ERROR_DS_DRA_SCHEMA_CONFLICT + + + + No documentation. + + + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT + + + + No documentation. + + + ERROR_DS_DRA_OBJ_NC_MISMATCH + ERROR_DS_DRA_OBJ_NC_MISMATCH + + + + No documentation. + + + ERROR_DS_NC_STILL_HAS_DSAS + ERROR_DS_NC_STILL_HAS_DSAS + + + + No documentation. + + + ERROR_DS_GC_REQUIRED + ERROR_DS_GC_REQUIRED + + + + No documentation. + + + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY + + + + No documentation. + + + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS + + + + No documentation. + + + ERROR_DS_CANT_ADD_TO_GC + ERROR_DS_CANT_ADD_TO_GC + + + + No documentation. + + + ERROR_DS_NO_CHECKPOINT_WITH_PDC + ERROR_DS_NO_CHECKPOINT_WITH_PDC + + + + No documentation. + + + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED + + + + No documentation. + + + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC + + + + No documentation. + + + ERROR_DS_INVALID_NAME_FOR_SPN + ERROR_DS_INVALID_NAME_FOR_SPN + + + + No documentation. + + + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS + + + + No documentation. + + + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES + + + + No documentation. + + + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_DS_MUST_BE_RUN_ON_DST_DC + ERROR_DS_MUST_BE_RUN_ON_DST_DC + + + + No documentation. + + + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER + + + + No documentation. + + + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ + + + + No documentation. + + + ERROR_DS_INIT_FAILURE_CONSOLE + ERROR_DS_INIT_FAILURE_CONSOLE + + + + No documentation. + + + ERROR_DS_SAM_INIT_FAILURE_CONSOLE + ERROR_DS_SAM_INIT_FAILURE_CONSOLE + + + + No documentation. + + + ERROR_DS_FOREST_VERSION_TOO_HIGH + ERROR_DS_FOREST_VERSION_TOO_HIGH + + + + No documentation. + + + ERROR_DS_DOMAIN_VERSION_TOO_HIGH + ERROR_DS_DOMAIN_VERSION_TOO_HIGH + + + + No documentation. + + + ERROR_DS_FOREST_VERSION_TOO_LOW + ERROR_DS_FOREST_VERSION_TOO_LOW + + + + No documentation. + + + ERROR_DS_DOMAIN_VERSION_TOO_LOW + ERROR_DS_DOMAIN_VERSION_TOO_LOW + + + + No documentation. + + + ERROR_DS_INCOMPATIBLE_VERSION + ERROR_DS_INCOMPATIBLE_VERSION + + + + No documentation. + + + ERROR_DS_LOW_DSA_VERSION + ERROR_DS_LOW_DSA_VERSION + + + + No documentation. + + + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN + + + + No documentation. + + + ERROR_DS_NOT_SUPPORTED_SORT_ORDER + ERROR_DS_NOT_SUPPORTED_SORT_ORDER + + + + No documentation. + + + ERROR_DS_NAME_NOT_UNIQUE + ERROR_DS_NAME_NOT_UNIQUE + + + + No documentation. + + + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 + + + + No documentation. + + + ERROR_DS_OUT_OF_VERSION_STORE + ERROR_DS_OUT_OF_VERSION_STORE + + + + No documentation. + + + ERROR_DS_INCOMPATIBLE_CONTROLS_USED + ERROR_DS_INCOMPATIBLE_CONTROLS_USED + + + + No documentation. + + + ERROR_DS_NO_REF_DOMAIN + ERROR_DS_NO_REF_DOMAIN + + + + No documentation. + + + ERROR_DS_RESERVED_LINK_ID + ERROR_DS_RESERVED_LINK_ID + + + + No documentation. + + + ERROR_DS_LINK_ID_NOT_AVAILABLE + ERROR_DS_LINK_ID_NOT_AVAILABLE + + + + No documentation. + + + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER + + + + No documentation. + + + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE + + + + No documentation. + + + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC + + + + No documentation. + + + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG + + + + No documentation. + + + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT + + + + No documentation. + + + ERROR_DS_NAME_ERROR_TRUST_REFERRAL + ERROR_DS_NAME_ERROR_TRUST_REFERRAL + + + + No documentation. + + + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER + + + + No documentation. + + + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD + + + + No documentation. + + + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 + + + + No documentation. + + + ERROR_DS_THREAD_LIMIT_EXCEEDED + ERROR_DS_THREAD_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_NOT_CLOSEST + ERROR_DS_NOT_CLOSEST + + + + No documentation. + + + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF + + + + No documentation. + + + ERROR_DS_SINGLE_USER_MODE_FAILED + ERROR_DS_SINGLE_USER_MODE_FAILED + + + + No documentation. + + + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR + + + + No documentation. + + + ERROR_DS_NTDSCRIPT_PROCESS_ERROR + ERROR_DS_NTDSCRIPT_PROCESS_ERROR + + + + No documentation. + + + ERROR_DS_DIFFERENT_REPL_EPOCHS + ERROR_DS_DIFFERENT_REPL_EPOCHS + + + + No documentation. + + + ERROR_DS_DRS_EXTENSIONS_CHANGED + ERROR_DS_DRS_EXTENSIONS_CHANGED + + + + No documentation. + + + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR + + + + No documentation. + + + ERROR_DS_NO_MSDS_INTID + ERROR_DS_NO_MSDS_INTID + + + + No documentation. + + + ERROR_DS_DUP_MSDS_INTID + ERROR_DS_DUP_MSDS_INTID + + + + No documentation. + + + ERROR_DS_EXISTS_IN_RDNATTID + ERROR_DS_EXISTS_IN_RDNATTID + + + + No documentation. + + + ERROR_DS_AUTHORIZATION_FAILED + ERROR_DS_AUTHORIZATION_FAILED + + + + No documentation. + + + ERROR_DS_INVALID_SCRIPT + ERROR_DS_INVALID_SCRIPT + + + + No documentation. + + + ERROR_DS_REMOTE_CROSSREF_OP_FAILED + ERROR_DS_REMOTE_CROSSREF_OP_FAILED + + + + No documentation. + + + ERROR_DS_CROSS_REF_BUSY + ERROR_DS_CROSS_REF_BUSY + + + + No documentation. + + + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN + + + + No documentation. + + + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC + + + + No documentation. + + + ERROR_DS_DUPLICATE_ID_FOUND + ERROR_DS_DUPLICATE_ID_FOUND + + + + No documentation. + + + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT + + + + No documentation. + + + ERROR_DS_GROUP_CONVERSION_ERROR + ERROR_DS_GROUP_CONVERSION_ERROR + + + + No documentation. + + + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP + + + + No documentation. + + + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP + + + + No documentation. + + + ERROR_DS_ROLE_NOT_VERIFIED + ERROR_DS_ROLE_NOT_VERIFIED + + + + No documentation. + + + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL + + + + No documentation. + + + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS + + + + No documentation. + + + ERROR_DS_EXISTING_AD_CHILD_NC + ERROR_DS_EXISTING_AD_CHILD_NC + + + + No documentation. + + + ERROR_DS_REPL_LIFETIME_EXCEEDED + ERROR_DS_REPL_LIFETIME_EXCEEDED + + + + No documentation. + + + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER + + + + No documentation. + + + ERROR_DS_LDAP_SEND_QUEUE_FULL + ERROR_DS_LDAP_SEND_QUEUE_FULL + + + + No documentation. + + + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW + + + + No documentation. + + + ERROR_DS_POLICY_NOT_KNOWN + ERROR_DS_POLICY_NOT_KNOWN + + + + No documentation. + + + ERROR_NO_SITE_SETTINGS_OBJECT + ERROR_NO_SITE_SETTINGS_OBJECT + + + + No documentation. + + + ERROR_NO_SECRETS + ERROR_NO_SECRETS + + + + No documentation. + + + ERROR_NO_WRITABLE_DC_FOUND + ERROR_NO_WRITABLE_DC_FOUND + + + + No documentation. + + + ERROR_DS_NO_SERVER_OBJECT + ERROR_DS_NO_SERVER_OBJECT + + + + No documentation. + + + ERROR_DS_NO_NTDSA_OBJECT + ERROR_DS_NO_NTDSA_OBJECT + + + + No documentation. + + + ERROR_DS_NON_ASQ_SEARCH + ERROR_DS_NON_ASQ_SEARCH + + + + No documentation. + + + ERROR_DS_AUDIT_FAILURE + ERROR_DS_AUDIT_FAILURE + + + + No documentation. + + + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE + + + + No documentation. + + + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE + + + + No documentation. + + + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP + + + + No documentation. + + + ERROR_DS_DRA_CORRUPT_UTD_VECTOR + ERROR_DS_DRA_CORRUPT_UTD_VECTOR + + + + No documentation. + + + ERROR_DS_DRA_SECRETS_DENIED + ERROR_DS_DRA_SECRETS_DENIED + + + + No documentation. + + + ERROR_DS_RESERVED_MAPI_ID + ERROR_DS_RESERVED_MAPI_ID + + + + No documentation. + + + ERROR_DS_MAPI_ID_NOT_AVAILABLE + ERROR_DS_MAPI_ID_NOT_AVAILABLE + + + + No documentation. + + + ERROR_DS_DRA_MISSING_KRBTGT_SECRET + ERROR_DS_DRA_MISSING_KRBTGT_SECRET + + + + No documentation. + + + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST + + + + No documentation. + + + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST + + + + No documentation. + + + ERROR_INVALID_USER_PRINCIPAL_NAME + ERROR_INVALID_USER_PRINCIPAL_NAME + + + + No documentation. + + + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS + + + + No documentation. + + + ERROR_DS_OID_NOT_FOUND + ERROR_DS_OID_NOT_FOUND + + + + No documentation. + + + ERROR_DS_DRA_RECYCLED_TARGET + ERROR_DS_DRA_RECYCLED_TARGET + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_EXISTS + ERROR_IPSEC_QM_POLICY_EXISTS + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_NOT_FOUND + ERROR_IPSEC_QM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_IN_USE + ERROR_IPSEC_QM_POLICY_IN_USE + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_EXISTS + ERROR_IPSEC_MM_POLICY_EXISTS + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_NOT_FOUND + ERROR_IPSEC_MM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_IN_USE + ERROR_IPSEC_MM_POLICY_IN_USE + + + + No documentation. + + + ERROR_IPSEC_MM_FILTER_EXISTS + ERROR_IPSEC_MM_FILTER_EXISTS + + + + No documentation. + + + ERROR_IPSEC_MM_FILTER_NOT_FOUND + ERROR_IPSEC_MM_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS + + + + No documentation. + + + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_EXISTS + ERROR_IPSEC_MM_AUTH_EXISTS + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_NOT_FOUND + ERROR_IPSEC_MM_AUTH_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_IN_USE + ERROR_IPSEC_MM_AUTH_IN_USE + + + + No documentation. + + + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_TUNNEL_FILTER_EXISTS + ERROR_IPSEC_TUNNEL_FILTER_EXISTS + + + + No documentation. + + + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_FILTER_PENDING_DELETION + ERROR_IPSEC_MM_FILTER_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_PENDING_DELETION + ERROR_IPSEC_MM_POLICY_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_PENDING_DELETION + ERROR_IPSEC_MM_AUTH_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_PENDING_DELETION + ERROR_IPSEC_QM_POLICY_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN + + + + No documentation. + + + ERROR_IPSEC_IKE_AUTH_FAIL + ERROR_IPSEC_IKE_AUTH_FAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_ATTRIB_FAIL + ERROR_IPSEC_IKE_ATTRIB_FAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_NEGOTIATION_PENDING + ERROR_IPSEC_IKE_NEGOTIATION_PENDING + + + + No documentation. + + + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR + + + + No documentation. + + + ERROR_IPSEC_IKE_TIMED_OUT + ERROR_IPSEC_IKE_TIMED_OUT + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_CERT + ERROR_IPSEC_IKE_NO_CERT + + + + No documentation. + + + ERROR_IPSEC_IKE_SA_DELETED + ERROR_IPSEC_IKE_SA_DELETED + + + + No documentation. + + + ERROR_IPSEC_IKE_SA_REAPED + ERROR_IPSEC_IKE_SA_REAPED + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_QUEUE_DROP_MM + ERROR_IPSEC_IKE_QUEUE_DROP_MM + + + + No documentation. + + + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM + + + + No documentation. + + + ERROR_IPSEC_IKE_DROP_NO_RESPONSE + ERROR_IPSEC_IKE_DROP_NO_RESPONSE + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_DELAY_DROP + ERROR_IPSEC_IKE_MM_DELAY_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_DELAY_DROP + ERROR_IPSEC_IKE_QM_DELAY_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_ERROR + ERROR_IPSEC_IKE_ERROR + + + + No documentation. + + + ERROR_IPSEC_IKE_CRL_FAILED + ERROR_IPSEC_IKE_CRL_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_KEY_USAGE + ERROR_IPSEC_IKE_INVALID_KEY_USAGE + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_CERT_TYPE + ERROR_IPSEC_IKE_INVALID_CERT_TYPE + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_PRIVATE_KEY + ERROR_IPSEC_IKE_NO_PRIVATE_KEY + + + + No documentation. + + + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY + + + + No documentation. + + + ERROR_IPSEC_IKE_DH_FAIL + ERROR_IPSEC_IKE_DH_FAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HEADER + ERROR_IPSEC_IKE_INVALID_HEADER + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_POLICY + ERROR_IPSEC_IKE_NO_POLICY + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_SIGNATURE + ERROR_IPSEC_IKE_INVALID_SIGNATURE + + + + No documentation. + + + ERROR_IPSEC_IKE_KERBEROS_ERROR + ERROR_IPSEC_IKE_KERBEROS_ERROR + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_PUBLIC_KEY + ERROR_IPSEC_IKE_NO_PUBLIC_KEY + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR + ERROR_IPSEC_IKE_PROCESS_ERR + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_SA + ERROR_IPSEC_IKE_PROCESS_ERR_SA + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_PROP + ERROR_IPSEC_IKE_PROCESS_ERR_PROP + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_KE + ERROR_IPSEC_IKE_PROCESS_ERR_KE + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_ID + ERROR_IPSEC_IKE_PROCESS_ERR_ID + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_CERT + ERROR_IPSEC_IKE_PROCESS_ERR_CERT + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_HASH + ERROR_IPSEC_IKE_PROCESS_ERR_HASH + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_SIG + ERROR_IPSEC_IKE_PROCESS_ERR_SIG + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_PAYLOAD + ERROR_IPSEC_IKE_INVALID_PAYLOAD + + + + No documentation. + + + ERROR_IPSEC_IKE_LOAD_SOFT_SA + ERROR_IPSEC_IKE_LOAD_SOFT_SA + + + + No documentation. + + + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_COOKIE + ERROR_IPSEC_IKE_INVALID_COOKIE + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_PEER_CERT + ERROR_IPSEC_IKE_NO_PEER_CERT + + + + No documentation. + + + ERROR_IPSEC_IKE_PEER_CRL_FAILED + ERROR_IPSEC_IKE_PEER_CRL_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_POLICY_CHANGE + ERROR_IPSEC_IKE_POLICY_CHANGE + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_MM_POLICY + ERROR_IPSEC_IKE_NO_MM_POLICY + + + + No documentation. + + + ERROR_IPSEC_IKE_NOTCBPRIV + ERROR_IPSEC_IKE_NOTCBPRIV + + + + No documentation. + + + ERROR_IPSEC_IKE_SECLOADFAIL + ERROR_IPSEC_IKE_SECLOADFAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_FAILSSPINIT + ERROR_IPSEC_IKE_FAILSSPINIT + + + + No documentation. + + + ERROR_IPSEC_IKE_FAILQUERYSSP + ERROR_IPSEC_IKE_FAILQUERYSSP + + + + No documentation. + + + ERROR_IPSEC_IKE_SRVACQFAIL + ERROR_IPSEC_IKE_SRVACQFAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_SRVQUERYCRED + ERROR_IPSEC_IKE_SRVQUERYCRED + + + + No documentation. + + + ERROR_IPSEC_IKE_GETSPIFAIL + ERROR_IPSEC_IKE_GETSPIFAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_FILTER + ERROR_IPSEC_IKE_INVALID_FILTER + + + + No documentation. + + + ERROR_IPSEC_IKE_OUT_OF_MEMORY + ERROR_IPSEC_IKE_OUT_OF_MEMORY + + + + No documentation. + + + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_POLICY + ERROR_IPSEC_IKE_INVALID_POLICY + + + + No documentation. + + + ERROR_IPSEC_IKE_UNKNOWN_DOI + ERROR_IPSEC_IKE_UNKNOWN_DOI + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_SITUATION + ERROR_IPSEC_IKE_INVALID_SITUATION + + + + No documentation. + + + ERROR_IPSEC_IKE_DH_FAILURE + ERROR_IPSEC_IKE_DH_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_GROUP + ERROR_IPSEC_IKE_INVALID_GROUP + + + + No documentation. + + + ERROR_IPSEC_IKE_ENCRYPT + ERROR_IPSEC_IKE_ENCRYPT + + + + No documentation. + + + ERROR_IPSEC_IKE_DECRYPT + ERROR_IPSEC_IKE_DECRYPT + + + + No documentation. + + + ERROR_IPSEC_IKE_POLICY_MATCH + ERROR_IPSEC_IKE_POLICY_MATCH + + + + No documentation. + + + ERROR_IPSEC_IKE_UNSUPPORTED_ID + ERROR_IPSEC_IKE_UNSUPPORTED_ID + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HASH + ERROR_IPSEC_IKE_INVALID_HASH + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HASH_ALG + ERROR_IPSEC_IKE_INVALID_HASH_ALG + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HASH_SIZE + ERROR_IPSEC_IKE_INVALID_HASH_SIZE + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_AUTH_ALG + ERROR_IPSEC_IKE_INVALID_AUTH_ALG + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_SIG + ERROR_IPSEC_IKE_INVALID_SIG + + + + No documentation. + + + ERROR_IPSEC_IKE_LOAD_FAILED + ERROR_IPSEC_IKE_LOAD_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_RPC_DELETE + ERROR_IPSEC_IKE_RPC_DELETE + + + + No documentation. + + + ERROR_IPSEC_IKE_BENIGN_REINIT + ERROR_IPSEC_IKE_BENIGN_REINIT + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_LIMIT + ERROR_IPSEC_IKE_MM_LIMIT + + + + No documentation. + + + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_LIMIT + ERROR_IPSEC_IKE_QM_LIMIT + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_EXPIRED + ERROR_IPSEC_IKE_MM_EXPIRED + + + + No documentation. + + + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID + + + + No documentation. + + + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH + + + + No documentation. + + + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD + + + + No documentation. + + + ERROR_IPSEC_IKE_DOS_COOKIE_SENT + ERROR_IPSEC_IKE_DOS_COOKIE_SENT + + + + No documentation. + + + ERROR_IPSEC_IKE_SHUTTING_DOWN + ERROR_IPSEC_IKE_SHUTTING_DOWN + + + + No documentation. + + + ERROR_IPSEC_IKE_CGA_AUTH_FAILED + ERROR_IPSEC_IKE_CGA_AUTH_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_EXPIRED + ERROR_IPSEC_IKE_QM_EXPIRED + + + + No documentation. + + + ERROR_IPSEC_IKE_TOO_MANY_FILTERS + ERROR_IPSEC_IKE_TOO_MANY_FILTERS + + + + No documentation. + + + ERROR_IPSEC_IKE_NEG_STATUS_END + ERROR_IPSEC_IKE_NEG_STATUS_END + + + + No documentation. + + + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL + + + + No documentation. + + + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING + + + + No documentation. + + + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING + + + + No documentation. + + + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS + + + + No documentation. + + + ERROR_IPSEC_IKE_RATELIMIT_DROP + ERROR_IPSEC_IKE_RATELIMIT_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE + + + + No documentation. + + + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY + + + + No documentation. + + + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END + + + + No documentation. + + + ERROR_IPSEC_BAD_SPI + ERROR_IPSEC_BAD_SPI + + + + No documentation. + + + ERROR_IPSEC_SA_LIFETIME_EXPIRED + ERROR_IPSEC_SA_LIFETIME_EXPIRED + + + + No documentation. + + + ERROR_IPSEC_WRONG_SA + ERROR_IPSEC_WRONG_SA + + + + No documentation. + + + ERROR_IPSEC_REPLAY_CHECK_FAILED + ERROR_IPSEC_REPLAY_CHECK_FAILED + + + + No documentation. + + + ERROR_IPSEC_INVALID_PACKET + ERROR_IPSEC_INVALID_PACKET + + + + No documentation. + + + ERROR_IPSEC_INTEGRITY_CHECK_FAILED + ERROR_IPSEC_INTEGRITY_CHECK_FAILED + + + + No documentation. + + + ERROR_IPSEC_CLEAR_TEXT_DROP + ERROR_IPSEC_CLEAR_TEXT_DROP + + + + No documentation. + + + ERROR_IPSEC_AUTH_FIREWALL_DROP + ERROR_IPSEC_AUTH_FIREWALL_DROP + + + + No documentation. + + + ERROR_IPSEC_THROTTLE_DROP + ERROR_IPSEC_THROTTLE_DROP + + + + No documentation. + + + ERROR_IPSEC_DOSP_BLOCK + ERROR_IPSEC_DOSP_BLOCK + + + + No documentation. + + + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST + + + + No documentation. + + + ERROR_IPSEC_DOSP_INVALID_PACKET + ERROR_IPSEC_DOSP_INVALID_PACKET + + + + No documentation. + + + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED + + + + No documentation. + + + ERROR_IPSEC_DOSP_MAX_ENTRIES + ERROR_IPSEC_DOSP_MAX_ENTRIES + + + + No documentation. + + + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED + + + + No documentation. + + + ERROR_IPSEC_DOSP_NOT_INSTALLED + ERROR_IPSEC_DOSP_NOT_INSTALLED + + + + No documentation. + + + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES + + + + No documentation. + + + ERROR_SXS_SECTION_NOT_FOUND + ERROR_SXS_SECTION_NOT_FOUND + + + + No documentation. + + + ERROR_SXS_CANT_GEN_ACTCTX + ERROR_SXS_CANT_GEN_ACTCTX + + + + No documentation. + + + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_NOT_FOUND + ERROR_SXS_ASSEMBLY_NOT_FOUND + + + + No documentation. + + + ERROR_SXS_MANIFEST_FORMAT_ERROR + ERROR_SXS_MANIFEST_FORMAT_ERROR + + + + No documentation. + + + ERROR_SXS_MANIFEST_PARSE_ERROR + ERROR_SXS_MANIFEST_PARSE_ERROR + + + + No documentation. + + + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED + + + + No documentation. + + + ERROR_SXS_KEY_NOT_FOUND + ERROR_SXS_KEY_NOT_FOUND + + + + No documentation. + + + ERROR_SXS_VERSION_CONFLICT + ERROR_SXS_VERSION_CONFLICT + + + + No documentation. + + + ERROR_SXS_WRONG_SECTION_TYPE + ERROR_SXS_WRONG_SECTION_TYPE + + + + No documentation. + + + ERROR_SXS_THREAD_QUERIES_DISABLED + ERROR_SXS_THREAD_QUERIES_DISABLED + + + + No documentation. + + + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET + + + + No documentation. + + + ERROR_SXS_UNKNOWN_ENCODING_GROUP + ERROR_SXS_UNKNOWN_ENCODING_GROUP + + + + No documentation. + + + ERROR_SXS_UNKNOWN_ENCODING + ERROR_SXS_UNKNOWN_ENCODING + + + + No documentation. + + + ERROR_SXS_INVALID_XML_NAMESPACE_URI + ERROR_SXS_INVALID_XML_NAMESPACE_URI + + + + No documentation. + + + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED + + + + No documentation. + + + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED + + + + No documentation. + + + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE + + + + No documentation. + + + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE + + + + No documentation. + + + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE + + + + No documentation. + + + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT + + + + No documentation. + + + ERROR_SXS_DUPLICATE_DLL_NAME + ERROR_SXS_DUPLICATE_DLL_NAME + + + + No documentation. + + + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME + + + + No documentation. + + + ERROR_SXS_DUPLICATE_CLSID + ERROR_SXS_DUPLICATE_CLSID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_IID + ERROR_SXS_DUPLICATE_IID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_TLBID + ERROR_SXS_DUPLICATE_TLBID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_PROGID + ERROR_SXS_DUPLICATE_PROGID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME + + + + No documentation. + + + ERROR_SXS_FILE_HASH_MISMATCH + ERROR_SXS_FILE_HASH_MISMATCH + + + + No documentation. + + + ERROR_SXS_POLICY_PARSE_ERROR + ERROR_SXS_POLICY_PARSE_ERROR + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGQUOTE + ERROR_SXS_XML_E_MISSINGQUOTE + + + + No documentation. + + + ERROR_SXS_XML_E_COMMENTSYNTAX + ERROR_SXS_XML_E_COMMENTSYNTAX + + + + No documentation. + + + ERROR_SXS_XML_E_BADSTARTNAMECHAR + ERROR_SXS_XML_E_BADSTARTNAMECHAR + + + + No documentation. + + + ERROR_SXS_XML_E_BADNAMECHAR + ERROR_SXS_XML_E_BADNAMECHAR + + + + No documentation. + + + ERROR_SXS_XML_E_BADCHARINSTRING + ERROR_SXS_XML_E_BADCHARINSTRING + + + + No documentation. + + + ERROR_SXS_XML_E_XMLDECLSYNTAX + ERROR_SXS_XML_E_XMLDECLSYNTAX + + + + No documentation. + + + ERROR_SXS_XML_E_BADCHARDATA + ERROR_SXS_XML_E_BADCHARDATA + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGWHITESPACE + ERROR_SXS_XML_E_MISSINGWHITESPACE + + + + No documentation. + + + ERROR_SXS_XML_E_EXPECTINGTAGEND + ERROR_SXS_XML_E_EXPECTINGTAGEND + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGSEMICOLON + ERROR_SXS_XML_E_MISSINGSEMICOLON + + + + No documentation. + + + ERROR_SXS_XML_E_UNBALANCEDPAREN + ERROR_SXS_XML_E_UNBALANCEDPAREN + + + + No documentation. + + + ERROR_SXS_XML_E_INTERNALERROR + ERROR_SXS_XML_E_INTERNALERROR + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE + + + + No documentation. + + + ERROR_SXS_XML_E_INCOMPLETE_ENCODING + ERROR_SXS_XML_E_INCOMPLETE_ENCODING + + + + No documentation. + + + ERROR_SXS_XML_E_MISSING_PAREN + ERROR_SXS_XML_E_MISSING_PAREN + + + + No documentation. + + + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE + + + + No documentation. + + + ERROR_SXS_XML_E_MULTIPLE_COLONS + ERROR_SXS_XML_E_MULTIPLE_COLONS + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_DECIMAL + ERROR_SXS_XML_E_INVALID_DECIMAL + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_UNICODE + ERROR_SXS_XML_E_INVALID_UNICODE + + + + No documentation. + + + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTEDENDTAG + ERROR_SXS_XML_E_UNEXPECTEDENDTAG + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDTAG + ERROR_SXS_XML_E_UNCLOSEDTAG + + + + No documentation. + + + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE + + + + No documentation. + + + ERROR_SXS_XML_E_MULTIPLEROOTS + ERROR_SXS_XML_E_MULTIPLEROOTS + + + + No documentation. + + + ERROR_SXS_XML_E_INVALIDATROOTLEVEL + ERROR_SXS_XML_E_INVALIDATROOTLEVEL + + + + No documentation. + + + ERROR_SXS_XML_E_BADXMLDECL + ERROR_SXS_XML_E_BADXMLDECL + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGROOT + ERROR_SXS_XML_E_MISSINGROOT + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTEDEOF + ERROR_SXS_XML_E_UNEXPECTEDEOF + + + + No documentation. + + + ERROR_SXS_XML_E_BADPEREFINSUBSET + ERROR_SXS_XML_E_BADPEREFINSUBSET + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDENDTAG + ERROR_SXS_XML_E_UNCLOSEDENDTAG + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDSTRING + ERROR_SXS_XML_E_UNCLOSEDSTRING + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDCOMMENT + ERROR_SXS_XML_E_UNCLOSEDCOMMENT + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDDECL + ERROR_SXS_XML_E_UNCLOSEDDECL + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDCDATA + ERROR_SXS_XML_E_UNCLOSEDCDATA + + + + No documentation. + + + ERROR_SXS_XML_E_RESERVEDNAMESPACE + ERROR_SXS_XML_E_RESERVEDNAMESPACE + + + + No documentation. + + + ERROR_SXS_XML_E_INVALIDENCODING + ERROR_SXS_XML_E_INVALIDENCODING + + + + No documentation. + + + ERROR_SXS_XML_E_INVALIDSWITCH + ERROR_SXS_XML_E_INVALIDSWITCH + + + + No documentation. + + + ERROR_SXS_XML_E_BADXMLCASE + ERROR_SXS_XML_E_BADXMLCASE + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_STANDALONE + ERROR_SXS_XML_E_INVALID_STANDALONE + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_VERSION + ERROR_SXS_XML_E_INVALID_VERSION + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGEQUALS + ERROR_SXS_XML_E_MISSINGEQUALS + + + + No documentation. + + + ERROR_SXS_PROTECTION_RECOVERY_FAILED + ERROR_SXS_PROTECTION_RECOVERY_FAILED + + + + No documentation. + + + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT + + + + No documentation. + + + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID + + + + No documentation. + + + ERROR_SXS_UNTRANSLATABLE_HRESULT + ERROR_SXS_UNTRANSLATABLE_HRESULT + + + + No documentation. + + + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING + + + + No documentation. + + + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE + + + + No documentation. + + + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_MISSING + ERROR_SXS_ASSEMBLY_MISSING + + + + No documentation. + + + ERROR_SXS_CORRUPT_ACTIVATION_STACK + ERROR_SXS_CORRUPT_ACTIVATION_STACK + + + + No documentation. + + + ERROR_SXS_CORRUPTION + ERROR_SXS_CORRUPTION + + + + No documentation. + + + ERROR_SXS_EARLY_DEACTIVATION + ERROR_SXS_EARLY_DEACTIVATION + + + + No documentation. + + + ERROR_SXS_INVALID_DEACTIVATION + ERROR_SXS_INVALID_DEACTIVATION + + + + No documentation. + + + ERROR_SXS_MULTIPLE_DEACTIVATION + ERROR_SXS_MULTIPLE_DEACTIVATION + + + + No documentation. + + + ERROR_SXS_PROCESS_TERMINATION_REQUESTED + ERROR_SXS_PROCESS_TERMINATION_REQUESTED + + + + No documentation. + + + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT + + + + No documentation. + + + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY + + + + No documentation. + + + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE + + + + No documentation. + + + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME + + + + No documentation. + + + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE + + + + No documentation. + + + ERROR_SXS_IDENTITY_PARSE_ERROR + ERROR_SXS_IDENTITY_PARSE_ERROR + + + + No documentation. + + + ERROR_MALFORMED_SUBSTITUTION_STRING + ERROR_MALFORMED_SUBSTITUTION_STRING + + + + No documentation. + + + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN + + + + No documentation. + + + ERROR_UNMAPPED_SUBSTITUTION_STRING + ERROR_UNMAPPED_SUBSTITUTION_STRING + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_NOT_LOCKED + ERROR_SXS_ASSEMBLY_NOT_LOCKED + + + + No documentation. + + + ERROR_SXS_COMPONENT_STORE_CORRUPT + ERROR_SXS_COMPONENT_STORE_CORRUPT + + + + No documentation. + + + ERROR_ADVANCED_INSTALLER_FAILED + ERROR_ADVANCED_INSTALLER_FAILED + + + + No documentation. + + + ERROR_XML_ENCODING_MISMATCH + ERROR_XML_ENCODING_MISMATCH + + + + No documentation. + + + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT + + + + No documentation. + + + ERROR_SXS_IDENTITIES_DIFFERENT + ERROR_SXS_IDENTITIES_DIFFERENT + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT + + + + No documentation. + + + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY + + + + No documentation. + + + ERROR_SXS_MANIFEST_TOO_BIG + ERROR_SXS_MANIFEST_TOO_BIG + + + + No documentation. + + + ERROR_SXS_SETTING_NOT_REGISTERED + ERROR_SXS_SETTING_NOT_REGISTERED + + + + No documentation. + + + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE + + + + No documentation. + + + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED + + + + No documentation. + + + ERROR_GENERIC_COMMAND_FAILED + ERROR_GENERIC_COMMAND_FAILED + + + + No documentation. + + + ERROR_SXS_FILE_HASH_MISSING + ERROR_SXS_FILE_HASH_MISSING + + + + No documentation. + + + ERROR_EVT_INVALID_CHANNEL_PATH + ERROR_EVT_INVALID_CHANNEL_PATH + + + + No documentation. + + + ERROR_EVT_INVALID_QUERY + ERROR_EVT_INVALID_QUERY + + + + No documentation. + + + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_INVALID_PUBLISHER_NAME + ERROR_EVT_INVALID_PUBLISHER_NAME + + + + No documentation. + + + ERROR_EVT_INVALID_EVENT_DATA + ERROR_EVT_INVALID_EVENT_DATA + + + + No documentation. + + + ERROR_EVT_CHANNEL_NOT_FOUND + ERROR_EVT_CHANNEL_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_MALFORMED_XML_TEXT + ERROR_EVT_MALFORMED_XML_TEXT + + + + No documentation. + + + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL + + + + No documentation. + + + ERROR_EVT_CONFIGURATION_ERROR + ERROR_EVT_CONFIGURATION_ERROR + + + + No documentation. + + + ERROR_EVT_QUERY_RESULT_STALE + ERROR_EVT_QUERY_RESULT_STALE + + + + No documentation. + + + ERROR_EVT_QUERY_RESULT_INVALID_POSITION + ERROR_EVT_QUERY_RESULT_INVALID_POSITION + + + + No documentation. + + + ERROR_EVT_NON_VALIDATING_MSXML + ERROR_EVT_NON_VALIDATING_MSXML + + + + No documentation. + + + ERROR_EVT_FILTER_ALREADYSCOPED + ERROR_EVT_FILTER_ALREADYSCOPED + + + + No documentation. + + + ERROR_EVT_FILTER_NOTELTSET + ERROR_EVT_FILTER_NOTELTSET + + + + No documentation. + + + ERROR_EVT_FILTER_INVARG + ERROR_EVT_FILTER_INVARG + + + + No documentation. + + + ERROR_EVT_FILTER_INVTEST + ERROR_EVT_FILTER_INVTEST + + + + No documentation. + + + ERROR_EVT_FILTER_INVTYPE + ERROR_EVT_FILTER_INVTYPE + + + + No documentation. + + + ERROR_EVT_FILTER_PARSEERR + ERROR_EVT_FILTER_PARSEERR + + + + No documentation. + + + ERROR_EVT_FILTER_UNSUPPORTEDOP + ERROR_EVT_FILTER_UNSUPPORTEDOP + + + + No documentation. + + + ERROR_EVT_FILTER_UNEXPECTEDTOKEN + ERROR_EVT_FILTER_UNEXPECTEDTOKEN + + + + No documentation. + + + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL + + + + No documentation. + + + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE + + + + No documentation. + + + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE + + + + No documentation. + + + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE + + + + No documentation. + + + ERROR_EVT_FILTER_TOO_COMPLEX + ERROR_EVT_FILTER_TOO_COMPLEX + + + + No documentation. + + + ERROR_EVT_MESSAGE_NOT_FOUND + ERROR_EVT_MESSAGE_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_MESSAGE_ID_NOT_FOUND + ERROR_EVT_MESSAGE_ID_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_UNRESOLVED_VALUE_INSERT + ERROR_EVT_UNRESOLVED_VALUE_INSERT + + + + No documentation. + + + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT + + + + No documentation. + + + ERROR_EVT_MAX_INSERTS_REACHED + ERROR_EVT_MAX_INSERTS_REACHED + + + + No documentation. + + + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_VERSION_TOO_OLD + ERROR_EVT_VERSION_TOO_OLD + + + + No documentation. + + + ERROR_EVT_VERSION_TOO_NEW + ERROR_EVT_VERSION_TOO_NEW + + + + No documentation. + + + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY + + + + No documentation. + + + ERROR_EVT_PUBLISHER_DISABLED + ERROR_EVT_PUBLISHER_DISABLED + + + + No documentation. + + + ERROR_EVT_FILTER_OUT_OF_RANGE + ERROR_EVT_FILTER_OUT_OF_RANGE + + + + No documentation. + + + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE + + + + No documentation. + + + ERROR_EC_LOG_DISABLED + ERROR_EC_LOG_DISABLED + + + + No documentation. + + + ERROR_EC_CIRCULAR_FORWARDING + ERROR_EC_CIRCULAR_FORWARDING + + + + No documentation. + + + ERROR_EC_CREDSTORE_FULL + ERROR_EC_CREDSTORE_FULL + + + + No documentation. + + + ERROR_EC_CRED_NOT_FOUND + ERROR_EC_CRED_NOT_FOUND + + + + No documentation. + + + ERROR_EC_NO_ACTIVE_CHANNEL + ERROR_EC_NO_ACTIVE_CHANNEL + + + + No documentation. + + + ERROR_MUI_FILE_NOT_FOUND + ERROR_MUI_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_MUI_INVALID_FILE + ERROR_MUI_INVALID_FILE + + + + No documentation. + + + ERROR_MUI_INVALID_RC_CONFIG + ERROR_MUI_INVALID_RC_CONFIG + + + + No documentation. + + + ERROR_MUI_INVALID_LOCALE_NAME + ERROR_MUI_INVALID_LOCALE_NAME + + + + No documentation. + + + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME + + + + No documentation. + + + ERROR_MUI_FILE_NOT_LOADED + ERROR_MUI_FILE_NOT_LOADED + + + + No documentation. + + + ERROR_RESOURCE_ENUM_USER_STOP + ERROR_RESOURCE_ENUM_USER_STOP + + + + No documentation. + + + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED + + + + No documentation. + + + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME + + + + No documentation. + + + ERROR_MCA_INVALID_CAPABILITIES_STRING + ERROR_MCA_INVALID_CAPABILITIES_STRING + + + + No documentation. + + + ERROR_MCA_INVALID_VCP_VERSION + ERROR_MCA_INVALID_VCP_VERSION + + + + No documentation. + + + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + + + + No documentation. + + + ERROR_MCA_MCCS_VERSION_MISMATCH + ERROR_MCA_MCCS_VERSION_MISMATCH + + + + No documentation. + + + ERROR_MCA_UNSUPPORTED_MCCS_VERSION + ERROR_MCA_UNSUPPORTED_MCCS_VERSION + + + + No documentation. + + + ERROR_MCA_INTERNAL_ERROR + ERROR_MCA_INTERNAL_ERROR + + + + No documentation. + + + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + + + + No documentation. + + + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE + + + + No documentation. + + + ERROR_AMBIGUOUS_SYSTEM_DEVICE + ERROR_AMBIGUOUS_SYSTEM_DEVICE + + + + No documentation. + + + ERROR_SYSTEM_DEVICE_NOT_FOUND + ERROR_SYSTEM_DEVICE_NOT_FOUND + + + + No documentation. + + + ERROR_HASH_NOT_SUPPORTED + ERROR_HASH_NOT_SUPPORTED + + + + No documentation. + + + ERROR_HASH_NOT_PRESENT + ERROR_HASH_NOT_PRESENT + + + + No documentation. + + + ERROR_AUDITING_DISABLED + ERROR_AUDITING_DISABLED + + + + No documentation. + + + ERROR_ALL_SIDS_FILTERED + ERROR_ALL_SIDS_FILTERED + + + + No documentation. + + + ERROR_BIZRULES_NOT_ENABLED + ERROR_BIZRULES_NOT_ENABLED + + + + No documentation. + + + ERROR_CRED_REQUIRES_CONFIRMATION + ERROR_CRED_REQUIRES_CONFIRMATION + + + + No documentation. + + + ERROR_FLT_IO_COMPLETE + ERROR_FLT_IO_COMPLETE + + + + No documentation. + + + ERROR_FLT_NO_HANDLER_DEFINED + ERROR_FLT_NO_HANDLER_DEFINED + + + + No documentation. + + + ERROR_FLT_CONTEXT_ALREADY_DEFINED + ERROR_FLT_CONTEXT_ALREADY_DEFINED + + + + No documentation. + + + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST + + + + No documentation. + + + ERROR_FLT_DISALLOW_FAST_IO + ERROR_FLT_DISALLOW_FAST_IO + + + + No documentation. + + + ERROR_FLT_INVALID_NAME_REQUEST + ERROR_FLT_INVALID_NAME_REQUEST + + + + No documentation. + + + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION + + + + No documentation. + + + ERROR_FLT_NOT_INITIALIZED + ERROR_FLT_NOT_INITIALIZED + + + + No documentation. + + + ERROR_FLT_FILTER_NOT_READY + ERROR_FLT_FILTER_NOT_READY + + + + No documentation. + + + ERROR_FLT_POST_OPERATION_CLEANUP + ERROR_FLT_POST_OPERATION_CLEANUP + + + + No documentation. + + + ERROR_FLT_INTERNAL_ERROR + ERROR_FLT_INTERNAL_ERROR + + + + No documentation. + + + ERROR_FLT_DELETING_OBJECT + ERROR_FLT_DELETING_OBJECT + + + + No documentation. + + + ERROR_FLT_MUST_BE_NONPAGED_POOL + ERROR_FLT_MUST_BE_NONPAGED_POOL + + + + No documentation. + + + ERROR_FLT_DUPLICATE_ENTRY + ERROR_FLT_DUPLICATE_ENTRY + + + + No documentation. + + + ERROR_FLT_CBDQ_DISABLED + ERROR_FLT_CBDQ_DISABLED + + + + No documentation. + + + ERROR_FLT_DO_NOT_ATTACH + ERROR_FLT_DO_NOT_ATTACH + + + + No documentation. + + + ERROR_FLT_DO_NOT_DETACH + ERROR_FLT_DO_NOT_DETACH + + + + No documentation. + + + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION + + + + No documentation. + + + ERROR_FLT_INSTANCE_NAME_COLLISION + ERROR_FLT_INSTANCE_NAME_COLLISION + + + + No documentation. + + + ERROR_FLT_FILTER_NOT_FOUND + ERROR_FLT_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_VOLUME_NOT_FOUND + ERROR_FLT_VOLUME_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_INSTANCE_NOT_FOUND + ERROR_FLT_INSTANCE_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_INVALID_CONTEXT_REGISTRATION + ERROR_FLT_INVALID_CONTEXT_REGISTRATION + + + + No documentation. + + + ERROR_FLT_NAME_CACHE_MISS + ERROR_FLT_NAME_CACHE_MISS + + + + No documentation. + + + ERROR_FLT_NO_DEVICE_OBJECT + ERROR_FLT_NO_DEVICE_OBJECT + + + + No documentation. + + + ERROR_FLT_VOLUME_ALREADY_MOUNTED + ERROR_FLT_VOLUME_ALREADY_MOUNTED + + + + No documentation. + + + ERROR_FLT_ALREADY_ENLISTED + ERROR_FLT_ALREADY_ENLISTED + + + + No documentation. + + + ERROR_FLT_CONTEXT_ALREADY_LINKED + ERROR_FLT_CONTEXT_ALREADY_LINKED + + + + No documentation. + + + ERROR_FLT_NO_WAITER_FOR_REPLY + ERROR_FLT_NO_WAITER_FOR_REPLY + + + + No documentation. + + + ERROR_HUNG_DISPLAY_DRIVER_THREAD + ERROR_HUNG_DISPLAY_DRIVER_THREAD + + + + No documentation. + + + ERROR_MONITOR_NO_DESCRIPTOR + ERROR_MONITOR_NO_DESCRIPTOR + + + + No documentation. + + + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT + + + + No documentation. + + + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM + + + + No documentation. + + + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK + + + + No documentation. + + + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED + + + + No documentation. + + + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK + + + + No documentation. + + + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK + + + + No documentation. + + + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA + + + + No documentation. + + + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK + + + + No documentation. + + + ERROR_MONITOR_INVALID_MANUFACTURE_DATE + ERROR_MONITOR_INVALID_MANUFACTURE_DATE + + + + No documentation. + + + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER + + + + No documentation. + + + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_WAS_RESET + ERROR_GRAPHICS_ADAPTER_WAS_RESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_DRIVER_MODEL + ERROR_GRAPHICS_INVALID_DRIVER_MODEL + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_MODE_CHANGED + ERROR_GRAPHICS_PRESENT_MODE_CHANGED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_OCCLUDED + ERROR_GRAPHICS_PRESENT_OCCLUDED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_DENIED + ERROR_GRAPHICS_PRESENT_DENIED + + + + No documentation. + + + ERROR_GRAPHICS_CANNOTCOLORCONVERT + ERROR_GRAPHICS_CANNOTCOLORCONVERT + + + + No documentation. + + + ERROR_GRAPHICS_DRIVER_MISMATCH + ERROR_GRAPHICS_DRIVER_MISMATCH + + + + No documentation. + + + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_UNOCCLUDED + ERROR_GRAPHICS_PRESENT_UNOCCLUDED + + + + No documentation. + + + ERROR_GRAPHICS_NO_VIDEO_MEMORY + ERROR_GRAPHICS_NO_VIDEO_MEMORY + + + + No documentation. + + + ERROR_GRAPHICS_CANT_LOCK_MEMORY + ERROR_GRAPHICS_CANT_LOCK_MEMORY + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_BUSY + ERROR_GRAPHICS_ALLOCATION_BUSY + + + + No documentation. + + + ERROR_GRAPHICS_TOO_MANY_REFERENCES + ERROR_GRAPHICS_TOO_MANY_REFERENCES + + + + No documentation. + + + ERROR_GRAPHICS_TRY_AGAIN_LATER + ERROR_GRAPHICS_TRY_AGAIN_LATER + + + + No documentation. + + + ERROR_GRAPHICS_TRY_AGAIN_NOW + ERROR_GRAPHICS_TRY_AGAIN_NOW + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_INVALID + ERROR_GRAPHICS_ALLOCATION_INVALID + + + + No documentation. + + + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE + + + + No documentation. + + + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE + + + + No documentation. + + + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_CLOSED + ERROR_GRAPHICS_ALLOCATION_CLOSED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE + + + + No documentation. + + + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST + + + + No documentation. + + + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN + ERROR_GRAPHICS_INVALID_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_MODE_NOT_PINNED + ERROR_GRAPHICS_MODE_NOT_PINNED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_FREQUENCY + ERROR_GRAPHICS_INVALID_FREQUENCY + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ACTIVE_REGION + ERROR_GRAPHICS_INVALID_ACTIVE_REGION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_TOTAL_REGION + ERROR_GRAPHICS_INVALID_TOTAL_REGION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE + + + + No documentation. + + + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET + + + + No documentation. + + + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH + + + + No documentation. + + + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE + + + + No documentation. + + + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_NO_PREFERRED_MODE + ERROR_GRAPHICS_NO_PREFERRED_MODE + + + + No documentation. + + + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_STALE_MODESET + ERROR_GRAPHICS_STALE_MODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE + + + + No documentation. + + + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION + + + + No documentation. + + + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES + + + + No documentation. + + + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR + + + + No documentation. + + + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_RESOURCES_NOT_RELATED + ERROR_GRAPHICS_RESOURCES_NOT_RELATED + + + + No documentation. + + + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET + + + + No documentation. + + + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER + + + + No documentation. + + + ERROR_GRAPHICS_NO_VIDPNMGR + ERROR_GRAPHICS_NO_VIDPNMGR + + + + No documentation. + + + ERROR_GRAPHICS_NO_ACTIVE_VIDPN + ERROR_GRAPHICS_NO_ACTIVE_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED + + + + No documentation. + + + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_STRIDE + ERROR_GRAPHICS_INVALID_STRIDE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PIXELFORMAT + ERROR_GRAPHICS_INVALID_PIXELFORMAT + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_COLORBASIS + ERROR_GRAPHICS_INVALID_COLORBASIS + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE + + + + No documentation. + + + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE + + + + No documentation. + + + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION + + + + No documentation. + + + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_GAMMA_RAMP + ERROR_GRAPHICS_INVALID_GAMMA_RAMP + + + + No documentation. + + + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_MODE_NOT_IN_MODESET + ERROR_GRAPHICS_MODE_NOT_IN_MODESET + + + + No documentation. + + + ERROR_GRAPHICS_DATASET_IS_EMPTY + ERROR_GRAPHICS_DATASET_IS_EMPTY + + + + No documentation. + + + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS + + + + No documentation. + + + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING + + + + No documentation. + + + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED + + + + No documentation. + + + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS + + + + No documentation. + + + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT + + + + No documentation. + + + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED + + + + No documentation. + + + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_CLIENT_TYPE + ERROR_GRAPHICS_INVALID_CLIENT_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET + + + + No documentation. + + + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED + + + + No documentation. + + + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS + + + + No documentation. + + + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER + + + + No documentation. + + + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED + + + + No documentation. + + + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY + + + + No documentation. + + + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED + + + + No documentation. + + + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON + + + + No documentation. + + + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE + + + + No documentation. + + + ERROR_GRAPHICS_LEADLINK_START_DEFERRED + ERROR_GRAPHICS_LEADLINK_START_DEFERRED + + + + No documentation. + + + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER + + + + No documentation. + + + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY + + + + No documentation. + + + ERROR_GRAPHICS_START_DEFERRED + ERROR_GRAPHICS_START_DEFERRED + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_NOT_SUPPORTED + ERROR_GRAPHICS_OPM_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_COPP_NOT_SUPPORTED + ERROR_GRAPHICS_COPP_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_UAB_NOT_SUPPORTED + ERROR_GRAPHICS_UAB_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INTERNAL_ERROR + ERROR_GRAPHICS_OPM_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_HANDLE + ERROR_GRAPHICS_OPM_INVALID_HANDLE + + + + No documentation. + + + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH + + + + No documentation. + + + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED + + + + No documentation. + + + ERROR_GRAPHICS_PVP_HFS_FAILED + ERROR_GRAPHICS_PVP_HFS_FAILED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_SRM + ERROR_GRAPHICS_OPM_INVALID_SRM + + + + No documentation. + + + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP + + + + No documentation. + + + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP + + + + No documentation. + + + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA + + + + No documentation. + + + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET + + + + No documentation. + + + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH + + + + No documentation. + + + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE + + + + No documentation. + + + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST + + + + No documentation. + + + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST + + + + No documentation. + + + ERROR_GRAPHICS_I2C_NOT_SUPPORTED + ERROR_GRAPHICS_I2C_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA + + + + No documentation. + + + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_DATA + ERROR_GRAPHICS_DDCCI_INVALID_DATA + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INTERNAL_ERROR + ERROR_GRAPHICS_MCA_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE + + + + No documentation. + + + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION + + + + No documentation. + + + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + + + + No documentation. + + + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH + + + + No documentation. + + + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + + + + No documentation. + + + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE + + + + No documentation. + + + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME + + + + No documentation. + + + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP + + + + No documentation. + + + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_POINTER + ERROR_GRAPHICS_INVALID_POINTER + + + + No documentation. + + + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE + + + + No documentation. + + + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL + + + + No documentation. + + + ERROR_GRAPHICS_INTERNAL_ERROR + ERROR_GRAPHICS_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS + + + + No documentation. + + + ERROR_NDIS_INTERFACE_CLOSING + ERROR_NDIS_INTERFACE_CLOSING + + + + No documentation. + + + ERROR_NDIS_BAD_VERSION + ERROR_NDIS_BAD_VERSION + + + + No documentation. + + + ERROR_NDIS_BAD_CHARACTERISTICS + ERROR_NDIS_BAD_CHARACTERISTICS + + + + No documentation. + + + ERROR_NDIS_ADAPTER_NOT_FOUND + ERROR_NDIS_ADAPTER_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_OPEN_FAILED + ERROR_NDIS_OPEN_FAILED + + + + No documentation. + + + ERROR_NDIS_DEVICE_FAILED + ERROR_NDIS_DEVICE_FAILED + + + + No documentation. + + + ERROR_NDIS_MULTICAST_FULL + ERROR_NDIS_MULTICAST_FULL + + + + No documentation. + + + ERROR_NDIS_MULTICAST_EXISTS + ERROR_NDIS_MULTICAST_EXISTS + + + + No documentation. + + + ERROR_NDIS_MULTICAST_NOT_FOUND + ERROR_NDIS_MULTICAST_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_REQUEST_ABORTED + ERROR_NDIS_REQUEST_ABORTED + + + + No documentation. + + + ERROR_NDIS_RESET_IN_PROGRESS + ERROR_NDIS_RESET_IN_PROGRESS + + + + No documentation. + + + ERROR_NDIS_NOT_SUPPORTED + ERROR_NDIS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_NDIS_INVALID_PACKET + ERROR_NDIS_INVALID_PACKET + + + + No documentation. + + + ERROR_NDIS_ADAPTER_NOT_READY + ERROR_NDIS_ADAPTER_NOT_READY + + + + No documentation. + + + ERROR_NDIS_INVALID_LENGTH + ERROR_NDIS_INVALID_LENGTH + + + + No documentation. + + + ERROR_NDIS_INVALID_DATA + ERROR_NDIS_INVALID_DATA + + + + No documentation. + + + ERROR_NDIS_BUFFER_TOO_SHORT + ERROR_NDIS_BUFFER_TOO_SHORT + + + + No documentation. + + + ERROR_NDIS_INVALID_OID + ERROR_NDIS_INVALID_OID + + + + No documentation. + + + ERROR_NDIS_ADAPTER_REMOVED + ERROR_NDIS_ADAPTER_REMOVED + + + + No documentation. + + + ERROR_NDIS_UNSUPPORTED_MEDIA + ERROR_NDIS_UNSUPPORTED_MEDIA + + + + No documentation. + + + ERROR_NDIS_GROUP_ADDRESS_IN_USE + ERROR_NDIS_GROUP_ADDRESS_IN_USE + + + + No documentation. + + + ERROR_NDIS_FILE_NOT_FOUND + ERROR_NDIS_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_ERROR_READING_FILE + ERROR_NDIS_ERROR_READING_FILE + + + + No documentation. + + + ERROR_NDIS_ALREADY_MAPPED + ERROR_NDIS_ALREADY_MAPPED + + + + No documentation. + + + ERROR_NDIS_RESOURCE_CONFLICT + ERROR_NDIS_RESOURCE_CONFLICT + + + + No documentation. + + + ERROR_NDIS_MEDIA_DISCONNECTED + ERROR_NDIS_MEDIA_DISCONNECTED + + + + No documentation. + + + ERROR_NDIS_INVALID_ADDRESS + ERROR_NDIS_INVALID_ADDRESS + + + + No documentation. + + + ERROR_NDIS_INVALID_DEVICE_REQUEST + ERROR_NDIS_INVALID_DEVICE_REQUEST + + + + No documentation. + + + ERROR_NDIS_PAUSED + ERROR_NDIS_PAUSED + + + + No documentation. + + + ERROR_NDIS_INTERFACE_NOT_FOUND + ERROR_NDIS_INTERFACE_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_UNSUPPORTED_REVISION + ERROR_NDIS_UNSUPPORTED_REVISION + + + + No documentation. + + + ERROR_NDIS_INVALID_PORT + ERROR_NDIS_INVALID_PORT + + + + No documentation. + + + ERROR_NDIS_INVALID_PORT_STATE + ERROR_NDIS_INVALID_PORT_STATE + + + + No documentation. + + + ERROR_NDIS_LOW_POWER_STATE + ERROR_NDIS_LOW_POWER_STATE + + + + No documentation. + + + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED + + + + No documentation. + + + ERROR_NDIS_DOT11_MEDIA_IN_USE + ERROR_NDIS_DOT11_MEDIA_IN_USE + + + + No documentation. + + + ERROR_NDIS_DOT11_POWER_STATE_INVALID + ERROR_NDIS_DOT11_POWER_STATE_INVALID + + + + No documentation. + + + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL + + + + No documentation. + + + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL + + + + No documentation. + + + ERROR_NDIS_INDICATION_REQUIRED + ERROR_NDIS_INDICATION_REQUIRED + + + + No documentation. + + + ERROR_NDIS_OFFLOAD_POLICY + ERROR_NDIS_OFFLOAD_POLICY + + + + No documentation. + + + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED + + + + No documentation. + + + ERROR_NDIS_OFFLOAD_PATH_REJECTED + ERROR_NDIS_OFFLOAD_PATH_REJECTED + + + + No documentation. + + + ERROR_HV_INVALID_HYPERCALL_CODE + ERROR_HV_INVALID_HYPERCALL_CODE + + + + No documentation. + + + ERROR_HV_INVALID_HYPERCALL_INPUT + ERROR_HV_INVALID_HYPERCALL_INPUT + + + + No documentation. + + + ERROR_HV_INVALID_ALIGNMENT + ERROR_HV_INVALID_ALIGNMENT + + + + No documentation. + + + ERROR_HV_INVALID_PARAMETER + ERROR_HV_INVALID_PARAMETER + + + + No documentation. + + + ERROR_HV_ACCESS_DENIED + ERROR_HV_ACCESS_DENIED + + + + No documentation. + + + ERROR_HV_INVALID_PARTITION_STATE + ERROR_HV_INVALID_PARTITION_STATE + + + + No documentation. + + + ERROR_HV_OPERATION_DENIED + ERROR_HV_OPERATION_DENIED + + + + No documentation. + + + ERROR_HV_UNKNOWN_PROPERTY + ERROR_HV_UNKNOWN_PROPERTY + + + + No documentation. + + + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE + + + + No documentation. + + + ERROR_HV_INSUFFICIENT_MEMORY + ERROR_HV_INSUFFICIENT_MEMORY + + + + No documentation. + + + ERROR_HV_PARTITION_TOO_DEEP + ERROR_HV_PARTITION_TOO_DEEP + + + + No documentation. + + + ERROR_HV_INVALID_PARTITION_ID + ERROR_HV_INVALID_PARTITION_ID + + + + No documentation. + + + ERROR_HV_INVALID_VP_INDEX + ERROR_HV_INVALID_VP_INDEX + + + + No documentation. + + + ERROR_HV_INVALID_PORT_ID + ERROR_HV_INVALID_PORT_ID + + + + No documentation. + + + ERROR_HV_INVALID_CONNECTION_ID + ERROR_HV_INVALID_CONNECTION_ID + + + + No documentation. + + + ERROR_HV_INSUFFICIENT_BUFFERS + ERROR_HV_INSUFFICIENT_BUFFERS + + + + No documentation. + + + ERROR_HV_NOT_ACKNOWLEDGED + ERROR_HV_NOT_ACKNOWLEDGED + + + + No documentation. + + + ERROR_HV_ACKNOWLEDGED + ERROR_HV_ACKNOWLEDGED + + + + No documentation. + + + ERROR_HV_INVALID_SAVE_RESTORE_STATE + ERROR_HV_INVALID_SAVE_RESTORE_STATE + + + + No documentation. + + + ERROR_HV_INVALID_SYNIC_STATE + ERROR_HV_INVALID_SYNIC_STATE + + + + No documentation. + + + ERROR_HV_OBJECT_IN_USE + ERROR_HV_OBJECT_IN_USE + + + + No documentation. + + + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO + + + + No documentation. + + + ERROR_HV_NO_DATA + ERROR_HV_NO_DATA + + + + No documentation. + + + ERROR_HV_INACTIVE + ERROR_HV_INACTIVE + + + + No documentation. + + + ERROR_HV_NO_RESOURCES + ERROR_HV_NO_RESOURCES + + + + No documentation. + + + ERROR_HV_FEATURE_UNAVAILABLE + ERROR_HV_FEATURE_UNAVAILABLE + + + + No documentation. + + + ERROR_HV_NOT_PRESENT + ERROR_HV_NOT_PRESENT + + + + No documentation. + + + ERROR_VID_DUPLICATE_HANDLER + ERROR_VID_DUPLICATE_HANDLER + + + + No documentation. + + + ERROR_VID_TOO_MANY_HANDLERS + ERROR_VID_TOO_MANY_HANDLERS + + + + No documentation. + + + ERROR_VID_QUEUE_FULL + ERROR_VID_QUEUE_FULL + + + + No documentation. + + + ERROR_VID_HANDLER_NOT_PRESENT + ERROR_VID_HANDLER_NOT_PRESENT + + + + No documentation. + + + ERROR_VID_INVALID_OBJECT_NAME + ERROR_VID_INVALID_OBJECT_NAME + + + + No documentation. + + + ERROR_VID_PARTITION_NAME_TOO_LONG + ERROR_VID_PARTITION_NAME_TOO_LONG + + + + No documentation. + + + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG + + + + No documentation. + + + ERROR_VID_PARTITION_ALREADY_EXISTS + ERROR_VID_PARTITION_ALREADY_EXISTS + + + + No documentation. + + + ERROR_VID_PARTITION_DOES_NOT_EXIST + ERROR_VID_PARTITION_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_VID_PARTITION_NAME_NOT_FOUND + ERROR_VID_PARTITION_NAME_NOT_FOUND + + + + No documentation. + + + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS + + + + No documentation. + + + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT + + + + No documentation. + + + ERROR_VID_MB_STILL_REFERENCED + ERROR_VID_MB_STILL_REFERENCED + + + + No documentation. + + + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED + + + + No documentation. + + + ERROR_VID_INVALID_NUMA_SETTINGS + ERROR_VID_INVALID_NUMA_SETTINGS + + + + No documentation. + + + ERROR_VID_INVALID_NUMA_NODE_INDEX + ERROR_VID_INVALID_NUMA_NODE_INDEX + + + + No documentation. + + + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED + + + + No documentation. + + + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE + + + + No documentation. + + + ERROR_VID_PAGE_RANGE_OVERFLOW + ERROR_VID_PAGE_RANGE_OVERFLOW + + + + No documentation. + + + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE + + + + No documentation. + + + ERROR_VID_INVALID_GPA_RANGE_HANDLE + ERROR_VID_INVALID_GPA_RANGE_HANDLE + + + + No documentation. + + + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE + + + + No documentation. + + + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED + + + + No documentation. + + + ERROR_VID_INVALID_PPM_HANDLE + ERROR_VID_INVALID_PPM_HANDLE + + + + No documentation. + + + ERROR_VID_MBPS_ARE_LOCKED + ERROR_VID_MBPS_ARE_LOCKED + + + + No documentation. + + + ERROR_VID_MESSAGE_QUEUE_CLOSED + ERROR_VID_MESSAGE_QUEUE_CLOSED + + + + No documentation. + + + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_VID_STOP_PENDING + ERROR_VID_STOP_PENDING + + + + No documentation. + + + ERROR_VID_INVALID_PROCESSOR_STATE + ERROR_VID_INVALID_PROCESSOR_STATE + + + + No documentation. + + + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT + + + + No documentation. + + + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED + + + + No documentation. + + + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET + + + + No documentation. + + + ERROR_VID_MMIO_RANGE_DESTROYED + ERROR_VID_MMIO_RANGE_DESTROYED + + + + No documentation. + + + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET + + + + No documentation. + + + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED + + + + No documentation. + + + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL + + + + No documentation. + + + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE + + + + No documentation. + + + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT + + + + No documentation. + + + ERROR_VID_SAVED_STATE_CORRUPT + ERROR_VID_SAVED_STATE_CORRUPT + + + + No documentation. + + + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM + + + + No documentation. + + + ERROR_VID_SAVED_STATE_INCOMPATIBLE + ERROR_VID_SAVED_STATE_INCOMPATIBLE + + + + No documentation. + + + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED + + + + No documentation. + + + ERROR_VOLMGR_INCOMPLETE_REGENERATION + ERROR_VOLMGR_INCOMPLETE_REGENERATION + + + + No documentation. + + + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION + + + + No documentation. + + + ERROR_VOLMGR_DATABASE_FULL + ERROR_VOLMGR_DATABASE_FULL + + + + No documentation. + + + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED + + + + No documentation. + + + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC + + + + No documentation. + + + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED + + + + No documentation. + + + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME + + + + No documentation. + + + ERROR_VOLMGR_DISK_DUPLICATE + ERROR_VOLMGR_DISK_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_DISK_DYNAMIC + ERROR_VOLMGR_DISK_DYNAMIC + + + + No documentation. + + + ERROR_VOLMGR_DISK_ID_INVALID + ERROR_VOLMGR_DISK_ID_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_INVALID + ERROR_VOLMGR_DISK_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAST_VOTER + ERROR_VOLMGR_DISK_LAST_VOTER + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_INVALID + ERROR_VOLMGR_DISK_LAYOUT_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS + + + + No documentation. + + + ERROR_VOLMGR_DISK_MISSING + ERROR_VOLMGR_DISK_MISSING + + + + No documentation. + + + ERROR_VOLMGR_DISK_NOT_EMPTY + ERROR_VOLMGR_DISK_NOT_EMPTY + + + + No documentation. + + + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE + + + + No documentation. + + + ERROR_VOLMGR_DISK_REVECTORING_FAILED + ERROR_VOLMGR_DISK_REVECTORING_FAILED + + + + No documentation. + + + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED + + + + No documentation. + + + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS + + + + No documentation. + + + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES + + + + No documentation. + + + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_ALREADY_USED + ERROR_VOLMGR_EXTENT_ALREADY_USED + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH + + + + No documentation. + + + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED + + + + No documentation. + + + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID + + + + No documentation. + + + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_IN_SYNC + ERROR_VOLMGR_MEMBER_IN_SYNC + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_INDEX_INVALID + ERROR_VOLMGR_MEMBER_INDEX_INVALID + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_MISSING + ERROR_VOLMGR_MEMBER_MISSING + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_NOT_DETACHED + ERROR_VOLMGR_MEMBER_NOT_DETACHED + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_REGENERATING + ERROR_VOLMGR_MEMBER_REGENERATING + + + + No documentation. + + + ERROR_VOLMGR_ALL_DISKS_FAILED + ERROR_VOLMGR_ALL_DISKS_FAILED + + + + No documentation. + + + ERROR_VOLMGR_NO_REGISTERED_USERS + ERROR_VOLMGR_NO_REGISTERED_USERS + + + + No documentation. + + + ERROR_VOLMGR_NO_SUCH_USER + ERROR_VOLMGR_NO_SUCH_USER + + + + No documentation. + + + ERROR_VOLMGR_NOTIFICATION_RESET + ERROR_VOLMGR_NOTIFICATION_RESET + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_DUPLICATE + ERROR_VOLMGR_PACK_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_PACK_ID_INVALID + ERROR_VOLMGR_PACK_ID_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_INVALID + ERROR_VOLMGR_PACK_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_NAME_INVALID + ERROR_VOLMGR_PACK_NAME_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_OFFLINE + ERROR_VOLMGR_PACK_OFFLINE + + + + No documentation. + + + ERROR_VOLMGR_PACK_HAS_QUORUM + ERROR_VOLMGR_PACK_HAS_QUORUM + + + + No documentation. + + + ERROR_VOLMGR_PACK_WITHOUT_QUORUM + ERROR_VOLMGR_PACK_WITHOUT_QUORUM + + + + No documentation. + + + ERROR_VOLMGR_PARTITION_STYLE_INVALID + ERROR_VOLMGR_PARTITION_STYLE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PARTITION_UPDATE_FAILED + ERROR_VOLMGR_PARTITION_UPDATE_FAILED + + + + No documentation. + + + ERROR_VOLMGR_PLEX_IN_SYNC + ERROR_VOLMGR_PLEX_IN_SYNC + + + + No documentation. + + + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_PLEX_INDEX_INVALID + ERROR_VOLMGR_PLEX_INDEX_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PLEX_LAST_ACTIVE + ERROR_VOLMGR_PLEX_LAST_ACTIVE + + + + No documentation. + + + ERROR_VOLMGR_PLEX_MISSING + ERROR_VOLMGR_PLEX_MISSING + + + + No documentation. + + + ERROR_VOLMGR_PLEX_REGENERATING + ERROR_VOLMGR_PLEX_REGENERATING + + + + No documentation. + + + ERROR_VOLMGR_PLEX_TYPE_INVALID + ERROR_VOLMGR_PLEX_TYPE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PLEX_NOT_RAID5 + ERROR_VOLMGR_PLEX_NOT_RAID5 + + + + No documentation. + + + ERROR_VOLMGR_PLEX_NOT_SIMPLE + ERROR_VOLMGR_PLEX_NOT_SIMPLE + + + + No documentation. + + + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS + + + + No documentation. + + + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS + + + + No documentation. + + + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_ID_INVALID + ERROR_VOLMGR_VOLUME_ID_INVALID + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_LENGTH_INVALID + ERROR_VOLMGR_VOLUME_LENGTH_INVALID + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_NOT_MIRRORED + ERROR_VOLMGR_VOLUME_NOT_MIRRORED + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_NOT_RETAINED + ERROR_VOLMGR_VOLUME_NOT_RETAINED + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_OFFLINE + ERROR_VOLMGR_VOLUME_OFFLINE + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_RETAINED + ERROR_VOLMGR_VOLUME_RETAINED + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE + + + + No documentation. + + + ERROR_VOLMGR_BAD_BOOT_DISK + ERROR_VOLMGR_BAD_BOOT_DISK + + + + No documentation. + + + ERROR_VOLMGR_PACK_CONFIG_OFFLINE + ERROR_VOLMGR_PACK_CONFIG_OFFLINE + + + + No documentation. + + + ERROR_VOLMGR_PACK_CONFIG_ONLINE + ERROR_VOLMGR_PACK_CONFIG_ONLINE + + + + No documentation. + + + ERROR_VOLMGR_NOT_PRIMARY_PACK + ERROR_VOLMGR_NOT_PRIMARY_PACK + + + + No documentation. + + + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_MIRRORED + ERROR_VOLMGR_VOLUME_MIRRORED + + + + No documentation. + + + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED + + + + No documentation. + + + ERROR_VOLMGR_NO_VALID_LOG_COPIES + ERROR_VOLMGR_NO_VALID_LOG_COPIES + + + + No documentation. + + + ERROR_VOLMGR_PRIMARY_PACK_PRESENT + ERROR_VOLMGR_PRIMARY_PACK_PRESENT + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID + + + + No documentation. + + + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED + + + + No documentation. + + + ERROR_VOLMGR_RAID5_NOT_SUPPORTED + ERROR_VOLMGR_RAID5_NOT_SUPPORTED + + + + No documentation. + + + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED + + + + No documentation. + + + ERROR_BCD_TOO_MANY_ELEMENTS + ERROR_BCD_TOO_MANY_ELEMENTS + + + + No documentation. + + + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED + + + + No documentation. + + + ERROR_VHD_DRIVE_FOOTER_MISSING + ERROR_VHD_DRIVE_FOOTER_MISSING + + + + No documentation. + + + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH + + + + No documentation. + + + ERROR_VHD_DRIVE_FOOTER_CORRUPT + ERROR_VHD_DRIVE_FOOTER_CORRUPT + + + + No documentation. + + + ERROR_VHD_FORMAT_UNKNOWN + ERROR_VHD_FORMAT_UNKNOWN + + + + No documentation. + + + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION + + + + No documentation. + + + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH + + + + No documentation. + + + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION + + + + No documentation. + + + ERROR_VHD_SPARSE_HEADER_CORRUPT + ERROR_VHD_SPARSE_HEADER_CORRUPT + + + + No documentation. + + + ERROR_VHD_BLOCK_ALLOCATION_FAILURE + ERROR_VHD_BLOCK_ALLOCATION_FAILURE + + + + No documentation. + + + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT + + + + No documentation. + + + ERROR_VHD_INVALID_BLOCK_SIZE + ERROR_VHD_INVALID_BLOCK_SIZE + + + + No documentation. + + + ERROR_VHD_BITMAP_MISMATCH + ERROR_VHD_BITMAP_MISMATCH + + + + No documentation. + + + ERROR_VHD_PARENT_VHD_NOT_FOUND + ERROR_VHD_PARENT_VHD_NOT_FOUND + + + + No documentation. + + + ERROR_VHD_CHILD_PARENT_ID_MISMATCH + ERROR_VHD_CHILD_PARENT_ID_MISMATCH + + + + No documentation. + + + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH + + + + No documentation. + + + ERROR_VHD_METADATA_READ_FAILURE + ERROR_VHD_METADATA_READ_FAILURE + + + + No documentation. + + + ERROR_VHD_METADATA_WRITE_FAILURE + ERROR_VHD_METADATA_WRITE_FAILURE + + + + No documentation. + + + ERROR_VHD_INVALID_SIZE + ERROR_VHD_INVALID_SIZE + + + + No documentation. + + + ERROR_VHD_INVALID_FILE_SIZE + ERROR_VHD_INVALID_FILE_SIZE + + + + No documentation. + + + ERROR_VIRTDISK_PROVIDER_NOT_FOUND + ERROR_VIRTDISK_PROVIDER_NOT_FOUND + + + + No documentation. + + + ERROR_VIRTDISK_NOT_VIRTUAL_DISK + ERROR_VIRTDISK_NOT_VIRTUAL_DISK + + + + No documentation. + + + ERROR_VHD_PARENT_VHD_ACCESS_DENIED + ERROR_VHD_PARENT_VHD_ACCESS_DENIED + + + + No documentation. + + + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH + + + + No documentation. + + + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED + + + + No documentation. + + + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT + + + + No documentation. + + + ERROR_VIRTUAL_DISK_LIMITATION + ERROR_VIRTUAL_DISK_LIMITATION + + + + No documentation. + + + ERROR_VHD_INVALID_TYPE + ERROR_VHD_INVALID_TYPE + + + + No documentation. + + + ERROR_VHD_INVALID_STATE + ERROR_VHD_INVALID_STATE + + + + No documentation. + + + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE + + + + No documentation. + + + ERROR_QUERY_STORAGE_ERROR + ERROR_QUERY_STORAGE_ERROR + + + +

Indicates the type of locks placed on records during editing.

+
+ + ms677223 + LOCKTYPE + LOCKTYPE +
+ + + No documentation. + + + ms677223 + LOCK_WRITE + LOCK_WRITE + + + + No documentation. + + + ms677223 + LOCK_EXCLUSIVE + LOCK_EXCLUSIVE + + + + No documentation. + + + ms677223 + LOCK_ONLYONCE + LOCK_ONLYONCE + + + +

The + enumeration values indicate whether the method should try to return a name in the pwcsName member of the + structure. The values are used in the + ILockBytes::Stat, + IStorage::Stat, and + methods to save memory when the pwcsName member is not required.

+
+ + aa380316 + STATFLAG + STATFLAG +
+ + + No documentation. + + + aa380316 + STATFLAG_DEFAULT + STATFLAG_DEFAULT + + + + No documentation. + + + aa380316 + STATFLAG_NONAME + STATFLAG_NONAME + + + + None. + + + None + None + + + +

The + interface lets you read and write data to stream objects. Stream objects contain the data in a structured storage object, where storages provide the structure. Simple data can be written directly to a stream but, most frequently, streams are elements nested within a storage object. They are similar to standard files.

The + interface defines methods similar to the MS-DOS FAT file functions. For example, each stream object has its own access rights and a seek reference. The main difference between a DOS file and a stream object is that in the latter case, streams are opened using an + interface reference rather than a file handle.

The methods in this interface present your object's data as a contiguous sequence of bytes that you can read or write. There are also methods for committing and reverting changes on streams that are open in transacted mode and methods for restricting access to a range of bytes in the stream.

Streams can remain open for long periods of time without consuming file-system resources. The IUnknown::Release method is similar to a close function on a file. Once released, the stream object is no longer valid and cannot be used.

Clients of asynchronous monikers can choose between a data-pull or data-push model for driving an asynchronous + IMoniker::BindToStorage operation and for receiving asynchronous notifications. See + URL Monikers for more information. The following table compares the behavior of asynchronous + and + calls returned in IBindStatusCallback::OnDataAvailable in these two download models:

+
+ + aa380034 + IStream + IStream +
+ + +

The + interface supports simplified sequential access to stream objects. The + interface inherits its + Read and + Write methods from + .

+
+ + aa380010 + ISequentialStream + ISequentialStream +
+ + +

The + interface supports simplified sequential access to stream objects. The + interface inherits its + Read and + Write methods from + .

+
+ + aa380010 + ISequentialStream + ISequentialStream +
+ + + Reads a specified number of bytes from the stream object into memory starting at the current seek pointer. + + The read buffer. + The number of bytes to read. + The actual number of bytes read from the stream object. + + + + Writes a specified number of bytes into the stream object starting at the current seek pointer. + + The buffer. + The number of bytes to read. + The actual number of bytes written to the stream object + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

The Read method reads a specified number of bytes from the stream object into memory, starting at the current seek reference.

+
+

A reference to the buffer which the stream data is read into.

+

The number of bytes of data to read from the stream object.

+

A reference to a ULONG variable that receives the actual number of bytes read from the stream object.

Note??The number of bytes read may be zero.

+ +

This method reads bytes from this stream object into memory. The stream object must be opened in STGM_READ mode. This method adjusts the seek reference by the actual number of bytes read.

The number of bytes actually read is also returned in the pcbRead parameter.

+
+ + aa380011 + HRESULT ISequentialStream::Read([Out, Buffer] void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbRead) + ISequentialStream::Read +
+ + +

The Write method writes a specified number of bytes into the stream object starting at the current seek reference.

+
+

A reference to the buffer that contains the data that is to be written to the stream. A valid reference must be provided for this parameter even when cb is zero.

+

The number of bytes of data to attempt to write into the stream. This value can be zero.

+

A reference to a ULONG variable where this method writes the actual number of bytes written to the stream object. The caller can set this reference to null, in which case this method does not provide the actual number of bytes written.

+ +

writes the specified data to a stream object. The seek reference is adjusted for the number of bytes actually written. The number of bytes actually written is returned in the pcbWritten parameter. If the byte count is zero bytes, the write operation has no effect.

If the seek reference is currently past the end of the stream and the byte count is nonzero, this method increases the size of the stream to the seek reference and writes the specified bytes starting at the seek reference. The fill bytes written to the stream are not initialized to any particular value. This is the same as the end-of-file behavior in the MS-DOS FAT file system.

With a zero byte count and a seek reference past the end of the stream, this method does not create the fill bytes to increase the stream to the seek reference. In this case, you must call the + method to increase the size of the stream and write the fill bytes.

The pcbWritten parameter can have a value even if an error occurs.

In the COM-provided implementation, stream objects are not sparse. Any fill bytes are eventually allocated on the disk and assigned to the stream.

+
+ + aa380014 + HRESULT ISequentialStream::Write([In, Buffer] const void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbWritten) + ISequentialStream::Write +
+ + +

The + interface lets you read and write data to stream objects. Stream objects contain the data in a structured storage object, where storages provide the structure. Simple data can be written directly to a stream but, most frequently, streams are elements nested within a storage object. They are similar to standard files.

The + interface defines methods similar to the MS-DOS FAT file functions. For example, each stream object has its own access rights and a seek reference. The main difference between a DOS file and a stream object is that in the latter case, streams are opened using an + interface reference rather than a file handle.

The methods in this interface present your object's data as a contiguous sequence of bytes that you can read or write. There are also methods for committing and reverting changes on streams that are open in transacted mode and methods for restricting access to a range of bytes in the stream.

Streams can remain open for long periods of time without consuming file-system resources. The IUnknown::Release method is similar to a close function on a file. Once released, the stream object is no longer valid and cannot be used.

Clients of asynchronous monikers can choose between a data-pull or data-push model for driving an asynchronous + IMoniker::BindToStorage operation and for receiving asynchronous notifications. See + URL Monikers for more information. The following table compares the behavior of asynchronous + and + calls returned in IBindStatusCallback::OnDataAvailable in these two download models:

+
+ + aa380034 + IStream + IStream +
+ + + Changes the seek pointer to a new location relative to the beginning of the stream, to the end of the stream, or to the current seek pointer. + + The offset. + The origin. + The offset of the seek pointer from the beginning of the stream. + + + + Changes the size of the stream object. + + The new size. + + + + Copies a specified number of bytes from the current seek pointer in the stream to the current seek pointer in another stream. + + The stream destination. + The number of bytes to copy. + The number of bytes written. + The number of bytes read + + + + Commit method ensures that any changes made to a stream object open in transacted mode are reflected in the parent storage. If the stream object is open in direct mode, Commit has no effect other than flushing all memory buffers to the next-level storage object. The COM compound file implementation of streams does not support opening streams in transacted mode. + + The GRF commit flags. + + + + Discards all changes that have been made to a transacted stream since the last call. + + + + + Restricts access to a specified range of bytes in the stream. + + The offset. + The number of bytes to lock. + Type of the dw lock. + + + + Unlocks access to a specified range of bytes in the stream. + + The offset. + The number of bytes to lock. + Type of the dw lock. + + + + Gets the statistics. + + The storage statistics flags. + + + + + Clones this instance. + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

The Seek method changes the seek reference to a new location. The new location is relative to either the beginning of the stream, the end of the stream, or the current seek reference.

+
+

The displacement to be added to the location indicated by the dwOrigin parameter. If dwOrigin is STREAM_SEEK_SET, this is interpreted as an unsigned value rather than a signed value.

+

The origin for the displacement specified in dlibMove. The origin can be the beginning of the file (STREAM_SEEK_SET), the current seek reference (STREAM_SEEK_CUR), or the end of the file (STREAM_SEEK_END). For more information about values, see the STREAM_SEEK enumeration.

+

A reference to the location where this method writes the value of the new seek reference from the beginning of the stream.

You can set this reference to null. In this case, this method does not provide the new seek reference.

+ +

changes the seek reference so that subsequent read and write operations can be performed at a different location in the stream object. It is an error to seek before the beginning of the stream. It is not, however, an error to seek past the end of the stream. Seeking past the end of the stream is useful for subsequent write operations, as the stream byte range will be extended to the new seek position immediately before the write is complete.

You can also use this method to obtain the current value of the seek reference by calling this method with the dwOrigin parameter set to STREAM_SEEK_CUR and the dlibMove parameter set to 0 so that the seek reference is not changed. The current seek reference is returned in the plibNewPosition parameter.

+
+ + aa380043 + HRESULT IStream::Seek([In] LARGE_INTEGER dlibMove,[In] SHARPDX_SEEKORIGIN dwOrigin,[Out, Optional] ULARGE_INTEGER* plibNewPosition) + IStream::Seek +
+ + +

The SetSize method changes the size of the stream object.

+
+

Specifies the new size, in bytes, of the stream.

+

This method can return one of these values.

The size of the stream object was successfully changed.

E_PENDING

Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information, see IFillLockBytes and Asynchronous Storage.

STG_E_MEDIUMFULL

The stream size is not changed because there is no space left on the storage device.

STG_E_INVALIDFUNCTION

The value of the libNewSize parameter is not supported by the implementation. Not all streams support greater than 232 bytes. If a stream does not support more than 232 bytes, the high DWORD data type of libNewSize must be zero. If it is nonzero, the implementation may return STG_E_INVALIDFUNCTION. In general, COM-based implementations of the interface do not support streams larger than 232 bytes.

STG_E_REVERTED

The object has been invalidated by a revert operation above it in the transaction tree.

+ +

changes the size of the stream object. Call this method to preallocate space for the stream. If the libNewSize parameter is larger than the current stream size, the stream is extended to the indicated size by filling the intervening space with bytes of undefined value. This operation is similar to the + method if the seek reference is past the current end of the stream.

If the libNewSize parameter is smaller than the current stream, the stream is truncated to the indicated size.

The seek reference is not affected by the change in stream size.

Calling can be an effective way to obtain a large chunk of contiguous space.

+
+ + aa380044 + HRESULT IStream::SetSize([In] ULARGE_INTEGER libNewSize) + IStream::SetSize +
+ + +

The CopyTo method copies a specified number of bytes from the current seek reference in the stream to the current seek reference in another stream.

+
+

A reference to the destination stream. The stream pointed to by pstm can be a new stream or a clone of the source stream.

+

The number of bytes to copy from the source stream.

+

A reference to the location where this method writes the actual number of bytes written to the destination. You can set this reference to null. In this case, this method does not provide the actual number of bytes written.

+

A reference to the location where this method writes the actual number of bytes read from the source. You can set this reference to null. In this case, this method does not provide the actual number of bytes read.

+ +

The CopyTo method copies the specified bytes from one stream to another. It can also be used to copy a stream to itself. The seek reference in each stream instance is adjusted for the number of bytes read or written. This method is equivalent to reading cb bytes into memory using + and then immediately writing them to the destination stream using + , although will be more efficient.

The destination stream can be a clone of the source stream created by calling the + method.

If returns an error, you cannot assume that the seek references are valid for either the source or destination. Additionally, the values of pcbRead and pcbWritten are not meaningful even though they are returned.

If returns successfully, the actual number of bytes read and written are the same.

To copy the remainder of the source from the current seek reference, specify the maximum large integer value for the cb parameter. If the seek reference is the beginning of the stream, this operation copies the entire stream.

+
+ + aa380038 + HRESULT IStream::CopyTo([In] IStream* pstm,[In] ULARGE_INTEGER cb,[Out] ULARGE_INTEGER* pcbRead,[Out] ULARGE_INTEGER* pcbWritten) + IStream::CopyTo +
+ + +

The Commit method ensures that any changes made to a stream object open in transacted mode are reflected in the parent storage. If the stream object is open in direct mode, has no effect other than flushing all memory buffers to the next-level storage object. The COM compound file implementation of streams does not support opening streams in transacted mode.

+
+

Controls how the changes for the stream object are committed. See the enumeration for a definition of these values.

+

This method can return one of these values.

Changes to the stream object were successfully committed to the parent level.

E_PENDING

Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see IFillLockBytes and Asynchronous Storage.

STG_E_MEDIUMFULL

The commit operation failed due to lack of space on the storage device.

STG_E_REVERTED

The object has been invalidated by a revert operation above it in the transaction tree.

+ +

The Commit method ensures that changes to a stream object opened in transacted mode are reflected in the parent storage. Changes that have been made to the stream since it was opened or last committed are reflected to the parent storage object. If the parent is opened in transacted mode, the parent may revert at a later time, rolling back the changes to this stream object. The compound file implementation does not support the opening of streams in transacted mode, so this method has very little effect other than to flush memory buffers. For more information, see + - Compound File Implementation.

If the stream is open in direct mode, this method ensures that any memory buffers have been flushed out to the underlying storage object. This is much like a flush in traditional file systems.

The method is useful on a direct mode stream when the implementation of the + interface is a wrapper for underlying file system APIs. In this case, would be connected to the file system's flush call.

+
+ + aa380036 + HRESULT IStream::Commit([In] STGC grfCommitFlags) + IStream::Commit +
+ + +

The Revert method discards all changes that have been made to a transacted stream since the last + call. On streams open in direct mode and streams using the COM compound file implementation of , this method has no effect.

+
+

This method can return one of these values.

The stream was successfully reverted to its previous version.

E_PENDING

Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see IFillLockBytes and Asynchronous Storage.

+ +

The Revert method discards changes made to a transacted stream since the last commit operation.

+
+ + aa380042 + HRESULT IStream::Revert() + IStream::Revert +
+ + +

The LockRegion method restricts access to a specified range of bytes in the stream. Supporting this functionality is optional since some file systems do not provide it.

+
+

Integer that specifies the byte offset for the beginning of the range.

+

Integer that specifies the length of the range, in bytes, to be restricted.

+

Specifies the restrictions being requested on accessing the range.

+

This method can return one of these values.

The specified range of bytes was locked.

E_PENDING

Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information, see IFillLockBytes and Asynchronous Storage.

STG_E_INVALIDFUNCTION

Locking is not supported at all or the specific type of lock requested is not supported.

STG_E_LOCKVIOLATION

Requested lock is supported, but cannot be granted because of an existing lock.

STG_E_REVERTED

The object has been invalidated by a revert operation above it in the transaction tree.

+ +

The byte range of the stream can be extended. Locking an extended range for the stream is useful as a method of communication between different instances of the stream without changing data that is actually part of the stream.

Three types of locking can be supported: locking to exclude other writers, locking to exclude other readers or writers, and locking that allows only one requester to obtain a lock on the given range, which is usually an alias for one of the other two lock types. A given stream instance might support either of the first two types, or both. The lock type is specified by dwLockType, using a value from the + enumeration.

Any region locked with must later be explicitly unlocked by calling + with exactly the same values for the libOffset, cb, and dwLockType parameters. The region must be unlocked before the stream is released. Two adjacent regions cannot be locked separately and then unlocked with a single unlock call.

+
+ + aa380039 + HRESULT IStream::LockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + IStream::LockRegion +
+ + +

The UnlockRegion method removes the access restriction on a range of bytes previously restricted with + .

+
+ No documentation. + No documentation. + No documentation. +

This method can return one of these values.

The byte range was unlocked.

E_PENDING

Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see IFillLockBytes and Asynchronous Storage.

STG_E_INVALIDFUNCTION

Locking is not supported at all or the specific type of lock requested is not supported.

STG_E_LOCKVIOLATION

The requested unlock operation cannot be granted.

STG_E_REVERTED

The object has been invalidated by a revert operation above it in the transaction tree.

+ +

unlocks a region previously locked with the + method. Locked regions must later be explicitly unlocked by calling with exactly the same values for the libOffset, cb, and dwLockType parameters. The region must be unlocked before the stream is released. Two adjacent regions cannot be locked separately and then unlocked with a single unlock call.

+
+ + aa380046 + HRESULT IStream::UnlockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + IStream::UnlockRegion +
+ + +

The Stat method retrieves the + structure for this stream.

+
+ No documentation. + No documentation. + +

retrieves a reference to the + structure that contains information about this open stream. When this stream is within a structured storage and + IStorage::EnumElements is called, it creates an enumerator object with the + IEnumSTATSTG interface on it, which can be called to enumerate the storages and streams through the + structures associated with each of them.

+
+ + aa380045 + HRESULT IStream::Stat([Out] STATSTG* pstatstg,[In] STATFLAG grfStatFlag) + IStream::Stat +
+ + +

The Clone method creates a new stream object with its own seek reference that references the same bytes as the original stream.

+
+

When successful, reference to the location of an reference to the new stream object. If an error occurs, this parameter is null.

+ +

The Clone method creates a new stream object for accessing the same bytes but using a separate seek reference. The new stream object sees the same data as the source-stream object. Changes written to one object are immediately visible in the other. Range locking is shared between the stream objects.

The initial setting of the seek reference in the cloned stream instance is the same as the current setting of the seek reference in the original stream at the time of the clone operation.

+
+ + aa380035 + HRESULT IStream::Clone([Out] IStream** ppstm) + IStream::Clone +
+ + + Copies a specified number of bytes from the current seek pointer in the stream to the current seek pointer in another stream. + + The stream destination. + The number of bytes to copy. + The bytes written. + The number of bytes read from this instance + + + + Gets a com pointer to the underlying object. + + The stream. + A Com pointer + + + +

The + structure contains statistical data about an open storage, stream, or byte-array object. This structure is used in the + IEnumSTATSTG, + ILockBytes, + IStorage, and + interfaces.

+
+ + aa380319 + STATSTG + STATSTG +
+ + + No documentation. + + + aa380319 + wchar_t* pwcsName + wchar_t pwcsName + + + + No documentation. + + + aa380319 + unsigned int type + unsigned int type + + + + No documentation. + + + aa380319 + ULARGE_INTEGER cbSize + ULARGE_INTEGER cbSize + + + + No documentation. + + + aa380319 + FILETIME mtime + FILETIME mtime + + + + No documentation. + + + aa380319 + FILETIME ctime + FILETIME ctime + + + + No documentation. + + + aa380319 + FILETIME atime + FILETIME atime + + + + No documentation. + + + aa380319 + unsigned int grfMode + unsigned int grfMode + + + + No documentation. + + + aa380319 + unsigned int grfLocksSupported + unsigned int grfLocksSupported + + + + No documentation. + + + aa380319 + GUID clsid + GUID clsid + + + + No documentation. + + + aa380319 + unsigned int grfStateBits + unsigned int grfStateBits + + + + No documentation. + + + aa380319 + unsigned int reserved + unsigned int reserved + + + + A half precision (16 bit) floating point value. + + + + + Number of decimal digits of precision. + + + + + Number of bits in the mantissa. + + + + + Maximum decimal exponent. + + + + + Maximum binary exponent. + + + + + Minimum decimal exponent. + + + + + Minimum binary exponent. + + + + + Exponent radix. + + + + + Additional rounding. + + + + + Smallest such that 1.0 + epsilon != 1.0 + + + + + Maximum value of the number. + + + + + Minimum value of the number. + + + + + Initializes a new instance of the structure. + + The floating point value that should be stored in 16 bit format. + + + + Initializes a new instance of the structure. + + The floating point value that should be stored in 16 bit format. + + + + Converts an array of half precision values into full precision values. + + The values to be converted. + An array of converted values. + + + + Converts an array of full precision values into half precision values. + + The values to be converted. + An array of converted values. + + + + Performs an explicit conversion from to . + + The value to be converted. + The converted value. + + + + Performs an implicit conversion from to . + + The value to be converted. + The converted value. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Converts the value of the object to its equivalent string representation. + + The string representation of the value of this instance. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Gets or sets the raw 16 bit value used to back this half-float. + + + + + Defines a two component vector, using half precision floating point coordinates. + + + + + Gets or sets the X component of the vector. + + The X component of the vector. + + + + Gets or sets the Y component of the vector. + + The Y component of the vector. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + + + + Initializes a new instance of the structure. + + The value to set for both the X and Y components. + + + + Initializes a new instance of the structure. + + Value to initialize X and Y components with. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Defines a three component vector, using half precision floating point coordinates. + + + + + Gets or sets the X component of the vector. + + The X component of the vector. + + + + Gets or sets the Y component of the vector. + + The Y component of the vector. + + + + Gets or sets the Z component of the vector. + + The Z component of the vector. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + + + + Initializes a new instance of the structure. + + The value to set for the X, Y, and Z components. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Defines a four component vector, using half precision floating point coordinates. + + + + + Gets or sets the X component of the vector. + + The X component of the vector. + + + + Gets or sets the Y component of the vector. + + The Y component of the vector. + + + + Gets or sets the Z component of the vector. + + The Z component of the vector. + + + + Gets or sets the W component of the vector. + + The W component of the vector. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + The W component. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + The W component. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + The W component. + + + + Initializes a new instance of the structure. + + The value to set for the X, Y, Z, and W components. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Helper class to perform Half/Float conversion. + Code extract from paper : www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf by Jeroen van der Zijp + + + + + Unpacks the specified h. + + The h. + + + + + Packs the specified f. + + The f. + + + + + Represents a four dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0, 0). + + + + + The Y unit (0, 1, 0, 0). + + + + + The Z unit (0, 0, 1, 0). + + + + + The W unit (0, 0, 0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + When the method completes, contains the modulated vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + The modulated vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchanged). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Performs an implicit conversion from array to . + + The input. + The result of the conversion. + + + + Performs an implicit conversion from to array. + + The input. + The result of the conversion. + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + The implementation of this class is filled by InteropBuilder post-building-event. + + + + + Provides a fixed statement working with generics. + + + The data. + A fixed pointer to the referenced structure + + This is the only function in this class that is inlined in order to inline the fixed statement correctly. + + + + + The value for which all absolute numbers smaller than are considered equal to zero. + + + + + A value specifying the approximation of π which is 180 degrees. + + + + + A value specifying the approximation of 2π which is 360 degrees. + + + + + A value specifying the approximation of π/2 which is 90 degrees. + + + + + A value specifying the approximation of π/4 which is 45 degrees. + + + + + Checks if a and b are almost equals, taking into account the magnitude of floating point numbers (unlike method). See Remarks. + See remarks. + + The left value to compare. + The right value to compare. + true if a almost equal to b, false otherwise + + The code is using the technique described by Bruce Dawson in +
Comparing Floating point numbers 2012 edition. + + + + + Determines whether the specified value is close to zero (0.0f). + + The floating value. + true if the specified value is close to zero (0.0f); otherwise, false. + + + + Determines whether the specified value is close to one (1.0f). + + The floating value. + true if the specified value is close to one (1.0f); otherwise, false. + + + + Checks if a - b are almost equals within a float epsilon. + + The left value to compare. + The right value to compare. + Epsilon value + true if a almost equal to b within a float epsilon, false otherwise + + + + Converts revolutions to degrees. + + The value to convert. + The converted value. + + + + Converts revolutions to radians. + + The value to convert. + The converted value. + + + + Converts revolutions to gradians. + + The value to convert. + The converted value. + + + + Converts degrees to revolutions. + + The value to convert. + The converted value. + + + + Converts degrees to radians. + + The value to convert. + The converted value. + + + + Converts radians to revolutions. + + The value to convert. + The converted value. + + + + Converts radians to gradians. + + The value to convert. + The converted value. + + + + Converts gradians to revolutions. + + The value to convert. + The converted value. + + + + Converts gradians to degrees. + + The value to convert. + The converted value. + + + + Converts gradians to radians. + + The value to convert. + The converted value. + + + + Converts radians to degrees. + + The value to convert. + The converted value. + + + + Clamps the specified value. + + The value. + The min. + The max. + The result of clamping a value between min and max + + + + Clamps the specified value. + + The value. + The min. + The max. + The result of clamping a value between min and max + + + + Interpolates between two values using a linear function by a given amount. + + + See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and + http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/ + + Value to interpolate from. + Value to interpolate to. + Interpolation amount. + The result of linear interpolation of values based on the amount. + + + + Interpolates between two values using a linear function by a given amount. + + + See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and + http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/ + + Value to interpolate from. + Value to interpolate to. + Interpolation amount. + The result of linear interpolation of values based on the amount. + + + + Interpolates between two values using a linear function by a given amount. + + + See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and + http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/ + + Value to interpolate from. + Value to interpolate to. + Interpolation amount. + The result of linear interpolation of values based on the amount. + + + + Performs smooth (cubic Hermite) interpolation between 0 and 1. + + + See https://en.wikipedia.org/wiki/Smoothstep + + Value between 0 and 1 indicating interpolation amount. + + + + Performs a smooth(er) interpolation between 0 and 1 with 1st and 2nd order derivatives of zero at endpoints. + + + See https://en.wikipedia.org/wiki/Smoothstep + + Value between 0 and 1 indicating interpolation amount. + + + + Calculates the modulo of the specified value. + + The value. + The modulo. + The result of the modulo applied to value + + + + Calculates the modulo 2*PI of the specified value. + + The value. + The result of the modulo applied to value + + + + Wraps the specified value into a range [min, max] + + The value to wrap. + The min. + The max. + Result of the wrapping. + Is thrown when is greater than . + + + + Wraps the specified value into a range [min, max[ + + The value. + The min. + The max. + Result of the wrapping. + Is thrown when is greater than . + + + + Gauss function. + http://en.wikipedia.org/wiki/Gaussian_function#Two-dimensional_Gaussian_function + + Curve amplitude. + Position X. + Position Y + Center X. + Center Y. + Curve sigma X. + Curve sigma Y. + The result of Gaussian function. + + + + Gauss function. + http://en.wikipedia.org/wiki/Gaussian_function#Two-dimensional_Gaussian_function + + Curve amplitude. + Position X. + Position Y + Center X. + Center Y. + Curve sigma X. + Curve sigma Y. + The result of Gaussian function. + + + + Represents a 4x4 mathematical matrix. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The identity . + + + + + Value at row 1 column 1 of the matrix. + + + + + Value at row 1 column 2 of the matrix. + + + + + Value at row 1 column 3 of the matrix. + + + + + Value at row 1 column 4 of the matrix. + + + + + Value at row 2 column 1 of the matrix. + + + + + Value at row 2 column 2 of the matrix. + + + + + Value at row 2 column 3 of the matrix. + + + + + Value at row 2 column 4 of the matrix. + + + + + Value at row 3 column 1 of the matrix. + + + + + Value at row 3 column 2 of the matrix. + + + + + Value at row 3 column 3 of the matrix. + + + + + Value at row 3 column 4 of the matrix. + + + + + Value at row 4 column 1 of the matrix. + + + + + Value at row 4 column 2 of the matrix. + + + + + Value at row 4 column 3 of the matrix. + + + + + Value at row 4 column 4 of the matrix. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value to assign at row 1 column 1 of the matrix. + The value to assign at row 1 column 2 of the matrix. + The value to assign at row 1 column 3 of the matrix. + The value to assign at row 1 column 4 of the matrix. + The value to assign at row 2 column 1 of the matrix. + The value to assign at row 2 column 2 of the matrix. + The value to assign at row 2 column 3 of the matrix. + The value to assign at row 2 column 4 of the matrix. + The value to assign at row 3 column 1 of the matrix. + The value to assign at row 3 column 2 of the matrix. + The value to assign at row 3 column 3 of the matrix. + The value to assign at row 3 column 4 of the matrix. + The value to assign at row 4 column 1 of the matrix. + The value to assign at row 4 column 2 of the matrix. + The value to assign at row 4 column 3 of the matrix. + The value to assign at row 4 column 4 of the matrix. + + + + Initializes a new instance of the struct. + + The values to assign to the components of the matrix. This must be an array with sixteen elements. + Thrown when is null. + Thrown when contains more or less than sixteen elements. + + + + Calculates the determinant of the matrix. + + The determinant of the matrix. + + + + Inverts the matrix. + + + + + Transposes the matrix. + + + + + Orthogonalizes the specified matrix. + + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the matrix will be orthogonal to any other given row in the + matrix. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified matrix. + + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Decomposes a matrix into an orthonormalized matrix Q and a right triangular matrix R. + + When the method completes, contains the orthonormalized matrix of the decomposition. + When the method completes, contains the right triangular matrix of the decomposition. + + + + Decomposes a matrix into a lower triangular matrix L and an orthonormalized matrix Q. + + When the method completes, contains the lower triangular matrix of the decomposition. + When the method completes, contains the orthonormalized matrix of the decomposition. + + + + Decomposes a matrix into a scale, rotation, and translation. + + When the method completes, contains the scaling component of the decomposed matrix. + When the method completes, contains the rotation component of the decomposed matrix. + When the method completes, contains the translation component of the decomposed matrix. + + This method is designed to decompose an SRT transformation matrix only. + + + + + Decomposes a uniform scale matrix into a scale, rotation, and translation. + A uniform scale matrix has the same scale in every axis. + + When the method completes, contains the scaling component of the decomposed matrix. + When the method completes, contains the rotation component of the decomposed matrix. + When the method completes, contains the translation component of the decomposed matrix. + + This method is designed to decompose only an SRT transformation matrix that has the same scale in every axis. + + + + + Exchanges two rows in the matrix. + + The first row to exchange. This is an index of the row starting at zero. + The second row to exchange. This is an index of the row starting at zero. + + + + Exchanges two columns in the matrix. + + The first column to exchange. This is an index of the column starting at zero. + The second column to exchange. This is an index of the column starting at zero. + + + + Creates an array containing the elements of the matrix. + + A sixteen-element array containing the components of the matrix. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + When the method completes, contains the sum of the two matrices. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + The sum of the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + When the method completes, contains the difference between the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Determines the quotient of two matrices. + + The first matrix to divide. + The second matrix to divide. + When the method completes, contains the quotient of the two matrices. + + + + Determines the quotient of two matrices. + + The first matrix to divide. + The second matrix to divide. + The quotient of the two matrices. + + + + Performs the exponential operation on a matrix. + + The matrix to perform the operation on. + The exponent to raise the matrix to. + When the method completes, contains the exponential matrix. + Thrown when the is negative. + + + + Performs the exponential operation on a matrix. + + The matrix to perform the operation on. + The exponent to raise the matrix to. + The exponential matrix. + Thrown when the is negative. + + + + Negates a matrix. + + The matrix to be negated. + When the method completes, contains the negated matrix. + + + + Negates a matrix. + + The matrix to be negated. + The negated matrix. + + + + Performs a linear interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two matrices. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two matrices. + + + + Performs a cubic interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two matrices. + + + + Calculates the transpose of the specified matrix. + + The matrix whose transpose is to be calculated. + When the method completes, contains the transpose of the specified matrix. + + + + Calculates the transpose of the specified matrix. + + The matrix whose transpose is to be calculated. + When the method completes, contains the transpose of the specified matrix. + + + + Calculates the transpose of the specified matrix. + + The matrix whose transpose is to be calculated. + The transpose of the specified matrix. + + + + Calculates the inverse of the specified matrix. + + The matrix whose inverse is to be calculated. + When the method completes, contains the inverse of the specified matrix. + + + + Calculates the inverse of the specified matrix. + + The matrix whose inverse is to be calculated. + The inverse of the specified matrix. + + + + Orthogonalizes the specified matrix. + + The matrix to orthogonalize. + When the method completes, contains the orthogonalized matrix. + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the matrix will be orthogonal to any other given row in the + matrix. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthogonalizes the specified matrix. + + The matrix to orthogonalize. + The orthogonalized matrix. + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the matrix will be orthogonal to any other given row in the + matrix. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified matrix. + + The matrix to orthonormalize. + When the method completes, contains the orthonormalized matrix. + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified matrix. + + The matrix to orthonormalize. + The orthonormalized matrix. + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Brings the matrix into upper triangular form using elementary row operations. + + The matrix to put into upper triangular form. + When the method completes, contains the upper triangular matrix. + + If the matrix is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into upper triangular form using elementary row operations. + + The matrix to put into upper triangular form. + The upper triangular matrix. + + If the matrix is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into lower triangular form using elementary row operations. + + The matrix to put into lower triangular form. + When the method completes, contains the lower triangular matrix. + + If the matrix is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into lower triangular form using elementary row operations. + + The matrix to put into lower triangular form. + The lower triangular matrix. + + If the matrix is not invertible (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into row echelon form using elementary row operations; + + The matrix to put into row echelon form. + When the method completes, contains the row echelon form of the matrix. + + + + Brings the matrix into row echelon form using elementary row operations; + + The matrix to put into row echelon form. + When the method completes, contains the row echelon form of the matrix. + + + + Brings the matrix into reduced row echelon form using elementary row operations. + + The matrix to put into reduced row echelon form. + The fifth column of the matrix. + When the method completes, contains the resultant matrix after the operation. + When the method completes, contains the resultant fifth column of the matrix. + + The fifth column is often called the augmented part of the matrix. This is because the fifth + column is really just an extension of the matrix so that there is a place to put all of the + non-zero components after the operation is complete. + Often times the resultant matrix will the identity matrix or a matrix similar to the identity + matrix. Sometimes, however, that is not possible and numbers other than zero and one may appear. + This method can be used to solve systems of linear equations. Upon completion of this method, + the will contain the solution for the system. It is up to the user + to analyze both the input and the result to determine if a solution really exists. + + + + + Creates a left-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + When the method completes, contains the created billboard matrix. + + + + Creates a left-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + The created billboard matrix. + + + + Creates a right-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + When the method completes, contains the created billboard matrix. + + + + Creates a right-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + The created billboard matrix. + + + + Creates a left-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at matrix. + + + + Creates a left-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at matrix. + + + + Creates a right-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at matrix. + + + + Creates a right-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at matrix. + + + + Creates a left-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Builds a matrix that can be used to reflect vectors about a plane. + + The plane for which the reflection occurs. This parameter is assumed to be normalized. + When the method completes, contains the reflection matrix. + + + + Builds a matrix that can be used to reflect vectors about a plane. + + The plane for which the reflection occurs. This parameter is assumed to be normalized. + The reflection matrix. + + + + Creates a matrix that flattens geometry into a shadow. + + The light direction. If the W component is 0, the light is directional light; if the + W component is 1, the light is a point light. + The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized. + When the method completes, contains the shadow matrix. + + + + Creates a matrix that flattens geometry into a shadow. + + The light direction. If the W component is 0, the light is directional light; if the + W component is 1, the light is a point light. + The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized. + The shadow matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + The created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + The created scaling matrix. + + + + Creates a matrix that uniformly scales along all three axis. + + The uniform scale that is applied along all axis. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that uniformly scales along all three axis. + + The uniform scale that is applied along all axis. + The created scaling matrix. + + + + Creates a matrix that rotates around the x-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around the x-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a matrix that rotates around the y-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around the y-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a matrix that rotates around the z-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around the z-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a matrix that rotates around an arbitrary axis. + + The axis around which to rotate. This parameter is assumed to be normalized. + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around an arbitrary axis. + + The axis around which to rotate. This parameter is assumed to be normalized. + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a rotation matrix from a quaternion. + + The quaternion to use to build the matrix. + The created rotation matrix. + + + + Creates a rotation matrix from a quaternion. + + The quaternion to use to build the matrix. + The created rotation matrix. + + + + Creates a rotation matrix with a specified yaw, pitch, and roll. + + Yaw around the y-axis, in radians. + Pitch around the x-axis, in radians. + Roll around the z-axis, in radians. + When the method completes, contains the created rotation matrix. + + + + Creates a rotation matrix with a specified yaw, pitch, and roll. + + Yaw around the y-axis, in radians. + Pitch around the x-axis, in radians. + Roll around the z-axis, in radians. + The created rotation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for all three coordinate planes. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for all three coordinate planes. + The created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + The created translation matrix. + + + + Creates a skew/shear matrix by means of a translation vector, a rotation vector, and a rotation angle. + shearing is performed in the direction of translation vector, where translation vector and rotation vector define the shearing plane. + The effect is such that the skewed rotation vector has the specified angle with rotation itself. + + The rotation angle. + The rotation vector + The translation vector + Contains the created skew/shear matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created transformation matrix. + + + + Creates a transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created transformation matrix. + + + + Creates a 2D transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created transformation matrix. + + + + Creates a 2D transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created transformation matrix. + + + + Adds two matrices. + + The first matrix to add. + The second matrix to add. + The sum of the two matrices. + + + + Assert a matrix (return it unchanged). + + The matrix to assert (unchanged). + The asserted (unchanged) matrix. + + + + Subtracts two matrices. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matrices. + + + + Negates a matrix. + + The matrix to negate. + The negated matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Multiplies two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Divides two matrices. + + The first matrix to divide. + The second matrix to divide. + The quotient of the two matrices. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Gets or sets the up of the matrix; that is M21, M22, and M23. + + + + + Gets or sets the down of the matrix; that is -M21, -M22, and -M23. + + + + + Gets or sets the right of the matrix; that is M11, M12, and M13. + + + + + Gets or sets the left of the matrix; that is -M11, -M12, and -M13. + + + + + Gets or sets the forward of the matrix; that is -M31, -M32, and -M33. + + + + + Gets or sets the backward of the matrix; that is M31, M32, and M33. + + + + + Gets or sets the first row in the matrix; that is M11, M12, M13, and M14. + + + + + Gets or sets the second row in the matrix; that is M21, M22, M23, and M24. + + + + + Gets or sets the third row in the matrix; that is M31, M32, M33, and M34. + + + + + Gets or sets the fourth row in the matrix; that is M41, M42, M43, and M44. + + + + + Gets or sets the first column in the matrix; that is M11, M21, M31, and M41. + + + + + Gets or sets the second column in the matrix; that is M12, M22, M32, and M42. + + + + + Gets or sets the third column in the matrix; that is M13, M23, M33, and M43. + + + + + Gets or sets the fourth column in the matrix; that is M14, M24, M34, and M44. + + + + + Gets or sets the translation of the matrix; that is M41, M42, and M43. + + + + + Gets or sets the scale of the matrix; that is M11, M22, and M33. + + + + + Gets a value indicating whether this instance is an identity matrix. + + + true if this instance is an identity matrix; otherwise, false. + + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The zero-based index of the component to access. + The value of the component at the specified index. + Thrown when the is out of the range [0, 15]. + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The row of the matrix to access. + The column of the matrix to access. + The value of the component at the specified index. + Thrown when the or is out of the range [0, 3]. + + + + Generic sound input stream supporting WAV (Pcm,Float), ADPCM, xWMA sound file formats. + + + + + Initializes a new instance of the class. + + The sound stream. + + + + Initializes the specified stream. + + The stream. + + + + Converts this stream to a DataStream by loading all the data from the source stream. + + + + + + Performs an implicit conversion from to . + + The stream. + + The result of the conversion. + + + + + When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + + An I/O error occurs. + + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + + An I/O error occurs. + + + + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + + An I/O error occurs. + + + + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source. + The zero-based byte offset in at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + + The sum of and is larger than the buffer length. + + + + is null. + + + + or is negative. + + + + An I/O error occurs. + + + + The stream does not support reading. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies bytes from to the current stream. + The zero-based byte offset in at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + The sum of and is greater than the buffer length. + + + + is null. + + + + or is negative. + + + + An I/O error occurs. + + + + The stream does not support writing. + + + + Methods were called after the stream was closed. + + + + + Gets the decoded packets info. + + + This property is only valid for XWMA stream. + + + + Gets the wave format of this instance. + + + + + When overridden in a derived class, gets a value indicating whether the current stream supports reading. + + true if the stream supports reading; otherwise, false. + + + + + When overridden in a derived class, gets a value indicating whether the current stream supports seeking. + + true if the stream supports seeking; otherwise, false. + + + + + When overridden in a derived class, gets a value indicating whether the current stream supports writing. + + true if the stream supports writing; otherwise, false. + + + + + When overridden in a derived class, gets or sets the position within the current stream. + + + The current position within the stream. + + + + An I/O error occurs. + + + + The stream does not support seeking. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + + + + A class derived from Stream does not support seeking. + + + + Methods were called after the stream was closed. + + + + + WaveFormatAdpcm + http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.xaudio2.adpcmwaveformat%28v=vs.85%29.aspx + Additional documentation: http://icculus.org/SDL_sound/downloads/external_documentation/wavecomp.htm + + WAVEFORMATADPCM + + + + Represents a Wave file format + + WAVEFORMATEX + + + format type + + + number of channels + + + sample rate + + + for buffer estimation + + + block size of data + + + number of bits per sample of mono data + + + number of following bytes + + + + Creates a new PCM 44.1Khz stereo 16 bit format + + + + + Creates a new 16 bit wave format with the specified sample + rate and channel count + + Sample Rate + Number of channels + + + + Gets the size of a wave buffer equivalent to the latency in milliseconds. + + The milliseconds. + + + + + Creates a WaveFormat with custom members + + The encoding + Sample Rate + Number of channels + Average Bytes Per Second + Block Align + Bits Per Sample + + + + + Creates an A-law wave format + + Sample Rate + Number of Channels + Wave Format + + + + Creates a Mu-law wave format + + Sample Rate + Number of Channels + Wave Format + + + + Creates a new PCM format with the specified sample rate, bit depth and channels + + + + + Creates a new 32 bit IEEE floating point wave format + + sample rate + number of channels + + + + Helper function to retrieve a WaveFormat structure from a pointer + + Buffer to the WaveFormat rawdata + WaveFormat structure + + + + Helper function to retrieve a WaveFormat structure from a pointer + + Pointer to the WaveFormat rawdata + WaveFormat structure + + + + Helper function to marshal WaveFormat to an IntPtr + + WaveFormat + IntPtr to WaveFormat structure (needs to be freed by callee) + + + + Reads a new WaveFormat object from a stream + + A binary reader that wraps the stream + + + + Reports this WaveFormat as a string + + String describing the wave format + + + + Compares with another WaveFormat object + + Object to compare to + True if the objects are the same + + + + Provides a hash code for this WaveFormat + + A hash code + + + + Reads or writes data from/to the given binary serializer. + + The binary serializer. + + + + Returns the encoding type used + + + + + Returns the number of channels (1=mono,2=stereo etc) + + + + + Returns the sample rate (samples per second) + + + + + Returns the average number of bytes used per second + + + + + Returns the block alignment + + + + + Returns the number of bits per sample (usually 16 or 32, sometimes 24 or 8) + Can be 0 for some codecs + + + + + Returns the number of extra bytes used by this waveformat. Often 0, + except for compressed formats which store extra data after the WAVEFORMATEX header + + + + number of following bytes + + + format type + + + number of channels + + + sample rate + + + for buffer estimation + + + block size of data + + + number of bits per sample of mono data + + + + Parameterless constructor for marshalling + + + + + Creates a new WaveFormatAdpcm for MicrosoftADPCM + + The rate. + The channels. + The block align. If 0, then 256 for [0, 11KHz], 512 for ]11KHz, 22Khz], 1024 for ]22Khz, +inf] + + + + Gets or sets the samples per block. + + + The samples per block. + + + + + Gets or sets the coefficients. + + + The coefficients. + + + + + Gets or sets the coefficients. + + + The coefficients. + + + + + A FourCC descriptor. + + + + + Empty FourCC. + + + + + Initializes a new instance of the struct. + + The fourCC value as a string . + + + + Initializes a new instance of the struct. + + The byte1. + The byte2. + The byte3. + The byte4. + + + + Initializes a new instance of the struct. + + The fourCC value as an uint. + + + + Initializes a new instance of the struct. + + The fourCC value as an int. + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + A chunk of a Riff stream. + + + + + Initializes a new instance of the class. + + The stream holding this chunk + The type. + The size. + The data offset. + if set to true [is list]. + if set to true [is header]. + + + + Gets the raw data contained in this chunk. + + + + + + Gets structured data contained in this chunk. + + The type of the data to return + + A structure filled with the chunk data + + + + + Gets structured data contained in this chunk. + + The type of the data to return + A structure filled with the chunk data + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the type. + + + + + Gets the of this chunk. + + + + + Gets the size of the data embedded by this chunk. + + + + + Gets the position of the data embedded by this chunk relative to the stream. + + + + + Gets or sets a value indicating whether this instance is a list chunk. + + + true if this instance is list; otherwise, false. + + + + + Gets a value indicating whether this instance is a header chunk. + + + true if this instance is a header; otherwise, false. + + + + + Riff chunk enumerator. + + + + + Initializes a new instance of the class. + + The input. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + The collection was modified after the enumerator was created. + + + + + Ascends to the outer chunk. + + + + + Descends to the current chunk. + + + + + Gets all chunks. + + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Gets the current stack of chunks. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Helper class for Speaker mask. + + + + + Counts the channels from a speaker mask. + + The speakers mask. + + + + + WaveFormatExtensible + http://www.microsoft.com/whdc/device/audio/multichaud.mspx + + WAVEFORMATEXTENSIBLE + + + + Guid of the subformat. + + + + + Speaker configuration + + + + + Parameterless constructor for marshalling + + + + + Creates a new WaveFormatExtensible for PCM or IEEE + + + + + String representation + + + + + The namespace contains fundamental classes used by SharpDX. + + + + + A general purpose tag attribute. + + + + + Initializes a new instance of class. + + + + + + Gets the value. + + + + + Overrides in order to provide for Win8 Modern App. + + + + + Provides a basic implementation to replace (not available on Win8 Modern App). + + + + + The namespace provides missing ASCIIEncoding for Win8 Modern platform. + + + + + This provides timing information similar to but an update occurring only on a method. + + + + + Initializes a new instance of the class. + + + + + Resets this instance. is set to zero. + + + + + Resumes this instance, only if a call to has been already issued. + + + + + Update the and , + + + This method must be called on a regular basis at every *tick*. + + + + + Pauses this instance. + + + + + Converts a raw time to a . + + The delta. + The . + + + + Gets the total time elapsed since the last reset or when this timer was created. + + + + + Gets the elapsed adjusted time since the previous call to taking into account time. + + + + + Gets the elapsed time since the previous call to . + + + + + Gets a value indicating whether this instance is paused. + + true if this instance is paused; otherwise, false. + + + + Defines the viewport dimensions. + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Width dimension of the viewport. + + + + + Height dimension of the viewport. + + + + + Gets or sets the minimum depth of the clip volume. + + + + + Gets or sets the maximum depth of the clip volume. + + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + The minimum depth of the clip volume. + The maximum depth of the clip volume. + + + + Initializes a new instance of the struct. + + A bounding box that defines the location and size of the viewport in a render target. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified object is equal to this instance. + + The object to compare with this instance. + + true if the specified object is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Retrieves a string representation of this object. + + A that represents this instance. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + The projected vector. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + A combined WorldViewProjection matrix. + The projected vector. + + + + Converts a screen space point into a corresponding point in world space. + + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + The unprojected Vector. + + + + Converts a screen space point into a corresponding point in world space. + + The vector to project. + An inverted combined WorldViewProjection matrix. + The unprojected vector. + + + + Gets the size of this resource. + + The bounds. + + + + Gets the aspect ratio used by the viewport. + + The aspect ratio. + + + + Internal class to interact with Native Message + + + + + Represents a plane in three dimensional space. + + + + + The normal vector of the plane. + + + + + The distance of the plane along its normal from the origin. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The X component of the normal. + The Y component of the normal. + The Z component of the normal. + The distance of the plane along its normal from the origin. + + + + Initializes a new instance of the class. + + Any point that lies along the plane. + The normal vector to the plane. + + + + Initializes a new instance of the struct. + + The normal of the plane. + The distance of the plane along its normal from the origin + + + + Initializes a new instance of the struct. + + First point of a triangle defining the plane. + Second point of a triangle defining the plane. + Third point of a triangle defining the plane. + + + + Initializes a new instance of the struct. + + The values to assign to the A, B, C, and D components of the plane. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Changes the coefficients of the normal vector of the plane to make it of unit length. + + + + + Creates an array containing the elements of the plane. + + A four-element array containing the components of the plane. + + + + Determines if there is an intersection between the current object and a point. + + The point to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + When the method completes, contains the line of intersection + as a , or a zero ray if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Scales the plane by the given scaling factor. + + The plane to scale. + The amount by which to scale the plane. + When the method completes, contains the scaled plane. + + + + Scales the plane by the given scaling factor. + + The plane to scale. + The amount by which to scale the plane. + The scaled plane. + + + + Calculates the dot product of the specified vector and plane. + + The source plane. + The source vector. + When the method completes, contains the dot product of the specified plane and vector. + + + + Calculates the dot product of the specified vector and plane. + + The source plane. + The source vector. + The dot product of the specified plane and vector. + + + + Calculates the dot product of a specified vector and the normal of the plane plus the distance value of the plane. + + The source plane. + The source vector. + When the method completes, contains the dot product of a specified vector and the normal of the Plane plus the distance value of the plane. + + + + Calculates the dot product of a specified vector and the normal of the plane plus the distance value of the plane. + + The source plane. + The source vector. + The dot product of a specified vector and the normal of the Plane plus the distance value of the plane. + + + + Calculates the dot product of the specified vector and the normal of the plane. + + The source plane. + The source vector. + When the method completes, contains the dot product of the specified vector and the normal of the plane. + + + + Calculates the dot product of the specified vector and the normal of the plane. + + The source plane. + The source vector. + The dot product of the specified vector and the normal of the plane. + + + + Changes the coefficients of the normal vector of the plane to make it of unit length. + + The source plane. + When the method completes, contains the normalized plane. + + + + Changes the coefficients of the normal vector of the plane to make it of unit length. + + The source plane. + The normalized plane. + + + + Transforms a normalized plane by a quaternion rotation. + + The normalized source plane. + The quaternion rotation. + When the method completes, contains the transformed plane. + + + + Transforms a normalized plane by a quaternion rotation. + + The normalized source plane. + The quaternion rotation. + The transformed plane. + + + + Transforms an array of normalized planes by a quaternion rotation. + + The array of normalized planes to transform. + The quaternion rotation. + Thrown when is null. + + + + Transforms a normalized plane by a matrix. + + The normalized source plane. + The transformation matrix. + When the method completes, contains the transformed plane. + + + + Transforms a normalized plane by a matrix. + + The normalized source plane. + The transformation matrix. + When the method completes, contains the transformed plane. + + + + Transforms an array of normalized planes by a matrix. + + The array of normalized planes to transform. + The transformation matrix. + Thrown when is null. + + + + Scales a plane by the given value. + + The amount by which to scale the plane. + The plane to scale. + The scaled plane. + + + + Scales a plane by the given value. + + The plane to scale. + The amount by which to scale the plane. + The scaled plane. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Gets or sets the component at the specified index. + + The value of the A, B, C, or D component, depending on the index. + The index of the component to access. Use 0 for the A component, 1 for the B component, 2 for the C component, and 3 for the D component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Represents a four dimensional mathematical quaternion. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + A with all of its components set to one. + + + + + The identity (0, 0, 0, 1). + + + + + The X component of the quaternion. + + + + + The Y component of the quaternion. + + + + + The Z component of the quaternion. + + + + + The W component of the quaternion. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the components. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X, Y, and Z components. + Initial value for the W component of the quaternion. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X and Y components. + Initial value for the Z component of the quaternion. + Initial value for the W component of the quaternion. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the quaternion. + Initial value for the Y component of the quaternion. + Initial value for the Z component of the quaternion. + Initial value for the W component of the quaternion. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the quaternion. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Conjugates the quaternion. + + + + + Conjugates and renormalizes the quaternion. + + + + + Calculates the length of the quaternion. + + The length of the quaternion. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the quaternion. + + The squared length of the quaternion. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the quaternion into a unit quaternion. + + + + + Creates an array containing the elements of the quaternion. + + A four-element array containing the components of the quaternion. + + + + Adds two quaternions. + + The first quaternion to add. + The second quaternion to add. + When the method completes, contains the sum of the two quaternions. + + + + Adds two quaternions. + + The first quaternion to add. + The second quaternion to add. + The sum of the two quaternions. + + + + Subtracts two quaternions. + + The first quaternion to subtract. + The second quaternion to subtract. + When the method completes, contains the difference of the two quaternions. + + + + Subtracts two quaternions. + + The first quaternion to subtract. + The second quaternion to subtract. + The difference of the two quaternions. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + When the method completes, contains the scaled quaternion. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + The scaled quaternion. + + + + Multiplies a quaternion by another. + + The first quaternion to multiply. + The second quaternion to multiply. + When the method completes, contains the multiplied quaternion. + + + + Multiplies a quaternion by another. + + The first quaternion to multiply. + The second quaternion to multiply. + The multiplied quaternion. + + + + Reverses the direction of a given quaternion. + + The quaternion to negate. + When the method completes, contains a quaternion facing in the opposite direction. + + + + Reverses the direction of a given quaternion. + + The quaternion to negate. + A quaternion facing in the opposite direction. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains a new containing the 4D Cartesian coordinates of the specified point. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 4D Cartesian coordinates of the specified point. + + + + Conjugates a quaternion. + + The quaternion to conjugate. + When the method completes, contains the conjugated quaternion. + + + + Conjugates a quaternion. + + The quaternion to conjugate. + The conjugated quaternion. + + + + Calculates the dot product of two quaternions. + + First source quaternion. + Second source quaternion. + When the method completes, contains the dot product of the two quaternions. + + + + Calculates the dot product of two quaternions. + + First source quaternion. + Second source quaternion. + The dot product of the two quaternions. + + + + Exponentiates a quaternion. + + The quaternion to exponentiate. + When the method completes, contains the exponentiated quaternion. + + + + Exponentiates a quaternion. + + The quaternion to exponentiate. + The exponentiated quaternion. + + + + Conjugates and renormalizes the quaternion. + + The quaternion to conjugate and renormalize. + When the method completes, contains the conjugated and renormalized quaternion. + + + + Conjugates and renormalizes the quaternion. + + The quaternion to conjugate and renormalize. + The conjugated and renormalized quaternion. + + + + Performs a linear interpolation between two quaternions. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two quaternions. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two quaternion. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two quaternions. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Calculates the natural logarithm of the specified quaternion. + + The quaternion whose logarithm will be calculated. + When the method completes, contains the natural logarithm of the quaternion. + + + + Calculates the natural logarithm of the specified quaternion. + + The quaternion whose logarithm will be calculated. + The natural logarithm of the quaternion. + + + + Converts the quaternion into a unit quaternion. + + The quaternion to normalize. + When the method completes, contains the normalized quaternion. + + + + Converts the quaternion into a unit quaternion. + + The quaternion to normalize. + The normalized quaternion. + + + + Creates a quaternion given a rotation and an axis. + + The axis of rotation. + The angle of rotation. + When the method completes, contains the newly created quaternion. + + + + Creates a quaternion given a rotation and an axis. + + The axis of rotation. + The angle of rotation. + The newly created quaternion. + + + + Creates a quaternion given a rotation matrix. + + The rotation matrix. + When the method completes, contains the newly created quaternion. + + + + Creates a quaternion given a rotation matrix. + + The rotation matrix. + When the method completes, contains the newly created quaternion. + + + + Creates a left-handed, look-at quaternion. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at quaternion. + + + + Creates a left-handed, look-at quaternion. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at quaternion. + + + + Creates a left-handed, look-at quaternion. + + The camera's forward direction. + The camera's up vector. + When the method completes, contains the created look-at quaternion. + + + + Creates a left-handed, look-at quaternion. + + The camera's forward direction. + The camera's up vector. + The created look-at quaternion. + + + + Creates a right-handed, look-at quaternion. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at quaternion. + + + + Creates a right-handed, look-at quaternion. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at quaternion. + + + + Creates a right-handed, look-at quaternion. + + The camera's forward direction. + The camera's up vector. + When the method completes, contains the created look-at quaternion. + + + + Creates a right-handed, look-at quaternion. + + The camera's forward direction. + The camera's up vector. + The created look-at quaternion. + + + + Creates a left-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + When the method completes, contains the created billboard quaternion. + + + + Creates a left-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + The created billboard quaternion. + + + + Creates a right-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + When the method completes, contains the created billboard quaternion. + + + + Creates a right-handed spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + The created billboard quaternion. + + + + Creates a quaternion given a rotation matrix. + + The rotation matrix. + The newly created quaternion. + + + + Creates a quaternion given a yaw, pitch, and roll value. + + The yaw of rotation. + The pitch of rotation. + The roll of rotation. + When the method completes, contains the newly created quaternion. + + + + Creates a quaternion given a yaw, pitch, and roll value. + + The yaw of rotation. + The pitch of rotation. + The roll of rotation. + The newly created quaternion. + + + + Interpolates between two quaternions, using spherical linear interpolation. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the spherical linear interpolation of the two quaternions. + + + + Interpolates between two quaternions, using spherical linear interpolation. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + The spherical linear interpolation of the two quaternions. + + + + Interpolates between quaternions, using spherical quadrangle interpolation. + + First source quaternion. + Second source quaternion. + Third source quaternion. + Fourth source quaternion. + Value between 0 and 1 indicating the weight of interpolation. + When the method completes, contains the spherical quadrangle interpolation of the quaternions. + + + + Interpolates between quaternions, using spherical quadrangle interpolation. + + First source quaternion. + Second source quaternion. + Third source quaternion. + Fourth source quaternion. + Value between 0 and 1 indicating the weight of interpolation. + The spherical quadrangle interpolation of the quaternions. + + + + Sets up control points for spherical quadrangle interpolation. + + First source quaternion. + Second source quaternion. + Third source quaternion. + Fourth source quaternion. + An array of three quaternions that represent control points for spherical quadrangle interpolation. + + + + Adds two quaternions. + + The first quaternion to add. + The second quaternion to add. + The sum of the two quaternions. + + + + Subtracts two quaternions. + + The first quaternion to subtract. + The second quaternion to subtract. + The difference of the two quaternions. + + + + Reverses the direction of a given quaternion. + + The quaternion to negate. + A quaternion facing in the opposite direction. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + The scaled quaternion. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + The scaled quaternion. + + + + Multiplies a quaternion by another. + + The first quaternion to multiply. + The second quaternion to multiply. + The multiplied quaternion. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Gets a value indicating whether this instance is equivalent to the identity quaternion. + + + true if this instance is an identity quaternion; otherwise, false. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets the angle of the quaternion. + + The quaternion's angle. + + + + Gets the axis components of the quaternion. + + The axis components of the quaternion. + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Represents a three dimensional line based on a point in space and a direction. + + + + + The position in three dimensional space where the ray starts. + + + + + The normalized direction in which the ray points. + + + + + Initializes a new instance of the struct. + + The position in three dimensional space of the origin of the ray. + The normalized direction of the ray. + + + + Determines if there is an intersection between the current object and a point. + + The point to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Calculates a world space from 2d screen coordinates. + + X coordinate on 2d screen. + Y coordinate on 2d screen. + . + Transformation . + Resulting . + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Define a Rectangle. This structure is slightly different from System.Drawing.Rectangle as it is + internally storing Left,Top,Right,Bottom instead of Left,Top,Width,Height. + + + + + An empty rectangle. + + + + + Initializes a new instance of the struct. + + The left. + The top. + The width. + The height. + + + Changes the position of the rectangle. + The values to adjust the position of the rectangle by. + + + Changes the position of the rectangle. + Change in the x-position. + Change in the y-position. + + + Pushes the edges of the rectangle out by the horizontal and vertical values specified. + Value to push the sides out by. + Value to push the top and bottom out by. + + + Determines whether this rectangle contains a specified point represented by its x- and y-coordinates. + The x-coordinate of the specified point. + The y-coordinate of the specified point. + + + Determines whether this rectangle contains a specified Point. + The Point to evaluate. + + + Determines whether this rectangle contains a specified Point. + The Point to evaluate. + [OutAttribute] true if the specified Point is contained within this rectangle; false otherwise. + + + Determines whether this rectangle entirely contains a specified rectangle. + The rectangle to evaluate. + + + Determines whether this rectangle entirely contains a specified rectangle. + The rectangle to evaluate. + [OutAttribute] On exit, is true if this rectangle entirely contains the specified rectangle, or false if not. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + Determines whether a specified rectangle intersects with this rectangle. + The rectangle to evaluate. + + + + Determines whether a specified rectangle intersects with this rectangle. + + The rectangle to evaluate + [OutAttribute] true if the specified rectangle intersects with this one; false otherwise. + + + + Creates a rectangle defining the area where one rectangle overlaps with another rectangle. + + The first rectangle to compare. + The second rectangle to compare. + The intersection rectangle. + + + Creates a rectangle defining the area where one rectangle overlaps with another rectangle. + The first rectangle to compare. + The second rectangle to compare. + [OutAttribute] The area where the two first parameters overlap. + + + + Creates a new rectangle that exactly contains two other rectangles. + + The first rectangle to contain. + The second rectangle to contain. + The union rectangle. + + + + Creates a new rectangle that exactly contains two other rectangles. + + The first rectangle to contain. + The second rectangle to contain. + [OutAttribute] The rectangle that must be the union of the first two rectangles. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Performs an implicit conversion to the structure. + + Performs direct converstion from int to float. + The source value. + The converted structure. + + + + + + + Gets or sets the left. + + The left. + + + + Gets or sets the top. + + The top. + + + + Gets or sets the right. + + The right. + + + + Gets or sets the bottom. + + The bottom. + + + + Gets or sets the X position. + + The X position. + + + + Gets or sets the Y position. + + The Y position. + + + + Gets or sets the width. + + The width. + + + + Gets or sets the height. + + The height. + + + + Gets or sets the location. + + + The location. + + + + + Gets the Point that specifies the center of the rectangle. + + + The center. + + + + + Gets a value that indicates whether the rectangle is empty. + + + true if [is empty]; otherwise, false. + + + + + Gets or sets the size of the rectangle. + + The size of the rectangle. + + + + Gets the position of the top-left corner of the rectangle. + + The top-left corner of the rectangle. + + + + Gets the position of the top-right corner of the rectangle. + + The top-right corner of the rectangle. + + + + Gets the position of the bottom-left corner of the rectangle. + + The bottom-left corner of the rectangle. + + + + Gets the position of the bottom-right corner of the rectangle. + + The bottom-right corner of the rectangle. + + + + Define a RectangleF. This structure is slightly different from System.Drawing.RectangleF as it is + internally storing Left,Top,Right,Bottom instead of Left,Top,Width,Height. + + + + + An empty rectangle. + + + + + An infinite rectangle. See remarks. + + + http://msdn.microsoft.com/en-us/library/windows/desktop/dd372261%28v=vs.85%29.aspx + Any properties that involve computations, like , or + may return incorrect results - . + + + + + Initializes a new instance of the struct. + + The left. + The top. + The width. + The height. + + + Changes the position of the rectangle. + The values to adjust the position of the rectangle by. + + + Changes the position of the rectangle. + The values to adjust the position of the rectangle by. + + + Changes the position of the rectangle. + Change in the x-position. + Change in the y-position. + + + Pushes the edges of the rectangle out by the horizontal and vertical values specified. + Value to push the sides out by. + Value to push the top and bottom out by. + + + Determines whether this rectangle contains a specified Point. + The Point to evaluate. + [OutAttribute] true if the specified Point is contained within this rectangle; false otherwise. + + + Determines whether this rectangle entirely contains a specified rectangle. + The rectangle to evaluate. + + + Determines whether this rectangle entirely contains a specified rectangle. + The rectangle to evaluate. + [OutAttribute] On exit, is true if this rectangle entirely contains the specified rectangle, or false if not. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + Determines whether a specified rectangle intersects with this rectangle. + The rectangle to evaluate. + + + + Determines whether a specified rectangle intersects with this rectangle. + + The rectangle to evaluate + [OutAttribute] true if the specified rectangle intersects with this one; false otherwise. + + + + Creates a rectangle defining the area where one rectangle overlaps with another rectangle. + + The first Rectangle to compare. + The second Rectangle to compare. + The intersection rectangle. + + + Creates a rectangle defining the area where one rectangle overlaps with another rectangle. + The first rectangle to compare. + The second rectangle to compare. + [OutAttribute] The area where the two first parameters overlap. + + + + Creates a new rectangle that exactly contains two other rectangles. + + The first rectangle to contain. + The second rectangle to contain. + The union rectangle. + + + + Creates a new rectangle that exactly contains two other rectangles. + + The first rectangle to contain. + The second rectangle to contain. + [OutAttribute] The rectangle that must be the union of the first two rectangles. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Performs an explicit conversion to structure. + + Performs direct float to int conversion, any fractional data is truncated. + The source value. + A converted structure. + + + + + + + Gets or sets the X position of the left edge. + + The left. + + + + Gets or sets the top. + + The top. + + + + Gets or sets the right. + + The right. + + + + Gets or sets the bottom. + + The bottom. + + + + Gets or sets the X position. + + The X position. + + + + Gets or sets the Y position. + + The Y position. + + + + Gets or sets the width. + + The width. + + + + Gets or sets the height. + + The height. + + + + Gets or sets the location. + + + The location. + + + + + Gets the Point that specifies the center of the rectangle. + + + The center. + + + + + Gets a value that indicates whether the rectangle is empty. + + + true if [is empty]; otherwise, false. + + + + + Gets or sets the size of the rectangle. + + The size of the rectangle. + + + + Gets the position of the top-left corner of the rectangle. + + The top-left corner of the rectangle. + + + + Gets the position of the top-right corner of the rectangle. + + The top-right corner of the rectangle. + + + + Gets the position of the bottom-left corner of the rectangle. + + The bottom-left corner of the rectangle. + + + + Gets the position of the bottom-right corner of the rectangle. + + The bottom-right corner of the rectangle. + + + + Result structure for COM methods. + + + + + Initializes a new instance of the struct. + + The HRESULT error code. + + + + Initializes a new instance of the struct. + + The HRESULT error code. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Checks the error. + + + + + Gets a from an . + + The exception + The associated result code + + + + Gets the result from win32 error. + + The win32Error. + A HRESULT. + + + + Result code Ok + + S_OK + + + + Result code False + + S_FALSE + + + + Result code Abort + + E_ABORT + + + + Result code AccessDenied + + E_ACCESSDENIED + + + + Result code Fail + + E_FAIL + + + + Result code Handle + + E_HANDLE + + + + Result code invalid argument + + E_INVALIDARG + + + + Result code no interface + + E_NOINTERFACE + + + + Result code not implemented + + E_NOTIMPL + + + + Result code out of memory + + E_OUTOFMEMORY + + + + Result code Invalid pointer + + E_POINTER + + + + Unexpected failure + + E_UNEXPECTED + + + + Result of a wait abandonned. + + WAIT_ABANDONED + + + + Result of a wait timeout. + + WAIT_TIMEOUT + + + + Gets the HRESULT error code. + + The HRESULT error code. + + + + Gets a value indicating whether this is success. + + true if success; otherwise, false. + + + + Gets a value indicating whether this is failure. + + true if failure; otherwise, false. + + + + The maximum number of bytes to which a pointer can point. Use for a count that must span the full range of a pointer. + Equivalent to Windows type SIZE_T. + + + + + An empty pointer size initialized to zero. + + + + + Initializes a new instance of the struct. + + The size. + + + + Default constructor. + + value to set + + + + Default constructor. + + value to set + + + + Default constructor. + + value to set + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Adds two sizes. + + The first size to add. + The second size to add. + The sum of the two sizes. + + + + Assert a size (return it unchanged). + + The size to assert (unchanged). + The asserted (unchanged) size. + + + + Subtracts two sizes. + + The first size to subtract. + The second size to subtract. + The difference of the two sizes. + + + + Reverses the direction of a given size. + + The size to negate. + A size facing in the opposite direction. + + + + Scales a size by the given value. + + The size to scale. + The amount by which to scale the size. + The scaled size. + + + + Scales a size by the given value. + + The size to scale. + The amount by which to scale the size. + The scaled size. + + + + Scales a size by the given value. + + The size to scale. + The amount by which to scale the size. + The scaled size. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from void* to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to void*. + + The value. + The result of the conversion. + + + + A Delegate to get a property value from an object. + + Type of the getter. + The obj to get the property from. + The value to get. + + + + A Delegate to set a property value to an object. + + Type of the setter. + The obj to set the property from. + The value to set. + + + + Utility class. + + + + + Native memcpy. + + The destination memory location. + The source memory location. + The byte count. + + + + Compares two block of memory. + + The pointer to compare from. + The pointer to compare against. + The size in bytes to compare. + true if the buffers are equivalent; otherwise, false. + + + + Clears the memory. + + The dest. + The value. + The size in bytes to clear. + + + + Return the sizeof a struct from a CLR. Equivalent to sizeof operator but works on generics too. + + A struct to evaluate. + Size of this struct. + + + + Return the sizeof an array of struct. Equivalent to sizeof operator but works on generics too. + + A struct. + The array of struct to evaluate. + Size in bytes of this array of struct. + + + + Pins the specified source and call an action with the pinned pointer. + + The type of the structure to pin. + The source. + The pin action to perform on the pinned pointer. + + + + Pins the specified source and call an action with the pinned pointer. + + The type of the structure to pin. + The source array. + The pin action to perform on the pinned pointer. + + + + Converts a structured array to an equivalent byte array. + + The type of source array. + The source array. + Converted byte array. + + + + Swaps the value between two references. + + Type of a data to swap. + The left value. + The right value. + + + + Reads the specified T data from a memory location. + + Type of a data to read. + Memory location to read from. + The data read from the memory location. + + + + Reads the specified T data from a memory location. + + Type of a data to read. + Memory location to read from. + The data write to. + source pointer + sizeof(T). + + + + Reads the specified T data from a memory location. + + Type of a data to read. + Memory location to read from. + The data write to. + source pointer + sizeof(T). + + + + Reads the specified T data from a memory location. + + Type of a data to read. + Memory location to read from. + The data write to. + source pointer + sizeof(T). + + + + Reads the specified array T[] data from a memory location. + + Type of a data to read. + Memory location to read from. + The data write to. + The offset in the array to write to. + The number of T element to read from the memory location. + source pointer + sizeof(T) * count. + + + + Writes the specified T data to a memory location. + + Type of a data to write. + Memory location to write to. + The data to write. + destination pointer + sizeof(T). + + + + Writes the specified T data to a memory location. + + Type of a data to write. + Memory location to write to. + The data to write. + destination pointer + sizeof(T). + + + + Writes the specified array T[] data to a memory location. + + Type of a data to write. + Memory location to write to. + The array of T data to write. + The offset in the array to read from. + The number of T element to write to the memory location. + destination pointer + sizeof(T) * count. + + + + Converts bool array to integer pointers array. + + The bool array. + The destination array of int pointers. + + + + Converts bool array to array. + + The bool array. + Converted array of . + + + + Converts integer pointer array to bool array. + + The array of integer pointers. + Array size. + Converted array of bool. + + + + Converts array to bool array. + + The array. + Converted array of bool. + + + + Gets the from a type. + + The type. + The guid associated with this type. + + + + Determines whether a given type inherits from a generic type. + + Type of the class to check if it inherits from generic type. + Type of the generic. + true if [is assignable to generic type] [the specified given type]; otherwise, false. + + + + Allocate an aligned memory buffer. + + Size of the buffer to allocate. + Alignment, 16 bytes by default. + A pointer to a buffer aligned. + + To free this buffer, call . + + + + + Allocate an aligned memory buffer and clear it with a specified value (0 by default). + + Size of the buffer to allocate. + Default value used to clear the buffer. + Alignment, 16 bytes by default. + A pointer to a buffer aligned. + + To free this buffer, call . + + + + + Determines whether the specified memory pointer is aligned in memory. + + The memory pointer. + The align. + true if the specified memory pointer is aligned in memory; otherwise, false. + + + + Allocate an aligned memory buffer. + + A pointer to a buffer aligned. + + The buffer must have been allocated with . + + + + + Converts a pointer to a null-terminating string up to maxLength characters to a .Net string. + + The pointer to an ANSI null string. + Maximum length of the string. + The converted string. + + + + Converts a pointer to a null-terminating string up to maxLength characters to a .Net string. + + The pointer to an Unicode null string. + Maximum length of the string. + The converted string. + + + + Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies. + + A managed string to be copied. + The address, in unmanaged memory, to where s was copied, or IntPtr.Zero if s is null. + + + + Copies the contents of a managed String into unmanaged memory. + + A managed string to be copied. + The address, in unmanaged memory, to where s was copied, or IntPtr.Zero if s is null. + + + + Copies the contents of a managed String into unmanaged memory using + + A managed string to be copied. + The address, in unmanaged memory, to where s was copied, or IntPtr.Zero if s is null. + + + + Gets the IUnknown from object. Similar to but accept null object + by returning an IntPtr.Zero IUnknown pointer. + + The managed object. + An IUnknown pointer to a managed object. + + + + Gets an object from an IUnknown pointer. Similar to but accept IntPtr.Zero + by returning a null object. + + an IUnknown pointer to a managed object. + The managed object. + + + + String helper join method to display an array of object as a single string. + + The separator. + The array. + A string with array elements separated by the separator. + + + + String helper join method to display an enumerable of object as a single string. + + The separator. + The enumerable. + A string with array elements separated by the separator. + + + + String helper join method to display an enumerable of object as a single string. + + The separator. + The enumerable. + A string with array elements separated by the separator. + + + + Converts a blob to a string. + + A blob. + A string extracted from a blob. + + + + Equivalent to IntPtr.Add method from 3.5+ .NET Framework. + Adds an offset to the value of a pointer. + + A native pointer. + The offset to add (number of bytes). + A new pointer that reflects the addition of offset to pointer. + + + + Read stream to a byte[] buffer. + + Input stream. + A byte[] buffer. + + + + Read stream to a byte[] buffer. + + Input stream. + Length to read. + A byte[] buffer. + + + + Compares two collection, element by elements. + + A "from" enumerator. + A "to" enumerator. + true if lists are identical, false otherwise. + + + + Compares two collection, element by elements. + + A "from" enumerator. + A "to" enumerator. + true if lists are identical; otherwise, false. + + + + Compares two collection, element by elements. + + The collection to compare from. + The collection to compare to. + true if lists are identical (but not necessarily of the same time); otherwise , false. + + + + Gets the custom attribute. + + Type of the custom attribute. + The member info. + if set to true [inherited]. + The custom attribute or null if not found. + + + + Gets the custom attributes. + + Type of the custom attribute. + The member info. + if set to true [inherited]. + The custom attribute or null if not found. + + + + Determines whether fromType can be assigned to toType. + + To type. + From type. + + true if [is assignable from] [the specified to type]; otherwise, false. + + + + + Determines whether the specified type to test is an enum. + + The type to test. + + true if the specified type to test is an enum; otherwise, false. + + + + + Determines whether the specified type to test is a value type. + + The type to test. + + true if the specified type to test is a value type; otherwise, false. + + + + + Builds a fast property getter from a type and a property info. + + Type of the getter. + Type of the custom effect. + The property info to get the value from. + A compiled delegate. + + + + Builds a fast property setter from a type and a property info. + + Type of the setter. + Type of the custom effect. + The property info to set the value to. + A compiled delegate. + + + + Suspends the current thread of a . + + The duration to sleep in milliseconds. + + + + Finds an explicit conversion between a source type and a target type. + + Type of the source. + Type of the target. + The method to perform the conversion. null if not found. + + + + Loads a native library. + + Name of the DLL. + If DLL was not found. + Handle to the module. + + + + Gets the proc address of a DLL. + + The handle. + The DLL function to import. + If the function was not found. + Pointer to address of the exported function or variable. + + + + Compute a FNV1-modified Hash from Fowler/Noll/Vo Hash improved version. + + Data to compute the hash from. + A hash value. + + + + Safely dispose a reference if not null, and set it to null after dispose. + + The type of COM interface to dispose. + Object to dispose. + + The reference will be set to null after dispose. + + + + + Transforms an to an array of T. + + Type of the element + The enumerable source. + an array of T + + + + Test if there is an element in this enumeration. + + Type of the element + The enumerable source. + true if there is an element in this enumeration, false otherwise + + + + Select elements from an enumeration. + + The type of the T source. + The type of the T result. + The source. + The selector. + A enumeration of selected values + + + + Selects distinct elements from an enumeration. + + The type of the T source. + The source. + The comparer. + A enumeration of selected values + + + + Determines whether the type inherits from the specified type (used to determine a type without using an explicit type instance). + + The type. + Name of the parent type to find in inheritance hierarchy of type. + true if the type inherits from the specified type; otherwise, false. + + + Determines the concurrency model used for incoming calls to objects created by this thread. This concurrency model can be either apartment-threaded or multi-threaded. + + + + Initializes the thread for apartment-threaded object concurrency. + + + + + Initializes the thread for multi-threaded object concurrency. + + + + + Disables DDE for OLE1 support. + + + + + Trade memory for speed. + + + + + Represents a two dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0). + + + + + The Y unit (0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X and Y components of the vector. This must be an array with two elements. + Thrown when is null. + Thrown when contains more or less than two elements. + + + + Calculates the length of the vector. + + The length of the vector. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the vector. + + The squared length of the vector. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the vector into a unit vector. + + + + + Creates an array containing the elements of the vector. + + A two-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Perform a component-wise addition + + The input vector + The scalar value to be added to elements + The vector with added scalar for each element. + + + + Perform a component-wise addition + + The input vector + The scalar value to be added to elements + The vector with added scalar for each element. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Perform a component-wise subtraction + + The input vector + The scalar value to be subtraced from elements + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The input vector + The scalar value to be subtraced from elements + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The scalar value to be subtraced from elements + The input vector + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The scalar value to be subtraced from elements + The input vector + The vector with subtracted scalar for each element. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Multiplies a vector with another by performing component-wise multiplication. + + The first vector to multiply. + The second vector to multiply. + When the method completes, contains the multiplied vector. + + + + Multiplies a vector with another by performing component-wise multiplication. + + The first vector to multiply. + The second vector to multiply. + The multiplied vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The amount by which to scale the vector. + The vector to scale. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Returns a containing the 2D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 2D Cartesian coordinates of vertex 1 of the triangle. + A containing the 2D Cartesian coordinates of vertex 2 of the triangle. + A containing the 2D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains the 2D Cartesian coordinates of the specified point. + + + + Returns a containing the 2D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 2D Cartesian coordinates of vertex 1 of the triangle. + A containing the 2D Cartesian coordinates of vertex 2 of the triangle. + A containing the 2D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 2D Cartesian coordinates of the specified point. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Saturates this instance in the range [0,1] + + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + The distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector + When the method completes, contains the squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + The squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + When the method completes, contains the dot product of the two vectors. + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + The dot product of the two vectors. + + + + Converts the vector into a unit vector. + + The vector to normalize. + When the method completes, contains the normalized vector. + + + + Converts the vector into a unit vector. + + The vector to normalize. + The normalized vector. + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two vectors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two vectors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two vectors. + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two vectors. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + When the method completes, contains the result of the Hermite spline interpolation. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + The result of the Hermite spline interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + When the method completes, contains the result of the Catmull-Rom interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + A vector that is the result of the Catmull-Rom interpolation. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + When the method completes, contains the reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + The reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Orthogonalizes a list of vectors. + + The list of orthogonalized vectors. + The list of vectors to orthogonalize. + + Orthogonalization is the process of making all vectors orthogonal to each other. This + means that any given vector in the list will be orthogonal to any other given vector in the + list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Orthonormalizes a list of vectors. + + The list of orthonormalized vectors. + The list of vectors to orthonormalize. + + Orthonormalization is the process of making all vectors orthogonal to each + other and making all vectors of unit length. This means that any given vector will + be orthogonal to any other given vector in the list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 2D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + When the method completes, contains the transformed . + + + + Transforms a 2D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + The transformed . + + + + Transforms an array of vectors by the given rotation. + + The array of vectors to transform. + The rotation to apply. + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 2D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 2D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms an array of 2D vectors by the given . + + The array of vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + Thrown when or is null. + Thrown when is shorter in length than . + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + When the method completes, contains the transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the w component to be one and + therefore makes the vector homogeneous. The homogeneous vector is often preferred when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + The transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the w component to be one and + therefore makes the vector homogeneous. The homogeneous vector is often preferred when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation on an array of vectors using the given . + + The array of coordinate vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the w component to be one and + therefore makes the vector homogeneous. The homogeneous vector is often preferred when working + with coordinates as the w component can safely be ignored. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + When the method completes, contains the transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth column of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often preferred for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + The transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth column of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often preferred for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation on an array of vectors using the given . + + The array of normal vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth column of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often preferred for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Multiplies a vector with another by performing component-wise multiplication equivalent to . + + The first vector to multiply. + The second vector to multiply. + The multiplication of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchanged). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The amount by which to scale the vector. + The vector to scale. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Perform a component-wise addition + + The input vector. + The scalar value to be added on elements + The vector with added scalar for each element. + + + + Perform a component-wise addition + + The input vector. + The scalar value to be added on elements + The vector with added scalar for each element. + + + + Perform a component-wise subtraction + + The input vector. + The scalar value to be subtraced from elements + The vector with subtraced scalar from each element. + + + + Perform a component-wise subtraction + + The input vector. + The scalar value to be subtraced from elements + The vector with subtraced scalar from each element. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets a value indicting whether this vector is zero + + + + + Gets or sets the component at the specified index. + + The value of the X or Y component, depending on the index. + The index of the component to access. Use 0 for the X component and 1 for the Y component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 1]. + + + + Represents a three dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0). + + + + + The Y unit (0, 1, 0). + + + + + The Z unit (0, 0, 1). + + + + + A with all of its components set to one. + + + + + A unit designating up (0, 1, 0). + + + + + A unit designating down (0, -1, 0). + + + + + A unit designating left (-1, 0, 0). + + + + + A unit designating right (1, 0, 0). + + + + + A unit designating forward in a right-handed coordinate system (0, 0, -1). + + + + + A unit designating forward in a left-handed coordinate system (0, 0, 1). + + + + + A unit designating backward in a right-handed coordinate system (0, 0, 1). + + + + + A unit designating backward in a left-handed coordinate system (0, 0, -1). + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X and Y components. + Initial value for the Z component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, and Z components of the vector. This must be an array with three elements. + Thrown when is null. + Thrown when contains more or less than three elements. + + + + Calculates the length of the vector. + + The length of the vector. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the vector. + + The squared length of the vector. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the vector into a unit vector. + + + + + Creates an array containing the elements of the vector. + + A three-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Perform a component-wise addition + + The input vector + The scalar value to be added to elements + The vector with added scalar for each element. + + + + Perform a component-wise addition + + The input vector + The scalar value to be added to elements + The vector with added scalar for each element. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Perform a component-wise subtraction + + The input vector + The scalar value to be subtraced from elements + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The input vector + The scalar value to be subtraced from elements + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The scalar value to be subtraced from elements + The input vector. + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The scalar value to be subtraced from elements + The input vector. + The vector with subtracted scalar for each element. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Multiply a vector with another by performing component-wise multiplication. + + The first vector to multiply. + The second vector to multiply. + When the method completes, contains the multiplied vector. + + + + Multiply a vector with another by performing component-wise multiplication. + + The first vector to Multiply. + The second vector to multiply. + The multiplied vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The amount by which to scale the vector. + The vector to scale. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Returns a containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle. + + A containing the 3D Cartesian coordinates of vertex 1 of the triangle. + A containing the 3D Cartesian coordinates of vertex 2 of the triangle. + A containing the 3D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains the 3D Cartesian coordinates of the specified point. + + + + Returns a containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle. + + A containing the 3D Cartesian coordinates of vertex 1 of the triangle. + A containing the 3D Cartesian coordinates of vertex 2 of the triangle. + A containing the 3D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 3D Cartesian coordinates of the specified point. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Calculates the cross product of two vectors. + + First source vector. + Second source vector. + When the method completes, contains he cross product of the two vectors. + + + + Calculates the cross product of two vectors. + + First source vector. + Second source vector. + The cross product of the two vectors. + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + The distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + The squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Tests whether one 3D vector is near another 3D vector. + + The left vector. + The right vector. + The epsilon. + true if left and right are near another 3D, false otherwise + + + + Tests whether one 3D vector is near another 3D vector. + + The left vector. + The right vector. + The epsilon. + true if left and right are near another 3D, false otherwise + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + When the method completes, contains the dot product of the two vectors. + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + The dot product of the two vectors. + + + + Converts the vector into a unit vector. + + The vector to normalize. + When the method completes, contains the normalized vector. + + + + Converts the vector into a unit vector. + + The vector to normalize. + The normalized vector. + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two vectors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two vectors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two vectors. + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two vectors. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + When the method completes, contains the result of the Hermite spline interpolation. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + The result of the Hermite spline interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + When the method completes, contains the result of the Catmull-Rom interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + A vector that is the result of the Catmull-Rom interpolation. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + When the method completes, contains the vector in screen space. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + The vector in screen space. + + + + Projects a 3D vector from screen space into object space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + When the method completes, contains the vector in object space. + + + + Projects a 3D vector from screen space into object space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + The vector in object space. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + When the method completes, contains the reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + The reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Orthogonalizes a list of vectors. + + The list of orthogonalized vectors. + The list of vectors to orthogonalize. + + Orthogonalization is the process of making all vectors orthogonal to each other. This + means that any given vector in the list will be orthogonal to any other given vector in the + list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Orthonormalizes a list of vectors. + + The list of orthonormalized vectors. + The list of vectors to orthonormalize. + + Orthonormalization is the process of making all vectors orthogonal to each + other and making all vectors of unit length. This means that any given vector will + be orthogonal to any other given vector in the list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 3D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + When the method completes, contains the transformed . + + + + Transforms a 3D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + The transformed . + + + + Transforms an array of vectors by the given rotation. + + The array of vectors to transform. + The rotation to apply. + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 3D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 3D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms a 3D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 3D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 3D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms an array of 3D vectors by the given . + + The array of vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + Thrown when or is null. + Thrown when is shorter in length than . + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + When the method completes, contains the transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the w component to be one and + therefore makes the vector homogeneous. The homogeneous vector is often preferred when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + The transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the w component to be one and + therefore makes the vector homogeneous. The homogeneous vector is often preferred when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation on an array of vectors using the given . + + The array of coordinate vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the w component to be one and + therefore makes the vector homogeneous. The homogeneous vector is often preferred when working + with coordinates as the w component can safely be ignored. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + When the method completes, contains the transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth column of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often preferred for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + The transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth column of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often preferred for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation on an array of vectors using the given . + + The array of normal vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth column of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often preferred for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Multiplies a vector with another by performing component-wise multiplication equivalent to . + + The first vector to multiply. + The second vector to multiply. + The multiplication of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchanged). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The amount by which to scale the vector. + The vector to scale. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Perform a component-wise addition + + The input vector. + The scalar value to be added on elements + The vector with added scalar for each element. + + + + Perform a component-wise addition + + The input vector. + The scalar value to be added on elements + The vector with added scalar for each element. + + + + Perform a component-wise subtraction + + The input vector. + The scalar value to be subtraced from elements + The vector with added scalar from each element. + + + + Perform a component-wise subtraction + + The input vector. + The scalar value to be subtraced from elements + The vector with subtraced scalar from each element. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets a value indicting whether this vector is zero + + + + + Gets or sets the component at the specified index. + + The value of the X, Y, or Z component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, and 2 for the Z component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 2]. + + + + Represents a four dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0, 0). + + + + + The Y unit (0, 1, 0, 0). + + + + + The Z unit (0, 0, 1, 0). + + + + + The W unit (0, 0, 0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X, Y, and Z components. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X and Y components. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Calculates the length of the vector. + + The length of the vector. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the vector. + + The squared length of the vector. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the vector into a unit vector. + + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Perform a component-wise addition + + The input vector + The scalar value to be added to elements + The vector with added scalar for each element. + + + + Perform a component-wise addition + + The input vector + The scalar value to be added to elements + The vector with added scalar for each element. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Perform a component-wise subtraction + + The input vector + The scalar value to be subtraced from elements + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The input vector + The scalar value to be subtraced from elements + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The scalar value to be subtraced from elements + The input vector. + The vector with subtracted scalar for each element. + + + + Perform a component-wise subtraction + + The scalar value to be subtraced from elements + The input vector. + The vector with subtracted scalar for each element. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Multiplies a vector with another by performing component-wise multiplication. + + The first vector to multiply. + The second vector to multiply. + When the method completes, contains the multiplied vector. + + + + Multiplies a vector with another by performing component-wise multiplication. + + The first vector to multiply. + The second vector to multiply. + The multiplied vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The amount by which to scale the vector. + The vector to scale. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 4D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains the 4D Cartesian coordinates of the specified point. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 4D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 4D Cartesian coordinates of the specified point. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + The distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + The squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the dot product of two vectors. + + First source vector + Second source vector. + When the method completes, contains the dot product of the two vectors. + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + The dot product of the two vectors. + + + + Converts the vector into a unit vector. + + The vector to normalize. + When the method completes, contains the normalized vector. + + + + Converts the vector into a unit vector. + + The vector to normalize. + The normalized vector. + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two vectors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two vectors. + + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two vectors. + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two vectors. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + When the method completes, contains the result of the Hermite spline interpolation. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + The result of the Hermite spline interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + When the method completes, contains the result of the Catmull-Rom interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + A vector that is the result of the Catmull-Rom interpolation. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Orthogonalizes a list of vectors. + + The list of orthogonalized vectors. + The list of vectors to orthogonalize. + + Orthogonalization is the process of making all vectors orthogonal to each other. This + means that any given vector in the list will be orthogonal to any other given vector in the + list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Orthonormalizes a list of vectors. + + The list of orthonormalized vectors. + The list of vectors to orthonormalize. + + Orthonormalization is the process of making all vectors orthogonal to each + other and making all vectors of unit length. This means that any given vector will + be orthogonal to any other given vector in the list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 4D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + When the method completes, contains the transformed . + + + + Transforms a 4D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + The transformed . + + + + Transforms an array of vectors by the given rotation. + + The array of vectors to transform. + The rotation to apply. + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms an array of 4D vectors by the given . + + The array of vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Multiplies a vector with another by performing component-wise multiplication equivalent to . + + The first vector to multiply. + The second vector to multiply. + The multiplication of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchanged). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The amount by which to scale the vector. + The vector to scale. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Perform a component-wise addition + + The input vector. + The scalar value to be added on elements + The vector with added scalar for each element. + + + + Perform a component-wise addition + + The input vector. + The scalar value to be added on elements + The vector with added scalar for each element. + + + + Perform a component-wise subtraction + + The input vector. + The scalar value to be subtraced from elements + The vector with subtraced scalar from each element. + + + + Perform a component-wise subtraction + + The input vector. + The scalar value to be subtraced from elements + The vector with subtraced scalar from each element. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets a value indicting whether this vector is zero + + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Internal FontFileEnumerator callback + + + + + Internal FontFileEnumerator Callback + + + + HRESULT ISequentialStream::Read([Out, Buffer] void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbRead) + + + HRESULT ISequentialStream::Write([In, Buffer] const void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbWritten) + + + + Callbacks to pointer. + + The stream. + + + + HRESULT IStream::Seek([In] LARGE_INTEGER dlibMove,[In] SHARPDX_SEEKORIGIN dwOrigin,[Out, Optional] ULARGE_INTEGER* plibNewPosition) + + + HRESULT IStream::SetSize([In] ULARGE_INTEGER libNewSize) + + + HRESULT IStream::CopyTo([In] IStream* pstm,[In] ULARGE_INTEGER cb,[Out, Optional] ULARGE_INTEGER* pcbRead,[Out, Optional] ULARGE_INTEGER* pcbWritten) + + + HRESULT IStream::Commit([In] STGC grfCommitFlags) + + + HRESULT IStream::Revert() + + + HRESULT IStream::LockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + + + HRESULT IStream::UnlockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + + + HRESULT IStream::Stat([Out] STATSTG* pstatstg,[In] STATFLAG grfStatFlag) + + + HRESULT IStream::Clone([Out] IStream** ppstm) + + + + Converts a win32 error code to a . + + The error code. + A HRESULT code + + + + Converts a win32 error code to a . + + The error code. + A HRESULT code + + + + Provides a hook to WndProc of an existing window handle using . + + + + + Initializes a new instance of the class. + + The HWND. + + + + Adds a message filter to a window. + + The handle of the window. + The message filter. + + + + Removes a message filter associated with a window. + + The handle of the window. + The message filter. + + + + The namespace contains common enumerations, structures and helper classes for Win32 low-level API. + + + + + Implementation of OLE IPropertyBag2. + + IPropertyBag2 + + + + Initializes a new instance of the class. + + The property bag pointer. + + + + Gets the value of the property with this name. + + The name. + Value of the property + + + + Gets the value of the property by using a + + The public type of this property. + The marshaling type of this property. + The property key. + Value of the property + + + + Sets the value of the property with this name + + The name. + The value. + + + + Sets the value of the property by using a + + The public type of this property. + The marshaling type of this property. + The property key. + The value. + + + + Gets the number of properties. + + + + + Gets the keys. + + + + + Identifies a typed property in a . + + The public type of this property. + The marshaling type of this property. + + + + Initializes a new instance of the class. + + The name. + + + + Gets the name. + + + + + An enumerator using internally a . + + + + + Initializes a new instance of the class. + + The PTR to I enum string. + + + + Security attributes. + + SECURITY_ATTRIBUTES + + + + Length. + + + + + Descriptor. + + + + + Gets or sets a value indicating whether [inherit handle]. + + + true if [inherit handle]; otherwise, false. + + + + + Variant COM. + + PROPVARIANT + + + + Gets the type of the element. + + + The type of the element. + + + + + Gets the type. + + + + + Gets or sets the value. + + + The value. + + + + + Type of a simple variant value. + + + + + Type of a variant + + + + + Simple value + + + + + Vector value. + + + + + Array value. + + + + + By reference. + + + + + Reserved value. + + + + + The namespace contains basic controls used to render DirectX content. + + + + + RenderLoop provides a rendering loop infrastructure. See remarks for usage. + + + Use static + method to directly use a renderloop with a render callback or use your own loop: + + control.Show(); + using (var loop = new RenderLoop(control)) + { + while (loop.NextFrame()) + { + // Perform draw operations here. + } + } + + Note that the main control can be changed at anytime inside the loop. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Calls this method on each frame. + + true if if the control is still active, false otherwise. + An error occured + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Runs the specified main loop in the specified context. + + + + + Runs the specified main loop for the specified windows form. + + The form. + The rendering callback. + if set to true indicating whether the render loop should use the default instead of a custom window message loop lightweight for GC. Default is false. + form + or + renderCallback + + + + Gets or sets the control to associate with the current render loop. + + The control. + Control is already disposed + + + + Gets or sets a value indicating whether the render loop should use the default instead of a custom window message loop lightweight for GC. Default is false. + + true if the render loop should use the default instead of a custom window message loop (default false); otherwise, false. + By default, RenderLoop is using a custom window message loop that is more lightweight than to process windows event message. + Set this parameter to true to use the default . + + + + Gets a value indicating whether this instance is application idle. + + + true if this instance is application idle; otherwise, false. + + + + + Delegate for the rendering loop. + + + + + A Renderable UserControl. + + + + + Initializes a new instance of the class. + + + + + Paints the background of the control. + + A that contains the event data. + + + + Raises the event. + + A that contains the event data. + + + + Default Rendering Form. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text. + + + + Raises the event. + + A that contains the event data. + + + + Raises the event. + + A that contains the event data. + + + + Raises the event. + + An that contains the event data. + + + + Paints the background of the control. + + A that contains the event data. + + + + Raises the Pause Rendering event. + + The instance containing the event data. + + + + Raises the Resume Rendering event. + + The instance containing the event data. + + + + Raises the User resized event. + + The instance containing the event data. + + + + Raises the On App Activated event. + + The instance containing the event data. + + + + Raises the App Deactivated event + + The instance containing the event data. + + + + Raises the System Suspend event + + The instance containing the event data. + + + + Raises the System Resume event + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Override windows message loop handling. + + The Windows to process. + + + + Occurs when [app activated]. + + + + + Occurs when [app deactivated]. + + + + + Occurs when [monitor changed]. + + + + + Occurs when [pause rendering]. + + + + + Occurs when [resume rendering]. + + + + + Occurs when [screensaver]. + + + + + Occurs when [system resume]. + + + + + Occurs when [system suspend]. + + + + + Occurs when [user resized]. + + + + + Gets or sets a value indicating whether this form can be resized by the user. See remarks. + + + This property alters , + for true value it is , + for false - . + + true if this form can be resized by the user (by default); otherwise, false. + + + + Gets or sets a value indicationg whether the current render form is in fullscreen mode. See remarks. + + + If Toolkit is used, this property is set automatically, + otherwise user should maintain it himself as it affects the behavior of property. + + + + diff --git a/distribution/sharpdx_direct3d11_effects_x64.dll b/distribution/sharpdx_direct3d11_effects_x64.dll new file mode 100644 index 0000000000000000000000000000000000000000..a7ad51df31a86d701d944a78d4c27327f40f4caa GIT binary patch literal 345600 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 z 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

wu_^#GBjQL^E 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 D)%o0& literal 0 HcmV?d00001 diff --git a/FFXIVAPP.Client/sharpdx_direct3d11_effects_x86.dll b/distribution/sharpdx_direct3d11_effects_x86.dll similarity index 100% rename from FFXIVAPP.Client/sharpdx_direct3d11_effects_x86.dll rename to distribution/sharpdx_direct3d11_effects_x86.dll From e260778324ef7ec109ddf6d50de800a50666521c Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Sat, 25 Jul 2015 10:42:50 -0700 Subject: [PATCH 03/21] actually reference the project so it copies the output --- FFXIVAPP.Client/FFXIVAPP.Client.csproj | 10 ++++++---- distribution/Direct3DHook.dll | Bin 58880 -> 58880 bytes distribution/FFXIVAPP.Client.exe | Bin 1848320 -> 1848320 bytes 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/FFXIVAPP.Client/FFXIVAPP.Client.csproj b/FFXIVAPP.Client/FFXIVAPP.Client.csproj index 703906c4..c8cfbf51 100644 --- a/FFXIVAPP.Client/FFXIVAPP.Client.csproj +++ b/FFXIVAPP.Client/FFXIVAPP.Client.csproj @@ -67,9 +67,6 @@ app.manifest - - ..\..\ffxivapp-resources\Direct3DHook.dll - False ..\..\ffxivapp-resources\FFXIVAPP.Common.dll @@ -407,7 +404,12 @@ false - + + + {23178a3d-2ac0-419a-b1b6-59ca45191270} + Direct3DHook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/FFXIVAPP.Updater.exe b/distribution/FFXIVAPP.Updater.exe new file mode 100644 index 0000000000000000000000000000000000000000..3a1c6fd40b4766bede2d3ddda15be3e6e10a6afe GIT binary patch literal 489472 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%0AbvR*VZT74W8JEl|h|n-1 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�zZCgoa0+zn4QrYNX1ih_!$Bhx0~j^ z@3oay_P}f_)?_2_XP%0aftvJ6HmTd8w!WT*LLE00Eoq*~>8!VwQZULoXICMpqTpdT zP-evRwAZolpqt-q9|{TzAea~!tzI>i(AuBMm<=<|*^<*q1Yf1Jk3n4-73bz4v-{2X zv(FDW?r0C{r+k`wpLsRxtr7E4=bd*#>lI1F7RLCGEsQRG*o5g&!fjWsLOrdDX#Ace0j;Nf z7JH4&(1X7+5dCc_`Ow5Pv1kTQ1s|22lheBTJ|t^uDce8ZihuC&hCv3;Tu<*;LDl1b zfxqp7wRh;F_Od3O>2k1nDW&GI2j^#JiBSu=R6&hHRx@A9Ja3I%kE`iXwfA{URpFKdXSE;=Z7mE$S1uU|%v z=jjf9it7s(_x(NkTj%0bzfRU1sYom9r?AuYo5dDC#!`I?TPGK8tn07?kaCHOZm@P& zSKUn?z`!c37Ix=F*SOx52jW{#w(+l#sTMbUnR`E%bZGS7Rn)n%%`fGk+8^^46L zJ5EcvY1Nmc_atj9j@GV`)mPmPt^IEOWwwR#205Nmry%3}gn`CVCNaTU{XqvdlvtHZ z@#BKcJIih*yKS!-Y*BHs%IG;k?OXAaPlzY`ZltuWsYLH2g{-O^4&VGa>D3g*m0UGB zb$404nw~Ak`=Qjp+A@>qy3gRt4NwSg8Q_`Oj)zS)ef9=Mnm4ZMKIvd-Srt5_)?M;4 zcB7)f+Ulaq*ZN9$HtZ;a zY9|;ON;qBb3>iZ^T3p=l$W2R zu(9a7xtL^}<9yZId(Z-Z4qM1MKZ_=CBADTs$LDK9w6wI06xZCgipM=V@Tcu{sevfu z%GK6VA8e&xhtY@Xpx?%#!m5KeiKs-aqpm`7TZCwJNl4t8EL|vBr`^I%Luo0M@K7(K zYy3iC&(9lj=-f;cu-)wjcoX)GySTDJw?PRVkF zf7Z*`MH}_hR;Z-#Q1q9bcTz6pn?O>~{p|E3=?vA`2$XVng>r%Mz8GGJPnX)_%R5@f zq&MG|mU>XB(1slLvuGG4N4$XjasB&Wr~(ry;QA`!jhX+Xz*3o^6gBW#@X+xxar%2e zS|O5f{82;(83$(izMrgLHj+FpuSn{y_WTcgT6*{I2~{|%qGozjup&*0I*n=-wZYMo z;&FWs^fEdweOLQoAFSEg0)V6OUh5Ulyl7IBB8?kgm}2`^boi3ix(e36b&NjujU1oa zeboxXSKizLM~ER)H0&WxEPr;r7YB$wQ_ZvSN+@jpng~nwr8$;L|Hl-Za~S-4O>_Iu zH6?hJPoMVnRhgVALP%0-*Y0of_ZhbJE`g-Qp76ZcHp~OgX=fsOeGFN1^Yb$u>-wLp zSEhR$WQO@52y)aC9ep)E?}08501p4W2u+l9|%pLV6E_fK5U)6W`A@N2T^ zS#-?^OEu4fN)n>>4`Vl^mWIn{#Oy*Ih8i-R1kl~>&^N@Ok-6dX&(2V7N0VBq`F`S6 z#;`4um;%}y3z1ET$pPsMzm`WV{Mzjp9UUDlYWY~E&&a(ey${uReq(Kkd208y$4MKN z)ZB6NyvbBD^N~KhJ|!{WXDFLGp_bz}pxf!4{Pty>qvGDkgI7CCP*~gdP6i zyF0uVf6>?)Gc$xB>V$}i1N#UW4@S^;+eP-3t-qtWk+ZVy1GlN8`hxM^SWqWs$MVPWlmZUYED8!jl_)ZvBdgRJz@2 zOHSgZVh)e}ab24&(Zo~n*|RO^m4S#+wOn6l7@38)W81l2&w)(UJvnGQpfLCHc~6#^ zONx8?~ySJ=n>{ZK8VOP%7 z?PIm2os-%T?e+yAB9@2K*H`<_8Op_{To~QozS+KL*nHf2uiU`tdBD?8Dp1Lx(cccY7i!r-jY0<6(nnkhalW5dse`LJ|8HK<>vLR`-0)9DF*+s(KBh+W|CnM9wzZVwFT%wXaD9wBXUov}eQ#8IiBjf6`vR%^3{{ zyvI%FjQ7W@SbP}EFe?{sq3;#X7?Pp?XZz~}-3N`^{4lb|eytqyMm z%8?NHmM`)>7p9q)ho8BOuFEf4e>lXk&r2z98j28&ahD@|A&gO0&7(VP@Qc^&6gkNw zPDMUJ@8$gnMxNxvlJAS(F7mK=3}v!}-@ao%KYZ1rMC{0s0R!LTCEjtmHC6&j$&8q; z73b?mBK*V!O?2wtVX=XJdN&x|<|_tR7EObM&b43fV*+1p|ER87MAF?0_3rfQdWmJz z+{!a@-oJ_siR=8denH229c2gqW(P1Ijmlqv0OD-G@1ozXC5SG3$W^q{$2-S0==))k zf|(#i%oDlOj67)Y-BR~^I@CPbmeODy)L@ORH1_1k^)EX^H8w>&di*H1(7fNxs-m@h zcQ^(c!5G@9J=?>ESErPPNPfDVC5?{c^_K8 z)80O(qy|EY!m~T#~I+=DcAuXea|4SLv zR7xHR(zzb1CtOXQCzH5?D$so4jPHCG#;CdDq$8Y?hAq7hkRH0HMPhr{rNkyq)3ayS z{The9-U|;`WwQRfndS3O|F-$up`euXwnK=XG|u_pSXezc^J;~D*Zme7|EE817<{%l zNJT|Ov^}4657I=`1(ug9)oy8#%PFi9pW1VdYHncy!!68DrHfB@KZ*^;@%vg2vZs!L z{n1EGkN(1!;Mo>-e|ib(6-MPIF%0o&6bKDy<&cYWj*CbLPf_UF8`IoUJKj=CdSm1$ zVhw|300!;mM8khib6r0(i>-X6vx3FG;Cnw={V%_$fWNhrqzO^#I;&8K@(qTNdl*Lz zS>DTO4@HBVL-LMlMy?B)hMTS*cVUhHiiRu@WUk)XeQ~<*GjF?|`MRjn-gzr8jbg8F z6)y_>l9v+O2=Bg999g&54K0q3mIJ7I{=raz?5d=8@ST(opjpsQc(3>+##&X8G10r_ z9jTKKK3yMUD$GHpYZPA}5fu%khFZP}QpYYBUHo^xRIJZ=B=i{}17vSfga$(6zg)w-jMI>~Y%daMZnb

ywSe- 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

DQxEa$lo@dO2+{3rV=ORBJN!-_z%wHOI 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 literal 0 HcmV?d00001 diff --git a/distribution/FFXIVAPP.Updater.exe.config b/distribution/FFXIVAPP.Updater.exe.config new file mode 100644 index 00000000..a47b4282 --- /dev/null +++ b/distribution/FFXIVAPP.Updater.exe.config @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/Ionic.Zip.dll b/distribution/Ionic.Zip.dll new file mode 100644 index 0000000000000000000000000000000000000000..c15d937e87695188cfcb188081c0a937579c2081 GIT binary patch literal 462848 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

Y5+H1+!4}zC~{xvwq~G;v1D>L!bT9v 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 G0{;L^5w-FF literal 0 HcmV?d00001 diff --git a/distribution/Ionic.Zip.xml b/distribution/Ionic.Zip.xml new file mode 100644 index 00000000..3e0c751c --- /dev/null +++ b/distribution/Ionic.Zip.xml @@ -0,0 +1,18149 @@ + + + + Ionic.Zip + + + +

+ An enum that specifies the source of the ZipEntry. + + + + + Default value. Invalid on a bonafide ZipEntry. + + + + + The entry was instantiated by calling AddFile() or another method that + added an entry from the filesystem. + + + + + The entry was instantiated via or + . + + + + + The ZipEntry was instantiated by reading a zipfile. + + + + + The content for the ZipEntry will be or was provided by the WriteDelegate. + + + + + The content for the ZipEntry will be obtained from the stream dispensed by the OpenDelegate. + The entry was instantiated via . + + + + + The content for the ZipEntry will be or was obtained from a ZipOutputStream. + + + + + Provides a stream metaphor for generating zip files. + + + + + This class writes zip files, as defined in the specification + for zip files described by PKWare. The compression for this + implementation is provided by a managed-code version of Zlib, included with + DotNetZip in the classes in the Ionic.Zlib namespace. + + + + This class provides an alternative programming model to the one enabled by the + class. Use this when creating zip files, as an + alternative to the class, when you would like to use a + Stream type to write the zip file. + + + + Both the ZipOutputStream class and the ZipFile class can be used + to create zip files. Both of them support many of the common zip features, + including Unicode, different compression levels, and ZIP64. They provide + very similar performance when creating zip files. + + + + The ZipFile class is generally easier to use than + ZipOutputStream and should be considered a higher-level interface. For + example, when creating a zip file via calls to the PutNextEntry() and + Write() methods on the ZipOutputStream class, the caller is + responsible for opening the file, reading the bytes from the file, writing + those bytes into the ZipOutputStream, setting the attributes on the + ZipEntry, and setting the created, last modified, and last accessed + timestamps on the zip entry. All of these things are done automatically by a + call to ZipFile.AddFile(). + For this reason, the ZipOutputStream is generally recommended for use + only when your application emits arbitrary data, not necessarily data from a + filesystem file, directly into a zip file, and does so using a Stream + metaphor. + + + + Aside from the differences in programming model, there are other + differences in capability between the two classes. + + + + + ZipFile can be used to read and extract zip files, in addition to + creating zip files. ZipOutputStream cannot read zip files. If you want + to use a stream to read zip files, check out the class. + + + + ZipOutputStream does not support the creation of segmented or spanned + zip files. + + + + ZipOutputStream cannot produce a self-extracting archive. + + + + + Be aware that the ZipOutputStream class implements the interface. In order for + ZipOutputStream to produce a valid zip file, you use use it within + a using clause (Using in VB), or call the Dispose() method + explicitly. See the examples for how to employ a using clause. + + + + Also, a note regarding compression performance: On the desktop .NET + Framework, DotNetZip can use a multi-threaded compression implementation + that provides significant speed increases on large files, over 300k or so, + at the cost of increased memory use at runtime. (The output of the + compression is almost exactly the same size). But, the multi-threaded + approach incurs a performance hit on smaller files. There's no way for the + ZipOutputStream to know whether parallel compression will be beneficial, + because the ZipOutputStream does not know how much data you will write + through the stream. You may wish to set the property to zero, if you are compressing + large files through ZipOutputStream. This will cause parallel + compression to be used, always. + + + + + + Create a ZipOutputStream, wrapping an existing stream. + + + + + The class is generally easier to use when creating + zip files. The ZipOutputStream offers a different metaphor for creating a + zip file, based on the class. + + + + + + The stream to wrap. It must be writable. This stream will be closed at + the time the ZipOutputStream is closed. + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + if (filesToZip.Count == 0) + { + System.Console.WriteLine("Nothing to do."); + return; + } + + using (var raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) + { + using (var output= new ZipOutputStream(raw)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + + foreach (string inputFileName in filesToZip) + { + System.Console.WriteLine("file: {0}", inputFileName); + + output.PutNextEntry(inputFileName); + using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Write )) + { + byte[] buffer= new byte[2048]; + int n; + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + } + + + + Private Sub Zipup() + Dim outputFileName As String = "XmlData.zip" + Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") + If (filesToZip.Length = 0) Then + Console.WriteLine("Nothing to do.") + Else + Using raw As FileStream = File.Open(outputFileName, FileMode.Create, FileAccess.ReadWrite) + Using output As ZipOutputStream = New ZipOutputStream(raw) + output.Password = "VerySecret!" + output.Encryption = EncryptionAlgorithm.WinZipAes256 + Dim inputFileName As String + For Each inputFileName In filesToZip + Console.WriteLine("file: {0}", inputFileName) + output.PutNextEntry(inputFileName) + Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer + Dim buffer As Byte() = New Byte(2048) {} + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + Next + End Using + End Using + End If + End Sub + + + + + + Create a ZipOutputStream that writes to a filesystem file. + + + + The class is generally easier to use when creating + zip files. The ZipOutputStream offers a different metaphor for creating a + zip file, based on the class. + + + + The name of the zip file to create. + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + if (filesToZip.Count == 0) + { + System.Console.WriteLine("Nothing to do."); + return; + } + + using (var output= new ZipOutputStream(outputFileName)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + + foreach (string inputFileName in filesToZip) + { + System.Console.WriteLine("file: {0}", inputFileName); + + output.PutNextEntry(inputFileName); + using (var input = File.Open(inputFileName, FileMode.Open, FileAccess.Read, + FileShare.Read | FileShare.Write )) + { + byte[] buffer= new byte[2048]; + int n; + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + Private Sub Zipup() + Dim outputFileName As String = "XmlData.zip" + Dim filesToZip As String() = Directory.GetFiles(".", "*.xml") + If (filesToZip.Length = 0) Then + Console.WriteLine("Nothing to do.") + Else + Using output As ZipOutputStream = New ZipOutputStream(outputFileName) + output.Password = "VerySecret!" + output.Encryption = EncryptionAlgorithm.WinZipAes256 + Dim inputFileName As String + For Each inputFileName In filesToZip + Console.WriteLine("file: {0}", inputFileName) + output.PutNextEntry(inputFileName) + Using input As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer + Dim buffer As Byte() = New Byte(2048) {} + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + Next + End Using + End If + End Sub + + + + + + Create a ZipOutputStream. + + + + See the documentation for the ZipOutputStream(Stream) + constructor for an example. + + + + The stream to wrap. It must be writable. + + + + true if the application would like the stream + to remain open after the ZipOutputStream has been closed. + + + + Provides a string representation of the instance. + + + This can be useful for debugging purposes. + + + a string representation of the instance. + + + + Returns true if an entry by the given name has already been written + to the ZipOutputStream. + + + + The name of the entry to scan for. + + + + true if an entry by the given name has already been written. + + + + + Write the data from the buffer to the stream. + + + + As the application writes data into this stream, the data may be + compressed and encrypted before being written out to the underlying + stream, depending on the settings of the + and the properties. + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Specify the name of the next entry that will be written to the zip file. + + + + + Call this method just before calling , to + specify the name of the entry that the next set of bytes written to + the ZipOutputStream belongs to. All subsequent calls to Write, + until the next call to PutNextEntry, + will be inserted into the named entry in the zip file. + + + + If the used in PutNextEntry() ends in + a slash, then the entry added is marked as a directory. Because directory + entries do not contain data, a call to Write(), before an + intervening additional call to PutNextEntry(), will throw an + exception. + + + + If you don't call Write() between two calls to + PutNextEntry(), the first entry is inserted into the zip file as a + file of zero size. This may be what you want. + + + + Because PutNextEntry() closes out the prior entry, if any, this + method may throw if there is a problem with the prior entry. + + + + This method returns the ZipEntry. You can modify public properties + on the ZipEntry, such as , , and so on, until the first call to + ZipOutputStream.Write(), or until the next call to + PutNextEntry(). If you modify the ZipEntry after + having called Write(), you may get a runtime exception, or you may + silently get an invalid zip archive. + + + + + + + This example shows how to create a zip file, using the + ZipOutputStream class. + + + private void Zipup() + { + using (FileStream fs raw = File.Open(_outputFileName, FileMode.Create, FileAccess.ReadWrite )) + { + using (var output= new ZipOutputStream(fs)) + { + output.Password = "VerySecret!"; + output.Encryption = EncryptionAlgorithm.WinZipAes256; + output.PutNextEntry("entry1.txt"); + byte[] buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #1."); + output.Write(buffer,0,buffer.Length); + output.PutNextEntry("entry2.txt"); // this will be zero length + output.PutNextEntry("entry3.txt"); + buffer= System.Text.Encoding.ASCII.GetBytes("This is the content for entry #3."); + output.Write(buffer,0,buffer.Length); + } + } + } + + + + + The name of the entry to be added, including any path to be used + within the zip file. + + + + The ZipEntry created. + + + + + + Dispose the stream + + + + + This method writes the Zip Central directory, then closes the stream. The + application must call Dispose() (or Close) in order to produce a valid zip file. + + + + Typically the application will call Dispose() implicitly, via a using + statement in C#, or a Using statement in VB. + + + + + set this to true, always. + + + + This is a no-op. + + + + + This method always throws a NotSupportedException. + + ignored + ignored + ignored + nothing + + + + This method always throws a NotSupportedException. + + ignored + ignored + nothing + + + + This method always throws a NotSupportedException. + + ignored + + + + Sets the password to be used on the ZipOutputStream instance. + + + + + + When writing a zip archive, this password is applied to the entries, not + to the zip archive itself. It applies to any ZipEntry subsequently + written to the ZipOutputStream. + + + + Using a password does not encrypt or protect the "directory" of the + archive - the list of entries contained in the archive. If you set the + Password property, the password actually applies to individual + entries that are added to the archive, subsequent to the setting of this + property. The list of filenames in the archive that is eventually created + will appear in clear text, but the contents of the individual files are + encrypted. This is how Zip encryption works. + + + + If you set this property, and then add a set of entries to the archive via + calls to PutNextEntry, then each entry is encrypted with that + password. You may also want to change the password between adding + different entries. If you set the password, add an entry, then set the + password to null (Nothing in VB), and add another entry, the + first entry is encrypted and the second is not. + + + + When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added + to the ZipFile. If you set the Password to a non-null value and do not + set , then PKZip 2.0 ("Weak") encryption is used. + This encryption is relatively weak but is very interoperable. If + you set the password to a null value (Nothing in VB), + Encryption is reset to None. + + + + Special case: if you wrap a ZipOutputStream around a non-seekable stream, + and use encryption, and emit an entry of zero bytes, the Close() or + PutNextEntry() following the entry will throw an exception. + + + + + + + The Encryption to use for entries added to the ZipOutputStream. + + + + + The specified Encryption is applied to the entries subsequently + written to the ZipOutputStream instance. + + + + If you set this to something other than + EncryptionAlgorithm.None, you will also need to set the + to a non-null, non-empty value in + order to actually get encryption on the entry. + + + + + ZipOutputStream.Password + ZipEntry.Encryption + + + + Size of the work buffer to use for the ZLIB codec during compression. + + + + Setting this may affect performance. For larger files, setting this to a + larger size may improve performance, but I'm not sure. Sorry, I don't + currently have good recommendations on how to set it. You can test it if + you like. + + + + + The compression strategy to use for all entries. + + + + Set the Strategy used by the ZLIB-compatible compressor, when compressing + data for the entries in the zip archive. Different compression strategies + work better on different sorts of data. The strategy parameter can affect + the compression ratio and the speed of compression but not the correctness + of the compresssion. For more information see . + + + + + The type of timestamp attached to the ZipEntry. + + + + Set this in order to specify the kind of timestamp that should be emitted + into the zip file for each entry. + + + + + Sets the compression level to be used for entries subsequently added to + the zip archive. + + + + + Varying the compression level used on entries can affect the + size-vs-speed tradeoff when compression and decompressing data streams + or files. + + + + As with some other properties on the ZipOutputStream class, like , and , + setting this property on a ZipOutputStream + instance will cause the specified CompressionLevel to be used on all + items that are subsequently added to the + ZipOutputStream instance. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + + + The compression method used on each entry added to the ZipOutputStream. + + + + + A comment attached to the zip archive. + + + + + + The application sets this property to specify a comment to be embedded + into the generated zip archive. + + + + According to PKWARE's + zip specification, the comment is not encrypted, even if there is a + password set on the zip file. + + + + The specification does not describe how to indicate the encoding used + on a comment string. Many "compliant" zip tools and libraries use + IBM437 as the code page for comments; DotNetZip, too, follows that + practice. On the other hand, there are situations where you want a + Comment to be encoded with something else, for example using code page + 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the + comment following the same procedure it follows for encoding + filenames: (a) if is + Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the + alternate encoding (). (c) if is AsNecessary, it uses the + alternate encoding only if the default encoding is not sufficient for + encoding the comment - in other words if decoding the result does not + produce the original string. This decision is taken at the time of + the call to ZipFile.Save(). + + + + + + + Specify whether to use ZIP64 extensions when saving a zip archive. + + + + + The default value for the property is . is + safest, in the sense that you will not get an Exception if a + pre-ZIP64 limit is exceeded. + + + + You must set this property before calling Write(). + + + + + + + Indicates whether ZIP64 extensions were used when saving the zip archive. + + + + The value is defined only after the ZipOutputStream has been closed. + + + + + Whether the ZipOutputStream should use case-insensitive comparisons when + checking for uniqueness of zip entries. + + + + + Though the zip specification doesn't prohibit zipfiles with duplicate + entries, Sane zip files have no duplicates, and the DotNetZip library + cannot create zip files with duplicate entries. If an application attempts + to call with a name that duplicates one + already used within the archive, the library will throw an Exception. + + + This property allows the application to specify whether the + ZipOutputStream instance considers ordinal case when checking for + uniqueness of zip entries. + + + + + + Indicates whether to encode entry filenames and entry comments using + Unicode (UTF-8). + + + + + The + PKWare zip specification provides for encoding file names and file + comments in either the IBM437 code page, or in UTF-8. This flag selects + the encoding according to that specification. By default, this flag is + false, and filenames and comments are encoded into the zip file in the + IBM437 codepage. Setting this flag to true will specify that filenames + and comments that cannot be encoded with IBM437 will be encoded with + UTF-8. + + + + Zip files created with strict adherence to the PKWare specification with + respect to UTF-8 encoding can contain entries with filenames containing + any combination of Unicode characters, including the full range of + characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other + alphabets. However, because at this time, the UTF-8 portion of the PKWare + specification is not broadly supported by other zip libraries and + utilities, such zip files may not be readable by your favorite zip tool or + archiver. In other words, interoperability will decrease if you set this + flag to true. + + + + In particular, Zip files created with strict adherence to the PKWare + specification with respect to UTF-8 encoding will not work well with + Explorer in Windows XP or Windows Vista, because Windows compressed + folders, as far as I know, do not support UTF-8 in zip files. Vista can + read the zip files, but shows the filenames incorrectly. Unpacking from + Windows Vista Explorer will result in filenames that have rubbish + characters in place of the high-order UTF-8 bytes. + + + + Also, zip files that use UTF-8 encoding will not work well with Java + applications that use the java.util.zip classes, as of v5.0 of the Java + runtime. The Java runtime does not correctly implement the PKWare + specification in this regard. + + + + As a result, we have the unfortunate situation that "correct" behavior by + the DotNetZip library with regard to Unicode encoding of filenames during + zip creation will result in zip files that are readable by strictly + compliant and current tools (for example the most recent release of the + commercial WinZip tool); but these zip files will not be readable by + various other tools or libraries, including Windows Explorer. + + + + The DotNetZip library can read and write zip files with UTF8-encoded + entries, according to the PKware spec. If you use DotNetZip for both + creating and reading the zip file, and you use UTF-8, there will be no + loss of information in the filenames. For example, using a self-extractor + created by this library will allow you to unpack files correctly with no + loss of information in the filenames. + + + + If you do not set this flag, it will remain false. If this flag is false, + the ZipOutputStream will encode all filenames and comments using + the IBM437 codepage. This can cause "loss of information" on some + filenames, but the resulting zipfile will be more interoperable with other + utilities. As an example of the loss of information, diacritics can be + lost. The o-tilde character will be down-coded to plain o. The c with a + cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. + Likewise, the O-stroke character (Unicode 248), used in Danish and + Norwegian, will be down-coded to plain o. Chinese characters cannot be + represented in codepage IBM437; when using the default encoding, Chinese + characters in filenames will be represented as ?. These are all examples + of "information loss". + + + + The loss of information associated to the use of the IBM437 encoding is + inconvenient, and can also lead to runtime errors. For example, using + IBM437, any sequence of 4 Chinese characters will be encoded as ????. If + your application creates a ZipOutputStream, does not set the + encoding, then adds two files, each with names of four Chinese characters + each, this will result in a duplicate filename exception. In the case + where you add a single file with a name containing four Chinese + characters, the zipfile will save properly, but extracting that file + later, with any zip tool, will result in an error, because the question + mark is not legal for use within filenames on Windows. These are just a + few examples of the problems associated to loss of information. + + + + This flag is independent of the encoding of the content within the entries + in the zip file. Think of the zip file as a container - it supports an + encoding. Within the container are other "containers" - the file entries + themselves. The encoding within those entries is independent of the + encoding of the zip archive container for those entries. + + + + Rather than specify the encoding in a binary fashion using this flag, an + application can specify an arbitrary encoding via the property. Setting the encoding + explicitly when creating zip archives will result in non-compliant zip + files that, curiously, are fairly interoperable. The challenge is, the + PKWare specification does not provide for a way to specify that an entry + in a zip archive uses a code page that is neither IBM437 nor UTF-8. + Therefore if you set the encoding explicitly when creating a zip archive, + you must take care upon reading the zip archive to use the same code page. + If you get it wrong, the behavior is undefined and may result in incorrect + filenames, exceptions, stomach upset, hair loss, and acne. + + + + + + + The text encoding to use when emitting entries into the zip archive, for + those entries whose filenames or comments cannot be encoded with the + default (IBM437) encoding. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to write zip archives that will be read by one of + these other archivers, set this property to specify the code page to use + when encoding the and for each ZipEntry in the zip file, for + values that cannot be encoded with the default codepage for zip files, + IBM437. This is why this property is "provisional". In all cases, IBM437 + is used where possible, in other words, where no loss of data would + result. It is possible, therefore, to have a given entry with a + Comment encoded in IBM437 and a FileName encoded with the + specified "provisional" codepage. + + + + Be aware that a zip file created after you've explicitly set the + ProvisionalAlternateEncoding property to a value other than + IBM437 may not be compliant to the PKWare specification, and may not be + readable by compliant archivers. On the other hand, many (most?) + archivers are non-compliant and can read zip files created in arbitrary + code pages. The trick is to use or specify the proper codepage when + reading the zip. + + + + When creating a zip archive using this library, it is possible to change + the value of ProvisionalAlternateEncoding between each entry you + add, and between adding entries and the call to Close(). Don't do + this. It will likely result in a zipfile that is not readable. For best + interoperability, either leave ProvisionalAlternateEncoding + alone, or specify it only once, before adding any entries to the + ZipOutputStream instance. There is one exception to this + recommendation, described later. + + + + When using an arbitrary, non-UTF8 code page for encoding, there is no + standard way for the creator application - whether DotNetZip, WinZip, + WinRar, or something else - to formally specify in the zip file which + codepage has been used for the entries. As a result, readers of zip files + are not able to inspect the zip file and determine the codepage that was + used for the entries contained within it. It is left to the application + or user to determine the necessary codepage when reading zip files encoded + this way. If you use an incorrect codepage when reading a zipfile, you + will get entries with filenames that are incorrect, and the incorrect + filenames may even contain characters that are not legal for use within + filenames in Windows. Extracting entries with illegal characters in the + filenames will lead to exceptions. It's too bad, but this is just the way + things are with code pages in zip files. Caveat Emptor. + + + + One possible approach for specifying the code page for a given zip file is + to describe the code page in a human-readable form in the Zip comment. For + example, the comment may read "Entries in this archive are encoded in the + Big5 code page". For maximum interoperability, the zip comment in this + case should be encoded in the default, IBM437 code page. In this case, + the zip comment is encoded using a different page than the filenames. To + do this, Specify ProvisionalAlternateEncoding to your desired + region-specific code page, once before adding any entries, and then set + the property and reset + ProvisionalAlternateEncoding to IBM437 before calling Close(). + + + + + + A Text Encoding to use when encoding the filenames and comments for + all the ZipEntry items, during a ZipFile.Save() operation. + + + + Whether the encoding specified here is used during the save depends + on . + + + + + + A flag that tells if and when this instance should apply + AlternateEncoding to encode the filenames and comments associated to + of ZipEntry objects contained within this instance. + + + + + The default text encoding used in zip archives. It is numeric 437, also + known as IBM437. + + + + + + The size threshold for an entry, above which a parallel deflate is used. + + + + + + DotNetZip will use multiple threads to compress any ZipEntry, when + the CompressionMethod is Deflate, and if the entry is + larger than the given size. Zero means "always use parallel + deflate", while -1 means "never use parallel deflate". + + + + If the entry size cannot be known before compression, as with any entry + added via a ZipOutputStream, then Parallel deflate will never be + performed, unless the value of this property is zero. + + + + A parallel deflate operations will speed up the compression of + large files, on computers with multiple CPUs or multiple CPU + cores. For files above 1mb, on a dual core or dual-cpu (2p) + machine, the time required to compress the file can be 70% of the + single-threaded deflate. For very large files on 4p machines the + compression can be done in 30% of the normal time. The downside + is that parallel deflate consumes extra memory during the deflate, + and the deflation is slightly less effective. + + + + Parallel deflate tends to not be as effective as single-threaded deflate + because the original data stream is split into multiple independent + buffers, each of which is compressed in parallel. But because they are + treated independently, there is no opportunity to share compression + dictionaries, and additional framing bytes must be added to the output + stream. For that reason, a deflated stream may be slightly larger when + compressed using parallel deflate, as compared to a traditional + single-threaded deflate. For files of about 512k, the increase over the + normal deflate is as much as 5% of the total compressed size. For larger + files, the difference can be as small as 0.1%. + + + + Multi-threaded compression does not give as much an advantage when using + Encryption. This is primarily because encryption tends to slow down + the entire pipeline. Also, multi-threaded compression gives less of an + advantage when using lower compression levels, for example . You may have to perform + some tests to determine the best approach for your situation. + + + + The default value for this property is -1, which means parallel + compression will not be performed unless you set it to zero. + + + + + + + The maximum number of buffer pairs to use when performing + parallel compression. + + + + + This property sets an upper limit on the number of memory + buffer pairs to create when performing parallel + compression. The implementation of the parallel + compression stream allocates multiple buffers to + facilitate parallel compression. As each buffer fills up, + the stream uses + ThreadPool.QueueUserWorkItem() to compress those + buffers in a background threadpool thread. After a buffer + is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time, but it is + effective only if set before calling + ZipOutputStream.Write() for the first time. + + + + + + + + + Always returns false. + + + + + Always returns false. + + + + + Always returns true. + + + + + Always returns a NotSupportedException. + + + + + Setting this property always returns a NotSupportedException. Getting it + returns the value of the Position on the underlying stream. + + + + + Provides a stream metaphor for reading zip files. + + + + + This class provides an alternative programming model for reading zip files to + the one enabled by the class. Use this when reading zip + files, as an alternative to the class, when you would + like to use a Stream class to read the file. + + + + Some application designs require a readable stream for input. This stream can + be used to read a zip file, and extract entries. + + + + Both the ZipInputStream class and the ZipFile class can be used + to read and extract zip files. Both of them support many of the common zip + features, including Unicode, different compression levels, and ZIP64. The + programming models differ. For example, when extracting entries via calls to + the GetNextEntry() and Read() methods on the + ZipInputStream class, the caller is responsible for creating the file, + writing the bytes into the file, setting the attributes on the file, and + setting the created, last modified, and last accessed timestamps on the + file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the + ZipInputStream is generally recommended for when your application wants + to extract the data, without storing that data into a file. + + + + Aside from the obvious differences in programming model, there are some + differences in capability between the ZipFile class and the + ZipInputStream class. + + + + + ZipFile can be used to create or update zip files, or read and + extract zip files. ZipInputStream can be used only to read and + extract zip files. If you want to use a stream to create zip files, check + out the . + + + + ZipInputStream cannot read segmented or spanned + zip files. + + + + ZipInputStream will not read Zip file comments. + + + + When reading larger files, ZipInputStream will always underperform + ZipFile. This is because the ZipInputStream does a full scan on the + zip file, while the ZipFile class reads the central directory of the + zip file. + + + + + + + + + Create a ZipInputStream, wrapping it around an existing stream. + + + + + + While the class is generally easier + to use, this class provides an alternative to those + applications that want to read from a zipfile directly, + using a . + + + + Both the ZipInputStream class and the ZipFile class can be used + to read and extract zip files. Both of them support many of the common zip + features, including Unicode, different compression levels, and ZIP64. The + programming models differ. For example, when extracting entries via calls to + the GetNextEntry() and Read() methods on the + ZipInputStream class, the caller is responsible for creating the file, + writing the bytes into the file, setting the attributes on the file, and + setting the created, last modified, and last accessed timestamps on the + file. All of these things are done automatically by a call to ZipEntry.Extract(). For this reason, the + ZipInputStream is generally recommended for when your application wants + to extract the data, without storing that data into a file. + + + + Aside from the obvious differences in programming model, there are some + differences in capability between the ZipFile class and the + ZipInputStream class. + + + + + ZipFile can be used to create or update zip files, or read and extract + zip files. ZipInputStream can be used only to read and extract zip + files. If you want to use a stream to create zip files, check out the . + + + + ZipInputStream cannot read segmented or spanned + zip files. + + + + ZipInputStream will not read Zip file comments. + + + + When reading larger files, ZipInputStream will always underperform + ZipFile. This is because the ZipInputStream does a full scan on the + zip file, while the ZipFile class reads the central directory of the + zip file. + + + + + + + + The stream to read. It must be readable. This stream will be closed at + the time the ZipInputStream is closed. + + + + + This example shows how to read a zip file, and extract entries, using the + ZipInputStream class. + + + private void Unzip() + { + byte[] buffer= new byte[2048]; + int n; + using (var raw = File.Open(inputFileName, FileMode.Open, FileAccess.Read)) + { + using (var input= new ZipInputStream(raw)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + if (e.IsDirectory) continue; + string outputPath = Path.Combine(extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + } + + + + Private Sub UnZip() + Dim inputFileName As String = "MyArchive.zip" + Dim extractDir As String = "extract" + Dim buffer As Byte() = New Byte(2048) {} + Using raw As FileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read) + Using input As ZipInputStream = New ZipInputStream(raw) + Dim e As ZipEntry + Do While (Not e = input.GetNextEntry Is Nothing) + If Not e.IsDirectory Then + Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ + FileMode.Create, FileAccess.ReadWrite) + Dim n As Integer + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + End If + Loop + End Using + End Using + End Sub + + + + + + Create a ZipInputStream, given the name of an existing zip file. + + + + + + This constructor opens a FileStream for the given zipfile, and + wraps a ZipInputStream around that. See the documentation for the + constructor for full details. + + + + While the class is generally easier + to use, this class provides an alternative to those + applications that want to read from a zipfile directly, + using a . + + + + + + The name of the filesystem file to read. + + + + + This example shows how to read a zip file, and extract entries, using the + ZipInputStream class. + + + private void Unzip() + { + byte[] buffer= new byte[2048]; + int n; + using (var input= new ZipInputStream(inputFileName)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + if (e.IsDirectory) continue; + string outputPath = Path.Combine(extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + Private Sub UnZip() + Dim inputFileName As String = "MyArchive.zip" + Dim extractDir As String = "extract" + Dim buffer As Byte() = New Byte(2048) {} + Using input As ZipInputStream = New ZipInputStream(inputFileName) + Dim e As ZipEntry + Do While (Not e = input.GetNextEntry Is Nothing) + If Not e.IsDirectory Then + Using output As FileStream = File.Open(Path.Combine(extractDir, e.FileName), _ + FileMode.Create, FileAccess.ReadWrite) + Dim n As Integer + Do While (n = input.Read(buffer, 0, buffer.Length) > 0) + output.Write(buffer, 0, n) + Loop + End Using + End If + Loop + End Using + End Sub + + + + + + Create a ZipInputStream, explicitly specifying whether to + keep the underlying stream open. + + + + See the documentation for the ZipInputStream(Stream) + constructor for a discussion of the class, and an example of how to use the class. + + + + The stream to read from. It must be readable. + + + + true if the application would like the stream + to remain open after the ZipInputStream has been closed. + + + + Provides a string representation of the instance. + + + This can be useful for debugging purposes. + + + a string representation of the instance. + + + + Read the data from the stream into the buffer. + + + + + The data for the zipentry will be decrypted and uncompressed, as + necessary, before being copied into the buffer. + + + + You must set the property before calling + Read() the first time for an encrypted entry. To determine if an + entry is encrypted and requires a password, check the ZipEntry.Encryption property. + + + + The buffer to hold the data read from the stream. + the offset within the buffer to copy the first byte read. + the number of bytes to read. + the number of bytes read, after decryption and decompression. + + + + Read the next entry from the zip file. + + + + + Call this method just before calling , + to position the pointer in the zip file to the next entry that can be + read. Subsequent calls to Read(), will decrypt and decompress the + data in the zip file, until Read() returns 0. + + + + Each time you call GetNextEntry(), the pointer in the wrapped + stream is moved to the next entry in the zip file. If you call , and thus re-position the pointer within + the file, you will need to call GetNextEntry() again, to insure + that the file pointer is positioned at the beginning of a zip entry. + + + + This method returns the ZipEntry. Using a stream approach, you will + read the raw bytes for an entry in a zip file via calls to Read(). + Alternatively, you can extract an entry into a file, or a stream, by + calling , or one of its siblings. + + + + + + The ZipEntry read. Returns null (or Nothing in VB) if there are no more + entries in the zip file. + + + + + + Dispose the stream. + + + + + This method disposes the ZipInputStream. It may also close the + underlying stream, depending on which constructor was used. + + + + Typically the application will call Dispose() implicitly, via + a using statement in C#, or a Using statement in VB. + + + + Application code won't call this code directly. This method may + be invoked in two distinct scenarios. If disposing == true, the + method has been called directly or indirectly by a user's code, + for example via the public Dispose() method. In this case, both + managed and unmanaged resources can be referenced and disposed. + If disposing == false, the method has been called by the runtime + from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources + must be referenced or disposed. + + + + + true if the Dispose method was invoked by user code. + + + + + This is a no-op. + + + + + This method always throws a NotSupportedException. + + ignored + ignored + ignored + + + + This method seeks in the underlying stream. + + + + + Call this method if you want to seek around within the zip file for random access. + + + + Applications can intermix calls to Seek() with calls to . After a call to Seek(), + GetNextEntry() will get the next ZipEntry that falls after + the current position in the input stream. You're on your own for finding + out just where to seek in the stream, to get to the various entries. + + + + + the offset point to seek to + the reference point from which to seek + The new position + + + + This method always throws a NotSupportedException. + + ignored + + + + The text encoding to use when reading entries into the zip archive, for + those entries whose filenames or comments cannot be encoded with the + default (IBM437) encoding. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to read zip archives that use something other than + UTF-8 or IBM437, set this property to specify the code page to use when + reading encoded filenames and comments for each ZipEntry in the zip + file. + + + + This property is "provisional". When the entry in the zip archive is not + explicitly marked as using UTF-8, then IBM437 is used to decode filenames + and comments. If a loss of data would result from using IBM436 - + specifically when encoding and decoding is not reflexive - the codepage + specified here is used. It is possible, therefore, to have a given entry + with a Comment encoded in IBM437 and a FileName encoded with + the specified "provisional" codepage. + + + + When a zip file uses an arbitrary, non-UTF8 code page for encoding, there + is no standard way for the reader application - whether DotNetZip, WinZip, + WinRar, or something else - to know which codepage has been used for the + entries. Readers of zip files are not able to inspect the zip file and + determine the codepage that was used for the entries contained within it. + It is left to the application or user to determine the necessary codepage + when reading zip files encoded this way. If you use an incorrect codepage + when reading a zipfile, you will get entries with filenames that are + incorrect, and the incorrect filenames may even contain characters that + are not legal for use within filenames in Windows. Extracting entries with + illegal characters in the filenames will lead to exceptions. It's too bad, + but this is just the way things are with code pages in zip files. Caveat + Emptor. + + + + + + + Size of the work buffer to use for the ZLIB codec during decompression. + + + + Setting this affects the performance and memory efficiency of compression + and decompression. For larger files, setting this to a larger size may + improve performance, but the exact numbers vary depending on available + memory, and a bunch of other variables. I don't have good firm + recommendations on how to set it. You'll have to test it yourself. Or + just leave it alone and accept the default. + + + + + Sets the password to be used on the ZipInputStream instance. + + + + + + When reading a zip archive, this password is used to read and decrypt the + entries that are encrypted within the zip file. When entries within a zip + file use different passwords, set the appropriate password for the entry + before the first call to Read() for each entry. + + + + When reading an entry that is not encrypted, the value of this property is + ignored. + + + + + + + This example uses the ZipInputStream to read and extract entries from a + zip file, using a potentially different password for each entry. + + + byte[] buffer= new byte[2048]; + int n; + using (var raw = File.Open(_inputFileName, FileMode.Open, FileAccess.Read )) + { + using (var input= new ZipInputStream(raw)) + { + ZipEntry e; + while (( e = input.GetNextEntry()) != null) + { + input.Password = PasswordForEntry(e.FileName); + if (e.IsDirectory) continue; + string outputPath = Path.Combine(_extractDir, e.FileName); + using (var output = File.Open(outputPath, FileMode.Create, FileAccess.ReadWrite)) + { + while ((n= input.Read(buffer,0,buffer.Length)) > 0) + { + output.Write(buffer,0,n); + } + } + } + } + } + + + + + + + Always returns true. + + + + + Returns the value of CanSeek for the underlying (wrapped) stream. + + + + + Always returns false. + + + + + Returns the length of the underlying stream. + + + + + Gets or sets the position of the underlying stream. + + + Setting the position is equivalent to calling Seek(value, SeekOrigin.Begin). + + + + + Sort-of like a factory method, ForUpdate is used only when + the application needs to update the zip entry metadata for + a segmented zip file, when the starting segment is earlier + than the ending segment, for a particular entry. + + + + The update is always contiguous, never rolls over. As a + result, this method doesn't need to return a ZSS; it can + simply return a FileStream. That's why it's "sort of" + like a Factory method. + + + Caller must Close/Dispose the stream object returned by + this method. + + + + + + Read from the stream + + the buffer to read + the offset at which to start + the number of bytes to read + the number of bytes actually read + + + + Write to the stream. + + the buffer from which to write + the offset at which to start writing + the number of bytes to write + + + + Name of the filesystem file corresponding to the current segment. + + + + The name is not always the name currently being used in the + filesystem. When rwMode is RwMode.Write, the filesystem file has a + temporary name until the stream is closed or until the next segment is + started. + + + + + + This class exposes a set of COM-accessible wrappers for static + methods available on the ZipFile class. You don't need this + class unless you are using DotNetZip from a COM environment. + + + + + A wrapper for ZipFile.IsZipFile(string) + + The filename to of the zip file to check. + true if the file contains a valid zip file. + + + + A wrapper for ZipFile.IsZipFile(string, bool) + + + We cannot use "overloaded" Method names in COM interop. + So, here, we use a unique name. + + The filename to of the zip file to check. + true if the file contains a valid zip file. + + + + A wrapper for ZipFile.CheckZip(string) + + The filename to of the zip file to check. + + true if the named zip file checks OK. Otherwise, false. + + + + A COM-friendly wrapper for the static method . + + + The filename to of the zip file to check. + + The password to check. + + true if the named zip file checks OK. Otherwise, false. + + + + A wrapper for ZipFile.FixZipDirectory(string) + + The filename to of the zip file to fix. + + + + A wrapper for ZipFile.LibraryVersion + + + the version number on the DotNetZip assembly, formatted as a string. + + + + + An enum providing the options when an error occurs during opening or reading + of a file or directory that is being saved to a zip file. + + + + + This enum describes the actions that the library can take when an error occurs + opening or reading a file, as it is being saved into a Zip archive. + + + + In some cases an error will occur when DotNetZip tries to open a file to be + added to the zip archive. In other cases, an error might occur after the + file has been successfully opened, while DotNetZip is reading the file. + + + + The first problem might occur when calling AddDirectory() on a directory + that contains a Clipper .dbf file; the file is locked by Clipper and + cannot be opened by another process. An example of the second problem is + the ERROR_LOCK_VIOLATION that results when a file is opened by another + process, but not locked, and a range lock has been taken on the file. + Microsoft Outlook takes range locks on .PST files. + + + + + + Throw an exception when an error occurs while zipping. This is the default + behavior. (For COM clients, this is a 0 (zero).) + + + + + When an error occurs during zipping, for example a file cannot be opened, + skip the file causing the error, and continue zipping. (For COM clients, + this is a 1.) + + + + + When an error occurs during zipping, for example a file cannot be opened, + retry the operation that caused the error. Be careful with this option. If + the error is not temporary, the library will retry forever. (For COM + clients, this is a 2.) + + + + + When an error occurs, invoke the zipError event. The event type used is + . A typical use of this option: + a GUI application may wish to pop up a dialog to allow the user to view the + error that occurred, and choose an appropriate action. After your + processing in the error event, if you want to skip the file, set on the + ZipProgressEventArgs.CurrentEntry to Skip. If you want the + exception to be thrown, set ZipErrorAction on the CurrentEntry + to Throw. If you want to cancel the zip, set + ZipProgressEventArgs.Cancel to true. Cancelling differs from using + Skip in that a cancel will not save any further entries, if there are any. + (For COM clients, the value of this enum is a 3.) + + + + + An enum that provides the various encryption algorithms supported by this + library. + + + + + + PkzipWeak implies the use of Zip 2.0 encryption, which is known to be + weak and subvertible. + + + + A note on interoperability: Values of PkzipWeak and None are + specified in PKWARE's zip + specification, and are considered to be "standard". Zip archives + produced using these options will be interoperable with many other zip tools + and libraries, including Windows Explorer. + + + + Values of WinZipAes128 and WinZipAes256 are not part of the Zip + specification, but rather imply the use of a vendor-specific extension from + WinZip. If you want to produce interoperable Zip archives, do not use these + values. For example, if you produce a zip archive using WinZipAes256, you + will be able to open it in Windows Explorer on Windows XP and Vista, but you + will not be able to extract entries; trying this will lead to an "unspecified + error". For this reason, some people have said that a zip archive that uses + WinZip's AES encryption is not actually a zip archive at all. A zip archive + produced this way will be readable with the WinZip tool (Version 11 and + beyond). + + + + There are other third-party tools and libraries, both commercial and + otherwise, that support WinZip's AES encryption. These will be able to read + AES-encrypted zip archives produced by DotNetZip, and conversely applications + that use DotNetZip to read zip archives will be able to read AES-encrypted + archives produced by those tools or libraries. Consult the documentation for + those other tools and libraries to find out if WinZip's AES encryption is + supported. + + + + In case you care: According to the WinZip specification, the + actual AES key used is derived from the via an + algorithm that complies with RFC 2898, using an iteration + count of 1000. The algorithm is sometimes referred to as PBKDF2, which stands + for "Password Based Key Derivation Function #2". + + + + A word about password strength and length: The AES encryption technology is + very good, but any system is only as secure as the weakest link. If you want + to secure your data, be sure to use a password that is hard to guess. To make + it harder to guess (increase its "entropy"), you should make it longer. If + you use normal characters from an ASCII keyboard, a password of length 20 will + be strong enough that it will be impossible to guess. For more information on + that, I'd encourage you to read this + article. + + + + The WinZip AES algorithms are not supported with the version of DotNetZip that + runs on the .NET Compact Framework. This is because .NET CF lacks the + HMACSHA1 class that is required for producing the archive. + + + + + + No encryption at all. + + + + + Traditional or Classic pkzip encryption. + + + + + WinZip AES encryption (128 key bits). + + + + + WinZip AES encryption (256 key bits). + + + + + An encryption algorithm that is not supported by DotNetZip. + + + + + An enum for the options when extracting an entry would overwrite an existing file. + + + + + This enum describes the actions that the library can take when an + Extract() or ExtractWithPassword() method is called to extract an + entry to a filesystem, and the extraction would overwrite an existing filesystem + file. + + + + + + + Throw an exception when extraction would overwrite an existing file. (For + COM clients, this is a 0 (zero).) + + + + + When extraction would overwrite an existing file, overwrite the file silently. + The overwrite will happen even if the target file is marked as read-only. + (For COM clients, this is a 1.) + + + + + When extraction would overwrite an existing file, don't overwrite the file, silently. + (For COM clients, this is a 2.) + + + + + When extraction would overwrite an existing file, invoke the ExtractProgress + event, using an event type of . In + this way, the application can decide, just-in-time, whether to overwrite the + file. For example, a GUI application may wish to pop up a dialog to allow + the user to choose. You may want to examine the property before making + the decision. If, after your processing in the Extract progress event, you + want to NOT extract the file, set + on the ZipProgressEventArgs.CurrentEntry to DoNotOverwrite. + If you do want to extract the file, set ZipEntry.ExtractExistingFile + to OverwriteSilently. If you want to cancel the Extraction, set + ZipProgressEventArgs.Cancel to true. Cancelling differs from using + DoNotOverwrite in that a cancel will not extract any further entries, if + there are any. (For COM clients, the value of this enum is a 3.) + + + + + Enumerates the options for a logical conjunction. This enum is intended for use + internally by the FileSelector class. + + + + + FileSelector encapsulates logic that selects files from a source - a zip file + or the filesystem - based on a set of criteria. This class is used internally + by the DotNetZip library, in particular for the AddSelectedFiles() methods. + This class can also be used independently of the zip capability in DotNetZip. + + + + + + The FileSelector class is used internally by the ZipFile class for selecting + files for inclusion into the ZipFile, when the method, or one of + its overloads, is called. It's also used for the methods. Typically, an + application that creates or manipulates Zip archives will not directly + interact with the FileSelector class. + + + + Some applications may wish to use the FileSelector class directly, to + select files from disk volumes based on a set of criteria, without creating or + querying Zip archives. The file selection criteria include: a pattern to + match the filename; the last modified, created, or last accessed time of the + file; the size of the file; and the attributes of the file. + + + + Consult the documentation for + for more information on specifying the selection criteria. + + + + + + + Constructor that allows the caller to specify file selection criteria. + + + + + This constructor allows the caller to specify a set of criteria for + selection of files. + + + + See for a description of + the syntax of the selectionCriteria string. + + + + By default the FileSelector will traverse NTFS Reparse Points. To + change this, use FileSelector(String, bool). + + + + The criteria for file selection. + + + + Constructor that allows the caller to specify file selection criteria. + + + + + This constructor allows the caller to specify a set of criteria for + selection of files. + + + + See for a description of + the syntax of the selectionCriteria string. + + + + The criteria for file selection. + + whether to traverse NTFS reparse points (junctions). + + + + + Returns a string representation of the FileSelector object. + + The string representation of the boolean logic statement of the file + selection criteria for this instance. + + + + Returns the names of the files in the specified directory + that fit the selection criteria specified in the FileSelector. + + + + This is equivalent to calling + with recurseDirectories = false. + + + + The name of the directory over which to apply the FileSelector + criteria. + + + + A collection of strings containing fully-qualified pathnames of files + that match the criteria specified in the FileSelector instance. + + + + + Returns the names of the files in the specified directory that fit the + selection criteria specified in the FileSelector, optionally recursing + through subdirectories. + + + + This method applies the file selection criteria contained in the + FileSelector to the files contained in the given directory, and + returns the names of files that conform to the criteria. + + + + The name of the directory over which to apply the FileSelector + criteria. + + + + Whether to recurse through subdirectories when applying the file + selection criteria. + + + + A collection of strings containing fully-qualified pathnames of files + that match the criteria specified in the FileSelector instance. + + + + + Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. + + + + + This method applies the criteria set in the FileSelector instance (as described in + the ) to the specified ZipFile. Using this + method, for example, you can retrieve all entries from the given ZipFile that + have filenames ending in .txt. + + + + Normally, applications would not call this method directly. This method is used + by the ZipFile class. + + + + Using the appropriate SelectionCriteria, you can retrieve entries based on size, + time, and attributes. See for a + description of the syntax of the SelectionCriteria string. + + + + + The ZipFile from which to retrieve entries. + + a collection of ZipEntry objects that conform to the criteria. + + + + Retrieve the ZipEntry items in the ZipFile that conform to the specified criteria. + + + + + This method applies the criteria set in the FileSelector instance (as described in + the ) to the specified ZipFile. Using this + method, for example, you can retrieve all entries from the given ZipFile that + have filenames ending in .txt. + + + + Normally, applications would not call this method directly. This method is used + by the ZipFile class. + + + + This overload allows the selection of ZipEntry instances from the ZipFile to be restricted + to entries contained within a particular directory in the ZipFile. + + + + Using the appropriate SelectionCriteria, you can retrieve entries based on size, + time, and attributes. See for a + description of the syntax of the SelectionCriteria string. + + + + + The ZipFile from which to retrieve entries. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + a collection of ZipEntry objects that conform to the criteria. + + + + The string specifying which files to include when retrieving. + + + + + Specify the criteria in statements of 3 elements: a noun, an operator, + and a value. Consider the string "name != *.doc" . The noun is + "name". The operator is "!=", implying "Not Equal". The value is + "*.doc". That criterion, in English, says "all files with a name that + does not end in the .doc extension." + + + + Supported nouns include "name" (or "filename") for the filename; + "atime", "mtime", and "ctime" for last access time, last modfied time, + and created time of the file, respectively; "attributes" (or "attrs") + for the file attributes; "size" (or "length") for the file length + (uncompressed); and "type" for the type of object, either a file or a + directory. The "attributes", "type", and "name" nouns all support = + and != as operators. The "size", "atime", "mtime", and "ctime" nouns + support = and !=, and >, >=, <, <= as well. The times are + taken to be expressed in local time. + + + + Specify values for the file attributes as a string with one or more of + the characters H,R,S,A,I,L in any order, implying file attributes of + Hidden, ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint + (symbolic link) respectively. + + + + To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as + the format. If you omit the HH:mm:ss portion, it is assumed to be + 00:00:00 (midnight). + + + + The value for a size criterion is expressed in integer quantities of + bytes, kilobytes (use k or kb after the number), megabytes (m or mb), + or gigabytes (g or gb). + + + + The value for a name is a pattern to match against the filename, + potentially including wildcards. The pattern follows CMD.exe glob + rules: * implies one or more of any character, while ? implies one + character. If the name pattern contains any slashes, it is matched to + the entire filename, including the path; otherwise, it is matched + against only the filename without the path. This means a pattern of + "*\*.*" matches all files one directory level deep, while a pattern of + "*.*" matches all files in all directories. + + + + To specify a name pattern that includes spaces, use single quotes + around the pattern. A pattern of "'* *.*'" will match all files that + have spaces in the filename. The full criteria string for that would + be "name = '* *.*'" . + + + + The value for a type criterion is either F (implying a file) or D + (implying a directory). + + + + Some examples: + + + + + criteria + Files retrieved + + + + name != *.xls + any file with an extension that is not .xls + + + + + name = *.mp3 + any file with a .mp3 extension. + + + + + *.mp3 + (same as above) any file with a .mp3 extension. + + + + + attributes = A + all files whose attributes include the Archive bit. + + + + + attributes != H + all files whose attributes do not include the Hidden bit. + + + + + mtime > 2009-01-01 + all files with a last modified time after January 1st, 2009. + + + + + ctime > 2009/01/01-03:00:00 + all files with a created time after 3am (local time), + on January 1st, 2009. + + + + + size > 2gb + all files whose uncompressed size is greater than 2gb. + + + + + type = D + all directories in the filesystem. + + + + + + You can combine criteria with the conjunctions AND, OR, and XOR. Using + a string like "name = *.txt AND size >= 100k" for the + selectionCriteria retrieves entries whose names end in .txt, and whose + uncompressed size is greater than or equal to 100 kilobytes. + + + + For more complex combinations of criteria, you can use parenthesis to + group clauses in the boolean logic. Absent parenthesis, the + precedence of the criterion atoms is determined by order of + appearance. Unlike the C# language, the AND conjunction does not take + precendence over the logical OR. This is important only in strings + that contain 3 or more criterion atoms. In other words, "name = *.txt + and size > 1000 or attributes = H" implies "((name = *.txt AND size + > 1000) OR attributes = H)" while "attributes = H OR name = *.txt + and size > 1000" evaluates to "((attributes = H OR name = *.txt) + AND size > 1000)". When in doubt, use parenthesis. + + + + Using time properties requires some extra care. If you want to + retrieve all entries that were last updated on 2009 February 14, + specify "mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this + to say: all files updated after 12:00am on February 14th, until + 12:00am on February 15th. You can use the same bracketing approach to + specify any time period - a year, a month, a week, and so on. + + + + The syntax allows one special case: if you provide a string with no + spaces, it is treated as a pattern to match for the filename. + Therefore a string like "*.xls" will be equivalent to specifying "name + = *.xls". This "shorthand" notation does not work with compound + criteria. + + + + There is no logic in this class that insures that the inclusion + criteria are internally consistent. For example, it's possible to + specify criteria that says the file must have a size of less than 100 + bytes, as well as a size that is greater than 1000 bytes. Obviously + no file will ever satisfy such criteria, but this class does not check + for or detect such inconsistencies. + + + + + + Thrown in the setter if the value has an invalid syntax. + + + + + Indicates whether searches will traverse NTFS reparse points, like Junctions. + + + + + Summary description for EnumUtil. + + + + + Returns the value of the DescriptionAttribute if the specified Enum + value has one. If not, returns the ToString() representation of the + Enum value. + + The Enum to get the description for + + + + + Converts the string representation of the name or numeric value of one + or more enumerated constants to an equivalent enumerated object. + Note: use the DescriptionAttribute on enum values to enable this. + + The System.Type of the enumeration. + + A string containing the name or value to convert. + + + + + + Converts the string representation of the name or numeric value of one + or more enumerated constants to an equivalent enumerated object. A + parameter specified whether the operation is case-sensitive. Note: + use the DescriptionAttribute on enum values to enable this. + + The System.Type of the enumeration. + + A string containing the name or value to convert. + + + Whether the operation is case-sensitive or not. + + + + + This is a helper class supporting WinZip AES encryption. + This class is intended for use only by the DotNetZip library. + + + + Most uses of the DotNetZip library will not involve direct calls into + the WinZipAesCrypto class. Instead, the WinZipAesCrypto class is + instantiated and used by the ZipEntry() class when WinZip AES + encryption or decryption on an entry is employed. + + + + + A stream that encrypts as it writes, or decrypts as it reads. The + Crypto is AES in CTR (counter) mode, which is compatible with the AES + encryption employed by WinZip 12.0. + + + + The AES/CTR encryption protocol used by WinZip works like this: + + - start with a counter, initialized to zero. + + - to encrypt, take the data by 16-byte blocks. For each block: + - apply the transform to the counter + - increement the counter + - XOR the result of the transform with the plaintext to + get the ciphertext. + - compute the mac on the encrypted bytes + - when finished with all blocks, store the computed MAC. + + - to decrypt, take the data by 16-byte blocks. For each block: + - compute the mac on the encrypted bytes, + - apply the transform to the counter + - increement the counter + - XOR the result of the transform with the ciphertext to + get the plaintext. + - when finished with all blocks, compare the computed MAC against + the stored MAC + + + + + + + The constructor. + + The underlying stream + To either encrypt or decrypt. + The pre-initialized WinZipAesCrypto object. + The maximum number of bytes to read from the stream. + + + + Close the stream. + + + + + Flush the content in the stream. + + + + + This method throws a NotImplementedException. + + + + + This method throws a NotImplementedException. + + + + + Returns the final HMAC-SHA1-80 for the data that was encrypted. + + + + + Returns true if the stream can be read. + + + + + Always returns false. + + + + + Returns true if the CryptoMode is Encrypt. + + + + + Getting this property throws a NotImplementedException. + + + + + Getting or Setting this property throws a NotImplementedException. + + + + + Issued when an ZipEntry.ExtractWithPassword() method is invoked + with an incorrect password. + + + + + Base class for all exceptions defined by and throw by the Zip library. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Indicates that a read was attempted on a stream, and bad or incomplete data was + received. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Issued when an CRC check fails upon extracting an entry from a zip archive. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Issued when errors occur saving a self-extracting archive. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Indicates that an operation was attempted on a ZipFile which was not possible + given the state of the instance. For example, if you call Save() on a ZipFile + which has no filename set, you can get this exception. + + + + + Default ctor. + + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The message in the exception. + The innerException for this exception. + + + + Come on, you know how exceptions work. Why are you looking at this documentation? + + The serialization info for the exception. + The streaming context from which to deserialize. + + + + Collects general purpose utility methods. + + + + private null constructor + + + + Utility routine for transforming path names from filesystem format (on Windows that means backslashes) to + a format suitable for use within zipfiles. This means trimming the volume letter and colon (if any) And + swapping backslashes for forward slashes. + + source path. + transformed path + + + + Finds a signature in the zip stream. This is useful for finding + the end of a zip entry, for example, or the beginning of the next ZipEntry. + + + + + Scans through 64k at a time. + + + + If the method fails to find the requested signature, the stream Position + after completion of this method is unchanged. If the method succeeds in + finding the requested signature, the stream position after completion is + direct AFTER the signature found in the stream. + + + + The stream to search + The 4-byte signature to find + The number of bytes read + + + + Create a pseudo-random filename, suitable for use as a temporary + file, and open it. + + + + The System.IO.Path.GetRandomFileName() method is not available on + the Compact Framework, so this library provides its own substitute + on NETCF. + + + This method produces a filename of the form + DotNetZip-xxxxxxxx.tmp, where xxxxxxxx is replaced by randomly + chosen characters, and creates that file. + + + + + + Workitem 7889: handle ERROR_LOCK_VIOLATION during read + + + This could be gracefully handled with an extension attribute, but + This assembly is built for .NET 2.0, so I cannot use them. + + + + + A decorator stream. It wraps another stream, and performs bookkeeping + to keep track of the stream Position. + + + + In some cases, it is not possible to get the Position of a stream, let's + say, on a write-only output stream like ASP.NET's + Response.OutputStream, or on a different write-only stream + provided as the destination for the zip by the application. In this + case, programmers can use this counting stream to count the bytes read + or written. + + + Consider the scenario of an application that saves a self-extracting + archive (SFX), that uses a custom SFX stub. + + + Saving to a filesystem file, the application would open the + filesystem file (getting a FileStream), save the custom sfx stub + into it, and then call ZipFile.Save(), specifying the same + FileStream. ZipFile.Save() does the right thing for the zipentry + offsets, by inquiring the Position of the FileStream before writing + any data, and then adding that initial offset into any ZipEntry + offsets in the zip directory. Everything works fine. + + + Now suppose the application is an ASPNET application and it saves + directly to Response.OutputStream. It's not possible for DotNetZip to + inquire the Position, so the offsets for the SFX will be wrong. + + + The workaround is for the application to use this class to wrap + HttpResponse.OutputStream, then write the SFX stub and the ZipFile + into that wrapper stream. Because ZipFile.Save() can inquire the + Position, it will then do the right thing with the offsets. + + + + + + The constructor. + + The underlying stream + + + + Adjust the byte count on the stream. + + + + the number of bytes to subtract from the count. + + + + + Subtract delta from the count of bytes written to the stream. + This is necessary when seeking back, and writing additional data, + as happens in some cases when saving Zip files. + + + + + + The read method. + + The buffer to hold the data read from the stream. + the offset within the buffer to copy the first byte read. + the number of bytes to read. + the number of bytes read, after decryption and decompression. + + + + Write data into the stream. + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Flushes the underlying stream. + + + + + Seek in the stream. + + the offset point to seek to + the reference point from which to seek + The new position + + + + Set the length of the underlying stream. Be careful with this! + + + the length to set on the underlying stream. + + + + Gets the wrapped stream. + + + + + The count of bytes written out to the stream. + + + + + the count of bytes that have been read from the stream. + + + + + Whether the stream can be read. + + + + + Whether it is possible to call Seek() on the stream. + + + + + Whether it is possible to call Write() on the stream. + + + + + The length of the underlying stream. + + + + + Returns the sum of number of bytes written, plus the initial + offset before writing. + + + + + The Position of the stream. + + + + + This class implements the "traditional" or "classic" PKZip encryption, + which today is considered to be weak. On the other hand it is + ubiquitous. This class is intended for use only by the DotNetZip + library. + + + + Most uses of the DotNetZip library will not involve direct calls into + the ZipCrypto class. Instead, the ZipCrypto class is instantiated and + used by the ZipEntry() class when encryption or decryption on an entry + is employed. If for some reason you really wanted to use a weak + encryption algorithm in some other application, you might use this + library. But you would be much better off using one of the built-in + strong encryption libraries in the .NET Framework, like the AES + algorithm or SHA. + + + + + The default constructor for ZipCrypto. + + + + This class is intended for internal use by the library only. It's + probably not useful to you. Seriously. Stop reading this + documentation. It's a waste of your time. Go do something else. + Check the football scores. Go get an ice cream with a friend. + Seriously. + + + + + + Call this method on a cipher text to render the plaintext. You must + first initialize the cipher with a call to InitCipher. + + + + + var cipher = new ZipCrypto(); + cipher.InitCipher(Password); + // Decrypt the header. This has a side effect of "further initializing the + // encryption keys" in the traditional zip encryption. + byte[] DecryptedMessage = cipher.DecryptMessage(EncryptedMessage); + + + + The encrypted buffer. + + The number of bytes to encrypt. + Should be less than or equal to CipherText.Length. + + + The plaintext. + + + + This is the converse of DecryptMessage. It encrypts the plaintext + and produces a ciphertext. + + + The plain text buffer. + + + The number of bytes to encrypt. + Should be less than or equal to plainText.Length. + + + The ciphertext. + + + + This initializes the cipher with the given password. + See AppNote.txt for details. + + + + The passphrase for encrypting or decrypting with this cipher. + + + + + Step 1 - Initializing the encryption keys + ----------------------------------------- + Start with these keys: + Key(0) := 305419896 (0x12345678) + Key(1) := 591751049 (0x23456789) + Key(2) := 878082192 (0x34567890) + + Then, initialize the keys with a password: + + loop for i from 0 to length(password)-1 + update_keys(password(i)) + end loop + + Where update_keys() is defined as: + + update_keys(char): + Key(0) := crc32(key(0),char) + Key(1) := Key(1) + (Key(0) bitwiseAND 000000ffH) + Key(1) := Key(1) * 134775813 + 1 + Key(2) := crc32(key(2),key(1) rightshift 24) + end update_keys + + Where crc32(old_crc,char) is a routine that given a CRC value and a + character, returns an updated CRC value after applying the CRC-32 + algorithm described elsewhere in this document. + + + + + After the keys are initialized, then you can use the cipher to + encrypt the plaintext. + + + + Essentially we encrypt the password with the keys, then discard the + ciphertext for the password. This initializes the keys for later use. + + + + + + + From AppNote.txt: + unsigned char decrypt_byte() + local unsigned short temp + temp :=- Key(2) | 2 + decrypt_byte := (temp * (temp ^ 1)) bitshift-right 8 + end decrypt_byte + + + + + A Stream for reading and concurrently decrypting data from a zip file, + or for writing and concurrently encrypting data to a zip file. + + + + The constructor. + The underlying stream + To either encrypt or decrypt. + The pre-initialized ZipCrypto object. + + + + Delegate in which the application writes the ZipEntry content for the named entry. + + + The name of the entry that must be written. + The stream to which the entry data should be written. + + + When you add an entry and specify a WriteDelegate, via , the application + code provides the logic that writes the entry data directly into the zip file. + + + + + This example shows how to define a WriteDelegate that obtains a DataSet, and then + writes the XML for the DataSet into the zip archive. There's no need to + save the XML to a disk file first. + + + private void WriteEntry (String filename, Stream output) + { + DataSet ds1 = ObtainDataSet(); + ds1.WriteXml(output); + } + + private void Run() + { + using (var zip = new ZipFile()) + { + zip.AddEntry(zipEntryName, WriteEntry); + zip.Save(zipFileName); + } + } + + + + Private Sub WriteEntry (ByVal filename As String, ByVal output As Stream) + DataSet ds1 = ObtainDataSet() + ds1.WriteXml(stream) + End Sub + + Public Sub Run() + Using zip = New ZipFile + zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) + zip.Save(zipFileName) + End Using + End Sub + + + + + + + Delegate in which the application opens the stream, just-in-time, for the named entry. + + + + The name of the ZipEntry that the application should open the stream for. + + + + When you add an entry via , the application code provides the logic that + opens and closes the stream for the given ZipEntry. + + + + + + + Delegate in which the application closes the stream, just-in-time, for the named entry. + + + + The name of the ZipEntry that the application should close the stream for. + + + The stream to be closed. + + + When you add an entry via , the application code provides the logic that + opens and closes the stream for the given ZipEntry. + + + + + + + Delegate for the callback by which the application tells the + library the CompressionLevel to use for a file. + + + + + Using this callback, the application can, for example, specify that + previously-compressed files (.mp3, .png, .docx, etc) should use a + CompressionLevel of None, or can set the compression level based + on any other factor. + + + + + + + In an EventArgs type, indicates which sort of progress event is being + reported. + + + There are events for reading, events for saving, and events for + extracting. This enumeration allows a single EventArgs type to be sued to + describe one of multiple subevents. For example, a SaveProgress event is + invoked before, after, and during the saving of a single entry. The value + of an enum with this type, specifies which event is being triggered. The + same applies to Extraction, Reading and Adding events. + + + + + Indicates that a Add() operation has started. + + + + + Indicates that an individual entry in the archive has been added. + + + + + Indicates that a Add() operation has completed. + + + + + Indicates that a Read() operation has started. + + + + + Indicates that an individual entry in the archive is about to be read. + + + + + Indicates that an individual entry in the archive has just been read. + + + + + Indicates that a Read() operation has completed. + + + + + The given event reports the number of bytes read so far + during a Read() operation. + + + + + Indicates that a Save() operation has started. + + + + + Indicates that an individual entry in the archive is about to be written. + + + + + Indicates that an individual entry in the archive has just been saved. + + + + + Indicates that a Save() operation has completed. + + + + + Indicates that the zip archive has been created in a + temporary location during a Save() operation. + + + + + Indicates that the temporary file is about to be renamed to the final archive + name during a Save() operation. + + + + + Indicates that the temporary file is has just been renamed to the final archive + name during a Save() operation. + + + + + Indicates that the self-extracting archive has been compiled + during a Save() operation. + + + + + The given event is reporting the number of source bytes that have run through the compressor so far + during a Save() operation. + + + + + Indicates that an entry is about to be extracted. + + + + + Indicates that an entry has just been extracted. + + + + + Indicates that extraction of an entry would overwrite an existing + filesystem file. You must use + + ExtractExistingFileAction.InvokeExtractProgressEvent in the call + to ZipEntry.Extract() in order to receive this event. + + + + + The given event is reporting the number of bytes written so far for + the current entry during an Extract() operation. + + + + + Indicates that an ExtractAll operation is about to begin. + + + + + Indicates that an ExtractAll operation has completed. + + + + + Indicates that an error has occurred while saving a zip file. + This generally means the file cannot be opened, because it has been + removed, or because it is locked by another process. It can also + mean that the file cannot be Read, because of a range lock conflict. + + + + + Provides information about the progress of a save, read, or extract operation. + This is a base class; you will probably use one of the classes derived from this one. + + + + + The total number of entries to be saved or extracted. + + + + + The name of the last entry saved or extracted. + + + + + In an event handler, set this to cancel the save or extract + operation that is in progress. + + + + + The type of event being reported. + + + + + Returns the archive name associated to this event. + + + + + The number of bytes read or written so far for this entry. + + + + + Total number of bytes that will be read or written for this entry. + This number will be -1 if the value cannot be determined. + + + + + Provides information about the progress of a Read operation. + + + + + Provides information about the progress of a Add operation. + + + + + Provides information about the progress of a save operation. + + + + + Constructor for the SaveProgressEventArgs. + + the name of the zip archive. + whether this is before saving the entry, or after + The total number of entries in the zip archive. + Number of entries that have been saved. + The entry involved in the event. + + + + Number of entries saved so far. + + + + + Provides information about the progress of the extract operation. + + + + + Constructor for the ExtractProgressEventArgs. + + the name of the zip archive. + whether this is before saving the entry, or after + The total number of entries in the zip archive. + Number of entries that have been extracted. + The entry involved in the event. + The location to which entries are extracted. + + + + Number of entries extracted so far. This is set only if the + EventType is Extracting_BeforeExtractEntry or Extracting_AfterExtractEntry, and + the Extract() is occurring witin the scope of a call to ExtractAll(). + + + + + Returns the extraction target location, a filesystem path. + + + + + Provides information about the an error that occurred while zipping. + + + + + Returns the exception that occurred, if any. + + + + + Returns the name of the file that caused the exception, if any. + + + + + Represents a single entry in a ZipFile. Typically, applications get a ZipEntry + by enumerating the entries within a ZipFile, or by adding an entry to a ZipFile. + + + + + Reads one entry from the zip directory structure in the zip file. + + + + The zipfile for which a directory entry will be read. From this param, the + method gets the ReadStream and the expected text encoding + (ProvisionalAlternateEncoding) which is used if the entry is not marked + UTF-8. + + + + a list of previously seen entry names; used to prevent duplicates. + + + the entry read from the archive. + + + + Returns true if the passed-in value is a valid signature for a ZipDirEntry. + + the candidate 4-byte signature value. + true, if the signature is valid according to the PKWare spec. + + + + Default constructor. + + + Applications should never need to call this directly. It is exposed to + support COM Automation environments. + + + + + Sets the NTFS Creation, Access, and Modified times for the given entry. + + + + + When adding an entry from a file or directory, the Creation, Access, and + Modified times for the given entry are automatically set from the + filesystem values. When adding an entry from a stream or string, the + values are implicitly set to DateTime.Now. The application may wish to + set these values to some arbitrary value, before saving the archive, and + can do so using the various setters. If you want to set all of the times, + this method is more efficient. + + + + The values you set here will be retrievable with the , and properties. + + + + When this method is called, if both and are false, then the + EmitTimesInWindowsFormatWhenSaving flag is automatically set. + + + + DateTime values provided here without a DateTimeKind are assumed to be Local Time. + + + + the creation time of the entry. + the last access time of the entry. + the last modified time of the entry. + + + + + + + + + Provides a string representation of the instance. + a string representation of the instance. + + + + Extract the entry to the filesystem, starting at the current + working directory. + + + + This method has a bunch of overloads! One of them is sure to + be the right one for you... If you don't like these, check + out the ExtractWithPassword() methods. + + + + + + + + + This method extracts an entry from a zip file into the current + working directory. The path of the entry as extracted is the full + path as specified in the zip archive, relative to the current + working directory. After the file is extracted successfully, the + file attributes and timestamps are set. + + + + The action taken when extraction an entry would overwrite an + existing file is determined by the property. + + + + Within the call to Extract(), the content for the entry is + written into a filesystem file, and then the last modified time of the + file is set according to the property on + the entry. See the remarks the property for + some details about the last modified time. + + + + + + + Extract the entry to a file in the filesystem, using the specified + behavior when extraction would overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the file is set after + extraction. + + + + + The action to take if extraction would overwrite an existing file. + + + + + Extracts the entry to the specified stream. + + + + + The caller can specify any write-able stream, for example a , a , or ASP.NET's + Response.OutputStream. The content will be decrypted and + decompressed as necessary. If the entry is encrypted and no password + is provided, this method will throw. + + + The position on the stream is not reset by this method before it extracts. + You may want to call stream.Seek() before calling ZipEntry.Extract(). + + + + + the stream to which the entry should be extracted. + + + + + + Extract the entry to the filesystem, starting at the specified base + directory. + + + the pathname of the base directory + + + + + + This example extracts only the entries in a zip file that are .txt files, + into a directory called "textfiles". + + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) + { + foreach (string s1 in zip.EntryFilenames) + { + if (s1.EndsWith(".txt")) + { + zip[s1].Extract("textfiles"); + } + } + } + + + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") + Dim s1 As String + For Each s1 In zip.EntryFilenames + If s1.EndsWith(".txt") Then + zip(s1).Extract("textfiles") + End If + Next + End Using + + + + + + + Using this method, existing entries in the filesystem will not be + overwritten. If you would like to force the overwrite of existing + files, see the property, or call + . + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified behavior when extraction would + overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + + + String sZipPath = "Airborne.zip"; + String sFilePath = "Readme.txt"; + String sRootFolder = "Digado"; + using (ZipFile zip = ZipFile.Read(sZipPath)) + { + if (zip.EntryFileNames.Contains(sFilePath)) + { + // use the string indexer on the zip file + zip[sFileName].Extract(sRootFolder, + ExtractExistingFileAction.OverwriteSilently); + } + } + + + + Dim sZipPath as String = "Airborne.zip" + Dim sFilePath As String = "Readme.txt" + Dim sRootFolder As String = "Digado" + Using zip As ZipFile = ZipFile.Read(sZipPath) + If zip.EntryFileNames.Contains(sFilePath) + ' use the string indexer on the zip file + zip(sFilePath).Extract(sRootFolder, _ + ExtractExistingFileAction.OverwriteSilently) + End If + End Using + + + + the pathname of the base directory + + The action to take if extraction would overwrite an existing file. + + + + + Extract the entry to the filesystem, using the current working directory + and the specified password. + + + + This method has a bunch of overloads! One of them is sure to be + the right one for you... + + + + + + + + + Existing entries in the filesystem will not be overwritten. If you + would like to force the overwrite of existing files, see the property, or call + . + + + + See the remarks on the property for some + details about how the "last modified" time of the created file is + set. + + + + + In this example, entries that use encryption are extracted using a + particular password. + + using (var zip = ZipFile.Read(FilePath)) + { + foreach (ZipEntry e in zip) + { + if (e.UsesEncryption) + e.ExtractWithPassword("Secret!"); + else + e.Extract(); + } + } + + + Using zip As ZipFile = ZipFile.Read(FilePath) + Dim e As ZipEntry + For Each e In zip + If (e.UsesEncryption) + e.ExtractWithPassword("Secret!") + Else + e.Extract + End If + Next + End Using + + + The Password to use for decrypting the entry. + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified password. + + + + + + + + Existing entries in the filesystem will not be overwritten. If you + would like to force the overwrite of existing files, see the property, or call + . + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + The pathname of the base directory. + The Password to use for decrypting the entry. + + + + Extract the entry to a file in the filesystem, relative to the + current directory, using the specified behavior when extraction + would overwrite an existing file. + + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + + The Password to use for decrypting the entry. + + + The action to take if extraction would overwrite an existing file. + + + + + Extract the entry to the filesystem, starting at the specified base + directory, and using the specified behavior when extraction would + overwrite an existing file. + + + + See the remarks on the property, for some + details about how the last modified time of the created file is set. + + + the pathname of the base directory + + The action to take if extraction would + overwrite an existing file. + + The Password to use for decrypting the entry. + + + + Extracts the entry to the specified stream, using the specified + Password. For example, the caller could extract to Console.Out, or + to a MemoryStream. + + + + + The caller can specify any write-able stream, for example a , a , or ASP.NET's + Response.OutputStream. The content will be decrypted and + decompressed as necessary. If the entry is encrypted and no password + is provided, this method will throw. + + + The position on the stream is not reset by this method before it extracts. + You may want to call stream.Seek() before calling ZipEntry.Extract(). + + + + + + the stream to which the entry should be extracted. + + + The password to use for decrypting the entry. + + + + + Opens a readable stream corresponding to the zip entry in the + archive. The stream decompresses and decrypts as necessary, as it + is read. + + + + + + DotNetZip offers a variety of ways to extract entries from a zip + file. This method allows an application to extract an entry by + reading a . + + + + The return value is of type . Use it as you would any + stream for reading. When an application calls on that stream, it will + receive data from the zip entry that is decrypted and decompressed + as necessary. + + + + CrcCalculatorStream adds one additional feature: it keeps a + CRC32 checksum on the bytes of the stream as it is read. The CRC + value is available in the property on the + CrcCalculatorStream. When the read is complete, your + application + should check this CRC against the + property on the ZipEntry to validate the content of the + ZipEntry. You don't have to validate the entry using the CRC, but + you should, to verify integrity. Check the example for how to do + this. + + + + If the entry is protected with a password, then you need to provide + a password prior to calling , either by + setting the property on the entry, or the + property on the ZipFile + itself. Or, you can use , the + overload of OpenReader that accepts a password parameter. + + + + If you want to extract entry data into a write-able stream that is + already opened, like a , do not + use this method. Instead, use . + + + + Your application may use only one stream created by OpenReader() at + a time, and you should not call other Extract methods before + completing your reads on a stream obtained from OpenReader(). This + is because there is really only one source stream for the compressed + content. A call to OpenReader() seeks in the source stream, to the + beginning of the compressed content. A subsequent call to + OpenReader() on a different entry will seek to a different position + in the source stream, as will a call to Extract() or one of its + overloads. This will corrupt the state for the decompressing stream + from the original call to OpenReader(). + + + + The OpenReader() method works only when the ZipEntry is + obtained from an instance of ZipFile. This method will throw + an exception if the ZipEntry is obtained from a . + + + + + This example shows how to open a zip archive, then read in a named + entry via a stream. After the read loop is complete, the code + compares the calculated during the read loop with the expected CRC + on the ZipEntry, to verify the extraction. + + using (ZipFile zip = new ZipFile(ZipFileToRead)) + { + ZipEntry e1= zip["Elevation.mp3"]; + using (Ionic.Zlib.CrcCalculatorStream s = e1.OpenReader()) + { + byte[] buffer = new byte[4096]; + int n, totalBytesRead= 0; + do { + n = s.Read(buffer,0, buffer.Length); + totalBytesRead+=n; + } while (n>0); + if (s.Crc32 != e1.Crc32) + throw new Exception(string.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)); + if (totalBytesRead != e1.UncompressedSize) + throw new Exception(string.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)); + } + } + + + Using zip As New ZipFile(ZipFileToRead) + Dim e1 As ZipEntry = zip.Item("Elevation.mp3") + Using s As Ionic.Zlib.CrcCalculatorStream = e1.OpenReader + Dim n As Integer + Dim buffer As Byte() = New Byte(4096) {} + Dim totalBytesRead As Integer = 0 + Do + n = s.Read(buffer, 0, buffer.Length) + totalBytesRead = (totalBytesRead + n) + Loop While (n > 0) + If (s.Crc32 <> e1.Crc32) Then + Throw New Exception(String.Format("The Zip Entry failed the CRC Check. (0x{0:X8}!=0x{1:X8})", s.Crc32, e1.Crc32)) + End If + If (totalBytesRead <> e1.UncompressedSize) Then + Throw New Exception(String.Format("We read an unexpected number of bytes. ({0}!={1})", totalBytesRead, e1.UncompressedSize)) + End If + End Using + End Using + + + + The Stream for reading. + + + + Opens a readable stream for an encrypted zip entry in the archive. + The stream decompresses and decrypts as necessary, as it is read. + + + + + See the documentation on the method for + full details. This overload allows the application to specify a + password for the ZipEntry to be read. + + + + The password to use for decrypting the entry. + The Stream for reading. + + + + Pass in either basedir or s, but not both. + In other words, you can extract to a stream or to a directory (filesystem), but not both! + The Password param is required for encrypted entries. + + + + + Extract to a stream + In other words, you can extract to a stream or to a directory (filesystem), but not both! + The Password param is required for encrypted entries. + + + + + Validates that the args are consistent; returning whether the caller can return + because it's done, or not (caller should continue) + + + + + Validates that the args are consistent; returning whether the caller can return + because it's done, or not (caller should continue) + + + + + Reads one ZipEntry from the given stream. The content for + the entry does not get decompressed or decrypted. This method + basically reads metadata, and seeks. + + the ZipContainer this entry belongs to. + + true of this is the first entry being read from the stream. + + the ZipEntry read from the stream. + + + + Finds a particular segment in the given extra field. + This is used when modifying a previously-generated + extra field, in particular when removing the AES crypto + segment in the extra field. + + + + + At current cursor position in the stream, read the extra + field, and set the properties on the ZipEntry instance + appropriately. This can be called when processing the + Extra field in the Central Directory, or in the local + header. + + + + + generate and return a byte array that encodes the filename + for the entry. + + + + side effects: generate and store into _CommentBytes the + byte array for any comment attached to the entry. Also + sets _actualEncoding to indicate the actual encoding + used. The same encoding is used for both filename and + comment. + + + + + + Stores the position of the entry source stream, or, if the position is + already stored, seeks to that position. + + + + + This method is called in prep for reading the source stream. If PKZIP + encryption is used, then we need to calc the CRC32 before doing the + encryption, because the CRC is used in the 12th byte of the PKZIP + encryption header. So, we need to be able to seek backward in the source + when saving the ZipEntry. This method is called from the place that + calculates the CRC, and also from the method that does the encryption of + the file data. + + + + The first time through, this method sets the _sourceStreamOriginalPosition + field. Subsequent calls to this method seek to that position. + + + + + + Copy metadata that may have been changed by the app. We do this when + resetting the zipFile instance. If the app calls Save() on a ZipFile, then + tries to party on that file some more, we may need to Reset() it , which + means re-reading the entries and then copying the metadata. I think. + + + + + Set the input stream and get its length, if possible. The length is + used for progress updates, AND, to allow an optimization in case of + a stream/file of zero length. In that case we skip the Encrypt and + compression Stream. (like DeflateStream or BZip2OutputStream) + + + + + Prepare the given stream for output - wrap it in a CountingStream, and + then in a CRC stream, and an encryptor and deflator as appropriate. + + + + Previously this was used in ZipEntry.Write(), but in an effort to + introduce some efficiencies in that method I've refactored to put the + code inline. This method still gets called by ZipOutputStream. + + + + + + True if the referenced entry is a directory. + + + + + Provides a human-readable string with information about the ZipEntry. + + + + + The time and date at which the file indicated by the ZipEntry was + last modified. + + + + + The DotNetZip library sets the LastModified value for an entry, equal to + the Last Modified time of the file in the filesystem. If an entry is + added from a stream, the library uses System.DateTime.Now for this + value, for the given entry. + + + + This property allows the application to retrieve and possibly set the + LastModified value on an entry, to an arbitrary value. values with a + setting of DateTimeKind.Unspecified are taken to be expressed as + DateTimeKind.Local. + + + + Be aware that because of the way PKWare's + Zip specification describes how times are stored in the zip file, + the full precision of the System.DateTime datatype is not stored + for the last modified time when saving zip files. For more information on + how times are formatted, see the PKZip specification. + + + + The actual last modified time of a file can be stored in multiple ways in + the zip file, and they are not mutually exclusive: + + + + + In the so-called "DOS" format, which has a 2-second precision. Values + are rounded to the nearest even second. For example, if the time on the + file is 12:34:43, then it will be stored as 12:34:44. This first value + is accessible via the LastModified property. This value is always + present in the metadata for each zip entry. In some cases the value is + invalid, or zero. + + + + In the so-called "Windows" or "NTFS" format, as an 8-byte integer + quantity expressed as the number of 1/10 milliseconds (in other words + the number of 100 nanosecond units) since January 1, 1601 (UTC). This + format is how Windows represents file times. This time is accessible + via the ModifiedTime property. + + + + In the "Unix" format, a 4-byte quantity specifying the number of seconds since + January 1, 1970 UTC. + + + + In an older format, now deprecated but still used by some current + tools. This format is also a 4-byte quantity specifying the number of + seconds since January 1, 1970 UTC. + + + + + + Zip tools and libraries will always at least handle (read or write) the + DOS time, and may also handle the other time formats. Keep in mind that + while the names refer to particular operating systems, there is nothing in + the time formats themselves that prevents their use on other operating + systems. + + + + When reading ZIP files, the DotNetZip library reads the Windows-formatted + time, if it is stored in the entry, and sets both LastModified and + ModifiedTime to that value. When writing ZIP files, the DotNetZip + library by default will write both time quantities. It can also emit the + Unix-formatted time if desired (See .) + + + + The last modified time of the file created upon a call to + ZipEntry.Extract() may be adjusted during extraction to compensate + for differences in how the .NET Base Class Library deals with daylight + saving time (DST) versus how the Windows filesystem deals with daylight + saving time. Raymond Chen provides + some good context. + + + + In a nutshell: Daylight savings time rules change regularly. In 2007, for + example, the inception week of DST changed. In 1977, DST was in place all + year round. In 1945, likewise. And so on. Win32 does not attempt to + guess which time zone rules were in effect at the time in question. It + will render a time as "standard time" and allow the app to change to DST + as necessary. .NET makes a different choice. + + + + Compare the output of FileInfo.LastWriteTime.ToString("f") with what you + see in the Windows Explorer property sheet for a file that was last + written to on the other side of the DST transition. For example, suppose + the file was last modified on October 17, 2003, during DST but DST is not + currently in effect. Explorer's file properties reports Thursday, October + 17, 2003, 8:45:38 AM, but .NETs FileInfo reports Thursday, October 17, + 2003, 9:45 AM. + + + + Win32 says, "Thursday, October 17, 2002 8:45:38 AM PST". Note: Pacific + STANDARD Time. Even though October 17 of that year occurred during Pacific + Daylight Time, Win32 displays the time as standard time because that's + what time it is NOW. + + + + .NET BCL assumes that the current DST rules were in place at the time in + question. So, .NET says, "Well, if the rules in effect now were also in + effect on October 17, 2003, then that would be daylight time" so it + displays "Thursday, October 17, 2003, 9:45 AM PDT" - daylight time. + + + + So .NET gives a value which is more intuitively correct, but is also + potentially incorrect, and which is not invertible. Win32 gives a value + which is intuitively incorrect, but is strictly correct. + + + + Because of this funkiness, this library adds one hour to the LastModified + time on the extracted file, if necessary. That is to say, if the time in + question had occurred in what the .NET Base Class Library assumed to be + DST. This assumption may be wrong given the constantly changing DST rules, + but it is the best we can do. + + + + + + + + Last Modified time for the file represented by the entry. + + + + + + This value corresponds to the "last modified" time in the NTFS file times + as described in the Zip + specification. When getting this property, the value may be + different from . When setting the property, + the property also gets set, but with a lower + precision. + + + + Let me explain. It's going to take a while, so get + comfortable. Originally, waaaaay back in 1989 when the ZIP specification + was originally described by the esteemed Mr. Phil Katz, the dominant + operating system of the time was MS-DOS. MSDOS stored file times with a + 2-second precision, because, c'mon, who is ever going to need better + resolution than THAT? And so ZIP files, regardless of the platform on + which the zip file was created, store file times in exactly the same format that DOS used + in 1989. + + + + Since then, the ZIP spec has evolved, but the internal format for file + timestamps remains the same. Despite the fact that the way times are + stored in a zip file is rooted in DOS heritage, any program on any + operating system can format a time in this way, and most zip tools and + libraries DO - they round file times to the nearest even second and store + it just like DOS did 25+ years ago. + + + + PKWare extended the ZIP specification to allow a zip file to store what + are called "NTFS Times" and "Unix(tm) times" for a file. These are the + last write, last access, and file creation + times of a particular file. These metadata are not actually specific + to NTFS or Unix. They are tracked for each file by NTFS and by various + Unix filesystems, but they are also tracked by other filesystems, too. + The key point is that the times are formatted in the zip file + in the same way that NTFS formats the time (ticks since win32 epoch), + or in the same way that Unix formats the time (seconds since Unix + epoch). As with the DOS time, any tool or library running on any + operating system is capable of formatting a time in one of these ways + and embedding it into the zip file. + + + + These extended times are higher precision quantities than the DOS time. + As described above, the (DOS) LastModified has a precision of 2 seconds. + The Unix time is stored with a precision of 1 second. The NTFS time is + stored with a precision of 0.0000001 seconds. The quantities are easily + convertible, except for the loss of precision you may incur. + + + + A zip archive can store the {C,A,M} times in NTFS format, in Unix format, + or not at all. Often a tool running on Unix or Mac will embed the times + in Unix format (1 second precision), while WinZip running on Windows might + embed the times in NTFS format (precision of of 0.0000001 seconds). When + reading a zip file with these "extended" times, in either format, + DotNetZip represents the values with the + ModifiedTime, AccessedTime and CreationTime + properties on the ZipEntry. + + + + While any zip application or library, regardless of the platform it + runs on, could use any of the time formats allowed by the ZIP + specification, not all zip tools or libraries do support all these + formats. Storing the higher-precision times for each entry is + optional for zip files, and many tools and libraries don't use the + higher precision quantities at all. The old DOS time, represented by + , is guaranteed to be present, though it + sometimes unset. + + + + Ok, getting back to the question about how the LastModified + property relates to this ModifiedTime + property... LastModified is always set, while + ModifiedTime is not. (The other times stored in the NTFS + times extension, CreationTime and AccessedTime also + may not be set on an entry that is read from an existing zip file.) + When reading a zip file, then LastModified takes the DOS time + that is stored with the file. If the DOS time has been stored as zero + in the zipfile, then this library will use DateTime.Now for the + LastModified value. If the ZIP file was created by an evolved + tool, then there will also be higher precision NTFS or Unix times in + the zip file. In that case, this library will read those times, and + set LastModified and ModifiedTime to the same value, the + one corresponding to the last write time of the file. If there are no + higher precision times stored for the entry, then ModifiedTime + remains unset (likewise AccessedTime and CreationTime), + and LastModified keeps its DOS time. + + + + When creating zip files with this library, by default the extended time + properties (ModifiedTime, AccessedTime, and + CreationTime) are set on the ZipEntry instance, and these data are + stored in the zip archive for each entry, in NTFS format. If you add an + entry from an actual filesystem file, then the entry gets the actual file + times for that file, to NTFS-level precision. If you add an entry from a + stream, or a string, then the times get the value DateTime.Now. In + this case LastModified and ModifiedTime will be identical, + to 2 seconds of precision. You can explicitly set the + CreationTime, AccessedTime, and ModifiedTime of an + entry using the property setters. If you want to set all of those + quantities, it's more efficient to use the method. Those + changes are not made permanent in the zip file until you call or one of its cousins. + + + + When creating a zip file, you can override the default behavior of + this library for formatting times in the zip file, disabling the + embedding of file times in NTFS format or enabling the storage of file + times in Unix format, or both. You may want to do this, for example, + when creating a zip file on Windows, that will be consumed on a Mac, + by an application that is not hip to the "NTFS times" format. To do + this, use the and + properties. A valid zip + file may store the file times in both formats. But, there are no + guarantees that a program running on Mac or Linux will gracefully + handle the NTFS-formatted times when Unix times are present, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. DotNetZip will always do something + reasonable; other libraries or tools may not. When in doubt, test. + + + + I'll bet you didn't think one person could type so much about time, eh? + And reading it was so enjoyable, too! Well, in appreciation, maybe you + should donate? + + + + + + + + + + + Last Access time for the file represented by the entry. + + + This value may or may not be meaningful. If the ZipEntry was read from an existing + Zip archive, this information may not be available. For an explanation of why, see + . + + + + + + + + The file creation time for the file represented by the entry. + + + + This value may or may not be meaningful. If the ZipEntry was read + from an existing zip archive, and the creation time was not set on the entry + when the zip file was created, then this property may be meaningless. For an + explanation of why, see . + + + + + + + + Specifies whether the Creation, Access, and Modified times for the given + entry will be emitted in "Windows format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entry should or should not be stored + in the zip archive in the format used by Windows. The default value of + this property is true. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified + () times for the given entry are automatically + set from the filesystem values. When adding an entry from a stream or + string, all three values are implicitly set to DateTime.Now. Applications + can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since Jan 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since January 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455. + + + + Not all zip tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Although the time values are + easily convertible, subject to a loss of precision, some tools and + libraries may be able to read only one or the other. DotNetZip can read or + write times in either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive from the property. It is + possible that a zip entry can embed the timestamps in both forms, one + form, or neither. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle NTFS Formatted times, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. When in doubt, test. + + + + Normally you will use the ZipFile.EmitTimesInWindowsFormatWhenSaving + property, to specify the behavior for all entries in a zip, rather than + the property on each individual entry. + + + + + + + + + + + + + Specifies whether the Creation, Access, and Modified times for the given + entry will be emitted in "Unix(tm) format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entry should or should not be stored + in the zip archive in the format used by Unix. By default this flag is + false, meaning the Unix-format times are not stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified + () times for the given entry are automatically + set from the filesystem values. When adding an entry from a stream or + string, all three values are implicitly set to DateTime.Now. Applications + can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since Jan 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since Jan 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Although the time values are + easily convertible, subject to a loss of precision, some tools and + libraries may be able to read only one or the other. DotNetZip can read or + write times in either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive from the property. It is + possible that a zip entry can embed the timestamps in both forms, one + form, or neither. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle NTFS Formatted times, or that a + non-DotNetZip-powered application running on Windows will be able to + handle file times in Unix format. When in doubt, test. + + + + Normally you will use the ZipFile.EmitTimesInUnixFormatWhenSaving + property, to specify the behavior for all entries, rather than the + property on each individual entry. + + + + + + + + + + + + + The type of timestamp attached to the ZipEntry. + + + + This property is valid only for a ZipEntry that was read from a zip archive. + It indicates the type of timestamp attached to the entry. + + + + + + + + The file attributes for the entry. + + + + + + The attributes in NTFS include + ReadOnly, Archive, Hidden, System, and Indexed. When adding a + ZipEntry to a ZipFile, these attributes are set implicitly when + adding an entry from the filesystem. When adding an entry from a stream + or string, the Attributes are not set implicitly. Regardless of the way + an entry was added to a ZipFile, you can set the attributes + explicitly if you like. + + + + When reading a ZipEntry from a ZipFile, the attributes are + set according to the data stored in the ZipFile. If you extract the + entry from the archive to a filesystem file, DotNetZip will set the + attributes on the resulting file accordingly. + + + + The attributes can be set explicitly by the application. For example the + application may wish to set the FileAttributes.ReadOnly bit for all + entries added to an archive, so that on unpack, this attribute will be set + on the extracted file. Any changes you make to this property are made + permanent only when you call a Save() method on the ZipFile + instance that contains the ZipEntry. + + + + For example, an application may wish to zip up a directory and set the + ReadOnly bit on every file in the archive, so that upon later extraction, + the resulting files will be marked as ReadOnly. Not every extraction tool + respects these attributes, but if you unpack with DotNetZip, as for + example in a self-extracting archive, then the attributes will be set as + they are stored in the ZipFile. + + + + These attributes may not be interesting or useful if the resulting archive + is extracted on a non-Windows platform. How these attributes get used + upon extraction depends on the platform and tool used. + + + + This property is only partially supported in the Silverlight version + of the library: applications can read attributes on entries within + ZipFiles. But extracting entries within Silverlight will not set the + attributes on the extracted files. + + + + + + + The name of the filesystem file, referred to by the ZipEntry. + + + + + This property specifies the thing-to-be-zipped on disk, and is set only + when the ZipEntry is being created from a filesystem file. If the + ZipFile is instantiated by reading an existing .zip archive, then + the LocalFileName will be null (Nothing in VB). + + + + When it is set, the value of this property may be different than , which is the path used in the archive itself. If you + call Zip.AddFile("foop.txt", AlternativeDirectory), then the path + used for the ZipEntry within the zip archive will be different + than this path. + + + + If the entry is being added from a stream, then this is null (Nothing in VB). + + + + + + + + The name of the file contained in the ZipEntry. + + + + + + This is the name of the entry in the ZipFile itself. When creating + a zip archive, if the ZipEntry has been created from a filesystem + file, via a call to or , or a related overload, the value + of this property is derived from the name of that file. The + FileName property does not include drive letters, and may include a + different directory path, depending on the value of the + directoryPathInArchive parameter used when adding the entry into + the ZipFile. + + + + In some cases there is no related filesystem file - for example when a + ZipEntry is created using or one of the similar overloads. In this case, the value of + this property is derived from the fileName and the directory path passed + to that method. + + + + When reading a zip file, this property takes the value of the entry name + as stored in the zip file. If you extract such an entry, the extracted + file will take the name given by this property. + + + + Applications can set this property when creating new zip archives or when + reading existing archives. When setting this property, the actual value + that is set will replace backslashes with forward slashes, in accordance + with the Zip + specification, for compatibility with Unix(tm) and ... get + this.... Amiga! + + + + If an application reads a ZipFile via or a related overload, and then explicitly + sets the FileName on an entry contained within the ZipFile, and + then calls , the application will effectively + rename the entry within the zip archive. + + + + If an application sets the value of FileName, then calls + Extract() on the entry, the entry is extracted to a file using the + newly set value as the filename. The FileName value is made + permanent in the zip archive only after a call to one of the + ZipFile.Save() methods on the ZipFile that contains the + ZipEntry. + + + + If an application attempts to set the FileName to a value that + would result in a duplicate entry in the ZipFile, an exception is + thrown. + + + + When a ZipEntry is contained within a ZipFile, applications + cannot rename the entry within the context of a foreach (For + Each in VB) loop, because of the way the ZipFile stores + entries. If you need to enumerate through all the entries and rename one + or more of them, use ZipFile.EntriesSorted as the + collection. See also, ZipFile.GetEnumerator(). + + + + + + + The stream that provides content for the ZipEntry. + + + + + + The application can use this property to set the input stream for an + entry on a just-in-time basis. Imagine a scenario where the application + creates a ZipFile comprised of content obtained from hundreds of + files, via calls to AddFile(). The DotNetZip library opens streams + on these files on a just-in-time basis, only when writing the entry out to + an external store within the scope of a ZipFile.Save() call. Only + one input stream is opened at a time, as each entry is being written out. + + + + Now imagine a different application that creates a ZipFile + with content obtained from hundreds of streams, added through . Normally the + application would supply an open stream to that call. But when large + numbers of streams are being added, this can mean many open streams at one + time, unnecessarily. + + + + To avoid this, call and specify delegates that open and close the stream at + the time of Save. + + + + + Setting the value of this property when the entry was not added from a + stream (for example, when the ZipEntry was added with or , or when the entry was added by + reading an existing zip archive) will throw an exception. + + + + + + + + A flag indicating whether the InputStream was provided Just-in-time. + + + + + + When creating a zip archive, an application can obtain content for one or + more of the ZipEntry instances from streams, using the method. At the time + of calling that method, the application can supply null as the value of + the stream parameter. By doing so, the application indicates to the + library that it will provide a stream for the entry on a just-in-time + basis, at the time one of the ZipFile.Save() methods is called and + the data for the various entries are being compressed and written out. + + + + In this case, the application can set the + property, typically within the SaveProgress event (event type: ) for that entry. + + + + The application will later want to call Close() and Dispose() on that + stream. In the SaveProgress event, when the event type is , the application can + do so. This flag indicates that the stream has been provided by the + application on a just-in-time basis and that it is the application's + responsibility to call Close/Dispose on that stream. + + + + + + + + An enum indicating the source of the ZipEntry. + + + + + The version of the zip engine needed to read the ZipEntry. + + + + + This is a readonly property, indicating the version of the Zip + specification that the extracting tool or library must support to + extract the given entry. Generally higher versions indicate newer + features. Older zip engines obviously won't know about new features, and + won't be able to extract entries that depend on those newer features. + + + + + value + Features + + + + 20 + a basic Zip Entry, potentially using PKZIP encryption. + + + + + 45 + The ZIP64 extension is used on the entry. + + + + + 46 + File is compressed using BZIP2 compression* + + + + 50 + File is encrypted using PkWare's DES, 3DES, (broken) RC2 or RC4 + + + + 51 + File is encrypted using PKWare's AES encryption or corrected RC2 encryption. + + + + 52 + File is encrypted using corrected RC2-64 encryption** + + + + 61 + File is encrypted using non-OAEP key wrapping*** + + + + 63 + File is compressed using LZMA, PPMd+, Blowfish, or Twofish + + + + + + There are other values possible, not listed here. DotNetZip supports + regular PKZip encryption, and ZIP64 extensions. DotNetZip cannot extract + entries that require a zip engine higher than 45. + + + + This value is set upon reading an existing zip file, or after saving a zip + archive. + + + + + + The comment attached to the ZipEntry. + + + + + Each entry in a zip file can optionally have a comment associated to + it. The comment might be displayed by a zip tool during extraction, for + example. + + + + By default, the Comment is encoded in IBM437 code page. You can + specify an alternative with and + . + + + + + + + + Indicates whether the entry requires ZIP64 extensions. + + + + + + This property is null (Nothing in VB) until a Save() method on the + containing instance has been called. The property is + non-null (HasValue is true) only after a Save() method has + been called. + + + + After the containing ZipFile has been saved, the Value of this + property is true if any of the following three conditions holds: the + uncompressed size of the entry is larger than 0xFFFFFFFF; the compressed + size of the entry is larger than 0xFFFFFFFF; the relative offset of the + entry within the zip archive is larger than 0xFFFFFFFF. These quantities + are not known until a Save() is attempted on the zip archive and + the compression is applied. + + + + If none of the three conditions holds, then the Value is false. + + + + A Value of false does not indicate that the entry, as saved in the + zip archive, does not use ZIP64. It merely indicates that ZIP64 is + not required. An entry may use ZIP64 even when not required if + the property on the containing + ZipFile instance is set to , or if + the property on the containing + ZipFile instance is set to + and the output stream was not seekable. + + + + + + + + Indicates whether the entry actually used ZIP64 extensions, as it was most + recently written to the output file or stream. + + + + + + This Nullable property is null (Nothing in VB) until a Save() + method on the containing instance has been + called. HasValue is true only after a Save() method has been + called. + + + + The value of this property for a particular ZipEntry may change + over successive calls to Save() methods on the containing ZipFile, + even if the file that corresponds to the ZipEntry does not. This + may happen if other entries contained in the ZipFile expand, + causing the offset for this particular entry to exceed 0xFFFFFFFF. + + + + + + + The bitfield for the entry as defined in the zip spec. You probably + never need to look at this. + + + + + You probably do not need to concern yourself with the contents of this + property, but in case you do: + + + + + bit + meaning + + + + 0 + set if encryption is used. + + + + 1-2 + + set to determine whether normal, max, fast deflation. DotNetZip library + always leaves these bits unset when writing (indicating "normal" + deflation"), but can read an entry with any value here. + + + + + 3 + + Indicates that the Crc32, Compressed and Uncompressed sizes are zero in the + local header. This bit gets set on an entry during writing a zip file, when + it is saved to a non-seekable output stream. + + + + + + 4 + reserved for "enhanced deflating". This library doesn't do enhanced deflating. + + + + 5 + set to indicate the zip is compressed patched data. This library doesn't do that. + + + + 6 + + set if PKWare's strong encryption is used (must also set bit 1 if bit 6 is + set). This bit is not set if WinZip's AES encryption is set. + + + + 7 + not used + + + + 8 + not used + + + + 9 + not used + + + + 10 + not used + + + + 11 + + Language encoding flag (EFS). If this bit is set, the filename and comment + fields for this file must be encoded using UTF-8. This library currently + does not support UTF-8. + + + + + 12 + Reserved by PKWARE for enhanced compression. + + + + 13 + + Used when encrypting the Central Directory to indicate selected data + values in the Local Header are masked to hide their actual values. See + the section in the Zip + specification describing the Strong Encryption Specification for + details. + + + + + 14 + Reserved by PKWARE. + + + + 15 + Reserved by PKWARE. + + + + + + + + + The compression method employed for this ZipEntry. + + + + + + The + Zip specification allows a variety of compression methods. This + library supports just two: 0x08 = Deflate. 0x00 = Store (no compression), + for reading or writing. + + + + When reading an entry from an existing zipfile, the value you retrieve + here indicates the compression method used on the entry by the original + creator of the zip. When writing a zipfile, you can specify either 0x08 + (Deflate) or 0x00 (None). If you try setting something else, you will get + an exception. + + + + You may wish to set CompressionMethod to CompressionMethod.None (0) + when zipping already-compressed data like a jpg, png, or mp3 file. + This can save time and cpu cycles. + + + + When setting this property on a ZipEntry that is read from an + existing zip file, calling ZipFile.Save() will cause the new + CompressionMethod to be used on the entry in the newly saved zip file. + + + + Setting this property may have the side effect of modifying the + CompressionLevel property. If you set the CompressionMethod to a + value other than None, and CompressionLevel is previously + set to None, then CompressionLevel will be set to + Default. + + + + + + + In this example, the first entry added to the zip archive uses the default + behavior - compression is used where it makes sense. The second entry, + the MP3 file, is added to the archive without being compressed. + + using (ZipFile zip = new ZipFile(ZipFileToCreate)) + { + ZipEntry e1= zip.AddFile(@"notes\Readme.txt"); + ZipEntry e2= zip.AddFile(@"music\StopThisTrain.mp3"); + e2.CompressionMethod = CompressionMethod.None; + zip.Save(); + } + + + + Using zip As New ZipFile(ZipFileToCreate) + zip.AddFile("notes\Readme.txt") + Dim e2 as ZipEntry = zip.AddFile("music\StopThisTrain.mp3") + e2.CompressionMethod = CompressionMethod.None + zip.Save + End Using + + + + + + Sets the compression level to be used for the entry when saving the zip + archive. This applies only for CompressionMethod = DEFLATE. + + + + + When using the DEFLATE compression method, Varying the compression + level used on entries can affect the size-vs-speed tradeoff when + compression and decompressing data streams or files. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + When setting this property on a ZipEntry that is read from an + existing zip file, calling ZipFile.Save() will cause the new + CompressionLevel to be used on the entry in the newly saved zip file. + + + + Setting this property may have the side effect of modifying the + CompressionMethod property. If you set the CompressionLevel + to a value other than None, CompressionMethod will be set + to Deflate, if it was previously None. + + + + Setting this property has no effect if the CompressionMethod is something + other than Deflate or None. + + + + + + + + The compressed size of the file, in bytes, within the zip archive. + + + + When reading a ZipFile, this value is read in from the existing + zip file. When creating or updating a ZipFile, the compressed + size is computed during compression. Therefore the value on a + ZipEntry is valid after a call to Save() (or one of its + overloads) in that case. + + + + + + + The size of the file, in bytes, before compression, or after extraction. + + + + When reading a ZipFile, this value is read in from the existing + zip file. When creating or updating a ZipFile, the uncompressed + size is computed during compression. Therefore the value on a + ZipEntry is valid after a call to Save() (or one of its + overloads) in that case. + + + + + + + The ratio of compressed size to uncompressed size of the ZipEntry. + + + + + This is a ratio of the compressed size to the uncompressed size of the + entry, expressed as a double in the range of 0 to 100+. A value of 100 + indicates no compression at all. It could be higher than 100 when the + compression algorithm actually inflates the data, as may occur for small + files, or uncompressible data that is encrypted. + + + + You could format it for presentation to a user via a format string of + "{3,5:F0}%" to see it as a percentage. + + + + If the size of the original uncompressed file is 0, implying a + denominator of 0, the return value will be zero. + + + + This property is valid after reading in an existing zip file, or after + saving the ZipFile that contains the ZipEntry. You cannot know the + effect of a compression transform until you try it. + + + + + + + The 32-bit CRC (Cyclic Redundancy Check) on the contents of the ZipEntry. + + + + + You probably don't need to concern yourself with this. It is used + internally by DotNetZip to verify files or streams upon extraction. + + The value is a 32-bit + CRC using 0xEDB88320 for the polynomial. This is the same CRC-32 used in + PNG, MPEG-2, and other protocols and formats. It is a read-only property; when + creating a Zip archive, the CRC for each entry is set only after a call to + Save() on the containing ZipFile. When reading an existing zip file, the value + of this property reflects the stored CRC for the entry. + + + + + + True if the entry is a directory (not a file). + This is a readonly property on the entry. + + + + + A derived property that is true if the entry uses encryption. + + + + + This is a readonly property on the entry. When reading a zip file, + the value for the ZipEntry is determined by the data read + from the zip file. After saving a ZipFile, the value of this + property for each ZipEntry indicates whether encryption was + actually used (which will have been true if the was set and the property + was something other than . + + + + + + Set this to specify which encryption algorithm to use for the entry when + saving it to a zip archive. + + + + + + Set this property in order to encrypt the entry when the ZipFile is + saved. When setting this property, you must also set a on the entry. If you set a value other than on this property and do not set a + Password then the entry will not be encrypted. The ZipEntry + data is encrypted as the ZipFile is saved, when you call or one of its cousins on the containing + ZipFile instance. You do not need to specify the Encryption + when extracting entries from an archive. + + + + The Zip specification from PKWare defines a set of encryption algorithms, + and the data formats for the zip archive that support them, and PKWare + supports those algorithms in the tools it produces. Other vendors of tools + and libraries, such as WinZip or Xceed, typically support a + subset of the algorithms specified by PKWare. These tools can + sometimes support additional different encryption algorithms and data + formats, not specified by PKWare. The AES Encryption specified and + supported by WinZip is the most popular example. This library supports a + subset of the complete set of algorithms specified by PKWare and other + vendors. + + + + There is no common, ubiquitous multi-vendor standard for strong encryption + within zip files. There is broad support for so-called "traditional" Zip + encryption, sometimes called Zip 2.0 encryption, as specified + by PKWare, but this encryption is considered weak and + breakable. This library currently supports the Zip 2.0 "weak" encryption, + and also a stronger WinZip-compatible AES encryption, using either 128-bit + or 256-bit key strength. If you want DotNetZip to support an algorithm + that is not currently supported, call the author of this library and maybe + we can talk business. + + + + The class also has a property. In most cases you will use + that property when setting encryption. This property takes + precedence over any Encryption set on the ZipFile itself. + Typically, you would use the per-entry Encryption when most entries in the + zip archive use one encryption algorithm, and a few entries use a + different one. If all entries in the zip file use the same Encryption, + then it is simpler to just set this property on the ZipFile itself, when + creating a zip archive. + + + + Some comments on updating archives: If you read a ZipFile, you can + modify the Encryption on an encrypted entry: you can remove encryption + from an entry that was encrypted; you can encrypt an entry that was not + encrypted previously; or, you can change the encryption algorithm. The + changes in encryption are not made permanent until you call Save() on the + ZipFile. To effect changes in encryption, the entry content is + streamed through several transformations, depending on the modification + the application has requested. For example if the entry is not encrypted + and the application sets Encryption to PkzipWeak, then at + the time of Save(), the original entry is read and decompressed, + then re-compressed and encrypted. Conversely, if the original entry is + encrypted with PkzipWeak encryption, and the application sets the + Encryption property to WinZipAes128, then at the time of + Save(), the original entry is decrypted via PKZIP encryption and + decompressed, then re-compressed and re-encrypted with AES. This all + happens automatically within the library, but it can be time-consuming for + large entries. + + + + Additionally, when updating archives, it is not possible to change the + password when changing the encryption algorithm. To change both the + algorithm and the password, you need to Save() the zipfile twice. First + set the Encryption to None, then call Save(). Then set the + Encryption to the new value (not "None"), then call Save() + once again. + + + + The WinZip AES encryption algorithms are not supported on the .NET Compact + Framework. + + + + + + This example creates a zip archive that uses encryption, and then extracts + entries from the archive. When creating the zip archive, the ReadMe.txt + file is zipped without using a password or encryption. The other file + uses encryption. + + + // Create a zip archive with AES Encryption. + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt") + ZipEntry e1= zip.AddFile("2008-Regional-Sales-Report.pdf"); + e1.Encryption= EncryptionAlgorithm.WinZipAes256; + e1.Password= "Top.Secret.No.Peeking!"; + zip.Save("EncryptedArchive.zip"); + } + + // Extract a zip archive that uses AES Encryption. + // You do not need to specify the algorithm during extraction. + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + // Specify the password that is used during extraction, for + // all entries that require a password: + zip.Password= "Top.Secret.No.Peeking!"; + zip.ExtractAll("extractDirectory"); + } + + + + ' Create a zip that uses Encryption. + Using zip As New ZipFile() + zip.AddFile("ReadMe.txt") + Dim e1 as ZipEntry + e1= zip.AddFile("2008-Regional-Sales-Report.pdf") + e1.Encryption= EncryptionAlgorithm.WinZipAes256 + e1.Password= "Top.Secret.No.Peeking!" + zip.Save("EncryptedArchive.zip") + End Using + + ' Extract a zip archive that uses AES Encryption. + ' You do not need to specify the algorithm during extraction. + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + ' Specify the password that is used during extraction, for + ' all entries that require a password: + zip.Password= "Top.Secret.No.Peeking!" + zip.ExtractAll("extractDirectory") + End Using + + + + + + Thrown in the setter if EncryptionAlgorithm.Unsupported is specified. + + + ZipEntry.Password + ZipFile.Encryption + + + + The Password to be used when encrypting a ZipEntry upon + ZipFile.Save(), or when decrypting an entry upon Extract(). + + + + + This is a write-only property on the entry. Set this to request that the + entry be encrypted when writing the zip archive, or set it to specify the + password to be used when extracting an existing entry that is encrypted. + + + + The password set here is implicitly used to encrypt the entry during the + operation, or to decrypt during the or operation. If you set + the Password on a ZipEntry after calling Save(), there is no + effect. + + + + Consider setting the property when using a + password. Answering concerns that the standard password protection + supported by all zip tools is weak, WinZip has extended the ZIP + specification with a way to use AES Encryption to protect entries in the + Zip file. Unlike the "PKZIP 2.0" encryption specified in the PKZIP + specification, AES + Encryption uses a standard, strong, tested, encryption + algorithm. DotNetZip can create zip archives that use WinZip-compatible + AES encryption, if you set the property. But, + archives created that use AES encryption may not be readable by all other + tools and libraries. For example, Windows Explorer cannot read a + "compressed folder" (a zip file) that uses AES encryption, though it can + read a zip file that uses "PKZIP encryption." + + + + The class also has a + property. This property takes precedence over any password set on the + ZipFile itself. Typically, you would use the per-entry Password when most + entries in the zip archive use one password, and a few entries use a + different password. If all entries in the zip file use the same password, + then it is simpler to just set this property on the ZipFile itself, + whether creating a zip archive or extracting a zip archive. + + + + Some comments on updating archives: If you read a ZipFile, you + cannot modify the password on any encrypted entry, except by extracting + the entry with the original password (if any), removing the original entry + via , and then adding a new + entry with a new Password. + + + + For example, suppose you read a ZipFile, and there is an encrypted + entry. Setting the Password property on that ZipEntry and then + calling Save() on the ZipFile does not update the password + on that entry in the archive. Neither is an exception thrown. Instead, + what happens during the Save() is the existing entry is copied + through to the new zip archive, in its original encrypted form. Upon + re-reading that archive, the entry can be decrypted with its original + password. + + + + If you read a ZipFile, and there is an un-encrypted entry, you can set the + Password on the entry and then call Save() on the ZipFile, and get + encryption on that entry. + + + + + + + This example creates a zip file with two entries, and then extracts the + entries from the zip file. When creating the zip file, the two files are + added to the zip file using password protection. Each entry uses a + different password. During extraction, each file is extracted with the + appropriate password. + + + // create a file with encryption + using (ZipFile zip = new ZipFile()) + { + ZipEntry entry; + entry= zip.AddFile("Declaration.txt"); + entry.Password= "123456!"; + entry = zip.AddFile("Report.xls"); + entry.Password= "1Secret!"; + zip.Save("EncryptedArchive.zip"); + } + + // extract entries that use encryption + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + ZipEntry entry; + entry = zip["Declaration.txt"]; + entry.Password = "123456!"; + entry.Extract("extractDir"); + entry = zip["Report.xls"]; + entry.Password = "1Secret!"; + entry.Extract("extractDir"); + } + + + + + Using zip As New ZipFile + Dim entry as ZipEntry + entry= zip.AddFile("Declaration.txt") + entry.Password= "123456!" + entry = zip.AddFile("Report.xls") + entry.Password= "1Secret!" + zip.Save("EncryptedArchive.zip") + End Using + + + ' extract entries that use encryption + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + Dim entry as ZipEntry + entry = zip("Declaration.txt") + entry.Password = "123456!" + entry.Extract("extractDir") + entry = zip("Report.xls") + entry.Password = "1Secret!" + entry.Extract("extractDir") + End Using + + + + + + + ZipFile.Password + + + + The action the library should take when extracting a file that already exists. + + + + + This property affects the behavior of the Extract methods (one of the + Extract() or ExtractWithPassword() overloads), when + extraction would would overwrite an existing filesystem file. If you do + not set this property, the library throws an exception when extracting + an entry would overwrite an existing file. + + + + This property has no effect when extracting to a stream, or when the file to be + extracted does not already exist. + + + + + + + This example shows how to set the ExtractExistingFile property in + an ExtractProgress event, in response to user input. The + ExtractProgress event is invoked if and only if the + ExtractExistingFile property was previously set to + ExtractExistingFileAction.InvokeExtractProgressEvent. + + public static void ExtractProgress(object sender, ExtractProgressEventArgs e) + { + if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) + Console.WriteLine("extract {0} ", e.CurrentEntry.FileName); + + else if (e.EventType == ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite) + { + ZipEntry entry = e.CurrentEntry; + string response = null; + // Ask the user if he wants overwrite the file + do + { + Console.Write("Overwrite {0} in {1} ? (y/n/C) ", entry.FileName, e.ExtractLocation); + response = Console.ReadLine(); + Console.WriteLine(); + + } while (response != null && response[0]!='Y' && + response[0]!='N' && response[0]!='C'); + + if (response[0]=='C') + e.Cancel = true; + else if (response[0]=='Y') + entry.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently; + else + entry.ExtractExistingFile= ExtractExistingFileAction.DoNotOverwrite; + } + } + + + + + + The action to take when an error is encountered while + opening or reading files as they are saved into a zip archive. + + + + + Errors can occur within a call to ZipFile.Save, as the various files contained + in a ZipFile are being saved into the zip archive. During the + Save, DotNetZip will perform a File.Open on the file + associated to the ZipEntry, and then will read the entire contents of + the file as it is zipped. Either the open or the Read may fail, because + of lock conflicts or other reasons. Using this property, you can + specify the action to take when such errors occur. + + + + Typically you will NOT set this property on individual ZipEntry + instances. Instead, you will set the ZipFile.ZipErrorAction property on + the ZipFile instance, before adding any entries to the + ZipFile. If you do this, errors encountered on behalf of any of + the entries in the ZipFile will be handled the same way. + + + + But, if you use a handler, you will want + to set this property on the ZipEntry within the handler, to + communicate back to DotNetZip what you would like to do with the + particular error. + + + + + + + + + Indicates whether the entry was included in the most recent save. + + + An entry can be excluded or skipped from a save if there is an error + opening or reading the entry. + + + + + + A callback that allows the application to specify the compression to use + for a given entry that is about to be added to the zip archive. + + + + + See + + + + + + Set to indicate whether to use UTF-8 encoding for filenames and comments. + + + + + + If this flag is set, the comment and filename for the entry will be + encoded with UTF-8, as described in the Zip + specification, if necessary. "Necessary" means, the filename or + entry comment (if any) cannot be reflexively encoded and decoded using the + default code page, IBM437. + + + + Setting this flag to true is equivalent to setting to System.Text.Encoding.UTF8. + + + + This flag has no effect or relation to the text encoding used within the + file itself. + + + + + + + The text encoding to use for the FileName and Comment on this ZipEntry, + when the default encoding is insufficient. + + + + + + Don't use this property. See . + + + + + + + Specifies the alternate text encoding used by this ZipEntry + + + + The default text encoding used in Zip files for encoding filenames and + comments is IBM437, which is something like a superset of ASCII. In + cases where this is insufficient, applications can specify an + alternate encoding. + + + When creating a zip file, the usage of the alternate encoding is + governed by the property. + Typically you would set both properties to tell DotNetZip to employ an + encoding that is not IBM437 in the zipfile you are creating. + + + Keep in mind that because the ZIP specification states that the only + valid encodings to use are IBM437 and UTF-8, if you use something + other than that, then zip tools and libraries may not be able to + successfully read the zip archive you generate. + + + The zip specification states that applications should presume that + IBM437 is in use, except when a special bit is set, which indicates + UTF-8. There is no way to specify an arbitrary code page, within the + zip file itself. When you create a zip file encoded with gb2312 or + ibm861 or anything other than IBM437 or UTF-8, then the application + that reads the zip file needs to "know" which code page to use. In + some cases, the code page used when reading is chosen implicitly. For + example, WinRar uses the ambient code page for the host desktop + operating system. The pitfall here is that if you create a zip in + Copenhagen and send it to Tokyo, the reader of the zipfile may not be + able to decode successfully. + + + + This example shows how to create a zipfile encoded with a + language-specific encoding: + + using (var zip = new ZipFile()) + { + zip.AlternateEnoding = System.Text.Encoding.GetEncoding("ibm861"); + zip.AlternateEnodingUsage = ZipOption.Always; + zip.AddFileS(arrayOfFiles); + zip.Save("Myarchive-Encoded-in-IBM861.zip"); + } + + + + + + + Describes if and when this instance should apply + AlternateEncoding to encode the FileName and Comment, when + saving. + + + + + + Indicates whether an entry is marked as a text file. Be careful when + using on this property. Unless you have a good reason, you should + probably ignore this property. + + + + + The ZIP format includes a provision for specifying whether an entry in + the zip archive is a text or binary file. This property exposes that + metadata item. Be careful when using this property: It's not clear + that this property as a firm meaning, across tools and libraries. + + + + To be clear, when reading a zip file, the property value may or may + not be set, and its value may or may not be valid. Not all entries + that you may think of as "text" entries will be so marked, and entries + marked as "text" are not guaranteed in any way to be text entries. + Whether the value is set and set correctly depends entirely on the + application that produced the zip file. + + + + There are many zip tools available, and when creating zip files, some + of them "respect" the IsText metadata field, and some of them do not. + Unfortunately, even when an application tries to do "the right thing", + it's not always clear what "the right thing" is. + + + + There's no firm definition of just what it means to be "a text file", + and the zip specification does not help in this regard. Twenty years + ago, text was ASCII, each byte was less than 127. IsText meant, all + bytes in the file were less than 127. These days, it is not the case + that all text files have all bytes less than 127. Any unicode file + may have bytes that are above 0x7f. The zip specification has nothing + to say on this topic. Therefore, it's not clear what IsText really + means. + + + + This property merely tells a reading application what is stored in the + metadata for an entry, without guaranteeing its validity or its + meaning. + + + + When DotNetZip is used to create a zipfile, it attempts to set this + field "correctly." For example, if a file ends in ".txt", this field + will be set. Your application may override that default setting. When + writing a zip file, you must set the property before calling + Save() on the ZipFile. + + + + When reading a zip file, a more general way to decide just what kind + of file is contained in a particular entry is to use the file type + database stored in the operating system. The operating system stores + a table that says, a file with .jpg extension is a JPG image file, a + file with a .xml extension is an XML document, a file with a .txt is a + pure ASCII text document, and so on. To get this information on + Windows, you + need to read and parse the registry. + + + + + using (var zip = new ZipFile()) + { + var e = zip.UpdateFile("Descriptions.mme", ""); + e.IsText = true; + zip.Save(zipPath); + } + + + + Using zip As New ZipFile + Dim e2 as ZipEntry = zip.AddFile("Descriptions.mme", "") + e.IsText= True + zip.Save(zipPath) + End Using + + + + + + An enum that specifies the type of timestamp available on the ZipEntry. + + + + + + The last modified time of a file can be stored in multiple ways in + a zip file, and they are not mutually exclusive: + + + + + In the so-called "DOS" format, which has a 2-second precision. Values + are rounded to the nearest even second. For example, if the time on the + file is 12:34:43, then it will be stored as 12:34:44. This first value + is accessible via the LastModified property. This value is always + present in the metadata for each zip entry. In some cases the value is + invalid, or zero. + + + + In the so-called "Windows" or "NTFS" format, as an 8-byte integer + quantity expressed as the number of 1/10 milliseconds (in other words + the number of 100 nanosecond units) since January 1, 1601 (UTC). This + format is how Windows represents file times. This time is accessible + via the ModifiedTime property. + + + + In the "Unix" format, a 4-byte quantity specifying the number of seconds since + January 1, 1970 UTC. + + + + In an older format, now deprecated but still used by some current + tools. This format is also a 4-byte quantity specifying the number of + seconds since January 1, 1970 UTC. + + + + + + This bit field describes which of the formats were found in a ZipEntry that was read. + + + + + + + Default value. + + + + + A DOS timestamp with 2-second precision. + + + + + A Windows timestamp with 100-ns precision. + + + + + A Unix timestamp with 1-second precision. + + + + + A Unix timestamp with 1-second precision, stored in InfoZip v1 format. This + format is outdated and is supported for reading archives only. + + + + + The method of compression to use for a particular ZipEntry. + + + + PKWare's + ZIP Specification describes a number of distinct + cmopression methods that can be used within a zip + file. DotNetZip supports a subset of them. + + + + + No compression at all. For COM environments, the value is 0 (zero). + + + + + DEFLATE compression, as described in IETF RFC + 1951. This is the "normal" compression used in zip + files. For COM environments, the value is 8. + + + + + BZip2 compression, a compression algorithm developed by Julian Seward. + For COM environments, the value is 12. + + + + + The ZipFile type represents a zip archive file. + + + + + This is the main type in the DotNetZip class library. This class reads and + writes zip files, as defined in the specification + for zip files described by PKWare. The compression for this + implementation is provided by a managed-code version of Zlib, included with + DotNetZip in the classes in the Ionic.Zlib namespace. + + + + This class provides a general purpose zip file capability. Use it to read, + create, or update zip files. When you want to create zip files using a + Stream type to write the zip file, you may want to consider the class. + + + + Both the ZipOutputStream class and the ZipFile class can + be used to create zip files. Both of them support many of the common zip + features, including Unicode, different compression methods and levels, + and ZIP64. They provide very similar performance when creating zip + files. + + + + The ZipFile class is generally easier to use than + ZipOutputStream and should be considered a higher-level interface. For + example, when creating a zip file via calls to the PutNextEntry() and + Write() methods on the ZipOutputStream class, the caller is + responsible for opening the file, reading the bytes from the file, writing + those bytes into the ZipOutputStream, setting the attributes on the + ZipEntry, and setting the created, last modified, and last accessed + timestamps on the zip entry. All of these things are done automatically by a + call to ZipFile.AddFile(). + For this reason, the ZipOutputStream is generally recommended for use + only when your application emits arbitrary data, not necessarily data from a + filesystem file, directly into a zip file, and does so using a Stream + metaphor. + + + + Aside from the differences in programming model, there are other + differences in capability between the two classes. + + + + + ZipFile can be used to read and extract zip files, in addition to + creating zip files. ZipOutputStream cannot read zip files. If you want + to use a stream to read zip files, check out the class. + + + + ZipOutputStream does not support the creation of segmented or spanned + zip files. + + + + ZipOutputStream cannot produce a self-extracting archive. + + + + + Be aware that the ZipFile class implements the interface. In order for ZipFile to + produce a valid zip file, you use use it within a using clause (Using + in VB), or call the Dispose() method explicitly. See the examples + for how to employ a using clause. + + + + + + + Adds an item, either a file or a directory, to a zip file archive. + + + + + This method is handy if you are adding things to zip archive and don't + want to bother distinguishing between directories or files. Any files are + added as single entries. A directory added through this method is added + recursively: all files and subdirectories contained within the directory + are added to the ZipFile. + + + + The name of the item may be a relative path or a fully-qualified + path. Remember, the items contained in ZipFile instance get written + to the disk only when you call or a similar + save method. + + + + The directory name used for the file within the archive is the same + as the directory name (potentially a relative path) specified in the + . + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + This method has two overloads. + + the name of the file or directory to add. + + The ZipEntry added. + + + + Adds an item, either a file or a directory, to a zip file archive, + explicitly specifying the directory path to be used in the archive. + + + + + If adding a directory, the add is recursive on all files and + subdirectories contained within it. + + + The name of the item may be a relative path or a fully-qualified path. + The item added by this call to the ZipFile is not read from the + disk nor written to the zip file archive until the application calls + Save() on the ZipFile. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive, which would override the + "natural" path of the filesystem file. + + + + Encryption will be used on the file data if the Password has + been set on the ZipFile object, prior to calling this method. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + Thrown if the file or directory passed in does not exist. + + + the name of the file or directory to add. + + + + The name of the directory path to use within the zip archive. This path + need not refer to an extant directory in the current filesystem. If the + files within the zip are later extracted, this is the path used for the + extracted file. Passing null (Nothing in VB) will use the + path on the fileOrDirectoryName. Passing the empty string ("") will + insert the item at the root path within the archive. + + + + + + + + This example shows how to zip up a set of files into a flat hierarchy, + regardless of where in the filesystem the files originated. The resulting + zip archive will contain a toplevel directory named "flat", which itself + will contain files Readme.txt, MyProposal.docx, and Image1.jpg. A + subdirectory under "flat" called SupportFiles will contain all the files + in the "c:\SupportFiles" directory on disk. + + + String[] itemnames= { + "c:\\fixedContent\\Readme.txt", + "MyProposal.docx", + "c:\\SupportFiles", // a directory + "images\\Image1.jpg" + }; + + try + { + using (ZipFile zip = new ZipFile()) + { + for (int i = 1; i < itemnames.Length; i++) + { + // will add Files or Dirs, recurses and flattens subdirectories + zip.AddItem(itemnames[i],"flat"); + } + zip.Save(ZipToCreate); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: {0}", ex1); + } + + + + Dim itemnames As String() = _ + New String() { "c:\fixedContent\Readme.txt", _ + "MyProposal.docx", _ + "SupportFiles", _ + "images\Image1.jpg" } + Try + Using zip As New ZipFile + Dim i As Integer + For i = 1 To itemnames.Length - 1 + ' will add Files or Dirs, recursing and flattening subdirectories. + zip.AddItem(itemnames(i), "flat") + Next i + zip.Save(ZipToCreate) + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1.ToString()) + End Try + + + The ZipEntry added. + + + + Adds a File to a Zip file archive. + + + + + This call collects metadata for the named file in the filesystem, + including the file attributes and the timestamp, and inserts that metadata + into the resulting ZipEntry. Only when the application calls Save() on + the ZipFile, does DotNetZip read the file from the filesystem and + then write the content to the zip file archive. + + + + This method will throw an exception if an entry with the same name already + exists in the ZipFile. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + In this example, three files are added to a Zip archive. The ReadMe.txt + file will be placed in the root of the archive. The .png file will be + placed in a folder within the zip called photos\personal. The pdf file + will be included into a folder within the zip called Desktop. + + + try + { + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("c:\\photos\\personal\\7440-N49th.png"); + zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf"); + zip.AddFile("ReadMe.txt"); + + zip.Save("Package.zip"); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: " + ex1); + } + + + + Try + Using zip As ZipFile = New ZipFile + zip.AddFile("c:\photos\personal\7440-N49th.png") + zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf") + zip.AddFile("ReadMe.txt") + zip.Save("Package.zip") + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1.ToString) + End Try + + + + This method has two overloads. + + + + + + + The name of the file to add. It should refer to a file in the filesystem. + The name of the file may be a relative path or a fully-qualified path. + + The ZipEntry corresponding to the File added. + + + + Adds a File to a Zip file archive, potentially overriding the path to be + used within the zip archive. + + + + + The file added by this call to the ZipFile is not written to the + zip file archive until the application calls Save() on the ZipFile. + + + + This method will throw an exception if an entry with the same name already + exists in the ZipFile. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + In this example, three files are added to a Zip archive. The ReadMe.txt + file will be placed in the root of the archive. The .png file will be + placed in a folder within the zip called images. The pdf file will be + included into a folder within the zip called files\docs, and will be + encrypted with the given password. + + + try + { + using (ZipFile zip = new ZipFile()) + { + // the following entry will be inserted at the root in the archive. + zip.AddFile("c:\\datafiles\\ReadMe.txt", ""); + // this image file will be inserted into the "images" directory in the archive. + zip.AddFile("c:\\photos\\personal\\7440-N49th.png", "images"); + // the following will result in a password-protected file called + // files\\docs\\2008-Regional-Sales-Report.pdf in the archive. + zip.Password = "EncryptMe!"; + zip.AddFile("c:\\Desktop\\2008-Regional-Sales-Report.pdf", "files\\docs"); + zip.Save("Archive.zip"); + } + } + catch (System.Exception ex1) + { + System.Console.Error.WriteLine("exception: {0}", ex1); + } + + + + Try + Using zip As ZipFile = New ZipFile + ' the following entry will be inserted at the root in the archive. + zip.AddFile("c:\datafiles\ReadMe.txt", "") + ' this image file will be inserted into the "images" directory in the archive. + zip.AddFile("c:\photos\personal\7440-N49th.png", "images") + ' the following will result in a password-protected file called + ' files\\docs\\2008-Regional-Sales-Report.pdf in the archive. + zip.Password = "EncryptMe!" + zip.AddFile("c:\Desktop\2008-Regional-Sales-Report.pdf", "files\documents") + zip.Save("Archive.zip") + End Using + Catch ex1 As Exception + Console.Error.WriteLine("exception: {0}", ex1) + End Try + + + + + + + + + The name of the file to add. The name of the file may be a relative path + or a fully-qualified path. + + + + Specifies a directory path to use to override any path in the fileName. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on the fileName, if any. Passing the empty string + ("") will insert the item at the root path within the archive. + + + The ZipEntry corresponding to the file added. + + + + This method removes a collection of entries from the ZipFile. + + + + A collection of ZipEntry instances from this zip file to be removed. For + example, you can pass in an array of ZipEntry instances; or you can call + SelectEntries(), and then add or remove entries from that + ICollection<ZipEntry> (ICollection(Of ZipEntry) in VB), and pass + that ICollection to this method. + + + + + + + + This method removes a collection of entries from the ZipFile, by name. + + + + A collection of strings that refer to names of entries to be removed + from the ZipFile. For example, you can pass in an array or a + List of Strings that provide the names of entries to be removed. + + + + + + + + This method adds a set of files to the ZipFile. + + + + + Use this method to add a set of files to the zip archive, in one call. + For example, a list of files received from + System.IO.Directory.GetFiles() can be added to a zip archive in one + call. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The collection of names of the files to add. Each string should refer to a + file in the filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + This example shows how to create a zip file, and add a few files into it. + + String ZipFileToCreate = "archive1.zip"; + String DirectoryToZip = "c:\\reports"; + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames); + zip.Save(ZipFileToCreate); + } + + + + Dim ZipFileToCreate As String = "archive1.zip" + Dim DirectoryToZip As String = "c:\reports" + Using zip As ZipFile = New ZipFile + ' Store all files found in the top level directory, into the zip archive. + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames) + zip.Save(ZipFileToCreate) + End Using + + + + + + + + Adds or updates a set of files in the ZipFile. + + + + + Any files that already exist in the archive are updated. Any files that + don't yet exist in the archive are added. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The collection of names of the files to update. Each string should refer to a file in + the filesystem. The name of the file may be a relative path or a fully-qualified path. + + + + + + Adds a set of files to the ZipFile, using the + specified directory path in the archive. + + + + + Any directory structure that may be present in the + filenames contained in the list is "flattened" in the + archive. Each file in the list is added to the archive in + the specified top-level directory. + + + + For ZipFile properties including , , , , , , and , their respective values at the + time of this call will be applied to each ZipEntry added. + + + + + The names of the files to add. Each string should refer to + a file in the filesystem. The name of the file may be a + relative path or a fully-qualified path. + + + + Specifies a directory path to use to override any path in the file name. + Th is path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + + + Adds a set of files to the ZipFile, using the specified directory + path in the archive, and preserving the full directory structure in the + filenames. + + + + + If preserveDirHierarchy is true, any directory structure present in the + filenames contained in the list is preserved in the archive. On the other + hand, if preserveDirHierarchy is false, any directory structure that may + be present in the filenames contained in the list is "flattened" in the + archive; Each file in the list is added to the archive in the specified + top-level directory. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + The names of the files to add. Each string should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use to override any path in the file name. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + whether the entries in the zip archive will reflect the directory + hierarchy that is present in the various filenames. For example, if + includes two paths, \Animalia\Chordata\Mammalia\Info.txt and + \Plantae\Magnoliophyta\Dicotyledon\Info.txt, then calling this method with + = false will result in an + exception because of a duplicate entry name, while calling this method + with = true will result in the + full direcory paths being included in the entries added to the ZipFile. + + + + + + Adds or updates a set of files to the ZipFile, using the specified + directory path in the archive. + + + + + + Any files that already exist in the archive are updated. Any files that + don't yet exist in the archive are added. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + The names of the files to add or update. Each string should refer to a + file in the filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use to override any path in the file name. + This path may, or may not, correspond to a real directory in the current + filesystem. If the files within the zip are later extracted, this is the + path used for the extracted file. Passing null (Nothing in + VB) will use the path on each of the fileNames, if any. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + + + Adds or Updates a File in a Zip file archive. + + + + + This method adds a file to a zip archive, or, if the file already exists + in the zip archive, this method Updates the content of that given filename + in the zip archive. The UpdateFile method might more accurately be + called "AddOrUpdateFile". + + + + Upon success, there is no way for the application to learn whether the file + was added versus updated. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + This example shows how to Update an existing entry in a zipfile. The first + call to UpdateFile adds the file to the newly-created zip archive. The + second call to UpdateFile updates the content for that file in the zip + archive. + + + using (ZipFile zip1 = new ZipFile()) + { + // UpdateFile might more accurately be called "AddOrUpdateFile" + zip1.UpdateFile("MyDocuments\\Readme.txt"); + zip1.UpdateFile("CustomerList.csv"); + zip1.Comment = "This zip archive has been created."; + zip1.Save("Content.zip"); + } + + using (ZipFile zip2 = ZipFile.Read("Content.zip")) + { + zip2.UpdateFile("Updates\\Readme.txt"); + zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed."; + zip2.Save(); + } + + + + Using zip1 As New ZipFile + ' UpdateFile might more accurately be called "AddOrUpdateFile" + zip1.UpdateFile("MyDocuments\Readme.txt") + zip1.UpdateFile("CustomerList.csv") + zip1.Comment = "This zip archive has been created." + zip1.Save("Content.zip") + End Using + + Using zip2 As ZipFile = ZipFile.Read("Content.zip") + zip2.UpdateFile("Updates\Readme.txt") + zip2.Comment = "This zip archive has been updated: The Readme.txt file has been changed." + zip2.Save + End Using + + + + + + + + + The name of the file to add or update. It should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + The ZipEntry corresponding to the File that was added or updated. + + + + + Adds or Updates a File in a Zip file archive. + + + + + This method adds a file to a zip archive, or, if the file already exists + in the zip archive, this method Updates the content of that given filename + in the zip archive. + + + + This version of the method allows the caller to explicitly specify the + directory path to be used in the archive. The entry to be added or + updated is found by using the specified directory path, combined with the + basename of the specified filename. + + + + Upon success, there is no way for the application to learn if the file was + added versus updated. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The name of the file to add or update. It should refer to a file in the + filesystem. The name of the file may be a relative path or a + fully-qualified path. + + + + Specifies a directory path to use to override any path in the + fileName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + fileName, if any. Passing the empty string ("") will insert the + item at the root path within the archive. + + + + The ZipEntry corresponding to the File that was added or updated. + + + + + Add or update a directory in a zip archive. + + + + If the specified directory does not exist in the archive, then this method + is equivalent to calling AddDirectory(). If the specified + directory already exists in the archive, then this method updates any + existing entries, and adds any new entries. Any entries that are in the + zip archive but not in the specified directory, are left alone. In other + words, the contents of the zip file will be a union of the previous + contents and the new files. + + + + + + + + The path to the directory to be added to the zip archive, or updated in + the zip archive. + + + + The ZipEntry corresponding to the Directory that was added or updated. + + + + + Add or update a directory in the zip archive at the specified root + directory in the archive. + + + + If the specified directory does not exist in the archive, then this method + is equivalent to calling AddDirectory(). If the specified + directory already exists in the archive, then this method updates any + existing entries, and adds any new entries. Any entries that are in the + zip archive but not in the specified directory, are left alone. In other + words, the contents of the zip file will be a union of the previous + contents and the new files. + + + + + + + + The path to the directory to be added to the zip archive, or updated + in the zip archive. + + + + Specifies a directory path to use to override any path in the + directoryName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + directoryName, if any. Passing the empty string ("") will insert + the item at the root path within the archive. + + + + The ZipEntry corresponding to the Directory that was added or updated. + + + + + Add or update a file or directory in the zip archive. + + + + + This is useful when the application is not sure or does not care if the + item to be added is a file or directory, and does not know or does not + care if the item already exists in the ZipFile. Calling this method + is equivalent to calling RemoveEntry() if an entry by the same name + already exists, followed calling by AddItem(). + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + the path to the file or directory to be added or updated. + + + + + Add or update a file or directory. + + + + + This method is useful when the application is not sure or does not care if + the item to be added is a file or directory, and does not know or does not + care if the item already exists in the ZipFile. Calling this method + is equivalent to calling RemoveEntry(), if an entry by that name + exists, and then calling AddItem(). + + + + This version of the method allows the caller to explicitly specify the + directory path to be used for the item being added to the archive. The + entry or entries that are added or updated will use the specified + DirectoryPathInArchive. Extracting the entry from the archive will + result in a file stored in that directory path. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The path for the File or Directory to be added or updated. + + + Specifies a directory path to use to override any path in the + itemName. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (Nothing in VB) will use the path on the + itemName, if any. Passing the empty string ("") will insert the + item at the root path within the archive. + + + + + Adds a named entry into the zip archive, taking content for the entry + from a string. + + + + Calling this method creates an entry using the given fileName and + directory path within the archive. There is no need for a file by the + given name to exist in the filesystem; the name is used within the zip + archive only. The content for the entry is encoded using the default text + encoding for the machine, or on Silverlight, using UTF-8. + + + + The content of the file, should it be extracted from the zip. + + + + The name, including any path, to use for the entry within the archive. + + + The ZipEntry added. + + + + This example shows how to add an entry to the zipfile, using a string as + content for that entry. + + + string Content = "This string will be the content of the Readme.txt file in the zip archive."; + using (ZipFile zip1 = new ZipFile()) + { + zip1.AddFile("MyDocuments\\Resume.doc", "files"); + zip1.AddEntry("Readme.txt", Content); + zip1.Comment = "This zip file was created at " + System.DateTime.Now.ToString("G"); + zip1.Save("Content.zip"); + } + + + + Public Sub Run() + Dim Content As String = "This string will be the content of the Readme.txt file in the zip archive." + Using zip1 As ZipFile = New ZipFile + zip1.AddEntry("Readme.txt", Content) + zip1.AddFile("MyDocuments\Resume.doc", "files") + zip1.Comment = ("This zip file was created at " & DateTime.Now.ToString("G")) + zip1.Save("Content.zip") + End Using + End Sub + + + + + + Adds a named entry into the zip archive, taking content for the entry + from a string, and using the specified text encoding. + + + + + + Calling this method creates an entry using the given fileName and + directory path within the archive. There is no need for a file by the + given name to exist in the filesystem; the name is used within the zip + archive only. + + + + The content for the entry, a string value, is encoded using the given + text encoding. A BOM (byte-order-mark) is emitted into the file, if the + Encoding parameter is set for that. + + + + Most Encoding classes support a constructor that accepts a boolean, + indicating whether to emit a BOM or not. For example see . + + + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + + The text encoding to use when encoding the string. Be aware: This is + distinct from the text encoding used to encode the fileName, as specified + in . + + + The ZipEntry added. + + + + + Create an entry in the ZipFile using the given Stream + as input. The entry will have the given filename. + + + + + + The application should provide an open, readable stream; in this case it + will be read during the call to or one of + its overloads. + + + + The passed stream will be read from its current position. If + necessary, callers should set the position in the stream before + calling AddEntry(). This might be appropriate when using this method + with a MemoryStream, for example. + + + + In cases where a large number of streams will be added to the + ZipFile, the application may wish to avoid maintaining all of the + streams open simultaneously. To handle this situation, the application + should use the + overload. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + This example adds a single entry to a ZipFile via a Stream. + + + + String zipToCreate = "Content.zip"; + String fileNameInArchive = "Content-From-Stream.bin"; + using (System.IO.Stream streamToRead = MyStreamOpener()) + { + using (ZipFile zip = new ZipFile()) + { + ZipEntry entry= zip.AddEntry(fileNameInArchive, streamToRead); + zip.AddFile("Readme.txt"); + zip.Save(zipToCreate); // the stream is read implicitly here + } + } + + + + Dim zipToCreate As String = "Content.zip" + Dim fileNameInArchive As String = "Content-From-Stream.bin" + Using streamToRead as System.IO.Stream = MyStreamOpener() + Using zip As ZipFile = New ZipFile() + Dim entry as ZipEntry = zip.AddEntry(fileNameInArchive, streamToRead) + zip.AddFile("Readme.txt") + zip.Save(zipToCreate) '' the stream is read implicitly, here + End Using + End Using + + + + + + + The name, including any path, which is shown in the zip file for the added + entry. + + + The input stream from which to grab content for the file + + The ZipEntry added. + + + + Add a ZipEntry for which content is written directly by the application. + + + + + When the application needs to write the zip entry data, use this + method to add the ZipEntry. For example, in the case that the + application wishes to write the XML representation of a DataSet into + a ZipEntry, the application can use this method to do so. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + About progress events: When using the WriteDelegate, DotNetZip does + not issue any SaveProgress events with EventType = + Saving_EntryBytesRead. (This is because it is the + application's code that runs in WriteDelegate - there's no way for + DotNetZip to know when to issue a EntryBytesRead event.) + Applications that want to update a progress bar or similar status + indicator should do so from within the WriteDelegate + itself. DotNetZip will issue the other SaveProgress events, + including + Saving_Started, + + Saving_BeforeWriteEntry, and + Saving_AfterWriteEntry. + + + + Note: When you use PKZip encryption, it's normally necessary to + compute the CRC of the content to be encrypted, before compressing or + encrypting it. Therefore, when using PKZip encryption with a + WriteDelegate, the WriteDelegate CAN BE called twice: once to compute + the CRC, and the second time to potentially compress and + encrypt. Surprising, but true. This is because PKWARE specified that + the encryption initialization data depends on the CRC. + If this happens, for each call of the delegate, your + application must stream the same entry data in its entirety. If your + application writes different data during the second call, it will + result in a corrupt zip file. + + + + The double-read behavior happens with all types of entries, not only + those that use WriteDelegate. It happens if you add an entry from a + filesystem file, or using a string, or a stream, or an opener/closer + pair. But in those cases, DotNetZip takes care of reading twice; in + the case of the WriteDelegate, the application code gets invoked + twice. Be aware. + + + + As you can imagine, this can cause performance problems for large + streams, and it can lead to correctness problems when you use a + WriteDelegate. This is a pretty big pitfall. There are two + ways to avoid it. First, and most preferred: don't use PKZIP + encryption. If you use the WinZip AES encryption, this problem + doesn't occur, because the encryption protocol doesn't require the CRC + up front. Second: if you do choose to use PKZIP encryption, write out + to a non-seekable stream (like standard output, or the + Response.OutputStream in an ASP.NET application). In this case, + DotNetZip will use an alternative encryption protocol that does not + rely on the CRC of the content. This also implies setting bit 3 in + the zip entry, which still presents problems for some zip tools. + + + + In the future I may modify DotNetZip to *always* use bit 3 when PKZIP + encryption is in use. This seems like a win overall, but there will + be some work involved. If you feel strongly about it, visit the + DotNetZip forums and vote up the Workitem + tracking this issue. + + + + + the name of the entry to add + the delegate which will write the entry content + the ZipEntry added + + + + This example shows an application filling a DataSet, then saving the + contents of that DataSet as XML, into a ZipEntry in a ZipFile, using an + anonymous delegate in C#. The DataSet XML is never saved to a disk file. + + + var c1= new System.Data.SqlClient.SqlConnection(connstring1); + var da = new System.Data.SqlClient.SqlDataAdapter() + { + SelectCommand= new System.Data.SqlClient.SqlCommand(strSelect, c1) + }; + + DataSet ds1 = new DataSet(); + da.Fill(ds1, "Invoices"); + + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, (name,stream) => ds1.WriteXml(stream) ); + zip.Save(zipFileName); + } + + + + + + This example uses an anonymous method in C# as the WriteDelegate to provide + the data for the ZipEntry. The example is a bit contrived - the + AddFile() method is a simpler way to insert the contents of a file + into an entry in a zip file. On the other hand, if there is some sort of + processing or transformation of the file contents required before writing, + the application could use the WriteDelegate to do it, in this way. + + + using (var input = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite )) + { + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, (name,output) => + { + byte[] buffer = new byte[BufferSize]; + int n; + while ((n = input.Read(buffer, 0, buffer.Length)) != 0) + { + // could transform the data here... + output.Write(buffer, 0, n); + // could update a progress bar here + } + }); + + zip.Save(zipFileName); + } + } + + + + + + This example uses a named delegate in VB to write data for the given + ZipEntry (VB9 does not have anonymous delegates). The example here is a bit + contrived - a simpler way to add the contents of a file to a ZipEntry is to + simply use the appropriate AddFile() method. The key scenario for + which the WriteDelegate makes sense is saving a DataSet, in XML + format, to the zip file. The DataSet can write XML to a stream, and the + WriteDelegate is the perfect place to write into the zip file. There may be + other data structures that can write to a stream, but cannot be read as a + stream. The WriteDelegate would be appropriate for those cases as + well. + + + Private Sub WriteEntry (ByVal name As String, ByVal output As Stream) + Using input As FileStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) + Dim n As Integer = -1 + Dim buffer As Byte() = New Byte(BufferSize){} + Do While n <> 0 + n = input.Read(buffer, 0, buffer.Length) + output.Write(buffer, 0, n) + Loop + End Using + End Sub + + Public Sub Run() + Using zip = New ZipFile + zip.AddEntry(zipEntryName, New WriteDelegate(AddressOf WriteEntry)) + zip.Save(zipFileName) + End Using + End Sub + + + + + + Add an entry, for which the application will provide a stream, + just-in-time. + + + + + In cases where the application wishes to open the stream that holds + the content for the ZipEntry, on a just-in-time basis, the application + can use this method and provide delegates to open and close the + stream. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + This example uses anonymous methods in C# to open and close the + source stream for the content for a zip entry. In a real + application, the logic for the OpenDelegate would probably be more + involved. + + + using(Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) + { + zip.AddEntry(zipEntryName, + (name) => File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ), + (name, stream) => stream.Close() + ); + + zip.Save(zipFileName); + } + + + + + + + This example uses delegates in VB.NET to open and close the + the source stream for the content for a zip entry. VB 9.0 lacks + support for "Sub" lambda expressions, and so the CloseDelegate must + be an actual, named Sub. + + + + Function MyStreamOpener(ByVal entryName As String) As Stream + '' This simply opens a file. You probably want to do somethinig + '' more involved here: open a stream to read from a database, + '' open a stream on an HTTP connection, and so on. + Return File.OpenRead(entryName) + End Function + + Sub MyStreamCloser(entryName As String, stream As Stream) + stream.Close() + End Sub + + Public Sub Run() + Dim dirToZip As String = "fodder" + Dim zipFileToCreate As String = "Archive.zip" + Dim opener As OpenDelegate = AddressOf MyStreamOpener + Dim closer As CloseDelegate = AddressOf MyStreamCloser + Dim numFilestoAdd As Int32 = 4 + Using zip As ZipFile = New ZipFile + Dim i As Integer + For i = 0 To numFilesToAdd - 1 + zip.AddEntry(String.Format("content-{0:000}.txt"), opener, closer) + Next i + zip.Save(zipFileToCreate) + End Using + End Sub + + + + + the name of the entry to add + + the delegate that will be invoked to open the stream + + + the delegate that will be invoked to close the stream + + the ZipEntry added + + + + + Updates the given entry in the ZipFile, using the given + string as content for the ZipEntry. + + + + + + Calling this method is equivalent to removing the ZipEntry for + the given file name and directory path, if it exists, and then calling + . See the documentation for + that method for further explanation. The string content is encoded + using the default encoding for the machine, or on Silverlight, using + UTF-8. This encoding is distinct from the encoding used for the + filename itself. See . + + + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given string as + content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + + The content of the file, should it be extracted from the zip. + + + + The text encoding to use when encoding the string. Be aware: This is + distinct from the text encoding used to encode the filename. See . + + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given delegate + as the source for content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + the delegate which will write the entry content. + + The ZipEntry added. + + + + + Updates the given entry in the ZipFile, using the given delegates + to open and close the stream that provides the content for the ZipEntry. + + + + Calling this method is equivalent to removing the ZipEntry for the + given file name and directory path, if it exists, and then calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + + the delegate that will be invoked to open the stream + + + the delegate that will be invoked to close the stream + + + The ZipEntry added or updated. + + + + + Updates the given entry in the ZipFile, using the given stream as + input, and the given filename and given directory Path. + + + + + Calling the method is equivalent to calling RemoveEntry() if an + entry by the same name already exists, and then calling AddEntry() + with the given fileName and stream. + + + + The stream must be open and readable during the call to + ZipFile.Save. You can dispense the stream on a just-in-time basis + using the property. Check the + documentation of that property for more information. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to the + ZipEntry added. + + + + + + + + + The name, including any path, to use within the archive for the entry. + + + The input stream from which to read file data. + The ZipEntry added. + + + + Add an entry into the zip archive using the given filename and + directory path within the archive, and the given content for the + file. No file is created in the filesystem. + + + The data to use for the entry. + + + The name, including any path, to use within the archive for the entry. + + + The ZipEntry added. + + + + Updates the given entry in the ZipFile, using the given byte + array as content for the entry. + + + + Calling this method is equivalent to removing the ZipEntry + for the given filename and directory path, if it exists, and then + calling . See the + documentation for that method for further explanation. + + + + The name, including any path, to use within the archive for the entry. + + + The content to use for the ZipEntry. + + The ZipEntry added. + + + + + Adds the contents of a filesystem directory to a Zip file archive. + + + + + + The name of the directory may be a relative path or a fully-qualified + path. Any files within the named directory are added to the archive. Any + subdirectories within the named directory are also added to the archive, + recursively. + + + + Top-level entries in the named directory will appear as top-level entries + in the zip archive. Entries in subdirectories in the named directory will + result in entries in subdirectories in the zip archive. + + + + If you want the entries to appear in a containing directory in the zip + archive itself, then you should call the AddDirectory() overload that + allows you to explicitly specify a directory path for use in the archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + + + + + This method has 2 overloads. + + The name of the directory to add. + The ZipEntry added. + + + + Adds the contents of a filesystem directory to a Zip file archive, + overriding the path to be used for entries in the archive. + + + + + The name of the directory may be a relative path or a fully-qualified + path. The add operation is recursive, so that any files or subdirectories + within the name directory are also added to the archive. + + + + Top-level entries in the named directory will appear as top-level entries + in the zip archive. Entries in subdirectories in the named directory will + result in entries in subdirectories in the zip archive. + + + + For ZipFile properties including , , , , , + , and , their + respective values at the time of this call will be applied to each + ZipEntry added. + + + + + + + In this code, calling the ZipUp() method with a value of "c:\reports" for + the directory parameter will result in a zip file structure in which all + entries are contained in a toplevel "reports" directory. + + + + public void ZipUp(string targetZip, string directory) + { + using (var zip = new ZipFile()) + { + zip.AddDirectory(directory, System.IO.Path.GetFileName(directory)); + zip.Save(targetZip); + } + } + + + + + + + + The name of the directory to add. + + + Specifies a directory path to use to override any path in the + DirectoryName. This path may, or may not, correspond to a real directory + in the current filesystem. If the zip is later extracted, this is the + path used for the extracted file or directory. Passing null + (Nothing in VB) or the empty string ("") will insert the items at + the root path within the archive. + + + The ZipEntry added. + + + + Creates a directory in the zip archive. + + + + + + Use this when you want to create a directory in the archive but there is + no corresponding filesystem representation for that directory. + + + + You will probably not need to do this in your code. One of the only times + you will want to do this is if you want an empty directory in the zip + archive. The reason: if you add a file to a zip archive that is stored + within a multi-level directory, all of the directory tree is implicitly + created in the zip archive. + + + + + + The name of the directory to create in the archive. + + The ZipEntry added. + + + + Checks a zip file to see if its directory is consistent. + + + + + + In cases of data error, the directory within a zip file can get out + of synch with the entries in the zip file. This method checks the + given zip file and returns true if this has occurred. + + + This method may take a long time to run for large zip files. + + + This method is not supported in the Reduced or Compact Framework + versions of DotNetZip. + + + + Developers using COM can use the ComHelper.CheckZip(String) + method. + + + + + The filename to of the zip file to check. + + true if the named zip file checks OK. Otherwise, false. + + + + + + + Checks a zip file to see if its directory is consistent, + and optionally fixes the directory if necessary. + + + + + + In cases of data error, the directory within a zip file can get out of + synch with the entries in the zip file. This method checks the given + zip file, and returns true if this has occurred. It also optionally + fixes the zipfile, saving the fixed copy in Name_Fixed.zip. + + + + This method may take a long time to run for large zip files. It + will take even longer if the file actually needs to be fixed, and if + fixIfNecessary is true. + + + + This method is not supported in the Reduced or Compact + Framework versions of DotNetZip. + + + + + The filename to of the zip file to check. + + If true, the method will fix the zip file if + necessary. + + + a TextWriter in which messages generated while checking will be written. + + + true if the named zip is OK; false if the file needs to be fixed. + + + + + + + Rewrite the directory within a zipfile. + + + + + + In cases of data error, the directory in a zip file can get out of + synch with the entries in the zip file. This method attempts to fix + the zip file if this has occurred. + + + This can take a long time for large zip files. + + This won't work if the zip file uses a non-standard + code page - neither IBM437 nor UTF-8. + + + This method is not supported in the Reduced or Compact Framework + versions of DotNetZip. + + + + Developers using COM can use the ComHelper.FixZipDirectory(String) + method. + + + + + The filename to of the zip file to fix. + + + + + + + Verify the password on a zip file. + + + + + Keep in mind that passwords in zipfiles are applied to + zip entries, not to the entire zip file. So testing a + zipfile for a particular password doesn't work in the + general case. On the other hand, it's often the case + that a single password will be used on all entries in a + zip file. This method works for that case. + + + There is no way to check a password without doing the + decryption. So this code decrypts and extracts the given + zipfile into + + + + The filename to of the zip file to fix. + + The password to check. + + a bool indicating whether the password matches. + + + + Returns true if an entry by the given name exists in the ZipFile. + + + the name of the entry to find + true if an entry with the given name exists; otherwise false. + + + + Provides a string representation of the instance. + a string representation of the instance. + + + + Creates a new ZipFile instance, using the specified filename. + + + + + Applications can use this constructor to create a new ZipFile for writing, + or to slurp in an existing zip archive for read and update purposes. + + + + To create a new zip archive, an application can call this constructor, + passing the name of a file that does not exist. The name may be a fully + qualified path. Then the application can add directories or files to the + ZipFile via AddDirectory(), AddFile(), AddItem() + and then write the zip archive to the disk by calling Save(). The + zip file is not actually opened and written to the disk until the + application calls ZipFile.Save(). At that point the new zip file + with the given name is created. + + + + If you won't know the name of the Zipfile until the time you call + ZipFile.Save(), or if you plan to save to a stream (which has no + name), then you should use the no-argument constructor. + + + + The application can also call this constructor to read an existing zip + archive. passing the name of a valid zip file that does exist. But, it's + better form to use the static method, + passing the name of the zip file, because using ZipFile.Read() in + your code communicates very clearly what you are doing. In either case, + the file is then read into the ZipFile instance. The app can then + enumerate the entries or can modify the zip file, for example adding + entries, removing entries, changing comments, and so on. + + + + One advantage to this parameterized constructor: it allows applications to + use the same code to add items to a zip archive, regardless of whether the + zip file exists. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + By the way, since DotNetZip is so easy to use, don't you think you should + donate $5 or $10? + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + + This example shows how to create a zipfile, and add a few files into it. + + String ZipFileToCreate = "archive1.zip"; + String DirectoryToZip = "c:\\reports"; + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames, "files"); + zip.Save(ZipFileToCreate); + } + + + + Dim ZipFileToCreate As String = "archive1.zip" + Dim DirectoryToZip As String = "c:\reports" + Using zip As ZipFile = New ZipFile() + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames, "files") + zip.Save(ZipFileToCreate) + End Using + + + + The filename to use for the new zip archive. + + + + + Creates a new ZipFile instance, using the specified name for the + filename, and the specified Encoding. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + This is equivalent to setting the property on the ZipFile + instance after construction. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + The filename to use for the new zip archive. + The Encoding is used as the default alternate + encoding for entries with filenames or comments that cannot be encoded + with the IBM437 code page. + + + + Create a zip file, without specifying a target filename or stream to save to. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + After instantiating with this constructor and adding entries to the + archive, the application should call or + to save to a file or a + stream, respectively. The application can also set the + property and then call the no-argument method. (This + is the preferred approach for applications that use the library through + COM interop.) If you call the no-argument method + without having set the Name of the ZipFile, either through + the parameterized constructor or through the explicit property , the + Save() will throw, because there is no place to save the file. + + + Instances of the ZipFile class are not multi-thread safe. You may + have multiple threads that each use a distinct ZipFile instance, or + you can synchronize multi-thread access to a single instance. + + + + + This example creates a Zip archive called Backup.zip, containing all the files + in the directory DirectoryToZip. Files within subdirectories are not zipped up. + + using (ZipFile zip = new ZipFile()) + { + // Store all files found in the top level directory, into the zip archive. + // note: this code does not recurse subdirectories! + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames, "files"); + zip.Save("Backup.zip"); + } + + + + Using zip As New ZipFile + ' Store all files found in the top level directory, into the zip archive. + ' note: this code does not recurse subdirectories! + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames, "files") + zip.Save("Backup.zip") + End Using + + + + + + Create a zip file, specifying a text Encoding, but without specifying a + target filename or stream to save to. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + + + + + Creates a new ZipFile instance, using the specified name for the + filename, and the specified status message writer. + + + + + See the documentation on the ZipFile + constructor that accepts a single string argument for basic + information on all the ZipFile constructors. + + + + This version of the constructor allows the caller to pass in a TextWriter, + to which verbose messages will be written during extraction or creation of + the zip archive. A console application may wish to pass + System.Console.Out to get messages on the Console. A graphical or headless + application may wish to capture the messages in a different + TextWriter, for example, a StringWriter, and then display + the messages in a TextBox, or generate an audit log of ZipFile operations. + + + + To encrypt the data for the files added to the ZipFile instance, + set the Password property after creating the ZipFile instance. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if name refers to an existing file that is not a valid zip file. + + + + + using (ZipFile zip = new ZipFile("Backup.zip", Console.Out)) + { + // Store all files found in the top level directory, into the zip archive. + // note: this code does not recurse subdirectories! + // Status messages will be written to Console.Out + String[] filenames = System.IO.Directory.GetFiles(DirectoryToZip); + zip.AddFiles(filenames); + zip.Save(); + } + + + + Using zip As New ZipFile("Backup.zip", Console.Out) + ' Store all files found in the top level directory, into the zip archive. + ' note: this code does not recurse subdirectories! + ' Status messages will be written to Console.Out + Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) + zip.AddFiles(filenames) + zip.Save() + End Using + + + + The filename to use for the new zip archive. + A TextWriter to use for writing + verbose status messages. + + + + Creates a new ZipFile instance, using the specified name for the + filename, the specified status message writer, and the specified Encoding. + + + + + This constructor works like the ZipFile + constructor that accepts a single string argument. See that + reference for detail on what this constructor does. + + + + This version of the constructor allows the caller to pass in a + TextWriter, and an Encoding. The TextWriter will collect + verbose messages that are generated by the library during extraction or + creation of the zip archive. A console application may wish to pass + System.Console.Out to get messages on the Console. A graphical or + headless application may wish to capture the messages in a different + TextWriter, for example, a StringWriter, and then display + the messages in a TextBox, or generate an audit log of + ZipFile operations. + + + + The Encoding is used as the default alternate encoding for entries + with filenames or comments that cannot be encoded with the IBM437 code + page. This is a equivalent to setting the property on the ZipFile + instance after construction. + + + + To encrypt the data for the files added to the ZipFile instance, + set the Password property after creating the ZipFile + instance. + + + + Instances of the ZipFile class are not multi-thread safe. You may + not party on a single instance with multiple threads. You may have + multiple threads that each use a distinct ZipFile instance, or you + can synchronize multi-thread access to a single instance. + + + + + + Thrown if fileName refers to an existing file that is not a valid zip file. + + + The filename to use for the new zip archive. + A TextWriter to use for writing verbose + status messages. + + The Encoding is used as the default alternate encoding for entries with + filenames or comments that cannot be encoded with the IBM437 code page. + + + + + Initialize a ZipFile instance by reading in a zip file. + + + + + + This method is primarily useful from COM Automation environments, when + reading or extracting zip files. In COM, it is not possible to invoke + parameterized constructors for a class. A COM Automation application can + update a zip file by using the default (no argument) + constructor, then calling Initialize() to read the contents + of an on-disk zip archive into the ZipFile instance. + + + + .NET applications are encouraged to use the ZipFile.Read() methods + for better clarity. + + + + the name of the existing zip file to read in. + + + + Removes the given ZipEntry from the zip archive. + + + + + After calling RemoveEntry, the application must call Save to + make the changes permanent. + + + + + Thrown if the specified ZipEntry does not exist in the ZipFile. + + + + In this example, all entries in the zip archive dating from before + December 31st, 2007, are removed from the archive. This is actually much + easier if you use the RemoveSelectedEntries method. But I needed an + example for RemoveEntry, so here it is. + + String ZipFileToRead = "ArchiveToModify.zip"; + System.DateTime Threshold = new System.DateTime(2007,12,31); + using (ZipFile zip = ZipFile.Read(ZipFileToRead)) + { + var EntriesToRemove = new System.Collections.Generic.List<ZipEntry>(); + foreach (ZipEntry e in zip) + { + if (e.LastModified < Threshold) + { + // We cannot remove the entry from the list, within the context of + // an enumeration of said list. + // So we add the doomed entry to a list to be removed later. + EntriesToRemove.Add(e); + } + } + + // actually remove the doomed entries. + foreach (ZipEntry zombie in EntriesToRemove) + zip.RemoveEntry(zombie); + + zip.Comment= String.Format("This zip archive was updated at {0}.", + System.DateTime.Now.ToString("G")); + + // save with a different name + zip.Save("Archive-Updated.zip"); + } + + + + Dim ZipFileToRead As String = "ArchiveToModify.zip" + Dim Threshold As New DateTime(2007, 12, 31) + Using zip As ZipFile = ZipFile.Read(ZipFileToRead) + Dim EntriesToRemove As New System.Collections.Generic.List(Of ZipEntry) + Dim e As ZipEntry + For Each e In zip + If (e.LastModified < Threshold) Then + ' We cannot remove the entry from the list, within the context of + ' an enumeration of said list. + ' So we add the doomed entry to a list to be removed later. + EntriesToRemove.Add(e) + End If + Next + + ' actually remove the doomed entries. + Dim zombie As ZipEntry + For Each zombie In EntriesToRemove + zip.RemoveEntry(zombie) + Next + zip.Comment = String.Format("This zip archive was updated at {0}.", DateTime.Now.ToString("G")) + 'save as a different name + zip.Save("Archive-Updated.zip") + End Using + + + + + The ZipEntry to remove from the zip. + + + + + + + + Removes the ZipEntry with the given filename from the zip archive. + + + + + After calling RemoveEntry, the application must call Save to + make the changes permanent. + + + + + + Thrown if the ZipFile is not updatable. + + + + Thrown if a ZipEntry with the specified filename does not exist in + the ZipFile. + + + + + This example shows one way to remove an entry with a given filename from + an existing zip archive. + + + String zipFileToRead= "PackedDocuments.zip"; + string candidate = "DatedMaterial.xps"; + using (ZipFile zip = ZipFile.Read(zipFileToRead)) + { + if (zip.EntryFilenames.Contains(candidate)) + { + zip.RemoveEntry(candidate); + zip.Comment= String.Format("The file '{0}' has been removed from this archive.", + Candidate); + zip.Save(); + } + } + + + Dim zipFileToRead As String = "PackedDocuments.zip" + Dim candidate As String = "DatedMaterial.xps" + Using zip As ZipFile = ZipFile.Read(zipFileToRead) + If zip.EntryFilenames.Contains(candidate) Then + zip.RemoveEntry(candidate) + zip.Comment = String.Format("The file '{0}' has been removed from this archive.", Candidate) + zip.Save + End If + End Using + + + + + The name of the file, including any directory path, to remove from the zip. + The filename match is not case-sensitive by default; you can use the + CaseSensitiveRetrieval property to change this behavior. The + pathname can use forward-slashes or backward slashes. + + + + + + Closes the read and write streams associated + to the ZipFile, if necessary. + + + + The Dispose() method is generally employed implicitly, via a using(..) {..} + statement. (Using...End Using in VB) If you do not employ a using + statement, insure that your application calls Dispose() explicitly. For + example, in a Powershell application, or an application that uses the COM + interop interface, you must call Dispose() explicitly. + + + + This example extracts an entry selected by name, from the Zip file to the + Console. + + using (ZipFile zip = ZipFile.Read(zipfile)) + { + foreach (ZipEntry e in zip) + { + if (WantThisEntry(e.FileName)) + zip.Extract(e.FileName, Console.OpenStandardOutput()); + } + } // Dispose() is called implicitly here. + + + + Using zip As ZipFile = ZipFile.Read(zipfile) + Dim e As ZipEntry + For Each e In zip + If WantThisEntry(e.FileName) Then + zip.Extract(e.FileName, Console.OpenStandardOutput()) + End If + Next + End Using ' Dispose is implicity called here + + + + + + Disposes any managed resources, if the flag is set, then marks the + instance disposed. This method is typically not called explicitly from + application code. + + + + Applications should call the no-arg Dispose method. + + + + indicates whether the method should dispose streams or not. + + + + + Default size of the buffer used for IO. + + + + + Extracts all of the items in the zip archive, to the specified path in the + filesystem. The path can be relative or fully-qualified. + + + + + This method will extract all entries in the ZipFile to the + specified path. + + + + If an extraction of a file from the zip archive would overwrite an + existing file in the filesystem, the action taken is dictated by the + ExtractExistingFile property, which overrides any setting you may have + made on individual ZipEntry instances. By default, if you have not + set that property on the ZipFile instance, the entry will not + be extracted, the existing file will not be overwritten and an + exception will be thrown. To change this, set the property, or use the + overload that allows you to + specify an ExtractExistingFileAction parameter. + + + + The action to take when an extract would overwrite an existing file + applies to all entries. If you want to set this on a per-entry basis, + then you must use one of the ZipEntry.Extract methods. + + + + This method will send verbose output messages to the , if it is set on the ZipFile + instance. + + + + You may wish to take advantage of the ExtractProgress event. + + + + About timestamps: When extracting a file entry from a zip archive, the + extracted file gets the last modified time of the entry as stored in + the archive. The archive may also store extended file timestamp + information, including last accessed and created times. If these are + present in the ZipEntry, then the extracted file will also get + these times. + + + + A Directory entry is somewhat different. It will get the times as + described for a file entry, but, if there are file entries in the zip + archive that, when extracted, appear in the just-created directory, + then when those file entries are extracted, the last modified and last + accessed times of the directory will change, as a side effect. The + result is that after an extraction of a directory and a number of + files within the directory, the last modified and last accessed + timestamps on the directory will reflect the time that the last file + was extracted into the directory, rather than the time stored in the + zip archive for the directory. + + + + To compensate, when extracting an archive with ExtractAll, + DotNetZip will extract all the file and directory entries as described + above, but it will then make a second pass on the directories, and + reset the times on the directories to reflect what is stored in the + zip archive. + + + + This compensation is performed only within the context of an + ExtractAll. If you call ZipEntry.Extract on a directory + entry, the timestamps on directory in the filesystem will reflect the + times stored in the zip. If you then call ZipEntry.Extract on + a file entry, which is extracted into the directory, the timestamps on + the directory will be updated to the current time. + + + + + This example extracts all the entries in a zip archive file, to the + specified target directory. The extraction will overwrite any + existing files silently. + + + String TargetDirectory= "unpack"; + using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) + { + zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently; + zip.ExtractAll(TargetDirectory); + } + + + + Dim TargetDirectory As String = "unpack" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + zip.ExtractExistingFile= ExtractExistingFileAction.OverwriteSilently + zip.ExtractAll(TargetDirectory) + End Using + + + + + + + + The path to which the contents of the zipfile will be extracted. + The path can be relative or fully-qualified. + + + + + + Extracts all of the items in the zip archive, to the specified path in the + filesystem, using the specified behavior when extraction would overwrite an + existing file. + + + + + + This method will extract all entries in the ZipFile to the specified + path. For an extraction that would overwrite an existing file, the behavior + is dictated by , which overrides any + setting you may have made on individual ZipEntry instances. + + + + The action to take when an extract would overwrite an existing file + applies to all entries. If you want to set this on a per-entry basis, + then you must use or one of the similar methods. + + + + Calling this method is equivalent to setting the property and then calling . + + + + This method will send verbose output messages to the + , if it is set on the ZipFile instance. + + + + + This example extracts all the entries in a zip archive file, to the + specified target directory. It does not overwrite any existing files. + + String TargetDirectory= "c:\\unpack"; + using(ZipFile zip= ZipFile.Read(ZipFileToExtract)) + { + zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite); + } + + + + Dim TargetDirectory As String = "c:\unpack" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + zip.ExtractAll(TargetDirectory, ExtractExistingFileAction.DontOverwrite) + End Using + + + + + The path to which the contents of the zipfile will be extracted. + The path can be relative or fully-qualified. + + + + The action to take if extraction would overwrite an existing file. + + + + + + Reads a zip file archive and returns the instance. + + + + + The stream is read using the default System.Text.Encoding, which is the + IBM437 codepage. + + + + + Thrown if the ZipFile cannot be read. The implementation of this method + relies on System.IO.File.OpenRead, which can throw a variety of exceptions, + including specific exceptions if a file is not found, an unauthorized access + exception, exceptions for poorly formatted filenames, and so on. + + + + The name of the zip archive to open. This can be a fully-qualified or relative + pathname. + + + . + + The instance read from the zip archive. + + + + + Reads a zip file archive from the named filesystem file using the + specified options. + + + + + This version of the Read() method allows the caller to pass + in a TextWriter an Encoding, via an instance of the + ReadOptions class. The ZipFile is read in using the + specified encoding for entries where UTF-8 encoding is not + explicitly specified. + + + + + + + This example shows how to read a zip file using the Big-5 Chinese + code page (950), and extract each entry in the zip file, while + sending status messages out to the Console. + + + + For this code to work as intended, the zipfile must have been + created using the big5 code page (CP950). This is typical, for + example, when using WinRar on a machine with CP950 set as the + default code page. In that case, the names of entries within the + Zip archive will be stored in that code page, and reading the zip + archive must be done using that code page. If the application did + not use the correct code page in ZipFile.Read(), then names of + entries within the zip archive would not be correctly retrieved. + + + + string zipToExtract = "MyArchive.zip"; + string extractDirectory = "extract"; + var options = new ReadOptions + { + StatusMessageWriter = System.Console.Out, + Encoding = System.Text.Encoding.GetEncoding(950) + }; + using (ZipFile zip = ZipFile.Read(zipToExtract, options)) + { + foreach (ZipEntry e in zip) + { + e.Extract(extractDirectory); + } + } + + + + + Dim zipToExtract as String = "MyArchive.zip" + Dim extractDirectory as String = "extract" + Dim options as New ReadOptions + options.Encoding = System.Text.Encoding.GetEncoding(950) + options.StatusMessageWriter = System.Console.Out + Using zip As ZipFile = ZipFile.Read(zipToExtract, options) + Dim e As ZipEntry + For Each e In zip + e.Extract(extractDirectory) + Next + End Using + + + + + + + + This example shows how to read a zip file using the default + code page, to remove entries that have a modified date before a given threshold, + sending status messages out to a StringWriter. + + + + var options = new ReadOptions + { + StatusMessageWriter = new System.IO.StringWriter() + }; + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip", options)) + { + var Threshold = new DateTime(2007,7,4); + // We cannot remove the entry from the list, within the context of + // an enumeration of said list. + // So we add the doomed entry to a list to be removed later. + // pass 1: mark the entries for removal + var MarkedEntries = new System.Collections.Generic.List<ZipEntry>(); + foreach (ZipEntry e in zip) + { + if (e.LastModified < Threshold) + MarkedEntries.Add(e); + } + // pass 2: actually remove the entry. + foreach (ZipEntry zombie in MarkedEntries) + zip.RemoveEntry(zombie); + zip.Comment = "This archive has been updated."; + zip.Save(); + } + // can now use contents of sw, eg store in an audit log + + + + Dim options as New ReadOptions + options.StatusMessageWriter = New System.IO.StringWriter + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip", options) + Dim Threshold As New DateTime(2007, 7, 4) + ' We cannot remove the entry from the list, within the context of + ' an enumeration of said list. + ' So we add the doomed entry to a list to be removed later. + ' pass 1: mark the entries for removal + Dim MarkedEntries As New System.Collections.Generic.List(Of ZipEntry) + Dim e As ZipEntry + For Each e In zip + If (e.LastModified < Threshold) Then + MarkedEntries.Add(e) + End If + Next + ' pass 2: actually remove the entry. + Dim zombie As ZipEntry + For Each zombie In MarkedEntries + zip.RemoveEntry(zombie) + Next + zip.Comment = "This archive has been updated." + zip.Save + End Using + ' can now use contents of sw, eg store in an audit log + + + + + Thrown if the zipfile cannot be read. The implementation of + this method relies on System.IO.File.OpenRead, which + can throw a variety of exceptions, including specific + exceptions if a file is not found, an unauthorized access + exception, exceptions for poorly formatted filenames, and so + on. + + + + The name of the zip archive to open. + This can be a fully-qualified or relative pathname. + + + + The set of options to use when reading the zip file. + + + The ZipFile instance read from the zip archive. + + + + + + + Reads a zip file archive using the specified text encoding, the specified + TextWriter for status messages, and the specified ReadProgress event handler, + and returns the instance. + + + + The name of the zip archive to open. + This can be a fully-qualified or relative pathname. + + + + An event handler for Read operations. + + + + The System.IO.TextWriter to use for writing verbose status messages + during operations on the zip archive. A console application may wish to + pass System.Console.Out to get messages on the Console. A graphical + or headless application may wish to capture the messages in a different + TextWriter, such as a System.IO.StringWriter. + + + + The System.Text.Encoding to use when reading in the zip archive. Be + careful specifying the encoding. If the value you use here is not the same + as the Encoding used when the zip archive was created (possibly by a + different archiver) you will get unexpected results and possibly exceptions. + + + The instance read from the zip archive. + + + + + Reads a zip archive from a stream. + + + + + + When reading from a file, it's probably easier to just use + ZipFile.Read(String, ReadOptions). This + overload is useful when when the zip archive content is + available from an already-open stream. The stream must be + open and readable and seekable when calling this method. The + stream is left open when the reading is completed. + + + + Using this overload, the stream is read using the default + System.Text.Encoding, which is the IBM437 + codepage. If you want to specify the encoding to use when + reading the zipfile content, see + ZipFile.Read(Stream, ReadOptions). This + + + + Reading of zip content begins at the current position in the + stream. This means if you have a stream that concatenates + regular data and zip data, if you position the open, readable + stream at the start of the zip data, you will be able to read + the zip archive using this constructor, or any of the ZipFile + constructors that accept a as + input. Some examples of where this might be useful: the zip + content is concatenated at the end of a regular EXE file, as + some self-extracting archives do. (Note: SFX files produced + by DotNetZip do not work this way; they can be read as normal + ZIP files). Another example might be a stream being read from + a database, where the zip content is embedded within an + aggregate stream of data. + + + + + + + This example shows how to Read zip content from a stream, and + extract one entry into a different stream. In this example, + the filename "NameOfEntryInArchive.doc", refers only to the + name of the entry within the zip archive. A file by that + name is not created in the filesystem. The I/O is done + strictly with the given streams. + + + + using (ZipFile zip = ZipFile.Read(InputStream)) + { + zip.Extract("NameOfEntryInArchive.doc", OutputStream); + } + + + + Using zip as ZipFile = ZipFile.Read(InputStream) + zip.Extract("NameOfEntryInArchive.doc", OutputStream) + End Using + + + + the stream containing the zip data. + + The ZipFile instance read from the stream + + + + + Reads a zip file archive from the given stream using the + specified options. + + + + + + When reading from a file, it's probably easier to just use + ZipFile.Read(String, ReadOptions). This + overload is useful when when the zip archive content is + available from an already-open stream. The stream must be + open and readable and seekable when calling this method. The + stream is left open when the reading is completed. + + + + Reading of zip content begins at the current position in the + stream. This means if you have a stream that concatenates + regular data and zip data, if you position the open, readable + stream at the start of the zip data, you will be able to read + the zip archive using this constructor, or any of the ZipFile + constructors that accept a as + input. Some examples of where this might be useful: the zip + content is concatenated at the end of a regular EXE file, as + some self-extracting archives do. (Note: SFX files produced + by DotNetZip do not work this way; they can be read as normal + ZIP files). Another example might be a stream being read from + a database, where the zip content is embedded within an + aggregate stream of data. + + + + the stream containing the zip data. + + + The set of options to use when reading the zip file. + + + + Thrown if the zip archive cannot be read. + + + The ZipFile instance read from the stream. + + + + + + + Reads a zip archive from a stream, using the specified text Encoding, the + specified TextWriter for status messages, + and the specified ReadProgress event handler. + + + + + Reading of zip content begins at the current position in the stream. This + means if you have a stream that concatenates regular data and zip data, if + you position the open, readable stream at the start of the zip data, you + will be able to read the zip archive using this constructor, or any of the + ZipFile constructors that accept a as + input. Some examples of where this might be useful: the zip content is + concatenated at the end of a regular EXE file, as some self-extracting + archives do. (Note: SFX files produced by DotNetZip do not work this + way). Another example might be a stream being read from a database, where + the zip content is embedded within an aggregate stream of data. + + + + the stream containing the zip data. + + + The System.IO.TextWriter to which verbose status messages are written + during operations on the ZipFile. For example, in a console + application, System.Console.Out works, and will get a message for each entry + added to the ZipFile. If the TextWriter is null, no verbose messages + are written. + + + + The text encoding to use when reading entries that do not have the UTF-8 + encoding bit set. Be careful specifying the encoding. If the value you use + here is not the same as the Encoding used when the zip archive was created + (possibly by a different archiver) you will get unexpected results and + possibly exceptions. See the + property for more information. + + + + An event handler for Read operations. + + + an instance of ZipFile + + + + Checks the given file to see if it appears to be a valid zip file. + + + + + Calling this method is equivalent to calling with the testExtract parameter set to false. + + + + The file to check. + true if the file appears to be a zip file. + + + + Checks a file to see if it is a valid zip file. + + + + + This method opens the specified zip file, reads in the zip archive, + verifying the ZIP metadata as it reads. + + + + If everything succeeds, then the method returns true. If anything fails - + for example if an incorrect signature or CRC is found, indicating a + corrupt file, the the method returns false. This method also returns + false for a file that does not exist. + + + + If is true, as part of its check, this + method reads in the content for each entry, expands it, and checks CRCs. + This provides an additional check beyond verifying the zip header and + directory data. + + + + If is true, and if any of the zip entries + are protected with a password, this method will return false. If you want + to verify a ZipFile that has entries which are protected with a + password, you will need to do that manually. + + + + + The zip file to check. + true if the caller wants to extract each entry. + true if the file contains a valid zip file. + + + + Checks a stream to see if it contains a valid zip archive. + + + + + This method reads the zip archive contained in the specified stream, verifying + the ZIP metadata as it reads. If testExtract is true, this method also extracts + each entry in the archive, dumping all the bits into . + + + + If everything succeeds, then the method returns true. If anything fails - + for example if an incorrect signature or CRC is found, indicating a corrupt + file, the the method returns false. This method also returns false for a + file that does not exist. + + + + If testExtract is true, this method reads in the content for each + entry, expands it, and checks CRCs. This provides an additional check + beyond verifying the zip header data. + + + + If testExtract is true, and if any of the zip entries are protected + with a password, this method will return false. If you want to verify a + ZipFile that has entries which are protected with a password, you will need + to do that manually. + + + + + + The stream to check. + true if the caller wants to extract each entry. + true if the stream contains a valid zip archive. + + + + Delete file with retry on UnauthorizedAccessException. + + + + + When calling File.Delete() on a file that has been "recently" + created, the call sometimes fails with + UnauthorizedAccessException. This method simply retries the Delete 3 + times with a sleep between tries. + + + + the name of the file to be deleted + + + + Saves the Zip archive to a file, specified by the Name property of the + ZipFile. + + + + + The ZipFile instance is written to storage, typically a zip file + in a filesystem, only when the caller calls Save. In the typical + case, the Save operation writes the zip content to a temporary file, and + then renames the temporary file to the desired name. If necessary, this + method will delete a pre-existing file before the rename. + + + + The property is specified either explicitly, + or implicitly using one of the parameterized ZipFile constructors. For + COM Automation clients, the Name property must be set explicitly, + because COM Automation clients cannot call parameterized constructors. + + + + When using a filesystem file for the Zip output, it is possible to call + Save multiple times on the ZipFile instance. With each + call the zip content is re-written to the same output file. + + + + Data for entries that have been added to the ZipFile instance is + written to the output when the Save method is called. This means + that the input streams for those entries must be available at the time + the application calls Save. If, for example, the application + adds entries with AddEntry using a dynamically-allocated + MemoryStream, the memory stream must not have been disposed + before the call to Save. See the property for more discussion of the + availability requirements of the input stream for an entry, and an + approach for providing just-in-time stream lifecycle management. + + + + + + + + Thrown if you haven't specified a location or stream for saving the zip, + either in the constructor or by setting the Name property, or if you try + to save a regular zip archive to a filename with a .exe extension. + + + + Thrown if is non-zero, and the number + of segments that would be generated for the spanned zip file during the + save operation exceeds 99. If this happens, you need to increase the + segment size. + + + + + + Save the file to a new zipfile, with the given name. + + + + + This method allows the application to explicitly specify the name of the zip + file when saving. Use this when creating a new zip file, or when + updating a zip archive. + + + + An application can also save a zip archive in several places by calling this + method multiple times in succession, with different filenames. + + + + The ZipFile instance is written to storage, typically a zip file in a + filesystem, only when the caller calls Save. The Save operation writes + the zip content to a temporary file, and then renames the temporary file + to the desired name. If necessary, this method will delete a pre-existing file + before the rename. + + + + + + Thrown if you specify a directory for the filename. + + + + The name of the zip archive to save to. Existing files will + be overwritten with great prejudice. + + + + This example shows how to create and Save a zip file. + + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(@"c:\reports\January"); + zip.Save("January.zip"); + } + + + + Using zip As New ZipFile() + zip.AddDirectory("c:\reports\January") + zip.Save("January.zip") + End Using + + + + + + This example shows how to update a zip file. + + using (ZipFile zip = ZipFile.Read("ExistingArchive.zip")) + { + zip.AddFile("NewData.csv"); + zip.Save("UpdatedArchive.zip"); + } + + + + Using zip As ZipFile = ZipFile.Read("ExistingArchive.zip") + zip.AddFile("NewData.csv") + zip.Save("UpdatedArchive.zip") + End Using + + + + + + + Save the zip archive to the specified stream. + + + + + The ZipFile instance is written to storage - typically a zip file + in a filesystem, but using this overload, the storage can be anything + accessible via a writable stream - only when the caller calls Save. + + + + Use this method to save the zip content to a stream directly. A common + scenario is an ASP.NET application that dynamically generates a zip file + and allows the browser to download it. The application can call + Save(Response.OutputStream) to write a zipfile directly to the + output stream, without creating a zip file on the disk on the ASP.NET + server. + + + + Be careful when saving a file to a non-seekable stream, including + Response.OutputStream. When DotNetZip writes to a non-seekable + stream, the zip archive is formatted in such a way that may not be + compatible with all zip tools on all platforms. It's a perfectly legal + and compliant zip file, but some people have reported problems opening + files produced this way using the Mac OS archive utility. + + + + + + + This example saves the zipfile content into a MemoryStream, and + then gets the array of bytes from that MemoryStream. + + + using (var zip = new Ionic.Zip.ZipFile()) + { + zip.CompressionLevel= Ionic.Zlib.CompressionLevel.BestCompression; + zip.Password = "VerySecret."; + zip.Encryption = EncryptionAlgorithm.WinZipAes128; + zip.AddFile(sourceFileName); + MemoryStream output = new MemoryStream(); + zip.Save(output); + + byte[] zipbytes = output.ToArray(); + } + + + + + + This example shows a pitfall you should avoid. DO NOT read + from a stream, then try to save to the same stream. DO + NOT DO THIS: + + + + using (var fs = new FileSteeam(filename, FileMode.Open)) + { + using (var zip = Ionic.Zip.ZipFile.Read(inputStream)) + { + zip.AddEntry("Name1.txt", "this is the content"); + zip.Save(inputStream); // NO NO NO!! + } + } + + + + Better like this: + + + + using (var zip = Ionic.Zip.ZipFile.Read(filename)) + { + zip.AddEntry("Name1.txt", "this is the content"); + zip.Save(); // YES! + } + + + + + + The System.IO.Stream to write to. It must be + writable. If you created the ZipFile instanct by calling + ZipFile.Read(), this stream must not be the same stream + you passed to ZipFile.Read(). + + + + + Adds to the ZipFile a set of files from the current working directory on + disk, that conform to the specified criteria. + + + + + This method selects files from the the current working directory matching + the specified criteria, and adds them to the ZipFile. + + + + Specify the criteria in statements of 3 elements: a noun, an operator, and + a value. Consider the string "name != *.doc" . The noun is "name". The + operator is "!=", implying "Not Equal". The value is "*.doc". That + criterion, in English, says "all files with a name that does not end in + the .doc extension." + + + + Supported nouns include "name" (or "filename") for the filename; "atime", + "mtime", and "ctime" for last access time, last modfied time, and created + time of the file, respectively; "attributes" (or "attrs") for the file + attributes; "size" (or "length") for the file length (uncompressed), and + "type" for the type of object, either a file or a directory. The + "attributes", "name" and "type" nouns both support = and != as operators. + The "size", "atime", "mtime", and "ctime" nouns support = and !=, and + >, >=, <, <= as well. The times are taken to be expressed in + local time. + + + + Specify values for the file attributes as a string with one or more of the + characters H,R,S,A,I,L in any order, implying file attributes of Hidden, + ReadOnly, System, Archive, NotContextIndexed, and ReparsePoint (symbolic + link) respectively. + + + + To specify a time, use YYYY-MM-DD-HH:mm:ss or YYYY/MM/DD-HH:mm:ss as the + format. If you omit the HH:mm:ss portion, it is assumed to be 00:00:00 + (midnight). + + + + The value for a size criterion is expressed in integer quantities of bytes, + kilobytes (use k or kb after the number), megabytes (m or mb), or gigabytes + (g or gb). + + + + The value for a name is a pattern to match against the filename, potentially + including wildcards. The pattern follows CMD.exe glob rules: * implies one + or more of any character, while ? implies one character. If the name + pattern contains any slashes, it is matched to the entire filename, + including the path; otherwise, it is matched against only the filename + without the path. This means a pattern of "*\*.*" matches all files one + directory level deep, while a pattern of "*.*" matches all files in all + directories. + + + + To specify a name pattern that includes spaces, use single quotes around the + pattern. A pattern of "'* *.*'" will match all files that have spaces in + the filename. The full criteria string for that would be "name = '* *.*'" . + + + + The value for a type criterion is either F (implying a file) or D (implying + a directory). + + + + Some examples: + + + + + criteria + Files retrieved + + + + name != *.xls + any file with an extension that is not .xls + + + + + name = *.mp3 + any file with a .mp3 extension. + + + + + *.mp3 + (same as above) any file with a .mp3 extension. + + + + + attributes = A + all files whose attributes include the Archive bit. + + + + + attributes != H + all files whose attributes do not include the Hidden bit. + + + + + mtime > 2009-01-01 + all files with a last modified time after January 1st, 2009. + + + + + size > 2gb + all files whose uncompressed size is greater than 2gb. + + + + + type = D + all directories in the filesystem. + + + + + + You can combine criteria with the conjunctions AND or OR. Using a string + like "name = *.txt AND size >= 100k" for the selectionCriteria retrieves + entries whose names end in .txt, and whose uncompressed size is greater than + or equal to 100 kilobytes. + + + + For more complex combinations of criteria, you can use parenthesis to group + clauses in the boolean logic. Without parenthesis, the precedence of the + criterion atoms is determined by order of appearance. Unlike the C# + language, the AND conjunction does not take precendence over the logical OR. + This is important only in strings that contain 3 or more criterion atoms. + In other words, "name = *.txt and size > 1000 or attributes = H" implies + "((name = *.txt AND size > 1000) OR attributes = H)" while "attributes = + H OR name = *.txt and size > 1000" evaluates to "((attributes = H OR name + = *.txt) AND size > 1000)". When in doubt, use parenthesis. + + + + Using time properties requires some extra care. If you want to retrieve all + entries that were last updated on 2009 February 14, specify a time range + like so:"mtime >= 2009-02-14 AND mtime < 2009-02-15". Read this to + say: all files updated after 12:00am on February 14th, until 12:00am on + February 15th. You can use the same bracketing approach to specify any time + period - a year, a month, a week, and so on. + + + + The syntax allows one special case: if you provide a string with no spaces, it is + treated as a pattern to match for the filename. Therefore a string like "*.xls" + will be equivalent to specifying "name = *.xls". + + + + There is no logic in this method that insures that the file inclusion + criteria are internally consistent. For example, it's possible to specify + criteria that says the file must have a size of less than 100 bytes, as well + as a size that is greater than 1000 bytes. Obviously no file will ever + satisfy such criteria, but this method does not detect such logical + inconsistencies. The caller is responsible for insuring the criteria are + sensible. + + + + Using this method, the file selection does not recurse into + subdirectories, and the full path of the selected files is included in the + entries added into the zip archive. If you don't like these behaviors, + see the other overloads of this method. + + + + + This example zips up all *.csv files in the current working directory. + + using (ZipFile zip = new ZipFile()) + { + // To just match on filename wildcards, + // use the shorthand form of the selectionCriteria string. + zip.AddSelectedFiles("*.csv"); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + zip.AddSelectedFiles("*.csv") + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + + Adds to the ZipFile a set of files from the disk that conform to the + specified criteria, optionally recursing into subdirectories. + + + + + This method selects files from the the current working directory matching + the specified criteria, and adds them to the ZipFile. If + recurseDirectories is true, files are also selected from + subdirectories, and the directory structure in the filesystem is + reproduced in the zip archive, rooted at the current working directory. + + + + Using this method, the full path of the selected files is included in the + entries added into the zip archive. If you don't want this behavior, use + one of the overloads of this method that allows the specification of a + directoryInArchive. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + + This example zips up all *.xml files in the current working directory, or any + subdirectory, that are larger than 1mb. + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", true) + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + If true, the file selection will recurse into subdirectories. + + + + + Adds to the ZipFile a set of files from a specified directory in the + filesystem, that conform to the specified criteria. + + + + + This method selects files that conform to the specified criteria, from the + the specified directory on disk, and adds them to the ZipFile. The search + does not recurse into subdirectores. + + + + Using this method, the full filesystem path of the files on disk is + reproduced on the entries added to the zip file. If you don't want this + behavior, use one of the other overloads of this method. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + + This example zips up all *.xml files larger than 1mb in the directory + given by "d:\rawdata". + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\\rawdata"); + zip.Save(PathToZipArchive); + } + + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.xml and size > 1024kb", "d:\rawdata) + zip.Save(PathToZipArchive) + End Using + + + + The criteria for file selection + + + The name of the directory on the disk from which to select files. + + + + + Adds to the ZipFile a set of files from the specified directory on disk, + that conform to the specified criteria. + + + + + + This method selects files from the the specified disk directory matching + the specified selection criteria, and adds them to the ZipFile. If + recurseDirectories is true, files are also selected from + subdirectories. + + + + The full directory structure in the filesystem is reproduced on the + entries added to the zip archive. If you don't want this behavior, use + one of the overloads of this method that allows the specification of a + directoryInArchive. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + + + This example zips up all *.csv files in the "files" directory, or any + subdirectory, that have been saved since 2009 February 14th. + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile() + ' Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.csv and mtime > 2009-02-14", "files", true) + zip.Save(PathToZipArchive) + End Using + + + + + This example zips up all files in the current working + directory, and all its child directories, except those in + the excludethis subdirectory. + + Using Zip As ZipFile = New ZipFile(zipfile) + Zip.AddSelectedFfiles("name != 'excludethis\*.*'", datapath, True) + Zip.Save() + End Using + + + + The criteria for file selection + + + The filesystem path from which to select files. + + + + If true, the file selection will recurse into subdirectories. + + + + + Adds to the ZipFile a selection of files from the specified directory on + disk, that conform to the specified criteria, and using a specified root + path for entries added to the zip archive. + + + + + This method selects files from the specified disk directory matching the + specified selection criteria, and adds those files to the ZipFile, using + the specified directory path in the archive. The search does not recurse + into subdirectories. For details on the syntax for the selectionCriteria + parameter, see . + + + + + + + This example zips up all *.psd files in the "photos" directory that have + been saved since 2009 February 14th, and puts them all in a zip file, + using the directory name of "content" in the zip archive itself. When the + zip archive is unzipped, the folder containing the .psd files will be + named "content". + + + using (ZipFile zip = new ZipFile()) + { + // Use a compound expression in the selectionCriteria string. + zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content"); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile + zip.AddSelectedFiles("name = *.psd and mtime > 2009-02-14", "photos", "content") + zip.Save(PathToZipArchive) + End Using + + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (nothing in VB) will use the path on the file name, if any; in other + words it would use directoryOnDisk, plus any subdirectory. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + + Adds to the ZipFile a selection of files from the specified directory on + disk, that conform to the specified criteria, optionally recursing through + subdirectories, and using a specified root path for entries added to the + zip archive. + + + + This method selects files from the specified disk directory that match the + specified selection criteria, and adds those files to the ZipFile, using + the specified directory path in the archive. If recurseDirectories + is true, files are also selected from subdirectories, and the directory + structure in the filesystem is reproduced in the zip archive, rooted at + the directory specified by directoryOnDisk. For details on the + syntax for the selectionCriteria parameter, see . + + + + + This example zips up all files that are NOT *.pst files, in the current + working directory and any subdirectories. + + + using (ZipFile zip = new ZipFile()) + { + zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true); + zip.Save(PathToZipArchive); + } + + + Using zip As ZipFile = New ZipFile + zip.AddSelectedFiles("name != *.pst", SourceDirectory, "backup", true) + zip.Save(PathToZipArchive) + End Using + + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a real + directory in the current filesystem. If the files within the zip are + later extracted, this is the path used for the extracted file. Passing + null (nothing in VB) will use the path on the file name, if any; in other + words it would use directoryOnDisk, plus any subdirectory. Passing + the empty string ("") will insert the item at the root path within the + archive. + + + + If true, the method also scans subdirectories for files matching the + criteria. + + + + + Updates the ZipFile with a selection of files from the disk that conform + to the specified criteria. + + + + This method selects files from the specified disk directory that match the + specified selection criteria, and Updates the ZipFile with those + files, using the specified directory path in the archive. If + recurseDirectories is true, files are also selected from + subdirectories, and the directory structure in the filesystem is + reproduced in the zip archive, rooted at the directory specified by + directoryOnDisk. For details on the syntax for the + selectionCriteria parameter, see . + + + + The criteria for selection of files to add to the ZipFile. + + + + The path to the directory in the filesystem from which to select files. + + + + Specifies a directory path to use to in place of the + directoryOnDisk. This path may, or may not, correspond to a + real directory in the current filesystem. If the files within the zip + are later extracted, this is the path used for the extracted file. + Passing null (nothing in VB) will use the path on the file name, if + any; in other words it would use directoryOnDisk, plus any + subdirectory. Passing the empty string ("") will insert the item at + the root path within the archive. + + + + If true, the method also scans subdirectories for files matching the criteria. + + + + + + + Retrieve entries from the zipfile by specified criteria. + + + + + This method allows callers to retrieve the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + This example selects all the PhotoShop files from within an archive, and extracts them + to the current working directory. + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + var PhotoShopFiles = zip1.SelectEntries("*.psd"); + foreach (ZipEntry psd in PhotoShopFiles) + { + psd.Extract(); + } + } + + + Using zip1 As ZipFile = ZipFile.Read(ZipFileName) + Dim PhotoShopFiles as ICollection(Of ZipEntry) + PhotoShopFiles = zip1.SelectEntries("*.psd") + Dim psd As ZipEntry + For Each psd In PhotoShopFiles + psd.Extract + Next + End Using + + + the string that specifies which entries to select + a collection of ZipEntry objects that conform to the inclusion spec + + + + Retrieve entries from the zipfile by specified criteria. + + + + + This method allows callers to retrieve the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + var UpdatedPhotoShopFiles = zip1.SelectEntries("*.psd", "UpdatedFiles"); + foreach (ZipEntry e in UpdatedPhotoShopFiles) + { + // prompt for extract here + if (WantExtract(e.FileName)) + e.Extract(); + } + } + + + Using zip1 As ZipFile = ZipFile.Read(ZipFileName) + Dim UpdatedPhotoShopFiles As ICollection(Of ZipEntry) = zip1.SelectEntries("*.psd", "UpdatedFiles") + Dim e As ZipEntry + For Each e In UpdatedPhotoShopFiles + ' prompt for extract here + If Me.WantExtract(e.FileName) Then + e.Extract + End If + Next + End Using + + + the string that specifies which entries to select + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + a collection of ZipEntry objects that conform to the inclusion spec + + + + Remove entries from the zipfile by specified criteria. + + + + + This method allows callers to remove the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + This example removes all entries in a zip file that were modified prior to January 1st, 2008. + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + // remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01"); + // don't forget to save the archive! + zip1.Save(); + } + + + Using zip As ZipFile = ZipFile.Read(ZipFileName) + ' remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01") + ' do not forget to save the archive! + zip1.Save + End Using + + + the string that specifies which entries to select + the number of entries removed + + + + Remove entries from the zipfile by specified criteria, and within the specified + path in the archive. + + + + + This method allows callers to remove the collection of entries from the zipfile + that fit the specified criteria. The criteria are described in a string format, and + can include patterns for the filename; constraints on the size of the entry; + constraints on the last modified, created, or last accessed time for the file + described by the entry; or the attributes of the entry. + + + + For details on the syntax for the selectionCriteria parameter, see . + + + + This method is intended for use with a ZipFile that has been read from storage. + When creating a new ZipFile, this method will work only after the ZipArchive has + been Saved to the disk (the ZipFile class subsequently and implicitly reads the Zip + archive from storage.) Calling SelectEntries on a ZipFile that has not yet been + saved will deliver undefined results. + + + + + Thrown if selectionCriteria has an invalid syntax. + + + + + using (ZipFile zip1 = ZipFile.Read(ZipFileName)) + { + // remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01", "documents"); + // a call to ZipFile.Save will make the modifications permanent + zip1.Save(); + } + + + Using zip As ZipFile = ZipFile.Read(ZipFileName) + ' remove all entries from prior to Jan 1, 2008 + zip1.RemoveEntries("mtime < 2008-01-01", "documents") + ' a call to ZipFile.Save will make the modifications permanent + zip1.Save + End Using + + + + the string that specifies which entries to select + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + the number of entries removed + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the current working directory. + + + + If any of the files to be extracted already exist, then the action taken is as + specified in the property on the + corresponding ZipEntry instance. By default, the action taken in this case is to + throw an exception. + + + + For information on the syntax of the selectionCriteria string, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15"); + } + + + the selection criteria for entries to extract. + + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the current working directory. When extraction would would + overwrite an existing filesystem file, the action taken is as specified in the + parameter. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009, + overwriting any existing files. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15", + ExtractExistingFileAction.OverwriteSilently); + } + + + + the selection criteria for entries to extract. + + + The action to take if extraction would overwrite an existing file. + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are selected from the specified directory within the archive, and then + extracted into the current working directory. + + + + If any of the files to be extracted already exist, then the action taken is as + specified in the property on the + corresponding ZipEntry instance. By default, the action taken in this case is to + throw an exception. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all XML files modified after 15 January 2009, + and writes them to the "unpack" directory. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml and mtime > 2009-01-15","unpack"); + } + + + + the selection criteria for entries to extract. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the specified directory. If any of the files to be + extracted already exist, an exception will be thrown. + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + the selection criteria for entries to extract. + + + the directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + the directory on the disk into which to extract. It will be created + if it does not exist. + + + + + Selects and Extracts a set of Entries from the ZipFile. + + + + + The entries are extracted into the specified directory. When extraction would would + overwrite an existing filesystem file, the action taken is as specified in the + parameter. + + + + For information on the syntax of the string describing the entry selection criteria, + see . + + + + + This example shows how extract all files with an XML extension or with a size larger than 100,000 bytes, + and puts them in the unpack directory. For any files that already exist in + that destination directory, they will not be overwritten. + + using (ZipFile zip = ZipFile.Read(zipArchiveName)) + { + zip.ExtractSelectedEntries("name = *.xml or size > 100000", + null, + "unpack", + ExtractExistingFileAction.DontOverwrite); + } + + + + the selection criteria for entries to extract. + + + The directory on the disk into which to extract. It will be created if it does not exist. + + + + The directory in the archive from which to select entries. If null, then + all directories in the archive are used. + + + + The action to take if extraction would overwrite an existing file. + + + + + + Saves the ZipFile instance to a self-extracting zip archive. + + + + + + The generated exe image will execute on any machine that has the .NET + Framework 2.0 installed on it. The generated exe image is also a + valid ZIP file, readable with DotNetZip or another Zip library or tool + such as WinZip. + + + + There are two "flavors" of self-extracting archive. The + WinFormsApplication version will pop up a GUI and allow the + user to select a target directory into which to extract. There's also + a checkbox allowing the user to specify to overwrite existing files, + and another checkbox to allow the user to request that Explorer be + opened to see the extracted files after extraction. The other flavor + is ConsoleApplication. A self-extractor generated with that + flavor setting will run from the command line. It accepts command-line + options to set the overwrite behavior, and to specify the target + extraction directory. + + + + There are a few temporary files created during the saving to a + self-extracting zip. These files are created in the directory pointed + to by , which defaults to . These temporary files are + removed upon successful completion of this method. + + + + When a user runs the WinForms SFX, the user's personal directory (Environment.SpecialFolder.Personal) + will be used as the default extract location. If you want to set the + default extract location, you should use the other overload of + SaveSelfExtractor()/ The user who runs the SFX will have the + opportunity to change the extract directory before extracting. When + the user runs the Command-Line SFX, the user must explicitly specify + the directory to which to extract. The .NET Framework 2.0 is required + on the computer when the self-extracting archive is run. + + + + NB: This method is not available in the version of DotNetZip build for + the .NET Compact Framework, nor in the "Reduced" DotNetZip library. + + + + + + + string DirectoryPath = "c:\\Documents\\Project7"; + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); + zip.Comment = "This will be embedded into a self-extracting console-based exe"; + zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication); + } + + + Dim DirectoryPath As String = "c:\Documents\Project7" + Using zip As New ZipFile() + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) + zip.Comment = "This will be embedded into a self-extracting console-based exe" + zip.SaveSelfExtractor("archive.exe", SelfExtractorFlavor.ConsoleApplication) + End Using + + + + + a pathname, possibly fully qualified, to be created. Typically it + will end in an .exe extension. + + Indicates whether a Winforms or Console self-extractor is + desired. + + + + Saves the ZipFile instance to a self-extracting zip archive, using + the specified save options. + + + + + This method saves a self extracting archive, using the specified save + options. These options include the flavor of the SFX, the default extract + directory, the icon file, and so on. See the documentation + for for more + details. + + + + The user who runs the SFX will have the opportunity to change the extract + directory before extracting. If at the time of extraction, the specified + directory does not exist, the SFX will create the directory before + extracting the files. + + + + + + This example saves a WinForms-based self-extracting archive EXE that + will use c:\ExtractHere as the default extract location. The C# code + shows syntax for .NET 3.0, which uses an object initializer for + the SelfExtractorOptions object. + + string DirectoryPath = "c:\\Documents\\Project7"; + using (ZipFile zip = new ZipFile()) + { + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)); + zip.Comment = "This will be embedded into a self-extracting WinForms-based exe"; + var options = new SelfExtractorOptions + { + Flavor = SelfExtractorFlavor.WinFormsApplication, + DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere", + PostExtractCommandLine = ExeToRunAfterExtract, + SfxExeWindowTitle = "My Custom Window Title", + RemoveUnpackedFilesAfterExecute = true + }; + zip.SaveSelfExtractor("archive.exe", options); + } + + + Dim DirectoryPath As String = "c:\Documents\Project7" + Using zip As New ZipFile() + zip.AddDirectory(DirectoryPath, System.IO.Path.GetFileName(DirectoryPath)) + zip.Comment = "This will be embedded into a self-extracting console-based exe" + Dim options As New SelfExtractorOptions() + options.Flavor = SelfExtractorFlavor.WinFormsApplication + options.DefaultExtractDirectory = "%USERPROFILE%\\ExtractHere" + options.PostExtractCommandLine = ExeToRunAfterExtract + options.SfxExeWindowTitle = "My Custom Window Title" + options.RemoveUnpackedFilesAfterExecute = True + zip.SaveSelfExtractor("archive.exe", options) + End Using + + + + The name of the EXE to generate. + provides the options for creating the + Self-extracting archive. + + + + Generic IEnumerator support, for use of a ZipFile in an enumeration. + + + + You probably do not want to call GetEnumerator explicitly. Instead + it is implicitly called when you use a loop in C#, or a + For Each loop in VB.NET. + + + + This example reads a zipfile of a given name, then enumerates the + entries in that zip file, and displays the information about each + entry on the Console. + + using (ZipFile zip = ZipFile.Read(zipfile)) + { + bool header = true; + foreach (ZipEntry e in zip) + { + if (header) + { + System.Console.WriteLine("Zipfile: {0}", zip.Name); + System.Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded); + System.Console.WriteLine("BitField: 0x{0:X2}", e.BitField); + System.Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod); + System.Console.WriteLine("\n{1,-22} {2,-6} {3,4} {4,-8} {0}", + "Filename", "Modified", "Size", "Ratio", "Packed"); + System.Console.WriteLine(new System.String('-', 72)); + header = false; + } + + System.Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", + e.FileName, + e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), + e.UncompressedSize, + e.CompressionRatio, + e.CompressedSize); + + e.Extract(); + } + } + + + + Dim ZipFileToExtract As String = "c:\foo.zip" + Using zip As ZipFile = ZipFile.Read(ZipFileToExtract) + Dim header As Boolean = True + Dim e As ZipEntry + For Each e In zip + If header Then + Console.WriteLine("Zipfile: {0}", zip.Name) + Console.WriteLine("Version Needed: 0x{0:X2}", e.VersionNeeded) + Console.WriteLine("BitField: 0x{0:X2}", e.BitField) + Console.WriteLine("Compression Method: 0x{0:X2}", e.CompressionMethod) + Console.WriteLine(ChrW(10) & "{1,-22} {2,-6} {3,4} {4,-8} {0}", _ + "Filename", "Modified", "Size", "Ratio", "Packed" ) + Console.WriteLine(New String("-"c, 72)) + header = False + End If + Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", _ + e.FileName, _ + e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), _ + e.UncompressedSize, _ + e.CompressionRatio, _ + e.CompressedSize ) + e.Extract + Next + End Using + + + + A generic enumerator suitable for use within a foreach loop. + + + + An IEnumerator, for use of a ZipFile in a foreach construct. + + + + This method is included for COM support. An application generally does not call + this method directly. It is called implicitly by COM clients when enumerating + the entries in the ZipFile instance. In VBScript, this is done with a For Each + statement. In Javascript, this is done with new Enumerator(zipfile). + + + + The IEnumerator over the entries in the ZipFile. + + + + + Provides a human-readable string with information about the ZipFile. + + + + + The information string contains 10 lines or so, about each ZipEntry, + describing whether encryption is in use, the compressed and uncompressed + length of the entry, the offset of the entry, and so on. As a result the + information string can be very long for zip files that contain many + entries. + + + This information is mostly useful for diagnostic purposes. + + + + + + Indicates whether to perform a full scan of the zip file when reading it. + + + + + + You almost never want to use this property. + + + + When reading a zip file, if this flag is true (True in + VB), the entire zip archive will be scanned and searched for entries. + For large archives, this can take a very, long time. The much more + efficient default behavior is to read the zip directory, which is + stored at the end of the zip file. But, in some cases the directory is + corrupted and you need to perform a full scan of the zip file to + determine the contents of the zip file. This property lets you do + that, when necessary. + + + + This flag is effective only when calling . Normally you would read a ZipFile with the + static ZipFile.Read + method. But you can't set the FullScan property on the + ZipFile instance when you use a static factory method like + ZipFile.Read. + + + + + + + This example shows how to read a zip file using the full scan approach, + and then save it, thereby producing a corrected zip file. + + + using (var zip = new ZipFile()) + { + zip.FullScan = true; + zip.Initialize(zipFileName); + zip.Save(newName); + } + + + + Using zip As New ZipFile + zip.FullScan = True + zip.Initialize(zipFileName) + zip.Save(newName) + End Using + + + + + + + Whether to sort the ZipEntries before saving the file. + + + + The default is false. If you have a large number of zip entries, the sort + alone can consume significant time. + + + + + using (var zip = new ZipFile()) + { + zip.AddFiles(filesToAdd); + zip.SortEntriesBeforeSaving = true; + zip.Save(name); + } + + + + Using zip As New ZipFile + zip.AddFiles(filesToAdd) + zip.SortEntriesBeforeSaving = True + zip.Save(name) + End Using + + + + + + + Indicates whether NTFS Reparse Points, like junctions, should be + traversed during calls to AddDirectory(). + + + + By default, calls to AddDirectory() will traverse NTFS reparse + points, like mounted volumes, and directory junctions. An example + of a junction is the "My Music" directory in Windows Vista. In some + cases you may not want DotNetZip to traverse those directories. In + that case, set this property to false. + + + + + using (var zip = new ZipFile()) + { + zip.AddDirectoryWillTraverseReparsePoints = false; + zip.AddDirectory(dirToZip,"fodder"); + zip.Save(zipFileToCreate); + } + + + + + + Size of the IO buffer used while saving. + + + + + + First, let me say that you really don't need to bother with this. It is + here to allow for optimizations that you probably won't make! It will work + fine if you don't set or get this property at all. Ok? + + + + Now that we have that out of the way, the fine print: This + property affects the size of the buffer that is used for I/O for each + entry contained in the zip file. When a file is read in to be compressed, + it uses a buffer given by the size here. When you update a zip file, the + data for unmodified entries is copied from the first zip file to the + other, through a buffer given by the size here. + + + + Changing the buffer size affects a few things: first, for larger buffer + sizes, the memory used by the ZipFile, obviously, will be larger + during I/O operations. This may make operations faster for very much + larger files. Last, for any given entry, when you use a larger buffer + there will be fewer progress events during I/O operations, because there's + one progress event generated for each time the buffer is filled and then + emptied. + + + + The default buffer size is 8k. Increasing the buffer size may speed + things up as you compress larger files. But there are no hard-and-fast + rules here, eh? You won't know til you test it. And there will be a + limit where ever larger buffers actually slow things down. So as I said + in the beginning, it's probably best if you don't set or get this property + at all. + + + + + + This example shows how you might set a large buffer size for efficiency when + dealing with zip entries that are larger than 1gb. + + using (ZipFile zip = new ZipFile()) + { + zip.SaveProgress += this.zip1_SaveProgress; + zip.AddDirectory(directoryToZip, ""); + zip.UseZip64WhenSaving = Zip64Option.Always; + zip.BufferSize = 65536*8; // 65536 * 8 = 512k + zip.Save(ZipFileToCreate); + } + + + + + + Size of the work buffer to use for the ZLIB codec during compression. + + + + + When doing ZLIB or Deflate compression, the library fills a buffer, + then passes it to the compressor for compression. Then the library + reads out the compressed bytes. This happens repeatedly until there + is no more uncompressed data to compress. This property sets the + size of the buffer that will be used for chunk-wise compression. In + order for the setting to take effect, your application needs to set + this property before calling one of the ZipFile.Save() + overloads. + + + Setting this affects the performance and memory efficiency of + compression and decompression. For larger files, setting this to a + larger size may improve compression performance, but the exact + numbers vary depending on available memory, the size of the streams + you are compressing, and a bunch of other variables. I don't have + good firm recommendations on how to set it. You'll have to test it + yourself. Or just leave it alone and accept the default. + + + + + + Indicates whether extracted files should keep their paths as + stored in the zip archive. + + + + + This property affects Extraction. It is not used when creating zip + archives. + + + + With this property set to false, the default, extracting entries + from a zip file will create files in the filesystem that have the full + path associated to the entry within the zip file. With this property set + to true, extracting entries from the zip file results in files + with no path: the folders are "flattened." + + + + An example: suppose the zip file contains entries /directory1/file1.txt and + /directory2/file2.txt. With FlattenFoldersOnExtract set to false, + the files created will be \directory1\file1.txt and \directory2\file2.txt. + With the property set to true, the files created are file1.txt and file2.txt. + + + + + + + The compression strategy to use for all entries. + + + + Set the Strategy used by the ZLIB-compatible compressor, when + compressing entries using the DEFLATE method. Different compression + strategies work better on different sorts of data. The strategy + parameter can affect the compression ratio and the speed of + compression but not the correctness of the compresssion. For more + information see Ionic.Zlib.CompressionStrategy. + + + + + The name of the ZipFile, on disk. + + + + + + When the ZipFile instance was created by reading an archive using + one of the ZipFile.Read methods, this property represents the name + of the zip file that was read. When the ZipFile instance was + created by using the no-argument constructor, this value is null + (Nothing in VB). + + + + If you use the no-argument constructor, and you then explicitly set this + property, when you call , this name will + specify the name of the zip file created. Doing so is equivalent to + calling . When instantiating a + ZipFile by reading from a stream or byte array, the Name + property remains null. When saving to a stream, the Name + property is implicitly set to null. + + + + + + Sets the compression level to be used for entries subsequently added to + the zip archive. + + + + + Varying the compression level used on entries can affect the + size-vs-speed tradeoff when compression and decompressing data streams + or files. + + + + As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile + instance will cause the specified CompressionLevel to be used on all + items that are subsequently added to the + ZipFile instance. If you set this property after you have added + items to the ZipFile, but before you have called Save(), + those items will not use the specified compression level. + + + + If you do not set this property, the default compression level is used, + which normally gives a good balance of compression efficiency and + compression speed. In some tests, using BestCompression can + double the time it takes to compress, while delivering just a small + increase in compression efficiency. This behavior will vary with the + type of data you compress. If you are in doubt, just leave this setting + alone, and accept the default. + + + + + + The compression method for the zipfile. + + + + By default, the compression method is CompressionMethod.Deflate. + + + + + + + A comment attached to the zip archive. + + + + + + This property is read/write. It allows the application to specify a + comment for the ZipFile, or read the comment for the + ZipFile. After setting this property, changes are only made + permanent when you call a Save() method. + + + + According to PKWARE's + zip specification, the comment is not encrypted, even if there is a + password set on the zip file. + + + + The specification does not describe how to indicate the encoding used + on a comment string. Many "compliant" zip tools and libraries use + IBM437 as the code page for comments; DotNetZip, too, follows that + practice. On the other hand, there are situations where you want a + Comment to be encoded with something else, for example using code page + 950 "Big-5 Chinese". To fill that need, DotNetZip will encode the + comment following the same procedure it follows for encoding + filenames: (a) if is + Never, it uses the default encoding (IBM437). (b) if is Always, it always uses the + alternate encoding (). (c) if is AsNecessary, it uses the + alternate encoding only if the default encoding is not sufficient for + encoding the comment - in other words if decoding the result does not + produce the original string. This decision is taken at the time of + the call to ZipFile.Save(). + + + + When creating a zip archive using this library, it is possible to change + the value of between each + entry you add, and between adding entries and the call to + Save(). Don't do this. It will likely result in a zip file that is + not readable by any tool or application. For best interoperability, leave + alone, or specify it only + once, before adding any entries to the ZipFile instance. + + + + + + + Specifies whether the Creation, Access, and Modified times for entries + added to the zip file will be emitted in “Windows format” + when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entries should or should not be stored + in the zip archive in the format used by Windows. By default this flag is + true, meaning the Windows-format times are stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are + automatically set from the filesystem values. When adding an entry from a + stream or string, all three values are implicitly set to + DateTime.Now. Applications can also explicitly set those times by + calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since January 1, 1601 UTC. The other is a format Unix applications typically + use: seconds since January 1, 1970 UTC. Each format can be stored in an + "extra field" in the zip entry when saving the zip archive. The former + uses an extra field with a Header Id of 0x000A, while the latter uses a + header ID of 0x5455, although you probably don't need to know that. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Some tools and libraries + may be able to read only one or the other. DotNetZip can read or write + times in either or both formats. + + + + The times stored are taken from , , and . + + + + The value set here applies to all entries subsequently added to the + ZipFile. + + + + This property is not mutually exclusive of the property. It is possible and + legal and valid to produce a zip file that contains timestamps encoded in + the Unix format as well as in the Windows format, in addition to the LastModified time attached to each + entry in the archive, a time that is always stored in "DOS format". And, + notwithstanding the names PKWare uses for these time formats, any of them + can be read and written by any computer, on any operating system. But, + there are no guarantees that a program running on Mac or Linux will + gracefully handle a zip file with "Windows" formatted times, or that an + application that does not use DotNetZip but runs on Windows will be able to + handle file times in Unix format. + + + + When in doubt, test. Sorry, I haven't got a complete list of tools and + which sort of timestamps they can use and will tolerate. If you get any + good information and would like to pass it on, please do so and I will + include that information in this documentation. + + + + + This example shows how to save a zip file that contains file timestamps + in a format normally used by Unix. + + using (var zip = new ZipFile()) + { + // produce a zip file the Mac will like + zip.EmitTimesInWindowsFormatWhenSaving = false; + zip.EmitTimesInUnixFormatWhenSaving = true; + zip.AddDirectory(directoryToZip, "files"); + zip.Save(outputFile); + } + + + + Using zip As New ZipFile + '' produce a zip file the Mac will like + zip.EmitTimesInWindowsFormatWhenSaving = False + zip.EmitTimesInUnixFormatWhenSaving = True + zip.AddDirectory(directoryToZip, "files") + zip.Save(outputFile) + End Using + + + + + + + + + Specifies whether the Creation, Access, and Modified times + for entries added to the zip file will be emitted in "Unix(tm) + format" when the zip archive is saved. + + + + + An application creating a zip archive can use this flag to explicitly + specify that the file times for the entries should or should not be stored + in the zip archive in the format used by Unix. By default this flag is + false, meaning the Unix-format times are not stored in the zip + archive. + + + + When adding an entry from a file or directory, the Creation (), Access (), and Modified () times for the given entry are + automatically set from the filesystem values. When adding an entry from a + stream or string, all three values are implicitly set to DateTime.Now. + Applications can also explicitly set those times by calling . + + + + PKWARE's + zip specification describes multiple ways to format these times in a + zip file. One is the format Windows applications normally use: 100ns ticks + since January 1, 1601 UTC. The other is a format Unix applications + typically use: seconds since January 1, 1970 UTC. Each format can be + stored in an "extra field" in the zip entry when saving the zip + archive. The former uses an extra field with a Header Id of 0x000A, while + the latter uses a header ID of 0x5455, although you probably don't need to + know that. + + + + Not all tools and libraries can interpret these fields. Windows + compressed folders is one that can read the Windows Format timestamps, + while I believe the Infozip + tools can read the Unix format timestamps. Some tools and libraries may be + able to read only one or the other. DotNetZip can read or write times in + either or both formats. + + + + The times stored are taken from , , and . + + + + This property is not mutually exclusive of the property. It is possible and + legal and valid to produce a zip file that contains timestamps encoded in + the Unix format as well as in the Windows format, in addition to the LastModified time attached to each + entry in the zip archive, a time that is always stored in "DOS + format". And, notwithstanding the names PKWare uses for these time + formats, any of them can be read and written by any computer, on any + operating system. But, there are no guarantees that a program running on + Mac or Linux will gracefully handle a zip file with "Windows" formatted + times, or that an application that does not use DotNetZip but runs on + Windows will be able to handle file times in Unix format. + + + + When in doubt, test. Sorry, I haven't got a complete list of tools and + which sort of timestamps they can use and will tolerate. If you get any + good information and would like to pass it on, please do so and I will + include that information in this documentation. + + + + + + + + + Indicates whether verbose output is sent to the during AddXxx() and + ReadXxx() operations. + + + + This is a synthetic property. It returns true if the is non-null. + + + + + Indicates whether to perform case-sensitive matching on the filename when + retrieving entries in the zipfile via the string-based indexer. + + + + The default value is false, which means don't do case-sensitive + matching. In other words, retrieving zip["ReadMe.Txt"] is the same as + zip["readme.txt"]. It really makes sense to set this to true only + if you are not running on Windows, which has case-insensitive + filenames. But since this library is not built for non-Windows platforms, + in most cases you should just leave this property alone. + + + + + Indicates whether to encode entry filenames and entry comments using Unicode + (UTF-8). + + + + + The + PKWare zip specification provides for encoding file names and file + comments in either the IBM437 code page, or in UTF-8. This flag selects + the encoding according to that specification. By default, this flag is + false, and filenames and comments are encoded into the zip file in the + IBM437 codepage. Setting this flag to true will specify that filenames + and comments that cannot be encoded with IBM437 will be encoded with + UTF-8. + + + + Zip files created with strict adherence to the PKWare specification with + respect to UTF-8 encoding can contain entries with filenames containing + any combination of Unicode characters, including the full range of + characters from Chinese, Latin, Hebrew, Greek, Cyrillic, and many other + alphabets. However, because at this time, the UTF-8 portion of the PKWare + specification is not broadly supported by other zip libraries and + utilities, such zip files may not be readable by your favorite zip tool or + archiver. In other words, interoperability will decrease if you set this + flag to true. + + + + In particular, Zip files created with strict adherence to the PKWare + specification with respect to UTF-8 encoding will not work well with + Explorer in Windows XP or Windows Vista, because Windows compressed + folders, as far as I know, do not support UTF-8 in zip files. Vista can + read the zip files, but shows the filenames incorrectly. Unpacking from + Windows Vista Explorer will result in filenames that have rubbish + characters in place of the high-order UTF-8 bytes. + + + + Also, zip files that use UTF-8 encoding will not work well with Java + applications that use the java.util.zip classes, as of v5.0 of the Java + runtime. The Java runtime does not correctly implement the PKWare + specification in this regard. + + + + As a result, we have the unfortunate situation that "correct" behavior by + the DotNetZip library with regard to Unicode encoding of filenames during + zip creation will result in zip files that are readable by strictly + compliant and current tools (for example the most recent release of the + commercial WinZip tool); but these zip files will not be readable by + various other tools or libraries, including Windows Explorer. + + + + The DotNetZip library can read and write zip files with UTF8-encoded + entries, according to the PKware spec. If you use DotNetZip for both + creating and reading the zip file, and you use UTF-8, there will be no + loss of information in the filenames. For example, using a self-extractor + created by this library will allow you to unpack files correctly with no + loss of information in the filenames. + + + + If you do not set this flag, it will remain false. If this flag is false, + your ZipFile will encode all filenames and comments using the + IBM437 codepage. This can cause "loss of information" on some filenames, + but the resulting zipfile will be more interoperable with other + utilities. As an example of the loss of information, diacritics can be + lost. The o-tilde character will be down-coded to plain o. The c with a + cedilla (Unicode 0xE7) used in Portugese will be downcoded to a c. + Likewise, the O-stroke character (Unicode 248), used in Danish and + Norwegian, will be down-coded to plain o. Chinese characters cannot be + represented in codepage IBM437; when using the default encoding, Chinese + characters in filenames will be represented as ?. These are all examples + of "information loss". + + + + The loss of information associated to the use of the IBM437 encoding is + inconvenient, and can also lead to runtime errors. For example, using + IBM437, any sequence of 4 Chinese characters will be encoded as ????. If + your application creates a ZipFile, then adds two files, each with + names of four Chinese characters each, this will result in a duplicate + filename exception. In the case where you add a single file with a name + containing four Chinese characters, calling Extract() on the entry that + has question marks in the filename will result in an exception, because + the question mark is not legal for use within filenames on Windows. These + are just a few examples of the problems associated to loss of information. + + + + This flag is independent of the encoding of the content within the entries + in the zip file. Think of the zip file as a container - it supports an + encoding. Within the container are other "containers" - the file entries + themselves. The encoding within those entries is independent of the + encoding of the zip archive container for those entries. + + + + Rather than specify the encoding in a binary fashion using this flag, an + application can specify an arbitrary encoding via the property. Setting the encoding + explicitly when creating zip archives will result in non-compliant zip + files that, curiously, are fairly interoperable. The challenge is, the + PKWare specification does not provide for a way to specify that an entry + in a zip archive uses a code page that is neither IBM437 nor UTF-8. + Therefore if you set the encoding explicitly when creating a zip archive, + you must take care upon reading the zip archive to use the same code page. + If you get it wrong, the behavior is undefined and may result in incorrect + filenames, exceptions, stomach upset, hair loss, and acne. + + + + + + + Specify whether to use ZIP64 extensions when saving a zip archive. + + + + + + When creating a zip file, the default value for the property is . is + safest, in the sense that you will not get an Exception if a pre-ZIP64 + limit is exceeded. + + + + You may set the property at any time before calling Save(). + + + + When reading a zip file via the Zipfile.Read() method, DotNetZip + will properly read ZIP64-endowed zip archives, regardless of the value of + this property. DotNetZip will always read ZIP64 archives. This property + governs only whether DotNetZip will write them. Therefore, when updating + archives, be careful about setting this property after reading an archive + that may use ZIP64 extensions. + + + + An interesting question is, if you have set this property to + AsNecessary, and then successfully saved, does the resulting + archive use ZIP64 extensions or not? To learn this, check the property, after calling Save(). + + + + Have you thought about + donating? + + + + + + + + Indicates whether the archive requires ZIP64 extensions. + + + + + + This property is null (or Nothing in VB) if the archive has + not been saved, and there are fewer than 65334 ZipEntry items + contained in the archive. + + + + The Value is true if any of the following four conditions holds: + the uncompressed size of any entry is larger than 0xFFFFFFFF; the + compressed size of any entry is larger than 0xFFFFFFFF; the relative + offset of any entry within the zip archive is larger than 0xFFFFFFFF; or + there are more than 65534 entries in the archive. (0xFFFFFFFF = + 4,294,967,295). The result may not be known until a Save() is attempted + on the zip archive. The Value of this + property may be set only AFTER one of the Save() methods has been called. + + + + If none of the four conditions holds, and the archive has been saved, then + the Value is false. + + + + A Value of false does not indicate that the zip archive, as saved, + does not use ZIP64. It merely indicates that ZIP64 is not required. An + archive may use ZIP64 even when not required if the property is set to , or if the property is set to and the output stream was not + seekable. Use the property to determine if + the most recent Save() method resulted in an archive that utilized + the ZIP64 extensions. + + + + + + + + + Indicates whether the most recent Save() operation used ZIP64 extensions. + + + + + The use of ZIP64 extensions within an archive is not always necessary, and + for interoperability concerns, it may be desired to NOT use ZIP64 if + possible. The property can be + set to use ZIP64 extensions only when necessary. In those cases, + Sometimes applications want to know whether a Save() actually used ZIP64 + extensions. Applications can query this read-only property to learn + whether ZIP64 has been used in a just-saved ZipFile. + + + + The value is null (or Nothing in VB) if the archive has not + been saved. + + + + Non-null values (HasValue is true) indicate whether ZIP64 + extensions were used during the most recent Save() operation. The + ZIP64 extensions may have been used as required by any particular entry + because of its uncompressed or compressed size, or because the archive is + larger than 4294967295 bytes, or because there are more than 65534 entries + in the archive, or because the UseZip64WhenSaving property was set + to , or because the + UseZip64WhenSaving property was set to and the output stream was not seekable. + The value of this property does not indicate the reason the ZIP64 + extensions were used. + + + + + + + + + Indicates whether the most recent Read() operation read a zip file that uses + ZIP64 extensions. + + + + This property will return null (Nothing in VB) if you've added an entry after reading + the zip file. + + + + + The text encoding to use when writing new entries to the ZipFile, + for those entries that cannot be encoded with the default (IBM437) + encoding; or, the text encoding that was used when reading the entries + from the ZipFile. + + + + + In its + zip specification, PKWare describes two options for encoding + filenames and comments: using IBM437 or UTF-8. But, some archiving tools + or libraries do not follow the specification, and instead encode + characters using the system default code page. For example, WinRAR when + run on a machine in Shanghai may encode filenames with the Big-5 Chinese + (950) code page. This behavior is contrary to the Zip specification, but + it occurs anyway. + + + + When using DotNetZip to write zip archives that will be read by one of + these other archivers, set this property to specify the code page to use + when encoding the and for each ZipEntry in the zip file, for + values that cannot be encoded with the default codepage for zip files, + IBM437. This is why this property is "provisional". In all cases, IBM437 + is used where possible, in other words, where no loss of data would + result. It is possible, therefore, to have a given entry with a + Comment encoded in IBM437 and a FileName encoded with the + specified "provisional" codepage. + + + + Be aware that a zip file created after you've explicitly set the property to a value other than + IBM437 may not be compliant to the PKWare specification, and may not be + readable by compliant archivers. On the other hand, many (most?) + archivers are non-compliant and can read zip files created in arbitrary + code pages. The trick is to use or specify the proper codepage when + reading the zip. + + + + When creating a zip archive using this library, it is possible to change + the value of between each + entry you add, and between adding entries and the call to + Save(). Don't do this. It will likely result in a zipfile that is + not readable. For best interoperability, either leave alone, or specify it only once, + before adding any entries to the ZipFile instance. There is one + exception to this recommendation, described later. + + + + When using an arbitrary, non-UTF8 code page for encoding, there is no + standard way for the creator application - whether DotNetZip, WinZip, + WinRar, or something else - to formally specify in the zip file which + codepage has been used for the entries. As a result, readers of zip files + are not able to inspect the zip file and determine the codepage that was + used for the entries contained within it. It is left to the application + or user to determine the necessary codepage when reading zip files encoded + this way. In other words, if you explicitly specify the codepage when you + create the zipfile, you must explicitly specify the same codepage when + reading the zipfile. + + + + The way you specify the code page to use when reading a zip file varies + depending on the tool or library you use to read the zip. In DotNetZip, + you use a ZipFile.Read() method that accepts an encoding parameter. It + isn't possible with Windows Explorer, as far as I know, to specify an + explicit codepage to use when reading a zip. If you use an incorrect + codepage when reading a zipfile, you will get entries with filenames that + are incorrect, and the incorrect filenames may even contain characters + that are not legal for use within filenames in Windows. Extracting entries + with illegal characters in the filenames will lead to exceptions. It's too + bad, but this is just the way things are with code pages in zip + files. Caveat Emptor. + + + + Example: Suppose you create a zipfile that contains entries with + filenames that have Danish characters. If you use equal to "iso-8859-1" (cp 28591), + the filenames will be correctly encoded in the zip. But, to read that + zipfile correctly, you have to specify the same codepage at the time you + read it. If try to read that zip file with Windows Explorer or another + application that is not flexible with respect to the codepage used to + decode filenames in zipfiles, you will get a filename like "Inf°.txt". + + + + When using DotNetZip to read a zip archive, and the zip archive uses an + arbitrary code page, you must specify the encoding to use before or when + the Zipfile is READ. This means you must use a ZipFile.Read() + method that allows you to specify a System.Text.Encoding parameter. Setting + the ProvisionalAlternateEncoding property after your application has read in + the zip archive will not affect the entry names of entries that have already + been read in. + + + + And now, the exception to the rule described above. One strategy for + specifying the code page for a given zip file is to describe the code page + in a human-readable form in the Zip comment. For example, the comment may + read "Entries in this archive are encoded in the Big5 code page". For + maximum interoperability, the zip comment in this case should be encoded + in the default, IBM437 code page. In this case, the zip comment is + encoded using a different page than the filenames. To do this, Specify + ProvisionalAlternateEncoding to your desired region-specific code + page, once before adding any entries, and then reset + ProvisionalAlternateEncoding to IBM437 before setting the property and calling Save(). + + + + + This example shows how to read a zip file using the Big-5 Chinese code page + (950), and extract each entry in the zip file. For this code to work as + desired, the Zipfile must have been created using the big5 code page + (CP950). This is typical, for example, when using WinRar on a machine with + CP950 set as the default code page. In that case, the names of entries + within the Zip archive will be stored in that code page, and reading the zip + archive must be done using that code page. If the application did not use + the correct code page in ZipFile.Read(), then names of entries within the + zip archive would not be correctly retrieved. + + using (var zip = ZipFile.Read(zipFileName, System.Text.Encoding.GetEncoding("big5"))) + { + // retrieve and extract an entry using a name encoded with CP950 + zip[MyDesiredEntry].Extract("unpack"); + } + + + + Using zip As ZipFile = ZipFile.Read(ZipToExtract, System.Text.Encoding.GetEncoding("big5")) + ' retrieve and extract an entry using a name encoded with CP950 + zip(MyDesiredEntry).Extract("unpack") + End Using + + + + DefaultEncoding + + + + A Text Encoding to use when encoding the filenames and comments for + all the ZipEntry items, during a ZipFile.Save() operation. + + + + Whether the encoding specified here is used during the save depends + on . + + + + + + A flag that tells if and when this instance should apply + AlternateEncoding to encode the filenames and comments associated to + of ZipEntry objects contained within this instance. + + + + + The default text encoding used in zip archives. It is numeric 437, also + known as IBM437. + + + + + + Gets or sets the TextWriter to which status messages are delivered + for the instance. + + + + If the TextWriter is set to a non-null value, then verbose output is sent + to the TextWriter during Add, Read, Save and + Extract operations. Typically, console applications might use + Console.Out and graphical or headless applications might use a + System.IO.StringWriter. The output of this is suitable for viewing + by humans. + + + + + In this example, a console application instantiates a ZipFile, then + sets the StatusMessageTextWriter to Console.Out. At that + point, all verbose status messages for that ZipFile are sent to the + console. + + + + using (ZipFile zip= ZipFile.Read(FilePath)) + { + zip.StatusMessageTextWriter= System.Console.Out; + // messages are sent to the console during extraction + zip.ExtractAll(); + } + + + + Using zip As ZipFile = ZipFile.Read(FilePath) + zip.StatusMessageTextWriter= System.Console.Out + 'Status Messages will be sent to the console during extraction + zip.ExtractAll() + End Using + + + + In this example, a Windows Forms application instantiates a + ZipFile, then sets the StatusMessageTextWriter to a + StringWriter. At that point, all verbose status messages for that + ZipFile are sent to the StringWriter. + + + + var sw = new System.IO.StringWriter(); + using (ZipFile zip= ZipFile.Read(FilePath)) + { + zip.StatusMessageTextWriter= sw; + zip.ExtractAll(); + } + Console.WriteLine("{0}", sw.ToString()); + + + + Dim sw as New System.IO.StringWriter + Using zip As ZipFile = ZipFile.Read(FilePath) + zip.StatusMessageTextWriter= sw + zip.ExtractAll() + End Using + 'Status Messages are now available in sw + + + + + + + Gets or sets the name for the folder to store the temporary file + this library writes when saving a zip archive. + + + + + This library will create a temporary file when saving a Zip archive to a + file. This file is written when calling one of the Save() methods + that does not save to a stream, or one of the SaveSelfExtractor() + methods. + + + + By default, the library will create the temporary file in the directory + specified for the file itself, via the property or via + the method. + + + + Setting this property allows applications to override this default + behavior, so that the library will create the temporary file in the + specified folder. For example, to have the library create the temporary + file in the current working directory, regardless where the ZipFile + is saved, specfy ".". To revert to the default behavior, set this + property to null (Nothing in VB). + + + + When setting the property to a non-null value, the folder specified must + exist; if it does not an exception is thrown. The application should have + write and delete permissions on the folder. The permissions are not + explicitly checked ahead of time; if the application does not have the + appropriate rights, an exception will be thrown at the time Save() + is called. + + + + There is no temporary file created when reading a zip archive. When + saving to a Stream, there is no temporary file created. For example, if + the application is an ASP.NET application and calls Save() + specifying the Response.OutputStream as the output stream, there is + no temporary file created. + + + + + Thrown when setting the property if the directory does not exist. + + + + + + Sets the password to be used on the ZipFile instance. + + + + + + When writing a zip archive, this password is applied to the entries, not + to the zip archive itself. It applies to any ZipEntry subsequently + added to the ZipFile, using one of the AddFile, + AddDirectory, AddEntry, or AddItem methods, etc. + When reading a zip archive, this property applies to any entry + subsequently extracted from the ZipFile using one of the Extract + methods on the ZipFile class. + + + + When writing a zip archive, keep this in mind: though the password is set + on the ZipFile object, according to the Zip spec, the "directory" of the + archive - in other words the list of entries or files contained in the archive - is + not encrypted with the password, or protected in any way. If you set the + Password property, the password actually applies to individual entries + that are added to the archive, subsequent to the setting of this property. + The list of filenames in the archive that is eventually created will + appear in clear text, but the contents of the individual files are + encrypted. This is how Zip encryption works. + + + + One simple way around this limitation is to simply double-wrap sensitive + filenames: Store the files in a zip file, and then store that zip file + within a second, "outer" zip file. If you apply a password to the outer + zip file, then readers will be able to see that the outer zip file + contains an inner zip file. But readers will not be able to read the + directory or file list of the inner zip file. + + + + If you set the password on the ZipFile, and then add a set of files + to the archive, then each entry is encrypted with that password. You may + also want to change the password between adding different entries. If you + set the password, add an entry, then set the password to null + (Nothing in VB), and add another entry, the first entry is + encrypted and the second is not. If you call AddFile(), then set + the Password property, then call ZipFile.Save, the file + added will not be password-protected, and no warning will be generated. + + + + When setting the Password, you may also want to explicitly set the property, to specify how to encrypt the entries added + to the ZipFile. If you set the Password to a non-null value and do not + set , then PKZip 2.0 ("Weak") encryption is used. + This encryption is relatively weak but is very interoperable. If you set + the password to a null value (Nothing in VB), Encryption is + reset to None. + + + + All of the preceding applies to writing zip archives, in other words when + you use one of the Save methods. To use this property when reading or an + existing ZipFile, do the following: set the Password property on the + ZipFile, then call one of the Extract() overloads on the . In this case, the entry is extracted using the + Password that is specified on the ZipFile instance. If you + have not set the Password property, then the password is + null, and the entry is extracted with no password. + + + + If you set the Password property on the ZipFile, then call + Extract() an entry that has not been encrypted with a password, the + password is not used for that entry, and the ZipEntry is extracted + as normal. In other words, the password is used only if necessary. + + + + The class also has a Password property. It takes precedence + over this property on the ZipFile. Typically, you would use the + per-entry Password when most entries in the zip archive use one password, + and a few entries use a different password. If all entries in the zip + file use the same password, then it is simpler to just set this property + on the ZipFile itself, whether creating a zip archive or extracting + a zip archive. + + + + + + + This example creates a zip file, using password protection for the + entries, and then extracts the entries from the zip file. When creating + the zip file, the Readme.txt file is not protected with a password, but + the other two are password-protected as they are saved. During extraction, + each file is extracted with the appropriate password. + + + // create a file with encryption + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt"); + zip.Password= "!Secret1"; + zip.AddFile("MapToTheSite-7440-N49th.png"); + zip.AddFile("2008-Regional-Sales-Report.pdf"); + zip.Save("EncryptedArchive.zip"); + } + + // extract entries that use encryption + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + zip.Password= "!Secret1"; + zip.ExtractAll("extractDir"); + } + + + + + Using zip As New ZipFile + zip.AddFile("ReadMe.txt") + zip.Password = "123456!" + zip.AddFile("MapToTheSite-7440-N49th.png") + zip.Password= "!Secret1"; + zip.AddFile("2008-Regional-Sales-Report.pdf") + zip.Save("EncryptedArchive.zip") + End Using + + + ' extract entries that use encryption + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + zip.Password= "!Secret1" + zip.ExtractAll("extractDir") + End Using + + + + + + ZipFile.Encryption + ZipEntry.Password + + + + The action the library should take when extracting a file that already + exists. + + + + + This property affects the behavior of the Extract methods (one of the + Extract() or ExtractWithPassword() overloads), when + extraction would would overwrite an existing filesystem file. If you do + not set this property, the library throws an exception when extracting an + entry would overwrite an existing file. + + + + This property has no effect when extracting to a stream, or when the file + to be extracted does not already exist. + + + + + + + The action the library should take when an error is encountered while + opening or reading files as they are saved into a zip archive. + + + + + Errors can occur as a file is being saved to the zip archive. For + example, the File.Open may fail, or a File.Read may fail, because of + lock conflicts or other reasons. + + + + The first problem might occur after having called AddDirectory() on a + directory that contains a Clipper .dbf file; the file is locked by + Clipper and cannot be opened for read by another process. An example of + the second problem might occur when trying to zip a .pst file that is in + use by Microsoft Outlook. Outlook locks a range on the file, which allows + other processes to open the file, but not read it in its entirety. + + + + This property tells DotNetZip what you would like to do in the case of + these errors. The primary options are: ZipErrorAction.Throw to + throw an exception (this is the default behavior if you don't set this + property); ZipErrorAction.Skip to Skip the file for which there + was an error and continue saving; ZipErrorAction.Retry to Retry + the entry that caused the problem; or + ZipErrorAction.InvokeErrorEvent to invoke an event handler. + + + + This property is implicitly set to ZipErrorAction.InvokeErrorEvent + if you add a handler to the event. If you set + this property to something other than + ZipErrorAction.InvokeErrorEvent, then the ZipError + event is implicitly cleared. What it means is you can set one or the + other (or neither), depending on what you want, but you never need to set + both. + + + + As with some other properties on the ZipFile class, like , , and , setting this property on a ZipFile + instance will cause the specified ZipErrorAction to be used on all + items that are subsequently added to the + ZipFile instance. If you set this property after you have added + items to the ZipFile, but before you have called Save(), + those items will not use the specified error handling action. + + + + If you want to handle any errors that occur with any entry in the zip + file in the same way, then set this property once, before adding any + entries to the zip archive. + + + + If you set this property to ZipErrorAction.Skip and you'd like to + learn which files may have been skipped after a Save(), you can + set the on the ZipFile before + calling Save(). A message will be emitted into that writer for + each skipped file, if any. + + + + + + This example shows how to tell DotNetZip to skip any files for which an + error is generated during the Save(). + + Public Sub SaveZipFile() + Dim SourceFolder As String = "fodder" + Dim DestFile As String = "eHandler.zip" + Dim sw as New StringWriter + Using zipArchive As ZipFile = New ZipFile + ' Tell DotNetZip to skip any files for which it encounters an error + zipArchive.ZipErrorAction = ZipErrorAction.Skip + zipArchive.StatusMessageTextWriter = sw + zipArchive.AddDirectory(SourceFolder) + zipArchive.Save(DestFile) + End Using + ' examine sw here to see any messages + End Sub + + + + + + + + + + The Encryption to use for entries added to the ZipFile. + + + + + Set this when creating a zip archive, or when updating a zip archive. The + specified Encryption is applied to the entries subsequently added to the + ZipFile instance. Applications do not need to set the + Encryption property when reading or extracting a zip archive. + + + + If you set this to something other than EncryptionAlgorithm.None, you + will also need to set the . + + + + As with some other properties on the ZipFile class, like and , setting this + property on a ZipFile instance will cause the specified + EncryptionAlgorithm to be used on all items + that are subsequently added to the ZipFile instance. In other + words, if you set this property after you have added items to the + ZipFile, but before you have called Save(), those items will + not be encrypted or protected with a password in the resulting zip + archive. To get a zip archive with encrypted entries, set this property, + along with the property, before calling + AddFile, AddItem, or AddDirectory (etc.) on the + ZipFile instance. + + + + If you read a ZipFile, you can modify the Encryption on an + encrypted entry, only by setting the Encryption property on the + ZipEntry itself. Setting the Encryption property on the + ZipFile, once it has been created via a call to + ZipFile.Read(), does not affect entries that were previously read. + + + + For example, suppose you read a ZipFile, and there is an encrypted + entry. Setting the Encryption property on that ZipFile and + then calling Save() on the ZipFile does not update the + Encryption used for the entries in the archive. Neither is an + exception thrown. Instead, what happens during the Save() is that + all previously existing entries are copied through to the new zip archive, + with whatever encryption and password that was used when originally + creating the zip archive. Upon re-reading that archive, to extract + entries, applications should use the original password or passwords, if + any. + + + + Suppose an application reads a ZipFile, and there is an encrypted + entry. Setting the Encryption property on that ZipFile and + then adding new entries (via AddFile(), AddEntry(), etc) + and then calling Save() on the ZipFile does not update the + Encryption on any of the entries that had previously been in the + ZipFile. The Encryption property applies only to the + newly-added entries. + + + + + + + This example creates a zip archive that uses encryption, and then extracts + entries from the archive. When creating the zip archive, the ReadMe.txt + file is zipped without using a password or encryption. The other files + use encryption. + + + + // Create a zip archive with AES Encryption. + using (ZipFile zip = new ZipFile()) + { + zip.AddFile("ReadMe.txt"); + zip.Encryption= EncryptionAlgorithm.WinZipAes256; + zip.Password= "Top.Secret.No.Peeking!"; + zip.AddFile("7440-N49th.png"); + zip.AddFile("2008-Regional-Sales-Report.pdf"); + zip.Save("EncryptedArchive.zip"); + } + + // Extract a zip archive that uses AES Encryption. + // You do not need to specify the algorithm during extraction. + using (ZipFile zip = ZipFile.Read("EncryptedArchive.zip")) + { + zip.Password= "Top.Secret.No.Peeking!"; + zip.ExtractAll("extractDirectory"); + } + + + + ' Create a zip that uses Encryption. + Using zip As New ZipFile() + zip.Encryption= EncryptionAlgorithm.WinZipAes256 + zip.Password= "Top.Secret.No.Peeking!" + zip.AddFile("ReadMe.txt") + zip.AddFile("7440-N49th.png") + zip.AddFile("2008-Regional-Sales-Report.pdf") + zip.Save("EncryptedArchive.zip") + End Using + + ' Extract a zip archive that uses AES Encryption. + ' You do not need to specify the algorithm during extraction. + Using (zip as ZipFile = ZipFile.Read("EncryptedArchive.zip")) + zip.Password= "Top.Secret.No.Peeking!" + zip.ExtractAll("extractDirectory") + End Using + + + + + ZipFile.Password + ZipEntry.Encryption + + + + A callback that allows the application to specify the compression level + to use for entries subsequently added to the zip archive. + + + + + + With this callback, the DotNetZip library allows the application to + determine whether compression will be used, at the time of the + Save. This may be useful if the application wants to favor + speed over size, and wants to defer the decision until the time of + Save. + + + + Typically applications set the property on + the ZipFile or on each ZipEntry to determine the level of + compression used. This is done at the time the entry is added to the + ZipFile. Setting the property to + Ionic.Zlib.CompressionLevel.None means no compression will be used. + + + + This callback allows the application to defer the decision on the + CompressionLevel to use, until the time of the call to + ZipFile.Save(). The callback is invoked once per ZipEntry, + at the time the data for the entry is being written out as part of a + Save() operation. The application can use whatever criteria it + likes in determining the level to return. For example, an application may + wish that no .mp3 files should be compressed, because they are already + compressed and the extra compression is not worth the CPU time incurred, + and so can return None for all .mp3 entries. + + + + The library determines whether compression will be attempted for an entry + this way: If the entry is a zero length file, or a directory, no + compression is used. Otherwise, if this callback is set, it is invoked + and the CompressionLevel is set to the return value. If this + callback has not been set, then the previously set value for + CompressionLevel is used. + + + + + + + The maximum size of an output segment, when saving a split Zip file. + + + + Set this to a non-zero value before calling or to specify that the ZipFile should be saved as a + split archive, also sometimes called a spanned archive. Some also + call them multi-file archives. + + + + A split zip archive is saved in a set of discrete filesystem files, + rather than in a single file. This is handy when transmitting the + archive in email or some other mechanism that has a limit to the size of + each file. The first file in a split archive will be named + basename.z01, the second will be named basename.z02, and + so on. The final file is named basename.zip. According to the zip + specification from PKWare, the minimum value is 65536, for a 64k segment + size. The maximum number of segments allows in a split archive is 99. + + + + The value of this property determines the maximum size of a split + segment when writing a split archive. For example, suppose you have a + ZipFile that would save to a single file of 200k. If you set the + MaxOutputSegmentSize to 65536 before calling Save(), you + will get four distinct output files. On the other hand if you set this + property to 256k, then you will get a single-file archive for that + ZipFile. + + + + The size of each split output file will be as large as possible, up to + the maximum size set here. The zip specification requires that some data + fields in a zip archive may not span a split boundary, and an output + segment may be smaller than the maximum if necessary to avoid that + problem. Also, obviously the final segment of the archive may be smaller + than the maximum segment size. Segments will never be larger than the + value set with this property. + + + + You can save a split Zip file only when saving to a regular filesystem + file. It's not possible to save a split zip file as a self-extracting + archive, nor is it possible to save a split zip file to a stream. When + saving to a SFX or to a Stream, this property is ignored. + + + + About interoperability: Split or spanned zip files produced by DotNetZip + can be read by WinZip or PKZip, and vice-versa. Segmented zip files may + not be readable by other tools, if those other tools don't support zip + spanning or splitting. When in doubt, test. I don't believe Windows + Explorer can extract a split archive. + + + + This property has no effect when reading a split archive. You can read + a split archive in the normal way with DotNetZip. + + + + When saving a zip file, if you want a regular zip file rather than a + split zip file, don't set this property, or set it to Zero. + + + + If you read a split archive, with and + then subsequently call ZipFile.Save(), unless you set this + property before calling Save(), you will get a normal, + single-file archive. + + + + + + + + Returns the number of segments used in the most recent Save() operation. + + + + This is normally zero, unless you have set the property. If you have set , and then you save a file, after the call to + Save() completes, you can read this value to learn the number of segments that + were created. + + + If you call Save("Archive.zip"), and it creates 5 segments, then you + will have filesystem files named Archive.z01, Archive.z02, Archive.z03, + Archive.z04, and Archive.zip, and the value of this property will be 5. + + + + + + + The size threshold for an entry, above which a parallel deflate is used. + + + + + + DotNetZip will use multiple threads to compress any ZipEntry, + if the entry is larger than the given size. Zero means "always + use parallel deflate", while -1 means "never use parallel + deflate". The default value for this property is 512k. Aside + from the special values of 0 and 1, the minimum value is 65536. + + + + If the entry size cannot be known before compression, as with a + read-forward stream, then Parallel deflate will never be + performed, unless the value of this property is zero. + + + + A parallel deflate operations will speed up the compression of + large files, on computers with multiple CPUs or multiple CPU + cores. For files above 1mb, on a dual core or dual-cpu (2p) + machine, the time required to compress the file can be 70% of the + single-threaded deflate. For very large files on 4p machines the + compression can be done in 30% of the normal time. The downside + is that parallel deflate consumes extra memory during the deflate, + and the deflation is not as effective. + + + + Parallel deflate tends to yield slightly less compression when + compared to as single-threaded deflate; this is because the original + data stream is split into multiple independent buffers, each of which + is compressed in parallel. But because they are treated + independently, there is no opportunity to share compression + dictionaries. For that reason, a deflated stream may be slightly + larger when compressed using parallel deflate, as compared to a + traditional single-threaded deflate. Sometimes the increase over the + normal deflate is as much as 5% of the total compressed size. For + larger files it can be as small as 0.1%. + + + + Multi-threaded compression does not give as much an advantage when + using Encryption. This is primarily because encryption tends to slow + down the entire pipeline. Also, multi-threaded compression gives less + of an advantage when using lower compression levels, for example . You may have to + perform some tests to determine the best approach for your situation. + + + + + + + + + + The maximum number of buffer pairs to use when performing + parallel compression. + + + + + This property sets an upper limit on the number of memory + buffer pairs to create when performing parallel + compression. The implementation of the parallel + compression stream allocates multiple buffers to + facilitate parallel compression. As each buffer fills up, + the stream uses + ThreadPool.QueueUserWorkItem() to compress those + buffers in a background threadpool thread. After a buffer + is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time + before calling ZipFile.Save(). + + + + + + + + + Returns the version number on the DotNetZip assembly. + + + + + This property is exposed as a convenience. Callers could also get the + version value by retrieving GetName().Version on the + System.Reflection.Assembly object pointing to the DotNetZip + assembly. But sometimes it is not clear which assembly is being loaded. + This property makes it clear. + + + This static property is primarily useful for diagnostic purposes. + + + + + + This is an integer indexer into the Zip archive. + + + + + This property is read-only. + + + + Internally, the ZipEntry instances that belong to the + ZipFile are stored in a Dictionary. When you use this + indexer the first time, it creates a read-only + List<ZipEntry> from the Dictionary.Values Collection. + If at any time you modify the set of entries in the ZipFile, + either by adding an entry, removing an entry, or renaming an + entry, a new List will be created, and the numeric indexes for the + remaining entries may be different. + + + + This means you cannot rename any ZipEntry from + inside an enumeration of the zip file. + + + + The index value. + + + + + + The ZipEntry within the Zip archive at the specified index. If the + entry does not exist in the archive, this indexer throws. + + + + + + This is a name-based indexer into the Zip archive. + + + + + This property is read-only. + + + + The property on the ZipFile + determines whether retrieval via this indexer is done via case-sensitive + comparisons. By default, retrieval is not case sensitive. This makes + sense on Windows, in which filesystems are not case sensitive. + + + + Regardless of case-sensitivity, it is not always the case that + this[value].FileName == value. In other words, the FileName + property of the ZipEntry retrieved with this indexer, may or may + not be equal to the index value. + + + + This is because DotNetZip performs a normalization of filenames passed to + this indexer, before attempting to retrieve the item. That normalization + includes: removal of a volume letter and colon, swapping backward slashes + for forward slashes. So, zip["dir1\\entry1.txt"].FileName == + "dir1/entry.txt". + + + + Directory entries in the zip file may be retrieved via this indexer only + with names that have a trailing slash. DotNetZip automatically appends a + trailing slash to the names of any directory entries added to a zip. + + + + + + This example extracts only the entries in a zip file that are .txt files. + + using (ZipFile zip = ZipFile.Read("PackedDocuments.zip")) + { + foreach (string s1 in zip.EntryFilenames) + { + if (s1.EndsWith(".txt")) + zip[s1].Extract("textfiles"); + } + } + + + Using zip As ZipFile = ZipFile.Read("PackedDocuments.zip") + Dim s1 As String + For Each s1 In zip.EntryFilenames + If s1.EndsWith(".txt") Then + zip(s1).Extract("textfiles") + End If + Next + End Using + + + + + + Thrown if the caller attempts to assign a non-null value to the indexer. + + + + The name of the file, including any directory path, to retrieve from the + zip. The filename match is not case-sensitive by default; you can use the + property to change this behavior. The + pathname can use forward-slashes or backward slashes. + + + + The ZipEntry within the Zip archive, given by the specified + filename. If the named entry does not exist in the archive, this indexer + returns null (Nothing in VB). + + + + + + The list of filenames for the entries contained within the zip archive. + + + + According to the ZIP specification, the names of the entries use forward + slashes in pathnames. If you are scanning through the list, you may have + to swap forward slashes for backslashes. + + + + + + This example shows one way to test if a filename is already contained + within a zip archive. + + String zipFileToRead= "PackedDocuments.zip"; + string candidate = "DatedMaterial.xps"; + using (ZipFile zip = new ZipFile(zipFileToRead)) + { + if (zip.EntryFilenames.Contains(candidate)) + Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", + candidate, + zipFileName); + else + Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", + candidate, + zipFileName); + Console.WriteLine(); + } + + + Dim zipFileToRead As String = "PackedDocuments.zip" + Dim candidate As String = "DatedMaterial.xps" + Using zip As ZipFile.Read(ZipFileToRead) + If zip.EntryFilenames.Contains(candidate) Then + Console.WriteLine("The file '{0}' exists in the zip archive '{1}'", _ + candidate, _ + zipFileName) + Else + Console.WriteLine("The file, '{0}', does not exist in the zip archive '{1}'", _ + candidate, _ + zipFileName) + End If + Console.WriteLine + End Using + + + + + The list of strings for the filenames contained within the Zip archive. + + + + + + Returns the readonly collection of entries in the Zip archive. + + + + + + If there are no entries in the current ZipFile, the value returned is a + non-null zero-element collection. If there are entries in the zip file, + the elements are returned in no particular order. + + + This is the implied enumerator on the ZipFile class. If you use a + ZipFile instance in a context that expects an enumerator, you will + get this collection. + + + + + + + Returns a readonly collection of entries in the Zip archive, sorted by FileName. + + + + If there are no entries in the current ZipFile, the value returned + is a non-null zero-element collection. If there are entries in the zip + file, the elements are returned sorted by the name of the entry. + + + + + This example fills a Windows Forms ListView with the entries in a zip file. + + + using (ZipFile zip = ZipFile.Read(zipFile)) + { + foreach (ZipEntry entry in zip.EntriesSorted) + { + ListViewItem item = new ListViewItem(n.ToString()); + n++; + string[] subitems = new string[] { + entry.FileName.Replace("/","\\"), + entry.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), + entry.UncompressedSize.ToString(), + String.Format("{0,5:F0}%", entry.CompressionRatio), + entry.CompressedSize.ToString(), + (entry.UsesEncryption) ? "Y" : "N", + String.Format("{0:X8}", entry.Crc)}; + + foreach (String s in subitems) + { + ListViewItem.ListViewSubItem subitem = new ListViewItem.ListViewSubItem(); + subitem.Text = s; + item.SubItems.Add(subitem); + } + + this.listView1.Items.Add(item); + } + } + + + + + + + + Returns the number of entries in the Zip archive. + + + + + An event handler invoked when a Save() starts, before and after each + entry has been written to the archive, when a Save() completes, and + during other Save events. + + + + + Depending on the particular event, different properties on the parameter are set. The following + table summarizes the available EventTypes and the conditions under + which this event handler is invoked with a + SaveProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Saving_Started + Fired when ZipFile.Save() begins. + + + + + ZipProgressEventType.Saving_BeforeSaveEntry + + Fired within ZipFile.Save(), just before writing data for each + particular entry. + + + + + ZipProgressEventType.Saving_AfterSaveEntry + + Fired within ZipFile.Save(), just after having finished writing data + for each particular entry. + + + + + ZipProgressEventType.Saving_Completed + Fired when ZipFile.Save() has completed. + + + + + ZipProgressEventType.Saving_AfterSaveTempArchive + + Fired after the temporary file has been created. This happens only + when saving to a disk file. This event will not be invoked when + saving to a stream. + + + + + ZipProgressEventType.Saving_BeforeRenameTempArchive + + Fired just before renaming the temporary file to the permanent + location. This happens only when saving to a disk file. This event + will not be invoked when saving to a stream. + + + + + ZipProgressEventType.Saving_AfterRenameTempArchive + + Fired just after renaming the temporary file to the permanent + location. This happens only when saving to a disk file. This event + will not be invoked when saving to a stream. + + + + + ZipProgressEventType.Saving_AfterCompileSelfExtractor + + Fired after a self-extracting archive has finished compiling. This + EventType is used only within SaveSelfExtractor(). + + + + + ZipProgressEventType.Saving_BytesRead + + Set during the save of a particular entry, to update progress of the + Save(). When this EventType is set, the BytesTransferred is the + number of bytes that have been read from the source stream. The + TotalBytesToTransfer is the number of bytes in the uncompressed + file. + + + + + + + + + This example uses an anonymous method to handle the + SaveProgress event, by updating a progress bar. + + + progressBar1.Value = 0; + progressBar1.Max = listbox1.Items.Count; + using (ZipFile zip = new ZipFile()) + { + // listbox1 contains a list of filenames + zip.AddFiles(listbox1.Items); + + // do the progress bar: + zip.SaveProgress += (sender, e) => { + if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) { + progressBar1.PerformStep(); + } + }; + + zip.Save(fs); + } + + + + + This example uses a named method as the + SaveProgress event handler, to update the user, in a + console-based application. + + + static bool justHadByteUpdate= false; + public static void SaveProgress(object sender, SaveProgressEventArgs e) + { + if (e.EventType == ZipProgressEventType.Saving_Started) + Console.WriteLine("Saving: {0}", e.ArchiveName); + + else if (e.EventType == ZipProgressEventType.Saving_Completed) + { + justHadByteUpdate= false; + Console.WriteLine(); + Console.WriteLine("Done: {0}", e.ArchiveName); + } + + else if (e.EventType == ZipProgressEventType.Saving_BeforeWriteEntry) + { + if (justHadByteUpdate) + Console.WriteLine(); + Console.WriteLine(" Writing: {0} ({1}/{2})", + e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal); + justHadByteUpdate= false; + } + + else if (e.EventType == ZipProgressEventType.Saving_EntryBytesRead) + { + if (justHadByteUpdate) + Console.SetCursorPosition(0, Console.CursorTop); + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, + e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); + justHadByteUpdate= true; + } + } + + public static ZipUp(string targetZip, string directory) + { + using (var zip = new ZipFile()) { + zip.SaveProgress += SaveProgress; + zip.AddDirectory(directory); + zip.Save(targetZip); + } + } + + + + + Public Sub ZipUp(ByVal targetZip As String, ByVal directory As String) + Using zip As ZipFile = New ZipFile + AddHandler zip.SaveProgress, AddressOf MySaveProgress + zip.AddDirectory(directory) + zip.Save(targetZip) + End Using + End Sub + + Private Shared justHadByteUpdate As Boolean = False + + Public Shared Sub MySaveProgress(ByVal sender As Object, ByVal e As SaveProgressEventArgs) + If (e.EventType Is ZipProgressEventType.Saving_Started) Then + Console.WriteLine("Saving: {0}", e.ArchiveName) + + ElseIf (e.EventType Is ZipProgressEventType.Saving_Completed) Then + justHadByteUpdate = False + Console.WriteLine + Console.WriteLine("Done: {0}", e.ArchiveName) + + ElseIf (e.EventType Is ZipProgressEventType.Saving_BeforeWriteEntry) Then + If justHadByteUpdate Then + Console.WriteLine + End If + Console.WriteLine(" Writing: {0} ({1}/{2})", e.CurrentEntry.FileName, e.EntriesSaved, e.EntriesTotal) + justHadByteUpdate = False + + ElseIf (e.EventType Is ZipProgressEventType.Saving_EntryBytesRead) Then + If justHadByteUpdate Then + Console.SetCursorPosition(0, Console.CursorTop) + End If + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, _ + e.TotalBytesToTransfer, _ + (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) + justHadByteUpdate = True + End If + End Sub + + + + + + This is a more complete example of using the SaveProgress + events in a Windows Forms application, with a + Thread object. + + + delegate void SaveEntryProgress(SaveProgressEventArgs e); + delegate void ButtonClick(object sender, EventArgs e); + + public class WorkerOptions + { + public string ZipName; + public string Folder; + public string Encoding; + public string Comment; + public int ZipFlavor; + public Zip64Option Zip64; + } + + private int _progress2MaxFactor; + private bool _saveCanceled; + private long _totalBytesBeforeCompress; + private long _totalBytesAfterCompress; + private Thread _workerThread; + + + private void btnZipup_Click(object sender, EventArgs e) + { + KickoffZipup(); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + if (this.lblStatus.InvokeRequired) + { + this.lblStatus.Invoke(new ButtonClick(this.btnCancel_Click), new object[] { sender, e }); + } + else + { + _saveCanceled = true; + lblStatus.Text = "Canceled..."; + ResetState(); + } + } + + private void KickoffZipup() + { + _folderName = tbDirName.Text; + + if (_folderName == null || _folderName == "") return; + if (this.tbZipName.Text == null || this.tbZipName.Text == "") return; + + // check for existence of the zip file: + if (System.IO.File.Exists(this.tbZipName.Text)) + { + var dlgResult = MessageBox.Show(String.Format("The file you have specified ({0}) already exists." + + " Do you want to overwrite this file?", this.tbZipName.Text), + "Confirmation is Required", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (dlgResult != DialogResult.Yes) return; + System.IO.File.Delete(this.tbZipName.Text); + } + + _saveCanceled = false; + _nFilesCompleted = 0; + _totalBytesAfterCompress = 0; + _totalBytesBeforeCompress = 0; + this.btnOk.Enabled = false; + this.btnOk.Text = "Zipping..."; + this.btnCancel.Enabled = true; + lblStatus.Text = "Zipping..."; + + var options = new WorkerOptions + { + ZipName = this.tbZipName.Text, + Folder = _folderName, + Encoding = "ibm437" + }; + + if (this.comboBox1.SelectedIndex != 0) + { + options.Encoding = this.comboBox1.SelectedItem.ToString(); + } + + if (this.radioFlavorSfxCmd.Checked) + options.ZipFlavor = 2; + else if (this.radioFlavorSfxGui.Checked) + options.ZipFlavor = 1; + else options.ZipFlavor = 0; + + if (this.radioZip64AsNecessary.Checked) + options.Zip64 = Zip64Option.AsNecessary; + else if (this.radioZip64Always.Checked) + options.Zip64 = Zip64Option.Always; + else options.Zip64 = Zip64Option.Never; + + options.Comment = String.Format("Encoding:{0} || Flavor:{1} || ZIP64:{2}\r\nCreated at {3} || {4}\r\n", + options.Encoding, + FlavorToString(options.ZipFlavor), + options.Zip64.ToString(), + System.DateTime.Now.ToString("yyyy-MMM-dd HH:mm:ss"), + this.Text); + + if (this.tbComment.Text != TB_COMMENT_NOTE) + options.Comment += this.tbComment.Text; + + _workerThread = new Thread(this.DoSave); + _workerThread.Name = "Zip Saver thread"; + _workerThread.Start(options); + this.Cursor = Cursors.WaitCursor; + } + + + private void DoSave(Object p) + { + WorkerOptions options = p as WorkerOptions; + try + { + using (var zip1 = new ZipFile()) + { + zip1.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(options.Encoding); + zip1.Comment = options.Comment; + zip1.AddDirectory(options.Folder); + _entriesToZip = zip1.EntryFileNames.Count; + SetProgressBars(); + zip1.SaveProgress += this.zip1_SaveProgress; + + zip1.UseZip64WhenSaving = options.Zip64; + + if (options.ZipFlavor == 1) + zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.WinFormsApplication); + else if (options.ZipFlavor == 2) + zip1.SaveSelfExtractor(options.ZipName, SelfExtractorFlavor.ConsoleApplication); + else + zip1.Save(options.ZipName); + } + } + catch (System.Exception exc1) + { + MessageBox.Show(String.Format("Exception while zipping: {0}", exc1.Message)); + btnCancel_Click(null, null); + } + } + + + + void zip1_SaveProgress(object sender, SaveProgressEventArgs e) + { + switch (e.EventType) + { + case ZipProgressEventType.Saving_AfterWriteEntry: + StepArchiveProgress(e); + break; + case ZipProgressEventType.Saving_EntryBytesRead: + StepEntryProgress(e); + break; + case ZipProgressEventType.Saving_Completed: + SaveCompleted(); + break; + case ZipProgressEventType.Saving_AfterSaveTempArchive: + // this event only occurs when saving an SFX file + TempArchiveSaved(); + break; + } + if (_saveCanceled) + e.Cancel = true; + } + + + + private void StepArchiveProgress(SaveProgressEventArgs e) + { + if (this.progressBar1.InvokeRequired) + { + this.progressBar1.Invoke(new SaveEntryProgress(this.StepArchiveProgress), new object[] { e }); + } + else + { + if (!_saveCanceled) + { + _nFilesCompleted++; + this.progressBar1.PerformStep(); + _totalBytesAfterCompress += e.CurrentEntry.CompressedSize; + _totalBytesBeforeCompress += e.CurrentEntry.UncompressedSize; + + // reset the progress bar for the entry: + this.progressBar2.Value = this.progressBar2.Maximum = 1; + + this.Update(); + } + } + } + + + private void StepEntryProgress(SaveProgressEventArgs e) + { + if (this.progressBar2.InvokeRequired) + { + this.progressBar2.Invoke(new SaveEntryProgress(this.StepEntryProgress), new object[] { e }); + } + else + { + if (!_saveCanceled) + { + if (this.progressBar2.Maximum == 1) + { + // reset + Int64 max = e.TotalBytesToTransfer; + _progress2MaxFactor = 0; + while (max > System.Int32.MaxValue) + { + max /= 2; + _progress2MaxFactor++; + } + this.progressBar2.Maximum = (int)max; + lblStatus.Text = String.Format("{0} of {1} files...({2})", + _nFilesCompleted + 1, _entriesToZip, e.CurrentEntry.FileName); + } + + int xferred = e.BytesTransferred >> _progress2MaxFactor; + + this.progressBar2.Value = (xferred >= this.progressBar2.Maximum) + ? this.progressBar2.Maximum + : xferred; + + this.Update(); + } + } + } + + private void SaveCompleted() + { + if (this.lblStatus.InvokeRequired) + { + this.lblStatus.Invoke(new MethodInvoker(this.SaveCompleted)); + } + else + { + lblStatus.Text = String.Format("Done, Compressed {0} files, {1:N0}% of original.", + _nFilesCompleted, (100.00 * _totalBytesAfterCompress) / _totalBytesBeforeCompress); + ResetState(); + } + } + + private void ResetState() + { + this.btnCancel.Enabled = false; + this.btnOk.Enabled = true; + this.btnOk.Text = "Zip it!"; + this.progressBar1.Value = 0; + this.progressBar2.Value = 0; + this.Cursor = Cursors.Default; + if (!_workerThread.IsAlive) + _workerThread.Join(); + } + + + + + + + + + + + An event handler invoked before, during, and after the reading of a zip archive. + + + + + Depending on the particular event being signaled, different properties on the + parameter are set. The following table + summarizes the available EventTypes and the conditions under which this + event handler is invoked with a ReadProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Reading_Started + Fired just as ZipFile.Read() begins. Meaningful properties: ArchiveName. + + + + + ZipProgressEventType.Reading_Completed + Fired when ZipFile.Read() has completed. Meaningful properties: ArchiveName. + + + + + ZipProgressEventType.Reading_ArchiveBytesRead + Fired while reading, updates the number of bytes read for the entire archive. + Meaningful properties: ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. + + + + + ZipProgressEventType.Reading_BeforeReadEntry + Indicates an entry is about to be read from the archive. + Meaningful properties: ArchiveName, EntriesTotal. + + + + + ZipProgressEventType.Reading_AfterReadEntry + Indicates an entry has just been read from the archive. + Meaningful properties: ArchiveName, EntriesTotal, CurrentEntry. + + + + + + + + + + + + + An event handler invoked before, during, and after extraction of + entries in the zip archive. + + + + + Depending on the particular event, different properties on the parameter are set. The following + table summarizes the available EventTypes and the conditions under + which this event handler is invoked with a + ExtractProgressEventArgs with the given EventType. + + + + + value of EntryType + Meaning and conditions + + + + ZipProgressEventType.Extracting_BeforeExtractAll + + Set when ExtractAll() begins. The ArchiveName, Overwrite, and + ExtractLocation properties are meaningful. + + + + ZipProgressEventType.Extracting_AfterExtractAll + + Set when ExtractAll() has completed. The ArchiveName, Overwrite, + and ExtractLocation properties are meaningful. + + + + + ZipProgressEventType.Extracting_BeforeExtractEntry + + Set when an Extract() on an entry in the ZipFile has begun. + Properties that are meaningful: ArchiveName, EntriesTotal, + CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. + + + + + ZipProgressEventType.Extracting_AfterExtractEntry + + Set when an Extract() on an entry in the ZipFile has completed. + Properties that are meaningful: ArchiveName, EntriesTotal, + CurrentEntry, Overwrite, ExtractLocation, EntriesExtracted. + + + + + ZipProgressEventType.Extracting_EntryBytesWritten + + Set within a call to Extract() on an entry in the ZipFile, as data + is extracted for the entry. Properties that are meaningful: + ArchiveName, CurrentEntry, BytesTransferred, TotalBytesToTransfer. + + + + + ZipProgressEventType.Extracting_ExtractEntryWouldOverwrite + + Set within a call to Extract() on an entry in the ZipFile, when the + extraction would overwrite an existing file. This event type is used + only when ExtractExistingFileAction on the ZipFile or + ZipEntry is set to InvokeExtractProgressEvent. + + + + + + + + + + private static bool justHadByteUpdate = false; + public static void ExtractProgress(object sender, ExtractProgressEventArgs e) + { + if(e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten) + { + if (justHadByteUpdate) + Console.SetCursorPosition(0, Console.CursorTop); + + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, + e.BytesTransferred / (0.01 * e.TotalBytesToTransfer )); + justHadByteUpdate = true; + } + else if(e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry) + { + if (justHadByteUpdate) + Console.WriteLine(); + Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName); + justHadByteUpdate= false; + } + } + + public static ExtractZip(string zipToExtract, string directory) + { + string TargetDirectory= "extract"; + using (var zip = ZipFile.Read(zipToExtract)) { + zip.ExtractProgress += ExtractProgress; + foreach (var e in zip1) + { + e.Extract(TargetDirectory, true); + } + } + } + + + + Public Shared Sub Main(ByVal args As String()) + Dim ZipToUnpack As String = "C1P3SML.zip" + Dim TargetDir As String = "ExtractTest_Extract" + Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir) + Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack) + AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress + Dim e As ZipEntry + For Each e In zip1 + e.Extract(TargetDir, True) + Next + End Using + End Sub + + Private Shared justHadByteUpdate As Boolean = False + + Public Shared Sub MyExtractProgress(ByVal sender As Object, ByVal e As ExtractProgressEventArgs) + If (e.EventType = ZipProgressEventType.Extracting_EntryBytesWritten) Then + If ExtractTest.justHadByteUpdate Then + Console.SetCursorPosition(0, Console.CursorTop) + End If + Console.Write(" {0}/{1} ({2:N0}%)", e.BytesTransferred, e.TotalBytesToTransfer, (CDbl(e.BytesTransferred) / (0.01 * e.TotalBytesToTransfer))) + ExtractTest.justHadByteUpdate = True + ElseIf (e.EventType = ZipProgressEventType.Extracting_BeforeExtractEntry) Then + If ExtractTest.justHadByteUpdate Then + Console.WriteLine + End If + Console.WriteLine("Extracting: {0}", e.CurrentEntry.FileName) + ExtractTest.justHadByteUpdate = False + End If + End Sub + + + + + + + + + + An event handler invoked before, during, and after Adding entries to a zip archive. + + + + Adding a large number of entries to a zip file can take a long + time. For example, when calling on a + directory that contains 50,000 files, it could take 3 minutes or so. + This event handler allws an application to track the progress of the Add + operation, and to optionally cancel a lengthy Add operation. + + + + + + int _numEntriesToAdd= 0; + int _numEntriesAdded= 0; + void AddProgressHandler(object sender, AddProgressEventArgs e) + { + switch (e.EventType) + { + case ZipProgressEventType.Adding_Started: + Console.WriteLine("Adding files to the zip..."); + break; + case ZipProgressEventType.Adding_AfterAddEntry: + _numEntriesAdded++; + Console.WriteLine(String.Format("Adding file {0}/{1} :: {2}", + _numEntriesAdded, _numEntriesToAdd, e.CurrentEntry.FileName)); + break; + case ZipProgressEventType.Adding_Completed: + Console.WriteLine("Added all files"); + break; + } + } + + void CreateTheZip() + { + using (ZipFile zip = new ZipFile()) + { + zip.AddProgress += AddProgressHandler; + zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)); + zip.Save(ZipFileToCreate); + } + } + + + + + + Private Sub AddProgressHandler(ByVal sender As Object, ByVal e As AddProgressEventArgs) + Select Case e.EventType + Case ZipProgressEventType.Adding_Started + Console.WriteLine("Adding files to the zip...") + Exit Select + Case ZipProgressEventType.Adding_AfterAddEntry + Console.WriteLine(String.Format("Adding file {0}", e.CurrentEntry.FileName)) + Exit Select + Case ZipProgressEventType.Adding_Completed + Console.WriteLine("Added all files") + Exit Select + End Select + End Sub + + Sub CreateTheZip() + Using zip as ZipFile = New ZipFile + AddHandler zip.AddProgress, AddressOf AddProgressHandler + zip.AddDirectory(System.IO.Path.GetFileName(DirToZip)) + zip.Save(ZipFileToCreate); + End Using + End Sub + + + + + + + + + + + + An event that is raised when an error occurs during open or read of files + while saving a zip archive. + + + + + Errors can occur as a file is being saved to the zip archive. For + example, the File.Open may fail, or a File.Read may fail, because of + lock conflicts or other reasons. If you add a handler to this event, + you can handle such errors in your own code. If you don't add a + handler, the library will throw an exception if it encounters an I/O + error during a call to Save(). + + + + Setting a handler implicitly sets to + ZipErrorAction.InvokeErrorEvent. + + + + The handler you add applies to all items that are + subsequently added to the ZipFile instance. If you set this + property after you have added items to the ZipFile, but before you + have called Save(), errors that occur while saving those items + will not cause the error handler to be invoked. + + + + If you want to handle any errors that occur with any entry in the zip + file using the same error handler, then add your error handler once, + before adding any entries to the zip archive. + + + + In the error handler method, you need to set the property on the + ZipErrorEventArgs.CurrentEntry. This communicates back to + DotNetZip what you would like to do with this particular error. Within + an error handler, if you set the ZipEntry.ZipErrorAction property + on the ZipEntry to ZipErrorAction.InvokeErrorEvent or if + you don't set it at all, the library will throw the exception. (It is the + same as if you had set the ZipEntry.ZipErrorAction property on the + ZipEntry to ZipErrorAction.Throw.) If you set the + ZipErrorEventArgs.Cancel to true, the entire Save() will be + canceled. + + + + In the case that you use ZipErrorAction.Skip, implying that + you want to skip the entry for which there's been an error, DotNetZip + tries to seek backwards in the output stream, and truncate all bytes + written on behalf of that particular entry. This works only if the + output stream is seekable. It will not work, for example, when using + ASPNET's Response.OutputStream. + + + + + + + This example shows how to use an event handler to handle + errors during save of the zip file. + + + public static void MyZipError(object sender, ZipErrorEventArgs e) + { + Console.WriteLine("Error saving {0}...", e.FileName); + Console.WriteLine(" Exception: {0}", e.exception); + ZipEntry entry = e.CurrentEntry; + string response = null; + // Ask the user whether he wants to skip this error or not + do + { + Console.Write("Retry, Skip, Throw, or Cancel ? (R/S/T/C) "); + response = Console.ReadLine(); + Console.WriteLine(); + + } while (response != null && + response[0]!='S' && response[0]!='s' && + response[0]!='R' && response[0]!='r' && + response[0]!='T' && response[0]!='t' && + response[0]!='C' && response[0]!='c'); + + e.Cancel = (response[0]=='C' || response[0]=='c'); + + if (response[0]=='S' || response[0]=='s') + entry.ZipErrorAction = ZipErrorAction.Skip; + else if (response[0]=='R' || response[0]=='r') + entry.ZipErrorAction = ZipErrorAction.Retry; + else if (response[0]=='T' || response[0]=='t') + entry.ZipErrorAction = ZipErrorAction.Throw; + } + + public void SaveTheFile() + { + string directoryToZip = "fodder"; + string directoryInArchive = "files"; + string zipFileToCreate = "Archive.zip"; + using (var zip = new ZipFile()) + { + // set the event handler before adding any entries + zip.ZipError += MyZipError; + zip.AddDirectory(directoryToZip, directoryInArchive); + zip.Save(zipFileToCreate); + } + } + + + + Private Sub MyZipError(ByVal sender As Object, ByVal e As Ionic.Zip.ZipErrorEventArgs) + ' At this point, the application could prompt the user for an action to take. + ' But in this case, this application will simply automatically skip the file, in case of error. + Console.WriteLine("Zip Error, entry {0}", e.CurrentEntry.FileName) + Console.WriteLine(" Exception: {0}", e.exception) + ' set the desired ZipErrorAction on the CurrentEntry to communicate that to DotNetZip + e.CurrentEntry.ZipErrorAction = Zip.ZipErrorAction.Skip + End Sub + + Public Sub SaveTheFile() + Dim directoryToZip As String = "fodder" + Dim directoryInArchive As String = "files" + Dim zipFileToCreate as String = "Archive.zip" + Using zipArchive As ZipFile = New ZipFile + ' set the event handler before adding any entries + AddHandler zipArchive.ZipError, AddressOf MyZipError + zipArchive.AddDirectory(directoryToZip, directoryInArchive) + zipArchive.Save(zipFileToCreate) + End Using + End Sub + + + + + + + + + Options for using ZIP64 extensions when saving zip archives. + + + + + + Designed many years ago, the original zip + specification from PKWARE allowed for 32-bit quantities for the + compressed and uncompressed sizes of zip entries, as well as a 32-bit quantity + for specifying the length of the zip archive itself, and a maximum of 65535 + entries. These limits are now regularly exceeded in many backup and archival + scenarios. Recently, PKWare added extensions to the original zip spec, called + "ZIP64 extensions", to raise those limitations. This property governs whether + DotNetZip will use those extensions when writing zip archives. The use of + these extensions is optional and explicit in DotNetZip because, despite the + status of ZIP64 as a bona fide standard, many other zip tools and libraries do + not support ZIP64, and therefore a zip file with ZIP64 extensions may be + unreadable by some of those other tools. + + + + Set this property to to always use ZIP64 + extensions when saving, regardless of whether your zip archive needs it. + Suppose you add 5 files, each under 100k, to a ZipFile. If you specify Always + for this flag, you will get a ZIP64 archive, though the archive does not need + to use ZIP64 because none of the original zip limits had been exceeded. + + + + Set this property to to tell the DotNetZip + library to never use ZIP64 extensions. This is useful for maximum + compatibility and interoperability, at the expense of the capability of + handling large files or large archives. NB: Windows Explorer in Windows XP + and Windows Vista cannot currently extract files from a zip64 archive, so if + you want to guarantee that a zip archive produced by this library will work in + Windows Explorer, use Never. If you set this property to , and your application creates a zip that would + exceed one of the Zip limits, the library will throw an exception while saving + the zip file. + + + + Set this property to to tell the + DotNetZip library to use the ZIP64 extensions when required by the + entry. After the file is compressed, the original and compressed sizes are + checked, and if they exceed the limits described above, then zip64 can be + used. That is the general idea, but there is an additional wrinkle when saving + to a non-seekable device, like the ASP.NET Response.OutputStream, or + Console.Out. When using non-seekable streams for output, the entry + header - which indicates whether zip64 is in use - is emitted before it is + known if zip64 is necessary. It is only after all entries have been saved + that it can be known if ZIP64 will be required. On seekable output streams, + after saving all entries, the library can seek backward and re-emit the zip + file header to be consistent with the actual ZIP64 requirement. But using a + non-seekable output stream, the library cannot seek backward, so the header + can never be changed. In other words, the archive's use of ZIP64 extensions is + not alterable after the header is emitted. Therefore, when saving to + non-seekable streams, using is the same + as using : it will always produce a zip + archive that uses ZIP64 extensions. + + + + + + + The default behavior, which is "Never". + (For COM clients, this is a 0 (zero).) + + + + + Do not use ZIP64 extensions when writing zip archives. + (For COM clients, this is a 0 (zero).) + + + + + Use ZIP64 extensions when writing zip archives, as necessary. + For example, when a single entry exceeds 0xFFFFFFFF in size, or when the archive as a whole + exceeds 0xFFFFFFFF in size, or when there are more than 65535 entries in an archive. + (For COM clients, this is a 1.) + + + + + Always use ZIP64 extensions when writing zip archives, even when unnecessary. + (For COM clients, this is a 2.) + + + + + An enum representing the values on a three-way toggle switch + for various options in the library. This might be used to + specify whether to employ a particular text encoding, or to use + ZIP64 extensions, or some other option. + + + + + The default behavior. This is the same as "Never". + (For COM clients, this is a 0 (zero).) + + + + + Never use the associated option. + (For COM clients, this is a 0 (zero).) + + + + + Use the associated behavior "as necessary." + (For COM clients, this is a 1.) + + + + + Use the associated behavior Always, whether necessary or not. + (For COM clients, this is a 2.) + + + + + A class for collecting the various options that can be used when + Reading zip files for extraction or update. + + + + + When reading a zip file, there are several options an + application can set, to modify how the file is read, or what + the library does while reading. This class collects those + options into one container. + + + + Pass an instance of the ReadOptions class into the + ZipFile.Read() method. + + + . + . + + + + + An event handler for Read operations. When opening large zip + archives, you may want to display a progress bar or other + indicator of status progress while reading. This parameter + allows you to specify a ReadProgress Event Handler directly. + When you call Read(), the progress event is invoked as + necessary. + + + + + The System.IO.TextWriter to use for writing verbose status messages + during operations on the zip archive. A console application may wish to + pass System.Console.Out to get messages on the Console. A graphical + or headless application may wish to capture the messages in a different + TextWriter, such as a System.IO.StringWriter. + + + + + The System.Text.Encoding to use when reading in the zip archive. Be + careful specifying the encoding. If the value you use here is not the same + as the Encoding used when the zip archive was created (possibly by a + different archiver) you will get unexpected results and possibly exceptions. + + + + + + + + An enum that provides the different self-extractor flavors + + + + + A self-extracting zip archive that runs from the console or + command line. + + + + + A self-extracting zip archive that presents a graphical user + interface when it is executed. + + + + + The options for generating a self-extracting archive. + + + + + The type of SFX to create. + + + + + The command to run after extraction. + + + + + This is optional. Leave it empty (null in C# or Nothing in + VB) to run no command after extraction. + + + + If it is non-empty, the SFX will execute the command specified in this + string on the user's machine, and using the extract directory as the + working directory for the process, after unpacking the archive. The + program to execute can include a path, if you like. If you want to execute + a program that accepts arguments, specify the program name, followed by a + space, and then the arguments for the program, each separated by a space, + just as you would on a normal command line. Example: program.exe arg1 + arg2. The string prior to the first space will be taken as the + program name, and the string following the first space specifies the + arguments to the program. + + + + If you want to execute a program that has a space in the name or path of + the file, surround the program name in double-quotes. The first character + of the command line should be a double-quote character, and there must be + a matching double-quote following the end of the program file name. Any + optional arguments to the program follow that, separated by + spaces. Example: "c:\project files\program name.exe" arg1 arg2. + + + + If the flavor of the SFX is SelfExtractorFlavor.ConsoleApplication, + then the SFX starts a new process, using this string as the post-extract + command line. The SFX waits for the process to exit. The exit code of + the post-extract command line is returned as the exit code of the + command-line self-extractor exe. A non-zero exit code is typically used to + indicated a failure by the program. In the case of an SFX, a non-zero exit + code may indicate a failure during extraction, OR, it may indicate a + failure of the run-after-extract program if specified, OR, it may indicate + the run-after-extract program could not be fuond. There is no way to + distinguish these conditions from the calling shell, aside from parsing + the output of the SFX. If you have Quiet set to true, you may not + see error messages, if a problem occurs. + + + + If the flavor of the SFX is + SelfExtractorFlavor.WinFormsApplication, then the SFX starts a new + process, using this string as the post-extract command line, and using the + extract directory as the working directory for the process. The SFX does + not wait for the command to complete, and does not check the exit code of + the program. If the run-after-extract program cannot be fuond, a message + box is displayed indicating that fact. + + + + You can specify environment variables within this string, with a format like + %NAME%. The value of these variables will be expanded at the time + the SFX is run. Example: %WINDIR%\system32\xcopy.exe may expand at + runtime to c:\Windows\System32\xcopy.exe. + + + + By combining this with the RemoveUnpackedFilesAfterExecute + flag, you can create an SFX that extracts itself, runs a file that + was extracted, then deletes all the files that were extracted. If + you want it to run "invisibly" then set Flavor to + SelfExtractorFlavor.ConsoleApplication, and set Quiet + to true. The user running such an EXE will see a console window + appear, then disappear quickly. You may also want to specify the + default extract location, with DefaultExtractDirectory. + + + + If you set Flavor to + SelfExtractorFlavor.WinFormsApplication, and set Quiet to + true, then a GUI with progressbars is displayed, but it is + "non-interactive" - it accepts no input from the user. Instead the SFX + just automatically unpacks and exits. + + + + + + + The default extract directory the user will see when + running the self-extracting archive. + + + + + Passing null (or Nothing in VB) here will cause the Self Extractor to use + the the user's personal directory () for the default extract + location. + + + + This is only a default location. The actual extract location will be + settable on the command line when the SFX is executed. + + + + You can specify environment variables within this string, + with %NAME%. The value of these variables will be + expanded at the time the SFX is run. Example: + %USERPROFILE%\Documents\unpack may expand at runtime to + c:\users\melvin\Documents\unpack. + + + + + + The name of an .ico file in the filesystem to use for the application icon + for the generated SFX. + + + + + Normally, DotNetZip will embed an "zipped folder" icon into the generated + SFX. If you prefer to use a different icon, you can specify it here. It + should be a .ico file. This file is passed as the /win32icon + option to the csc.exe compiler when constructing the SFX file. + + + + + + + Whether the ConsoleApplication SFX will be quiet during extraction. + + + + + This option affects the way the generated SFX runs. By default it is + false. When you set it to true,... + + + + + Flavor + Behavior + + + + ConsoleApplication + no messages will be emitted during successful + operation. Double-clicking the SFX in Windows + Explorer or as an attachment in an email will cause a console + window to appear briefly, before it disappears. If you run the + ConsoleApplication SFX from the cmd.exe prompt, it runs as a + normal console app; by default, because it is quiet, it displays + no messages to the console. If you pass the -v+ command line + argument to the Console SFX when you run it, you will get verbose + messages to the console. + + + + + WinFormsApplication + the SFX extracts automatically when the application + is launched, with no additional user input. + + + + + + + When you set it to false,... + + + + + Flavor + Behavior + + + + ConsoleApplication + the extractor will emit a + message to the console for each entry extracted. + + When double-clicking to launch the SFX, the console window will + remain, and the SFX will emit a message for each file as it + extracts. The messages fly by quickly, they won't be easily + readable, unless the extracted files are fairly large. + + + + + + WinFormsApplication + the SFX presents a forms UI and allows the user to select + options before extracting. + + + + + + + + + + Specify what the self-extractor will do when extracting an entry + would overwrite an existing file. + + + + The default behavvior is to Throw. + + + + + + Whether to remove the files that have been unpacked, after executing the + PostExtractCommandLine. + + + + + If true, and if there is a + PostExtractCommandLine, and if the command runs successfully, + then the files that the SFX unpacked will be removed, afterwards. If + the command does not complete successfully (non-zero return code), + that is interpreted as a failure, and the extracted files will not be + removed. + + + + Setting this flag, and setting Flavor to + SelfExtractorFlavor.ConsoleApplication, and setting Quiet to + true, results in an SFX that extracts itself, runs a file that was + extracted, then deletes all the files that were extracted, with no + intervention by the user. You may also want to specify the default + extract location, with DefaultExtractDirectory. + + + + + + + The file version number to embed into the generated EXE. It will show up, for + example, during a mouseover in Windows Explorer. + + + + + + The product version to embed into the generated EXE. It will show up, for + example, during a mouseover in Windows Explorer. + + + + You can use any arbitrary string, but a human-readable version number is + recommended. For example "v1.2 alpha" or "v4.2 RC2". If you specify nothing, + then there is no product version embedded into the EXE. + + + + + + The copyright notice, if any, to embed into the generated EXE. + + + + It will show up, for example, while viewing properties of the file in + Windows Explorer. You can use any arbitrary string, but typically you + want something like "Copyright © Dino Chiesa 2011". + + + + + + The description to embed into the generated EXE. + + + + Use any arbitrary string. This text will be displayed during a + mouseover in Windows Explorer. If you specify nothing, then the string + "DotNetZip SFX Archive" is embedded into the EXE as the description. + + + + + + The product name to embed into the generated EXE. + + + + Use any arbitrary string. This text will be displayed + while viewing properties of the EXE file in + Windows Explorer. + + + + + + The title to display in the Window of a GUI SFX, while it extracts. + + + + + By default the title show in the GUI window of a self-extractor + is "DotNetZip Self-extractor (http://DotNetZip.codeplex.com/)". + You can change that by setting this property before saving the SFX. + + + + This property has an effect only when producing a Self-extractor + of flavor SelfExtractorFlavor.WinFormsApplication. + + + + + + + Additional options for the csc.exe compiler, when producing the SFX + EXE. + + + + + + Reset the BitWriter. + + + + This is useful when the BitWriter writes into a MemoryStream, and + is used by a BZip2Compressor, which itself is re-used for multiple + distinct data blocks. + + + + + + Write some number of bits from the given value, into the output. + + + + The nbits value should be a max of 25, for safety. For performance + reasons, this method does not check! + + + + + + Write a full 8-bit byte into the output. + + + + + Write four 8-bit bytes into the output. + + + + + Write all available byte-aligned bytes. + + + + This method writes no new output, but flushes any accumulated + bits. At completion, the accumulator may contain up to 7 + bits. + + + This is necessary when re-assembling output from N independent + compressors, one for each of N blocks. The output of any + particular compressor will in general have some fragment of a byte + remaining. This fragment needs to be accumulated into the + parent BZip2OutputStream. + + + + + + Writes all available bytes, and emits padding for the final byte as + necessary. This must be the last method invoked on an instance of + BitWriter. + + + + + Delivers the remaining bits, left-aligned, in a byte. + + + + This is valid only if NumRemainingBits is less than 8; + in other words it is valid only after a call to Flush(). + + + + + Knuth's increments seem to work better than Incerpi-Sedgewick here. + Possibly because the number of elems to sort is usually small, typically + <= 20. + + + + BZip2Compressor writes its compressed data out via a BitWriter. This + is necessary because BZip2 does byte shredding. + + + + + Accept new bytes into the compressor data buffer + + + + This method does the first-level (cheap) run-length encoding, and + stores the encoded data into the rle block. + + + + + + Process one input byte into the block. + + + + + To "process" the byte means to do the run-length encoding. + There are 3 possible return values: + + 0 - the byte was not written, in other words, not + encoded into the block. This happens when the + byte b would require the start of a new run, and + the block has no more room for new runs. + + 1 - the byte was written, and the block is not full. + + 2 - the byte was written, and the block is full. + + + + 0 if the byte was not written, non-zero if written. + + + + Append one run to the output block. + + + + + This compressor does run-length-encoding before BWT and etc. This + method simply appends a run to the output block. The append always + succeeds. The return value indicates whether the block is full: + false (not full) implies that at least one additional run could be + processed. + + + true if the block is now full; otherwise false. + + + + Compress the data that has been placed (Run-length-encoded) into the + block. The compressed data goes into the CompressedBytes array. + + + + Side effects: 1. fills the CompressedBytes array. 2. sets the + AvailableBytesOut property. + + + + + This is the most hammered method of this class. + +

+ This is the version using unrolled loops. +

+
+ + Method "mainQSort3", file "blocksort.c", BZip2 1.0.2 + + + + The number of uncompressed bytes being held in the buffer. + + + + I am thinking this may be useful in a Stream that uses this + compressor class. In the Close() method on the stream it could + check this value to see if anything has been written at all. You + may think the stream could easily track the number of bytes it + wrote, which would eliminate the need for this. But, there is the + case where the stream writes a complete block, and it is full, and + then writes no more. In that case the stream may want to check. + + + + + Array instance identical to sfmap, both are used only + temporarily and independently, so we do not need to allocate + additional memory. + + + + A read-only decorator stream that performs BZip2 decompression on Read. + + + + + Create a BZip2InputStream, wrapping it around the given input Stream. + + + + The input stream will be closed when the BZip2InputStream is closed. + + + The stream from which to read compressed data + + + + Create a BZip2InputStream with the given stream, and + specifying whether to leave the wrapped stream open when + the BZip2InputStream is closed. + + The stream from which to read compressed data + + Whether to leave the input stream open, when the BZip2InputStream closes. + + + + + This example reads a bzip2-compressed file, decompresses it, + and writes the decompressed data into a newly created file. + + + var fname = "logfile.log.bz2"; + using (var fs = File.OpenRead(fname)) + { + using (var decompressor = new Ionic.BZip2.BZip2InputStream(fs)) + { + var outFname = fname + ".decompressed"; + using (var output = File.Create(outFname)) + { + byte[] buffer = new byte[2048]; + int n; + while ((n = decompressor.Read(buffer, 0, buffer.Length)) > 0) + { + output.Write(buffer, 0, n); + } + } + } + } + + + + + + Read data from the stream. + + + + + To decompress a BZip2 data stream, create a BZip2InputStream, + providing a stream that reads compressed data. Then call Read() on + that BZip2InputStream, and the data read will be decompressed + as you read. + + + + A BZip2InputStream can be used only for Read(), not for Write(). + + + + The buffer into which the read data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Read a single byte from the stream. + + the byte read from the stream, or -1 if EOF + + + + Flush the stream. + + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Calling this method always throws a . + + this parameter is never used + this parameter is never used + this parameter is never used + + + + Dispose the stream. + + + indicates whether the Dispose method was invoked by user code. + + + + + Close the stream. + + + + + Read n bits from input, right justifying the result. + + + + For example, if you read 1 bit, the result is either 0 + or 1. + + + + The number of bits to read, always between 1 and 32. + + + + Called by createHuffmanDecodingTables() exclusively. + + + Called by recvDecodingTables() exclusively. + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the + total number of uncompressed bytes read in. + + + + + Compressor State + + + + Freq table collected to save a pass over the data during + decompression. + + + Initializes the tt array. + + This method is called when the required length of the array is known. + I don't initialize it at construction time to avoid unneccessary + memory allocation when compressing small files. + + + + A write-only decorator stream that compresses data as it is + written using the BZip2 algorithm. + + + + + Constructs a new BZip2OutputStream, that sends its + compressed output to the given output stream. + + + + The destination stream, to which compressed output will be sent. + + + + + This example reads a file, then compresses it with bzip2 file, + and writes the compressed data into a newly created file. + + + var fname = "logfile.log"; + using (var fs = File.OpenRead(fname)) + { + var outFname = fname + ".bz2"; + using (var output = File.Create(outFname)) + { + using (var compressor = new Ionic.BZip2.BZip2OutputStream(output)) + { + byte[] buffer = new byte[2048]; + int n; + while ((n = fs.Read(buffer, 0, buffer.Length)) > 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + + + Constructs a new BZip2OutputStream with specified blocksize. + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + + + Constructs a new BZip2OutputStream. + + the destination stream. + + whether to leave the captive stream open upon closing this stream. + + + + + Constructs a new BZip2OutputStream with specified blocksize, + and explicitly specifies whether to leave the wrapped stream open. + + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + whether to leave the captive stream open upon closing this stream. + + + + + Close the stream. + + + + This may or may not close the underlying stream. Check the + constructors that accept a bool value. + + + + + + Flush the stream. + + + + + Write data to the stream. + + + + + Use the BZip2OutputStream to compress data while writing: + create a BZip2OutputStream with a writable output stream. + Then call Write() on that BZip2OutputStream, providing + uncompressed data as input. The data sent to the output stream will + be the compressed form of the input data. + + + + A BZip2OutputStream can be used only for Write() not for Read(). + + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Calling this method always throws a . + + this parameter is never used + this parameter is never used + this parameter is never used + never returns anything; always throws + + + + The blocksize parameter specified at construction time. + + + + + Indicates whether the stream can be read. + + + The return value is always false. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value should always be true, unless and until the + object is disposed and closed. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the + total number of uncompressed bytes written through. + + + + + A write-only decorator stream that compresses data as it is + written using the BZip2 algorithm. This stream compresses by + block using multiple threads. + + + This class performs BZIP2 compression through writing. For + more information on the BZIP2 algorithm, see + . + + + + This class is similar to , + except that this implementation uses an approach that employs multiple + worker threads to perform the compression. On a multi-cpu or multi-core + computer, the performance of this class can be significantly higher than + the single-threaded BZip2OutputStream, particularly for larger streams. + How large? Anything over 10mb is a good candidate for parallel + compression. + + + + The tradeoff is that this class uses more memory and more CPU than the + vanilla BZip2OutputStream. Also, for small files, the + ParallelBZip2OutputStream can be much slower than the vanilla + BZip2OutputStream, because of the overhead associated to using the + thread pool. + + + + + + + Constructs a new ParallelBZip2OutputStream, that sends its + compressed output to the given output stream. + + + + The destination stream, to which compressed output will be sent. + + + + + This example reads a file, then compresses it with bzip2 file, + and writes the compressed data into a newly created file. + + + var fname = "logfile.log"; + using (var fs = File.OpenRead(fname)) + { + var outFname = fname + ".bz2"; + using (var output = File.Create(outFname)) + { + using (var compressor = new Ionic.BZip2.ParallelBZip2OutputStream(output)) + { + byte[] buffer = new byte[2048]; + int n; + while ((n = fs.Read(buffer, 0, buffer.Length)) > 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + + + Constructs a new ParallelBZip2OutputStream with specified blocksize. + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + + + Constructs a new ParallelBZip2OutputStream. + + the destination stream. + + whether to leave the captive stream open upon closing this stream. + + + + + Constructs a new ParallelBZip2OutputStream with specified blocksize, + and explicitly specifies whether to leave the wrapped stream open. + + + the destination stream. + + The blockSize in units of 100000 bytes. + The valid range is 1..9. + + + whether to leave the captive stream open upon closing this stream. + + + + + Close the stream. + + + + This may or may not close the underlying stream. Check the + constructors that accept a bool value. + + + + + + Flush the stream. + + + + + Write data to the stream. + + + + + Use the ParallelBZip2OutputStream to compress data while + writing: create a ParallelBZip2OutputStream with a writable + output stream. Then call Write() on that + ParallelBZip2OutputStream, providing uncompressed data as + input. The data sent to the output stream will be the compressed + form of the input data. + + + + A ParallelBZip2OutputStream can be used only for + Write() not for Read(). + + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Calling this method always throws a . + + this parameter is never used + this parameter is never used + this parameter is never used + never returns anything; always throws + + + + The maximum number of concurrent compression worker threads to use. + + + + + This property sets an upper limit on the number of concurrent worker + threads to employ for compression. The implementation of this stream + employs multiple threads from the .NET thread pool, via + ThreadPool.QueueUserWorkItem(), to compress the incoming data by + block. As each block of data is compressed, this stream re-orders the + compressed blocks and writes them to the output stream. + + + + A higher number of workers enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + By default, DotNetZip allocates 4 workers per CPU core, subject to the + upper limit specified in this property. For example, suppose the + application sets this property to 16. Then, on a machine with 2 + cores, DotNetZip will use 8 workers; that number does not exceed the + upper limit specified by this property, so the actual number of + workers used will be 4 * 2 = 8. On a machine with 4 cores, DotNetZip + will use 16 workers; again, the limit does not apply. On a machine + with 8 cores, DotNetZip will use 16 workers, because of the limit. + + + + For each compression "worker thread" that occurs in parallel, there is + up to 2mb of memory allocated, for buffering and processing. The + actual number depends on the property. + + + + CPU utilization will also go up with additional workers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + The application can set this value at any time, but it is effective + only before the first call to Write(), which is when the buffers are + allocated. + + + + + + The blocksize parameter specified at construction time. + + + + + Indicates whether the stream can be read. + + + The return value is always false. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the + total number of uncompressed bytes written through. + + + + + The total number of bytes written out by the stream. + + + This value is meaningful only after a call to Close(). + + + + + Returns the "random" number at a specific index. + + the index + the random number + + + + A class for compressing and decompressing streams using the Deflate algorithm. + + + + + + The DeflateStream is a Decorator on a . It adds DEFLATE compression or decompression to any + stream. + + + + Using this stream, applications can compress or decompress data via stream + Read and Write operations. Either compresssion or decompression + can occur through either reading or writing. The compression format used is + DEFLATE, which is documented in IETF RFC 1951, "DEFLATE + Compressed Data Format Specification version 1.3.". + + + + This class is similar to , except that + ZlibStream adds the RFC + 1950 - ZLIB framing bytes to a compressed stream when compressing, or + expects the RFC1950 framing bytes when decompressing. The DeflateStream + does not. + + + + + + + + + + Create a DeflateStream using the specified CompressionMode. + + + + When mode is CompressionMode.Compress, the DeflateStream will use + the default compression level. The "captive" stream will be closed when + the DeflateStream is closed. + + + + This example uses a DeflateStream to compress data from a file, and writes + the compressed data to another file. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (Stream compressor = new DeflateStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".deflated") + Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream which will be read or written. + Indicates whether the DeflateStream will compress or decompress. + + + + Create a DeflateStream using the specified CompressionMode and the specified CompressionLevel. + + + + + + When mode is CompressionMode.Decompress, the level parameter is + ignored. The "captive" stream will be closed when the DeflateStream is + closed. + + + + + + + This example uses a DeflateStream to compress data from a file, and writes + the compressed data to another file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (Stream compressor = new DeflateStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + while (n != 0) + { + if (n > 0) + compressor.Write(buffer, 0, n); + n= input.Read(buffer, 0, buffer.Length); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".deflated") + Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to be read or written while deflating or inflating. + Indicates whether the DeflateStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a DeflateStream using the specified + CompressionMode, and explicitly specify whether the + stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compression. Specify true for + the parameter to leave the stream open. + + + + The DeflateStream will use the default compression level. + + + + See the other overloads of this constructor for example code. + + + + + The stream which will be read or written. This is called the + "captive" stream in other places in this documentation. + + + + Indicates whether the DeflateStream will compress or decompress. + + + true if the application would like the stream to + remain open after inflation/deflation. + + + + Create a DeflateStream using the specified CompressionMode + and the specified CompressionLevel, and explicitly specify whether + the stream should be left open after Deflation or Inflation. + + + + + + When mode is CompressionMode.Decompress, the level parameter is ignored. + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + that will be re-read after + compression. Specify true for the parameter + to leave the stream open. + + + + + + + This example shows how to use a DeflateStream to compress data from + a file, and store the compressed data into another file. + + + using (var output = System.IO.File.Create(fileToCompress + ".deflated")) + { + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (Stream compressor = new DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + while (n != 0) + { + if (n > 0) + compressor.Write(buffer, 0, n); + n= input.Read(buffer, 0, buffer.Length); + } + } + } + // can write additional data to the output stream here + } + + + + Using output As FileStream = File.Create(fileToCompress & ".deflated") + Using input As Stream = File.OpenRead(fileToCompress) + Using compressor As Stream = New DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + ' can write additional data to the output stream here. + End Using + + + The stream which will be read or written. + Indicates whether the DeflateStream will compress or decompress. + true if the application would like the stream to remain open after inflation/deflation. + A tuning knob to trade speed for effectiveness. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + Application code won't call this code directly. This method may be + invoked in two distinct scenarios. If disposing == true, the method + has been called directly or indirectly by a user's code, for example + via the public Dispose() method. In this case, both managed and + unmanaged resources can be referenced and disposed. If disposing == + false, the method has been called by the runtime from inside the + object finalizer and this method should not reference other objects; + in that case only unmanaged resources must be referenced or + disposed. + + + + true if the Dispose method was invoked by user code. + + + + + Flush the stream. + + + + + Read data from the stream. + + + + + If you wish to use the DeflateStream to compress data while + reading, you can create a DeflateStream with + CompressionMode.Compress, providing an uncompressed data stream. + Then call Read() on that DeflateStream, and the data read will be + compressed as you read. If you wish to use the DeflateStream to + decompress data while reading, you can create a DeflateStream with + CompressionMode.Decompress, providing a readable compressed data + stream. Then call Read() on that DeflateStream, and the data read + will be decompressed as you read. + + + + A DeflateStream can be used for Read() or Write(), but not both. + + + + The buffer into which the read data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + this is irrelevant, since it will always throw! + irrelevant! + + + + Calling this method always throws a . + + this is irrelevant, since it will always throw! + + + + Write data to the stream. + + + + + If you wish to use the DeflateStream to compress data while + writing, you can create a DeflateStream with + CompressionMode.Compress, and a writable output stream. Then call + Write() on that DeflateStream, providing uncompressed data + as input. The data sent to the output stream will be the compressed form + of the data written. If you wish to use the DeflateStream to + decompress data while writing, you can create a DeflateStream with + CompressionMode.Decompress, and a writable output stream. Then + call Write() on that stream, providing previously compressed + data. The data sent to the output stream will be the decompressed form of + the data written. + + + + A DeflateStream can be used for Read() or Write(), + but not both. + + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using DEFLATE (RFC 1951). + + + + Uncompress it with . + + + DeflateStream.UncompressString(byte[]) + DeflateStream.CompressBuffer(byte[]) + GZipStream.CompressString(string) + ZlibStream.CompressString(string) + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using DEFLATE. + + + + Uncompress it with . + + + DeflateStream.CompressString(string) + DeflateStream.UncompressBuffer(byte[]) + GZipStream.CompressBuffer(byte[]) + ZlibStream.CompressBuffer(byte[]) + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a DEFLATE'd byte array into a single string. + + + DeflateStream.CompressString(String) + DeflateStream.UncompressBuffer(byte[]) + GZipStream.UncompressString(byte[]) + ZlibStream.UncompressString(byte[]) + + + A buffer containing DEFLATE-compressed data. + + + The uncompressed string + + + + Uncompress a DEFLATE'd byte array into a byte array. + + + DeflateStream.CompressBuffer(byte[]) + DeflateStream.UncompressString(byte[]) + GZipStream.UncompressBuffer(byte[]) + ZlibStream.UncompressBuffer(byte[]) + + + A buffer containing data that has been compressed with DEFLATE. + + + The data in uncompressed form + + + + This property sets the flush behavior on the stream. + + See the ZLIB documentation for the meaning of the flush behavior. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + + The ZLIB strategy to be used during compression. + + + + By tweaking this parameter, you may be able to optimize the compression for + data with particular characteristics. + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + A class for compressing and decompressing GZIP streams. + + + + + The GZipStream is a Decorator on a + . It adds GZIP compression or decompression to any + stream. + + + + Like the System.IO.Compression.GZipStream in the .NET Base Class Library, the + Ionic.Zlib.GZipStream can compress while writing, or decompress while + reading, but not vice versa. The compression method used is GZIP, which is + documented in IETF RFC + 1952, "GZIP file format specification version 4.3". + + + A GZipStream can be used to decompress data (through Read()) or + to compress data (through Write()), but not both. + + + + If you wish to use the GZipStream to compress data, you must wrap it + around a write-able stream. As you call Write() on the GZipStream, the + data will be compressed into the GZIP format. If you want to decompress data, + you must wrap the GZipStream around a readable stream that contains an + IETF RFC 1952-compliant stream. The data will be decompressed as you call + Read() on the GZipStream. + + + + Though the GZIP format allows data from multiple files to be concatenated + together, this stream handles only a single segment of GZIP format, typically + representing a single file. + + + + This class is similar to and . + ZlibStream handles RFC1950-compliant streams. + handles RFC1951-compliant streams. This class handles RFC1952-compliant streams. + + + + + + + + + + The last modified time for the GZIP stream. + + + + GZIP allows the storage of a last modified time with each GZIP entry. + When compressing data, you can set this before the first call to + Write(). When decompressing, you can retrieve this value any time + after the first call to Read(). + + + + + Create a GZipStream using the specified CompressionMode. + + + + + When mode is CompressionMode.Compress, the GZipStream will use the + default compression level. + + + + As noted in the class documentation, the CompressionMode (Compress + or Decompress) also establishes the "direction" of the stream. A + GZipStream with CompressionMode.Compress works only through + Write(). A GZipStream with + CompressionMode.Decompress works only through Read(). + + + + + + This example shows how to use a GZipStream to compress data. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new GZipStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + + This example shows how to use a GZipStream to uncompress a file. + + private void GunZipFile(string filename) + { + if (!filename.EndsWith(".gz)) + throw new ArgumentException("filename"); + var DecompressedFile = filename.Substring(0,filename.Length-3); + byte[] working = new byte[WORKING_BUFFER_SIZE]; + int n= 1; + using (System.IO.Stream input = System.IO.File.OpenRead(filename)) + { + using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) + { + using (var output = System.IO.File.Create(DecompressedFile)) + { + while (n !=0) + { + n= decompressor.Read(working, 0, working.Length); + if (n > 0) + { + output.Write(working, 0, n); + } + } + } + } + } + } + + + + Private Sub GunZipFile(ByVal filename as String) + If Not (filename.EndsWith(".gz)) Then + Throw New ArgumentException("filename") + End If + Dim DecompressedFile as String = filename.Substring(0,filename.Length-3) + Dim working(WORKING_BUFFER_SIZE) as Byte + Dim n As Integer = 1 + Using input As Stream = File.OpenRead(filename) + Using decompressor As Stream = new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, True) + Using output As Stream = File.Create(UncompressedFile) + Do + n= decompressor.Read(working, 0, working.Length) + If n > 0 Then + output.Write(working, 0, n) + End IF + Loop While (n > 0) + End Using + End Using + End Using + End Sub + + + + The stream which will be read or written. + Indicates whether the GZipStream will compress or decompress. + + + + Create a GZipStream using the specified CompressionMode and + the specified CompressionLevel. + + + + + The CompressionMode (Compress or Decompress) also establishes the + "direction" of the stream. A GZipStream with + CompressionMode.Compress works only through Write(). A + GZipStream with CompressionMode.Decompress works only + through Read(). + + + + + + + This example shows how to use a GZipStream to compress a file into a .gz file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".gz")) + { + using (Stream compressor = new GZipStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".gz") + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to be read or written while deflating or inflating. + Indicates whether the GZipStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a GZipStream using the specified CompressionMode, and + explicitly specify whether the stream should be left open after Deflation + or Inflation. + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compressed data has been written + to it. Specify true for the parameter to leave + the stream open. + + + + The (Compress or Decompress) also + establishes the "direction" of the stream. A GZipStream with + CompressionMode.Compress works only through Write(). A GZipStream + with CompressionMode.Decompress works only through Read(). + + + + The GZipStream will use the default compression level. If you want + to specify the compression level, see . + + + + See the other overloads of this constructor for example code. + + + + + + The stream which will be read or written. This is called the "captive" + stream in other places in this documentation. + + + Indicates whether the GZipStream will compress or decompress. + + + + true if the application would like the base stream to remain open after + inflation/deflation. + + + + + Create a GZipStream using the specified CompressionMode and the + specified CompressionLevel, and explicitly specify whether the + stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + memory stream that will be re-read after compressed data has been written + to it. Specify true for the parameter to + leave the stream open. + + + + As noted in the class documentation, the CompressionMode (Compress + or Decompress) also establishes the "direction" of the stream. A + GZipStream with CompressionMode.Compress works only through + Write(). A GZipStream with CompressionMode.Decompress works only + through Read(). + + + + + + This example shows how to use a GZipStream to compress data. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream which will be read or written. + Indicates whether the GZipStream will compress or decompress. + true if the application would like the stream to remain open after inflation/deflation. + A tuning knob to trade speed for effectiveness. + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + This method may be invoked in two distinct scenarios. If disposing + == true, the method has been called directly or indirectly by a + user's code, for example via the public Dispose() method. In this + case, both managed and unmanaged resources can be referenced and + disposed. If disposing == false, the method has been called by the + runtime from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources must + be referenced or disposed. + + + + indicates whether the Dispose method was invoked by user code. + + + + + Flush the stream. + + + + + Read and decompress data from the source stream. + + + + With a GZipStream, decompression is done through reading. + + + + + byte[] working = new byte[WORKING_BUFFER_SIZE]; + using (System.IO.Stream input = System.IO.File.OpenRead(_CompressedFile)) + { + using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true)) + { + using (var output = System.IO.File.Create(_DecompressedFile)) + { + int n; + while ((n= decompressor.Read(working, 0, working.Length)) !=0) + { + output.Write(working, 0, n); + } + } + } + } + + + The buffer into which the decompressed data should be placed. + the offset within that data array to put the first byte read. + the number of bytes to read. + the number of bytes actually read + + + + Calling this method always throws a . + + irrelevant; it will always throw! + irrelevant; it will always throw! + irrelevant! + + + + Calling this method always throws a . + + irrelevant; this method will always throw! + + + + Write data to the stream. + + + + + If you wish to use the GZipStream to compress data while writing, + you can create a GZipStream with CompressionMode.Compress, and a + writable output stream. Then call Write() on that GZipStream, + providing uncompressed data as input. The data sent to the output stream + will be the compressed form of the data written. + + + + A GZipStream can be used for Read() or Write(), but not + both. Writing implies compression. Reading implies decompression. + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using GZip. + + + + Uncompress it with . + + + + + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using GZip. + + + + Uncompress it with . + + + + + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a GZip'ed byte array into a single string. + + + + + + + A buffer containing GZIP-compressed data. + + + The uncompressed string + + + + Uncompress a GZip'ed byte array into a byte array. + + + + + + + A buffer containing data that has been compressed with GZip. + + + The data in uncompressed form + + + + The comment on the GZIP stream. + + + + + The GZIP format allows for each file to optionally have an associated + comment stored with the file. The comment is encoded with the ISO-8859-1 + code page. To include a comment in a GZIP stream you create, set this + property before calling Write() for the first time on the + GZipStream. + + + + When using GZipStream to decompress, you can retrieve this property + after the first call to Read(). If no comment has been set in the + GZIP bytestream, the Comment property will return null + (Nothing in VB). + + + + + + The FileName for the GZIP stream. + + + + + + The GZIP format optionally allows each file to have an associated + filename. When compressing data (through Write()), set this + FileName before calling Write() the first time on the GZipStream. + The actual filename is encoded into the GZIP bytestream with the + ISO-8859-1 code page, according to RFC 1952. It is the application's + responsibility to insure that the FileName can be encoded and decoded + correctly with this code page. + + + + When decompressing (through Read()), you can retrieve this value + any time after the first Read(). In the case where there was no filename + encoded into the GZIP bytestream, the property will return null (Nothing + in VB). + + + + + + The CRC on the GZIP stream. + + + This is used for internal error checking. You probably don't need to look at this property. + + + + + This property sets the flush behavior on the stream. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + A class for compressing streams using the + Deflate algorithm with multiple threads. + + + + + This class performs DEFLATE compression through writing. For + more information on the Deflate algorithm, see IETF RFC 1951, + "DEFLATE Compressed Data Format Specification version 1.3." + + + + This class is similar to , except + that this class is for compression only, and this implementation uses an + approach that employs multiple worker threads to perform the DEFLATE. On + a multi-cpu or multi-core computer, the performance of this class can be + significantly higher than the single-threaded DeflateStream, particularly + for larger streams. How large? Anything over 10mb is a good candidate + for parallel compression. + + + + The tradeoff is that this class uses more memory and more CPU than the + vanilla DeflateStream, and also is less efficient as a compressor. For + large files the size of the compressed data stream can be less than 1% + larger than the size of a compressed data stream from the vanialla + DeflateStream. For smaller files the difference can be larger. The + difference will also be larger if you set the BufferSize to be lower than + the default value. Your mileage may vary. Finally, for small files, the + ParallelDeflateOutputStream can be much slower than the vanilla + DeflateStream, because of the overhead associated to using the thread + pool. + + + + + + + + Create a ParallelDeflateOutputStream. + + + + + This stream compresses data written into it via the DEFLATE + algorithm (see RFC 1951), and writes out the compressed byte stream. + + + + The instance will use the default compression level, the default + buffer sizes and the default number of threads and buffers per + thread. + + + + This class is similar to , + except that this implementation uses an approach that employs + multiple worker threads to perform the DEFLATE. On a multi-cpu or + multi-core computer, the performance of this class can be + significantly higher than the single-threaded DeflateStream, + particularly for larger streams. How large? Anything over 10mb is + a good candidate for parallel compression. + + + + + + + This example shows how to use a ParallelDeflateOutputStream to compress + data. It reads a file, compresses it, and writes the compressed data to + a second, output file. + + + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n= -1; + String outputFile = fileToCompress + ".compressed"; + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(outputFile)) + { + using (Stream compressor = new ParallelDeflateOutputStream(raw)) + { + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Dim outputFile As String = (fileToCompress & ".compressed") + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(outputFile) + Using compressor As Stream = New ParallelDeflateOutputStream(raw) + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + The stream to which compressed data will be written. + + + + Create a ParallelDeflateOutputStream using the specified CompressionLevel. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + + + Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open + when the ParallelDeflateOutputStream is closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + + true if the application would like the stream to remain open after inflation/deflation. + + + + + Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open + when the ParallelDeflateOutputStream is closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + true if the application would like the stream to remain open after inflation/deflation. + + + + + Create a ParallelDeflateOutputStream using the specified + CompressionLevel and CompressionStrategy, and specifying whether to + leave the captive stream open when the ParallelDeflateOutputStream is + closed. + + + See the + constructor for example code. + + The stream to which compressed data will be written. + A tuning knob to trade speed for effectiveness. + + By tweaking this parameter, you may be able to optimize the compression for + data with particular characteristics. + + + true if the application would like the stream to remain open after inflation/deflation. + + + + + Write data to the stream. + + + + + + To use the ParallelDeflateOutputStream to compress data, create a + ParallelDeflateOutputStream with CompressionMode.Compress, passing a + writable output stream. Then call Write() on that + ParallelDeflateOutputStream, providing uncompressed data as input. The + data sent to the output stream will be the compressed form of the data + written. + + + + To decompress data, use the class. + + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Flush the stream. + + + + + Close the stream. + + + You must call Close on the stream to guarantee that all of the data written in has + been compressed, and the compressed data has been written out. + + + + Dispose the object + + + Because ParallelDeflateOutputStream is IDisposable, the + application must call this method when finished using the instance. + + + This method is generally called implicitly upon exit from + a using scope in C# (Using in VB). + + + + + The Dispose method + + indicates whether the Dispose method was invoked by user code. + + + + + Resets the stream for use with another stream. + + + Because the ParallelDeflateOutputStream is expensive to create, it + has been designed so that it can be recycled and re-used. You have + to call Close() on the stream first, then you can call Reset() on + it, to use it again on another stream. + + + + The new output stream for this era. + + + + + ParallelDeflateOutputStream deflater = null; + foreach (var inputFile in listOfFiles) + { + string outputFile = inputFile + ".compressed"; + using (System.IO.Stream input = System.IO.File.OpenRead(inputFile)) + { + using (var outStream = System.IO.File.Create(outputFile)) + { + if (deflater == null) + deflater = new ParallelDeflateOutputStream(outStream, + CompressionLevel.Best, + CompressionStrategy.Default, + true); + deflater.Reset(outStream); + + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + deflater.Write(buffer, 0, n); + } + } + } + } + + + + + + This method always throws a NotSupportedException. + + + The buffer into which data would be read, IF THIS METHOD + ACTUALLY DID ANYTHING. + + + The offset within that data array at which to insert the + data that is read, IF THIS METHOD ACTUALLY DID + ANYTHING. + + + The number of bytes to write, IF THIS METHOD ACTUALLY DID + ANYTHING. + + nothing. + + + + This method always throws a NotSupportedException. + + + The offset to seek to.... + IF THIS METHOD ACTUALLY DID ANYTHING. + + + The reference specifying how to apply the offset.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + nothing. It always throws. + + + + This method always throws a NotSupportedException. + + + The new value for the stream length.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + + + The ZLIB strategy to be used during compression. + + + + + + The maximum number of buffer pairs to use. + + + + + This property sets an upper limit on the number of memory buffer + pairs to create. The implementation of this stream allocates + multiple buffers to facilitate parallel compression. As each buffer + fills up, this stream uses + ThreadPool.QueueUserWorkItem() + to compress those buffers in a background threadpool thread. After a + buffer is compressed, it is re-ordered and written to the output + stream. + + + + A higher number of buffer pairs enables a higher degree of + parallelism, which tends to increase the speed of compression on + multi-cpu computers. On the other hand, a higher number of buffer + pairs also implies a larger memory consumption, more active worker + threads, and a higher cpu utilization for any compression. This + property enables the application to limit its memory consumption and + CPU utilization behavior depending on requirements. + + + + For each compression "task" that occurs in parallel, there are 2 + buffers allocated: one for input and one for output. This property + sets a limit for the number of pairs. The total amount of storage + space allocated for buffering will then be (N*S*2), where N is the + number of buffer pairs, S is the size of each buffer (). By default, DotNetZip allocates 4 buffer + pairs per CPU core, so if your machine has 4 cores, and you retain + the default buffer size of 128k, then the + ParallelDeflateOutputStream will use 4 * 4 * 2 * 128kb of buffer + memory in total, or 4mb, in blocks of 128kb. If you then set this + property to 8, then the number will be 8 * 2 * 128kb of buffer + memory, or 2mb. + + + + CPU utilization will also go up with additional buffers, because a + larger number of buffer pairs allows a larger number of background + threads to compress in parallel. If you find that parallel + compression is consuming too much memory or CPU, you can adjust this + value downward. + + + + The default value is 16. Different values may deliver better or + worse results, depending on your priorities and the dynamic + performance characteristics of your storage and compute resources. + + + + This property is not the number of buffer pairs to use; it is an + upper limit. An illustration: Suppose you have an application that + uses the default value of this property (which is 16), and it runs + on a machine with 2 CPU cores. In that case, DotNetZip will allocate + 4 buffer pairs per CPU core, for a total of 8 pairs. The upper + limit specified by this property has no effect. + + + + The application can set this value at any time, but it is effective + only before the first call to Write(), which is when the buffers are + allocated. + + + + + + The size of the buffers used by the compressor threads. + + + + + The default buffer size is 128k. The application can set this value + at any time, but it is effective only before the first Write(). + + + + Larger buffer sizes implies larger memory consumption but allows + more efficient compression. Using smaller buffer sizes consumes less + memory but may result in less effective compression. For example, + using the default buffer size of 128k, the compression delivered is + within 1% of the compression delivered by the single-threaded . On the other hand, using a + BufferSize of 8k can result in a compressed data stream that is 5% + larger than that delivered by the single-threaded + DeflateStream. Excessively small buffer sizes can also cause + the speed of the ParallelDeflateOutputStream to drop, because of + larger thread scheduling overhead dealing with many many small + buffers. + + + + The total amount of storage space allocated for buffering will be + (N*S*2), where N is the number of buffer pairs, and S is the size of + each buffer (this property). There are 2 buffers used by the + compressor, one for input and one for output. By default, DotNetZip + allocates 4 buffer pairs per CPU core, so if your machine has 4 + cores, then the number of buffer pairs used will be 16. If you + accept the default value of this property, 128k, then the + ParallelDeflateOutputStream will use 16 * 2 * 128kb of buffer memory + in total, or 4mb, in blocks of 128kb. If you set this property to + 64kb, then the number will be 16 * 2 * 64kb of buffer memory, or + 2mb. + + + + + + + The CRC32 for the data that was written out, prior to compression. + + + This value is meaningful only after a call to Close(). + + + + + The total number of uncompressed bytes processed by the ParallelDeflateOutputStream. + + + This value is meaningful only after a call to Close(). + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream supports Read operations. + + + Always returns false. + + + + + Indicates whether the stream supports Write operations. + + + Returns true if the provided stream is writable. + + + + + Reading this property always throws a NotSupportedException. + + + + + Returns the current position of the output stream. + + + + Because the output gets written by a background thread, + the value may change asynchronously. Setting this + property always throws a NotSupportedException. + + + + + + Map from a distance to a distance code. + + + No side effects. _dist_code[256] and _dist_code[257] are never used. + + + + + Describes how to flush the current deflate operation. + + + The different FlushType values are useful when using a Deflate in a streaming application. + + + + No flush at all. + + + Closes the current block, but doesn't flush it to + the output. Used internally only in hypothetical + scenarios. This was supposed to be removed by Zlib, but it is + still in use in some edge cases. + + + + + Use this during compression to specify that all pending output should be + flushed to the output buffer and the output should be aligned on a byte + boundary. You might use this in a streaming communication scenario, so that + the decompressor can get all input data available so far. When using this + with a ZlibCodec, AvailableBytesIn will be zero after the call if + enough output space has been provided before the call. Flushing will + degrade compression and so it should be used only when necessary. + + + + + Use this during compression to specify that all output should be flushed, as + with FlushType.Sync, but also, the compression state should be reset + so that decompression can restart from this point if previous compressed + data has been damaged or if random access is desired. Using + FlushType.Full too often can significantly degrade the compression. + + + + Signals the end of the compression/decompression stream. + + + + The compression level to be used when using a DeflateStream or ZlibStream with CompressionMode.Compress. + + + + + None means that the data will be simply stored, with no change at all. + If you are producing ZIPs for use on Mac OSX, be aware that archives produced with CompressionLevel.None + cannot be opened with the default zip reader. Use a different CompressionLevel. + + + + + Same as None. + + + + + The fastest but least effective compression. + + + + + A synonym for BestSpeed. + + + + + A little slower, but better, than level 1. + + + + + A little slower, but better, than level 2. + + + + + A little slower, but better, than level 3. + + + + + A little slower than level 4, but with better compression. + + + + + The default compression level, with a good balance of speed and compression efficiency. + + + + + A synonym for Default. + + + + + Pretty good compression! + + + + + Better compression than Level7! + + + + + The "best" compression, where best means greatest reduction in size of the input data stream. + This is also the slowest compression. + + + + + A synonym for BestCompression. + + + + + Describes options for how the compression algorithm is executed. Different strategies + work better on different sorts of data. The strategy parameter can affect the compression + ratio and the speed of compression but not the correctness of the compresssion. + + + + + The default strategy is probably the best for normal data. + + + + + The Filtered strategy is intended to be used most effectively with data produced by a + filter or predictor. By this definition, filtered data consists mostly of small + values with a somewhat random distribution. In this case, the compression algorithm + is tuned to compress them better. The effect of Filtered is to force more Huffman + coding and less string matching; it is a half-step between Default and HuffmanOnly. + + + + + Using HuffmanOnly will force the compressor to do Huffman encoding only, with no + string matching. + + + + + An enum to specify the direction of transcoding - whether to compress or decompress. + + + + + Used to specify that the stream should compress the data. + + + + + Used to specify that the stream should decompress the data. + + + + + A general purpose exception class for exceptions in the Zlib library. + + + + + The ZlibException class captures exception information generated + by the Zlib library. + + + + + This ctor collects a message attached to the exception. + + the message for the exception. + + + + Performs an unsigned bitwise right shift with the specified number + + Number to operate on + Ammount of bits to shift + The resulting number from the shift operation + + + + Reads a number of characters from the current source TextReader and writes + the data to the target array at the specified index. + + + The source TextReader to read from + Contains the array of characteres read from the source TextReader. + The starting index of the target array. + The maximum number of characters to read from the source TextReader. + + + The number of characters read. The number will be less than or equal to + count depending on the data available in the source TextReader. Returns -1 + if the end of the stream is reached. + + + + + Computes an Adler-32 checksum. + + + The Adler checksum is similar to a CRC checksum, but faster to compute, though less + reliable. It is used in producing RFC1950 compressed streams. The Adler checksum + is a required part of the "ZLIB" standard. Applications will almost never need to + use this class directly. + + + + + + + Calculates the Adler32 checksum. + + + + This is used within ZLIB. You probably don't need to use this directly. + + + + To compute an Adler32 checksum on a byte array: + + var adler = Adler.Adler32(0, null, 0, 0); + adler = Adler.Adler32(adler, buffer, index, length); + + + + + + Encoder and Decoder for ZLIB and DEFLATE (IETF RFC1950 and RFC1951). + + + + This class compresses and decompresses data according to the Deflate algorithm + and optionally, the ZLIB format, as documented in RFC 1950 - ZLIB and RFC 1951 - DEFLATE. + + + + + The buffer from which data is taken. + + + + + An index into the InputBuffer array, indicating where to start reading. + + + + + The number of bytes available in the InputBuffer, starting at NextIn. + + + Generally you should set this to InputBuffer.Length before the first Inflate() or Deflate() call. + The class will update this number as calls to Inflate/Deflate are made. + + + + + Total number of bytes read so far, through all calls to Inflate()/Deflate(). + + + + + Buffer to store output data. + + + + + An index into the OutputBuffer array, indicating where to start writing. + + + + + The number of bytes available in the OutputBuffer, starting at NextOut. + + + Generally you should set this to OutputBuffer.Length before the first Inflate() or Deflate() call. + The class will update this number as calls to Inflate/Deflate are made. + + + + + Total number of bytes written to the output so far, through all calls to Inflate()/Deflate(). + + + + + used for diagnostics, when something goes wrong! + + + + + The compression level to use in this codec. Useful only in compression mode. + + + + + The number of Window Bits to use. + + + This gauges the size of the sliding window, and hence the + compression effectiveness as well as memory consumption. It's best to just leave this + setting alone if you don't know what it is. The maximum value is 15 bits, which implies + a 32k window. + + + + + The compression strategy to use. + + + This is only effective in compression. The theory offered by ZLIB is that different + strategies could potentially produce significant differences in compression behavior + for different data sets. Unfortunately I don't have any good recommendations for how + to set it differently. When I tested changing the strategy I got minimally different + compression performance. It's best to leave this property alone if you don't have a + good feel for it. Or, you may want to produce a test harness that runs through the + different strategy options and evaluates them on different file types. If you do that, + let me know your results. + + + + + Create a ZlibCodec. + + + If you use this default constructor, you will later have to explicitly call + InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress + or decompress. + + + + + Create a ZlibCodec that either compresses or decompresses. + + + Indicates whether the codec should compress (deflate) or decompress (inflate). + + + + + Initialize the inflation state. + + + It is not necessary to call this before using the ZlibCodec to inflate data; + It is implicitly called when you call the constructor. + + Z_OK if everything goes well. + + + + Initialize the inflation state with an explicit flag to + govern the handling of RFC1950 header bytes. + + + + By default, the ZLIB header defined in RFC 1950 is expected. If + you want to read a zlib stream you should specify true for + expectRfc1950Header. If you have a deflate stream, you will want to specify + false. It is only necessary to invoke this initializer explicitly if you + want to specify false. + + + whether to expect an RFC1950 header byte + pair when reading the stream of data to be inflated. + + Z_OK if everything goes well. + + + + Initialize the ZlibCodec for inflation, with the specified number of window bits. + + The number of window bits to use. If you need to ask what that is, + then you shouldn't be calling this initializer. + Z_OK if all goes well. + + + + Initialize the inflation state with an explicit flag to govern the handling of + RFC1950 header bytes. + + + + If you want to read a zlib stream you should specify true for + expectRfc1950Header. In this case, the library will expect to find a ZLIB + header, as defined in RFC + 1950, in the compressed stream. If you will be reading a DEFLATE or + GZIP stream, which does not have such a header, you will want to specify + false. + + + whether to expect an RFC1950 header byte pair when reading + the stream of data to be inflated. + The number of window bits to use. If you need to ask what that is, + then you shouldn't be calling this initializer. + Z_OK if everything goes well. + + + + Inflate the data in the InputBuffer, placing the result in the OutputBuffer. + + + You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and + AvailableBytesOut before calling this method. + + + + private void InflateBuffer() + { + int bufferSize = 1024; + byte[] buffer = new byte[bufferSize]; + ZlibCodec decompressor = new ZlibCodec(); + + Console.WriteLine("\n============================================"); + Console.WriteLine("Size of Buffer to Inflate: {0} bytes.", CompressedBytes.Length); + MemoryStream ms = new MemoryStream(DecompressedBytes); + + int rc = decompressor.InitializeInflate(); + + decompressor.InputBuffer = CompressedBytes; + decompressor.NextIn = 0; + decompressor.AvailableBytesIn = CompressedBytes.Length; + + decompressor.OutputBuffer = buffer; + + // pass 1: inflate + do + { + decompressor.NextOut = 0; + decompressor.AvailableBytesOut = buffer.Length; + rc = decompressor.Inflate(FlushType.None); + + if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) + throw new Exception("inflating: " + decompressor.Message); + + ms.Write(decompressor.OutputBuffer, 0, buffer.Length - decompressor.AvailableBytesOut); + } + while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); + + // pass 2: finish and flush + do + { + decompressor.NextOut = 0; + decompressor.AvailableBytesOut = buffer.Length; + rc = decompressor.Inflate(FlushType.Finish); + + if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) + throw new Exception("inflating: " + decompressor.Message); + + if (buffer.Length - decompressor.AvailableBytesOut > 0) + ms.Write(buffer, 0, buffer.Length - decompressor.AvailableBytesOut); + } + while (decompressor.AvailableBytesIn > 0 || decompressor.AvailableBytesOut == 0); + + decompressor.EndInflate(); + } + + + + The flush to use when inflating. + Z_OK if everything goes well. + + + + Ends an inflation session. + + + Call this after successively calling Inflate(). This will cause all buffers to be flushed. + After calling this you cannot call Inflate() without a intervening call to one of the + InitializeInflate() overloads. + + Z_OK if everything goes well. + + + + I don't know what this does! + + Z_OK if everything goes well. + + + + Initialize the ZlibCodec for deflation operation. + + + The codec will use the MAX window bits and the default level of compression. + + + + int bufferSize = 40000; + byte[] CompressedBytes = new byte[bufferSize]; + byte[] DecompressedBytes = new byte[bufferSize]; + + ZlibCodec compressor = new ZlibCodec(); + + compressor.InitializeDeflate(CompressionLevel.Default); + + compressor.InputBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToCompress); + compressor.NextIn = 0; + compressor.AvailableBytesIn = compressor.InputBuffer.Length; + + compressor.OutputBuffer = CompressedBytes; + compressor.NextOut = 0; + compressor.AvailableBytesOut = CompressedBytes.Length; + + while (compressor.TotalBytesIn != TextToCompress.Length && compressor.TotalBytesOut < bufferSize) + { + compressor.Deflate(FlushType.None); + } + + while (true) + { + int rc= compressor.Deflate(FlushType.Finish); + if (rc == ZlibConstants.Z_STREAM_END) break; + } + + compressor.EndDeflate(); + + + + Z_OK if all goes well. You generally don't need to check the return code. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel. + + + The codec will use the maximum window bits (15) and the specified + CompressionLevel. It will emit a ZLIB stream as it compresses. + + The compression level for the codec. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, + and the explicit flag governing whether to emit an RFC1950 header byte pair. + + + The codec will use the maximum window bits (15) and the specified CompressionLevel. + If you want to generate a zlib stream, you should specify true for + wantRfc1950Header. In this case, the library will emit a ZLIB + header, as defined in RFC + 1950, in the compressed stream. + + The compression level for the codec. + whether to emit an initial RFC1950 byte pair in the compressed stream. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, + and the specified number of window bits. + + + The codec will use the specified number of window bits and the specified CompressionLevel. + + The compression level for the codec. + the number of window bits to use. If you don't know what this means, don't use this method. + Z_OK if all goes well. + + + + Initialize the ZlibCodec for deflation operation, using the specified + CompressionLevel, the specified number of window bits, and the explicit flag + governing whether to emit an RFC1950 header byte pair. + + + The compression level for the codec. + whether to emit an initial RFC1950 byte pair in the compressed stream. + the number of window bits to use. If you don't know what this means, don't use this method. + Z_OK if all goes well. + + + + Deflate one batch of data. + + + You must have set InputBuffer and OutputBuffer before calling this method. + + + + private void DeflateBuffer(CompressionLevel level) + { + int bufferSize = 1024; + byte[] buffer = new byte[bufferSize]; + ZlibCodec compressor = new ZlibCodec(); + + Console.WriteLine("\n============================================"); + Console.WriteLine("Size of Buffer to Deflate: {0} bytes.", UncompressedBytes.Length); + MemoryStream ms = new MemoryStream(); + + int rc = compressor.InitializeDeflate(level); + + compressor.InputBuffer = UncompressedBytes; + compressor.NextIn = 0; + compressor.AvailableBytesIn = UncompressedBytes.Length; + + compressor.OutputBuffer = buffer; + + // pass 1: deflate + do + { + compressor.NextOut = 0; + compressor.AvailableBytesOut = buffer.Length; + rc = compressor.Deflate(FlushType.None); + + if (rc != ZlibConstants.Z_OK && rc != ZlibConstants.Z_STREAM_END) + throw new Exception("deflating: " + compressor.Message); + + ms.Write(compressor.OutputBuffer, 0, buffer.Length - compressor.AvailableBytesOut); + } + while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); + + // pass 2: finish and flush + do + { + compressor.NextOut = 0; + compressor.AvailableBytesOut = buffer.Length; + rc = compressor.Deflate(FlushType.Finish); + + if (rc != ZlibConstants.Z_STREAM_END && rc != ZlibConstants.Z_OK) + throw new Exception("deflating: " + compressor.Message); + + if (buffer.Length - compressor.AvailableBytesOut > 0) + ms.Write(buffer, 0, buffer.Length - compressor.AvailableBytesOut); + } + while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0); + + compressor.EndDeflate(); + + ms.Seek(0, SeekOrigin.Begin); + CompressedBytes = new byte[compressor.TotalBytesOut]; + ms.Read(CompressedBytes, 0, CompressedBytes.Length); + } + + + whether to flush all data as you deflate. Generally you will want to + use Z_NO_FLUSH here, in a series of calls to Deflate(), and then call EndDeflate() to + flush everything. + + Z_OK if all goes well. + + + + End a deflation session. + + + Call this after making a series of one or more calls to Deflate(). All buffers are flushed. + + Z_OK if all goes well. + + + + Reset a codec for another deflation session. + + + Call this to reset the deflation state. For example if a thread is deflating + non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first + block and before the next Deflate(None) of the second block. + + Z_OK if all goes well. + + + + Set the CompressionStrategy and CompressionLevel for a deflation session. + + the level of compression to use. + the strategy to use for compression. + Z_OK if all goes well. + + + + Set the dictionary to be used for either Inflation or Deflation. + + The dictionary bytes to use. + Z_OK if all goes well. + + + + The Adler32 checksum on the data transferred through the codec so far. You probably don't need to look at this. + + + + + A bunch of constants used in the Zlib interface. + + + + + The maximum number of window bits for the Deflate algorithm. + + + + + The default number of window bits for the Deflate algorithm. + + + + + indicates everything is A-OK + + + + + Indicates that the last operation reached the end of the stream. + + + + + The operation ended in need of a dictionary. + + + + + There was an error with the stream - not enough data, not open and readable, etc. + + + + + There was an error with the data - not enough data, bad data, etc. + + + + + There was an error with the working buffer. + + + + + The size of the working buffer used in the ZlibCodec class. Defaults to 8192 bytes. + + + + + The minimum size of the working buffer used in the ZlibCodec class. Currently it is 128 bytes. + + + + + Represents a Zlib stream for compression or decompression. + + + + + The ZlibStream is a Decorator on a . It adds ZLIB compression or decompression to any + stream. + + + Using this stream, applications can compress or decompress data via + stream Read() and Write() operations. Either compresssion or + decompression can occur through either reading or writing. The compression + format used is ZLIB, which is documented in IETF RFC 1950, "ZLIB Compressed + Data Format Specification version 3.3". This implementation of ZLIB always uses + DEFLATE as the compression method. (see IETF RFC 1951, "DEFLATE + Compressed Data Format Specification version 1.3.") + + + The ZLIB format allows for varying compression methods, window sizes, and dictionaries. + This implementation always uses the DEFLATE compression method, a preset dictionary, + and 15 window bits by default. + + + + This class is similar to , except that it adds the + RFC1950 header and trailer bytes to a compressed stream when compressing, or expects + the RFC1950 header and trailer bytes when decompressing. It is also similar to the + . + + + + + + + + Create a ZlibStream using the specified CompressionMode. + + + + + When mode is CompressionMode.Compress, the ZlibStream + will use the default compression level. The "captive" stream will be + closed when the ZlibStream is closed. + + + + + + This example uses a ZlibStream to compress a file, and writes the + compressed data to another file. + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (Stream compressor = new ZlibStream(raw, CompressionMode.Compress)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".zlib") + Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + The stream which will be read or written. + Indicates whether the ZlibStream will compress or decompress. + + + + Create a ZlibStream using the specified CompressionMode and + the specified CompressionLevel. + + + + + + When mode is CompressionMode.Decompress, the level parameter is ignored. + The "captive" stream will be closed when the ZlibStream is closed. + + + + + + This example uses a ZlibStream to compress data from a file, and writes the + compressed data to another file. + + + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (var raw = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (Stream compressor = new ZlibStream(raw, + CompressionMode.Compress, + CompressionLevel.BestCompression)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + } + + + + Using input As Stream = File.OpenRead(fileToCompress) + Using raw As FileStream = File.Create(fileToCompress & ".zlib") + Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + End Using + + + + The stream to be read or written while deflating or inflating. + Indicates whether the ZlibStream will compress or decompress. + A tuning knob to trade speed for effectiveness. + + + + Create a ZlibStream using the specified CompressionMode, and + explicitly specify whether the captive stream should be left open after + Deflation or Inflation. + + + + + + When mode is CompressionMode.Compress, the ZlibStream will use + the default compression level. + + + + This constructor allows the application to request that the captive stream + remain open after the deflation or inflation occurs. By default, after + Close() is called on the stream, the captive stream is also + closed. In some cases this is not desired, for example if the stream is a + that will be re-read after + compression. Specify true for the parameter to leave the stream + open. + + + + See the other overloads of this constructor for example code. + + + + + The stream which will be read or written. This is called the + "captive" stream in other places in this documentation. + Indicates whether the ZlibStream will compress or decompress. + true if the application would like the stream to remain + open after inflation/deflation. + + + + Create a ZlibStream using the specified CompressionMode + and the specified CompressionLevel, and explicitly specify + whether the stream should be left open after Deflation or Inflation. + + + + + + This constructor allows the application to request that the captive + stream remain open after the deflation or inflation occurs. By + default, after Close() is called on the stream, the captive + stream is also closed. In some cases this is not desired, for example + if the stream is a that will be + re-read after compression. Specify true for the parameter to leave the stream open. + + + + When mode is CompressionMode.Decompress, the level parameter is + ignored. + + + + + + + This example shows how to use a ZlibStream to compress the data from a file, + and store the result into another file. The filestream remains open to allow + additional data to be written to it. + + + using (var output = System.IO.File.Create(fileToCompress + ".zlib")) + { + using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress)) + { + using (Stream compressor = new ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true)) + { + byte[] buffer = new byte[WORKING_BUFFER_SIZE]; + int n; + while ((n= input.Read(buffer, 0, buffer.Length)) != 0) + { + compressor.Write(buffer, 0, n); + } + } + } + // can write additional data to the output stream here + } + + + Using output As FileStream = File.Create(fileToCompress & ".zlib") + Using input As Stream = File.OpenRead(fileToCompress) + Using compressor As Stream = New ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True) + Dim buffer As Byte() = New Byte(4096) {} + Dim n As Integer = -1 + Do While (n <> 0) + If (n > 0) Then + compressor.Write(buffer, 0, n) + End If + n = input.Read(buffer, 0, buffer.Length) + Loop + End Using + End Using + ' can write additional data to the output stream here. + End Using + + + + The stream which will be read or written. + + Indicates whether the ZlibStream will compress or decompress. + + + true if the application would like the stream to remain open after + inflation/deflation. + + + + A tuning knob to trade speed for effectiveness. This parameter is + effective only when mode is CompressionMode.Compress. + + + + + Dispose the stream. + + + + This may or may not result in a Close() call on the captive + stream. See the constructors that have a leaveOpen parameter + for more information. + + + This method may be invoked in two distinct scenarios. If disposing + == true, the method has been called directly or indirectly by a + user's code, for example via the public Dispose() method. In this + case, both managed and unmanaged resources can be referenced and + disposed. If disposing == false, the method has been called by the + runtime from inside the object finalizer and this method should not + reference other objects; in that case only unmanaged resources must + be referenced or disposed. + + + + indicates whether the Dispose method was invoked by user code. + + + + + Flush the stream. + + + + + Read data from the stream. + + + + + + If you wish to use the ZlibStream to compress data while reading, + you can create a ZlibStream with CompressionMode.Compress, + providing an uncompressed data stream. Then call Read() on that + ZlibStream, and the data read will be compressed. If you wish to + use the ZlibStream to decompress data while reading, you can create + a ZlibStream with CompressionMode.Decompress, providing a + readable compressed data stream. Then call Read() on that + ZlibStream, and the data will be decompressed as it is read. + + + + A ZlibStream can be used for Read() or Write(), but + not both. + + + + + + The buffer into which the read data should be placed. + + + the offset within that data array to put the first byte read. + + the number of bytes to read. + + the number of bytes read + + + + Calling this method always throws a . + + + The offset to seek to.... + IF THIS METHOD ACTUALLY DID ANYTHING. + + + The reference specifying how to apply the offset.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + nothing. This method always throws. + + + + Calling this method always throws a . + + + The new value for the stream length.... IF + THIS METHOD ACTUALLY DID ANYTHING. + + + + + Write data to the stream. + + + + + + If you wish to use the ZlibStream to compress data while writing, + you can create a ZlibStream with CompressionMode.Compress, + and a writable output stream. Then call Write() on that + ZlibStream, providing uncompressed data as input. The data sent to + the output stream will be the compressed form of the data written. If you + wish to use the ZlibStream to decompress data while writing, you + can create a ZlibStream with CompressionMode.Decompress, and a + writable output stream. Then call Write() on that stream, + providing previously compressed data. The data sent to the output stream + will be the decompressed form of the data written. + + + + A ZlibStream can be used for Read() or Write(), but not both. + + + The buffer holding data to write to the stream. + the offset within that data array to find the first byte to write. + the number of bytes to write. + + + + Compress a string into a byte array using ZLIB. + + + + Uncompress it with . + + + + + + + + A string to compress. The string will first be encoded + using UTF8, then compressed. + + + The string in compressed form + + + + Compress a byte array into a new byte array using ZLIB. + + + + Uncompress it with . + + + + + + + A buffer to compress. + + + The data in compressed form + + + + Uncompress a ZLIB-compressed byte array into a single string. + + + + + + + A buffer containing ZLIB-compressed data. + + + The uncompressed string + + + + Uncompress a ZLIB-compressed byte array into a byte array. + + + + + + + A buffer containing ZLIB-compressed data. + + + The data in uncompressed form + + + + This property sets the flush behavior on the stream. + Sorry, though, not sure exactly how to describe all the various settings. + + + + + The size of the working buffer for the compression codec. + + + + + The working buffer is used for all stream operations. The default size is + 1024 bytes. The minimum size is 128 bytes. You may get better performance + with a larger buffer. Then again, you might not. You would have to test + it. + + + + Set this before the first call to Read() or Write() on the + stream. If you try to set it afterwards, it will throw. + + + + + Returns the total number of bytes input so far. + + + Returns the total number of bytes output so far. + + + + Indicates whether the stream can be read. + + + The return value depends on whether the captive stream supports reading. + + + + + Indicates whether the stream supports Seek operations. + + + Always returns false. + + + + + Indicates whether the stream can be written. + + + The return value depends on whether the captive stream supports writing. + + + + + Reading this property always throws a . + + + + + The position of the stream pointer. + + + + Setting this property always throws a . Reading will return the total bytes + written out, if used in writing, or the total bytes read in, if used in + reading. The count may refer to compressed bytes or uncompressed bytes, + depending on how you've used the stream. + + + + + Computes a CRC-32. The CRC-32 algorithm is parameterized - you + can set the polynomial and enable or disable bit + reversal. This can be used for GZIP, BZip2, or ZIP. + + + This type is used internally by DotNetZip; it is generally not used + directly by applications wishing to create, read, or manipulate zip + archive files. + + + + + Returns the CRC32 for the specified stream. + + The stream over which to calculate the CRC32 + the CRC32 calculation + + + + Returns the CRC32 for the specified stream, and writes the input into the + output stream. + + The stream over which to calculate the CRC32 + The stream into which to deflate the input + the CRC32 calculation + + + + Get the CRC32 for the given (word,byte) combo. This is a + computation defined by PKzip for PKZIP 2.0 (weak) encryption. + + The word to start with. + The byte to combine it with. + The CRC-ized result. + + + + Update the value for the running CRC32 using the given block of bytes. + This is useful when using the CRC32() class in a Stream. + + block of bytes to slurp + starting point in the block + how many bytes within the block to slurp + + + + Process one byte in the CRC. + + the byte to include into the CRC . + + + + Process a run of N identical bytes into the CRC. + + + + This method serves as an optimization for updating the CRC when a + run of identical bytes is found. Rather than passing in a buffer of + length n, containing all identical bytes b, this method accepts the + byte value and the length of the (virtual) buffer - the length of + the run. + + + the byte to include into the CRC. + the number of times that byte should be repeated. + + + + Combines the given CRC32 value with the current running total. + + + This is useful when using a divide-and-conquer approach to + calculating a CRC. Multiple threads can each calculate a + CRC32 on a segment of the data, and then combine the + individual CRC32 values at the end. + + the crc value to be combined with this one + the length of data the CRC value was calculated on + + + + Create an instance of the CRC32 class using the default settings: no + bit reversal, and a polynomial of 0xEDB88320. + + + + + Create an instance of the CRC32 class, specifying whether to reverse + data bits or not. + + + specify true if the instance should reverse data bits. + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here. In the CRC-32 used by GZIP and PKZIP, the bits are not + reversed; Therefore if you want a CRC32 with compatibility with + those, you should pass false. + + + + + + Create an instance of the CRC32 class, specifying the polynomial and + whether to reverse data bits or not. + + + The polynomial to use for the CRC, expressed in the reversed (LSB) + format: the highest ordered bit in the polynomial value is the + coefficient of the 0th power; the second-highest order bit is the + coefficient of the 1 power, and so on. Expressed this way, the + polynomial for the CRC-32C used in IEEE 802.3, is 0xEDB88320. + + + specify true if the instance should reverse data bits. + + + + + In the CRC-32 used by BZip2, the bits are reversed. Therefore if you + want a CRC32 with compatibility with BZip2, you should pass true + here for the reverseBits parameter. In the CRC-32 used by + GZIP and PKZIP, the bits are not reversed; Therefore if you want a + CRC32 with compatibility with those, you should pass false for the + reverseBits parameter. + + + + + + Reset the CRC-32 class - clear the CRC "remainder register." + + + + Use this when employing a single instance of this class to compute + multiple, distinct CRCs on multiple, distinct data blocks. + + + + + + Indicates the total number of bytes applied to the CRC. + + + + + Indicates the current CRC for all blocks slurped in. + + + + + A Stream that calculates a CRC32 (a checksum) on all bytes read, + or on all bytes written. + + + + + This class can be used to verify the CRC of a ZipEntry when + reading from a stream, or to calculate a CRC when writing to a + stream. The stream should be used to either read, or write, but + not both. If you intermix reads and writes, the results are not + defined. + + + + This class is intended primarily for use internally by the + DotNetZip library. + + + + + + The default constructor. + + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). The stream uses the default CRC32 + algorithm, which implies a polynomial of 0xEDB88320. + + + The underlying stream + + + + The constructor allows the caller to specify how to handle the + underlying stream at close. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read. + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + Instances returned from this constructor will leave the underlying + stream open upon Close(). + + + The underlying stream + The length of the stream to slurp + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(). + + + + The stream uses the default CRC32 algorithm, which implies a + polynomial of 0xEDB88320. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + + + + A constructor allowing the specification of the length of the stream + to read, as well as whether to keep the underlying stream open upon + Close(), and the CRC32 instance to use. + + + + The stream uses the specified CRC32 instance, which allows the + application to specify how the CRC gets calculated. + + + The underlying stream + The length of the stream to slurp + true to leave the underlying stream + open upon close of the CrcCalculatorStream; false otherwise. + the CRC32 instance to use to calculate the CRC32 + + + + Read from the stream + + the buffer to read + the offset at which to start + the number of bytes to read + the number of bytes actually read + + + + Write to the stream. + + the buffer from which to write + the offset at which to start writing + the number of bytes to write + + + + Flush the stream. + + + + + Seeking is not supported on this stream. This method always throws + + + N/A + N/A + N/A + + + + This method always throws + + + N/A + + + + Closes the stream. + + + + + Gets the total number of bytes run through the CRC32 calculator. + + + + This is either the total number of bytes read, or the total number of + bytes written, depending on the direction of this stream. + + + + + Provides the current CRC for all blocks slurped in. + + + + The running total of the CRC is kept as data is written or read + through the stream. read this property after all reads or writes to + get an accurate CRC for the entire stream. + + + + + + Indicates whether the underlying stream will be left open when the + CrcCalculatorStream is Closed. + + + + Set this at any point before calling . + + + + + + Indicates whether the stream supports reading. + + + + + Indicates whether the stream supports seeking. + + + + Always returns false. + + + + + + Indicates whether the stream supports writing. + + + + + Returns the length of the underlying stream. + + + + + The getter for this property returns the total bytes read. + If you use the setter, it will throw + . + + + + From fa2fec5e238736b47ce0aab61b750fb2fcd8cdca Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Mon, 27 Jul 2015 13:03:21 -0700 Subject: [PATCH 05/21] new hooker and resharper rules --- FFXIVAPP.Client/App.cs | 58 +- FFXIVAPP.Client/AppBootstrapper.cs | 30 +- FFXIVAPP.Client/FFXIVAPP.Client.csproj | 6 +- FFXIVAPP.Client/Helpers/AppContextHelper.cs | 90 +- FFXIVAPP.Client/Initializer.cs | 14 +- .../Interop/UnsafeNativeMethods.cs | 5 +- FFXIVAPP.Client/Memory/ActorWorker.cs | 32 +- FFXIVAPP.Client/Memory/ChatCleaner.cs | 54 +- FFXIVAPP.Client/Memory/ChatLogWorker.cs | 30 +- FFXIVAPP.Client/Memory/InventoryWorker.cs | 30 +- FFXIVAPP.Client/Memory/MemoryHandler.cs | 146 +- FFXIVAPP.Client/Memory/PartyInfoWorker.cs | 70 +- FFXIVAPP.Client/Memory/PlayerInfoWorker.cs | 68 +- FFXIVAPP.Client/Memory/SigScanner.cs | 100 +- FFXIVAPP.Client/Memory/TargetWorker.cs | 66 +- FFXIVAPP.Client/Network/IPHeader.cs | 2 +- FFXIVAPP.Client/Network/NetworkWorker.cs | 24 +- FFXIVAPP.Client/Network/TCPRow.cs | 18 +- FFXIVAPP.Client/Network/TCPTable.cs | 8 +- FFXIVAPP.Client/PluginHost.cs | 52 +- FFXIVAPP.Client/ShellView.xaml.cs | 20 +- FFXIVAPP.Client/ShellViewModel.cs | 18 +- .../Utilities/MicroTimerEventArgs.cs | 3 - FFXIVAPP.Client/ViewModels/AboutViewModel.cs | 40 +- .../ViewModels/DefaultViewModel.cs | 12 +- FFXIVAPP.Client/ViewModels/MainViewModel.cs | 42 +- .../ViewModels/SettingsViewModel.cs | 26 +- FFXIVAPP.Client/ViewModels/UpdateViewModel.cs | 22 +- distribution/FFXIVAPP.Client.exe | Bin 1848320 -> 1847808 bytes distribution/FFXIVAPP.Hooker.dll | Bin 0 -> 55296 bytes distribution/FFXIVAPP.Updater.exe | Bin 489472 -> 489472 bytes distribution/SharpDX.D3DCompiler.dll | Bin 44032 -> 0 bytes distribution/SharpDX.D3DCompiler.xml | 4882 ---- distribution/SharpDX.DXGI.dll | Bin 90624 -> 0 bytes distribution/SharpDX.DXGI.xml | 4365 --- distribution/SharpDX.Direct3D10.dll | Bin 179200 -> 0 bytes distribution/SharpDX.Direct3D10.xml | 23120 ---------------- distribution/SharpDX.Direct3D11.Effects.dll | Bin 58880 -> 0 bytes distribution/SharpDX.Direct3D11.Effects.xml | 5129 ---- distribution/SharpDX.Direct3D11.dll | Bin 171520 -> 0 bytes distribution/SharpDX.Direct3D11.xml | 22957 --------------- .../sharpdx_direct3d11_effects_x64.dll | Bin 345600 -> 0 bytes .../sharpdx_direct3d11_effects_x86.dll | Bin 286208 -> 0 bytes 43 files changed, 540 insertions(+), 60999 deletions(-) create mode 100644 distribution/FFXIVAPP.Hooker.dll delete mode 100644 distribution/SharpDX.D3DCompiler.dll delete mode 100644 distribution/SharpDX.D3DCompiler.xml delete mode 100644 distribution/SharpDX.DXGI.dll delete mode 100644 distribution/SharpDX.DXGI.xml delete mode 100644 distribution/SharpDX.Direct3D10.dll delete mode 100644 distribution/SharpDX.Direct3D10.xml delete mode 100644 distribution/SharpDX.Direct3D11.Effects.dll delete mode 100644 distribution/SharpDX.Direct3D11.Effects.xml delete mode 100644 distribution/SharpDX.Direct3D11.dll delete mode 100644 distribution/SharpDX.Direct3D11.xml delete mode 100644 distribution/sharpdx_direct3d11_effects_x64.dll delete mode 100644 distribution/sharpdx_direct3d11_effects_x86.dll diff --git a/FFXIVAPP.Client/App.cs b/FFXIVAPP.Client/App.cs index d97ec94e..6f355015 100644 --- a/FFXIVAPP.Client/App.cs +++ b/FFXIVAPP.Client/App.cs @@ -53,35 +53,6 @@ namespace FFXIVAPP.Client { public partial class App { - #region Logger - - private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private static List _availableAudioDevices; - private static IEnumerable _availableNetworkInterfaces; - - #endregion - - #region Property Bindings - - internal static PluginHost Plugins - { - get { return PluginHost.Instance; } - } - - internal static IEnumerable AvailableAudioDevices - { - get { return _availableAudioDevices ?? (_availableAudioDevices = new List(DirectSoundOut.Devices.Where(d => d.Guid != Guid.Empty))); } - } - - internal static IEnumerable AvailableNetworkInterfaces - { - get { return _availableNetworkInterfaces ?? (_availableNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces()); } - } - - public static string[] MArgs { get; private set; } - - #endregion - private App() { Startup += ApplicationStartup; @@ -283,5 +254,34 @@ private static void SettingsSettingChanging(object sender, SettingChangingEventA { Logging.Log(Logger, String.Format("SettingChanging : [{0},{1}]", e.SettingKey, e.NewValue)); } + + #region Logger + + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + private static List _availableAudioDevices; + private static IEnumerable _availableNetworkInterfaces; + + #endregion + + #region Property Bindings + + internal static PluginHost Plugins + { + get { return PluginHost.Instance; } + } + + internal static IEnumerable AvailableAudioDevices + { + get { return _availableAudioDevices ?? (_availableAudioDevices = new List(DirectSoundOut.Devices.Where(d => d.Guid != Guid.Empty))); } + } + + internal static IEnumerable AvailableNetworkInterfaces + { + get { return _availableNetworkInterfaces ?? (_availableNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces()); } + } + + public static string[] MArgs { get; private set; } + + #endregion } } diff --git a/FFXIVAPP.Client/AppBootstrapper.cs b/FFXIVAPP.Client/AppBootstrapper.cs index e6b20691..0b1675d1 100644 --- a/FFXIVAPP.Client/AppBootstrapper.cs +++ b/FFXIVAPP.Client/AppBootstrapper.cs @@ -49,21 +49,6 @@ internal class AppBootstrapper : INotifyPropertyChanged #endregion - #region Property Bindings - - private static AppBootstrapper _instance; - - public static AppBootstrapper Instance - { - get { return _instance ?? (_instance = new AppBootstrapper()); } - } - - #endregion - - #region Declarations - - #endregion - /*main entry to app * used for: * initializing settings @@ -203,6 +188,21 @@ private void ProcessDetachCheckTimerOnElapsed(object sender, ElapsedEventArgs el } } + #region Property Bindings + + private static AppBootstrapper _instance; + + public static AppBootstrapper Instance + { + get { return _instance ?? (_instance = new AppBootstrapper()); } + } + + #endregion + + #region Declarations + + #endregion + #region Loading Functions #endregion diff --git a/FFXIVAPP.Client/FFXIVAPP.Client.csproj b/FFXIVAPP.Client/FFXIVAPP.Client.csproj index c8cfbf51..0d0ae220 100644 --- a/FFXIVAPP.Client/FFXIVAPP.Client.csproj +++ b/FFXIVAPP.Client/FFXIVAPP.Client.csproj @@ -405,9 +405,9 @@ - - {23178a3d-2ac0-419a-b1b6-59ca45191270} - Direct3DHook + + {d425cf86-abeb-44fc-9413-318b4c1617b5} + FFXIVAPP.Hooker diff --git a/FFXIVAPP.Client/Helpers/AppContextHelper.cs b/FFXIVAPP.Client/Helpers/AppContextHelper.cs index dee0b729..d7ee761b 100644 --- a/FFXIVAPP.Client/Helpers/AppContextHelper.cs +++ b/FFXIVAPP.Client/Helpers/AppContextHelper.cs @@ -47,6 +47,51 @@ public class AppContextHelper #endregion + public void RaiseNewPlayerEntity(PlayerEntity playerEntity) + { + CurrentUserStats = playerEntity; + // THIRD PARTY + PluginHost.Instance.RaiseNewPlayerEntity(playerEntity); + } + + public void RaiseNewTargetEntity(TargetEntity targetEntity) + { + // THIRD PARTY + PluginHost.Instance.RaiseNewTargetEntity(targetEntity); + } + + public void RaiseNewPartyAddedEntries(List keys) + { + if (!keys.Any()) + { + return; + } + // THIRD PARTY + PluginHost.Instance.RaiseNewPartyAddedEntries(keys); + } + + public void RaiseNewPartyEntries(ConcurrentDictionary partyEntries) + { + // THIRD PARTY + PluginHost.Instance.RaiseNewPartyEntries(partyEntries); + } + + public void RaiseNewPartyRemovedEntries(List keys) + { + if (!keys.Any()) + { + return; + } + // THIRD PARTY + PluginHost.Instance.RaiseNewPartyRemovedEntries(keys); + } + + public void RaiseNewInventoryEntries(List inventoryEntities) + { + // THIRD PARTY + PluginHost.Instance.RaiseNewInventoryEntries(inventoryEntities); + } + #region Property Backings private static AppContextHelper _instance; @@ -199,50 +244,5 @@ public void RaiseNewPCRemovedEntries(List keys) } #endregion - - public void RaiseNewPlayerEntity(PlayerEntity playerEntity) - { - CurrentUserStats = playerEntity; - // THIRD PARTY - PluginHost.Instance.RaiseNewPlayerEntity(playerEntity); - } - - public void RaiseNewTargetEntity(TargetEntity targetEntity) - { - // THIRD PARTY - PluginHost.Instance.RaiseNewTargetEntity(targetEntity); - } - - public void RaiseNewPartyAddedEntries(List keys) - { - if (!keys.Any()) - { - return; - } - // THIRD PARTY - PluginHost.Instance.RaiseNewPartyAddedEntries(keys); - } - - public void RaiseNewPartyEntries(ConcurrentDictionary partyEntries) - { - // THIRD PARTY - PluginHost.Instance.RaiseNewPartyEntries(partyEntries); - } - - public void RaiseNewPartyRemovedEntries(List keys) - { - if (!keys.Any()) - { - return; - } - // THIRD PARTY - PluginHost.Instance.RaiseNewPartyRemovedEntries(keys); - } - - public void RaiseNewInventoryEntries(List inventoryEntities) - { - // THIRD PARTY - PluginHost.Instance.RaiseNewInventoryEntries(inventoryEntities); - } } } diff --git a/FFXIVAPP.Client/Initializer.cs b/FFXIVAPP.Client/Initializer.cs index 219797e1..9b1a4637 100644 --- a/FFXIVAPP.Client/Initializer.cs +++ b/FFXIVAPP.Client/Initializer.cs @@ -40,9 +40,6 @@ using System.Text.RegularExpressions; using System.Windows; using System.Xml.Linq; -using Direct3DHook; -using Direct3DHook.Hook; -using Direct3DHook.Interface; using FFXIVAPP.Client.Helpers; using FFXIVAPP.Client.Memory; using FFXIVAPP.Client.Models; @@ -54,6 +51,9 @@ using FFXIVAPP.Common.Core.Constant; using FFXIVAPP.Common.Helpers; using FFXIVAPP.Common.RegularExpressions; +using FFXIVAPP.Hooker; +using FFXIVAPP.Hooker.Hook; +using FFXIVAPP.Hooker.Interface; using Newtonsoft.Json.Linq; using NLog; @@ -67,6 +67,8 @@ internal static class Initializer #endregion + private static HookProcess HookProcess; + /// /// public static void SetupCurrentUICulture() @@ -990,8 +992,6 @@ public static void RefreshNetworkWorker() _networkWorker.StartScanning(); } - private static HookProcess HookProcess; - public static void HookDirectX() { if (Constants.ProcessModel == null) @@ -1006,7 +1006,7 @@ public static void HookDirectX() { var hookConfig = new HookConfig { - Direct3DVersion = Constants.ProcessModel.IsWin64 ? Direct3DVersion.Direct3D11 : Direct3DVersion.AutoDetect, + Direct3DVersion = Direct3DVersion.AutoDetect, ShowFPS = true }; var hookInterface = new HookInterface(); @@ -1020,7 +1020,7 @@ public static void HookDirectX() private static void HookInterfaceRemoteMessage(MessageReceivedEventArgs message) { - DispatcherHelper.Invoke(() => MessageBox.Show(message.Message)); + // DispatcherHelper.Invoke(() => MessageBox.Show(message.Message)); } public static void UnHookDirectX() diff --git a/FFXIVAPP.Client/Interop/UnsafeNativeMethods.cs b/FFXIVAPP.Client/Interop/UnsafeNativeMethods.cs index fe4eb521..f3908bab 100644 --- a/FFXIVAPP.Client/Interop/UnsafeNativeMethods.cs +++ b/FFXIVAPP.Client/Interop/UnsafeNativeMethods.cs @@ -28,11 +28,8 @@ // POSSIBILITY OF SUCH DAMAGE. using System; -using System.Collections.Generic; -using System.IO; using System.Net.NetworkInformation; using System.Runtime.InteropServices; -using System.Text; namespace FFXIVAPP.Client.Interop { @@ -155,4 +152,4 @@ public struct TCPTable #endregion } -} \ No newline at end of file +} diff --git a/FFXIVAPP.Client/Memory/ActorWorker.cs b/FFXIVAPP.Client/Memory/ActorWorker.cs index c0976d52..53d1c6e5 100644 --- a/FFXIVAPP.Client/Memory/ActorWorker.cs +++ b/FFXIVAPP.Client/Memory/ActorWorker.cs @@ -52,12 +52,27 @@ internal class ActorWorker : INotifyPropertyChanged, IDisposable #endregion + public ActorWorker() + { + _scanTimer = new Timer(100); + _scanTimer.Elapsed += ScanTimerElapsed; + } + #region Property Bindings public bool ReferencesSet { get; set; } #endregion + #region Implementation of IDisposable + + public void Dispose() + { + _scanTimer.Elapsed -= ScanTimerElapsed; + } + + #endregion + #region Declarations private readonly Timer _scanTimer; @@ -65,12 +80,6 @@ internal class ActorWorker : INotifyPropertyChanged, IDisposable #endregion - public ActorWorker() - { - _scanTimer = new Timer(100); - _scanTimer.Elapsed += ScanTimerElapsed; - } - #region Timer Controls /// @@ -147,7 +156,7 @@ private void ScanTimerElapsed(object sender, ElapsedEventArgs e) var endianSize = MemoryHandler.Instance.ProcessModel.IsWin64 ? 8 : 4; const int limit = 1372; - var characterAddressMap = MemoryHandler.Instance.GetByteArray(MemoryHandler.Instance.SigScanner.Locations["CHARMAP"], endianSize * limit); + var characterAddressMap = MemoryHandler.Instance.GetByteArray(MemoryHandler.Instance.SigScanner.Locations["CHARMAP"], endianSize * limit); var uniqueAddresses = new Dictionary(); @@ -397,14 +406,5 @@ private void RaisePropertyChanged([CallerMemberName] string caller = "") } #endregion - - #region Implementation of IDisposable - - public void Dispose() - { - _scanTimer.Elapsed -= ScanTimerElapsed; - } - - #endregion } } diff --git a/FFXIVAPP.Client/Memory/ChatCleaner.cs b/FFXIVAPP.Client/Memory/ChatCleaner.cs index 38efa0d0..e9e820ef 100644 --- a/FFXIVAPP.Client/Memory/ChatCleaner.cs +++ b/FFXIVAPP.Client/Memory/ChatCleaner.cs @@ -49,33 +49,6 @@ internal class ChatCleaner : INotifyPropertyChanged #endregion - #region Property Bindings - - private static bool _colorFound; - private string _result; - - private bool ColorFound - { - get { return _colorFound; } - set - { - _colorFound = value; - RaisePropertyChanged(); - } - } - - public string Result - { - get { return _result; } - private set - { - _result = value; - RaisePropertyChanged(); - } - } - - #endregion - #region Declarations private static readonly Regex Checks = new Regex(@"^00(20|21|23|27|28|46|47|48|49|5C)$", SharedRegEx.DefaultOptions); @@ -237,6 +210,33 @@ private string ProcessName(string cleaned) return line; } + #region Property Bindings + + private static bool _colorFound; + private string _result; + + private bool ColorFound + { + get { return _colorFound; } + set + { + _colorFound = value; + RaisePropertyChanged(); + } + } + + public string Result + { + get { return _result; } + private set + { + _result = value; + RaisePropertyChanged(); + } + } + + #endregion + #region Implementation of INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged = delegate { }; diff --git a/FFXIVAPP.Client/Memory/ChatLogWorker.cs b/FFXIVAPP.Client/Memory/ChatLogWorker.cs index c5f9bcc3..a7eaf72e 100644 --- a/FFXIVAPP.Client/Memory/ChatLogWorker.cs +++ b/FFXIVAPP.Client/Memory/ChatLogWorker.cs @@ -49,12 +49,27 @@ internal class ChatLogWorker : INotifyPropertyChanged, IDisposable #endregion + public ChatLogWorker() + { + _scanTimer = new Timer(250); + _scanTimer.Elapsed += ScanTimerElapsed; + } + #region Property Bindings private long ChatPointerMap { get; set; } #endregion + #region Implementation of IDisposable + + public void Dispose() + { + _scanTimer.Elapsed -= ScanTimerElapsed; + } + + #endregion + #region Declarations private static readonly Logger Tracer = Logger; @@ -71,12 +86,6 @@ internal class ChatLogWorker : INotifyPropertyChanged, IDisposable #endregion - public ChatLogWorker() - { - _scanTimer = new Timer(250); - _scanTimer.Elapsed += ScanTimerElapsed; - } - #region Timer Controls /// @@ -256,14 +265,5 @@ private void RaisePropertyChanged([CallerMemberName] string caller = "") } #endregion - - #region Implementation of IDisposable - - public void Dispose() - { - _scanTimer.Elapsed -= ScanTimerElapsed; - } - - #endregion } } diff --git a/FFXIVAPP.Client/Memory/InventoryWorker.cs b/FFXIVAPP.Client/Memory/InventoryWorker.cs index f89dc798..5297ba47 100644 --- a/FFXIVAPP.Client/Memory/InventoryWorker.cs +++ b/FFXIVAPP.Client/Memory/InventoryWorker.cs @@ -51,6 +51,21 @@ internal class InventoryWorker : INotifyPropertyChanged, IDisposable #endregion + public InventoryWorker() + { + _scanTimer = new Timer(1000); + _scanTimer.Elapsed += ScanTimerElapsed; + } + + #region Implementation of IDisposable + + public void Dispose() + { + _scanTimer.Elapsed -= ScanTimerElapsed; + } + + #endregion + #region Property Bindings public long InventoryPointerMap { get; set; } @@ -65,12 +80,6 @@ internal class InventoryWorker : INotifyPropertyChanged, IDisposable #endregion - public InventoryWorker() - { - _scanTimer = new Timer(1000); - _scanTimer.Elapsed += ScanTimerElapsed; - } - #region Timer Controls /// @@ -270,14 +279,5 @@ private void RaisePropertyChanged([CallerMemberName] string caller = "") } #endregion - - #region Implementation of IDisposable - - public void Dispose() - { - _scanTimer.Elapsed -= ScanTimerElapsed; - } - - #endregion } } diff --git a/FFXIVAPP.Client/Memory/MemoryHandler.cs b/FFXIVAPP.Client/Memory/MemoryHandler.cs index 64fc9053..3bb9b934 100644 --- a/FFXIVAPP.Client/Memory/MemoryHandler.cs +++ b/FFXIVAPP.Client/Memory/MemoryHandler.cs @@ -47,79 +47,6 @@ public class MemoryHandler : INotifyPropertyChanged #endregion - #region Property Bindings - - private static MemoryHandler _instance; - private Dictionary> _pointerPaths; - private IntPtr _processHandle; - private ProcessModel _processModel; - private SigScanner _sigScanner; - - public ProcessModel ProcessModel - { - get { return _processModel; } - set - { - _processModel = value; - RaisePropertyChanged(); - } - } - - public IntPtr ProcessHandle - { - get { return _processHandle; } - set - { - _processHandle = value; - RaisePropertyChanged(); - } - } - - public static MemoryHandler Instance - { - get { return _instance ?? (_instance = new MemoryHandler(null)); } - set { _instance = value; } - } - - public SigScanner SigScanner - { - get { return _sigScanner ?? (_sigScanner = new SigScanner()); } - set - { - if (_sigScanner == null) - { - _sigScanner = new SigScanner(); - } - _sigScanner = value; - } - } - - public Dictionary> PointerPaths - { - get { return _pointerPaths ?? (_pointerPaths = new Dictionary>()); } - set - { - _pointerPaths = value; - RaisePropertyChanged(); - } - } - - #endregion - - #region Private Structs - - public struct MemoryBlock - { - public long Length; - public long Start; - } - - #endregion - - #region Declarations - - #endregion - /// /// /// @@ -386,6 +313,79 @@ public T GetStructure(long address, int offset = 0) return retValue; } + #region Private Structs + + public struct MemoryBlock + { + public long Length; + public long Start; + } + + #endregion + + #region Property Bindings + + private static MemoryHandler _instance; + private Dictionary> _pointerPaths; + private IntPtr _processHandle; + private ProcessModel _processModel; + private SigScanner _sigScanner; + + public ProcessModel ProcessModel + { + get { return _processModel; } + set + { + _processModel = value; + RaisePropertyChanged(); + } + } + + public IntPtr ProcessHandle + { + get { return _processHandle; } + set + { + _processHandle = value; + RaisePropertyChanged(); + } + } + + public static MemoryHandler Instance + { + get { return _instance ?? (_instance = new MemoryHandler(null)); } + set { _instance = value; } + } + + public SigScanner SigScanner + { + get { return _sigScanner ?? (_sigScanner = new SigScanner()); } + set + { + if (_sigScanner == null) + { + _sigScanner = new SigScanner(); + } + _sigScanner = value; + } + } + + public Dictionary> PointerPaths + { + get { return _pointerPaths ?? (_pointerPaths = new Dictionary>()); } + set + { + _pointerPaths = value; + RaisePropertyChanged(); + } + } + + #endregion + + #region Declarations + + #endregion + #region Implementation of INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged = delegate { }; diff --git a/FFXIVAPP.Client/Memory/PartyInfoWorker.cs b/FFXIVAPP.Client/Memory/PartyInfoWorker.cs index cfe4a3dc..52e8a4d4 100644 --- a/FFXIVAPP.Client/Memory/PartyInfoWorker.cs +++ b/FFXIVAPP.Client/Memory/PartyInfoWorker.cs @@ -50,42 +50,17 @@ internal class PartyInfoWorker : INotifyPropertyChanged, IDisposable #endregion - #region Property Bindings - - private long PartyInfoMap { get; set; } - private long PartyCountMap { get; set; } - - public bool ReferencesSet { get; set; } - - #endregion - - #region Declarations - - private readonly Timer _scanTimer; - private bool _isScanning; - - #endregion - public PartyInfoWorker() { _scanTimer = new Timer(1000); _scanTimer.Elapsed += ScanTimerElapsed; } - #region Timer Controls - - /// - /// - public void StartScanning() - { - _scanTimer.Enabled = true; - } + #region Implementation of IDisposable - /// - /// - public void StopScanning() + public void Dispose() { - _scanTimer.Enabled = false; + _scanTimer.Elapsed -= ScanTimerElapsed; } #endregion @@ -237,22 +212,47 @@ private void ScanTimerElapsed(object sender, ElapsedEventArgs e) #endregion - #region Implementation of INotifyPropertyChanged + #region Property Bindings - public event PropertyChangedEventHandler PropertyChanged = delegate { }; + private long PartyInfoMap { get; set; } + private long PartyCountMap { get; set; } - private void RaisePropertyChanged([CallerMemberName] string caller = "") + public bool ReferencesSet { get; set; } + + #endregion + + #region Declarations + + private readonly Timer _scanTimer; + private bool _isScanning; + + #endregion + + #region Timer Controls + + /// + /// + public void StartScanning() { - PropertyChanged(this, new PropertyChangedEventArgs(caller)); + _scanTimer.Enabled = true; + } + + /// + /// + public void StopScanning() + { + _scanTimer.Enabled = false; } #endregion - #region Implementation of IDisposable + #region Implementation of INotifyPropertyChanged - public void Dispose() + public event PropertyChangedEventHandler PropertyChanged = delegate { }; + + private void RaisePropertyChanged([CallerMemberName] string caller = "") { - _scanTimer.Elapsed -= ScanTimerElapsed; + PropertyChanged(this, new PropertyChangedEventArgs(caller)); } #endregion diff --git a/FFXIVAPP.Client/Memory/PlayerInfoWorker.cs b/FFXIVAPP.Client/Memory/PlayerInfoWorker.cs index fb9c704a..500b146f 100644 --- a/FFXIVAPP.Client/Memory/PlayerInfoWorker.cs +++ b/FFXIVAPP.Client/Memory/PlayerInfoWorker.cs @@ -49,41 +49,17 @@ internal class PlayerInfoWorker : INotifyPropertyChanged, IDisposable #endregion - #region Property Bindings - - private long PlayerInfoMap { get; set; } - - private PlayerEntity LastPlayerEntity { get; set; } - - #endregion - - #region Declarations - - private readonly Timer _scanTimer; - private bool _isScanning; - - #endregion - public PlayerInfoWorker() { _scanTimer = new Timer(1000); _scanTimer.Elapsed += ScanTimerElapsed; } - #region Timer Controls - - /// - /// - public void StartScanning() - { - _scanTimer.Enabled = true; - } + #region Implementation of IDisposable - /// - /// - public void StopScanning() + public void Dispose() { - _scanTimer.Enabled = false; + _scanTimer.Elapsed -= ScanTimerElapsed; } #endregion @@ -214,22 +190,46 @@ private void ScanTimerElapsed(object sender, ElapsedEventArgs e) #endregion - #region Implementation of INotifyPropertyChanged + #region Property Bindings - public event PropertyChangedEventHandler PropertyChanged = delegate { }; + private long PlayerInfoMap { get; set; } - private void RaisePropertyChanged([CallerMemberName] string caller = "") + private PlayerEntity LastPlayerEntity { get; set; } + + #endregion + + #region Declarations + + private readonly Timer _scanTimer; + private bool _isScanning; + + #endregion + + #region Timer Controls + + /// + /// + public void StartScanning() { - PropertyChanged(this, new PropertyChangedEventArgs(caller)); + _scanTimer.Enabled = true; + } + + /// + /// + public void StopScanning() + { + _scanTimer.Enabled = false; } #endregion - #region Implementation of IDisposable + #region Implementation of INotifyPropertyChanged - public void Dispose() + public event PropertyChangedEventHandler PropertyChanged = delegate { }; + + private void RaisePropertyChanged([CallerMemberName] string caller = "") { - _scanTimer.Elapsed -= ScanTimerElapsed; + PropertyChanged(this, new PropertyChangedEventArgs(caller)); } #endregion diff --git a/FFXIVAPP.Client/Memory/SigScanner.cs b/FFXIVAPP.Client/Memory/SigScanner.cs index 0030a3be..d8611ce5 100644 --- a/FFXIVAPP.Client/Memory/SigScanner.cs +++ b/FFXIVAPP.Client/Memory/SigScanner.cs @@ -41,53 +41,6 @@ namespace FFXIVAPP.Client.Memory { public class SigScanner : INotifyPropertyChanged { - #region Logger - - private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - - #endregion - - #region Property Bindings - - private static SigScanner _instance; - private Dictionary _locations; - - public static SigScanner Instance - { - get { return _instance ?? (_instance = new SigScanner()); } - set { _instance = value; } - } - - public Dictionary Locations - { - get { return _locations ?? (_locations = new Dictionary()); } - private set - { - if (_locations == null) - { - _locations = new Dictionary(); - } - _locations = value; - RaisePropertyChanged(); - } - } - - #endregion - - #region Constants - - private const int WildCardChar = 63; - private const int MemCommit = 0x1000; - private const int PageNoAccess = 0x01; - private const int PageReadwrite = 0x04; - private const int PageWritecopy = 0x08; - private const int PageExecuteReadwrite = 0x40; - private const int PageExecuteWritecopy = 0x80; - private const int PageGuard = 0x100; - private const int Writable = PageReadwrite | PageWritecopy | PageExecuteReadwrite | PageExecuteWritecopy | PageGuard; - - #endregion - #region ResultTypes /// @@ -118,10 +71,9 @@ public enum ScanResultType #endregion - #region Declarations + #region Logger - private byte[] _memDump; - private List _regions; + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); #endregion @@ -535,6 +487,54 @@ private static byte[] SigToByte(string signature, byte wildcard) } } + #region Property Bindings + + private static SigScanner _instance; + private Dictionary _locations; + + public static SigScanner Instance + { + get { return _instance ?? (_instance = new SigScanner()); } + set { _instance = value; } + } + + public Dictionary Locations + { + get { return _locations ?? (_locations = new Dictionary()); } + private set + { + if (_locations == null) + { + _locations = new Dictionary(); + } + _locations = value; + RaisePropertyChanged(); + } + } + + #endregion + + #region Constants + + private const int WildCardChar = 63; + private const int MemCommit = 0x1000; + private const int PageNoAccess = 0x01; + private const int PageReadwrite = 0x04; + private const int PageWritecopy = 0x08; + private const int PageExecuteReadwrite = 0x40; + private const int PageExecuteWritecopy = 0x80; + private const int PageGuard = 0x100; + private const int Writable = PageReadwrite | PageWritecopy | PageExecuteReadwrite | PageExecuteWritecopy | PageGuard; + + #endregion + + #region Declarations + + private byte[] _memDump; + private List _regions; + + #endregion + #region Implementation of INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged = delegate { }; diff --git a/FFXIVAPP.Client/Memory/TargetWorker.cs b/FFXIVAPP.Client/Memory/TargetWorker.cs index 8923af7f..6e50ab95 100644 --- a/FFXIVAPP.Client/Memory/TargetWorker.cs +++ b/FFXIVAPP.Client/Memory/TargetWorker.cs @@ -49,39 +49,23 @@ internal class TargetWorker : INotifyPropertyChanged, IDisposable #endregion - #region Property Bindings - - private TargetEntity LastTargetEntity { get; set; } - - #endregion - - #region Declarations - - private readonly Timer _scanTimer; - private bool _isScanning; - - #endregion - public TargetWorker() { _scanTimer = new Timer(100); _scanTimer.Elapsed += ScanTimerElapsed; } - #region Timer Controls + #region Property Bindings - /// - /// - public void StartScanning() - { - _scanTimer.Enabled = true; - } + private TargetEntity LastTargetEntity { get; set; } - /// - /// - public void StopScanning() + #endregion + + #region Implementation of IDisposable + + public void Dispose() { - _scanTimer.Enabled = false; + _scanTimer.Elapsed -= ScanTimerElapsed; } #endregion @@ -281,8 +265,8 @@ private void ScanTimerElapsed(object sender, ElapsedEventArgs e) var enmityEntry = new EnmityEntry { Name = MemoryHandler.Instance.GetString(address), - ID = (uint)MemoryHandler.Instance.GetPlatformInt(address, 64), - Enmity = (uint)MemoryHandler.Instance.GetPlatformInt(address, 68) + ID = (uint) MemoryHandler.Instance.GetPlatformInt(address, 64), + Enmity = (uint) MemoryHandler.Instance.GetPlatformInt(address, 68) }; if (enmityEntry.ID <= 0) { @@ -328,22 +312,38 @@ private void ScanTimerElapsed(object sender, ElapsedEventArgs e) #endregion - #region Implementation of INotifyPropertyChanged + #region Declarations - public event PropertyChangedEventHandler PropertyChanged = delegate { }; + private readonly Timer _scanTimer; + private bool _isScanning; - private void RaisePropertyChanged([CallerMemberName] string caller = "") + #endregion + + #region Timer Controls + + /// + /// + public void StartScanning() { - PropertyChanged(this, new PropertyChangedEventArgs(caller)); + _scanTimer.Enabled = true; + } + + /// + /// + public void StopScanning() + { + _scanTimer.Enabled = false; } #endregion - #region Implementation of IDisposable + #region Implementation of INotifyPropertyChanged - public void Dispose() + public event PropertyChangedEventHandler PropertyChanged = delegate { }; + + private void RaisePropertyChanged([CallerMemberName] string caller = "") { - _scanTimer.Elapsed -= ScanTimerElapsed; + PropertyChanged(this, new PropertyChangedEventArgs(caller)); } #endregion diff --git a/FFXIVAPP.Client/Network/IPHeader.cs b/FFXIVAPP.Client/Network/IPHeader.cs index ecad4eb6..59264bd6 100644 --- a/FFXIVAPP.Client/Network/IPHeader.cs +++ b/FFXIVAPP.Client/Network/IPHeader.cs @@ -37,7 +37,6 @@ namespace FFXIVAPP.Client.Network { public class IPHeader { - private readonly byte _TTL; private readonly short _checksum; private readonly List _data = new List(); private readonly uint _destinationIPAddress; @@ -48,6 +47,7 @@ public class IPHeader private readonly byte _protocol; private readonly uint _sourceIPAddress; private readonly ushort _totalLength; + private readonly byte _TTL; private readonly byte _versionAndHeaderLength; public IPHeader(byte[] byBuffer, int nReceived) diff --git a/FFXIVAPP.Client/Network/NetworkWorker.cs b/FFXIVAPP.Client/Network/NetworkWorker.cs index 8825b0b7..6d3f038a 100644 --- a/FFXIVAPP.Client/Network/NetworkWorker.cs +++ b/FFXIVAPP.Client/Network/NetworkWorker.cs @@ -51,6 +51,18 @@ internal class NetworkWorker : INotifyPropertyChanged, IDisposable #endregion + public NetworkWorker() + { + } + + #region Implementation of IDisposable + + public void Dispose() + { + } + + #endregion + #region Property Bindings #endregion @@ -64,10 +76,6 @@ internal class NetworkWorker : INotifyPropertyChanged, IDisposable #endregion - public NetworkWorker() - { - } - #region Timer Controls /// @@ -565,13 +573,5 @@ private void RaisePropertyChanged([CallerMemberName] string caller = "") } #endregion - - #region Implementation of IDisposable - - public void Dispose() - { - } - - #endregion } } diff --git a/FFXIVAPP.Client/Network/TCPRow.cs b/FFXIVAPP.Client/Network/TCPRow.cs index 59006108..efd8dc3a 100644 --- a/FFXIVAPP.Client/Network/TCPRow.cs +++ b/FFXIVAPP.Client/Network/TCPRow.cs @@ -35,15 +35,6 @@ namespace FFXIVAPP.Client.Network { public class TCPRow { - #region Private Fields - - private IPEndPoint localEndPoint; - private int processId; - private IPEndPoint remoteEndPoint; - private TcpState state; - - #endregion - #region Constructors public TCPRow(UnsafeNativeMethods.TCPRow row) @@ -60,6 +51,15 @@ public TCPRow(UnsafeNativeMethods.TCPRow row) #endregion + #region Private Fields + + private IPEndPoint localEndPoint; + private int processId; + private IPEndPoint remoteEndPoint; + private TcpState state; + + #endregion + #region Public Properties public IPEndPoint LocalEndPoint diff --git a/FFXIVAPP.Client/Network/TCPTable.cs b/FFXIVAPP.Client/Network/TCPTable.cs index a919f29f..f1eecf80 100644 --- a/FFXIVAPP.Client/Network/TCPTable.cs +++ b/FFXIVAPP.Client/Network/TCPTable.cs @@ -58,18 +58,18 @@ public IEnumerable Rows #endregion - #region IEnumerable Members + #region IEnumerable Members - public IEnumerator GetEnumerator() + IEnumerator IEnumerable.GetEnumerator() { return rows.GetEnumerator(); } #endregion - #region IEnumerable Members + #region IEnumerable Members - IEnumerator IEnumerable.GetEnumerator() + public IEnumerator GetEnumerator() { return rows.GetEnumerator(); } diff --git a/FFXIVAPP.Client/PluginHost.cs b/FFXIVAPP.Client/PluginHost.cs index ff69e293..a76dbdae 100644 --- a/FFXIVAPP.Client/PluginHost.cs +++ b/FFXIVAPP.Client/PluginHost.cs @@ -57,32 +57,6 @@ internal class PluginHost : MarshalByRefObject, IPluginHost #endregion - #region Property Bindings - - private static PluginHost _instance; - private PluginCollectionHelper _loaded; - - public PluginCollectionHelper Loaded - { - get { return _loaded ?? (_loaded = new PluginCollectionHelper()); } - set - { - if (_loaded == null) - { - _loaded = new PluginCollectionHelper(); - } - _loaded = value; - } - } - - public static PluginHost Instance - { - get { return _instance ?? (_instance = new PluginHost()); } - set { _instance = value; } - } - - #endregion - #region Declarations public AssemblyReflectionManager AssemblyReflectionManager = new AssemblyReflectionManager(); @@ -242,6 +216,32 @@ private void VerifyPlugin(string assemblyPath) } } + #region Property Bindings + + private static PluginHost _instance; + private PluginCollectionHelper _loaded; + + public PluginCollectionHelper Loaded + { + get { return _loaded ?? (_loaded = new PluginCollectionHelper()); } + set + { + if (_loaded == null) + { + _loaded = new PluginCollectionHelper(); + } + _loaded = value; + } + } + + public static PluginHost Instance + { + get { return _instance ?? (_instance = new PluginHost()); } + set { _instance = value; } + } + + #endregion + #region Implementaion of IPluginHost /// diff --git a/FFXIVAPP.Client/ShellView.xaml.cs b/FFXIVAPP.Client/ShellView.xaml.cs index d34c613d..57003f23 100644 --- a/FFXIVAPP.Client/ShellView.xaml.cs +++ b/FFXIVAPP.Client/ShellView.xaml.cs @@ -53,16 +53,6 @@ public partial class ShellView #endregion - #region Property Bindings - - public bool IsRendered { get; set; } - - #endregion - - #region Declarations - - #endregion - public static ShellView View; public ShellView() @@ -72,6 +62,12 @@ public ShellView() View.Topmost = true; } + #region Property Bindings + + public bool IsRendered { get; set; } + + #endregion + /// /// /// @@ -207,5 +203,9 @@ private static void CloseDelegate(bool update = false) } Environment.Exit(0); } + + #region Declarations + + #endregion } } diff --git a/FFXIVAPP.Client/ShellViewModel.cs b/FFXIVAPP.Client/ShellViewModel.cs index 976704f9..4ad5797d 100644 --- a/FFXIVAPP.Client/ShellViewModel.cs +++ b/FFXIVAPP.Client/ShellViewModel.cs @@ -45,6 +45,15 @@ namespace FFXIVAPP.Client [Export(typeof (ShellViewModel))] internal sealed class ShellViewModel : INotifyPropertyChanged { + public ShellViewModel() + { + SetLocaleCommand = new DelegateCommand(SetLocale); + SaveAndClearHistoryCommand = new DelegateCommand(SaveAndClearHistory); + ScreenShotCommand = new DelegateCommand(ScreenShot); + UpdateSelectedPluginCommand = new DelegateCommand(UpdateSelectedPlugin); + UpdateTitleCommand = new DelegateCommand(UpdateTitle); + } + #region Property Bindings private static ShellViewModel _instance; @@ -66,15 +75,6 @@ public static ShellViewModel Instance #endregion - public ShellViewModel() - { - SetLocaleCommand = new DelegateCommand(SetLocale); - SaveAndClearHistoryCommand = new DelegateCommand(SaveAndClearHistory); - ScreenShotCommand = new DelegateCommand(ScreenShot); - UpdateSelectedPluginCommand = new DelegateCommand(UpdateSelectedPlugin); - UpdateTitleCommand = new DelegateCommand(UpdateTitle); - } - #region Loading Functions #endregion diff --git a/FFXIVAPP.Client/Utilities/MicroTimerEventArgs.cs b/FFXIVAPP.Client/Utilities/MicroTimerEventArgs.cs index 39afd69d..f712d210 100644 --- a/FFXIVAPP.Client/Utilities/MicroTimerEventArgs.cs +++ b/FFXIVAPP.Client/Utilities/MicroTimerEventArgs.cs @@ -43,13 +43,10 @@ public MicroTimerEventArgs(int timerCount, long elapsedMicroseconds, long timerL } public int TimerCount { get; private set; } - // Time when timed event was called since timer started public long ElapsedMicroseconds { get; private set; } - // How late the timer was compared to when it should have been called public long TimerLateBy { get; private set; } - // Time it took to execute previous call to callback function (OnTimedEvent) public long CallbackFunctionExecutionTime { get; private set; } } diff --git a/FFXIVAPP.Client/ViewModels/AboutViewModel.cs b/FFXIVAPP.Client/ViewModels/AboutViewModel.cs index 61b3386c..fa60af70 100644 --- a/FFXIVAPP.Client/ViewModels/AboutViewModel.cs +++ b/FFXIVAPP.Client/ViewModels/AboutViewModel.cs @@ -40,47 +40,47 @@ namespace FFXIVAPP.Client.ViewModels [Export(typeof (AboutViewModel))] internal sealed class AboutViewModel : INotifyPropertyChanged { - #region Property Bindings - - private static AboutViewModel _instance; - - public static AboutViewModel Instance + public AboutViewModel() { - get { return _instance ?? (_instance = new AboutViewModel()); } + ManualUpdateCommand = new DelegateCommand(ManualUpdate); } - #endregion - #region Declarations public ICommand ManualUpdateCommand { get; private set; } #endregion - public AboutViewModel() + #region Command Bindings + + /// + /// + private void ManualUpdate() { - ManualUpdateCommand = new DelegateCommand(ManualUpdate); + DispatcherHelper.Invoke(() => ShellView.CloseApplication(true), DispatcherPriority.Send); } - #region Loading Functions - #endregion - #region Utility Functions - - #endregion + #region Property Bindings - #region Command Bindings + private static AboutViewModel _instance; - /// - /// - private void ManualUpdate() + public static AboutViewModel Instance { - DispatcherHelper.Invoke(() => ShellView.CloseApplication(true), DispatcherPriority.Send); + get { return _instance ?? (_instance = new AboutViewModel()); } } #endregion + #region Loading Functions + + #endregion + + #region Utility Functions + + #endregion + #region Implementation of INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged = delegate { }; diff --git a/FFXIVAPP.Client/ViewModels/DefaultViewModel.cs b/FFXIVAPP.Client/ViewModels/DefaultViewModel.cs index bd563031..af31da27 100644 --- a/FFXIVAPP.Client/ViewModels/DefaultViewModel.cs +++ b/FFXIVAPP.Client/ViewModels/DefaultViewModel.cs @@ -38,6 +38,12 @@ namespace FFXIVAPP.Client.ViewModels [Export(typeof (DefaultViewModel))] internal sealed class DefaultViewModel : INotifyPropertyChanged { + public DefaultViewModel() + { + DefaultCommand = new DelegateCommand(Default); + DefaultCommandT = new DelegateCommand(DefaultT); + } + #region Property Bindings private static DefaultViewModel _instance; @@ -56,12 +62,6 @@ public static DefaultViewModel Instance #endregion - public DefaultViewModel() - { - DefaultCommand = new DelegateCommand(Default); - DefaultCommandT = new DelegateCommand(DefaultT); - } - #region Loading Functions #endregion diff --git a/FFXIVAPP.Client/ViewModels/MainViewModel.cs b/FFXIVAPP.Client/ViewModels/MainViewModel.cs index 5e19df6a..4f30e7c1 100644 --- a/FFXIVAPP.Client/ViewModels/MainViewModel.cs +++ b/FFXIVAPP.Client/ViewModels/MainViewModel.cs @@ -40,33 +40,14 @@ namespace FFXIVAPP.Client.ViewModels [Export(typeof (MainViewModel))] internal sealed class MainViewModel : INotifyPropertyChanged { - #region Property Bindings - - private static MainViewModel _instance; - - public static MainViewModel Instance - { - get { return _instance ?? (_instance = new MainViewModel()); } - } - - #endregion - - #region Declarations - - public DelegateCommand OpenWebSiteCommand { get; private set; } - - #endregion - public MainViewModel() { OpenWebSiteCommand = new DelegateCommand(OpenWebSite); } - #region Loading Functions - - #endregion + #region Declarations - #region Utility Functions + public DelegateCommand OpenWebSiteCommand { get; private set; } #endregion @@ -86,6 +67,25 @@ public void OpenWebSite() #endregion + #region Property Bindings + + private static MainViewModel _instance; + + public static MainViewModel Instance + { + get { return _instance ?? (_instance = new MainViewModel()); } + } + + #endregion + + #region Loading Functions + + #endregion + + #region Utility Functions + + #endregion + #region Implementation of INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged = delegate { }; diff --git a/FFXIVAPP.Client/ViewModels/SettingsViewModel.cs b/FFXIVAPP.Client/ViewModels/SettingsViewModel.cs index da2ae39c..0b1e95f6 100644 --- a/FFXIVAPP.Client/ViewModels/SettingsViewModel.cs +++ b/FFXIVAPP.Client/ViewModels/SettingsViewModel.cs @@ -59,6 +59,19 @@ internal sealed class SettingsViewModel : INotifyPropertyChanged #endregion + public SettingsViewModel() + { + RefreshNetworkWorkerCommand = new DelegateCommand(RefreshNetworkWorker); + SetProcessCommand = new DelegateCommand(SetProcess); + RefreshListCommand = new DelegateCommand(RefreshList); + ChangeThemeCommand = new DelegateCommand(ChangeTheme); + DefaultSettingsCommand = new DelegateCommand(DefaultSettings); + ChangeAudioModeCommand = new DelegateCommand(ChangeAudioMode); + GetCICUIDCommand = new DelegateCommand(GetCICUID); + ColorSelectionCommand = new DelegateCommand(ColorSelection); + UpdateColorCommand = new DelegateCommand(UpdateColor); + } + #region Property Bindings private static SettingsViewModel _instance; @@ -142,19 +155,6 @@ public List AvailableNetworkInterfacesList #endregion - public SettingsViewModel() - { - RefreshNetworkWorkerCommand = new DelegateCommand(RefreshNetworkWorker); - SetProcessCommand = new DelegateCommand(SetProcess); - RefreshListCommand = new DelegateCommand(RefreshList); - ChangeThemeCommand = new DelegateCommand(ChangeTheme); - DefaultSettingsCommand = new DelegateCommand(DefaultSettings); - ChangeAudioModeCommand = new DelegateCommand(ChangeAudioMode); - GetCICUIDCommand = new DelegateCommand(GetCICUID); - ColorSelectionCommand = new DelegateCommand(ColorSelection); - UpdateColorCommand = new DelegateCommand(UpdateColor); - } - #region Loading Functions #endregion diff --git a/FFXIVAPP.Client/ViewModels/UpdateViewModel.cs b/FFXIVAPP.Client/ViewModels/UpdateViewModel.cs index 8ca82985..39aad50a 100644 --- a/FFXIVAPP.Client/ViewModels/UpdateViewModel.cs +++ b/FFXIVAPP.Client/ViewModels/UpdateViewModel.cs @@ -58,6 +58,17 @@ namespace FFXIVAPP.Client.ViewModels [Export(typeof (UpdateViewModel))] internal sealed class UpdateViewModel : INotifyPropertyChanged { + public UpdateViewModel() + { + RefreshAvailableCommand = new DelegateCommand(RefreshAvailable); + InstallCommand = new DelegateCommand(Install); + UnInstallCommand = new DelegateCommand(UnInstall); + AddOrUpdateSourceCommand = new DelegateCommand(AddOrUpdateSource); + DeleteSourceCommand = new DelegateCommand(DeleteSource); + SourceSelectionCommand = new DelegateCommand(SourceSelection); + AvailableDGDoubleClickCommand = new DelegateCommand(AvailableDGDoubleClick); + } + #region Property Bindings private static UpdateViewModel _instance; @@ -103,17 +114,6 @@ public ObservableCollection AvailableSources #endregion - public UpdateViewModel() - { - RefreshAvailableCommand = new DelegateCommand(RefreshAvailable); - InstallCommand = new DelegateCommand(Install); - UnInstallCommand = new DelegateCommand(UnInstall); - AddOrUpdateSourceCommand = new DelegateCommand(AddOrUpdateSource); - DeleteSourceCommand = new DelegateCommand(DeleteSource); - SourceSelectionCommand = new DelegateCommand(SourceSelection); - AvailableDGDoubleClickCommand = new DelegateCommand(AvailableDGDoubleClick); - } - #region Loading Functions #endregion diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index b0cdfa743c43a7e56088defb8401c0678803311e..138463872662545e6284ff4e6eff23d74b4a1039 100644 GIT binary patch delta 74037 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 CrZg=8 delta 74611 zcma%k2Y3`!7xtam%_P|rvMHO8gfvoy-A(8LLJ5QxLJK7ULJy&ZGO$ZuHoH`5p$)Kz zSO6OeDk6d%v7)Gmii(J0!(Kkc{>A@2cV?4a%=iC)o`*B{J?GqW&u!=4xihnPKU?7a za>4cuS?BsZQo;1Uk69Lr5ZW=eC5f@S4V-JbZ^wO=(I*ZkvEhVIC$Y~C`gVL77Z>48 zWs%@yK;%169G9<-6Y@+8HX&;U*jv<1f=$?}J}Tr19n>pAR_<3&q`y-96Ilqm>=M|y z!6FlY(;1WQeaXOZD&saxfgL9 z-37KF$yrQ{-XM-~jo2hgav$PnA&V%NAc_2~DSuz2m3|-^TWpZBiQS*r13=^tgkemA zb`G%z5*yVgHs|INcMx&Qh?@y$?chwqMHvi6uC>yj3_)V6Jwi*!t<)Z&DfvT5n`|hT zLGmND^e}L*w9(S&EL~%mx;C_TbvdwIOf)&(MYZG+KoOz&f>p97It~zLBshu{#5oEi z(q;)&Mk66(Yy|SdaD(DiZ7lHLpfe6 zjctf+-A+K0sw*i|LF#M}CHhW}UElQQ=fY_GE$yAO#xSXq0jyCN`!l#`w7y5BV zTfW(-%%fz8IYdDr`pAn#A-n_Zk>D%Drvjk70GIq%u0)!R_K;BEaq67NVU~s98WacV zIYG2OwyNEuvMZ@^{nOBzB__HfP!(%|ya;?R4Kz&qC|q*#BXgZLxS!)CXyxNfF+hvv zerq%WV?#dd?OY6wJ6b&u)v_l|${cS2>f~;LETRl8lbi}0_5yw}St4v{Qs}I@!z8UBZfs&z6Qyz{uHxWJ!ei*kC+b&j5}VITp{LC7h05u zp}>1HQJL*e26gNUsV@lwkJq;f7ovGv-+#p<*(FICcl^$@4T70?Mb9?;^N*jc_RM%d z)4aQp^+(39n&QZRniO|t&57X_U*Nr`b)GA$uq%xjJ|0ZAREdv<2zeSss2L!kd{ijQ zQLLnO{^iDEzRJq(nnIZ`LCQ0KfP|iT7SDVcjOH`nAs6HS3AzZE7jS*lV0&as-Q zFI^bvh=1QfS~p+qlH0FkIg<8BN3Iz$=|`k(DO$Q*-Icpas5x%Q%L{2i)^bJr0=W$; zrR1wa?CFx8T-cP{W6$t&pKRh@ZA>1Q@&^m)G}n~>lEK&zxdGSw!&jnXLmDg{8B4*` zTu`tD5%#|Ydq8)!&5NLNWCVIiX|KN6Hp|1ywGnd~F}D&K3h0~x;>Gkb))7%=5-){# zSQ(9VM3hwG8Hk5v(O5@BF%s`OVuu$iqp^;N@++Y8E8>+AkBIU$@!k`o!5mCXBFg*f z;&yh=ESS&=T|g-+${w$k*vijPvM5C*Lc|LW@iP6Uac?g9Im*XKX`MwarIZno1gwS0@}p=ltD_FVsV+!a&-`D6 zPAn9XmvU(tun0(!H3eH9hk93gIY#TLhrrD@B-(@&_4W28ZJ7{5kuZggn$HYvF%MQa zMI(Zy=7&S_et{VpKVj_zCaQ9abz8b=#sr2sj?LzOddgk1Qz^8k;LVKJo*mf4v~ zju>gL*AyO&N?Y=XD&d|0A0!u1=s13*CN(PUAm;6ARN5mM5g%z(Iv`<>LJeAxn>0Ei zLxIx#C``T&_N*v3?s!O-GbXHeFZZeTV4*XLb%TOy8b+B0!(fh=ByMa!p;Q*E6i!M* zxDrX+qqx%GU?meNVcP~vBynTc3QI#8l{`o_ND-uk9UrtvRt`td1!?_Yk z+}P?uX;`pQR8x5*abq70C2aWu2UT=aaUK%6u~CLrd9YTCrt(PQ#xew@5y46^P34iq zjlc_~k-dYqcb;O0HFj8H%7mu7wr6A2Lt>#DYgj8LEGKb5wR z26j6}H2sNnll-P8BGDjak|`{07*vzg{QjAOs1EOMnPS8WPdAv+xbkV@#I2-BMzrVb z7QyT=ogEX*HUVn8*Fo6+m(WCRjp9rab_wkV#CfK`1Ia~{?-uQt-WuX}g+Cy-79|BM z?d)|`Wh@-&_BiVDzmzebv#C}zyCdo*2iG^tFUj$SkSJ2^IWRrHLl#@0yaoLz&8VX+ zRKJ_bw`hA(@kuNo2+CKJ^ zE2gFmY~A$W+*Zo{HJUlcOOgl*)^>IMkXZ=KKMW}moN9-m{lkl)!0)V%dxw4_G(mOI za3uhJJKPt5wv^9lLOVyi)dY@T9-#zU89gdMQ+;_?`MldrGdk7C^{f9+->(IB;@+G&%IB<>@~t=+qcxE1RO%K>u_XFHPhwz}C+%;Iam zW&>vsnpTdNMCm5J+p((8jBcskF?x1nW!+J~tE1JQD*nhbu-6*>nS&hMRxJ_@QpYBL z=BS-3GLr_PObP>-bAhf5Qs-A#Y6k1V3Bf|FV?58qVD@mGJt>%t0L--~2eT1O`6{e_ zS?ToOflM7!rfqCKxnh?1olk_mMLInur%Pw}PNQ`mYJx3`LKm6e=aj$}hD{+=ZX-sp z+zMML_k2=t%~w;$wh_9h1I7;hpSDv+U{Pb(otmA!^g@>W%X)FJ^`+c8QQEXLNWDo+ ztt}}HD4?DS$jZ z9-fdnU=A$MpsvF;V1CWh*;woY*@$^u+Z)VYsK!jRBsq2A>R{nwwbw*Tho!o3U9fPu z&R!qPb^)q$Cl{#uC#R;=1y^AxRpDmzd5*VEeQR=|Jd8K1wlZBuMzhtv*TrCzS?r!JV5q?S*k7L z{ROY#1y?i`yjJ~uT4vU67^gnnM`hlHmWsDH@20u#qf#l99G_4#5GPRTozwet=I0na zB*%~#|0-W5IWlBFm@YXA8o@%z(Uk)=dBz*UH1+Elzvfq>_^9w$QATJrx!1v^(C`Ln z3_0~A6^ffITb$8s%&!V}ty80BEfvt?k<=?~88m9o)amkqowll<9oyc^Z9+1>1o zhcn8HFc#Srvzmn|FCiV}tb#IG4p;8Ptgow8=gm$MZc^9Jo+6A_ug%UuI;yrKXrJ0D z?cnPeKOxgrSoKJ4UdpE6;wMw_+Vt3@eqZ}WAZ<@W&WVkow4_3F=a>@nqN4tr?0{3`gI*>>(=EYz;KAApXTmls~cZHumV)IRg$ z3ze@l!_&#|*JRiR!-)l=#mYn%PQfvRx55kMTga5}KytxQ-<&tIY=&-#lnlyMh}_$t z3ConLL7GV>eYw;=LiQ4%301 zjeKY&GSgiIqeA60q{Cg;)f88H?!Cbp1f9LnuSzDA%to$z{$6#8D^s|xu68X*QT_GU z$?LI@>Y??Wsz$AB)eoCSscu)Wl7p1;U@*r^5*f44R<}D?$4NRe*V(PkUzww=g`Wo> zAhcKSU3tHdua0)xFp|A)I`l288}D%;Gp)S0!=_|VZbgk3<)bR@TZxh5qKgY>a_FdH z6yd%N_zJqxqNT8lC61+iBKmD5IYJwE?a=0mA@>U8jTZDIV!hGgPbUCuoo&H}DIc|W zE>(enHd2SRM=_0g)otFE!X4^iufu}_3n?xlJ}wgVsH1w|RKOG$WsWeo za8_hAN68&gi2DGFGe@}Sl3#6(a887|9L)>Y@6dA-@iYD)1`$8wS7H$HGkzlmkrv#t zUKZ@DhgaDxREjH3K#3s=4h>B9cq&@`W>t4jfXLiJ!8w3Q_iAM<^kv-goATpymN~?U zyL*$HBsz;*Rd73RO6+LXdGdHPzB}p$C38fB)K?T{n_FYViRPXn3>{Y zbu&#~nPXjvLO3&yi{mY;Hmpf%!Ruf~o8|LnRCCs52?x~DwYDfOX`#2K>Rp=-{vB)O zWa7(hF>Hd|L@TdWKUw>Eo4vt~E+I#!@J1tv+zme3BSnMUQT=gUw$M>cSYIe~JU(Q7 zN1+9eVK}O5VGqTa7^iN%X?fUo+~b+!6rb8+!y_3fxaq9BIkyH(=e_{LJ#U~b^C*L zR*;UD>+C=N(dL6fl-61LGck2*eZM3+l(1Ggp0%?DqU#&fV+(Gt1i4!My8f0PU%{UH z7cfPG>laG@2Wf-r8zj@J4X$r-9cyrXhf8`=HB#SGDyDj@$>920eRgYn&X2n0Pnza` z8a02`H6snKACCXIwX=Xjq;}i$Jvc-%ilGX&h9MGTOsZTBY7VcCwf8#-dej=dwOI8!W>H^Vn;ufS~M-n6cFgyd5PQS)q}0s@l! zyc*jpe*S~q5SxqJPSF*jPTSc<2vKj@ndhN4A=^hWLu72yOjbH8Y6)Ej*QItcNvQ>) zQo6aoXbVZTrkkw^jl+UkZOceLENHY8iY{uq`A%%KIHK0m5!sE0U7SwA2Wl3StA=cC zX`xJ;)`Gov3)ROHZ~j9_xd)?& z$NIaGXplD2c-Qte_o%j8zDhalm*30fTbksD)wcU*rrhtB-^bX66K%Ckbw~Z?k8txl$vk2N zrtDF*_Vx_Hd3-ad+VMb^h`XEn??_I0(4XT0o?~~DLl3GS-(j9LLvS>(k9O&8?6{I#t`FOUfi6sSYnXvWwglv5cGZCS64+WRIhsvd0QI7W^ z^}7SD3h7y=L7K1hp{8)cIa3aQs%MbW#?Ds?!Byb8DaQ#zCgm6HYP&N9qO9Xq6ZBkit^h)7Wp!$ z@+_46ti*q_lK#zV`EOS8zga2&W~IuPvAhHqnI8Ucz4X{-cyZ0};+x?mG{bAEs;9B8 z>CIF&y_wpkTbnUxYldfUhL?XM&%>njRyQ)iOKXOg-V86J8D3^HysTz;t-(Y2K|P+H z-Hc*RGrZhpczMn6@&EeX z8{Xm2#yrmNShG?Z?QupfG8>bXE||X-xi2w8G-k;B^merw^pd2~LoL5&QYh^yCFO4Q z#61Jmzwhm+J);@}`}8N)J?xKQ2tHT}Zf=U4534!%+M=;n35c9(!Qm`*<-Hwl43Mv3 zLN^9T>{c2BB%+kI(rD&yX$p{!sOHlx)vCiziWZa~(W0raz-V#SA1w^*O9XsZGtr`{ zPiK5BuNAjt8OL>`3wXM|II?!LBd>8Q*eo-qxaC1o2{IPLbS!M~l;4W(B{Vnl+Pxt#JVbC?GeD0iuwj&#Jv`ROAAdSaXLCbc}BPx1uD3ms85 zjU6m9TGg-wVeH)2Gr~dgsUODfX z)`4s^qJs}Q8U+~(a9B}0)@18^qsmx|KJx6zfg*L`gDGtq--FVIT(8CjZxE~nX`gt| z7Dd`-W5#K80=oXY2NUt2BIKb`?R~8rb<{)3IIbei&*+V3bXsJHm+=Crgr^)gl=VD~ zUs_!49n6}rSq-WiEv;(Gv38pE&}OVhHJewrt_hpfXtaLkv3$*XSTok6o6W0R*M!Y# zG+MVlY}2fVH)Fj;vw3yvny^`oM(YneJiUmwyV>H8x@d9bL$sW}Co`w_u2s5&IZwF~ z$n6KNI`sH0JV1vj2ao@7JVa1`Igy21k>F{DjhHqMuu;P_JJ>YM9#dPLu-PRTZ<=Pb zoyB2sz~+{azPV-Uf)j-|PC$}32Jc8RrcXd@^#Th%)HDGf*Cybjn1GMYrT|VhFaeuf z37mj9$kw)d62lglxtp1QO#%F-WZi{A(;o>HRbZ)RI$HGZ~>8Fe#%FO@YboKGo79fSVsBn!{ufsl>Q&TcIcm>XB3S zc%5Mmw@31LZVpopsNbH-isRLngIY_?d@P|OwUI4B<7-Vvwc$EFQS zuDeVfS!VFkRdfubJGw-u(H-fBBpQaLf)b)*Vx#N}vF=I#IKnLg2Jqc{0IO+_Ck=|H zf@8?UpJE+`j5gdfwR@VzIZ50fkzu(t7D*8&YH`S<)YE-A&#n%9ytOb#o%6UXEL3+r z-al(Izukm#eyZ8%@HL`nphFy~e?2~3cu<}C#0AeBFdR?gajAlbTBcBXGZV*KL>(tc z^cZEpS&Yf?6v1a3;j093Qlv}Y2!?M3!-%#)%H0~F#7)mpPd(XJSgQX0m;a zjyA9m7RFC198=oq{>2D}ups1^50QKjuG4LzJ>4uNc5GuvRPG>;DI0f@*DXe{wJ>lV zwh&ZV7<1g_SK)O8M|3=(e)?1!b>-7Z>V&6P4ZcF1i%!PFA8kLt6Ff{+V?m-n(J7!b z_h-~eb(o4;Pa=|{!|!YA$!FB0XKaya=sbVKQkOrIj&ZK;edb?*=@S@h3{2USM-NQT z2it$JDKI^cz_f(|66HleYAPu(Abm{rp!-iF+aWRLZ6+W!?Fee2apSyb3RgoQwbWw6 zAE1&-uj@J*7j%1ifUHc-cs70>P4a;KWYc$!U1*@PszQ;2f@1{-lkOI(y~l%83A{n@c8r-R$`ernJELN&*GTJ3YD zl?R*Z!2Uc!a%~Sw626Cx3zg53BMrz_cP3c>Xp=rkH2pC7^+x^Yg7qJ0(kF?met4!Y zcDk9*IfO`RIVl4@Mv?LM=V=H0*z+dA(-QprPS^n_BcbhppC|h_H$v{-{zk}4za7wQ z(l*F?^fW1Zi5U^Zj8JYNW@HdEQo)xvl9_L&EjIfQE&2v-r}wF2U+k30504SK`JP+X z3JchD->M#M)Cv#M3J=h_Lls}@gspj(m!4HEul4h^McFytYc!JaPBg#r37L$hS&adW zQ)$R@@?&zvc;^sOHo1v|cgHnRexxqoY(#F7YPW}U!nuaq_>$Y8_qMULn_z+%5(2&Y z!E3Q)m&Cf4{auIgfT{j4b)9yUND?<5C+k7mU=KyuZVyNBwzBm{%MiUETYVZHICdQc^%lY400ttS2QTtLP$y|ywP~r4&Xg2Nk%JU-PG>U)blUr z%m{-@zQIy!74e_}ZWxqs%G43cnEROg28P3bwwCH?sg*l{Z<6rc9A4(fO4aTEB7{1Dt^Fpibv&hQ5hZg-HcbUJLtm2`}{j$gwsr#>TjQlJer z|CPjU#7z$5YL?}J@ZiSWX@PpG`<2Ad4akkUsXx4G>CJr#waB>7!j}kvssScz`5`%; zA+e3f8WO0b{`5*0VWZmS)qzw0ms42H|K(J3CG`z(o`yWx3wHj^SA(2S_B%iAU(T!P z=Mp@6Jy8)JOzj1lwFrZ8wu}R7ymf_qp<1`prBGUHhuJa?y8~JyKwIx3u8m_FYHv-M z#zHNerm=7y@3N=JwmjO(;5^$zI~x;@kNEg+9P0)rjTfVARxh3F5`t}$$*O+;+BQ#B z-S>QkM&;_0+)J1u0>9FY1PzQ$)QPSixGGKN1Q@_%CWd6)r%C7|4B~Sx!T||I$CUQi zT8u@j&<^bl|73riPxcc=Q{!xZL%rqoR1bZ}W4+D!D53y94tbN*4es+?`6NY#ud%O* zk5|6IC6``M!ukvEHj{Tw3zhvR3XNqA2|e)CBvxohxVv$?Pm^4V6+*Xg7Pbr~c_Uc( zB5Qc43x~YM3>MRyvB`Eh)b%03bGTKQY){q^orq0F$a7H%p$fLGrcl>=&#A`Ic-V+uf2IL{j=#Y!^1OfvDIuAj~+ z86PWp}Wqed*iVJltLfe`{x5S{Xjw{s8>rpFb+@mOSg`{BXVu}m1 z&4~?@)766WiFo&A!1){x`K)#=jA!7zq^0(mgtgr?P z0v$fjg6+$pTIE6&JeD-^odhbB3Du(i&>KwA^fVRWU)Saeh!cHk&=*Yo`uq%`ULEmf zwosuic{4wCB#Mo)wG5NC&Mt@$rSxKX6gaj}9DI&epLx^nKcV>PO=~nhp)y5WneN|u zw7F1_uCdyL8^_98GEEE*8_VYkvD76OibiZjhv<1=T3Y~kh;0pfdJt`zE{(w#?|<^? z78x3avB8+$J?L6hcuV$Z%@=Fp0U8ZJak{-lPsAEH9w%p@A>+dJK#kJF%|>%LT9$gU z8-^kxoYqqjHb-oPoDL&+r@?5BR3<_LtxZsr-x$@4atDc^U%? zpWfyuh^9hyEcZJuTJPIP-nX&Q+$F7RBebqvht7%!>{_$L`xal;O1yW?p^0PTLc@9e zxzQ-CzqRTaskUm@w@Za>>Z-S$!glrg+aCx!)HmN*BkWWwE~fXuuGSA&%}mg~v6>O&WMsN3I7QWw0tOej;odbiSy zdkEYnX!j62q4s{SFy$?<_~Xb6NHj=~H|-(bQg^&(v&}}6_-_{w_;A2sgksavJ3{`a zcX99k>wuBOjkggFvPEGCPw()!D6rfosa);p-8*Xi`}sl}^@;ae3Vqaf-fx>)i+rNX zfE=NU9o3DLu&syy43p=o8JAL^+~ZObUT?0rw8et^4=NP*A5E@5C8}30we+O4lh_VC z(c0BGrkjqH1MWGXp^dpF=_iN~3T~)O-LU-r>k!1j#dMD#PbXL98qoCk+ID!u&j}-V zX`j6J7?m~v0ketj9J;-Lfh;=F50Z9jrDgZuZO}n>kRZK>|7jpLdBGAKYwFOa4`h#z&<8szoP%p7S|3R->z5)L0Esu2oxpI31@Mo)2vu=AauD?Db7zsM~}} z^64wp;n`;3(0zi2F4lV7vAwNc{;=zu?Z}1?<@eyibLiXF(^n=neE_15p&Q2;AB6!o zn;1l6`Ix#xrNjZ%Xwq%r&f-ZxgTOTkM9 ze)R90S%OPnrA`iREkp`_Ffm(56H&93 zxk5`n@0MI4Nw8@y<0z@A0tG-#HE0Kk?U)37ZN;L7OY^+c!YPJ=;qKM??N4QFRv5NUy)y%&GuWM z3f{?V#_}J2l@N06Pv0~!jj(9Mt`i$&+I9YkOM~<@O^o9h5B`sJ z3dLOc1u*63LGU&8i*(U{7$Ol_u+gF48o3Xlg#P61zVGeAAz`;~XTC7CGw=68$&uVR zRNG6AevKcn*(JyMMvx~tW`xm*_Q?f8KhHnp7JXca6B0P~3OUxoNHdlsbvTp_6u;Ue zCJFtFiY-!}hDHceri0%2C72ML{TyZ2z62wQ9Lap&6bP-fpKQR#%Gyt`_$+OOF+#O( zep_LsP<`^7wnCNQp(+-2!zQ;Y{SJmX-mzwvJ}ryzZ7u6MPUF@$a`8D4>)Kc2`Wm?o z;^u4I1C87X#Kqp5?B3tV#hS~y!cXF+o@ivRCH6O%#$Z3gxxSCvV*qjwkB|^iiiB@9 zW;sn?da8@$i?h%)&8=p;NZjPpI+S;&W_ zZ##1z6AJmIS0Q(9R-s^pOw}$=YnQLIOMDkDE7mTx+GV$PIjvp3;g^$^uEKC3ff`mIxgL31M#(cedf$ z69~E5cdk^(z&iR}sW4q|o*Xqum?H#!!{IwyCj99y>g-^ldrFz;>W`?X;N5?6-b>;X;sOk)wW@a=_zE~0BbF3MWCso+I;liLaC#F9hj3r!+?_kcr&`w@j` z;A)>f;l*u}dm+?A6}*sb%5|=b#3d)yIUE;dy>H)8p^b-|SOMz?b6SSGNL$&?QL>J< z5|VF17W&;Kxey8Yehi*mbBM076B_dSsJJ~*a*@+<5}qd|j^!2TdLGMRsP5_pXeQR< z%u2|yq_@3Q*?`j*lhP8E$qgtwNW)h>OvtuyzsQqd+5TZdt66vr6<^}ut@9#O+_{PB zwwbde*J3!6lb@6;;RW%YB;5i*PF%Q~1UUPs2gFb`VkqL*q4*5L}B+-&t_ z4j1BPaxG0oa#3G&n50(@r!Z1tfmK6^%1zWNeb6dO1&HWUpi3`>(pCF(rfx2hd~L5q zqCx6J9@3^G$2-?|%Wz?4KJT3WU%S4x;S>y`+JBG5i$%nlihuea*Vyk zz71+asEb;+Q}gl&sgMnv#v0gY^c_Bm!Wken2@bUNPSvoe)xWdoq5 zmhhHb#tX9K(ihl$$^1qfg2FoSLuq!~lpUyn$rdRoJCU&PzR-UW>f69CrkeVPZ#qR+ zqYug%ggXAcziTO`tI}=_d{PuxOB@$z8yz4aL71XKvS=VHx#V8}Ojq>vOxam^mX zH(>M=TG)l{^7%#zxh)$DlJU|pLXUxeEhxH{`!0?Y>{c|4QGNmQ!rItMh!TOJqrf>B zRrjv+*+&U&BKN?E=<-l5r*G;gp{lJ9oXD_HWiPH_3f|8%IUd|kPlAzB@IIX>%JCGi z=<-sg{l2e938Q02kjYhGAZ(4M^cr9JXu%SBEA&OzI?}B1IYtX|0tTi2De{xlFsF&! z>U(gskmBLWD>3|y4HoP_1^#<~TF@k; zYvDKuv=5lEgSFu{!G%}4O!y4s4qRkx=X){CqRzs`g%2#B&)d>w$nZEO&% zB`pLQFT$WQ+cZXjb2fQ|kcZPH2=THCUN?3wAm&b=S|McS-bpNr!O~!$1@<~Ws>(8rA-EiFa#toz1@d2I!5xI($aTP`Ux$4n9?|xGIp>!`29920-pB3r0Hce zSU5(SFKM|Rq4ev%&0~Z#?d8iHy03>9__WYs#jA%iYNJ#33)Kb=Sehzc8jr^ zP;?P1Ngm!P*7yxl6*x}3eqfSkKwq8-5)rE9MFgiZfN*B3mlE&B_8(`3W^{Za9Da

qE~-dUdtQ(u!K7*J7i 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 z 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 diff --git a/distribution/FFXIVAPP.Hooker.dll b/distribution/FFXIVAPP.Hooker.dll new file mode 100644 index 0000000000000000000000000000000000000000..837503b98b79ec8d520fd7bd19b7b90375110ab5 GIT binary patch literal 55296 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

-Z TYg3@u`{0Kh&->`zkplk$+H1BN literal 0 HcmV?d00001 diff --git a/distribution/FFXIVAPP.Updater.exe b/distribution/FFXIVAPP.Updater.exe index 3a1c6fd40b4766bede2d3ddda15be3e6e10a6afe..51795f4442289ccb99e19f6c1bf18768202995c2 100644 GIT binary patch delta 185 zcmZqpAlvXkc0vbpX6Lqz-GO2(W@0vxn;(c(i1Nq1zSMT+)$Ioq zFaj~t_H-TQjq5>Lrc2*pmK3t0>g29BrWV?MahS>D~CG6Iy%BDY5WZbo#v5fsc FBLLdSKsf*a delta 185 zcmZqpAlvXkc0vcU!=FtXy932ojKyB`Y z7d^&e3=E76Kze(9A^T=VUSkG524e;@1_K6j2BYov#Ta7K|Cg{^qbi&JP?2%hcE&RH G|BL|j#6Ug( diff --git a/distribution/SharpDX.D3DCompiler.dll b/distribution/SharpDX.D3DCompiler.dll deleted file mode 100644 index 2430da8babc1ab53ae9f623a714f40baf1442f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44032 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 F{|BJAFFpVO diff --git a/distribution/SharpDX.D3DCompiler.xml b/distribution/SharpDX.D3DCompiler.xml deleted file mode 100644 index af07ed70..00000000 --- a/distribution/SharpDX.D3DCompiler.xml +++ /dev/null @@ -1,4882 +0,0 @@ - - - - SharpDX.D3DCompiler - - - -

- The assembly is a managed Direct3D Compiler API. - - dd607340 - D3DCompiler - D3DCompiler - - - - Shader compilation results. - - - - - Initializes a new instance of the class. - - The bytecode. - The result code. - The message. - - - - Performs an implicit conversion from to . - - The input. - - The result of the conversion. - - - - - Performs an implicit conversion from to byte array - - The input. - - The result of the conversion. - - - - - Warming, the following code is manually copied from generated code from Direct3D10 compiler. - We need to access this method in order to compile Direct3D10 Effects with plain old D3D10CompileEffectFromMemory function. - - - Functions - - - - - - Compiles the effect10 from memory. - - The data ref. - Length of the data. - The SRC file name ref. - The defines ref. - The include ref. - The h LSL flags. - The f X flags. - The compiled effect out. - The errors out. - Result code. - HRESULT D3D10CompileEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] D3DCOMPILE_SHADER_FLAGS HLSLFlags,[In] D3DCOMPILE_EFFECT_FLAGS FXFlags,[In] ID3D10Blob** ppCompiledEffect,[In] ID3D10Blob** ppErrors) - - - -

Retrieves a specific part from a compilation result.

-
-

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

-

Length of uncompiled shader data that pSrcData points to.

-

A -typed value that specifies the part of the buffer to retrieve.

-

Flags that indicate how to retrieve the blob part. Currently, no flags are defined.

-

The address of a reference to the ID3DBlob interface that is used to retrieve the specified part of the buffer.

-

Returns one of the Direct3D 11 return codes.

- -

retrieves the part of a blob (arbitrary length data buffer) that contains the type of data that the Part parameter specifies.

Windows Phone 8.1: This API is supported.

-
- - ff728674 - HRESULT D3DGetBlobPart([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3D_BLOB_PART Part,[In] unsigned int Flags,[Out] ID3D10Blob** ppPart) - D3DGetBlobPart -
- - -

Note??You can use this API to develop your Windows Store apps, but you can't use it in apps that you submit to the Windows Store.

Decompresses one or more shaders from a compressed set.

-
-

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

-

Length of uncompiled shader data that pSrcData points to.

-

The number of shaders to decompress.

-

The index of the first shader to decompress.

-

An array of indexes that represent the shaders to decompress.

-

Flags that indicate how to decompress. Currently, no flags are defined.

-

The address of a reference to the ID3DBlob interface that is used to retrieve the decompressed shader data.

-

A reference to a variable that receives the total number of shaders that decompressed.

-

Returns one of the Direct3D 11 return codes.

- - ff728673 - HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) - D3DDecompressShaders -
- - -

Disassembles compiled HLSL code.

-
-

A reference to source data as compiled HLSL code.

-

Length of pSrcData.

-

Flags affecting the behavior of . Flags can be a combination of zero or more of the following values.

FlagDescription
Enable the output of color codes.
Enable the output of default values.
Enable instruction numbering.
No effect.

?

-

The optional comment string at the top of the shader that identifies the shader constants and variables.

-

A reference to a buffer that receives the ID3DBlob interface that accesses assembly text.

-

Returns one of the Direct3D 11 return codes.

- -

Windows Phone 8.1: This API is supported.

-
- - dd607326 - HRESULT D3DDisassemble([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3DCOMPILE_DISASM_FLAGS Flags,[In, Optional] const char* szComments,[Out] ID3D10Blob** ppDisassembly) - D3DDisassemble -
- - -

Compile HLSL code or an effect file into bytecode for a given target.

-
-

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

-

Length of pSrcData.

-

Optional. You can use this parameter for strings that specify error messages. If not used, set to null.

-

Optional. An array of null-terminated macro definitions (see ).

-

Optional. A reference to an for handling include files. Setting this to null will cause a compile error if a shader contains a #include. You can pass the D3D_COMPILE_STANDARD_FILE_INCLUDE macro, which is a reference to a default include handler. This default include handler includes files that are relative to the current directory and files that are relative to the directory of the initial source file. When you use D3D_COMPILE_STANDARD_FILE_INCLUDE, you must specify the source file name in the pSourceName parameter; the compiler will derive the initial relative directory from pSourceName.

#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((*)()1)
-

The name of the shader entry point function where shader execution begins. When you compile an effect, ignores pEntrypoint; we recommend that you set pEntrypoint to null because it is good programming practice to set a reference parameter to null if the called function will not use it.

-

A string that specifies the shader target or set of shader features to compile against. The shader target can be shader model 2, shader model 3, shader model 4, or shader model 5. The target can also be an effect type (for example, fx_4_1). For info about the targets that various profiles support, see Specifying Compiler Targets.

-

Shader compile options.

-

Effect compile options. When you compile a shader and not an effect file, ignores Flags2; we recommend that you set Flags2 to zero because it is good programming practice to set a nonreference parameter to zero if the called function will not use it.

-

A reference to a variable that receives a reference to the ID3DBlob interface that you can use to access the compiled code.

-

An optional reference to a variable that receives a reference to the ID3DBlob interface that you can use to access compiler error messages, or null if there are no errors.

-

Returns one of the Direct3D 11 return codes.

- -

Windows Phone 8.1: This API is supported.

-
- - dd607324 - HRESULT D3DCompile([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] const char* pSourceName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In, Optional] ID3DInclude* pInclude,[In] const char* pEntrypoint,[In] const char* pTarget,[In] D3DCOMPILE_SHADER_FLAGS Flags1,[In] D3DCOMPILE_EFFECT_FLAGS Flags2,[Out] ID3D10Blob** ppCode,[Out, Optional] ID3D10Blob** ppErrorMsgs) - D3DCompile -
- - -

Removes unwanted blobs from a compilation result.

-
-

A reference to source data as compiled HLSL code.

-

Length of pSrcData.

-

Strip flag options, represented by .

-

A reference to a variable that receives a reference to the ID3DBlob interface that you can use to access the unwanted stripped out shader code.

-

Returns one of the Direct3D 11 return codes.

- -

Windows Phone 8.1: This API is supported.

-
- - dd607335 - HRESULT D3DStripShader([In, Buffer] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In] D3DCOMPILER_STRIP_FLAGS uStripFlags,[Out] ID3D10Blob** ppStrippedBlob) - D3DStripShader -
- - -

Preprocesses uncompiled HLSL code.

-
-

A reference to uncompiled shader data; either ASCII HLSL code or a compiled effect.

-

Length of pSrcData.

-

Optional. The name of the file that contains the uncompiled HLSL code.

-

Optional. An array of null-terminated macro definitions (see ).

-

Optional. A reference to an for handling include files. Setting this to null will cause a compile error if a shader contains a #include. You can pass the D3D_COMPILE_STANDARD_FILE_INCLUDE macro, which is a reference to a default include handler. This default include handler includes files that are relative to the current directory and files that are relative to the directory of the initial source file. When you use D3D_COMPILE_STANDARD_FILE_INCLUDE, you must specify the source file name in the pSourceName parameter; the compiler will derive the initial relative directory from pSourceName.

#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((*)()1)
-

The address of a ID3DBlob that contains the compiled code.

-

Optional. A reference to an ID3DBlob that contains compiler error messages, or null if there were no errors.

-

Returns one of the Direct3D 11 return codes.

- -

outputs #line directives and preserves line numbering of source input so that output line numbering can be properly related to the input source.

Windows Phone 8.1: This API is supported.

-
- - dd607332 - HRESULT D3DPreprocess([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] const char* pSourceName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In, Optional] ID3DInclude* pInclude,[Out] ID3D10Blob** ppCodeText,[Out, Optional] ID3D10Blob** ppErrorMsgs) - D3DPreprocess -
- - -

Note??You can use this API to develop your Windows Store apps, but you can't use it in apps that you submit to the Windows Store.

Compresses a set of shaders into a more compact form.

-
-

The number of shaders to compress.

-

An array of structures that describe the set of shaders to compress.

-

Flags that indicate how to compress the shaders. Currently, only the D3D_COMPRESS_SHADER_KEEP_ALL_PARTS (0x00000001) flag is defined.

-

The address of a reference to the ID3DBlob interface that is used to retrieve the compressed shader data.

-

Returns one of the Direct3D 11 return codes.

- - ff728671 - HRESULT D3DCompressShaders([In] unsigned int uNumShaders,[In, Buffer] D3D_SHADER_DATA* pShaderData,[In] unsigned int uFlags,[Out] ID3D10Blob** ppCompressedData) - D3DCompressShaders -
- - -

Gets a reference to a reflection interface.

-
-

A reference to source data as compiled HLSL code.

-

Length of pSrcData.

-

The reference of the COM interface to use. For example, IID_ID3D11ShaderReflection.

-

A reference to a reflection interface.

-

Returns one of the Direct3D 11 return codes.

- -

Shader code contains metadata that can be inspected using the reflection APIs.

The following code illustrates retrieving a Interface from a shader.

 pd3dDevice->CreatePixelShader( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(), g_pPSClassLinkage, &g_pPixelShader ); * pReflector = null; 	
-            ( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(),  IID_ID3D11ShaderReflection, (void**) &pReflector);	
-            

Windows Phone 8.1: This API is supported.

-
- - dd607334 - HRESULT D3DReflect([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] const GUID& pInterface,[Out] void** ppReflector) - D3DReflect -
- - -

Note?? may be altered or unavailable for releases after Windows?8.1. Instead use with the value.

Gets the input signature from a compilation result.

-
- No documentation. - No documentation. - No documentation. -

Returns one of the Direct3D 11 return codes.

- - dd607330 - HRESULT D3DGetInputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) - D3DGetInputSignatureBlob -
- - -

Note?? may be altered or unavailable for releases after Windows?8.1. Instead use with the value.

Gets the input and output signatures from a compilation result.

-
- No documentation. - No documentation. - No documentation. -

Returns one of the Direct3D 11 return codes.

- - dd607329 - HRESULT D3DGetInputAndOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) - D3DGetInputAndOutputSignatureBlob -
- - -

Note?? may be altered or unavailable for releases after Windows?8.1. Instead use with the value.

Gets the output signature from a compilation result.

-
- No documentation. - No documentation. - No documentation. -

Returns one of the Direct3D 11 return codes.

- - dd607331 - HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) - D3DGetOutputSignatureBlob -
- - -

Note??You can use this API to develop your Windows Store apps, but you can't use it in apps that you submit to the Windows Store.

Gets shader debug information.

-
-

A reference to source data; either uncompiled or compiled HLSL code.

-

Length of pSrcData.

-

A reference to a buffer that receives the ID3DBlob interface that contains debug information.

-

Returns one of the Direct3D 11 return codes.

- -

Debug information is embedded in the body of the shader after calling .

-
- - dd607328 - HRESULT D3DGetDebugInfo([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppDebugInfo) - D3DGetDebugInfo -
- - -

Values that identify the indended use of a constant-data buffer.

-
- -

-typed values are specified in the uFlags member of the structure.

-
- - ff728729 - D3D_SHADER_CBUFFER_FLAGS - D3D_SHADER_CBUFFER_FLAGS -
- - -

Bind the constant buffer to an input slot defined in HLSL code (instead of letting the compiler choose the input slot).

-
- - ff728729 - D3D_CBF_USERPACKED - D3D_CBF_USERPACKED -
- - - None. - - - None - None - - - -

Values that identify the intended use of constant-buffer data.

-
- - ff728722 - D3D_CBUFFER_TYPE - D3D_CBUFFER_TYPE -
- - -

A buffer containing scalar constants.

-
- - ff728722 - D3D_CT_CBUFFER - D3D_CT_CBUFFER -
- - -

A buffer containing texture data.

-
- - ff728722 - D3D_CT_TBUFFER - D3D_CT_TBUFFER -
- - -

A buffer containing interface references.

-
- - ff728722 - D3D_CT_INTERFACE_POINTERS - D3D_CT_INTERFACE_POINTERS -
- - -

A buffer containing binding information.

-
- - ff728722 - D3D_CT_RESOURCE_BIND_INFO - D3D_CT_RESOURCE_BIND_INFO -
- - - No documentation. - - - D3DCOMPILE_DISASM_FLAGS - D3DCOMPILE_DISASM_FLAGS - - - - No documentation. - - - D3D_DISASM_ENABLE_COLOR_CODE - D3D_DISASM_ENABLE_COLOR_CODE - - - - No documentation. - - - D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS - D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS - - - - No documentation. - - - D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING - D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING - - - - No documentation. - - - D3D_DISASM_ENABLE_INSTRUCTION_CYCLE - D3D_DISASM_ENABLE_INSTRUCTION_CYCLE - - - - No documentation. - - - D3D_DISASM_DISABLE_DEBUG_INFO - D3D_DISASM_DISABLE_DEBUG_INFO - - - - None. - - - None - None - - - - No documentation. - - - D3DCOMPILE_EFFECT_FLAGS - D3DCOMPILE_EFFECT_FLAGS - - - - No documentation. - - - D3DCOMPILE_EFFECT_CHILD_EFFECT - D3DCOMPILE_EFFECT_CHILD_EFFECT - - - - No documentation. - - - D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS - D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS - - - - None. - - - None - None - - - -

Values that indicate the location of a shader #include file.

-
- -

You pass a -typed value to the IncludeType parameter in a call to the method to indicate the location of the #include file.

-
- - ff728723 - D3D_INCLUDE_TYPE - D3D_INCLUDE_TYPE -
- - -

The local directory.

-
- - ff728723 - D3D_INCLUDE_LOCAL - D3D_INCLUDE_LOCAL -
- - -

The system directory.

-
- - ff728723 - D3D_INCLUDE_SYSTEM - D3D_INCLUDE_SYSTEM -
- - -

Values that indicate how the pipeline interprets geometry or hull shader input primitives.

-
- -

The method returns a -typed value.

-
- - ff728725 - D3D_PRIMITIVE - D3D_PRIMITIVE -
- - -

The shader has not been initialized with an input primitive type.

-
- - ff728725 - D3D_PRIMITIVE_UNDEFINED - D3D_PRIMITIVE_UNDEFINED -
- - -

Interpret the input primitive as a point.

-
- - ff728725 - D3D_PRIMITIVE_POINT - D3D_PRIMITIVE_POINT -
- - -

Interpret the input primitive as a line.

-
- - ff728725 - D3D_PRIMITIVE_LINE - D3D_PRIMITIVE_LINE -
- - -

Interpret the input primitive as a triangle.

-
- - ff728725 - D3D_PRIMITIVE_TRIANGLE - D3D_PRIMITIVE_TRIANGLE -
- - -

Interpret the input primitive as a line with adjacency data.

-
- - ff728725 - D3D_PRIMITIVE_LINE_ADJ - D3D_PRIMITIVE_LINE_ADJ -
- - -

Interpret the input primitive as a triangle with adjacency data.

-
- - ff728725 - D3D_PRIMITIVE_TRIANGLE_ADJ - D3D_PRIMITIVE_TRIANGLE_ADJ -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_1_CONTROL_POINT_PATCH - D3D_PRIMITIVE_1_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_2_CONTROL_POINT_PATCH - D3D_PRIMITIVE_2_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_3_CONTROL_POINT_PATCH - D3D_PRIMITIVE_3_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_4_CONTROL_POINT_PATCH - D3D_PRIMITIVE_4_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_5_CONTROL_POINT_PATCH - D3D_PRIMITIVE_5_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_6_CONTROL_POINT_PATCH - D3D_PRIMITIVE_6_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_7_CONTROL_POINT_PATCH - D3D_PRIMITIVE_7_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_8_CONTROL_POINT_PATCH - D3D_PRIMITIVE_8_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_9_CONTROL_POINT_PATCH - D3D_PRIMITIVE_9_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_10_CONTROL_POINT_PATCH - D3D_PRIMITIVE_10_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_11_CONTROL_POINT_PATCH - D3D_PRIMITIVE_11_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_12_CONTROL_POINT_PATCH - D3D_PRIMITIVE_12_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_13_CONTROL_POINT_PATCH - D3D_PRIMITIVE_13_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_14_CONTROL_POINT_PATCH - D3D_PRIMITIVE_14_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_15_CONTROL_POINT_PATCH - D3D_PRIMITIVE_15_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_16_CONTROL_POINT_PATCH - D3D_PRIMITIVE_16_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_17_CONTROL_POINT_PATCH - D3D_PRIMITIVE_17_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_18_CONTROL_POINT_PATCH - D3D_PRIMITIVE_18_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_19_CONTROL_POINT_PATCH - D3D_PRIMITIVE_19_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_20_CONTROL_POINT_PATCH - D3D_PRIMITIVE_20_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_21_CONTROL_POINT_PATCH - D3D_PRIMITIVE_21_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_22_CONTROL_POINT_PATCH - D3D_PRIMITIVE_22_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_23_CONTROL_POINT_PATCH - D3D_PRIMITIVE_23_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_24_CONTROL_POINT_PATCH - D3D_PRIMITIVE_24_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_25_CONTROL_POINT_PATCH - D3D_PRIMITIVE_25_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_26_CONTROL_POINT_PATCH - D3D_PRIMITIVE_26_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_27_CONTROL_POINT_PATCH - D3D_PRIMITIVE_27_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_28_CONTROL_POINT_PATCH - D3D_PRIMITIVE_28_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_29_CONTROL_POINT_PATCH - D3D_PRIMITIVE_29_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_30_CONTROL_POINT_PATCH - D3D_PRIMITIVE_30_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_31_CONTROL_POINT_PATCH - D3D_PRIMITIVE_31_CONTROL_POINT_PATCH -
- - -

Interpret the input primitive as a control point patch.

-
- - ff728725 - D3D_PRIMITIVE_32_CONTROL_POINT_PATCH - D3D_PRIMITIVE_32_CONTROL_POINT_PATCH -
- - -

Values that identify the data types that can be stored in a register.

-
- -

A register component type is specified in the ComponentType member of the structure.

-
- - ff728727 - D3D_REGISTER_COMPONENT_TYPE - D3D_REGISTER_COMPONENT_TYPE -
- - -

The data type is unknown.

-
- - ff728727 - D3D_REGISTER_COMPONENT_UNKNOWN - D3D_REGISTER_COMPONENT_UNKNOWN -
- - -

32-bit unsigned integer.

-
- - ff728727 - D3D_REGISTER_COMPONENT_UINT32 - D3D_REGISTER_COMPONENT_UINT32 -
- - -

32-bit signed integer.

-
- - ff728727 - D3D_REGISTER_COMPONENT_SINT32 - D3D_REGISTER_COMPONENT_SINT32 -
- - -

32-bit floating-point number.

-
- - ff728727 - D3D_REGISTER_COMPONENT_FLOAT32 - D3D_REGISTER_COMPONENT_FLOAT32 -
- - -

Values that identify the return type of a resource.

-
- -

A resource return type is specified in the ReturnType member of the structure.

-
- - ff728728 - D3D_RESOURCE_RETURN_TYPE - D3D_RESOURCE_RETURN_TYPE -
- - -

Return type is an unsigned integer value normalized to a value between 0 and 1.

-
- - ff728728 - D3D_RETURN_TYPE_UNORM - D3D_RETURN_TYPE_UNORM -
- - -

Return type is a signed integer value normalized to a value between -1 and 1.

-
- - ff728728 - D3D_RETURN_TYPE_SNORM - D3D_RETURN_TYPE_SNORM -
- - -

Return type is a signed integer.

-
- - ff728728 - D3D_RETURN_TYPE_SINT - D3D_RETURN_TYPE_SINT -
- - -

Return type is an unsigned integer.

-
- - ff728728 - D3D_RETURN_TYPE_UINT - D3D_RETURN_TYPE_UINT -
- - -

Return type is a floating-point number.

-
- - ff728728 - D3D_RETURN_TYPE_FLOAT - D3D_RETURN_TYPE_FLOAT -
- - -

Return type is unknown.

-
- - ff728728 - D3D_RETURN_TYPE_MIXED - D3D_RETURN_TYPE_MIXED -
- - -

Return type is a double-precision value.

-
- - ff728728 - D3D_RETURN_TYPE_DOUBLE - D3D_RETURN_TYPE_DOUBLE -
- - -

Return type is a multiple-dword type, such as a double or uint64, and the component is continued from the previous component that was declared. The first component represents the lower bits.

-
- - ff728728 - D3D_RETURN_TYPE_CONTINUED - D3D_RETURN_TYPE_CONTINUED -
- - - No documentation. - - - D3DCOMPILE_SECDATA_FLAGS - D3DCOMPILE_SECDATA_FLAGS - - - - None. - - - None - None - - - -

Values that identify parts of the content of an arbitrary length data buffer.

-
- -

These values are passed to the or D3DSetBlobPart function.

-
- - ff728720 - D3D_BLOB_PART - D3D_BLOB_PART -
- - - No documentation. - - - ff728720 - D3D_BLOB_INPUT_SIGNATURE_BLOB - D3D_BLOB_INPUT_SIGNATURE_BLOB - - - - No documentation. - - - ff728720 - D3D_BLOB_OUTPUT_SIGNATURE_BLOB - D3D_BLOB_OUTPUT_SIGNATURE_BLOB - - - - No documentation. - - - ff728720 - D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB - D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB - - - - No documentation. - - - ff728720 - D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB - D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB - - - - No documentation. - - - ff728720 - D3D_BLOB_ALL_SIGNATURE_BLOB - D3D_BLOB_ALL_SIGNATURE_BLOB - - - - No documentation. - - - ff728720 - D3D_BLOB_DEBUG_INFO - D3D_BLOB_DEBUG_INFO - - - - No documentation. - - - ff728720 - D3D_BLOB_LEGACY_SHADER - D3D_BLOB_LEGACY_SHADER - - - - No documentation. - - - ff728720 - D3D_BLOB_XNA_PREPASS_SHADER - D3D_BLOB_XNA_PREPASS_SHADER - - - - No documentation. - - - ff728720 - D3D_BLOB_XNA_SHADER - D3D_BLOB_XNA_SHADER - - - - No documentation. - - - ff728720 - D3D_BLOB_TEST_ALTERNATE_SHADER - D3D_BLOB_TEST_ALTERNATE_SHADER - - - - No documentation. - - - ff728720 - D3D_BLOB_TEST_COMPILE_DETAILS - D3D_BLOB_TEST_COMPILE_DETAILS - - - - No documentation. - - - ff728720 - D3D_BLOB_TEST_COMPILE_PERF - D3D_BLOB_TEST_COMPILE_PERF - - - -

Describes a shader.

-
- -

A shader is written in HLSL and compiled into an intermediate language by the HLSL compiler. The shader description returns information about the compiled shader. Get a shader description by calling .

-
- - ff476209 - D3DCOMPILE_SHADER_FLAGS - D3DCOMPILE_SHADER_FLAGS -
- - -

Shader version.

-
- - ff476209 - D3DCOMPILE_DEBUG - D3DCOMPILE_DEBUG -
- - -

The name of the originator of the shader.

-
- - ff476209 - D3DCOMPILE_SKIP_VALIDATION - D3DCOMPILE_SKIP_VALIDATION -
- - -

Shader compilation/parse flags.

-
- - ff476209 - D3DCOMPILE_SKIP_OPTIMIZATION - D3DCOMPILE_SKIP_OPTIMIZATION -
- - -

The number of shader-constant buffers.

-
- - ff476209 - D3DCOMPILE_PACK_MATRIX_ROW_MAJOR - D3DCOMPILE_PACK_MATRIX_ROW_MAJOR -
- - -

The number of resource (textures and buffers) bound to a shader.

-
- - ff476209 - D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR - D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR -
- - -

The number of parameters in the input signature.

-
- - ff476209 - D3DCOMPILE_PARTIAL_PRECISION - D3DCOMPILE_PARTIAL_PRECISION -
- - -

The number of parameters in the output signature.

-
- - ff476209 - D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT - D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT -
- - -

The number of intermediate-language instructions in the compiled shader.

-
- - ff476209 - D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT - D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT -
- - -

The number of temporary registers in the compiled shader.

-
- - ff476209 - D3DCOMPILE_NO_PRESHADER - D3DCOMPILE_NO_PRESHADER -
- - -

Number of temporary arrays used.

-
- - ff476209 - D3DCOMPILE_AVOID_FLOW_CONTROL - D3DCOMPILE_AVOID_FLOW_CONTROL -
- - -

Number of constant defines.

-
- - ff476209 - D3DCOMPILE_PREFER_FLOW_CONTROL - D3DCOMPILE_PREFER_FLOW_CONTROL -
- - -

Number of declarations (input + output).

-
- - ff476209 - D3DCOMPILE_ENABLE_STRICTNESS - D3DCOMPILE_ENABLE_STRICTNESS -
- - -

Number of non-categorized texture instructions.

-
- - ff476209 - D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY - D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY -
- - -

Number of texture load instructions

-
- - ff476209 - D3DCOMPILE_IEEE_STRICTNESS - D3DCOMPILE_IEEE_STRICTNESS -
- - -

Number of texture comparison instructions

-
- - ff476209 - D3DCOMPILE_OPTIMIZATION_LEVEL0 - D3DCOMPILE_OPTIMIZATION_LEVEL0 -
- - -

Number of texture bias instructions

-
- - ff476209 - D3DCOMPILE_OPTIMIZATION_LEVEL1 - D3DCOMPILE_OPTIMIZATION_LEVEL1 -
- - -

Number of texture gradient instructions.

-
- - ff476209 - D3DCOMPILE_OPTIMIZATION_LEVEL2 - D3DCOMPILE_OPTIMIZATION_LEVEL2 -
- - -

Number of floating point arithmetic instructions used.

-
- - ff476209 - D3DCOMPILE_OPTIMIZATION_LEVEL3 - D3DCOMPILE_OPTIMIZATION_LEVEL3 -
- - -

Number of signed integer arithmetic instructions used.

-
- - ff476209 - D3DCOMPILE_RESERVED16 - D3DCOMPILE_RESERVED16 -
- - -

Number of unsigned integer arithmetic instructions used.

-
- - ff476209 - D3DCOMPILE_RESERVED17 - D3DCOMPILE_RESERVED17 -
- - -

Number of static flow control instructions used.

-
- - ff476209 - D3DCOMPILE_WARNINGS_ARE_ERRORS - D3DCOMPILE_WARNINGS_ARE_ERRORS -
- - - None. - - - None - None - - - -

Values that identify shader-input options.

-
- -

-typed values are specified in the uFlags member of the structure.

-
- - ff728730 - D3D_SHADER_INPUT_FLAGS - D3D_SHADER_INPUT_FLAGS -
- - -

Assign a shader input to a register based on the register assignment in the HLSL code (instead of letting the compiler choose the register).

-
- - ff728730 - D3D_SIF_USERPACKED - D3D_SIF_USERPACKED -
- - -

Use a comparison sampler, which uses the SampleCmp (DirectX HLSL Texture Object) and SampleCmpLevelZero (DirectX HLSL Texture Object) sampling functions.

-
- - ff728730 - D3D_SIF_COMPARISON_SAMPLER - D3D_SIF_COMPARISON_SAMPLER -
- - -

A 2-bit value for encoding texture components.

-
- - ff728730 - D3D_SIF_TEXTURE_COMPONENT_0 - D3D_SIF_TEXTURE_COMPONENT_0 -
- - -

A 2-bit value for encoding texture components.

-
- - ff728730 - D3D_SIF_TEXTURE_COMPONENT_1 - D3D_SIF_TEXTURE_COMPONENT_1 -
- - -

A 2-bit value for encoding texture components.

-
- - ff728730 - D3D_SIF_TEXTURE_COMPONENTS - D3D_SIF_TEXTURE_COMPONENTS -
- - - None. - - - None - None - - - -

Values that identify resource types that can be bound to a shader and that are reflected as part of the resource description for the shader.

-
- -

-typed values are specified in the Type member of the structure.

-
- - ff728731 - D3D_SHADER_INPUT_TYPE - D3D_SHADER_INPUT_TYPE -
- - -

The shader resource is a constant buffer.

-
- - ff728731 - D3D_SIT_CBUFFER - D3D_SIT_CBUFFER -
- - -

The shader resource is a texture buffer.

-
- - ff728731 - D3D_SIT_TBUFFER - D3D_SIT_TBUFFER -
- - -

The shader resource is a texture.

-
- - ff728731 - D3D_SIT_TEXTURE - D3D_SIT_TEXTURE -
- - -

The shader resource is a sampler.

-
- - ff728731 - D3D_SIT_SAMPLER - D3D_SIT_SAMPLER -
- - -

The shader resource is a read-and-write buffer.

-
- - ff728731 - D3D_SIT_UAV_RWTYPED - D3D_SIT_UAV_RWTYPED -
- - -

The shader resource is a structured buffer.

For more information about structured buffer, see the Remarks section.

-
- - ff728731 - D3D_SIT_STRUCTURED - D3D_SIT_STRUCTURED -
- - -

The shader resource is a read-and-write structured buffer.

-
- - ff728731 - D3D_SIT_UAV_RWSTRUCTURED - D3D_SIT_UAV_RWSTRUCTURED -
- - -

The shader resource is a byte-address buffer.

-
- - ff728731 - D3D_SIT_BYTEADDRESS - D3D_SIT_BYTEADDRESS -
- - -

The shader resource is a read-and-write byte-address buffer.

-
- - ff728731 - D3D_SIT_UAV_RWBYTEADDRESS - D3D_SIT_UAV_RWBYTEADDRESS -
- - -

The shader resource is an append-structured buffer.

-
- - ff728731 - D3D_SIT_UAV_APPEND_STRUCTURED - D3D_SIT_UAV_APPEND_STRUCTURED -
- - -

The shader resource is a consume-structured buffer.

-
- - ff728731 - D3D_SIT_UAV_CONSUME_STRUCTURED - D3D_SIT_UAV_CONSUME_STRUCTURED -
- - -

The shader resource is a read-and-write structured buffer that uses the built-in counter to append or consume.

-
- - ff728731 - D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER - D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER -
- - -

Values that identify the class of a shader variable.

-
- -

The class of a shader variable is not a programming class; the class identifies the variable class such as scalar, vector, object, and so on. -typed values are specified in the Class member of the structure.

-
- - ff728733 - D3D_SHADER_VARIABLE_CLASS - D3D_SHADER_VARIABLE_CLASS -
- - -

The shader variable is a scalar.

-
- - ff728733 - D3D_SVC_SCALAR - D3D_SVC_SCALAR -
- - -

The shader variable is a vector.

-
- - ff728733 - D3D_SVC_VECTOR - D3D_SVC_VECTOR -
- - -

The shader variable is a row-major matrix.

-
- - ff728733 - D3D_SVC_MATRIX_ROWS - D3D_SVC_MATRIX_ROWS -
- - -

The shader variable is a column-major matrix.

-
- - ff728733 - D3D_SVC_MATRIX_COLUMNS - D3D_SVC_MATRIX_COLUMNS -
- - -

The shader variable is an object.

-
- - ff728733 - D3D_SVC_OBJECT - D3D_SVC_OBJECT -
- - -

The shader variable is a structure.

-
- - ff728733 - D3D_SVC_STRUCT - D3D_SVC_STRUCT -
- - -

The shader variable is a class.

-
- - ff728733 - D3D_SVC_INTERFACE_CLASS - D3D_SVC_INTERFACE_CLASS -
- - -

The shader variable is an interface.

-
- - ff728733 - D3D_SVC_INTERFACE_POINTER - D3D_SVC_INTERFACE_POINTER -
- - -

Values that identify information about a shader variable.

-
- -

A call to the method returns values in the uFlags member of a structure.

-
- - ff728734 - D3D_SHADER_VARIABLE_FLAGS - D3D_SHADER_VARIABLE_FLAGS -
- - -

Indicates that the registers assigned to this shader variable were explicitly declared in shader code (instead of automatically assigned by the compiler).

-
- - ff728734 - D3D_SVF_USERPACKED - D3D_SVF_USERPACKED -
- - -

Indicates that this variable is used by this shader. This value confirms that a particular shader variable (which can be common to many different shaders) is indeed used by a particular shader.

-
- - ff728734 - D3D_SVF_USED - D3D_SVF_USED -
- - -

Indicates that this variable is an interface.

-
- - ff728734 - D3D_SVF_INTERFACE_POINTER - D3D_SVF_INTERFACE_POINTER -
- - -

Indicates that this variable is a parameter of an interface.

-
- - ff728734 - D3D_SVF_INTERFACE_PARAMETER - D3D_SVF_INTERFACE_PARAMETER -
- - - None. - - - None - None - - - -

Values that identify various data, texture, and buffer types that can be assigned to a shader variable.

-
- -

A call to the method returns a value in the Type member of a structure.

The types in a structured buffer describe the structure of the elements in the buffer. The layout of these types generally match their C++ struct counterparts. The following examples show structured buffers:

struct mystruct {float4 val; uint ind;}; RWStructuredBuffer<mystruct> rwbuf;	
-            RWStructuredBuffer<float3> rwbuf2;
-
- - ff728735 - D3D_SHADER_VARIABLE_TYPE - D3D_SHADER_VARIABLE_TYPE -
- - -

The variable is a void reference.

-
- - ff728735 - D3D_SVT_VOID - D3D_SVT_VOID -
- - -

The variable is a boolean.

-
- - ff728735 - D3D_SVT_BOOL - D3D_SVT_BOOL -
- - -

The variable is an integer.

-
- - ff728735 - D3D_SVT_INT - D3D_SVT_INT -
- - -

The variable is a floating-point number.

-
- - ff728735 - D3D_SVT_FLOAT - D3D_SVT_FLOAT -
- - -

The variable is a string.

-
- - ff728735 - D3D_SVT_STRING - D3D_SVT_STRING -
- - -

The variable is a texture.

-
- - ff728735 - D3D_SVT_TEXTURE - D3D_SVT_TEXTURE -
- - -

The variable is a 1D texture.

-
- - ff728735 - D3D_SVT_TEXTURE1D - D3D_SVT_TEXTURE1D -
- - -

The variable is a 2D texture.

-
- - ff728735 - D3D_SVT_TEXTURE2D - D3D_SVT_TEXTURE2D -
- - -

The variable is a 3D texture.

-
- - ff728735 - D3D_SVT_TEXTURE3D - D3D_SVT_TEXTURE3D -
- - -

The variable is a texture cube.

-
- - ff728735 - D3D_SVT_TEXTURECUBE - D3D_SVT_TEXTURECUBE -
- - -

The variable is a sampler.

-
- - ff728735 - D3D_SVT_SAMPLER - D3D_SVT_SAMPLER -
- - -

The variable is a pixel shader.

-
- - ff728735 - D3D_SVT_SAMPLER1D - D3D_SVT_SAMPLER1D -
- - -

The variable is a vertex shader.

-
- - ff728735 - D3D_SVT_SAMPLER2D - D3D_SVT_SAMPLER2D -
- - -

The variable is an unsigned integer.

-
- - ff728735 - D3D_SVT_SAMPLER3D - D3D_SVT_SAMPLER3D -
- - -

The variable is an 8-bit unsigned integer.

-
- - ff728735 - D3D_SVT_SAMPLERCUBE - D3D_SVT_SAMPLERCUBE -
- - -

The variable is a pixel shader.

-
- - ff728735 - D3D_SVT_PIXELSHADER - D3D_SVT_PIXELSHADER -
- - -

The variable is a vertex shader.

-
- - ff728735 - D3D_SVT_VERTEXSHADER - D3D_SVT_VERTEXSHADER -
- - -

The variable is a depth-stencil-state object.

-
- - ff728735 - D3D_SVT_PIXELFRAGMENT - D3D_SVT_PIXELFRAGMENT -
- - -

The variable is a blend-state object.

-
- - ff728735 - D3D_SVT_VERTEXFRAGMENT - D3D_SVT_VERTEXFRAGMENT -
- - -

The variable is an unsigned integer.

-
- - ff728735 - D3D_SVT_UINT - D3D_SVT_UINT -
- - -

The variable is an 8-bit unsigned integer.

-
- - ff728735 - D3D_SVT_UINT8 - D3D_SVT_UINT8 -
- - -

The variable is a geometry shader.

-
- - ff728735 - D3D_SVT_GEOMETRYSHADER - D3D_SVT_GEOMETRYSHADER -
- - -

The variable is a rasterizer-state object.

-
- - ff728735 - D3D_SVT_RASTERIZER - D3D_SVT_RASTERIZER -
- - -

The variable is a depth-stencil-state object.

-
- - ff728735 - D3D_SVT_DEPTHSTENCIL - D3D_SVT_DEPTHSTENCIL -
- - -

The variable is a blend-state object.

-
- - ff728735 - D3D_SVT_BLEND - D3D_SVT_BLEND -
- - -

The variable is a buffer.

-
- - ff728735 - D3D_SVT_BUFFER - D3D_SVT_BUFFER -
- - -

The variable is a constant buffer.

-
- - ff728735 - D3D_SVT_CBUFFER - D3D_SVT_CBUFFER -
- - -

The variable is a texture buffer.

-
- - ff728735 - D3D_SVT_TBUFFER - D3D_SVT_TBUFFER -
- - -

The variable is a 1D-texture array.

-
- - ff728735 - D3D_SVT_TEXTURE1DARRAY - D3D_SVT_TEXTURE1DARRAY -
- - -

The variable is a 2D-texture array.

-
- - ff728735 - D3D_SVT_TEXTURE2DARRAY - D3D_SVT_TEXTURE2DARRAY -
- - -

The variable is a render-target view.

-
- - ff728735 - D3D_SVT_RENDERTARGETVIEW - D3D_SVT_RENDERTARGETVIEW -
- - -

The variable is a depth-stencil view.

-
- - ff728735 - D3D_SVT_DEPTHSTENCILVIEW - D3D_SVT_DEPTHSTENCILVIEW -
- - -

The variable is a 2D-multisampled texture.

-
- - ff728735 - D3D_SVT_TEXTURE2DMS - D3D_SVT_TEXTURE2DMS -
- - -

The variable is a 2D-multisampled-texture array.

-
- - ff728735 - D3D_SVT_TEXTURE2DMSARRAY - D3D_SVT_TEXTURE2DMSARRAY -
- - -

The variable is a texture-cube array.

-
- - ff728735 - D3D_SVT_TEXTURECUBEARRAY - D3D_SVT_TEXTURECUBEARRAY -
- - -

The variable holds a compiled hull-shader binary.

-
- - ff728735 - D3D_SVT_HULLSHADER - D3D_SVT_HULLSHADER -
- - -

The variable holds a compiled domain-shader binary.

-
- - ff728735 - D3D_SVT_DOMAINSHADER - D3D_SVT_DOMAINSHADER -
- - -

The variable is an interface.

-
- - ff728735 - D3D_SVT_INTERFACE_POINTER - D3D_SVT_INTERFACE_POINTER -
- - -

The variable holds a compiled compute-shader binary.

-
- - ff728735 - D3D_SVT_COMPUTESHADER - D3D_SVT_COMPUTESHADER -
- - -

The variable is a double precision (64-bit) floating-point number.

-
- - ff728735 - D3D_SVT_DOUBLE - D3D_SVT_DOUBLE -
- - -

The variable is a 1D read-and-write texture.

-
- - ff728735 - D3D_SVT_RWTEXTURE1D - D3D_SVT_RWTEXTURE1D -
- - -

The variable is an array of 1D read-and-write textures.

-
- - ff728735 - D3D_SVT_RWTEXTURE1DARRAY - D3D_SVT_RWTEXTURE1DARRAY -
- - -

The variable is a 2D read-and-write texture.

-
- - ff728735 - D3D_SVT_RWTEXTURE2D - D3D_SVT_RWTEXTURE2D -
- - -

The variable is an array of 2D read-and-write textures.

-
- - ff728735 - D3D_SVT_RWTEXTURE2DARRAY - D3D_SVT_RWTEXTURE2DARRAY -
- - -

The variable is a 3D read-and-write texture.

-
- - ff728735 - D3D_SVT_RWTEXTURE3D - D3D_SVT_RWTEXTURE3D -
- - -

The variable is a read-and-write buffer.

-
- - ff728735 - D3D_SVT_RWBUFFER - D3D_SVT_RWBUFFER -
- - -

The variable is a byte-address buffer.

-
- - ff728735 - D3D_SVT_BYTEADDRESS_BUFFER - D3D_SVT_BYTEADDRESS_BUFFER -
- - -

The variable is a read-and-write byte-address buffer.

-
- - ff728735 - D3D_SVT_RWBYTEADDRESS_BUFFER - D3D_SVT_RWBYTEADDRESS_BUFFER -
- - -

The variable is a structured buffer.

For more information about structured buffer, see the Remarks section.

-
- - ff728735 - D3D_SVT_STRUCTURED_BUFFER - D3D_SVT_STRUCTURED_BUFFER -
- - -

The variable is a read-and-write structured buffer.

-
- - ff728735 - D3D_SVT_RWSTRUCTURED_BUFFER - D3D_SVT_RWSTRUCTURED_BUFFER -
- - -

The variable is an append structured buffer.

-
- - ff728735 - D3D_SVT_APPEND_STRUCTURED_BUFFER - D3D_SVT_APPEND_STRUCTURED_BUFFER -
- - -

The variable is a consume structured buffer.

-
- - ff728735 - D3D_SVT_CONSUME_STRUCTURED_BUFFER - D3D_SVT_CONSUME_STRUCTURED_BUFFER -
- - -

Indicates shader type.

-
- - ff476214 - D3D11_SHADER_VERSION_TYPE - D3D11_SHADER_VERSION_TYPE -
- - -

Pixel shader.

-
- - ff476214 - D3D11_SHVER_PIXEL_SHADER - D3D11_SHVER_PIXEL_SHADER -
- - -

Vertex shader.

-
- - ff476214 - D3D11_SHVER_VERTEX_SHADER - D3D11_SHVER_VERTEX_SHADER -
- - -

Geometry shader.

-
- - ff476214 - D3D11_SHVER_GEOMETRY_SHADER - D3D11_SHVER_GEOMETRY_SHADER -
- - -

Hull shader.

-
- - ff476214 - D3D11_SHVER_HULL_SHADER - D3D11_SHVER_HULL_SHADER -
- - -

Domain shader.

-
- - ff476214 - D3D11_SHVER_DOMAIN_SHADER - D3D11_SHVER_DOMAIN_SHADER -
- - -

Compute shader.

-
- - ff476214 - D3D11_SHVER_COMPUTE_SHADER - D3D11_SHVER_COMPUTE_SHADER -
- - -

Strip flag options.

-
- -

These flags are used by .

-
- - dd607325 - D3DCOMPILER_STRIP_FLAGS - D3DCOMPILER_STRIP_FLAGS -
- - - No documentation. - - - dd607325 - D3DCOMPILER_STRIP_REFLECTION_DATA - D3DCOMPILER_STRIP_REFLECTION_DATA - - - - No documentation. - - - dd607325 - D3DCOMPILER_STRIP_DEBUG_INFO - D3DCOMPILER_STRIP_DEBUG_INFO - - - - No documentation. - - - dd607325 - D3DCOMPILER_STRIP_TEST_BLOBS - D3DCOMPILER_STRIP_TEST_BLOBS - - - - None. - - - None - None - - - -

Values that identify shader parameters that use system-value semantics.

-
- -

The values identify shader parameters that have predefined system-value semantics. These values are used in a shader-signature description. For more information about shader-signature description, see .

-
- - ff728724 - D3D_NAME - D3D_NAME -
- - -

This parameter does not use a predefined system-value semantic.

-
- - ff728724 - D3D_NAME_UNDEFINED - D3D_NAME_UNDEFINED -
- - -

This parameter contains position data.

-
- - ff728724 - D3D_NAME_POSITION - D3D_NAME_POSITION -
- - -

This parameter contains clip-distance data.

-
- - ff728724 - D3D_NAME_CLIP_DISTANCE - D3D_NAME_CLIP_DISTANCE -
- - -

This parameter contains cull-distance data.

-
- - ff728724 - D3D_NAME_CULL_DISTANCE - D3D_NAME_CULL_DISTANCE -
- - -

This parameter contains a render-target-array index.

-
- - ff728724 - D3D_NAME_RENDER_TARGET_ARRAY_INDEX - D3D_NAME_RENDER_TARGET_ARRAY_INDEX -
- - -

This parameter contains a viewport-array index.

-
- - ff728724 - D3D_NAME_VIEWPORT_ARRAY_INDEX - D3D_NAME_VIEWPORT_ARRAY_INDEX -
- - -

This parameter contains a vertex ID.

-
- - ff728724 - D3D_NAME_VERTEX_ID - D3D_NAME_VERTEX_ID -
- - -

This parameter contains a primitive ID.

-
- - ff728724 - D3D_NAME_PRIMITIVE_ID - D3D_NAME_PRIMITIVE_ID -
- - -

This parameter contains an instance ID.

-
- - ff728724 - D3D_NAME_INSTANCE_ID - D3D_NAME_INSTANCE_ID -
- - -

This parameter contains data that identifies whether or not the primitive faces the camera.

-
- - ff728724 - D3D_NAME_IS_FRONT_FACE - D3D_NAME_IS_FRONT_FACE -
- - -

This parameter contains a sampler-array index.

-
- - ff728724 - D3D_NAME_SAMPLE_INDEX - D3D_NAME_SAMPLE_INDEX -
- - -

This parameter contains one of four tessellation factors that correspond to the amount of parts that a quad patch is broken into along the given edge. This flag is used to tessellate a quad patch.

-
- - ff728724 - D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR - D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR -
- - -

This parameter contains one of two tessellation factors that correspond to the amount of parts that a quad patch is broken into vertically and horizontally within the patch. This flag is used to tessellate a quad patch.

-
- - ff728724 - D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR - D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR -
- - -

This parameter contains one of three tessellation factors that correspond to the amount of parts that a tri patch is broken into along the given edge. This flag is used to tessellate a tri patch.

-
- - ff728724 - D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR - D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR -
- - -

This parameter contains the tessellation factor that corresponds to the amount of parts that a tri patch is broken into within the patch. This flag is used to tessellate a tri patch.

-
- - ff728724 - D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR - D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR -
- - -

This parameter contains the tessellation factor that corresponds to the number of lines broken into within the patch. This flag is used to tessellate an isolines patch.

-
- - ff728724 - D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR - D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR -
- - -

This parameter contains the tessellation factor that corresponds to the number of lines that are created within the patch. This flag is used to tessellate an isolines patch.

-
- - ff728724 - D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR - D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR -
- - -

This parameter contains render-target data.

-
- - ff728724 - D3D_NAME_TARGET - D3D_NAME_TARGET -
- - -

This parameter contains depth data.

-
- - ff728724 - D3D_NAME_DEPTH - D3D_NAME_DEPTH -
- - -

This parameter contains alpha-coverage data.

-
- - ff728724 - D3D_NAME_COVERAGE - D3D_NAME_COVERAGE -
- - -

This parameter signifies that the value is greater than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.

-
- - ff728724 - D3D_NAME_DEPTH_GREATER_EQUAL - D3D_NAME_DEPTH_GREATER_EQUAL -
- - -

This parameter signifies that the value is less than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.

-
- - ff728724 - D3D_NAME_DEPTH_LESS_EQUAL - D3D_NAME_DEPTH_LESS_EQUAL -
- - -

Values that identify domain options for tessellator data.

-
- -

The data domain defines the type of data. This enumeration is used by .

-
- - ff728737 - D3D_TESSELLATOR_DOMAIN - D3D_TESSELLATOR_DOMAIN -
- - -

The data type is undefined.

-
- - ff728737 - D3D_TESSELLATOR_DOMAIN_UNDEFINED - D3D_TESSELLATOR_DOMAIN_UNDEFINED -
- - -

Isoline data.

-
- - ff728737 - D3D_TESSELLATOR_DOMAIN_ISOLINE - D3D_TESSELLATOR_DOMAIN_ISOLINE -
- - -

Triangle data.

-
- - ff728737 - D3D_TESSELLATOR_DOMAIN_TRI - D3D_TESSELLATOR_DOMAIN_TRI -
- - -

Quad data.

-
- - ff728737 - D3D_TESSELLATOR_DOMAIN_QUAD - D3D_TESSELLATOR_DOMAIN_QUAD -
- - -

Values that identify output primitive types.

-
- -

The output primitive type determines how the tessellator output data is organized; this enumeration is used by .

-
- - ff728738 - D3D_TESSELLATOR_OUTPUT_PRIMITIVE - D3D_TESSELLATOR_OUTPUT_PRIMITIVE -
- - -

The output primitive type is undefined.

-
- - ff728738 - D3D_TESSELLATOR_OUTPUT_UNDEFINED - D3D_TESSELLATOR_OUTPUT_UNDEFINED -
- - -

The output primitive type is a point.

-
- - ff728738 - D3D_TESSELLATOR_OUTPUT_POINT - D3D_TESSELLATOR_OUTPUT_POINT -
- - -

The output primitive type is a line.

-
- - ff728738 - D3D_TESSELLATOR_OUTPUT_LINE - D3D_TESSELLATOR_OUTPUT_LINE -
- - -

The output primitive type is a clockwise triangle.

-
- - ff728738 - D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW - D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW -
- - -

The output primitive type is a counter clockwise triangle.

-
- - ff728738 - D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW - D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW -
- - -

Values that identify partitioning options.

-
- -

During tessellation, the partition option helps to determine how the algorithm chooses the next partition value; this enumeration is used by .

-
- - ff728739 - D3D_TESSELLATOR_PARTITIONING - D3D_TESSELLATOR_PARTITIONING -
- - -

The partitioning type is undefined.

-
- - ff728739 - D3D_TESSELLATOR_PARTITIONING_UNDEFINED - D3D_TESSELLATOR_PARTITIONING_UNDEFINED -
- - -

Partition with integers only.

-
- - ff728739 - D3D_TESSELLATOR_PARTITIONING_INTEGER - D3D_TESSELLATOR_PARTITIONING_INTEGER -
- - -

Partition with a power-of-two number only.

-
- - ff728739 - D3D_TESSELLATOR_PARTITIONING_POW2 - D3D_TESSELLATOR_PARTITIONING_POW2 -
- - -

Partition with an odd, fractional number.

-
- - ff728739 - D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD - D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD -
- - -

Partition with an even, fractional number.

-
- - ff728739 - D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN - D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN -
- - -

This shader-reflection interface provides access to a constant buffer.

  • Methods
-
- -

To create a constant-buffer interface, call or . This isn't a COM interface, so you don't need to worry about reference counts or releasing the interface when you're done with it.

-
- - ff476591 - ID3D11ShaderReflectionConstantBuffer - ID3D11ShaderReflectionConstantBuffer -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a constant-buffer description.

-
-

A reference to a , which represents a shader-buffer description.

-

Returns one of the following Direct3D 11 Return Codes.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476592 - HRESULT ID3D11ShaderReflectionConstantBuffer::GetDesc([Out] D3D11_SHADER_BUFFER_DESC* pDesc) - ID3D11ShaderReflectionConstantBuffer::GetDesc -
- - -

Get a shader-reflection variable by index.

-
-

Zero-based index.

-

A reference to a shader-reflection variable interface (see Interface).

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476593 - ID3D11ShaderReflectionVariable* ID3D11ShaderReflectionConstantBuffer::GetVariableByIndex([In] unsigned int Index) - ID3D11ShaderReflectionConstantBuffer::GetVariableByIndex -
- - -

Get a shader-reflection variable by name.

-
-

Variable name.

-

Returns a sentinel object (end of list marker). To determine if GetVariableByName successfully completed, call and check the returned ; any return value other than success means that GetVariableByName failed.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476594 - ID3D11ShaderReflectionVariable* ID3D11ShaderReflectionConstantBuffer::GetVariableByName([In] const char* Name) - ID3D11ShaderReflectionConstantBuffer::GetVariableByName -
- - -

Get a constant-buffer description.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476592 - GetDesc - GetDesc - HRESULT ID3D11ShaderReflectionConstantBuffer::GetDesc([Out] D3D11_SHADER_BUFFER_DESC* pDesc) -
- - -

is an include interface that the user implements to allow an application to call user-overridable methods for opening and closing shader #include files.

-
- -

To use this interface, create an interface that inherits from and implement custom behavior for the methods.

-
- - ff728746 - ID3DInclude - ID3DInclude -
- - - A user-implemented method for opening and reading the contents of a shader #include file. - - A -typed value that indicates the location of the #include file. - Name of the #include file. - Pointer to the container that includes the #include file. - Stream that is associated with fileName to be read. This reference remains valid until is called. - HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes) - - - - A user-implemented method for closing a shader #include file. - - - If was successful, Close is guaranteed to be called before the API using the interface returns. - - This is a reference that was returned by the corresponding call. - HRESULT Close([None] LPCVOID pData) - - - -

A shader-reflection interface accesses shader information.

-
- -

An interface can be retrieved for a shader by using . The following code illustrates retrieving a from a shader.

 pd3dDevice->CreatePixelShader( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(), g_pPSClassLinkage, &g_pPixelShader ); * pReflector = null; 	
-            ( pPixelShaderBuffer->GetBufferPointer(), pPixelShaderBuffer->GetBufferSize(),  IID_ID3D11ShaderReflection, (void**) &pReflector); 
-
- - ff476590 - ID3D11ShaderReflection - ID3D11ShaderReflection -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a shader description.

-
-

A reference to a shader description. See .

-

Returns one of the following Direct3D 11 Return Codes.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476615 - HRESULT ID3D11ShaderReflection::GetDesc([Out] D3D11_SHADER_DESC* pDesc) - ID3D11ShaderReflection::GetDesc -
- - -

Get a constant buffer by index.

-
-

Zero-based index.

-

A reference to a constant buffer (see Interface).

- -

A constant buffer supplies either scalar constants or texture constants to a shader. A shader can use one or more constant buffers. For best performance, separate constants into buffers based on the frequency they are updated.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476612 - ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflection::GetConstantBufferByIndex([In] unsigned int Index) - ID3D11ShaderReflection::GetConstantBufferByIndex -
- - -

Get a constant buffer by name.

-
-

The constant-buffer name.

-

A reference to a constant buffer (see Interface).

- -

A constant buffer supplies either scalar constants or texture constants to a shader. A shader can use one or more constant buffers. For best performance, separate constants into buffers based on the frequency they are updated.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476613 - ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflection::GetConstantBufferByName([In] const char* Name) - ID3D11ShaderReflection::GetConstantBufferByName -
- - -

Get a description of how a resource is bound to a shader.

-
-

A zero-based resource index.

-

A reference to an input-binding description. See .

- -

A shader consists of executable code (the compiled HLSL functions) and a set of resources that supply the shader with input data. GetResourceBindingDesc gets information about how one resource in the set is bound as an input to the shader. The ResourceIndex parameter specifies the index for the resource.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476624 - HRESULT ID3D11ShaderReflection::GetResourceBindingDesc([In] unsigned int ResourceIndex,[Out] D3D11_SHADER_INPUT_BIND_DESC* pDesc) - ID3D11ShaderReflection::GetResourceBindingDesc -
- - -

Get an input-parameter description for a shader.

-
-

A zero-based parameter index.

-

A reference to a shader-input-signature description. See .

- -

An input-parameter description is also called a shader signature. The shader signature contains information about the input parameters such as the order or parameters, their data type, and a parameter semantic.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476617 - HRESULT ID3D11ShaderReflection::GetInputParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) - ID3D11ShaderReflection::GetInputParameterDesc -
- - -

Get an output-parameter description for a shader.

-
-

A zero-based parameter index.

-

A reference to a shader-output-parameter description. See .

- -

An output-parameter description is also called a shader signature. The shader signature contains information about the output parameters such as the order or parameters, their data type, and a parameter semantic.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476622 - HRESULT ID3D11ShaderReflection::GetOutputParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) - ID3D11ShaderReflection::GetOutputParameterDesc -
- - -

Get a patch-constant parameter description for a shader.

-
-

A zero-based parameter index.

-

A reference to a shader-input-signature description. See .

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476623 - HRESULT ID3D11ShaderReflection::GetPatchConstantParameterDesc([In] unsigned int ParameterIndex,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) - ID3D11ShaderReflection::GetPatchConstantParameterDesc -
- - -

Gets a variable by name.

-
-

A reference to a string containing the variable name.

-

Returns a Interface interface.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476626 - ID3D11ShaderReflectionVariable* ID3D11ShaderReflection::GetVariableByName([In] const char* Name) - ID3D11ShaderReflection::GetVariableByName -
- - -

Get a description of how a resource is bound to a shader.

-
-

The constant-buffer name of the resource.

-

A reference to an input-binding description. See .

- -

A shader consists of executable code (the compiled HLSL functions) and a set of resources that supply the shader with input data. GetResourceBindingDescByName gets information about how one resource in the set is bound as an input to the shader. The Name parameter specifies the name of the resource.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476625 - HRESULT ID3D11ShaderReflection::GetResourceBindingDescByName([In] const char* Name,[Out] D3D11_SHADER_INPUT_BIND_DESC* pDesc) - ID3D11ShaderReflection::GetResourceBindingDescByName -
- - -

Gets the number of Mov instructions.

-
-

Returns the number of Mov instructions.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476620 - unsigned int ID3D11ShaderReflection::GetMovInstructionCount() - ID3D11ShaderReflection::GetMovInstructionCount -
- - -

Gets the number of Movc instructions.

-
-

Returns the number of Movc instructions.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476619 - unsigned int ID3D11ShaderReflection::GetMovcInstructionCount() - ID3D11ShaderReflection::GetMovcInstructionCount -
- - -

Gets the number of conversion instructions.

-
-

Returns the number of conversion instructions.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476614 - unsigned int ID3D11ShaderReflection::GetConversionInstructionCount() - ID3D11ShaderReflection::GetConversionInstructionCount -
- - -

Gets the number of bitwise instructions.

-
-

The number of bitwise instructions.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476611 - unsigned int ID3D11ShaderReflection::GetBitwiseInstructionCount() - ID3D11ShaderReflection::GetBitwiseInstructionCount -
- - -

Gets the geometry-shader input-primitive description.

-
-

The input-primitive description, see D3D10_PRIMITIVE_TOPOLOGY.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476616 - D3D_PRIMITIVE ID3D11ShaderReflection::GetGSInputPrimitive() - ID3D11ShaderReflection::GetGSInputPrimitive -
- - -

Indicates whether a shader is a sample frequency shader.

-
-

Returns true if the shader is a sample frequency shader; otherwise returns false.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476627 - BOOL ID3D11ShaderReflection::IsSampleFrequencyShader() - ID3D11ShaderReflection::IsSampleFrequencyShader -
- - -

Gets the number of interface slots in a shader.

-
-

The number of interface slots in the shader.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476621 - unsigned int ID3D11ShaderReflection::GetNumInterfaceSlots() - ID3D11ShaderReflection::GetNumInterfaceSlots -
- - -

Gets the minimum feature level.

-
-

A reference to one of the enumerated values in , which represents the minimum feature level.

-

Returns one of the following Direct3D 11 Return Codes.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476618 - HRESULT ID3D11ShaderReflection::GetMinFeatureLevel([Out] D3D_FEATURE_LEVEL* pLevel) - ID3D11ShaderReflection::GetMinFeatureLevel -
- - -

Retrieves the sizes, in thread groups, of the X, Y, and Z dimensions of the shader's thread-group grid.

-
-

A reference to the size, in thread groups, of the x-dimension of the thread-group grid. The maximum size is 65535.

-

A reference to the size, in thread groups, of the y-dimension of the thread-group grid. The maximum size is 65535.

-

A reference to the size, in thread groups, of the z-dimension of the thread-group grid. The maximum size is 65535.

-

Returns the total size, in thread groups, of the thread-group grid by calculating the product of the size of each dimension.

*pSizeX * *pSizeY * *pSizeZ;
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff728742 - unsigned int ID3D11ShaderReflection::GetThreadGroupSize([Out, Optional] unsigned int* pSizeX,[Out, Optional] unsigned int* pSizeY,[Out, Optional] unsigned int* pSizeZ) - ID3D11ShaderReflection::GetThreadGroupSize -
- - - Initializes a new instance of the class from a . - - - - - -

Get a shader description.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476615 - GetDesc - GetDesc - HRESULT ID3D11ShaderReflection::GetDesc([Out] D3D11_SHADER_DESC* pDesc) -
- - -

Gets the number of Mov instructions.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476620 - GetMovInstructionCount - GetMovInstructionCount - unsigned int ID3D11ShaderReflection::GetMovInstructionCount() -
- - -

Gets the number of Movc instructions.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476619 - GetMovcInstructionCount - GetMovcInstructionCount - unsigned int ID3D11ShaderReflection::GetMovcInstructionCount() -
- - -

Gets the number of conversion instructions.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476614 - GetConversionInstructionCount - GetConversionInstructionCount - unsigned int ID3D11ShaderReflection::GetConversionInstructionCount() -
- - -

Gets the number of bitwise instructions.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476611 - GetBitwiseInstructionCount - GetBitwiseInstructionCount - unsigned int ID3D11ShaderReflection::GetBitwiseInstructionCount() -
- - -

Gets the geometry-shader input-primitive description.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476616 - GetGSInputPrimitive - GetGSInputPrimitive - D3D_PRIMITIVE ID3D11ShaderReflection::GetGSInputPrimitive() -
- - -

Indicates whether a shader is a sample frequency shader.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476627 - IsSampleFrequencyShader - IsSampleFrequencyShader - BOOL ID3D11ShaderReflection::IsSampleFrequencyShader() -
- - -

Gets the number of interface slots in a shader.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476621 - GetNumInterfaceSlots - GetNumInterfaceSlots - unsigned int ID3D11ShaderReflection::GetNumInterfaceSlots() -
- - -

Gets the minimum feature level.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476618 - GetMinFeatureLevel - GetMinFeatureLevel - HRESULT ID3D11ShaderReflection::GetMinFeatureLevel([Out] D3D_FEATURE_LEVEL* pLevel) -
- - -

This shader-reflection interface provides access to variable type.

  • Methods
-
- -

The get a shader-reflection-type interface, call . This isn't a COM interface, so you don't need to worry about reference counts or releasing the interface when you're done with it.

-
- - ff476595 - ID3D11ShaderReflectionType - ID3D11ShaderReflectionType -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the description of a shader-reflection-variable type.

-
-

A reference to a shader-type description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476597 - HRESULT ID3D11ShaderReflectionType::GetDesc([Out] D3D11_SHADER_TYPE_DESC* pDesc) - ID3D11ShaderReflectionType::GetDesc -
- - -

Get a shader-reflection-variable type by index.

-
-

Zero-based index.

-

A reference to a Interface.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476599 - ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetMemberTypeByIndex([In] unsigned int Index) - ID3D11ShaderReflectionType::GetMemberTypeByIndex -
- - -

Get a shader-reflection-variable type by name.

-
-

Member name.

-

A reference to a Interface.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476600 - ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetMemberTypeByName([In] const char* Name) - ID3D11ShaderReflectionType::GetMemberTypeByName -
- - -

Get a shader-reflection-variable type.

-
-

Zero-based index.

-

The variable type.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476601 - const char* ID3D11ShaderReflectionType::GetMemberTypeName([In] unsigned int Index) - ID3D11ShaderReflectionType::GetMemberTypeName -
- - -

Indicates whether two Interface references have the same underlying type.

-
- No documentation. -

Returns if the references have the same underlying type; otherwise returns S_FALSE.

- -

IsEqual indicates whether the sources of the Interface references have the same underlying type. For example, if two Interface references were retrieved from variables, IsEqual can be used to see if the variables have the same type.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476605 - HRESULT ID3D11ShaderReflectionType::IsEqual([In] ID3D11ShaderReflectionType* pType) - ID3D11ShaderReflectionType::IsEqual -
- - -

Gets the base class of a class.

-
-

Returns a reference to a Interface containing the base class type. Returns null if the class does not have a base class.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476603 - ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetSubType() - ID3D11ShaderReflectionType::GetSubType -
- - -

Gets an Interface interface containing the variable base class type.

-
-

Returns A reference to a Interface.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476596 - ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetBaseClass() - ID3D11ShaderReflectionType::GetBaseClass -
- - -

Gets the number of interfaces.

-
-

Returns the number of interfaces.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476602 - unsigned int ID3D11ShaderReflectionType::GetNumInterfaces() - ID3D11ShaderReflectionType::GetNumInterfaces -
- - -

Get an interface by index.

-
-

Zero-based index.

-

A reference to a Interface.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476598 - ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetInterfaceByIndex([In] unsigned int uIndex) - ID3D11ShaderReflectionType::GetInterfaceByIndex -
- - -

Indicates whether a variable is of the specified type.

-
-

A reference to a Interface.

-

Returns if object being queried is equal to or inherits from the type in the pType parameter; otherwise returns S_FALSE.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476606 - HRESULT ID3D11ShaderReflectionType::IsOfType([In] ID3D11ShaderReflectionType* pType) - ID3D11ShaderReflectionType::IsOfType -
- - -

Indicates whether a class type implements an interface.

-
-

A reference to a Interface.

-

Returns if the interface is implemented; otherwise return S_FALSE.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476604 - HRESULT ID3D11ShaderReflectionType::ImplementsInterface([In] ID3D11ShaderReflectionType* pBase) - ID3D11ShaderReflectionType::ImplementsInterface -
- - - Indicates whether two references have the same underlying type. - - - IsEqual indicates whether the sources of the references have the same underlying type. For example, if two ID3D11ShaderReflectionType Interface references were retrieved from variables, IsEqual can be used to see if the variables have the same type. This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. - - A reference to a . - Returns true if the references have the same underlying type; otherwise returns false. - HRESULT ID3D11ShaderReflectionType::IsEqual([In] ID3D11ShaderReflectionType* pType) - - - - Indicates whether a variable is of the specified type. - - - This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. - - A reference to a . - Returns true if object being queried is equal to or inherits from the type in the pType parameter; otherwise returns false. - HRESULT ID3D11ShaderReflectionType::IsOfType([In] ID3D11ShaderReflectionType* pType) - - - - Indicates whether a class type implements an interface. - - - This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll. - - A reference to a . - Returns true if the interface is implemented; otherwise return false. - HRESULT ID3D11ShaderReflectionType::ImplementsInterface([In] ID3D11ShaderReflectionType* pBase) - - - -

Get the description of a shader-reflection-variable type.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476597 - GetDesc - GetDesc - HRESULT ID3D11ShaderReflectionType::GetDesc([Out] D3D11_SHADER_TYPE_DESC* pDesc) -
- - -

Gets the base class of a class.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476603 - GetSubType - GetSubType - ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetSubType() -
- - -

Gets an Interface interface containing the variable base class type.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476596 - GetBaseClass - GetBaseClass - ID3D11ShaderReflectionType* ID3D11ShaderReflectionType::GetBaseClass() -
- - -

Gets the number of interfaces.

-
- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476602 - GetNumInterfaces - GetNumInterfaces - unsigned int ID3D11ShaderReflectionType::GetNumInterfaces() -
- - -

This shader-reflection interface provides access to a variable.

  • Methods
-
- -

To get a shader-reflection-variable interface, call a method like . This isn't a COM interface, so you don't need to worry about reference counts or releasing the interface when you're done with it.

-
- - ff476607 - ID3D11ShaderReflectionVariable - ID3D11ShaderReflectionVariable -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a shader-variable description.

-
-

A reference to a shader-variable description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

This method can be used to determine if the Interface is valid, the method returns E_FAIL when the variable is not valid.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476608 - HRESULT ID3D11ShaderReflectionVariable::GetDesc([Out] D3D11_SHADER_VARIABLE_DESC* pDesc) - ID3D11ShaderReflectionVariable::GetDesc -
- - -

Get a shader-variable type.

-
-

A reference to a Interface.

- -

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476610 - ID3D11ShaderReflectionType* ID3D11ShaderReflectionVariable::GetType() - ID3D11ShaderReflectionVariable::GetType -
- - - No documentation. - - No documentation. - - ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflectionVariable::GetBuffer() - ID3D11ShaderReflectionVariable::GetBuffer - - - -

Gets the corresponding interface slot for a variable that represents an interface reference.

-
-

Index of the array element to get the slot number for. For a non-array variable this value will be zero.

-

Returns the index of the interface in the interface array.

- -

GetInterfaceSlot gets the corresponding slot in an dynamic linkage array for an interface instance. The returned slot number is used to set an interface instance to a particular class instance. See the HLSL Interfaces and Classes overview for additional information.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476609 - unsigned int ID3D11ShaderReflectionVariable::GetInterfaceSlot([In] unsigned int uArrayIndex) - ID3D11ShaderReflectionVariable::GetInterfaceSlot -
- - -

Get a shader-variable description.

-
- -

This method can be used to determine if the Interface is valid, the method returns E_FAIL when the variable is not valid.

This method's interface is hosted in the out-of-box DLL D3DCompiler_xx.dll.

-
- - ff476608 - GetDesc - GetDesc - HRESULT ID3D11ShaderReflectionVariable::GetDesc([Out] D3D11_SHADER_VARIABLE_DESC* pDesc) -
- - - No documentation. - - - GetBuffer - GetBuffer - ID3D11ShaderReflectionConstantBuffer* ID3D11ShaderReflectionVariable::GetBuffer() - - - - Shadow callback for . - - - - - Return a pointer to the unmanaged version of this callback. - - The callback. - A pointer to a shadow c++ callback - - - - Internal Include Callback - - - - - A user-implemented method for opening and reading the contents of a shader #include file. - - This pointer - A -typed value that indicates the location of the #include file. - Name of the #include file. - Pointer to the container that includes the #include file. - Pointer to the buffer that Open returns that contains the include directives. This pointer remains valid until is called. - Pointer to the number of bytes that Open returns in ppData. - The user-implemented method should return S_OK. If Open fails when reading the #include file, the application programming interface (API) that caused Open to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions. - HRESULT Open([None] D3D_INCLUDE_TYPE IncludeType,[None] const char* pFileName,[None] LPCVOID pParentData,[None] LPCVOID* ppData,[None] UINT* pBytes) - - - - A user-implemented method for closing a shader #include file. - - - If was successful, Close is guaranteed to be called before the API using the interface returns. - - This pointer - Pointer to the buffer that contains the include directives. This is the pointer that was returned by the corresponding call. - The user-implemented Close method should return S_OK. If Close fails when it closes the #include file, the application programming interface (API) that caused Close to be called fails. This failure can occur in one of the following situations:The high-level shader language (HLSL) shader fails one of the D3D10CompileShader*** functions.The effect fails one of the D3D10CreateEffect*** functions. - HRESULT Close([None] LPCVOID pData) - - - - The namespace provides managed Direct3D Compiler API. - - dd607340 - D3DCompiler - D3DCompiler - - - - No documentation. - - D3D11_REGISTER_COMPONENT_MASK_FLAG - - - - No documentation. - - D3D11_REGISTER_COMPONENT_MASK_ALL - - - - No documentation. - - D3D11_REGISTER_COMPONENT_MASK_COMPONENT_W - - - - No documentation. - - D3D11_REGISTER_COMPONENT_MASK_COMPONENT_X - - - - No documentation. - - D3D11_REGISTER_COMPONENT_MASK_COMPONENT_Y - - - - No documentation. - - D3D11_REGISTER_COMPONENT_MASK_COMPONENT_Z - - - - None. - - None - - - -

Describes a shader constant-buffer.

-
- -

Constants are supplied to shaders in a shader-constant buffer. Get the description of a shader-constant-buffer by calling .

-
- - ff476208 - D3D11_SHADER_BUFFER_DESC - D3D11_SHADER_BUFFER_DESC -
- - -

The name of the buffer.

-
- - ff476208 - const char* Name - char Name -
- - -

A -typed value that indicates the intended use of the constant data.

-
- - ff476208 - D3D_CBUFFER_TYPE Type - D3D_CBUFFER_TYPE Type -
- - -

The number of unique variables.

-
- - ff476208 - unsigned int Variables - unsigned int Variables -
- - -

Buffer size (in bytes).

-
- - ff476208 - unsigned int Size - unsigned int Size -
- - -

A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies properties for the shader constant-buffer.

-
- - ff476208 - D3D_SHADER_CBUFFER_FLAGS uFlags - D3D_SHADER_CBUFFER_FLAGS uFlags -
- - -

Describes how a shader resource is bound to a shader input.

-
- -

Get a shader-input-signature description by calling or .

-
- - ff476210 - D3D11_SHADER_INPUT_BIND_DESC - D3D11_SHADER_INPUT_BIND_DESC -
- - -

Name of the shader resource.

-
- - ff476210 - const char* Name - char Name -
- - -

A -typed value that identifies the type of data in the resource.

-
- - ff476210 - D3D_SHADER_INPUT_TYPE Type - D3D_SHADER_INPUT_TYPE Type -
- - -

Starting bind point.

-
- - ff476210 - unsigned int BindPoint - unsigned int BindPoint -
- - -

Number of contiguous bind points for arrays.

-
- - ff476210 - unsigned int BindCount - unsigned int BindCount -
- - -

A combination of -typed values for shader input-parameter options.

-
- - ff476210 - D3D_SHADER_INPUT_FLAGS uFlags - D3D_SHADER_INPUT_FLAGS uFlags -
- - -

If the input is a texture, the -typed value that identifies the return type.

-
- - ff476210 - D3D_RESOURCE_RETURN_TYPE ReturnType - D3D_RESOURCE_RETURN_TYPE ReturnType -
- - -

A -typed value that identifies the dimensions of the bound resource.

-
- - ff476210 - D3D_SRV_DIMENSION Dimension - D3D_SRV_DIMENSION Dimension -
- - -

The number of samples for a multisampled texture; when a texture isn't multisampled, the value is set to -1 (0xFFFFFFFF).

-
- - ff476210 - unsigned int NumSamples - unsigned int NumSamples -
- - -

Describes shader data.

-
- -

An array of structures is passed to to compress the shader data into a more compact form.

-
- - ff728721 - D3D_SHADER_DATA - D3D_SHADER_DATA -
- - -

A reference to shader data.

-
- - ff728721 - const void* pBytecode - void pBytecode -
- - -

Length of shader data that pBytecode points to.

-
- - ff728721 - SIZE_T BytecodeLength - SIZE_T BytecodeLength -
- - -

Describes a shader.

-
- -

A shader is written in HLSL and compiled into an intermediate language by the HLSL compiler. The shader description returns information about the compiled shader. Get a shader description by calling .

-
- - ff476209 - D3D11_SHADER_DESC - D3D11_SHADER_DESC -
- - -

Shader version.

-
- - ff476209 - unsigned int Version - unsigned int Version -
- - -

The name of the originator of the shader.

-
- - ff476209 - const char* Creator - char Creator -
- - -

Shader compilation/parse flags.

-
- - ff476209 - D3DCOMPILE_SHADER_FLAGS Flags - D3DCOMPILE_SHADER_FLAGS Flags -
- - -

The number of shader-constant buffers.

-
- - ff476209 - unsigned int ConstantBuffers - unsigned int ConstantBuffers -
- - -

The number of resource (textures and buffers) bound to a shader.

-
- - ff476209 - unsigned int BoundResources - unsigned int BoundResources -
- - -

The number of parameters in the input signature.

-
- - ff476209 - unsigned int InputParameters - unsigned int InputParameters -
- - -

The number of parameters in the output signature.

-
- - ff476209 - unsigned int OutputParameters - unsigned int OutputParameters -
- - -

The number of intermediate-language instructions in the compiled shader.

-
- - ff476209 - unsigned int InstructionCount - unsigned int InstructionCount -
- - -

The number of temporary registers in the compiled shader.

-
- - ff476209 - unsigned int TempRegisterCount - unsigned int TempRegisterCount -
- - -

Number of temporary arrays used.

-
- - ff476209 - unsigned int TempArrayCount - unsigned int TempArrayCount -
- - -

Number of constant defines.

-
- - ff476209 - unsigned int DefCount - unsigned int DefCount -
- - -

Number of declarations (input + output).

-
- - ff476209 - unsigned int DclCount - unsigned int DclCount -
- - -

Number of non-categorized texture instructions.

-
- - ff476209 - unsigned int TextureNormalInstructions - unsigned int TextureNormalInstructions -
- - -

Number of texture load instructions

-
- - ff476209 - unsigned int TextureLoadInstructions - unsigned int TextureLoadInstructions -
- - -

Number of texture comparison instructions

-
- - ff476209 - unsigned int TextureCompInstructions - unsigned int TextureCompInstructions -
- - -

Number of texture bias instructions

-
- - ff476209 - unsigned int TextureBiasInstructions - unsigned int TextureBiasInstructions -
- - -

Number of texture gradient instructions.

-
- - ff476209 - unsigned int TextureGradientInstructions - unsigned int TextureGradientInstructions -
- - -

Number of floating point arithmetic instructions used.

-
- - ff476209 - unsigned int FloatInstructionCount - unsigned int FloatInstructionCount -
- - -

Number of signed integer arithmetic instructions used.

-
- - ff476209 - unsigned int IntInstructionCount - unsigned int IntInstructionCount -
- - -

Number of unsigned integer arithmetic instructions used.

-
- - ff476209 - unsigned int UintInstructionCount - unsigned int UintInstructionCount -
- - -

Number of static flow control instructions used.

-
- - ff476209 - unsigned int StaticFlowControlCount - unsigned int StaticFlowControlCount -
- - -

Number of dynamic flow control instructions used.

-
- - ff476209 - unsigned int DynamicFlowControlCount - unsigned int DynamicFlowControlCount -
- - -

Number of macro instructions used.

-
- - ff476209 - unsigned int MacroInstructionCount - unsigned int MacroInstructionCount -
- - -

Number of array instructions used.

-
- - ff476209 - unsigned int ArrayInstructionCount - unsigned int ArrayInstructionCount -
- - -

Number of cut instructions used.

-
- - ff476209 - unsigned int CutInstructionCount - unsigned int CutInstructionCount -
- - -

Number of emit instructions used.

-
- - ff476209 - unsigned int EmitInstructionCount - unsigned int EmitInstructionCount -
- - -

The -typed value that represents the geometry shader output topology.

-
- - ff476209 - D3D_PRIMITIVE_TOPOLOGY GSOutputTopology - D3D_PRIMITIVE_TOPOLOGY GSOutputTopology -
- - -

Geometry shader maximum output vertex count.

-
- - ff476209 - unsigned int GSMaxOutputVertexCount - unsigned int GSMaxOutputVertexCount -
- - -

The -typed value that represents the input primitive for a geometry shader or hull shader.

-
- - ff476209 - D3D_PRIMITIVE InputPrimitive - D3D_PRIMITIVE InputPrimitive -
- - -

Number of parameters in the patch-constant signature.

-
- - ff476209 - unsigned int PatchConstantParameters - unsigned int PatchConstantParameters -
- - -

Number of geometry shader instances.

-
- - ff476209 - unsigned int cGSInstanceCount - unsigned int cGSInstanceCount -
- - -

Number of control points in the hull shader and domain shader.

-
- - ff476209 - unsigned int cControlPoints - unsigned int cControlPoints -
- - -

The -typed value that represents the tessellator output-primitive type.

-
- - ff476209 - D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive - D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive -
- - -

The -typed value that represents the tessellator partitioning mode.

-
- - ff476209 - D3D_TESSELLATOR_PARTITIONING HSPartitioning - D3D_TESSELLATOR_PARTITIONING HSPartitioning -
- - -

The -typed value that represents the tessellator domain.

-
- - ff476209 - D3D_TESSELLATOR_DOMAIN TessellatorDomain - D3D_TESSELLATOR_DOMAIN TessellatorDomain -
- - -

Number of barrier instructions in a compute shader.

-
- - ff476209 - unsigned int cBarrierInstructions - unsigned int cBarrierInstructions -
- - -

Number of interlocked instructions in a compute shader.

-
- - ff476209 - unsigned int cInterlockedInstructions - unsigned int cInterlockedInstructions -
- - -

Number of texture writes in a compute shader.

-
- - ff476209 - unsigned int cTextureStoreInstructions - unsigned int cTextureStoreInstructions -
- - -

Describes a shader signature.

-
- -

A shader can take n inputs and can produce m outputs. The order of the input (or output) parameters, their associated types, and any attached semantics make up the shader signature. Each shader has an input and an output signature.

When compiling a shader or an effect, some API calls validate shader signatures That is, they compare the output signature of one shader (like a vertex shader) with the input signature of another shader (like a pixel shader). This ensures that a shader outputs data that is compatible with a downstream shader that is consuming that data. Compatible means that a shader signature is a exact-match subset of the preceding shader stage. Exact match means parameter types and semantics must exactly match. Subset means that a parameter that is not required by a downstream stage, does not need to include that parameter in its shader signature.

Get a shader-signature from a shader or an effect by calling APIs such as .

-
- - ff476215 - D3D11_SIGNATURE_PARAMETER_DESC - D3D11_SIGNATURE_PARAMETER_DESC -
- - -

A per-parameter string that identifies how the data will be used. For more info, see Semantics.

-
- - ff476215 - const char* SemanticName - char SemanticName -
- - -

Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.

-
- - ff476215 - unsigned int SemanticIndex - unsigned int SemanticIndex -
- - -

The register that will contain this variable's data.

-
- - ff476215 - unsigned int Register - unsigned int Register -
- - -

A -typed value that identifies a predefined string that determines the functionality of certain pipeline stages.

-
- - ff476215 - D3D_NAME SystemValueType - D3D_NAME SystemValueType -
- - -

A -typed value that identifies the per-component-data type that is stored in a register. Each register can store up to four-components of data.

-
- - ff476215 - D3D_REGISTER_COMPONENT_TYPE ComponentType - D3D_REGISTER_COMPONENT_TYPE ComponentType -
- - -

Mask which indicates which components of a register are used.

-
- - ff476215 - D3D11_REGISTER_COMPONENT_MASK_FLAG Mask - D3D11_REGISTER_COMPONENT_MASK_FLAG Mask -
- - -

Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature).

-
- - ff476215 - D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask - D3D11_REGISTER_COMPONENT_MASK_FLAG ReadWriteMask -
- - -

Indicates which stream the geometry shader is using for the signature parameter.

-
- - ff476215 - unsigned int Stream - unsigned int Stream -
- - -

Describes a shader-variable type.

-
- -

Get a shader-variable-type description by calling .

-
- - ff476212 - D3D11_SHADER_TYPE_DESC - D3D11_SHADER_TYPE_DESC -
- - -

A -typed value that identifies the variable class as one of scalar, vector, matrix, object, and so on.

-
- - ff476212 - D3D_SHADER_VARIABLE_CLASS Class - D3D_SHADER_VARIABLE_CLASS Class -
- - -

A -typed value that identifies the variable type.

-
- - ff476212 - D3D_SHADER_VARIABLE_TYPE Type - D3D_SHADER_VARIABLE_TYPE Type -
- - -

Number of rows in a matrix. Otherwise a numeric type returns 1, any other type returns 0.

-
- - ff476212 - unsigned int Rows - unsigned int Rows -
- - -

Number of columns in a matrix. Otherwise a numeric type returns 1, any other type returns 0.

-
- - ff476212 - unsigned int Columns - unsigned int Columns -
- - -

Number of elements in an array; otherwise 0.

-
- - ff476212 - unsigned int Elements - unsigned int Elements -
- - -

Number of members in the structure; otherwise 0.

-
- - ff476212 - unsigned int Members - unsigned int Members -
- - -

Offset, in bytes, between the start of the parent structure and this variable. Can be 0 if not a structure member.

-
- - ff476212 - unsigned int Offset - unsigned int Offset -
- - -

Name of the shader-variable type. This member can be null if it isn't used. This member supports dynamic shader linkage interface types, which have names. For more info about dynamic shader linkage, see Dynamic Linking.

-
- - ff476212 - const char* Name - char Name -
- - -

Describes a shader variable.

-
- -

Get a shader-variable description using reflection by calling .

As of the June 2010 update, DefaultValue emits default values for reflection.

-
- - ff476213 - D3D11_SHADER_VARIABLE_DESC - D3D11_SHADER_VARIABLE_DESC -
- - -

The variable name.

-
- - ff476213 - const char* Name - char Name -
- - -

Offset from the start of the parent structure to the beginning of the variable.

-
- - ff476213 - unsigned int StartOffset - unsigned int StartOffset -
- - -

Size of the variable (in bytes).

-
- - ff476213 - unsigned int Size - unsigned int Size -
- - -

A combination of -typed values that are combined by using a bitwise OR operation. The resulting value identifies shader-variable properties.

-
- - ff476213 - D3D_SHADER_VARIABLE_FLAGS uFlags - D3D_SHADER_VARIABLE_FLAGS uFlags -
- - -

The default value for initializing the variable.

-
- - ff476213 - void* DefaultValue - void DefaultValue -
- - - No documentation. - - - ff476213 - unsigned int StartTexture - unsigned int StartTexture - - - - No documentation. - - - ff476213 - unsigned int TextureSize - unsigned int TextureSize - - - - No documentation. - - - ff476213 - unsigned int StartSampler - unsigned int StartSampler - - - - No documentation. - - - ff476213 - unsigned int SamplerSize - unsigned int SamplerSize - - - - Represents the compiled bytecode of a shader or effect. - - Blob - - - - Use this ShaderFlags constant in order to compile an effect with old D3D10CompileEffectFromMemory. - - - - - Initializes a new instance of the class. - - A containing the compiled bytecode. - - - - Initializes a new instance of the class. - - A containing the compiled bytecode. - - - - Initializes a new instance of the class. - - The buffer. - - - - Initializes a new instance of the class. - - a pointer to a compiler bytecode - size of the bytecode - - - - Initializes a new instance of the class. - - The BLOB. - - - - Compiles the provided shader or effect source. - - A string containing the source of the shader or effect to compile. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - Name of the source file. - - The compiled shader bytecode, or null if the method fails. - - - - - Compiles the provided shader or effect source. - - An array of bytes containing the raw source of the shader or effect to compile. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - Name of the source file. - - The compiled shader bytecode, or null if the method fails. - - - - - Compiles the provided shader or effect source. - - A string containing the source of the shader or effect to compile. - The name of the shader entry-point function, or null for an effect file. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - Name of the source file. - - The compiled shader bytecode, or null if the method fails. - - - - - Compiles the provided shader or effect source. - - An array of bytes containing the raw source of the shader or effect to compile. - The name of the shader entry-point function, or null for an effect file. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - Name of the source file. - The compiled shader bytecode, or null if the method fails. - - - - Compiles the provided shader or effect source. - - A string containing the source of the shader or effect to compile. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - A set of macros to define during compilation. - An interface for handling include files. - Name of the source file. - - The compiled shader bytecode, or null if the method fails. - - - - - Compiles the provided shader or effect source. - - An array of bytes containing the raw source of the shader or effect to compile. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - A set of macros to define during compilation. - An interface for handling include files. - Name of the source file. - - The compiled shader bytecode, or null if the method fails. - - - - - Compiles the provided shader or effect source. - - A string containing the source of the shader or effect to compile. - The name of the shader entry-point function, or null for an effect file. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - A set of macros to define during compilation. - An interface for handling include files. - Name of the source file. - - The compiled shader bytecode, or null if the method fails. - - - - - Compiles a shader or effect from a file on disk. - - The name of the source file to compile. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - A set of macros to define during compilation. - An interface for handling include files. - The compiled shader bytecode, or null if the method fails. - - - - Compiles a shader or effect from a file on disk. - - The name of the source file to compile. - The name of the shader entry-point function, or null for an effect file. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - A set of macros to define during compilation. - An interface for handling include files. - - The compiled shader bytecode, or null if the method fails. - - - - - Compiles the provided shader or effect source. - - An array of bytes containing the raw source of the shader or effect to compile. - The name of the shader entry-point function, or null for an effect file. - The shader target or set of shader features to compile against. - Shader compilation options. - Effect compilation options. - A set of macros to define during compilation. - An interface for handling include files. - Name of the source file used for reporting errors. Default is "unknown" - - The compiled shader bytecode, or null if the method fails. - - - - - Saves to the specified file name. - - Name of the file. - - - - Compresses a set of shaders into a more compact form. - - An array of structures that describe the set of shaders to compress. - A compressed . - HRESULT D3DCompressShaders([In] int uNumShaders,[In, Buffer] D3D_SHADER_DATA* pShaderData,[In] int uFlags,[Out] ID3DBlob** ppCompressedData) - - - - Decompresses all shaders from a compressed set. - - Returns an array of decompress shader bytecode. - HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) - - - - Decompresses one or more shaders from a compressed set. - - The number of shaders to decompress. - The index of the first shader to decompress. - Returns an array of decompress shader bytecode. - HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) - - - - Decompresses one or more shaders from a compressed set. - - An array of indexes that represent the shaders to decompress. - Returns an array of decompress shader bytecode. - HRESULT D3DDecompressShaders([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] unsigned int uNumShaders,[In] unsigned int uStartIndex,[In, Buffer, Optional] unsigned int* pIndices,[In] unsigned int uFlags,[Out, Buffer] ID3D10Blob** ppShaders,[Out, Optional] unsigned int* pTotalShaders) - - - - Disassembles compiled HLSL code back into textual source. - - The textual source of the shader or effect. - - - - Disassembles compiled HLSL code back into textual source. - - Flags affecting the output of the disassembly. - The textual source of the shader or effect. - - - - Disassembles compiled HLSL code back into textual source. - - Flags affecting the output of the disassembly. - Commenting information to embed in the disassembly. - The textual source of the shader or effect. - - - - Retrieves a specific part from a compilation result. - - - D3DGetBlobPart retrieves the part of a blob (arbitrary length data buffer) that contains the type of data that the Part parameter specifies. - - A -typed value that specifies the part of the buffer to retrieve. - Returns the extracted part. - HRESULT D3DGetBlobPart([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] D3D_BLOB_PART Part,[In] int Flags,[Out] ID3DBlob** ppPart) - - - - Loads from the specified stream. - - The stream. - A shader bytecode - - - - Saves this bytecode to the specified stream. - - The stream. - - - - Preprocesses the provided shader or effect source. - - A string containing the source of the shader or effect to preprocess. - A set of macros to define during preprocessing. - An interface for handling include files. - Name of the source file. - The preprocessed shader source. - - - - Preprocesses the provided shader or effect source. - - An array of bytes containing the raw source of the shader or effect to preprocess. - A set of macros to define during preprocessing. - An interface for handling include files. - Name of the source file. - The preprocessed shader source. - - - - Preprocesses the provided shader or effect source. - - An array of bytes containing the raw source of the shader or effect to preprocess. - A set of macros to define during preprocessing. - An interface for handling include files. - When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. - Name of the source file. - The preprocessed shader source. - - - - Preprocesses the provided shader or effect source. - - An array of bytes containing the raw source of the shader or effect to preprocess. - - A set of macros to define during preprocessing. - An interface for handling include files. - When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. - Name of the source file. - The preprocessed shader source. - - - - Preprocesses the provided shader or effect source. - - A string containing the source of the shader or effect to preprocess. - A set of macros to define during preprocessing. - An interface for handling include files. - When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. - Name of the source file. - The preprocessed shader source. - - - - Preprocesses a shader or effect from a file on disk. - - The name of the source file to compile. - The preprocessed shader source. - - - - Preprocesses a shader or effect from a file on disk. - - The name of the source file to compile. - A set of macros to define during preprocessing. - An interface for handling include files. - The preprocessed shader source. - - - - Preprocesses a shader or effect from a file on disk. - - The name of the source file to compile. - A set of macros to define during preprocessing. - An interface for handling include files. - When the method completes, contains a string of compilation errors, or an empty string if preprocessing succeeded. - The preprocessed shader source. - - - - Strips extraneous information from a compiled shader or effect. - - Options specifying what to remove from the shader. - A string containing any errors that may have occurred. - HRESULT D3DStripShader([In, Buffer] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In] D3DCOMPILER_STRIP_FLAGS uStripFlags,[Out] ID3D10Blob** ppStrippedBlob) - - - - Cast this to the underlying byte buffer. - - - A byte buffer - - - - Read a compiled shader bytecode from a Stream and return a ShaderBytecode - - - - - - - Read a compiled shader bytecode from a Stream and return a ShaderBytecode - - - - - - - Gets the shader type and version string from the provided bytecode. - - The shader bytecode data. - The type and version string of the provided shader bytecode. - Is thrown when is null. - Is thrown when bytecode contains invalid data or the version could not be read. - Is thrown when bytecode contains invalid data. - - - - Reads the value between start and end bits from the provided token. - - The source of the data to read. - The start bit. - The end bit. - - - - - Gets the buffer pointer. - - - - - Gets this instance is composed of compressed shaders. - - - true if this instance is compressed; otherwise, false. - - - - - Represents a shader signature. - - - - - Initializes a new instance of the class. - - A pointer to a shader signature bytecode. - The size. - - - - Initializes a new instance of the class. - - The BLOB. - - - - Initializes a new instance of the class. - - The data. - - - - Initializes a new instance of the class. - - The data. - - - - Extracts the input and output signatures from a compiled shader or effect. - - The bytecode of the compiled shader or effect. - The input and output signatures of the shader or effect. - dd607329 - HRESULT D3DGetInputAndOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) - D3DGetInputAndOutputSignatureBlob - - - - Extracts the input signature from a compiled shader or effect. - - The bytecode of the compiled shader or effect. - The input signature of the shader or effect. - dd607330 - HRESULT D3DGetInputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) - D3DGetInputSignatureBlob - - - - Extracts the output signature from a compiled shader or effect. - - The bytecode of the compiled shader or effect. - The output signature of the shader or effect. - HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) - dd607331 - HRESULT D3DGetOutputSignatureBlob([In, Buffer] const void* pSrcData,[In] SIZE_T SrcDataSize,[Out] ID3D10Blob** ppSignatureBlob) - D3DGetOutputSignatureBlob - - - - Cast this to the underlying byte buffer. - - - A byte buffer - - - - Gets the raw data of the shader signature. - - - - - Represents a profile of a shader stage - stage type and version - - - - - Gets the shader version - that is the shader stage type - - For example, it is the "vs" part from "vs_5_0". - - - - Gets the major version of the shader profile. - - For example, it is the "5" part from "vs_5_0". - - - - Gets the minor version of the shader profile. - - For example, it is the "0" part from "vs_5_0". - - - - Gets the major version of the shader sub-profile. - - For example, it is the "9" part from "vs_4_0_profile_9_3". - - - - Gets the minor version of the shader sub-profile. - - For example, it is the "3" part from "vs_4_0_profile_9_3". - - - - Creates a new instance of the struct. - - The shader stage type. - The major version. - The minor version. - The profile major version. - The profile minor version. - - - - Returns the string representation of the current profile. - - The string representation, for example "ps_5_0" or "vs_4_0_profile_9_3". - - - - Gets the shader type prefix. - - Type prefix, for example "vs" or "ps". - - - - Gets the corresponding for this . - - The minimum that corresponds to current profile. - - - diff --git a/distribution/SharpDX.DXGI.dll b/distribution/SharpDX.DXGI.dll deleted file mode 100644 index b390e581d7a2d561d39c885d825c62a14946afda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90624 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�)Q&ZrhNEzOM^CF5%nRp?ka z!Rb>I+~>3EjB|`?bK_Gc)31K0sP3viJyx@K7&ZxLBb~c?FUqw$;JX%E)B|XclkYj4X(&`HO^%xXk&w6G+t14>4%PXpC zgwc4usfkn`U!*G_vm<=$&CE2$bgG861Th=MQxoBaIw;J9c)XfsI@4U#<=WSsDJI41 zR#enaiB;FqRGT0zn6-3j&4enNBI)6!U+hg&N2O6GArf`VmZZ`=S5{ML%4QkCscY(K z?p_M7qAQdAP30$%=vYOKm^zW3#aLYh4JLZ*QkF3@P>*(( zVi=^lELD%S!&nMf6^BOK%Gk`GMoO*R85Iy1{IBLM*AOH$vmG^4QV}(&>ab z-5XPac@rmLyl^lAv)ZCXVrIOCRvWPuags&vV@kpIkW02X-v(oi!bA0M5`Pzua-vHq^ekT<)o^*M7@|EUzKL_vdoxE z#jI$wx}lOBhpVgTtV-&ZIk8GiVcd+FaT2%->*KZKO=YgDs9jza{foNBUs~>@>Uae$HLMlqQSYbc zMACAO;%SlOW>LD2MTP@kXtFOf!513u3t4vJj3nC(^T$C1%UT z(9X1It)ZH6Ql+v5{y_I><uXM7nbb_yRy!B>S zGE+_Mu4bO+o9y$^d8xR|CYMbp8(-EP-<(vA=^@Qrg!!kt3OX-U!|b>&v%6<4-qF*k ziyKBNRKBBT4;ls5JJHph-M+edk_TAIC8fH0)VOW_z+_AF%IRLJuQdXn(A|*9Wpm1?xf4?7P6+$DBWJ^K*_AQ| z#DuVA6ta=3Wu{WKbgM7DtCpEc)v`P+6T;@*5}Y!+bwW63brbAzL+wImP6$p8&FRVx zP7clqj_(SbnmUKayBQ%&y6>r;G9Q;k3+fh4sH#XTqQ}cx)B2!ruXVdJgHQSEnjno@ zsVk(K7@A^j0$KBx`a;x3N=1y+XlsShsUX5;%J4IzqSlbOIkYtpXVb<2`>be1T_veY zEJ0#ql+TTkrj*BL#_J=oiyCML!aAC$uc*Vu(A<+uqQxq2RoLvxub*0D43-(ByR`V6 zNQ-FN6wQs3tX;@XpeSA2k{MMsRVzrcNxw*mXaQ9%rqB|ES18Cge5Fn^f{UaUd4@?U zPphjsmSs|=@zvGwRV+`DRaK;?Vsd2_uXISVd4a*FPF%W_-&Pn6tFNLf&ckknE=4Lk zwT4zj6elff>*iL}(ZZINlAJYxR#p=l=v-RP;Ax;r6_vAUs@Je$a~IAcDMTNV1jbph zX)kDKYL6wX5&6_*R4+ymi&TmhQ@l|(OzNbX`be}c7ON4)f{#_*T#j?HYh6q45qPD~ zi(X@GY%N_Rs2QaU+B4A(onlPPt65P|Q$b1|=AMd08+eb{y*e`2YpH^sPJ8Ao;(JSL zGj=E@(GE4n%MW_tKuZbgp9}aUh`Gn5iZM#liw^E?YHv+NweeBcXhpIFcx>Tu%QvicOhO=L-&@3fw7n4;+0+2lm
NVq6(w+_r)U@4$<;4It5NWn#@K(~; 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 C - - - SharpDX.DXGI - - - - -

The interface represents a display sub-system (including one or more GPU's, DACs and video memory).

-
- -

A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.

To enumerate the display sub-systems, use . To get an interface to the adapter for a particular device, use . To create a software adapter, use .

Windows?Phone?8: This API is supported.

-
- - bb174523 - IDXGIAdapter - IDXGIAdapter -
- - -

An interface is a base interface for all DXGI objects; supports associating caller-defined (private data) with an object and retrieval of an interface to the parent object.

-
- -

implements base class functionality for several other interfaces: , , ,

Windows?Phone?8: This API is supported.

-
- - bb174541 - IDXGIObject - IDXGIObject -
- - - Gets the parent of the object. - - Type of the parent object - Returns the parent object based on the GUID of the type of the parent object. - bb174542 - HRESULT IDXGIObject::GetParent([In] const GUID& riid,[Out] void** ppParent) - IDXGIObject::GetParent - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets application-defined data to the object and associates that data with a .

-
-

A that identifies the data. Use this in a call to GetPrivateData to get the data.

-

The size of the object's data.

-

A reference to the object's data.

-

Returns one of the DXGI_ERROR values.

- -

SetPrivateData makes a copy of the specified data and stores it with the object.

Private data that SetPrivateData stores in the object occupies the same storage space as private data that is stored by associated Direct3D objects (for example, by a Microsoft Direct3D?11 device through or by a Direct3D?11 child device through ).

The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the well-known private data () that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

 static const char c_szName[] = "My name";	
-            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
-            

You can use to track down memory leaks and understand performance characteristics of your applications. This information is reflected in the output of the debug layer that is related to memory leaks () and with the event tracing for Windows events that we've added to Windows?8. -

Windows?Phone?8: This API is supported.

-
- - bb174544 - HRESULT IDXGIObject::SetPrivateData([In] const GUID& Name,[In] unsigned int DataSize,[In, Buffer] const void* pData) - IDXGIObject::SetPrivateData -
- - -

Set an interface in the object's private data.

-
-

A identifying the interface.

-

The interface to set.

-

Returns one of the following DXGI_ERROR.

- -

This API associates an interface reference with the object.

When the interface is set its reference count is incremented. When the data are overwritten (by calling SPD or SPDI with the same ) or the object is destroyed, ::Release() is called and the interface's reference count is decremented.

Windows?Phone?8: This API is supported.

-
- - bb174545 - HRESULT IDXGIObject::SetPrivateDataInterface([In] const GUID& Name,[In] const IUnknown* pUnknown) - IDXGIObject::SetPrivateDataInterface -
- - -

Get a reference to the object's data.

-
-

A identifying the data.

-

The size of the data.

-

Pointer to the data.

-

Returns one of the following DXGI_ERROR.

- -

If the data returned is a reference to an , or one of its derivative classes, previously set by , you must call ::Release() on the reference before the reference is freed to decrement the reference count.

You can pass GUID_DeviceType in the Name parameter of GetPrivateData to retrieve the device type from the display adapter object (, , IDXGIAdapter2).

To get the type of device on which the display adapter was created

  1. Call IUnknown::QueryInterface on the or object to retrieve the object.
  2. Call GetParent on the object to retrieve the object.
  3. Call GetPrivateData on the object with GUID_DeviceType to retrieve the type of device on which the display adapter was created. pData will point to a value from the driver-type enumeration (for example, a value from ).

On Windows?7 or earlier, this type is either a value from or depending on which kind of device was created. On Windows?8, this type is always a value from . Don't use with GUID_DeviceType because the behavior when doing so is undefined.

Windows?Phone?8: This API is supported.

-
- - bb174543 - HRESULT IDXGIObject::GetPrivateData([In] const GUID& Name,[InOut] unsigned int* pDataSize,[Out, Buffer] void* pData) - IDXGIObject::GetPrivateData -
- - -

Gets the parent of the object.

-
-

The ID of the requested interface.

-

The address of a reference to the parent object.

-

Returns one of the DXGI_ERROR values.

- -

Windows?Phone?8: This API is supported.

-
- - bb174542 - HRESULT IDXGIObject::GetParent([In] const GUID& riid,[Out] void** ppParent) - IDXGIObject::GetParent -
- - - Checks to see if a device interface for a graphics component is supported by the system. - - The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID. - - true if the interface is supported; otherwise, false. - - Bb174524 - HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) - IDXGIAdapter::CheckInterfaceSupport - - - - Checks to see if a device interface for a graphics component is supported by the system. - - the interface of the device version for which support is being checked. - - true if the interface is supported; otherwise, false. - - Bb174524 - HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) - IDXGIAdapter::CheckInterfaceSupport - - - - Checks to see if a device interface for a graphics component is supported by the system. - - the interface of the device version for which support is being checked. - The user mode driver version of InterfaceName. This is only returned if the interface is supported. - - true if the interface is supported; otherwise, false. - - Bb174524 - HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) - IDXGIAdapter::CheckInterfaceSupport - - - - Checks to see if a device interface for a graphics component is supported by the system. - - The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID. - The user mode driver version of InterfaceName. This is only returned if the interface is supported. - - true if the interface is supported; otherwise, false. - - Bb174524 - HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) - IDXGIAdapter::CheckInterfaceSupport - - - - Gets an adapter (video card) outputs. - - The index of the output. - - An instance of - - HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) - - When the EnumOutputs method succeeds and fills the ppOutput parameter with the address of the reference to the output interface, EnumOutputs increments the output interface's reference count. To avoid a memory leak, when you finish using the output interface, call the Release method to decrement the reference count.EnumOutputs first returns the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumOutputs then returns other outputs. - - if the index is greater than the number of outputs, result code - bb174525 - HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) - IDXGIAdapter::EnumOutputs - - - - Return the number of available outputs from this adapter. - - The number of outputs - bb174525 - HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) - IDXGIAdapter::EnumOutputs - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Enumerate adapter (video card) outputs.

-
-

The index of the output.

-

The address of a reference to an interface at the position specified by the Output parameter.

-

A code that indicates success or failure (see DXGI_ERROR). Will return if the index is greater than the number of outputs.

- -

Note??If you call this API in a Session 0 process, it returns .

When the EnumOutputs method succeeds and fills the ppOutput parameter with the address of the reference to the output interface, EnumOutputs increments the output interface's reference count. To avoid a memory leak, when you finish using the output interface, call the Release method to decrement the reference count.

EnumOutputs first returns the output on which the desktop primary is displayed. This output corresponds with an index of zero. EnumOutputs then returns other outputs.

Windows?Phone?8: This API is supported.

-
- - bb174525 - HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) - IDXGIAdapter::EnumOutputs -
- - -

Gets a DXGI 1.0 description of an adapter (or video card).

-
-

A reference to a structure that describes the adapter. This parameter must not be null. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID in the VendorId, DeviceId, SubSysId, and Revision members of and ?Software Adapter? for the description string in the Description member.

-

Returns if successful; otherwise returns E_INVALIDARG if the pDesc parameter is null.

- -

Graphics apps can use the DXGI API to retrieve an accurate set of graphics memory values on systems that have Windows Display Driver Model (WDDM) drivers. The following are the critical steps involved.

  • Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the app must first confirm the driver model by using the following API.
     HasWDDMDriver()	
    -            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = null; HMODULE             hD3D9          = null; hD3D9 = LoadLibrary( L"d3d9.dll" ); if ( null == hD3D9 ) { return false; } // /*  Try to create  interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, "Direct3DCreate9Ex" ); return pD3D9Create9Ex != null;	
    -            } 
  • Retrieval of graphics memory values.? After the app determines the driver model to be WDDM, the app can use the Direct3D 10 or later API and DXGI to get the amount of graphics memory. After you create a Direct3D device, use this code to obtain a structure that contains the amount of available graphics memory.
      * pDXGIDevice;	
    -            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
    -             * pDXGIAdapter;	
    -            pDXGIDevice->GetAdapter(&pDXGIAdapter);	
    -             adapterDesc;	
    -            pDXGIAdapter->GetDesc(&adapterDesc); 

Windows?Phone?8: This API is supported.

-
- - bb174526 - HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc) - IDXGIAdapter::GetDesc -
- - -

Checks whether the system supports a device interface for a graphics component.

-
-

The of the interface of the device version for which support is being checked. For example, __uuidof().

-

The user mode driver version of InterfaceName. This is returned only if the interface is supported. This parameter can be null.

-

indicates that the interface is supported, otherwise is returned (For more information, see DXGI_ERROR).

- -

Note??You can use CheckInterfaceSupport only to check whether a Direct3D 10.x interface is supported, and only on Windows Vista SP1 and later versions of the operating system. If you try to use CheckInterfaceSupport to check whether a Direct3D 11.x and later version interface is supported, CheckInterfaceSupport returns . Therefore, do not use CheckInterfaceSupport. Instead, to verify whether the operating system supports a particular interface, try to create the interface. For example, if you call the method and it fails, the operating system does not support the interface.

Windows?Phone?8: This API is supported.

-
- - bb174524 - HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) - IDXGIAdapter::CheckInterfaceSupport -
- - - Gets all outputs from this adapter. - - bb174525 - HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) - IDXGIAdapter::EnumOutputs - - - -

Gets a DXGI 1.0 description of an adapter (or video card).

-
- -

Graphics apps can use the DXGI API to retrieve an accurate set of graphics memory values on systems that have Windows Display Driver Model (WDDM) drivers. The following are the critical steps involved.

  • Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the app must first confirm the driver model by using the following API.
     HasWDDMDriver()	
    -            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = null; HMODULE             hD3D9          = null; hD3D9 = LoadLibrary( L"d3d9.dll" ); if ( null == hD3D9 ) { return false; } // /*  Try to create  interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, "Direct3DCreate9Ex" ); return pD3D9Create9Ex != null;	
    -            } 
  • Retrieval of graphics memory values.? After the app determines the driver model to be WDDM, the app can use the Direct3D 10 or later API and DXGI to get the amount of graphics memory. After you create a Direct3D device, use this code to obtain a structure that contains the amount of available graphics memory.
      * pDXGIDevice;	
    -            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
    -             * pDXGIAdapter;	
    -            pDXGIDevice->GetAdapter(&pDXGIAdapter);	
    -             adapterDesc;	
    -            pDXGIAdapter->GetDesc(&adapterDesc); 

Windows?Phone?8: This API is supported.

-
- - bb174526 - GetDesc - GetDesc - HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc) -
- - - The assembly provides managed DXGI API. - - hh404534 - DXGI - DXGI - - - - The namespace provides a managed DXGI API. - - hh404534 - DXGI - DXGI - - - -

An interface implements a derived class for DXGI objects that produce image data.

-
- -

The interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to applications that do not use Direct3D to communicate with DXGI.

The Direct3D create device functions return a Direct3D device object. This Direct3D device object implements the interface. You can query this Direct3D device object for the device's corresponding interface. To retrieve the interface of a Direct3D device, use the following code:

 * pDXGIDevice;	
-            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
-            

Windows?Phone?8: This API is supported.

-
- - bb174527 - IDXGIDevice - IDXGIDevice -
- - - Gets the residency status of an array of resources. - - - The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called. Note that the residency status will constantly change. If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the DXGI_RESIDENCY_EVICTED_TO_DISK flag. Note??This method should not be called every frame as it incurs a non-trivial amount of overhead. - - An array of interfaces. - Returns an array of flags. Each element describes the residency status for corresponding element in the ppResources argument array. - HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[None] int NumResources) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Returns the adapter for the specified device.

-
-

The address of an interface reference to the adapter. This parameter must not be null.

-

Returns if successful; otherwise, returns one of the DXGI_ERROR that indicates failure. If the pAdapter parameter is null this method returns E_INVALIDARG.

- -

If the GetAdapter method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.

Windows?Phone?8: This API is supported.

-
- - bb174531 - HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter) - IDXGIDevice::GetAdapter -
- - -

Returns a surface. This method is used internally and you should not call it directly in your application.

-
-

A reference to a structure that describes the surface.

-

The number of surfaces to create.

-

A DXGI_USAGE flag that specifies how the surface is expected to be used.

-

An optional reference to a structure that contains shared resource information for opening views of such resources.

-

The address of an interface reference to the first created surface.

-

Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

- -

The CreateSurface method creates a buffer to exchange data between one or more devices. It is used internally, and you should not directly call it.

The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when it calls or to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to . -

Windows?Phone?8: This API is supported.

-
- - bb174530 - HRESULT IDXGIDevice::CreateSurface([In] const DXGI_SURFACE_DESC* pDesc,[In] unsigned int NumSurfaces,[In] unsigned int Usage,[In, Optional] const DXGI_SHARED_RESOURCE* pSharedResource,[Out] IDXGISurface** ppSurface) - IDXGIDevice::CreateSurface -
- - -

Gets the residency status of an array of resources.

-
-

An array of interfaces.

-

An array of flags. Each element describes the residency status for corresponding element in the ppResources argument array.

-

The number of resources in the ppResources argument array and pResidencyStatus argument array.

-

Returns if successful; otherwise, returns , E_INVALIDARG, or E_POINTER (see WinError.h for more information).

- -

The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called.

Note??The residency status will constantly change.

If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the flag.

Note??This method should not be called every frame as it incurs a non-trivial amount of overhead.

Windows?Phone?8: This API is supported.

-
- - bb174533 - HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources) - IDXGIDevice::QueryResourceResidency -
- - -

Gets the residency status of an array of resources.

-
-

An array of interfaces.

-

An array of flags. Each element describes the residency status for corresponding element in the ppResources argument array.

-

The number of resources in the ppResources argument array and pResidencyStatus argument array.

-

Returns if successful; otherwise, returns , E_INVALIDARG, or E_POINTER (see WinError.h for more information).

- -

The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called.

Note??The residency status will constantly change.

If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the flag.

Note??This method should not be called every frame as it incurs a non-trivial amount of overhead.

Windows?Phone?8: This API is supported.

-
- - bb174533 - HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources) - IDXGIDevice::QueryResourceResidency -
- - -

Sets the GPU thread priority.

-
-

A value that specifies the required GPU thread priority. This value must be between -7 and 7, inclusive, where 0 represents normal priority.

-

Return if successful; otherwise, returns E_INVALIDARG if the Priority parameter is invalid.

- -

The values for the Priority parameter function as follows:

  • Positive values increase the likelihood that the GPU scheduler will grant GPU execution cycles to the device when rendering.
  • Negative values lessen the likelihood that the device will receive GPU execution cycles when devices compete for them.
  • The device is guaranteed to receive some GPU execution cycles at all settings.

To use the SetGPUThreadPriority method, you should have a comprehensive understanding of GPU scheduling. You should profile your application to ensure that it behaves as intended. If used inappropriately, the SetGPUThreadPriority method can impede rendering speed and result in a poor user experience.

Windows?Phone?8: This API is supported.

-
- - bb174534 - HRESULT IDXGIDevice::SetGPUThreadPriority([In] int Priority) - IDXGIDevice::SetGPUThreadPriority -
- - -

Gets the GPU thread priority.

-
-

A reference to a variable that receives a value that indicates the current GPU thread priority. The value will be between -7 and 7, inclusive, where 0 represents normal priority.

-

Return if successful; otherwise, returns E_POINTER if the pPriority parameter is null.

- -

Windows?Phone?8: This API is supported.

-
- - bb174532 - HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority) - IDXGIDevice::GetGPUThreadPriority -
- - -

Returns the adapter for the specified device.

-
- -

If the GetAdapter method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.

Windows?Phone?8: This API is supported.

-
- - bb174531 - GetAdapter - GetAdapter - HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter) -
- - -

Gets or sets the GPU thread priority.

-
- -

Windows?Phone?8: This API is supported.

-
- - bb174532 - GetGPUThreadPriority / SetGPUThreadPriority - GetGPUThreadPriority - HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority) -
- - -

Inherited from objects that are tied to the device so that they can retrieve a reference to it.

-
- -

Windows?Phone?8: This API is supported.

-
- - bb174528 - IDXGIDeviceSubObject - IDXGIDeviceSubObject -
- - - Retrieves the device. - - The interface that is returned can be any interface published by the device. - The associated device. - HRESULT IDXGIDeviceSubObject::GetDevice([In] GUID* riid,[Out] void** ppDevice) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Retrieves the device.

-
-

The reference id for the device.

-

The address of a reference to the device.

-

A code that indicates success or failure (see DXGI_ERROR).

- -

The type of interface that is returned can be any interface published by the device. For example, it could be an * called pDevice, and therefore the REFIID would be obtained by calling __uuidof(pDevice).

Windows?Phone?8: This API is supported.

-
- - bb174529 - HRESULT IDXGIDeviceSubObject::GetDevice([In] const GUID& riid,[Out] void** ppDevice) - IDXGIDeviceSubObject::GetDevice -
- - - Gets or sets the debug-name for this object. - - - The debug name. - - - - -

An interface implements methods for generating DXGI objects (which handle full screen transitions).

-
- -

Create a factory by calling CreateDXGIFactory.

Because you can create a Direct3D device without creating a swap chain, you might need to retrieve the factory that is used to create the device in order to create a swap chain. - You can request the interface from the Direct3D device and then use the method to locate - the factory. The following code shows how.

 * pDXGIDevice;	
-            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);  * pDXGIAdapter;	
-            hr = pDXGIDevice->GetParent(__uuidof(), (void **)&pDXGIAdapter);  * pIDXGIFactory;	
-            pDXGIAdapter->GetParent(__uuidof(), (void **)&pIDXGIFactory);	
-            

Windows?Phone?8: This API is supported.

-
- - bb174535 - IDXGIFactory - IDXGIFactory -
- - - Default Constructor for Factory - - - - - Create an adapter interface that represents a software adapter. - - - A software adapter is a DLL that implements the entirety of a device driver interface, plus emulation, if necessary, of kernel-mode graphics components for Windows. Details on implementing a software adapter can be found in the Windows Vista Driver Development Kit. This is a very complex development task, and is not recommended for general readers. Calling this method will increment the module's reference count by one. The reference count can be decremented by calling {{FreeLibrary}}. The typical calling scenario is to call {{LoadLibrary}}, pass the handle to CreateSoftwareAdapter, then immediately call {{FreeLibrary}} on the DLL and forget the DLL's {{HMODULE}}. Since the software adapter calls FreeLibrary when it is destroyed, the lifetime of the DLL will now be owned by the adapter, and the application is free of any further consideration of its lifetime. - - Handle to the software adapter's DLL. - A reference to an adapter (see ). - HRESULT IDXGIFactory::CreateSoftwareAdapter([None] void* Module,[Out] IDXGIAdapter** ppAdapter) - - - - Gets both adapters (video cards) with or without outputs. - - The index of the adapter to enumerate. - a reference to an interface at the position specified by the Adapter parameter - - When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters then returns other adapters with outputs. - - HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) - - - - Return the number of available adapters from this factory. - - The number of adapters - HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Enumerates the adapters (video cards).

-
-

The index of the adapter to enumerate.

-

The address of a reference to an interface at the position specified by the Adapter parameter. This parameter must not be null.

-

Returns if successful; otherwise, returns if the index is greater than or equal to the number of adapters in the local system, or if ppAdapter parameter is null.

- -

When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.

When the EnumAdapters method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.

EnumAdapters first returns the adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters next returns other adapters with outputs. EnumAdapters finally returns adapters without outputs.

Windows?Phone?8: This API is supported.

-
- - bb174538 - HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) - IDXGIFactory::EnumAdapters -
- - -

Allows DXGI to monitor an application's message queue for the alt-enter key sequence (which causes the application to switch from windowed to full screen or vice versa).

-
-

The handle of the window that is to be monitored. This parameter can be null; but only if the flags are also 0.

-

One or more of the following values:

  • - Prevent DXGI from monitoring an applications message queue; this makes DXGI unable to respond to mode changes.
  • - Prevent DXGI from responding to an alt-enter sequence.
  • - Prevent DXGI from responding to a print-screen key.
-

if WindowHandle is invalid, or E_OUTOFMEMORY.

- -

Note??If you call this API in a Session 0 process, it returns .

The combination of WindowHandle and Flags informs DXGI to stop monitoring window messages for the previously-associated window.

If the application switches to full-screen mode, DXGI will choose a full-screen resolution to be the smallest supported resolution that is larger or the same size as the current back buffer size.

Applications can make some changes to make the transition from windowed to full screen more efficient. For example, on a WM_SIZE message, the application should release any outstanding swap-chain back buffers, call , then re-acquire the back buffers from the swap chain(s). This gives the swap chain(s) an opportunity to resize the back buffers, and/or recreate them to enable full-screen flipping operation. If the application does not perform this sequence, DXGI will still make the full-screen/windowed transition, but may be forced to use a stretch operation (since the back buffers may not be the correct size), which may be less efficient. Even if a stretch is not required, presentation may not be optimal because the back buffers might not be directly interchangeable with the front buffer. Thus, a call to ResizeBuffers on WM_SIZE is always recommended, since WM_SIZE is always sent during a fullscreen transition.

While windowed, the application can, if it chooses, restrict the size of its window's client area to sizes to which it is comfortable rendering. A fully flexible application would make no such restriction, but UI elements or other design considerations can, of course, make this flexibility untenable. If the application further chooses to restrict its window's client area to just those that match supported full-screen resolutions, the application can field WM_SIZING, then check against . If a matching mode is found, allow the resize. (The can be retrieved from . Absent subsequent changes to desktop topology, this will be the same output that will be chosen when alt-enter is fielded and fullscreen mode is begun for that swap chain.)

Applications that want to handle mode changes or Alt+Enter themselves should call MakeWindowAssociation with the flag after swap chain creation. The WindowHandle argument, if non-null, specifies that the application message queues will not be handled by the DXGI runtime for all swap chains of a particular target . Calling MakeWindowAssociation with the flag after swapchain creation ensures that DXGI will not interfere with application's handling of window mode changes or Alt+Enter.

-
- - bb174540 - HRESULT IDXGIFactory::MakeWindowAssociation([In] HWND WindowHandle,[In] DXGI_MWA_FLAGS Flags) - IDXGIFactory::MakeWindowAssociation -
- - -

Get the window through which the user controls the transition to and from full screen.

-
-

A reference to a window handle.

- -

Note??If you call this API in a Session 0 process, it returns .

-
- - bb174539 - HRESULT IDXGIFactory::GetWindowAssociation([Out] HWND* pWindowHandle) - IDXGIFactory::GetWindowAssociation -
- - -

[Starting with Direct3D 11.1, we recommend not to use CreateSwapChain anymore to create a swap chain. Instead, use CreateSwapChainForHwnd, CreateSwapChainForCoreWindow, or CreateSwapChainForComposition depending on how you want to create the swap chain.]

Creates a swap chain.

-
- No documentation. - No documentation. - No documentation. -

if pDesc or ppSwapChain is null, if you request full-screen mode and it is unavailable, or E_OUTOFMEMORY. Other error codes defined by the type of device passed in may also be returned.

- -

Note??If you call this API in a Session 0 process, it returns .

If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and will be returned.

If the buffer width or the buffer height is zero, the sizes will be inferred from the output window size in the swap-chain description.

Because the target output can't be chosen explicitly when the swap chain is created, we recommend not to create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure that the sizes match:

  • Create a windowed swap chain and then set it full-screen using .
  • Save a reference to the swap chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with ) during the transition from windowed to full-screen.

If the swap chain is in full-screen mode, before you release it you must use SetFullscreenState to switch it to windowed mode. For more information about releasing a swap chain, see the "Destroying a Swap Chain" section of DXGI Overview.

After the runtime renders the initial frame in full screen, the runtime might unexpectedly exit full screen during a call to . To work around this issue, we recommend that you execute the following code right after you call CreateSwapChain to create a full-screen swap chain (Windowed member of set to ). -

 // Detect if newly created full-screen swap chain isn't actually full screen.	
-            * pTarget;  bFullscreen;	
-            if (SUCCEEDED(pSwapChain->GetFullscreenState(&bFullscreen, &pTarget)))	
-            { pTarget->Release();	
-            }	
-            else bFullscreen = ;	
-            // If not full screen, enable full screen again.	
-            if (!bFullscreen)	
-            { ShowWindow(hWnd, SW_MINIMIZE); ShowWindow(hWnd, SW_RESTORE); pSwapChain->SetFullscreenState(TRUE, null);	
-            }	
-            

You can specify and values in the swap-chain description that pDesc points to. These values allow you to use features like flip-model presentation and content protection by using pre-Windows?8 APIs.

However, to use stereo presentation and to change resize behavior for the flip model, applications must use the IDXGIFactory2::CreateSwapChainForHwnd method. Otherwise, the back-buffer contents implicitly scale to fit the presentation target size; that is, you can't turn off scaling.

-
- - bb174537 - HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain) - IDXGIFactory::CreateSwapChain -
- - -

Create an adapter interface that represents a software adapter.

-
-

Handle to the software adapter's dll. HMODULE can be obtained with GetModuleHandle or LoadLibrary.

-

Address of a reference to an adapter (see ).

- -

A software adapter is a DLL that implements the entirety of a device driver interface, plus emulation, if necessary, of kernel-mode graphics components for Windows. Details on implementing a software adapter can be found in the Windows Vista Driver Development Kit. This is a very complex development task, and is not recommended for general readers.

Calling this method will increment the module's reference count by one. The reference count can be decremented by calling FreeLibrary.

The typical calling scenario is to call LoadLibrary, pass the handle to CreateSoftwareAdapter, then immediately call FreeLibrary on the DLL and forget the DLL's HMODULE. Since the software adapter calls FreeLibrary when it is destroyed, the lifetime of the DLL will now be owned by the adapter, and the application is free of any further consideration of its lifetime.

Windows?Phone?8: This API is supported.

-
- - bb174536 - HRESULT IDXGIFactory::CreateSoftwareAdapter([In] HINSTANCE Module,[Out] IDXGIAdapter** ppAdapter) - IDXGIFactory::CreateSoftwareAdapter -
- - - Return an array of available from this factory. - - HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) - - - -

The interface implements methods for generating DXGI objects.

-
- -

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

To create a factory, call the CreateDXGIFactory1 function.

Because you can create a Direct3D device without creating a swap chain, you might need to retrieve the factory that is used to create the device in order to create a swap chain. - You can request the or interface from the Direct3D device and then use the method to locate - the factory. The following code shows how.

 * pDXGIDevice;	
-            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);  * pDXGIAdapter;	
-            hr = pDXGIDevice->GetParent(__uuidof(), (void **)&pDXGIAdapter);  * pIDXGIFactory;	
-            pDXGIAdapter->GetParent(__uuidof(), (void **)&pIDXGIFactory);	
-            

Windows?Phone?8: This API is supported.

-
- - ff471335 - IDXGIFactory1 - IDXGIFactory1 -
- - - Default Constructor for Factory1. - - - - - Gets both adapters (video cards) with or without outputs. - - The index of the adapter to enumerate. - a reference to an interface at the position specified by the Adapter parameter - - This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters1 method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters1 increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters1 first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters1 next returns other adapters with outputs. EnumAdapters1 finally returns adapters without outputs. - - HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) - - - - Return the number of available adapters from this factory. - - The number of adapters - HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Enumerates both adapters (video cards) with or without outputs.

-
-

The index of the adapter to enumerate.

-

The address of a reference to an interface at the position specified by the Adapter parameter. This parameter must not be null.

-

Returns if successful; otherwise, returns if the index is greater than or equal to the number of adapters in the local system, or if ppAdapter parameter is null.

- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.

When the EnumAdapters1 method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters1 increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.

EnumAdapters1 first returns the adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters1 next returns other adapters with outputs. EnumAdapters1 finally returns adapters without outputs.

Windows?Phone?8: This API is supported.

-
- - ff471336 - HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) - IDXGIFactory1::EnumAdapters1 -
- - -

Informs an application of the possible need to re-enumerate adapters.

-
-

, if a new adapter is becoming available or the current adapter is going away. TRUE, no adapter changes.

IsCurrent returns to inform the calling application to re-enumerate adapters.

- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Windows?Phone?8: This API is supported.

-
- - ff471337 - BOOL IDXGIFactory1::IsCurrent() - IDXGIFactory1::IsCurrent -
- - - Return an array of available from this factory. - - HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) - - - -

Informs an application of the possible need to re-enumerate adapters.

-
- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Windows?Phone?8: This API is supported.

-
- - ff471337 - IsCurrent - IsCurrent - BOOL IDXGIFactory1::IsCurrent() -
- - - Helper to use with . - - - - - Calculates the size of a in bytes. Can be 0 for compressed format (as they are less than 1 byte) - - The DXGI format. - size of in bytes - - - - Calculates the size of a in bits. - - The DXGI format. - size of in bits - - - - Returns true if the is valid. - - A format to validate - True if the is valid. - - - - Returns true if the is a compressed format. - - The format to check for compressed. - True if the is a compressed format - - - - Determines whether the specified is packed. - - The DXGI Format. - true if the specified is packed; otherwise, false. - - - - Determines whether the specified is video. - - The . - true if the specified is video; otherwise, false. - - - - Determines whether the specified is a SRGB format. - - The . - true if the specified is a SRGB format; otherwise, false. - - - - Determines whether the specified is typeless. - - The . - true if the specified is typeless; otherwise, false. - - - - Computes the scanline count (number of scanlines). - - The . - The height. - The scanline count. - - - - Static initializer to speed up size calculation (not sure the JIT is enough "smart" for this kind of thing). - - - - -

Identifies the type of DXGI adapter.

-
- -

The enumerated type is used by the Flags member of the or DXGI_ADAPTER_DESC2 structure to identify the type of DXGI adapter.

-
- - ff471327 - DXGI_ADAPTER_FLAG - DXGI_ADAPTER_FLAG -
- - -

Specifies no flags.

-
- - ff471327 - DXGI_ADAPTER_FLAG_NONE - DXGI_ADAPTER_FLAG_NONE -
- - -

Value always set to 0. This flag is reserved.

-
- - ff471327 - DXGI_ADAPTER_FLAG_REMOTE - DXGI_ADAPTER_FLAG_REMOTE -
- - -

Options for enumerating display modes.

-
- -

These flag options are used in to enumerate display modes.

These flag options are also used in IDXGIOutput1::GetDisplayModeList1 to enumerate display modes.

-
- - cc308060 - DXGI_ENUM_MODES_FLAGS - DXGI_ENUM_MODES_FLAGS -
- - - No documentation. - - - cc308060 - DXGI_ENUM_MODES_INTERLACED - DXGI_ENUM_MODES_INTERLACED - - - - No documentation. - - - cc308060 - DXGI_ENUM_MODES_SCALING - DXGI_ENUM_MODES_SCALING - - - -

Flags that indicate how the back buffers should be rotated to fit the physical rotation of a monitor.

-
- - bb173065 - DXGI_MODE_ROTATION - DXGI_MODE_ROTATION -
- - -

Unspecified rotation.

-
- - bb173065 - DXGI_MODE_ROTATION_UNSPECIFIED - DXGI_MODE_ROTATION_UNSPECIFIED -
- - -

Specifies no rotation.

-
- - bb173065 - DXGI_MODE_ROTATION_IDENTITY - DXGI_MODE_ROTATION_IDENTITY -
- - -

Specifies 90 degrees of rotation.

-
- - bb173065 - DXGI_MODE_ROTATION_ROTATE90 - DXGI_MODE_ROTATION_ROTATE90 -
- - -

Specifies 180 degrees of rotation.

-
- - bb173065 - DXGI_MODE_ROTATION_ROTATE180 - DXGI_MODE_ROTATION_ROTATE180 -
- - -

Specifies 270 degrees of rotation.

-
- - bb173065 - DXGI_MODE_ROTATION_ROTATE270 - DXGI_MODE_ROTATION_ROTATE270 -
- - -

Flags indicating how an image is stretched to fit a given monitor's resolution.

-
- - bb173066 - DXGI_MODE_SCALING - DXGI_MODE_SCALING -
- - -

Unspecified scaling.

-
- - bb173066 - DXGI_MODE_SCALING_UNSPECIFIED - DXGI_MODE_SCALING_UNSPECIFIED -
- - -

Specifies no scaling. The image is centered on the display. This flag is typically used for a fixed-dot-pitch display (such as an LED display).

-
- - bb173066 - DXGI_MODE_SCALING_CENTERED - DXGI_MODE_SCALING_CENTERED -
- - -

Specifies stretched scaling.

-
- - bb173066 - DXGI_MODE_SCALING_STRETCHED - DXGI_MODE_SCALING_STRETCHED -
- - -

Flags indicating the method the raster uses to create an image on a surface.

-
- - bb173067 - DXGI_MODE_SCANLINE_ORDER - DXGI_MODE_SCANLINE_ORDER -
- - -

Scanline order is unspecified.

-
- - bb173067 - DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED - DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED -
- - -

The image is created from the first scanline to the last without skipping any.

-
- - bb173067 - DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE - DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE -
- - -

The image is created beginning with the upper field.

-
- - bb173067 - DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST - DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST -
- - -

The image is created beginning with the lower field.

-
- - bb173067 - DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST - DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST -
- - -

Status codes that can be returned by DXGI functions.

-
- -

The value for each value is determined from this macro that is defined in DXGItype.h:

 #define _FACDXGI    0x87a	
-            #define MAKE_DXGI_STATUS(code)  MAKE_HRESULT(0, _FACDXGI, code)	
-            

For example, is defined as 0x087A0001:

 #define                     MAKE_DXGI_STATUS(1)	
-            
-
- - cc308061 - DXGI_STATUS - DXGI_STATUS -
- - - No documentation. - - - cc308061 - DXGI_STATUS_OCCLUDED - DXGI_STATUS_OCCLUDED - - - - No documentation. - - - cc308061 - DXGI_STATUS_CLIPPED - DXGI_STATUS_CLIPPED - - - - No documentation. - - - cc308061 - DXGI_STATUS_NO_REDIRECTION - DXGI_STATUS_NO_REDIRECTION - - - - No documentation. - - - cc308061 - DXGI_STATUS_NO_DESKTOP_ACCESS - DXGI_STATUS_NO_DESKTOP_ACCESS - - - - No documentation. - - - cc308061 - DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE - DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE - - - - No documentation. - - - cc308061 - DXGI_STATUS_MODE_CHANGED - DXGI_STATUS_MODE_CHANGED - - - - No documentation. - - - cc308061 - DXGI_STATUS_MODE_CHANGE_IN_PROGRESS - DXGI_STATUS_MODE_CHANGE_IN_PROGRESS - - - -

Resource data formats which includes fully-typed and typeless formats. There is a list of format modifiers at the bottom of the page, that more fully describes each format type.

-
- -

A few formats have additional restrictions.

  1. A resource declared with the DXGI_FORMAT_R32G32B32 family of formats cannot be used simultaneously for vertex and texture data. That is, you may not create a buffer resource with the DXGI_FORMAT_R32G32B32 family of formats that uses any of the following bind flags: , , , or (see ).
  2. is designed specifically for text filtering, and must be used with a format-specific, configurable 8x8 filter mode. When calling an HLSL sampling function using this format, the address offset parameter must be set to (0,0).
  3. A resource using a sub-sampled format (such as DXGI_FORMAT_R8G8_B8G8) must have a size that is a multiple of 2 in the x dimension.
  4. Format is not available in Direct3D 10 and Direct3D 10.1

The following topics provide lists of the formats that particular hardware feature levels support:

  • Hardware Support for Direct3D 11.1 Formats
  • Hardware Support for Direct3D 11 Formats
  • Hardware Support for Direct3D 10.1 Formats
  • Hardware Support for Direct3D 10 Formats
  • Hardware Support for Direct3D 10Level9 Formats

For a list of the DirectXMath types that map to values, see DirectXMath Library Internals.

-
- - bb173059 - DXGI_FORMAT - DXGI_FORMAT -
- - -

The format is not known.

-
- - bb173059 - DXGI_FORMAT_UNKNOWN - DXGI_FORMAT_UNKNOWN -
- - -

A four-component, 128-bit typeless format that supports 32 bits per channel including alpha. 1

-
- - bb173059 - DXGI_FORMAT_R32G32B32A32_TYPELESS - DXGI_FORMAT_R32G32B32A32_TYPELESS -
- - -

A four-component, 128-bit floating-point format that supports 32 bits per channel including alpha. 1

-
- - bb173059 - DXGI_FORMAT_R32G32B32A32_FLOAT - DXGI_FORMAT_R32G32B32A32_FLOAT -
- - -

A four-component, 128-bit unsigned-integer format that supports 32 bits per channel including alpha. 1

-
- - bb173059 - DXGI_FORMAT_R32G32B32A32_UINT - DXGI_FORMAT_R32G32B32A32_UINT -
- - -

A four-component, 128-bit signed-integer format that supports 32 bits per channel including alpha. 1

-
- - bb173059 - DXGI_FORMAT_R32G32B32A32_SINT - DXGI_FORMAT_R32G32B32A32_SINT -
- - -

A three-component, 96-bit typeless format that supports 32 bits per color channel.

-
- - bb173059 - DXGI_FORMAT_R32G32B32_TYPELESS - DXGI_FORMAT_R32G32B32_TYPELESS -
- - -

A three-component, 96-bit floating-point format that supports 32 bits per color channel.

-
- - bb173059 - DXGI_FORMAT_R32G32B32_FLOAT - DXGI_FORMAT_R32G32B32_FLOAT -
- - -

A three-component, 96-bit unsigned-integer format that supports 32 bits per color channel.

-
- - bb173059 - DXGI_FORMAT_R32G32B32_UINT - DXGI_FORMAT_R32G32B32_UINT -
- - -

A three-component, 96-bit signed-integer format that supports 32 bits per color channel.

-
- - bb173059 - DXGI_FORMAT_R32G32B32_SINT - DXGI_FORMAT_R32G32B32_SINT -
- - -

A four-component, 64-bit typeless format that supports 16 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R16G16B16A16_TYPELESS - DXGI_FORMAT_R16G16B16A16_TYPELESS -
- - -

A four-component, 64-bit floating-point format that supports 16 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R16G16B16A16_FLOAT - DXGI_FORMAT_R16G16B16A16_FLOAT -
- - -

A four-component, 64-bit unsigned-normalized-integer format that supports 16 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R16G16B16A16_UNORM - DXGI_FORMAT_R16G16B16A16_UNORM -
- - -

A four-component, 64-bit unsigned-integer format that supports 16 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R16G16B16A16_UINT - DXGI_FORMAT_R16G16B16A16_UINT -
- - -

A four-component, 64-bit signed-normalized-integer format that supports 16 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R16G16B16A16_SNORM - DXGI_FORMAT_R16G16B16A16_SNORM -
- - -

A four-component, 64-bit signed-integer format that supports 16 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R16G16B16A16_SINT - DXGI_FORMAT_R16G16B16A16_SINT -
- - -

A two-component, 64-bit typeless format that supports 32 bits for the red channel and 32 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R32G32_TYPELESS - DXGI_FORMAT_R32G32_TYPELESS -
- - -

A two-component, 64-bit floating-point format that supports 32 bits for the red channel and 32 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R32G32_FLOAT - DXGI_FORMAT_R32G32_FLOAT -
- - -

A two-component, 64-bit unsigned-integer format that supports 32 bits for the red channel and 32 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R32G32_UINT - DXGI_FORMAT_R32G32_UINT -
- - -

A two-component, 64-bit signed-integer format that supports 32 bits for the red channel and 32 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R32G32_SINT - DXGI_FORMAT_R32G32_SINT -
- - -

A two-component, 64-bit typeless format that supports 32 bits for the red channel, 8 bits for the green channel, and 24 bits are unused.

-
- - bb173059 - DXGI_FORMAT_R32G8X24_TYPELESS - DXGI_FORMAT_R32G8X24_TYPELESS -
- - -

A 32-bit floating-point component, and two unsigned-integer components (with an additional 32 bits). This format supports 32-bit depth, 8-bit stencil, and 24 bits are unused.

-
- - bb173059 - DXGI_FORMAT_D32_FLOAT_S8X24_UINT - DXGI_FORMAT_D32_FLOAT_S8X24_UINT -
- - -

A 32-bit floating-point component, and two typeless components (with an additional 32 bits). This format supports 32-bit red channel, 8 bits are unused, and 24 bits are unused.

-
- - bb173059 - DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS - DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS -
- - -

A 32-bit typeless component, and two unsigned-integer components (with an additional 32 bits). This format has 32 bits unused, 8 bits for green channel, and 24 bits are unused.

-
- - bb173059 - DXGI_FORMAT_X32_TYPELESS_G8X24_UINT - DXGI_FORMAT_X32_TYPELESS_G8X24_UINT -
- - -

A four-component, 32-bit typeless format that supports 10 bits for each color and 2 bits for alpha.

-
- - bb173059 - DXGI_FORMAT_R10G10B10A2_TYPELESS - DXGI_FORMAT_R10G10B10A2_TYPELESS -
- - -

A four-component, 32-bit unsigned-normalized-integer format that supports 10 bits for each color and 2 bits for alpha.

-
- - bb173059 - DXGI_FORMAT_R10G10B10A2_UNORM - DXGI_FORMAT_R10G10B10A2_UNORM -
- - -

A four-component, 32-bit unsigned-integer format that supports 10 bits for each color and 2 bits for alpha.

-
- - bb173059 - DXGI_FORMAT_R10G10B10A2_UINT - DXGI_FORMAT_R10G10B10A2_UINT -
- - -

Three partial-precision floating-point numbers encoded into a single 32-bit value (a variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent). There are no sign bits, and there is a 5-bit biased (15) exponent for each channel, 6-bit mantissa for R and G, and a 5-bit mantissa for B, as shown in the following illustration.

-
- - bb173059 - DXGI_FORMAT_R11G11B10_FLOAT - DXGI_FORMAT_R11G11B10_FLOAT -
- - -

A four-component, 32-bit typeless format that supports 8 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R8G8B8A8_TYPELESS - DXGI_FORMAT_R8G8B8A8_TYPELESS -
- - -

A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R8G8B8A8_UNORM - DXGI_FORMAT_R8G8B8A8_UNORM -
- - -

A four-component, 32-bit unsigned-normalized integer sRGB format that supports 8 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R8G8B8A8_UNORM_SRGB - DXGI_FORMAT_R8G8B8A8_UNORM_SRGB -
- - -

A four-component, 32-bit unsigned-integer format that supports 8 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R8G8B8A8_UINT - DXGI_FORMAT_R8G8B8A8_UINT -
- - -

A four-component, 32-bit signed-normalized-integer format that supports 8 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R8G8B8A8_SNORM - DXGI_FORMAT_R8G8B8A8_SNORM -
- - -

A four-component, 32-bit signed-integer format that supports 8 bits per channel including alpha.

-
- - bb173059 - DXGI_FORMAT_R8G8B8A8_SINT - DXGI_FORMAT_R8G8B8A8_SINT -
- - -

A two-component, 32-bit typeless format that supports 16 bits for the red channel and 16 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R16G16_TYPELESS - DXGI_FORMAT_R16G16_TYPELESS -
- - -

A two-component, 32-bit floating-point format that supports 16 bits for the red channel and 16 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R16G16_FLOAT - DXGI_FORMAT_R16G16_FLOAT -
- - -

A two-component, 32-bit unsigned-normalized-integer format that supports 16 bits each for the green and red channels.

-
- - bb173059 - DXGI_FORMAT_R16G16_UNORM - DXGI_FORMAT_R16G16_UNORM -
- - -

A two-component, 32-bit unsigned-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R16G16_UINT - DXGI_FORMAT_R16G16_UINT -
- - -

A two-component, 32-bit signed-normalized-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R16G16_SNORM - DXGI_FORMAT_R16G16_SNORM -
- - -

A two-component, 32-bit signed-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R16G16_SINT - DXGI_FORMAT_R16G16_SINT -
- - -

A single-component, 32-bit typeless format that supports 32 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R32_TYPELESS - DXGI_FORMAT_R32_TYPELESS -
- - -

A single-component, 32-bit floating-point format that supports 32 bits for depth.

-
- - bb173059 - DXGI_FORMAT_D32_FLOAT - DXGI_FORMAT_D32_FLOAT -
- - -

A single-component, 32-bit floating-point format that supports 32 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R32_FLOAT - DXGI_FORMAT_R32_FLOAT -
- - -

A single-component, 32-bit unsigned-integer format that supports 32 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R32_UINT - DXGI_FORMAT_R32_UINT -
- - -

A single-component, 32-bit signed-integer format that supports 32 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R32_SINT - DXGI_FORMAT_R32_SINT -
- - -

A two-component, 32-bit typeless format that supports 24 bits for the red channel and 8 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R24G8_TYPELESS - DXGI_FORMAT_R24G8_TYPELESS -
- - -

A 32-bit z-buffer format that supports 24 bits for depth and 8 bits for stencil.

-
- - bb173059 - DXGI_FORMAT_D24_UNORM_S8_UINT - DXGI_FORMAT_D24_UNORM_S8_UINT -
- - -

A 32-bit format, that contains a 24 bit, single-component, unsigned-normalized integer, with an additional typeless 8 bits. This format has 24 bits red channel and 8 bits unused.

-
- - bb173059 - DXGI_FORMAT_R24_UNORM_X8_TYPELESS - DXGI_FORMAT_R24_UNORM_X8_TYPELESS -
- - -

A 32-bit format, that contains a 24 bit, single-component, typeless format, with an additional 8 bit unsigned integer component. This format has 24 bits unused and 8 bits green channel.

-
- - bb173059 - DXGI_FORMAT_X24_TYPELESS_G8_UINT - DXGI_FORMAT_X24_TYPELESS_G8_UINT -
- - -

A two-component, 16-bit typeless format that supports 8 bits for the red channel and 8 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R8G8_TYPELESS - DXGI_FORMAT_R8G8_TYPELESS -
- - -

A two-component, 16-bit unsigned-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R8G8_UNORM - DXGI_FORMAT_R8G8_UNORM -
- - -

A two-component, 16-bit unsigned-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R8G8_UINT - DXGI_FORMAT_R8G8_UINT -
- - -

A two-component, 16-bit signed-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R8G8_SNORM - DXGI_FORMAT_R8G8_SNORM -
- - -

A two-component, 16-bit signed-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

-
- - bb173059 - DXGI_FORMAT_R8G8_SINT - DXGI_FORMAT_R8G8_SINT -
- - -

A single-component, 16-bit typeless format that supports 16 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R16_TYPELESS - DXGI_FORMAT_R16_TYPELESS -
- - -

A single-component, 16-bit floating-point format that supports 16 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R16_FLOAT - DXGI_FORMAT_R16_FLOAT -
- - -

A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for depth.

-
- - bb173059 - DXGI_FORMAT_D16_UNORM - DXGI_FORMAT_D16_UNORM -
- - -

A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R16_UNORM - DXGI_FORMAT_R16_UNORM -
- - -

A single-component, 16-bit unsigned-integer format that supports 16 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R16_UINT - DXGI_FORMAT_R16_UINT -
- - -

A single-component, 16-bit signed-normalized-integer format that supports 16 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R16_SNORM - DXGI_FORMAT_R16_SNORM -
- - -

A single-component, 16-bit signed-integer format that supports 16 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R16_SINT - DXGI_FORMAT_R16_SINT -
- - -

A single-component, 8-bit typeless format that supports 8 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R8_TYPELESS - DXGI_FORMAT_R8_TYPELESS -
- - -

A single-component, 8-bit unsigned-normalized-integer format that supports 8 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R8_UNORM - DXGI_FORMAT_R8_UNORM -
- - -

A single-component, 8-bit unsigned-integer format that supports 8 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R8_UINT - DXGI_FORMAT_R8_UINT -
- - -

A single-component, 8-bit signed-normalized-integer format that supports 8 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R8_SNORM - DXGI_FORMAT_R8_SNORM -
- - -

A single-component, 8-bit signed-integer format that supports 8 bits for the red channel.

-
- - bb173059 - DXGI_FORMAT_R8_SINT - DXGI_FORMAT_R8_SINT -
- - -

A single-component, 8-bit unsigned-normalized-integer format for alpha only.

-
- - bb173059 - DXGI_FORMAT_A8_UNORM - DXGI_FORMAT_A8_UNORM -
- - -

A single-component, 1-bit unsigned-normalized integer format that supports 1 bit for the red channel. 2.

-
- - bb173059 - DXGI_FORMAT_R1_UNORM - DXGI_FORMAT_R1_UNORM -
- - -

Three partial-precision floating-point numbers encoded into a single 32-bit value all sharing the same 5-bit exponent (variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent). There is no sign bit, and there is a shared 5-bit biased (15) exponent and a 9-bit mantissa for each channel, as shown in the following illustration. 2.

-
- - bb173059 - DXGI_FORMAT_R9G9B9E5_SHAREDEXP - DXGI_FORMAT_R9G9B9E5_SHAREDEXP -
- - -

A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the UYVY format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3

Width must be even.

-
- - bb173059 - DXGI_FORMAT_R8G8_B8G8_UNORM - DXGI_FORMAT_R8G8_B8G8_UNORM -
- - -

A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the YUY2 format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3

Width must be even.

-
- - bb173059 - DXGI_FORMAT_G8R8_G8B8_UNORM - DXGI_FORMAT_G8R8_G8B8_UNORM -
- - -

Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC1_TYPELESS - DXGI_FORMAT_BC1_TYPELESS -
- - -

Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC1_UNORM - DXGI_FORMAT_BC1_UNORM -
- - -

Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC1_UNORM_SRGB - DXGI_FORMAT_BC1_UNORM_SRGB -
- - -

Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC2_TYPELESS - DXGI_FORMAT_BC2_TYPELESS -
- - -

Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC2_UNORM - DXGI_FORMAT_BC2_UNORM -
- - -

Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC2_UNORM_SRGB - DXGI_FORMAT_BC2_UNORM_SRGB -
- - -

Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC3_TYPELESS - DXGI_FORMAT_BC3_TYPELESS -
- - -

Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC3_UNORM - DXGI_FORMAT_BC3_UNORM -
- - -

Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC3_UNORM_SRGB - DXGI_FORMAT_BC3_UNORM_SRGB -
- - -

One-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC4_TYPELESS - DXGI_FORMAT_BC4_TYPELESS -
- - -

One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC4_UNORM - DXGI_FORMAT_BC4_UNORM -
- - -

One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC4_SNORM - DXGI_FORMAT_BC4_SNORM -
- - -

Two-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC5_TYPELESS - DXGI_FORMAT_BC5_TYPELESS -
- - -

Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC5_UNORM - DXGI_FORMAT_BC5_UNORM -
- - -

Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC5_SNORM - DXGI_FORMAT_BC5_SNORM -
- - -

A three-component, 16-bit unsigned-normalized-integer format that supports 5 bits for blue, 6 bits for green, and 5 bits for red.

Direct3D 10 through Direct3D 11:??This value is defined for DXGI. However, Direct3D 10, 10.1, or 11 devices do not support this format.

Direct3D 11.1:??This value is not supported until Windows?8.

-
- - bb173059 - DXGI_FORMAT_B5G6R5_UNORM - DXGI_FORMAT_B5G6R5_UNORM -
- - -

A four-component, 16-bit unsigned-normalized-integer format that supports 5 bits for each color channel and 1-bit alpha.

Direct3D 10 through Direct3D 11:??This value is defined for DXGI. However, Direct3D 10, 10.1, or 11 devices do not support this format.

Direct3D 11.1:??This value is not supported until Windows?8.

-
- - bb173059 - DXGI_FORMAT_B5G5R5A1_UNORM - DXGI_FORMAT_B5G5R5A1_UNORM -
- - -

A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8-bit alpha.

-
- - bb173059 - DXGI_FORMAT_B8G8R8A8_UNORM - DXGI_FORMAT_B8G8R8A8_UNORM -
- - -

A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8 bits unused.

-
- - bb173059 - DXGI_FORMAT_B8G8R8X8_UNORM - DXGI_FORMAT_B8G8R8X8_UNORM -
- - -

A four-component, 32-bit 2.8-biased fixed-point format that supports 10 bits for each color channel and 2-bit alpha.

-
- - bb173059 - DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM - DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM -
- - -

A four-component, 32-bit typeless format that supports 8 bits for each channel including alpha. 4

-
- - bb173059 - DXGI_FORMAT_B8G8R8A8_TYPELESS - DXGI_FORMAT_B8G8R8A8_TYPELESS -
- - -

A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each channel including alpha. 4

-
- - bb173059 - DXGI_FORMAT_B8G8R8A8_UNORM_SRGB - DXGI_FORMAT_B8G8R8A8_UNORM_SRGB -
- - -

A four-component, 32-bit typeless format that supports 8 bits for each color channel, and 8 bits are unused. 4

-
- - bb173059 - DXGI_FORMAT_B8G8R8X8_TYPELESS - DXGI_FORMAT_B8G8R8X8_TYPELESS -
- - -

A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each color channel, and 8 bits are unused. 4

-
- - bb173059 - DXGI_FORMAT_B8G8R8X8_UNORM_SRGB - DXGI_FORMAT_B8G8R8X8_UNORM_SRGB -
- - -

A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC6H_TYPELESS - DXGI_FORMAT_BC6H_TYPELESS -
- - -

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC6H_UF16 - DXGI_FORMAT_BC6H_UF16 -
- - -

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC6H_SF16 - DXGI_FORMAT_BC6H_SF16 -
- - -

A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC7_TYPELESS - DXGI_FORMAT_BC7_TYPELESS -
- - -

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC7_UNORM - DXGI_FORMAT_BC7_UNORM -
- - -

A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

-
- - bb173059 - DXGI_FORMAT_BC7_UNORM_SRGB - DXGI_FORMAT_BC7_UNORM_SRGB -
- - -

Identifies how to perform a present operation.

-
- - ff557509 - DXGI_MAP_FLAGS - DXGI_MAP_FLAGS -
- - -

Specifies whether to perform a bit-block transfer (bitblt) data to the primary surface.

Setting this member is equivalent to setting the first bit of the 32-bit Value member (0x00000001).

-
- - ff557509 - DXGI_MAP_READ - DXGI_MAP_READ -
- - -

Specifies whether to flip to a new surface.

Setting this member is equivalent to setting the second bit of the 32-bit Value member (0x00000002).

-
- - ff557509 - DXGI_MAP_WRITE - DXGI_MAP_WRITE -
- - -

Supported in Windows?8 and later versions.

Specifies that, if a stereo present operation must be reduced to mono, the present operation should show the view from the right eye.

If this member is not set, the default mono present operation shows the view from the left eye.

Setting this member is equivalent to setting the third bit of the 32-bit Value member (0x00000004).

-
- - ff557509 - DXGI_MAP_DISCARD - DXGI_MAP_DISCARD -
- - -

Identifies how to perform a present operation.

-
- - ff557509 - DXGI_PRESENT_FLAGS - DXGI_PRESENT_FLAGS -
- - -

Specifies whether to perform a bit-block transfer (bitblt) data to the primary surface.

Setting this member is equivalent to setting the first bit of the 32-bit Value member (0x00000001).

-
- - ff557509 - DXGI_PRESENT_TEST - DXGI_PRESENT_TEST -
- - -

Specifies whether to flip to a new surface.

Setting this member is equivalent to setting the second bit of the 32-bit Value member (0x00000002).

-
- - ff557509 - DXGI_PRESENT_DO_NOT_SEQUENCE - DXGI_PRESENT_DO_NOT_SEQUENCE -
- - -

Supported in Windows?8 and later versions.

Specifies that, if a stereo present operation must be reduced to mono, the present operation should show the view from the right eye.

If this member is not set, the default mono present operation shows the view from the left eye.

Setting this member is equivalent to setting the third bit of the 32-bit Value member (0x00000004).

-
- - ff557509 - DXGI_PRESENT_RESTART - DXGI_PRESENT_RESTART -
- - - None. - - - None - None - - - -

Flags indicating the memory location of a resource.

-
- - bb173070 - DXGI_RESIDENCY - DXGI_RESIDENCY -
- - -

The resource is located in video memory.

-
- - bb173070 - DXGI_RESIDENCY_FULLY_RESIDENT - DXGI_RESIDENCY_FULLY_RESIDENT -
- - -

At least some of the resource is located in CPU memory.

-
- - bb173070 - DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY - DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY -
- - -

At least some of the resource has been paged out to the hard drive.

-
- - bb173070 - DXGI_RESIDENCY_EVICTED_TO_DISK - DXGI_RESIDENCY_EVICTED_TO_DISK -
- - -

Identifies the importance of a resource?s content when you call the IDXGIDevice2::OfferResources method to offer the resource.

-
- -

Priority determines how likely the operating system is to discard an offered resource. Resources offered with lower priority are discarded first.

-
- - hh404509 - DXGI_RESOURCE_PRIORITY - DXGI_RESOURCE_PRIORITY -
- - - No documentation. - - - hh404509 - DXGI_RESOURCE_PRIORITY_MINIMUM - DXGI_RESOURCE_PRIORITY_MINIMUM - - - - No documentation. - - - hh404509 - DXGI_RESOURCE_PRIORITY_LOW - DXGI_RESOURCE_PRIORITY_LOW - - - - No documentation. - - - hh404509 - DXGI_RESOURCE_PRIORITY_NORMAL - DXGI_RESOURCE_PRIORITY_NORMAL - - - - No documentation. - - - hh404509 - DXGI_RESOURCE_PRIORITY_HIGH - DXGI_RESOURCE_PRIORITY_HIGH - - - - No documentation. - - - hh404509 - DXGI_RESOURCE_PRIORITY_MAXIMUM - DXGI_RESOURCE_PRIORITY_MAXIMUM - - - -

Options for swap-chain behavior.

-
- -

This enumeration is used by the structure and the method.

This enumeration is also used by the DXGI_SWAP_CHAIN_DESC1 structure.

You don't need to set DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY for swap chains that you create in full-screen mode with the method because those swap chains already behave as if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. That is, presented content is not accessible by remote access or through the desktop duplication APIs.

Swap chains that you create with the IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, and IDXGIFactory2::CreateSwapChainForComposition methods are not protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is not set and are protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. When swap chains are protected, screen scraping is prevented and, in full-screen mode, presented content is not accessible through the desktop duplication APIs.

When you call to change the swap chain's back buffer, you can reset or change all flags.

-
- - bb173076 - DXGI_SHARED_RESOURCE_FLAGS - DXGI_SHARED_RESOURCE_FLAGS -
- - - None. - - - None - None - - - -

Options for swap-chain behavior.

-
- -

This enumeration is used by the structure and the method.

This enumeration is also used by the DXGI_SWAP_CHAIN_DESC1 structure.

You don't need to set DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY for swap chains that you create in full-screen mode with the method because those swap chains already behave as if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. That is, presented content is not accessible by remote access or through the desktop duplication APIs.

Swap chains that you create with the IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, and IDXGIFactory2::CreateSwapChainForComposition methods are not protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is not set and are protected if DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY is set. When swap chains are protected, screen scraping is prevented and, in full-screen mode, presented content is not accessible through the desktop duplication APIs.

When you call to change the swap chain's back buffer, you can reset or change all flags.

-
- - bb173076 - DXGI_SWAP_CHAIN_FLAG - DXGI_SWAP_CHAIN_FLAG -
- - -

Set this flag to turn off automatic image rotation; that is, do not perform a rotation when transferring the contents of the front buffer to the monitor. Use this flag to avoid a bandwidth penalty when an application expects to handle rotation. This option is valid only during full-screen mode.

-
- - bb173076 - DXGI_SWAP_CHAIN_FLAG_NONPREROTATED - DXGI_SWAP_CHAIN_FLAG_NONPREROTATED -
- - -

Set this flag to enable an application to switch modes by calling . When switching from windowed to full-screen mode, the display mode (or monitor resolution) will be changed to match the dimensions of the application window.

-
- - bb173076 - DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH - DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH -
- - -

Set this flag to enable an application to render using GDI on a swap chain or a surface. This will allow the application to call on the 0th back buffer or a surface.

-
- - bb173076 - DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE - DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE -
- - - None. - - - None - None - - - -

Options for handling pixels in a display surface after calling IDXGISwapChain1::Present1.

-
- -

This enumeration is used by the structure.

This enumeration is also used by the DXGI_SWAP_CHAIN_DESC1 structure.

To use multisampling with or DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, you must perform the multisampling in a separate render target. For example, create a multisampled texture by calling with a filled structure (BindFlags member set to and SampleDesc member with multisampling parameters). Next call to create a render-target view for the texture, and render your scene into the texture. Finally call to resolve the multisampled texture into your non-multisampled swap chain.

The primary difference between presentation models is how back-buffer contents get to the Desktop Window Manager (DWM) for composition. In the bitblt model, which is used with the and values, contents of the back buffer get copied into the redirection surface on each call to IDXGISwapChain1::Present1. In the flip model, which is used with the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value, all back buffers are shared with the DWM. Therefore, the DWM can compose straight from those back buffers without any additional copy operations. - In general, the flip model is the more efficient model. The flip model also provides more features, such as enhanced present statistics. -

When you call IDXGISwapChain1::Present1 on a flip model swap chain (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) with 0 specified in the SyncInterval parameter, IDXGISwapChain1::Present1's behavior is the same as the behavior of Direct3D 9Ex's with and . That is, the runtime not only presents the next frame instead of any previously queued frames, it also terminates any remaining time left on the previously queued frames.

Regardless of whether the flip model is more efficient, an application still might choose the bitblt model because the bitblt model is the only way to mix GDI and DirectX presentation. In the flip model, the application must create the swap chain with , and then must use GetDC on the back buffer explicitly. After the first successful call to IDXGISwapChain1::Present1 on a flip-model swap chain, GDI no longer works with the that is associated with that swap chain, even after the destruction of the swap chain. This restriction even extends to methods like ScrollWindowEx.

For more info about the flip-model swap chain and optimizing presentation, see Enhancing presentation with the flip model, dirty rectangles, and scrolled areas.

-
- - bb173077 - DXGI_SWAP_EFFECT - DXGI_SWAP_EFFECT -
- - - No documentation. - - - bb173077 - DXGI_SWAP_EFFECT_DISCARD - DXGI_SWAP_EFFECT_DISCARD - - - - No documentation. - - - bb173077 - DXGI_SWAP_EFFECT_SEQUENTIAL - DXGI_SWAP_EFFECT_SEQUENTIAL - - - -

Flags for surface and resource creation options.

-
- -

Each flag is defined as an unsigned integer.

#define DXGI_CPU_ACCESS_NONE ( 0 ) - #define DXGI_CPU_ACCESS_DYNAMIC ( 1 ) - #define DXGI_CPU_ACCESS_READ_WRITE ( 2 ) - #define DXGI_CPU_ACCESS_SCRATCH ( 3 ) - #define DXGI_CPU_ACCESS_FIELD 15 - #define ( 1L << (0 + 4) ) - #define ( 1L << (1 + 4) ) - #define ( 1L << (2 + 4) ) - #define ( 1L << (3 + 4) ) - #define ( 1L << (4 + 4) ) - #define ( 1L << (5 + 4) ) - #define ( 1L << (6 + 4) ) - typedef UINT DXGI_USAGE;

These flag options are used in a call to the , IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, or IDXGIFactory2::CreateSwapChainForComposition method to describe the surface usage and CPU access options for the back buffer of a swap chain. You can't use the , , and values as input to create a swap chain. However, DXGI can set and for some of the swap chain's back buffers on the application's behalf. You can call the method to retrieve the usage of these back buffers. - Swap chain's only support the DXGI_CPU_ACCESS_NONE value in the DXGI_CPU_ACCESS_FIELD part of DXGI_USAGE.

These flag options are also used by the method.

-
- - bb173078 - DXGI_USAGE_ENUM - DXGI_USAGE_ENUM -
- - - No documentation. - - - bb173078 - DXGI_USAGE_SHADER_INPUT - DXGI_USAGE_SHADER_INPUT - - - - No documentation. - - - bb173078 - DXGI_USAGE_RENDER_TARGET_OUTPUT - DXGI_USAGE_RENDER_TARGET_OUTPUT - - - - No documentation. - - - bb173078 - DXGI_USAGE_BACK_BUFFER - DXGI_USAGE_BACK_BUFFER - - - - No documentation. - - - bb173078 - DXGI_USAGE_SHARED - DXGI_USAGE_SHARED - - - - No documentation. - - - bb173078 - DXGI_USAGE_READ_ONLY - DXGI_USAGE_READ_ONLY - - - - No documentation. - - - bb173078 - DXGI_USAGE_DISCARD_ON_PRESENT - DXGI_USAGE_DISCARD_ON_PRESENT - - - - No documentation. - - - bb173078 - DXGI_USAGE_UNORDERED_ACCESS - DXGI_USAGE_UNORDERED_ACCESS - - - -

Allows DXGI to monitor an application's message queue for the alt-enter key sequence (which causes the application to switch from windowed to full screen or vice versa).

-
- -

Note??If you call this API in a Session 0 process, it returns .

The combination of WindowHandle and Flags informs DXGI to stop monitoring window messages for the previously-associated window.

If the application switches to full-screen mode, DXGI will choose a full-screen resolution to be the smallest supported resolution that is larger or the same size as the current back buffer size.

Applications can make some changes to make the transition from windowed to full screen more efficient. For example, on a WM_SIZE message, the application should release any outstanding swap-chain back buffers, call , then re-acquire the back buffers from the swap chain(s). This gives the swap chain(s) an opportunity to resize the back buffers, and/or recreate them to enable full-screen flipping operation. If the application does not perform this sequence, DXGI will still make the full-screen/windowed transition, but may be forced to use a stretch operation (since the back buffers may not be the correct size), which may be less efficient. Even if a stretch is not required, presentation may not be optimal because the back buffers might not be directly interchangeable with the front buffer. Thus, a call to ResizeBuffers on WM_SIZE is always recommended, since WM_SIZE is always sent during a fullscreen transition.

While windowed, the application can, if it chooses, restrict the size of its window's client area to sizes to which it is comfortable rendering. A fully flexible application would make no such restriction, but UI elements or other design considerations can, of course, make this flexibility untenable. If the application further chooses to restrict its window's client area to just those that match supported full-screen resolutions, the application can field WM_SIZING, then check against . If a matching mode is found, allow the resize. (The can be retrieved from . Absent subsequent changes to desktop topology, this will be the same output that will be chosen when alt-enter is fielded and fullscreen mode is begun for that swap chain.)

Applications that want to handle mode changes or Alt+Enter themselves should call MakeWindowAssociation with the flag after swap chain creation. The WindowHandle argument, if non-null, specifies that the application message queues will not be handled by the DXGI runtime for all swap chains of a particular target . Calling MakeWindowAssociation with the flag after swapchain creation ensures that DXGI will not interfere with application's handling of window mode changes or Alt+Enter.

-
- - bb174540 - DXGI_MWA_FLAGS - DXGI_MWA_FLAGS -
- - -

The handle of the window that is to be monitored. This parameter can be null; but only if the flags are also 0.

-
- - bb174540 - DXGI_MWA_NO_WINDOW_CHANGES - DXGI_MWA_NO_WINDOW_CHANGES -
- - -

One or more of the following values: -

  • - Prevent DXGI from monitoring an applications message queue; this makes DXGI unable to respond to mode changes.
  • - Prevent DXGI from responding to an alt-enter sequence.
  • - Prevent DXGI from responding to a print-screen key.
-
- - bb174540 - DXGI_MWA_NO_ALT_ENTER - DXGI_MWA_NO_ALT_ENTER -
- - - No documentation. - - - bb174540 - DXGI_MWA_NO_PRINT_SCREEN - DXGI_MWA_NO_PRINT_SCREEN - - - - No documentation. - - - bb174540 - DXGI_MWA_VALID - DXGI_MWA_VALID - - - - None. - - - None - None - - - - Functions - - - - - -

Creates a DXGI 1.1 factory that you can use to generate other DXGI objects.

-
-

The globally unique identifier () of the object referenced by the ppFactory parameter.

-

Address of a reference to an object.

-

Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

- -

Use a DXGI 1.1 factory to generate objects that enumerate adapters, create swap chains, and associate a window with the alt+enter key sequence for toggling to and from the full-screen display mode.

If the CreateDXGIFactory1 function succeeds, the reference count on the interface is incremented. To avoid a memory leak, when you finish using the interface, call the IDXGIFactory1::Release method to release the interface.

This entry point is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

Note??CreateDXGIFactory1 fails if your app's DllMain function calls it. For more info about how DXGI responds from DllMain, see DXGI Responses from DLLMain.

Note??Starting with Windows?8, all DXGI factories (regardless if they were created with CreateDXGIFactory or CreateDXGIFactory1) enumerate adapters identically. The enumeration order of adapters, which you retrieve with or , is as follows:

  • Adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero.
  • Adapters with outputs.
  • Adapters without outputs.

Windows?Phone?8: This API is supported.

Windows Phone 8.1: This API is supported.

-
- - ff471318 - HRESULT CreateDXGIFactory1([In] const GUID& riid,[Out] void** ppFactory) - CreateDXGIFactory1 -
- - -

Creates a DXGI 1.0 factory that you can use to generate other DXGI objects.

-
-

The globally unique identifier () of the object referenced by the ppFactory parameter.

-

Address of a reference to an object.

-

Returns if successful; otherwise, returns one of the following DXGI_ERROR.

- -

Use a DXGI factory to generate objects that enumerate adapters, create swap chains, and associate a window with the alt+enter key sequence for toggling to and from the fullscreen display mode.

If the CreateDXGIFactory function succeeds, the reference count on the interface is incremented. To avoid a memory leak, when you finish using the interface, call the IDXGIFactory::Release method to release the interface.

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

Note??CreateDXGIFactory fails if your app's DllMain function calls it. For more info about how DXGI responds from DllMain, see DXGI Responses from DLLMain.

Note??Starting with Windows?8, all DXGI factories (regardless if they were created with CreateDXGIFactory or CreateDXGIFactory1) enumerate adapters identically. The enumeration order of adapters, which you retrieve with or , is as follows:

  • Adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero.
  • Adapters with outputs.
  • Adapters without outputs.

The CreateDXGIFactory function does not exist for Windows Store apps. Instead, Windows Store apps use the CreateDXGIFactory1 function.

-
- - bb204862 - HRESULT CreateDXGIFactory([In] const GUID& riid,[Out] void** ppFactory) - CreateDXGIFactory -
- - - Functions - - - - - Constant FrameStatisticsDisjoint. - DXGI_ERROR_FRAME_STATISTICS_DISJOINT - - - Constant DeviceReset. - DXGI_ERROR_DEVICE_RESET - - - Constant DriverInternalError. - DXGI_ERROR_DRIVER_INTERNAL_ERROR - - - Constant InvalidCall. - DXGI_ERROR_INVALID_CALL - - - Constant NotFound. - DXGI_ERROR_NOT_FOUND - - - Constant WasStillDrawing. - DXGI_ERROR_WAS_STILL_DRAWING - - - Constant Unsupported. - DXGI_ERROR_UNSUPPORTED - - - Constant RemoteClientDisconnected. - DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED - - - Constant DeviceRemoved. - DXGI_ERROR_DEVICE_REMOVED - - - Constant DeviceHung. - DXGI_ERROR_DEVICE_HUNG - - - Constant RemoteOufOfMemory. - DXGI_ERROR_REMOTE_OUTOFMEMORY - - - Constant MoreData. - DXGI_ERROR_MORE_DATA - - - Constant Nonexclusive. - DXGI_ERROR_NONEXCLUSIVE - - - Constant GraphicsVidpnSourceInUse. - DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE - - - Constant NotCurrentlyAvailable. - DXGI_ERROR_NOT_CURRENTLY_AVAILABLE - - - -

The interface represents a display sub-system (including one or more GPU's, DACs and video memory).

-
- -

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.

To enumerate the display sub-systems, use . To get an interface to the adapter for a particular device, use . To create a software adapter, use .

Windows?Phone?8: This API is supported.

-
- - ff471329 - IDXGIAdapter1 - IDXGIAdapter1 -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets a DXGI 1.1 description of an adapter (or video card).

-
-

A reference to a structure that describes the adapter. This parameter must not be null. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID in the VendorId, DeviceId, SubSysId, and Revision members of and ?Software Adapter? for the description string in the Description member.

-

Returns if successful; otherwise, returns E_INVALIDARG if the pDesc parameter is null.

- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Use the GetDesc1 method to get a DXGI 1.1 description of an adapter. To get a DXGI 1.0 description, use the method.

Windows?Phone?8: This API is supported.

-
- - ff471330 - HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc) - IDXGIAdapter1::GetDesc1 -
- - -

Gets a DXGI 1.1 description of an adapter (or video card).

-
- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Use the GetDesc1 method to get a DXGI 1.1 description of an adapter. To get a DXGI 1.0 description, use the method.

Windows?Phone?8: This API is supported.

-
- - ff471330 - GetDesc1 - GetDesc1 - HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc) -
- - -

An interface implements a derived class for DXGI objects that produce image data.

-
- -

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

The interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to applications that do not use Direct3D to communicate with DXGI.

The Direct3D create device functions return a Direct3D device object. This Direct3D device object implements the interface. You can query this Direct3D device object for the device's corresponding interface. To retrieve the interface of a Direct3D device, use the following code:

 * pDXGIDevice;	
-            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
-            

Windows?Phone?8: This API is supported.

-
- - ff471331 - IDXGIDevice1 - IDXGIDevice1 -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets the number of frames that the system is allowed to queue for rendering.

-
-

The maximum number of back buffer frames that a driver can queue. The value defaults to 3, but can range from 1 to 16. A value of 0 will reset latency to the default. For multi-head devices, this value is specified per-head.

-

Returns if successful; otherwise, if the device was removed.

- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

Windows?Phone?8: This API is supported.

-
- - ff471334 - HRESULT IDXGIDevice1::SetMaximumFrameLatency([In] unsigned int MaxLatency) - IDXGIDevice1::SetMaximumFrameLatency -
- - -

Gets the number of frames that the system is allowed to queue for rendering.

-
-

This value is set to the number of frames that can be queued for render. This value defaults to 3, but can range from 1 to 16.

-

Returns if successful; otherwise, returns one of the following members of the D3DERR enumerated type:

- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

Windows?Phone?8: This API is supported.

-
- - ff471332 - HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) - IDXGIDevice1::GetMaximumFrameLatency -
- - -

Gets or sets the number of frames that the system is allowed to queue for rendering.

-
- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

Windows?Phone?8: This API is supported.

-
- - ff471332 - GetMaximumFrameLatency / SetMaximumFrameLatency - GetMaximumFrameLatency - HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) -
- - -

Represents a keyed mutex, which allows exclusive access to a shared resource that is used by multiple devices.

-
- -

The is required to create a resource capable of supporting the interface.

An should be retrieved for each device sharing a resource. In Direct3D 10.1, such a resource that is shared between two or more devices is created with the flag. In Direct3D 11, such a resource that is shared between two or more devices is created with the flag.

For information about creating a keyed mutex, see the method.

Windows?Phone?8: This API is supported.

-
- - ff471338 - IDXGIKeyedMutex - IDXGIKeyedMutex -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Using a key, acquires exclusive rendering access to a shared resource.

-
-

A value that indicates which device to give access to. This method will succeed when the device that currently owns the surface calls the method using the same value. This value can be any UINT64 value.

-

The time-out interval, in milliseconds. This method will return if the interval elapses, and the keyed mutex has not been released using the specified Key. If this value is set to zero, the AcquireSync method will test to see if the keyed mutex has been released and returns immediately. If this value is set to INFINITE, the time-out interval will never elapse.

-

Return if successful.

If the owning device attempted to create another keyed mutex on the same shared resource, AcquireSync returns E_FAIL.

AcquireSync can also return the following DWORD constants. Therefore, you should explicitly check for these constants. If you only use the SUCCEEDED macro on the return value to determine if AcquireSync succeeded, you will not catch these constants.

  • WAIT_ABANDONED - The shared surface and keyed mutex are no longer in a consistent state. If AcquireSync returns this value, you should release and recreate both the keyed mutex and the shared surface.
  • WAIT_TIMEOUT - The time-out interval elapsed before the specified key was released.
- -

The AcquireSync method creates a lock to a surface that is shared between multiple devices, allowing only one device to render to a surface at a time. This method uses a key to determine which device currently has exclusive access to the surface.

When a surface is created using the value of the enumeration, you must call the AcquireSync method before rendering to the surface. You must call the ReleaseSync method when you are done rendering to a surface.

To acquire a reference to the keyed mutex object of a shared resource, call the QueryInterface method of the resource and pass in the UUID of the interface. For more information about acquiring this reference, see the following code example.

The AcquireSync method uses the key as follows, depending on the state of the surface:

  • On initial creation, the surface is unowned and any device can call the AcquireSync method to gain access. For an unowned device, only a key of 0 will succeed. Calling the AcquireSync method for any other key will stall the calling CPU thread.
  • If the surface is owned by a device when you call the AcquireSync method, the CPU thread that called the AcquireSync method will stall until the owning device calls the ReleaseSync method using the same Key.
  • If the surface is unowned when you call the AcquireSync method (for example, the last owning device has already called the ReleaseSync method), the AcquireSync method will succeed if you specify the same key that was specified when the ReleaseSync method was last called. Calling the AcquireSync method using any other key will cause a stall.
  • When the owning device calls the ReleaseSync method with a particular key, and more than one device is waiting after calling the AcquireSync method using the same key, any one of the waiting devices could be woken up first. The order in which devices are woken up is undefined.
  • A keyed mutex does not support recursive calls to the AcquireSync method.

Windows?Phone?8: This API is supported.

-
- - ff471339 - HRESULT IDXGIKeyedMutex::AcquireSync([In] unsigned longlong Key,[In] unsigned int dwMilliseconds) - IDXGIKeyedMutex::AcquireSync -
- - -

Using a key, releases exclusive rendering access to a shared resource.

-
-

A value that indicates which device to give access to. This method succeeds when the device that currently owns the surface calls the ReleaseSync method using the same value. This value can be any UINT64 value.

-

Returns if successful.

If the device attempted to release a keyed mutex that is not valid or owned by the device, ReleaseSync returns E_FAIL.

- -

The ReleaseSync method releases a lock to a surface that is shared between multiple devices. This method uses a key to determine which device currently has exclusive access to the surface.

When a surface is created using the value of the enumeration, you must call the method before rendering to the surface. You must call the ReleaseSync method when you are done rendering to a surface.

After you call the ReleaseSync method, the shared resource is unset from the rendering pipeline.

To acquire a reference to the keyed mutex object of a shared resource, call the QueryInterface method of the resource and pass in the UUID of the interface. For more information about acquiring this reference, see the following code example.

Windows?Phone?8: This API is supported.

-
- - ff471340 - HRESULT IDXGIKeyedMutex::ReleaseSync([In] unsigned longlong Key) - IDXGIKeyedMutex::ReleaseSync -
- - -

An interface represents an adapter output (such as a monitor).

-
- -

To see the outputs available, use . To see the specific output that the swap chain will update, use .

Windows?Phone?8: This API is supported.

-
- - bb174546 - IDXGIOutput - IDXGIOutput -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a description of the output.

-
-

A reference to the output description (see ).

-

Returns a code that indicates success or failure. if successful, if pDesc is passed in as null.

- -

On a high DPI desktop, GetDesc returns the visualized screen size unless the app is marked high DPI aware. For info about writing DPI-aware Win32 apps, see High DPI.

Windows?Phone?8: This API is supported.

-
- - bb174548 - HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc) - IDXGIOutput::GetDesc -
- - -

[Starting with Direct3D 11.1, we recommend not to use GetDisplayModeList anymore to retrieve the matching display mode. Instead, use IDXGIOutput1::GetDisplayModeList1, which supports stereo display mode.]

Gets the display modes that match the requested format and other input options.

-
- No documentation. - No documentation. - No documentation. - No documentation. -

Returns one of the following DXGI_ERROR. It is rare, but possible, that the display modes available can change immediately after calling this method, in which case is returned (if there is not enough room for all the display modes). If GetDisplayModeList is called from a Remote Desktop Services session (formerly Terminal Services session), is returned.

- -

In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor).

As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes.

 UINT num = 0;	
-             format = ;	
-            UINT flags         = ; pOutput->GetDisplayModeList( format, flags, &num, 0); ...  * pDescs = new [num];	
-            pOutput->GetDisplayModeList( format, flags, &num, pDescs); 

Windows?Phone?8: This API is supported.

-
- - bb174549 - HRESULT IDXGIOutput::GetDisplayModeList([In] DXGI_FORMAT EnumFormat,[In] unsigned int Flags,[InOut] unsigned int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc) - IDXGIOutput::GetDisplayModeList -
- - -

[Starting with Direct3D 11.1, we recommend not to use FindClosestMatchingMode anymore to find the display mode that most closely matches the requested display mode. Instead, use IDXGIOutput1::FindClosestMatchingMode1, which supports stereo display mode.]

Finds the display mode that most closely matches the requested display mode.

-
- No documentation. - No documentation. - No documentation. -

Returns one of the following DXGI_ERROR.

- -

FindClosestMatchingMode behaves similarly to the IDXGIOutput1::FindClosestMatchingMode1 except FindClosestMatchingMode considers only the mono display modes. IDXGIOutput1::FindClosestMatchingMode1 considers only stereo modes if you set the Stereo member in the DXGI_MODE_DESC1 structure that pModeToMatch points to, and considers only mono modes if Stereo is not set.

IDXGIOutput1::FindClosestMatchingMode1 returns a matched display-mode set with only stereo modes or only mono modes. - FindClosestMatchingMode behaves as though you specified the input mode as mono.

Windows?Phone?8: This API is supported.

-
- - bb174547 - HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice) - IDXGIOutput::FindClosestMatchingMode -
- - -

Halt a thread until the next vertical blank occurs.

-
-

Returns one of the following DXGI_ERROR.

- -

A vertical blank occurs when the raster moves from the lower right corner to the upper left corner to begin drawing the next frame.

Windows?Phone?8: This API is supported.

-
- - bb174559 - HRESULT IDXGIOutput::WaitForVBlank() - IDXGIOutput::WaitForVBlank -
- - -

Takes ownership of an output.

-
-

A reference to the interface of a device (such as an ).

-

Set to TRUE to enable other threads or applications to take ownership of the device; otherwise, set to .

-

Returns one of the DXGI_ERROR values.

- -

When you are finished with the output, call .

TakeOwnership should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.

-
- - bb174558 - HRESULT IDXGIOutput::TakeOwnership([In] IUnknown* pDevice,[In] BOOL Exclusive) - IDXGIOutput::TakeOwnership -
- - -

Releases ownership of the output.

-
- -

If you are not using a swap chain, get access to an output by calling and release it when you are finished by calling . An application that uses a swap chain will typically not call either of these methods.

-
- - bb174554 - void IDXGIOutput::ReleaseOwnership() - IDXGIOutput::ReleaseOwnership -
- - -

Gets a description of the gamma-control capabilities.

-
-

A reference to a description of the gamma-control capabilities (see ).

-

Returns one of the DXGI_ERROR values.

- -

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

-
- - bb174553 - HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps) - IDXGIOutput::GetGammaControlCapabilities -
- - -

Sets the gamma controls.

-
-

A reference to a structure that describes the gamma curve to set.

-

Returns one of the DXGI_ERROR values.

- -

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

-
- - bb174557 - HRESULT IDXGIOutput::SetGammaControl([In] const DXGI_GAMMA_CONTROL* pArray) - IDXGIOutput::SetGammaControl -
- - -

Gets the gamma control settings.

-
-

An array of gamma control settings (see ).

-

Returns one of the DXGI_ERROR values.

- -

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

-
- - bb174552 - HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray) - IDXGIOutput::GetGammaControl -
- - -

Changes the display mode.

-
-

A reference to a surface (see ) used for rendering an image to the screen. The surface must have been created as a back buffer (DXGI_USAGE_BACKBUFFER).

-

Returns one of the DXGI_ERROR values.

- -

should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.

This method should only be called between and calls.

-
- - bb174556 - HRESULT IDXGIOutput::SetDisplaySurface([In] IDXGISurface* pScanoutSurface) - IDXGIOutput::SetDisplaySurface -
- - -

[Starting with Direct3D 11.1, we recommend not to use GetDisplaySurfaceData anymore to retrieve the current display surface. Instead, use IDXGIOutput1::GetDisplaySurfaceData1, which supports stereo display mode.]

Gets a copy of the current display surface.

-
- No documentation. -

Returns one of the DXGI_ERROR values.

- -

can only be called when an output is in full-screen mode. If the method succeeds, DXGI fills the destination surface.

Use to determine the size (width and height) of the output when you want to allocate space for the destination surface. This is true regardless of target monitor rotation. A destination surface created by a graphics component (such as Direct3D 10) must be created with CPU-write permission (see ). Other surfaces should be created with CPU read-write permission (see D3D10_CPU_ACCESS_READ_WRITE). This method will modify the surface data to fit the destination surface (stretch, shrink, convert format, rotate). The stretch and shrink is performed with point-sampling.

-
- - bb174550 - HRESULT IDXGIOutput::GetDisplaySurfaceData([In] IDXGISurface* pDestination) - IDXGIOutput::GetDisplaySurfaceData -
- - -

Gets statistics about recently rendered frames.

-
-

A reference to frame statistics (see ).

-

If this function succeeds, it returns . Otherwise, it might return .

- -

This API is similar to .

Note??Calling this method is only supported while in full-screen mode.

-
- - bb174551 - HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) - IDXGIOutput::GetFrameStatistics -
- - - Find the display mode that most closely matches the requested display mode. - - - Direct3D devices require UNORM formats. This method finds the closest matching available display mode to the mode specified in pModeToMatch. Similarly ranked fields (i.e. all specified, or all unspecified, etc) are resolved in the following order. ScanlineOrdering Scaling Format Resolution RefreshRate When determining the closest value for a particular field, previously matched fields are used to filter the display mode list choices, and other fields are ignored. For example, when matching Resolution, the display mode list will have already been filtered by a certain ScanlineOrdering, Scaling, and Format, while RefreshRate is ignored. This ordering doesn't define the absolute ordering for every usage scenario of FindClosestMatchingMode, because the application can choose some values initially, effectively changing the order that fields are chosen. Fields of the display mode are matched one at a time, generally in a specified order. If a field is unspecified, FindClosestMatchingMode gravitates toward the values for the desktop related to this output. If this output is not part of the desktop, then the default desktop output is used to find values. If an application uses a fully unspecified display mode, FindClosestMatchingMode will typically return a display mode that matches the desktop settings for this output. Unspecified fields are lower priority than specified fields and will be resolved later than specified fields. - - A reference to the Direct3D device interface. If this parameter is NULL, only modes whose format matches that of pModeToMatch will be returned; otherwise, only those formats that are supported for scan-out by the device are returned. - The desired display mode (see ). Members of DXGI_MODE_DESC can be unspecified indicating no preference for that member. A value of 0 for Width or Height indicates the value is unspecified. If either Width or Height are 0 both must be 0. A numerator and denominator of 0 in RefreshRate indicate it is unspecified. Other members of DXGI_MODE_DESC have enumeration values indicating the member is unspecified. If pConnectedDevice is NULL Format cannot be DXGI_FORMAT_UNKNOWN. - The mode that most closely matches pModeToMatch. - Returns one of the following . - HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice) - - - - Gets the display modes that match the requested format and other input options. - - - In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor). As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes. - UINT num = 0; - DXGI_FORMAT format = DXGI_FORMAT_R32G32B32A32_FLOAT; - UINT flags = DXGI_ENUM_MODES_INTERLACED; pOutput->GetDisplayModeList( format, flags, &num, 0); ... DXGI_MODE_DESC * pDescs = new DXGI_MODE_DESC[num]; - pOutput->GetDisplayModeList( format, flags, &num, pDescs); - - - - The color format (see ). - format for modes to include (see {{DXGI_ENUM_MODES}}). DXGI_ENUM_MODES_SCALING needs to be specified to expose the display modes that require scaling. Centered modes, requiring no scaling and corresponding directly to the display output, are enumerated by default. - Returns a list of display modes (see ); - HRESULT IDXGIOutput::GetDisplayModeList([None] DXGI_FORMAT EnumFormat,[None] int Flags,[InOut] int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc) - - - -

Get a description of the output.

-
- -

On a high DPI desktop, GetDesc returns the visualized screen size unless the app is marked high DPI aware. For info about writing DPI-aware Win32 apps, see High DPI.

Windows?Phone?8: This API is supported.

-
- - bb174548 - GetDesc - GetDesc - HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc) -
- - -

Gets a description of the gamma-control capabilities.

-
- -

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

-
- - bb174553 - GetGammaControlCapabilities - GetGammaControlCapabilities - HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps) -
- - -

Gets or sets the gamma control settings.

-
- -

Note??Calling this method is only supported while in full-screen mode.

For info about using gamma correction, see Using gamma correction.

-
- - bb174552 - GetGammaControl / SetGammaControl - GetGammaControl - HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray) -
- - -

Gets statistics about recently rendered frames.

-
- -

This API is similar to .

Note??Calling this method is only supported while in full-screen mode.

-
- - bb174551 - GetFrameStatistics - GetFrameStatistics - HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) -
- - -

An interface allows resource sharing and identifies the memory that a resource resides in.

-
- -

To find out what type of memory a resource is currently located in, use . To share resources between processes, use . For information about how to share resources between multiple Windows graphics APIs, including Direct3D 11, Direct2D, Direct3D 10, and Direct3D 9Ex, see Surface Sharing Between Windows Graphics APIs.

You can retrieve the interface from any video memory resource that you create from a Direct3D 10 and later function. Any Direct3D object that supports or also supports . For example, the Direct3D 2D texture object that you create from supports . You can call QueryInterface on the 2D texture object () to retrieve the interface. For example, to retrieve the interface from the 2D texture object, use the following code.

 * pDXGIResource;	
-            hr = g_pd3dTexture2D->QueryInterface(__uuidof(), (void **)&pDXGIResource);	
-            

Windows?Phone?8: This API is supported.

-
- - bb174560 - IDXGIResource - IDXGIResource -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

[Starting with Direct3D 11.1, we recommend not to use GetSharedHandle anymore to retrieve the handle to a shared resource. Instead, use IDXGIResource1::CreateSharedHandle to get a handle for sharing. To use IDXGIResource1::CreateSharedHandle, you must create the resource as shared and specify that it uses NT handles (that is, you set the D3D11_RESOURCE_MISC_SHARED_NTHANDLE flag). We also recommend that you create shared resources that use NT handles so you can use CloseHandle, DuplicateHandle, and so on on those shared resources.]

Gets the handle to a shared resource.

-
- No documentation. -

Returns one of the DXGI_ERROR values.

- -

GetSharedHandle returns a handle for the resource that you created as shared (that is, you set the with or without the flag). You can pass this handle to the method to give another device access to the shared resource. You can also marshal this handle to another process to share a resource with a device in another process. However, this handle is not an NT handle. Therefore, don't use the handle with CloseHandle, DuplicateHandle, and so on.

The creator of a shared resource must not destroy the resource until all intended entities have opened the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.

GetSharedHandle can also return handles for resources that were passed into to open those resources.

GetSharedHandle fails if the resource to which it wants to get a handle is not shared.

Windows?Phone?8: This API is supported.

-
- - bb174562 - HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle) - IDXGIResource::GetSharedHandle -
- - -

Get the expected resource usage.

-
-

A reference to a usage flag (see DXGI_USAGE). For Direct3D 10, a surface can be used as a shader input or a render-target output.

-

Returns one of the following DXGI_ERROR.

- -

Windows?Phone?8: This API is supported.

-
- - bb174563 - HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage) - IDXGIResource::GetUsage -
- - -

Set the priority for evicting the resource from memory.

-
-

The priority is one of the following values:

ValueMeaning
(0x28000000)

The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.

(0x50000000)

The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.

(0x78000000)

The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource.

(0xa0000000)

The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.

(0xc8000000)

The resource is evicted from memory only if there is no other way of resolving the memory requirement.

?

-

Returns one of the following DXGI_ERROR.

- -

The eviction priority is a memory-management variable that is used by DXGI for determining how to populate overcommitted memory.

You can set priority levels other than the defined values when appropriate. For example, you can set a resource with a priority level of 0x78000001 to indicate that the resource is slightly above normal.

Windows?Phone?8: This API is supported.

-
- - bb174564 - HRESULT IDXGIResource::SetEvictionPriority([In] unsigned int EvictionPriority) - IDXGIResource::SetEvictionPriority -
- - -

Get the eviction priority.

-
-

A reference to the eviction priority, which determines when a resource can be evicted from memory.

The following defined values are possible.

ValueMeaning
(0x28000000)

The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.

(0x50000000)

The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.

(0x78000000)

The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource.

(0xa0000000)

The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.

(0xc8000000)

The resource is evicted from memory only if there is no other way of resolving the memory requirement.

?

-

Returns one of the following DXGI_ERROR.

- -

The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.

Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.

Windows?Phone?8: This API is supported.

-
- - bb174561 - HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority) - IDXGIResource::GetEvictionPriority -
- - -

[Starting with Direct3D 11.1, we recommend not to use GetSharedHandle anymore to retrieve the handle to a shared resource. Instead, use IDXGIResource1::CreateSharedHandle to get a handle for sharing. To use IDXGIResource1::CreateSharedHandle, you must create the resource as shared and specify that it uses NT handles (that is, you set the D3D11_RESOURCE_MISC_SHARED_NTHANDLE flag). We also recommend that you create shared resources that use NT handles so you can use CloseHandle, DuplicateHandle, and so on on those shared resources.]

Gets the handle to a shared resource.

-
- -

GetSharedHandle returns a handle for the resource that you created as shared (that is, you set the with or without the flag). You can pass this handle to the method to give another device access to the shared resource. You can also marshal this handle to another process to share a resource with a device in another process. However, this handle is not an NT handle. Therefore, don't use the handle with CloseHandle, DuplicateHandle, and so on.

The creator of a shared resource must not destroy the resource until all intended entities have opened the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.

GetSharedHandle can also return handles for resources that were passed into to open those resources.

GetSharedHandle fails if the resource to which it wants to get a handle is not shared.

Windows?Phone?8: This API is supported.

-
- - bb174562 - GetSharedHandle - GetSharedHandle - HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle) -
- - -

Get the expected resource usage.

-
- -

Windows?Phone?8: This API is supported.

-
- - bb174563 - GetUsage - GetUsage - HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage) -
- - -

Get or sets the eviction priority.

-
- -

The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.

Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.

Windows?Phone?8: This API is supported.

-
- - bb174561 - GetEvictionPriority / SetEvictionPriority - GetEvictionPriority - HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority) -
- - -

The interface implements methods for image-data objects.

-
- -

An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call .

The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when you call or to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to .

Windows?Phone?8: This API is supported.

-
- - bb174565 - IDXGISurface - IDXGISurface -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a description of the surface.

-
-

A reference to the surface description (see ).

-

Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

- -

Windows?Phone?8: This API is supported.

-
- - bb174566 - HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc) - IDXGISurface::GetDesc -
- - -

Get a reference to the data contained in the surface, and deny GPU access to the surface.

-
-

A reference to the surface data (see ).

-

CPU read-write flags. These flags can be combined with a logical OR.

  • - Allow CPU read access.
  • - Allow CPU write access.
  • - Discard the previous contents of a resource when it is mapped.
-

Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

- -

Use to access a surface from the CPU. To release a mapped surface (and allow GPU access) call .

Windows?Phone?8: This API is supported.

-
- - bb174567 - HRESULT IDXGISurface::Map([Out] DXGI_MAPPED_RECT* pLockedRect,[In] unsigned int MapFlags) - IDXGISurface::Map -
- - -

Invalidate the reference to the surface retrieved by and re-enable GPU access to the resource.

-
-

Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

- -

Windows?Phone?8: This API is supported.

-
- - bb174568 - HRESULT IDXGISurface::Unmap() - IDXGISurface::Unmap -
- - - Acquires access to the surface data. - - Flags specifying CPU access permissions. - A for accessing the mapped data, or null on failure.. - - - - Acquires access to the surface data. - - Flags specifying CPU access permissions. - Stream to contain the surface data. - A for accessing the mapped data, or null on failure.. - - - - Gets a swap chain back buffer. - - The swap chain to get the buffer from. - The index of the desired buffer. - The buffer interface, or null on failure. - - - -

Get a description of the surface.

-
- -

Windows?Phone?8: This API is supported.

-
- - bb174566 - GetDesc - GetDesc - HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc) -
- - -

The interface extends the by adding support for using Windows Graphics Device Interface (GDI) to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface.

-
- -

This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call . Then, call QueryInterface on the object that returns to retrieve the interface.

Any object that supports also supports .

The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when you call or to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to .

-
- - ff471343 - IDXGISurface1 - IDXGISurface1 -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Returns a device context (DC) that allows you to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface using Windows Graphics Device Interface (GDI).

-
-

A Boolean value that specifies whether to preserve Direct3D contents in the GDI DC. TRUE directs the runtime not to preserve Direct3D contents in the GDI DC; that is, the runtime discards the Direct3D contents. guarantees that Direct3D contents are available in the GDI DC.

-

A reference to an handle that represents the current device context for GDI rendering.

- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

After you use the GetDC method to retrieve a DC, you can render to the DXGI surface by using GDI. The GetDC method readies the surface for GDI rendering and allows inter-operation between DXGI and GDI technologies.

Keep the following in mind when using this method:

  • You must create the surface by using the flag for a surface or by using the flag for swap chains, otherwise this method fails.
  • You must release the device and call the method before you issue any new Direct3D commands.
  • This method fails if an outstanding DC has already been created by this method.
  • The format for the surface or swap chain must be or .
  • On GetDC, the render target in the output merger of the Direct3D pipeline is unbound from the surface. You must call the method on the device prior to Direct3D rendering after GDI rendering.
  • Prior to resizing buffers you must release all outstanding DCs.

You can also call GetDC on the back buffer at index 0 of a swap chain by obtaining an from the swap chain. The following code illustrates the process.

 * g_pSwapChain = null;	
-            * g_pSurface1 = null;	
-            ...	
-            //Setup the device and and swapchain	
-            g_pSwapChain->GetBuffer(0, __uuidof(), (void**) &g_pSurface1);	
-            g_pSurface1->GetDC( , &g_hDC );	
-            ...      	
-            //Draw on the DC using GDI	
-            ...	
-            //When finish drawing release the DC	
-            g_pSurface1->ReleaseDC( null ); 
-
- - ff471345 - HRESULT IDXGISurface1::GetDC([In] BOOL Discard,[Out] HDC* phdc) - IDXGISurface1::GetDC -
- - -

Releases the GDI device context (DC) that is associated with the current surface and allows you to use Direct3D to render.

-
-

A reference to a structure that identifies the dirty region of the surface. A dirty region is any part of the surface that you used for GDI rendering and that you want to preserve. This area is used as a performance hint to graphics subsystem in certain scenarios. Do not use this parameter to restrict rendering to the specified rectangular region. If you pass in null, ReleaseDC considers the whole surface as dirty. Otherwise, ReleaseDC uses the area specified by the as a performance hint to indicate what areas have been manipulated by GDI rendering.

You can pass a reference to an empty structure (a rectangle with no position or area) if you didn't change any content.

-

If this method succeeds, it returns . Otherwise, it returns an error code.

- -

This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

Use the ReleaseDC method to release the DC and indicate that your application finished all GDI rendering to this surface. You must call the ReleaseDC method before you can use Direct3D to perform additional rendering.

Prior to resizing buffers you must release all outstanding DCs.

-
- - ff471346 - HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) - IDXGISurface1::ReleaseDC -
- - - Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D. The whole surface to be considered dirty. - - - Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface. You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. - - If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. - HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) - - - - Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D. - - - Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface. You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. - - A reference to a structure that identifies the dirty region of the surface. A dirty region is any part of the surface that you have used for GDI rendering and that you want to preserve. This is used as a performance hint to graphics subsystem in certain scenarios. Do not use this parameter to restrict rendering to the specified rectangular region. The area specified by the will be used as a performance hint to indicate what areas have been manipulated by GDI rendering. - If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. - HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) - - - -

An interface implements one or more surfaces for storing rendered data before presenting it to an output.

-
- -

You can create a swap chain by - calling IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, or IDXGIFactory2::CreateSwapChainForComposition. You can also create a swap chain when you call ; however, you can then only access the sub-set of swap-chain functionality that the interface provides.

Windows?Phone?8: This API is supported.

-
- - bb174569 - IDXGISwapChain - IDXGISwapChain -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

[Starting with Direct3D 11.1, we recommend not to use Present anymore to present a rendered image. Instead, use IDXGISwapChain1::Present1. For more info, see Remarks.]

Presents a rendered image to the user.

-
- No documentation. - No documentation. -

Possible return values include: , or (see DXGI_ERROR), (see ), or D3DDDIERR_DEVICEREMOVED.

Note??The Present method can return either or D3DDDIERR_DEVICEREMOVED if a video card has been physically removed from the computer, or a driver upgrade for the video card has occurred.

- -

Starting with Direct3D 11.1, we recommend to instead use IDXGISwapChain1::Present1 because you can then use dirty rectangles and the scroll rectangle in the swap chain presentation and as such use less memory bandwidth and as a result less system power. For more info about using dirty rectangles and the scroll rectangle in swap chain presentation, see Using dirty rectangles and the scroll rectangle in swap chain presentation.

For the best performance when flipping swap-chain buffers in a full-screen application, see Full-Screen Application Performance Hints.

Because calling Present might cause the render thread to wait on the message-pump thread, be careful when calling this method in an application that uses multiple threads. For more details, see Multithreading Considerations.

Differences between Direct3D 9 and Direct3D 10:

Specifying in the Flags parameter is analogous to in Direct3D 9.

?

For flip presentation model swap chains that you create with the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set, a successful presentation unbinds back buffer 0 from the graphics pipeline, except for when you pass the flag in the Flags parameter.

For info about how data values change when you present content to the screen, see Converting data for the color space.

-
- - bb174576 - HRESULT IDXGISwapChain::Present([In] unsigned int SyncInterval,[In] DXGI_PRESENT_FLAGS Flags) - IDXGISwapChain::Present -
- - -

Accesses one of the swap-chain's back buffers.

-
-

A zero-based buffer index.

If the swap chain's swap effect is , this method can only access the first buffer; for this situation, set the index to zero.

If the swap chain's swap effect is either or DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, only the swap chain's zero-index buffer can be read from and written to. The swap chain's buffers with indexes greater than zero can only be read from; so if you call the method for such buffers, they have the flag set.

-

The type of interface used to manipulate the buffer.

-

A reference to a back-buffer interface.

-

Returns one of the following DXGI_ERROR.

- -

Windows?Phone?8: This API is supported.

-
- - bb174570 - HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID& riid,[Out] void** ppSurface) - IDXGISwapChain::GetBuffer -
- - -

Sets the display state to windowed or full screen.

-
-

A Boolean value that specifies whether to set the display state to windowed or full screen. TRUE for full screen, and for windowed.

-

If you pass TRUE to the Fullscreen parameter to set the display state to full screen, you can optionally set this parameter to a reference to an interface for the output target that contains the swap chain. If you set this parameter to null, DXGI will choose the output based on the swap-chain's device and the output window's placement. If you pass to Fullscreen, you must set this parameter to null.

-

This methods returns:

  • if the action succeeded and the swap chain was placed in the requested state.
  • if the action failed. There are many reasons why a windowed-mode swap chain cannot switch to full-screen mode. For instance:
    • The application is running over Terminal Server.
    • The output window is occluded.
    • The output window does not have keyboard focus.
    • Another application is already in full-screen mode.

    When this error is returned, an application can continue to run in windowed mode and try to switch to full-screen mode later.

  • is returned if a fullscreen/windowed mode transition is occurring when this API is called.
  • Other error codes if you run out of memory or encounter another unexpected fault; these codes may be treated as hard, non-continuable errors.
- -

DXGI may change the display state of a swap chain in response to end user or system requests.

We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through SetFullscreenState; that is, do not set the Windowed member of to to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything. Also, we recommend that you have a time-out confirmation screen or other fallback mechanism when you allow the end user to change display modes.

-
- - bb174579 - HRESULT IDXGISwapChain::SetFullscreenState([In] BOOL Fullscreen,[In, Optional] IDXGIOutput* pTarget) - IDXGISwapChain::SetFullscreenState -
- - -

Get the state associated with full-screen mode.

-
-

A reference to a boolean whose value is either:

  • TRUE if the swap chain is in full-screen mode
  • if the swap chain is in windowed mode
-

A reference to the output target (see ) when the mode is full screen; otherwise null.

-

Returns one of the following DXGI_ERROR.

- -

When the swap chain is in full-screen mode, a reference to the target output will be returned and its reference count will be incremented.

Windows?Phone?8: This API is supported.

-
- - bb174574 - HRESULT IDXGISwapChain::GetFullscreenState([Out] BOOL* pFullscreen,[Out] IDXGIOutput** ppTarget) - IDXGISwapChain::GetFullscreenState -
- - -

[Starting with Direct3D 11.1, we recommend not to use GetDesc anymore to get a description of the swap chain. Instead, use IDXGISwapChain1::GetDesc1.]

Get a description of the swap chain.

-
- No documentation. -

Returns one of the following DXGI_ERROR.

- -

Windows?Phone?8: This API is supported.

-
- - bb174572 - HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc) - IDXGISwapChain::GetDesc -
- - -

Changes the swap chain's back buffer size, format, and number of buffers. This should be called when the application window is resized.

-
-

The number of buffers in the swap chain (including all back and front buffers). This number can be different from the number of buffers with which you created the swap chain. This number can't be greater than DXGI_MAX_SWAP_CHAIN_BUFFERS. Set this number to zero to preserve the existing number of buffers in the swap chain. You can't specify less than two buffers for the flip presentation model.

-

New width of the back buffer. If you specify zero, DXGI will use the width of the client area of the target window. You can't specify the width as zero if you called the IDXGIFactory2::CreateSwapChainForComposition method to create the swap chain for a composition surface.

-

New height of the back buffer. If you specify zero, DXGI will use the height of the client area of the target window. You can't specify the height as zero if you called the IDXGIFactory2::CreateSwapChainForComposition method to create the swap chain for a composition surface.

-

A -typed value for the new format of the back buffer. Set this value to to preserve the existing format of the back buffer. The flip presentation model supports a more restricted set of formats than the bit-block transfer (bitblt) model.

-

A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies options for swap-chain behavior.

-

Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

- -

You can't resize a swap chain unless you release all outstanding references to its back buffers. You must release all of its direct and indirect references on the back buffers in order for ResizeBuffers to succeed.

Direct references are held by the application after it calls AddRef on a resource.

Indirect references are held by views to a resource, binding a view of the resource to a device context, a command list that used the resource, a command list that used a view to that resource, a command list that executed another command list that used the resource, and so on.

Before you call ResizeBuffers, ensure that the application releases all references (by calling the appropriate number of Release invocations) on the resources, any views to the resource, and any command lists that use either the resources or views, and ensure that neither the resource nor a view is still bound to a device context. You can use to ensure that all references are released. If a view is bound to a deferred context, you must discard the partially built command list as well (by calling ClearState, , then Release on the command list). After you call ResizeBuffers, you can re-query interfaces via .

For swap chains that you created with , before you call ResizeBuffers, also call on the swap chain's back-buffer surface to ensure that you have no outstanding GDI device contexts (DCs) open.

We recommend that you call ResizeBuffers when a client window is resized (that is, when an application receives a WM_SIZE message).

The only difference between ResizeBuffers in Windows?8 and ResizeBuffers in Windows?7 is with flip presentation model swap chains that you create with the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set. In Windows?8, you must call ResizeBuffers to realize a transition between full-screen mode and windowed mode; otherwise, your next call to the Present method fails.

-
- - bb174577 - HRESULT IDXGISwapChain::ResizeBuffers([In] unsigned int BufferCount,[In] unsigned int Width,[In] unsigned int Height,[In] DXGI_FORMAT NewFormat,[In] DXGI_SWAP_CHAIN_FLAG SwapChainFlags) - IDXGISwapChain::ResizeBuffers -
- - -

Resizes the output target.

-
-

A reference to a structure that describes the mode, which specifies the new width, height, format, and refresh rate of the target. If the format is , ResizeTarget uses the existing format. We only recommend that you use when the swap chain is in full-screen mode as this method is not thread safe.

-

Returns a code that indicates success or failure. is returned if a full-screen/windowed mode transition is occurring when this API is called. See DXGI_ERROR for additional DXGI error codes.

- -

ResizeTarget resizes the target window when the swap chain is in windowed mode, and changes the display mode on the target output when the swap chain is in full-screen mode. Therefore, apps can call ResizeTarget to resize the target window (rather than a Microsoft Win32API such as SetWindowPos) without knowledge of the swap chain display mode.

If a Windows Store app calls ResizeTarget, it fails with .

You cannot call ResizeTarget on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForComposition.

Apps must still call after they call ResizeTarget because only ResizeBuffers can change the back buffers. But, if those apps have implemented window resize processing to call ResizeBuffers, they don't need to explicitly call ResizeBuffers after they call ResizeTarget because the window resize processing will achieve what the app requires.

-
- - bb174578 - HRESULT IDXGISwapChain::ResizeTarget([In] const DXGI_MODE_DESC* pNewTargetParameters) - IDXGISwapChain::ResizeTarget -
- - -

Get the output (the display monitor) that contains the majority of the client area of the target window.

-
-

A reference to the output interface (see ).

-

Returns one of the following DXGI_ERROR.

- -

If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

The output is also owned by the adapter on which the swap chain's device was created.

You cannot call GetContainingOutput on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForComposition.

Windows?Phone?8: This API is supported.

-
- - bb174571 - HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput) - IDXGISwapChain::GetContainingOutput -
- - -

Gets performance statistics about the last render frame.

-
-

A reference to a structure for the frame statistics.

-

Returns one of the DXGI_ERROR values.

- -

You cannot use GetFrameStatistics for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.

You can only use GetFrameStatistics for swap chains that either use the flip presentation model or draw in full-screen mode. You set the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value in the SwapEffect member of the DXGI_SWAP_CHAIN_DESC1 structure to specify that the swap chain uses the flip presentation model.

-
- - bb174573 - HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) - IDXGISwapChain::GetFrameStatistics -
- - -

Gets the number of times that or IDXGISwapChain1::Present1 has been called.

-
- No documentation. -

Returns one of the DXGI_ERROR values.

- -

For info about presentation statistics for a frame, see .

Windows?Phone?8: This API is supported.

-
- - bb174575 - HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount) - IDXGISwapChain::GetLastPresentCount -
- - - Creates a swap chain. - - - If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and DXGI_STATUS_OCCLUDED will be returned. If the buffer width or the buffer height are zero, the sizes will be inferred from the output window size in the swap-chain description. Since the target output cannot be chosen explicitly when the swap-chain is created, you should not create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure the sizes match: Create a windowed swap chain and then set it full-screen using . Save a reference to the swap-chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with ) during the transition from windowed to full-screen. If the swap chain is in full-screen mode, before you release it, you must use {{SetFullscreenState}} to switch it to windowed mode. For more information about releasing a swap chain, see the Destroying a Swap Chain section of {{DXGI Overview}}. - - a reference to a . - A reference to the device that will write 2D images to the swap chain. - A reference to the swap-chain description (see ). - HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out] IDXGISwapChain** ppSwapChain) - bb174537 - HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain) - IDXGIFactory::CreateSwapChain - - - - Access one of the swap-chain back buffers. - - The interface of the surface to resolve from the back buffer - A zero-based buffer index. If the swap effect is not DXGI_SWAP_EFFECT_SEQUENTIAL, this method only has access to the first buffer; for this case, set the index to zero. - - Returns a reference to a back-buffer interface. - - bb174570 - HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID& riid,[Out] void** ppSurface) - IDXGISwapChain::GetBuffer - - - -

[Starting with Direct3D 11.1, we recommend not to use GetDesc anymore to get a description of the swap chain. Instead, use IDXGISwapChain1::GetDesc1.]

Get a description of the swap chain.

-
- -

Windows?Phone?8: This API is supported.

-
- - bb174572 - GetDesc - GetDesc - HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc) -
- - -

Get the output (the display monitor) that contains the majority of the client area of the target window.

-
- -

If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

The output is also owned by the adapter on which the swap chain's device was created.

You cannot call GetContainingOutput on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForComposition.

Windows?Phone?8: This API is supported.

-
- - bb174571 - GetContainingOutput - GetContainingOutput - HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput) -
- - -

Gets performance statistics about the last render frame.

-
- -

You cannot use GetFrameStatistics for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.

You can only use GetFrameStatistics for swap chains that either use the flip presentation model or draw in full-screen mode. You set the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value in the SwapEffect member of the DXGI_SWAP_CHAIN_DESC1 structure to specify that the swap chain uses the flip presentation model.

-
- - bb174573 - GetFrameStatistics - GetFrameStatistics - HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) -
- - -

Gets the number of times that or IDXGISwapChain1::Present1 has been called.

-
- -

For info about presentation statistics for a frame, see .

Windows?Phone?8: This API is supported.

-
- - bb174575 - GetLastPresentCount - GetLastPresentCount - HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount) -
- - - Gets or sets a value indicating whether the swapchain is in fullscreen. - - - true if this swapchain is in fullscreen; otherwise, false. - - bb174574 - HRESULT IDXGISwapChain::GetFullscreenState([Out] BOOL* pFullscreen,[Out] IDXGIOutput** ppTarget) - IDXGISwapChain::GetFullscreenState - - - -

Describes an adapter (or video card) by using DXGI 1.0.

-
- -

The structure provides a description of an adapter. This structure is initialized by using the method.

-
- - bb173058 - DXGI_ADAPTER_DESC - DXGI_ADAPTER_DESC -
- - -

A string that contains the adapter description. On feature level 9 graphics hardware, GetDesc returns ?Software Adapter? for the description string.

-
- - bb173058 - wchar_t Description[128] - wchar_t Description -
- - -

The PCI ID of the hardware vendor. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the hardware vendor.

-
- - bb173058 - unsigned int VendorId - unsigned int VendorId -
- - -

The PCI ID of the hardware device. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the hardware device.

-
- - bb173058 - unsigned int DeviceId - unsigned int DeviceId -
- - -

The PCI ID of the sub system. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the sub system.

-
- - bb173058 - unsigned int SubSysId - unsigned int SubSysId -
- - -

The PCI ID of the revision number of the adapter. On feature level 9 graphics hardware, GetDesc returns zeros for the PCI ID of the revision number of the adapter.

-
- - bb173058 - unsigned int Revision - unsigned int Revision -
- - -

The number of bytes of dedicated video memory that are not shared with the CPU.

-
- - bb173058 - SIZE_T DedicatedVideoMemory - SIZE_T DedicatedVideoMemory -
- - -

The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.

-
- - bb173058 - SIZE_T DedicatedSystemMemory - SIZE_T DedicatedSystemMemory -
- - -

The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.

-
- - bb173058 - SIZE_T SharedSystemMemory - SIZE_T SharedSystemMemory -
- - -

A unique value that identifies the adapter. See for a definition of the structure. is defined in dxgi.h.

-
- - bb173058 - LUID AdapterLuid - LUID AdapterLuid -
- - -

Describes an adapter (or video card) using DXGI 1.1.

-
- -

The structure provides a DXGI 1.1 description of an adapter. This structure is initialized by using the method.

-
- - ff471326 - DXGI_ADAPTER_DESC1 - DXGI_ADAPTER_DESC1 -
- - -

A string that contains the adapter description. On feature level 9 graphics hardware, GetDesc1 returns ?Software Adapter? for the description string.

-
- - ff471326 - wchar_t Description[128] - wchar_t Description -
- - -

The PCI ID of the hardware vendor. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the hardware vendor.

-
- - ff471326 - unsigned int VendorId - unsigned int VendorId -
- - -

The PCI ID of the hardware device. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the hardware device.

-
- - ff471326 - unsigned int DeviceId - unsigned int DeviceId -
- - -

The PCI ID of the sub system. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the sub system.

-
- - ff471326 - unsigned int SubSysId - unsigned int SubSysId -
- - -

The PCI ID of the revision number of the adapter. On feature level 9 graphics hardware, GetDesc1 returns zeros for the PCI ID of the revision number of the adapter.

-
- - ff471326 - unsigned int Revision - unsigned int Revision -
- - -

The number of bytes of dedicated video memory that are not shared with the CPU.

-
- - ff471326 - SIZE_T DedicatedVideoMemory - SIZE_T DedicatedVideoMemory -
- - -

The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.

-
- - ff471326 - SIZE_T DedicatedSystemMemory - SIZE_T DedicatedSystemMemory -
- - -

The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.

-
- - ff471326 - SIZE_T SharedSystemMemory - SIZE_T SharedSystemMemory -
- - -

A unique value that identifies the adapter. See for a definition of the structure. is defined in dxgi.h.

-
- - ff471326 - LUID AdapterLuid - LUID AdapterLuid -
- - -

A value of the enumerated type that describes the adapter type. The flag is reserved.

-
- - ff471326 - DXGI_ADAPTER_FLAG Flags - DXGI_ADAPTER_FLAG Flags -
- - -

Describes timing and presentation statistics for a frame.

-
- -

You initialize the structure with the or method.

You can only use for swap chains that either use the flip presentation model or draw in full-screen mode. You set the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value in the SwapEffect member of the DXGI_SWAP_CHAIN_DESC1 structure to specify that the swap chain uses the flip presentation model.

The values in the PresentCount and PresentRefreshCount members indicate information about when a frame was presented on the display screen. You can use these values to determine whether a glitch occurred. The values in the SyncRefreshCount and SyncQPCTime members indicate timing information that you can use for audio and video synchronization or very precise animation. If the swap chain draws in full-screen mode, these values are based on when the computer booted. - If the swap chain draws in windowed mode, these values are based on when the swap chain is created.

-
- - bb173060 - DXGI_FRAME_STATISTICS - DXGI_FRAME_STATISTICS -
- - -

A value that represents the running total count of times that an image was presented to the monitor since the computer booted.

Note??The number of times that an image was presented to the monitor is not necessarily the same as the number of times that you called or IDXGISwapChain1::Present1.

-
- - bb173060 - unsigned int PresentCount - unsigned int PresentCount -
- - -

A value that represents the running total count of v-blanks at which the last image was presented to the monitor and that have happened since the computer booted (for windowed mode, since the swap chain was created).

-
- - bb173060 - unsigned int PresentRefreshCount - unsigned int PresentRefreshCount -
- - -

A value that represents the running total count of v-blanks when the scheduler last sampled the machine time by calling QueryPerformanceCounter and that have happened since the computer booted (for windowed mode, since the swap chain was created).

-
- - bb173060 - unsigned int SyncRefreshCount - unsigned int SyncRefreshCount -
- - -

A value that represents the high-resolution performance counter timer. This value is the same as the value returned by the QueryPerformanceCounter function.

-
- - bb173060 - LARGE_INTEGER SyncQPCTime - LARGE_INTEGER SyncQPCTime -
- - -

Reserved. Always returns 0.

-
- - bb173060 - LARGE_INTEGER SyncGPUTime - LARGE_INTEGER SyncGPUTime -
- - -

Controls the settings of a gamma curve.

-
- -

The structure is used by the method.

For info about using gamma correction, see Using gamma correction.

-
- - bb173061 - DXGI_GAMMA_CONTROL - DXGI_GAMMA_CONTROL -
- - -

A structure with scalar values that are applied to rgb values before being sent to the gamma look up table.

-
- - bb173061 - DXGI_RGB Scale - DXGI_RGB Scale -
- - -

A structure with offset values that are applied to the rgb values before being sent to the gamma look up table.

-
- - bb173061 - DXGI_RGB Offset - DXGI_RGB Offset -
- - -

An array of structures that control the points of a gamma curve.

-
- - bb173061 - DXGI_RGB GammaCurve[1025] - DXGI_RGB GammaCurve -
- - -

Controls the gamma capabilities of an adapter.

-
- -

To get a list of the capabilities for controlling gamma correction, call .

For info about using gamma correction, see Using gamma correction.

-
- - bb173062 - DXGI_GAMMA_CONTROL_CAPABILITIES - DXGI_GAMMA_CONTROL_CAPABILITIES -
- - -

True if scaling and offset operations are supported during gamma correction; otherwise, false.

-
- - bb173062 - BOOL ScaleAndOffsetSupported - BOOL ScaleAndOffsetSupported -
- - -

A value describing the maximum range of the control-point positions.

-
- - bb173062 - float MaxConvertedValue - float MaxConvertedValue -
- - -

A value describing the minimum range of the control-point positions.

-
- - bb173062 - float MinConvertedValue - float MinConvertedValue -
- - -

A value describing the number of control points in the array.

-
- - bb173062 - unsigned int NumGammaControlPoints - unsigned int NumGammaControlPoints -
- - -

An array of values describing control points; the maximum length of control points is 1025.

-
- - bb173062 - float ControlPointPositions[1025] - float ControlPointPositions -
- - -

Describes a mapped rectangle that is used to access a surface.

-
- -

The structure is initialized by the method.

-
- - bb173063 - DXGI_MAPPED_RECT - DXGI_MAPPED_RECT -
- - -

A value that describes the width, in bytes, of the surface.

-
- - bb173063 - int Pitch - int Pitch -
- - -

A reference to the image buffer of the surface.

-
- - bb173063 - unsigned char* pBits - unsigned char pBits -
- - -

Describes a display mode.

-
- -

The following format values are valid for display modes and when you create a bit-block transfer (bitblt) model swap chain. The valid values depend on the feature level that you are working with.

  • Feature level >= 9.1

    • (except 10.x on Windows?Vista)
    • (except 10.x on Windows?Vista)
  • Feature level >= 10.0

  • Feature level >= 11.0

You can pass one of these format values to to determine if it is a valid format for displaying on screen. If returns in the bit field to which the pFormatSupport parameter points, the format is valid for displaying on screen.

Starting with Windows?8 for a flip model swap chain (that is, a swap chain that has the DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL value set in the SwapEffect member of ), you must set the Format member of to , , or .

Because of the relaxed render target creation rules that Direct3D 11 has for back buffers, applications can create a render target view from a swap chain so they can use automatic color space conversion when they render the swap chain.

-
- - bb173064 - DXGI_MODE_DESC - DXGI_MODE_DESC -
- - -

A value that describes the resolution width. If you specify the width as zero when you call the method to create a swap chain, the runtime obtains the width from the output window and assigns this width value to the swap-chain description. You can subsequently call the method to retrieve the assigned width value.

-
- - bb173064 - unsigned int Width - unsigned int Width -
- - -

A value describing the resolution height. If you specify the height as zero when you call the method to create a swap chain, the runtime obtains the height from the output window and assigns this height value to the swap-chain description. You can subsequently call the method to retrieve the assigned height value.

-
- - bb173064 - unsigned int Height - unsigned int Height -
- - -

A structure describing the refresh rate in hertz

-
- - bb173064 - DXGI_RATIONAL RefreshRate - DXGI_RATIONAL RefreshRate -
- - -

A structure describing the display format.

-
- - bb173064 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

A member of the enumerated type describing the scanline drawing mode.

-
- - bb173064 - DXGI_MODE_SCANLINE_ORDER ScanlineOrdering - DXGI_MODE_SCANLINE_ORDER ScanlineOrdering -
- - -

A member of the enumerated type describing the scaling mode.

-
- - bb173064 - DXGI_MODE_SCALING Scaling - DXGI_MODE_SCALING Scaling -
- - - Initializes a new instance of the structure. - - The width. - The height. - The refresh rate. - The format. - - - -

Describes an output or physical connection between the adapter (video card) and a device.

-
- -

The structure is initialized by the method.

-
- - bb173068 - DXGI_OUTPUT_DESC - DXGI_OUTPUT_DESC -
- - -

A string that contains the name of the output device.

-
- - bb173068 - wchar_t DeviceName[32] - wchar_t DeviceName -
- - -

A structure containing the bounds of the output in desktop coordinates. Desktop coordinates depend on the dots per inch (DPI) of the desktop. - For info about writing DPI-aware Win32 apps, see High DPI.

-
- - bb173068 - RECT DesktopCoordinates - RECT DesktopCoordinates -
- - -

True if the output is attached to the desktop; otherwise, false.

-
- - bb173068 - BOOL AttachedToDesktop - BOOL AttachedToDesktop -
- - -

A member of the enumerated type describing on how an image is rotated by the output.

-
- - bb173068 - DXGI_MODE_ROTATION Rotation - DXGI_MODE_ROTATION Rotation -
- - -

An handle that represents the display monitor. For more information, see and the Device Context.

-
- - bb173068 - HMONITOR Monitor - HMONITOR Monitor -
- - -

Represents a rational number.

-
- -

The structure operates under the following rules:

  • 0/0 is legal and will be interpreted as 0/1.
  • 0/anything is interpreted as zero.
  • If you are representing a whole number, the denominator should be 1.
-
- - bb173069 - DXGI_RATIONAL - DXGI_RATIONAL -
- - -

An unsigned integer value representing the top of the rational number.

-
- - bb173069 - unsigned int Numerator - unsigned int Numerator -
- - -

An unsigned integer value representing the bottom of the rational number.

-
- - bb173069 - unsigned int Denominator - unsigned int Denominator -
- - - An empty rational that can be used for comparisons. - - - - - Initializes a new instance of the structure. - - The numerator of the rational pair. - The denominator of the rational pair. - - - -

Describes multi-sampling parameters for a resource.

-
- -

The default sampler mode, with no anti-aliasing, has a count of 1 and a quality level of 0.

If multi-sample antialiasing is being used, all bound render targets and depth buffers must have the same sample counts and quality levels.

Differences between Direct3D 10.0 and Direct3D 10.1 and between Direct3D 10.0 and Direct3D 11:

Direct3D 10.1 has defined two standard quality levels: and in the enumeration in D3D10_1.h.

Direct3D 11 has defined two standard quality levels: and in the enumeration in D3D11.h.

?

-
- - bb173072 - DXGI_SAMPLE_DESC - DXGI_SAMPLE_DESC -
- - -

The number of multisamples per pixel.

-
- - bb173072 - unsigned int Count - unsigned int Count -
- - -

The image quality level. The higher the quality, the lower the performance. The valid range is between zero and one less than the level returned by for Direct3D 10 or for Direct3D 11.

For Direct3D 10.1 and Direct3D 11, you can use two special quality level values. For more information about these quality level values, see Remarks.

-
- - bb173072 - unsigned int Quality - unsigned int Quality -
- - - Initializes a new instance of the structure. - - The sample count. - The sample quality. - - - -

Represents a handle to a shared resource.

-
- -

To create a shared surface, pass a shared-resource handle into the method.

-
- - bb173073 - DXGI_SHARED_RESOURCE - DXGI_SHARED_RESOURCE -
- - -

A handle to a shared resource.

-
- - bb173073 - void* Handle - void Handle -
- - -

Describes a surface.

-
- - bb173074 - DXGI_SURFACE_DESC - DXGI_SURFACE_DESC -
- - -

A value describing the surface width.

-
- - bb173074 - unsigned int Width - unsigned int Width -
- - -

A value describing the surface height.

-
- - bb173074 - unsigned int Height - unsigned int Height -
- - -

A member of the enumerated type that describes the surface format.

-
- - bb173074 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

A member of the structure that describes multi-sampling parameters for the surface.

-
- - bb173074 - DXGI_SAMPLE_DESC SampleDesc - DXGI_SAMPLE_DESC SampleDesc -
- - -

Describes a swap chain.

-
- -

In full-screen mode, there is a dedicated front buffer; in windowed mode, the desktop is the front buffer.

If you create a swap chain with one buffer, specifying does not cause the contents of the single buffer to be swapped with the front buffer.

For performance information about flipping swap-chain buffers in full-screen application, see Full-Screen Application Performance Hints.

-
- - bb173075 - DXGI_SWAP_CHAIN_DESC - DXGI_SWAP_CHAIN_DESC -
- - -

A structure that describes the backbuffer display mode.

-
- - bb173075 - DXGI_MODE_DESC BufferDesc - DXGI_MODE_DESC BufferDesc -
- - -

A structure that describes multi-sampling parameters.

-
- - bb173075 - DXGI_SAMPLE_DESC SampleDesc - DXGI_SAMPLE_DESC SampleDesc -
- - -

A member of the DXGI_USAGE enumerated type that describes the surface usage and CPU access options for the back buffer. The back buffer can be used for shader input or render-target output.

-
- - bb173075 - DXGI_USAGE_ENUM BufferUsage - DXGI_USAGE_ENUM BufferUsage -
- - -

A value that describes the number of buffers in the swap chain. When you call to create a full-screen swap chain, you typically include the front buffer in this value. For more information about swap-chain buffers, see Remarks.

-
- - bb173075 - unsigned int BufferCount - unsigned int BufferCount -
- - -

An handle to the output window. This member must not be null.

-
- - bb173075 - HWND OutputWindow - HWND OutputWindow -
- - -

A Boolean value that specifies whether the output is in windowed mode. TRUE if the output is in windowed mode; otherwise, .

We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through ; that is, do not set this member to to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes through the BufferDesc member because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything.

For more information about choosing windowed verses full screen, see .

-
- - bb173075 - BOOL Windowed - BOOL Windowed -
- - -

A member of the enumerated type that describes options for handling the contents of the presentation buffer after presenting a surface.

-
- - bb173075 - DXGI_SWAP_EFFECT SwapEffect - DXGI_SWAP_EFFECT SwapEffect -
- - -

A member of the enumerated type that describes options for swap-chain behavior.

-
- - bb173075 - DXGI_SWAP_CHAIN_FLAG Flags - DXGI_SWAP_CHAIN_FLAG Flags -
- - - Internal class used to initialize this assembly. - - - - - Initializes this assembly. - - - This method is called when the assembly is loaded. - - -
-
diff --git a/distribution/SharpDX.Direct3D10.dll b/distribution/SharpDX.Direct3D10.dll deleted file mode 100644 index abe3b6a8dafa87102752c1f8fd626291b2ff8ece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179200 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 diff --git a/distribution/SharpDX.Direct3D10.xml b/distribution/SharpDX.Direct3D10.xml deleted file mode 100644 index ffe32f9d..00000000 --- a/distribution/SharpDX.Direct3D10.xml +++ /dev/null @@ -1,23120 +0,0 @@ - - - - SharpDX.Direct3D10 - - - - - The assembly provides managed Direct3D10 API. - - bb205066 - Direct3D10 - Direct3D10 - - - -

This interface encapsulates methods for retrieving data from the GPU asynchronously.

-
- -

There are three types of asynchronous interfaces, all of which inherit this interface:

  • Interface - Queries information from the GPU.
  • Interface - Determines whether a piece of geometry should be processed or not depending on the results of a previous draw call.
  • Interface - Measures GPU performance.
-
- - bb173500 - ID3D10Asynchronous - ID3D10Asynchronous -
- - -

A device-child interface accesses data used by a device.

-
- -

There are several types of device child interfaces, all of which inherit this interface. They include shaders, state objects, and input layouts.

-
- - bb173529 - ID3D10DeviceChild - ID3D10DeviceChild -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to the device that created this interface.

-
-

Address of a reference to a device (see Interface).

- -

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

-
- - bb173530 - void ID3D10DeviceChild::GetDevice([Out] ID3D10Device** ppDevice) - ID3D10DeviceChild::GetDevice -
- - -

Get application-defined data from a device child.

-
-

Guid associated with the data.

-

Size of the data.

-

Pointer to the data stored with the device child. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

The data stored in the device child is set with .

-
- - bb173531 - HRESULT ID3D10DeviceChild::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) - ID3D10DeviceChild::GetPrivateData -
- - -

Set application-defined data to a device child and associate that data with an application-defined guid.

-
-

Guid associated with the data.

-

Size of the data.

-

Pointer to the data to be stored with this device child. If pData is null, DataSize must also be 0, and any data previously associated with the specified guid will be destroyed.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

The data stored in the device child with this method can be retrieved with .

-
- - bb173532 - HRESULT ID3D10DeviceChild::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) - ID3D10DeviceChild::SetPrivateData -
- - -

Associate an -derived interface with this device child and associate that interface with an application-defined guid.

-
- No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

When this method is called ::addref() will be called on the -derived interface, and when the device child is detroyed ::release() will be called on the -derived interface.

-
- - bb173533 - HRESULT ID3D10DeviceChild::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) - ID3D10DeviceChild::SetPrivateDataInterface -
- - - Gets or sets the debug-name for this object. - - - The debug name. - - - - -

Get a reference to the device that created this interface.

-
- -

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

-
- - bb173530 - GetDevice - GetDevice - void ID3D10DeviceChild::GetDevice([Out] ID3D10Device** ppDevice) -
- - - Get data from the GPU asynchronously. - - - GetData retrieves the data collected between calls to and . Certain queries only require a call to ID3D10Asynchronous::End in which case the data returned by GetData is accurate up to the last call to ID3D10Asynchronous::End (See ). If DataSize is 0, GetData is only used to check status where a return value of S_OK indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available. It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT. If the asynchronous interface that calls this function is , then the following table applies. Query TypeOutput Data TypeSupports Begin Method EVENTBOOLNO OCCLUSIONUINT64YES TIMESTAMPUINT64NO TIMESTAMP_DISJOINTQUERYDATA_TIMESTAMP_DISJOINTYES PIPELINE_STATISTICSQUERYDATA_PIPELINE_STATISTICSYES OCCLUSION_PREDICATEBOOLYES SO_STATISTICSQUERYDATA_SO_STATISTICSYES SO_OVERFLOW_PREDICATEBOOLYES ? If the asynchronous interface that calls this API is , then the following applies. Counter TypeOutput Data TypeUnits GPU_IDLEFLOAT32fraction of time VERTEX_PROCESSINGFLOAT32fraction of time GEOMETRY_PROCESSINGFLOAT32fraction of time PIXEL_PROCESSINGFLOAT32fraction of time OTHER_GPU_PROCESSINGFLOAT32fraction of time HOST_ADAPTER_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum LOCAL_VIDMEM_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEX_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum TRISETUP_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum FILLRATE_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEXSHADER_MEMORY_LIMITEDFLOAT32fraction of time VERTEXSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_MEMORY_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time PIXELSHADER_MEMORY_LIMITEDFLOAT32fraction of time PIXELSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time POST_TRANSFORM_CACHE_HIT_RATEFLOAT32fraction TEXTURE_CACHE_HIT_RATEFLOAT32fraction ? The value returned by a GPU_IDLE, VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, or OTHER_GPU_PROCESSING counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation: ? Equation to interpret the number of parallel counters ? The number of parallel counters that a video card has is available from NumDetectableParallelUnits in , and it can be retrieved by calling . - - If this function succeeds, returns a containing the asynchronous data sent from the GPU. - HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] int DataSize,[In] int GetDataFlags) - - - - Get data from the GPU asynchronously. - - - GetData retrieves the data collected between calls to and . Certain queries only require a call to ID3D10Asynchronous::End in which case the data returned by GetData is accurate up to the last call to ID3D10Asynchronous::End (See ). If DataSize is 0, GetData is only used to check status where a return value of S_OK indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available. It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT. If the asynchronous interface that calls this function is , then the following table applies. Query TypeOutput Data TypeSupports Begin Method EVENTBOOLNO OCCLUSIONUINT64YES TIMESTAMPUINT64NO TIMESTAMP_DISJOINTQUERYDATA_TIMESTAMP_DISJOINTYES PIPELINE_STATISTICSQUERYDATA_PIPELINE_STATISTICSYES OCCLUSION_PREDICATEBOOLYES SO_STATISTICSQUERYDATA_SO_STATISTICSYES SO_OVERFLOW_PREDICATEBOOLYES ? If the asynchronous interface that calls this API is , then the following applies. Counter TypeOutput Data TypeUnits GPU_IDLEFLOAT32fraction of time VERTEX_PROCESSINGFLOAT32fraction of time GEOMETRY_PROCESSINGFLOAT32fraction of time PIXEL_PROCESSINGFLOAT32fraction of time OTHER_GPU_PROCESSINGFLOAT32fraction of time HOST_ADAPTER_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum LOCAL_VIDMEM_BANDWIDTH_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEX_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum TRISETUP_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum FILLRATE_THROUGHPUT_UTILIZATIONFLOAT32fraction of theoretical maximum VERTEXSHADER_MEMORY_LIMITEDFLOAT32fraction of time VERTEXSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_MEMORY_LIMITEDFLOAT32fraction of time GEOMETRYSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time PIXELSHADER_MEMORY_LIMITEDFLOAT32fraction of time PIXELSHADER_COMPUTATION_LIMITEDFLOAT32fraction of time POST_TRANSFORM_CACHE_HIT_RATEFLOAT32fraction TEXTURE_CACHE_HIT_RATEFLOAT32fraction ? The value returned by a GPU_IDLE, VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, or OTHER_GPU_PROCESSING counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation: ? Equation to interpret the number of parallel counters ? The number of parallel counters that a video card has is available from NumDetectableParallelUnits in , and it can be retrieved by calling . - - Optional flags. Can be 0 or any combination of the flags enumerated by . - If this function succeeds, returns a containing the asynchronous data sent from the GPU. - HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] int DataSize,[In] int GetDataFlags) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Starts the collection of GPU data.

-
- -

Calling Begin starts the asynchronous collection of GPU data. Calling causes data collection to stop. See Interface for additional information.

-
- - bb173501 - void ID3D10Asynchronous::Begin() - ID3D10Asynchronous::Begin -
- - -

Ends the collection of GPU data.

-
- -

Calling starts the asynchronous collection of GPU data. Calling causes data collection to stop. See Interface for additional information.

-
- - bb173502 - void ID3D10Asynchronous::End() - ID3D10Asynchronous::End -
- - -

Get data from the GPU asynchronously.

-
-

Address of memory that will receive the data. If null, GetData will be used only to check status. The type of data output depends on the type of asynchronous interface. See Remarks.

-

Size of the data to retrieve or 0. This value can be obtained with . Must be 0 when pData is null.

-

Optional flags. Can be 0 or any combination of the flags enumerated by .

-

If this function succeeds, it returns . Otherwise, possible return values are the following:

  • S_FALSE
- -

GetData retrieves the data collected between calls to and . Certain queries only require a call to in which case the data returned by GetData is accurate up to the last call to (See Interface).

If DataSize is 0, GetData is only used to check status where a return value of indicates that data is available to give to an application, and a return value of S_FALSE indicates data is not yet available.

It is invalid to invoke this function on a predicate created with the flag D3D10_QUERY_MISCFLAG_PREDICATEHINT.

If the asynchronous interface that calls this function is Interface, then the following table applies.

Query TypeOutput Data TypeSupports Begin Method
NO
UINT64YES
UINT64NO
YES
YES
YES
YES
YES

?

If the asynchronous interface that calls this API is Interface, then the following applies.

Counter TypeOutput Data TypeUnits
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of theoretical maximum
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction of time
FLOAT32fraction
FLOAT32fraction

?

The value returned by a , , , , or counter may be different depending on the number of parallel counters that exist on a video card, and those values can be interpreted with the following equation:

The number of parallel counters that a video card has is available from NumDetectableParallelUnits in , and it can be retrieved by calling .

-
- - bb173503 - HRESULT ID3D10Asynchronous::GetData([Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] unsigned int GetDataFlags) - ID3D10Asynchronous::GetData -
- - -

Get the size of the data (in bytes) that is output when calling .

-
-

Size of the data (in bytes) that is output when calling GetData.

- - bb173504 - unsigned int ID3D10Asynchronous::GetDataSize() - ID3D10Asynchronous::GetDataSize -
- - - Gets a value indicating whether or not data is available for consumption. - - - - -

This blend-state interface accesses blending state for a Direct3D 10.0 device for the output-merger stage.

-
- -

Blending combines two pixel values. You have control over how the pixels are blended by using a predefined set of blending operations, as well as preblending operations. The Blending Block Diagram shows conceptually how blending works.

To create a blend-state interface, call . To initialize the blend state, call .

-
- - bb173505 - ID3D10BlendState - ID3D10BlendState -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the blend state.

-
-

A reference to the blend state (see ).

- - bb173506 - void ID3D10BlendState::GetDesc([Out] D3D10_BLEND_DESC* pDesc) - ID3D10BlendState::GetDesc -
- - -

Get the blend state.

-
- - bb173506 - GetDesc - GetDesc - void ID3D10BlendState::GetDesc([Out] D3D10_BLEND_DESC* pDesc) -
- - -

This blend-state interface accesses blending state for a Direct3D 10.1 device for the output-merger stage.

-
- -

Blending combines two pixel values. You have control over how the pixels are blended by using a predefined set of blending operations, as well as preblending operations. The Blending Block Diagram shows conceptually how blending works.

To create a blend-state interface, call . To initialize the blend state, call .

This method requires Windows Vista Service Pack 1.

-
- - bb694544 - ID3D10BlendState1 - ID3D10BlendState1 -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - No documentation. - - No documentation. - - void ID3D10BlendState1::GetDesc1([Out] D3D10_BLEND_DESC1* pDesc) - ID3D10BlendState1::GetDesc1 - - - - No documentation. - - - GetDesc1 - GetDesc1 - void ID3D10BlendState1::GetDesc1([Out] D3D10_BLEND_DESC1* pDesc) - - - -

A buffer interface accesses a buffer resource, which is unstructured memory. Buffers typically store vertex or index data.

-
- -

Three types of buffers can be created; vertex, index, and shader-constant buffers. To create a buffer resource, call .

A buffer must be bound to the pipeline before it can be accessed. Buffers can be bound to the input-assembler stage by calls to and , and to the stream-output stage by a call to .

Buffers can be bound to multiple pipeline stages simultaneously for reading. A buffer can also be bound to a single pipeline stage for writing; however, the same buffer cannot be bound for reading and writing simultaneously. For more information, see binding resources.

-
- - bb173510 - ID3D10Buffer - ID3D10Buffer -
- - -

A resource interface provides common actions on all resources.

-
- -

A resource interface cannot be created directly; instead, buffers and textures are created that inherit from a resource interface (see Creating Buffer Resources or Creating Texture Resources).

-
- - bb173829 - ID3D10Resource - ID3D10Resource -
- - Constant MaximumMipLevels. - D3D10_REQ_MIP_LEVELS - - - Constant ResourceSizeInMegabytes. - D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES - - - Constant MaximumTexture1DArraySize. - D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION - - - Constant MaximumTexture2DArraySize. - D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION - - - Constant MaximumTexture1DSize. - D3D10_REQ_TEXTURE1D_U_DIMENSION - - - Constant MaximumTexture2DSize. - D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION - - - Constant MaximumTexture3DSize. - D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION - - - Constant MaximumTextureCubeSize. - D3D10_REQ_TEXTURECUBE_DIMENSION - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the type of the resource.

-
-

Pointer to the resource type (see ).

- - bb173831 - void ID3D10Resource::GetType([Out] D3D10_RESOURCE_DIMENSION* rType) - ID3D10Resource::GetType -
- - -

Set the eviction priority of a resource.

-
-

Eviction priority for the resource, which is one of the following values:

- -

Resource priorities determine which resource to evict from video memory when the system has run out of video memory. The resource will not be lost; it will be removed from video memory and placed into system memory, or possibly placed onto the hard drive. The resource will be loaded back into video memory when it is required.

A resource that is set to the maximum priority, , is only evicted if there is no other way of resolving the incoming memory request. The Windows Display Driver Model (WDDM) tries to split an incoming memory request to its minimum size and evict lower-priority resources before evicting a resource with maximum priority.

Changing the priorities of resources should be done carefully. The wrong eviction priorities could be a detriment to performance rather than an improvement. See QueryResourceResidency for additional information.

This method is a wrapper for SetEvictionPriority and is provided in the Interface interface for convenience.

-
- - bb173832 - void ID3D10Resource::SetEvictionPriority([In] unsigned int EvictionPriority) - ID3D10Resource::SetEvictionPriority -
- - -

Get the eviction priority of a resource.

-
-

One of the following values, which specifies the eviction priority for the resource:

- -

This method is a wrapper for GetEvictionPriority and is provided in the Interface interface for convenience.

-
- - bb173830 - unsigned int ID3D10Resource::GetEvictionPriority() - ID3D10Resource::GetEvictionPriority -
- - - Gets a swap chain back buffer. - - The type of the buffer. - The swap chain to get the buffer from. - The index of the desired buffer. - The buffer interface, or null on failure. - - - - Loads a texture from an image file. - - The device used to load the texture. - Path to the file on disk. - The loaded texture object. - - - - Loads a texture from an image file. - - The device used to load the texture. - Path to the file on disk. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Array of memory containing the image data to load. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Array of memory containing the image data to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from a stream of data. - - The device used to load the texture. - A stream containing the image data to load. - Size of the image to load. - The loaded texture object. - - - - Loads a texture from a stream of data. - - The device used to load the texture. - A stream containing the image data to load. - Size of the image to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Saves a texture to file. - - The texture to save. - The format the texture will be saved as. - Name of the destination output file where the texture will be saved. - A object describing the result of the operation. - - - - Saves a texture to a stream. - - The texture to save. - The format the texture will be saved as. - Destination memory stream where the image will be saved. - A object describing the result of the operation. - - - - Load a texture from a texture. - - Pointer to the source texture. See . - Pointer to the destination texture. See . - Pointer to texture loading parameters. See . - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT D3DX10LoadTextureFromTexture([None] ID3D10Resource* pSrcTexture,[None] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[None] ID3D10Resource* pDstTexture) - - - - Generates mipmap chain using a particular texture filter. - - The mipmap level whose data is used to generate the rest of the mipmap chain. - Flags controlling how each miplevel is filtered (or D3DX10_DEFAULT for D3DX10_FILTER_BOX). See . - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT D3DX10FilterTexture([None] ID3D10Resource* pTexture,[None] int SrcLevel,[None] int MipFilter) - - - - Returns a DXGI Surface for this resource. - - The buffer interface, or null on failure. - - - - Calculates a subresource index. - - The index of the desired mip slice. - The index of the desired array slice. - The total number of mip levels. - The subresource index (equivalent to mipSlice + (arraySlice * mipLevels)). - - - - Calculate the MipSize - - - - - - - -

Get the type of the resource.

-
- - bb173831 - GetType - GetType - void ID3D10Resource::GetType([Out] D3D10_RESOURCE_DIMENSION* rType) -
- - -

Get or sets the eviction priority of a resource.

-
- -

This method is a wrapper for GetEvictionPriority and is provided in the Interface interface for convenience.

-
- - bb173830 - GetEvictionPriority / SetEvictionPriority - GetEvictionPriority - unsigned int ID3D10Resource::GetEvictionPriority() -
- - - Initializes a new instance of the class. - - The device with which to associate the buffer. - The description of the buffer. - - - - Initializes a new instance of the class. - - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The description of the buffer. - - - - Initializes a new instance of the class. - - The device with which to associate the buffer. - The size, in bytes, of the buffer. - The usage pattern for the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - - - - Initializes a new instance of the class. - - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The size, in bytes, of the buffer. - The usage pattern for the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - - - - Get a reference to the data contained in the resource and deny GPU access to the resource. - - - For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, D3D10_USAGE_DYNAMIC. To both read and write those contents, the resource must be created with the staging usage flag, D3D10_USAGE_STAGING. (For more information about these flags, see .) ID3D10Buffer::Map will retrieve a reference to the resource data. For a discussion on how to access resources efficiently, see {{Copying and Accessing Resource Data (Direct3D 10)}}. Call to signify that the application has finished accessing the resource. ID3D10Buffer::Map has a few other restrictions. For example: The same buffer cannot be mapped multiple times; in other words, do not call ID3D10Buffer::Map on a buffer that is already mapped. Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, ) can be executed. Differences between Direct3D 9 and Direct3D 10: ID3D10Buffer::Map in Direct3D 10 is analogous to resource {{Lock}} in Direct3D 9. ? - - Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see . - If this function succeeds returns a with the size this buffer. - HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] int MapFlags,[Out] void** ppData) - - - - Get a reference to the data contained in the resource and deny GPU access to the resource. - - - For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, D3D10_USAGE_DYNAMIC. To both read and write those contents, the resource must be created with the staging usage flag, D3D10_USAGE_STAGING. (For more information about these flags, see .) ID3D10Buffer::Map will retrieve a reference to the resource data. For a discussion on how to access resources efficiently, see {{Copying and Accessing Resource Data (Direct3D 10)}}. Call to signify that the application has finished accessing the resource. ID3D10Buffer::Map has a few other restrictions. For example: The same buffer cannot be mapped multiple times; in other words, do not call ID3D10Buffer::Map on a buffer that is already mapped. Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, ) can be executed. Differences between Direct3D 9 and Direct3D 10: ID3D10Buffer::Map in Direct3D 10 is analogous to resource {{Lock}} in Direct3D 9. ? - - Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see . - Flag that specifies what the CPU should do when the GPU is busy (see ). This flag is optional. - If this function succeeds returns a with the size this buffer. - HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] int MapFlags,[Out] void** ppData) - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Initial data used to initialize the buffer. - The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. - The usage pattern for the buffer. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - The size (in bytes) of the structure element for structured buffers. - An initialized buffer - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Initial data used to initialize the buffer. - The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. - The usage pattern for the buffer. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - The size (in bytes) of the structure element for structured buffers. - An initialized buffer - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The description. - - An initialized buffer - - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The description. - - An initialized buffer - - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to the data contained in the resource and deny GPU access to the resource.

-
-

Flag that specifies the CPU's permissions for the reading and writing of a resource. For possible values, see .

-

Flag that specifies what the CPU should do when the GPU is busy (see ). This flag is optional.

-

Pointer to the buffer resource data.

-

If this function succeeds, it returns . The following list contains some of the reasons that Map can fail:

  • If MapFlags specifies and the GPU is not yet finished with the resource, returns .
  • returns if MapType includes any flags that permit reading and the hardware device (that is, the video card) has been removed.

For more information about the preceding return values, see DXGI_ERROR.

- -

For the CPU to write the contents of a resource, the resource must be created with the dynamic usage flag, . To both read and write those contents, the resource must be created with the staging usage flag, . (For more information about these flags, see .) will retrieve a reference to the resource data. For a discussion on how to access resources efficiently, see Copying and Accessing Resource Data (Direct3D 10).

Call to signify that the application has finished accessing the resource.

has a few other restrictions. For example:

  • The same buffer cannot be mapped multiple times; in other words, do not call on a buffer that is already mapped.
  • Any buffer that is bound to the pipeline must be unmapped before any rendering operation (that is, ) can be executed.

Differences between Direct3D 9 and Direct3D 10:

in Direct3D 10 is analogous to resource Lock in Direct3D 9.

?

-
- - bb173512 - HRESULT ID3D10Buffer::Map([In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] void** ppData) - ID3D10Buffer::Map -
- - -

Invalidate the reference to the resource retrieved by and reenable GPU access to the resource.

-
- -

Differences between Direct3D 9 and Direct3D 10:

Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.

?

-
- - bb173513 - void ID3D10Buffer::Unmap() - ID3D10Buffer::Unmap -
- - -

Get the properties of a buffer resource.

-
-

Pointer to a resource description (see ) filled in by the method. This reference cannot be null.

- - bb173511 - void ID3D10Buffer::GetDesc([Out] D3D10_BUFFER_DESC* pDesc) - ID3D10Buffer::GetDesc -
- - -

Get the properties of a buffer resource.

-
- - bb173511 - GetDesc - GetDesc - void ID3D10Buffer::GetDesc([Out] D3D10_BUFFER_DESC* pDesc) -
- - -

Describes a buffer resource.

-
- -

This structure is used by to create buffer resources.

In addition to this structure, there is also a derived structure in D3D10.h (CD3D10_BUFFER_DESC) which behaves like an inherited class to help create a buffer description.

-
- - bb204896 - D3D10_BUFFER_DESC - D3D10_BUFFER_DESC -
- - - Initializes a new instance of the struct. - - The size in bytes. - The usage. - The bind flags. - The CPU access flags. - The option flags. - - - - No documentation. - - - bb204896 - unsigned int ByteWidth - unsigned int ByteWidth - - - - No documentation. - - - bb204896 - D3D10_USAGE Usage - D3D10_USAGE Usage - - - - No documentation. - - - bb204896 - D3D10_BIND_FLAG BindFlags - D3D10_BIND_FLAG BindFlags - - - - No documentation. - - - bb204896 - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - - - - No documentation. - - - bb204896 - D3D10_RESOURCE_MISC_FLAG MiscFlags - D3D10_RESOURCE_MISC_FLAG MiscFlags - - - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Binds a single vertex buffer to the input assembler. - - Index of the slot to which to bind the vertex buffer. - A binding for the input vertex buffer. - - - - Binds an array of vertex buffers to the input assembler. - - Index of the first input slot to use for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. There are 16 input slots. - An array of bindings for input vertex buffers. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind an input-layout object to the input-assembler stage.

-
- No documentation. - -

Input-layout objects describe how vertex buffer data is streamed into the IA pipeline stage. To create an input-layout object, call .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173589 - void ID3D10Device::IASetInputLayout([In, Optional] ID3D10InputLayout* pInputLayout) - ID3D10Device::IASetInputLayout -
- - -

Bind an array of vertex buffers to the input-assembler stage.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - -

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173591 - void ID3D10Device::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppVertexBuffers,[In, Buffer] const unsigned int* pStrides,[In, Buffer] const unsigned int* pOffsets) - ID3D10Device::IASetVertexBuffers -
- - -

Bind an array of vertex buffers to the input-assembler stage.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - -

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173591 - void ID3D10Device::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppVertexBuffers,[In, Buffer] const unsigned int* pStrides,[In, Buffer] const unsigned int* pOffsets) - ID3D10Device::IASetVertexBuffers -
- - -

Bind an index buffer to the input-assembler stage.

-
- No documentation. - No documentation. - No documentation. - -

For information about creating index buffers, see Create an Index Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173588 - void ID3D10Device::IASetIndexBuffer([In, Optional] ID3D10Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset) - ID3D10Device::IASetIndexBuffer -
- - -

Bind information about the primitive type, and data order that describes input data for the input assembler stage.

-
- No documentation. - - bb173590 - void ID3D10Device::IASetPrimitiveTopology([In] D3D_PRIMITIVE_TOPOLOGY Topology) - ID3D10Device::IASetPrimitiveTopology -
- - -

Get a reference to the input-layout object that is bound to the input-assembler stage.

-
- No documentation. - -

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173585 - void ID3D10Device::IAGetInputLayout([Out] ID3D10InputLayout** ppInputLayout) - ID3D10Device::IAGetInputLayout -
- - -

Get the vertex buffers bound to the input-assembler stage.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173587 - void ID3D10Device::IAGetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppVertexBuffers,[Out, Buffer, Optional] unsigned int* pStrides,[Out, Buffer, Optional] unsigned int* pOffsets) - ID3D10Device::IAGetVertexBuffers -
- - -

Get a reference to the index buffer that is bound to the input-assembler stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173584 - void ID3D10Device::IAGetIndexBuffer([Out, Optional] ID3D10Buffer** pIndexBuffer,[Out, Optional] DXGI_FORMAT* Format,[Out, Optional] unsigned int* Offset) - ID3D10Device::IAGetIndexBuffer -
- - -

Get information about the primitive type, and data order that describes input data for the input assembler stage.

-
- No documentation. - - bb173586 - void ID3D10Device::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) - ID3D10Device::IAGetPrimitiveTopology -
- - -

Get or sets a reference to the input-layout object that is bound to the input-assembler stage.

-
- -

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173585 - IAGetInputLayout / IASetInputLayout - IAGetInputLayout - void ID3D10Device::IAGetInputLayout([Out] ID3D10InputLayout** ppInputLayout) -
- - -

Get or sets information about the primitive type, and data order that describes input data for the input assembler stage.

-
- - bb173586 - IAGetPrimitiveTopology / IASetPrimitiveTopology - IAGetPrimitiveTopology - void ID3D10Device::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) -
- - -

This interface encapsulates methods for measuring GPU performance.

-
- -

A counter can be created with .

This is a derived class of Interface.

Counter data is gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of counter. The call to End causes the data returned by GetData to be accurate up until the last call to End.

Counters are best suited for profiling.

For a list of the types of performance counters, see .

-
- - bb173514 - ID3D10Counter - ID3D10Counter -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The counter description. - The newly created object. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a counter description.

-
-

Pointer to a counter description (see ).

- - bb173515 - void ID3D10Counter::GetDesc([Out] D3D10_COUNTER_DESC* pDesc) - ID3D10Counter::GetDesc -
- - -

Get a counter description.

-
- - bb173515 - GetDesc - GetDesc - void ID3D10Counter::GetDesc([Out] D3D10_COUNTER_DESC* pDesc) -
- - - Counter metadata that contains the type, name, units of measure, and a description of an existing counter. - - - - - Gets the data type of a counter (see ). - - The type. - - - - Gets the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters. - - The hardware counter count. - - - - Gets a brief name for the counter. - - The name. - - - - Gets the units a counter measures. - - The units. - - - - Gets a description of the counter. - - The description. - - - -

A debug interface controls debug settings, validates pipeline state and can only be used if the debug layer is turned on.

-
- -

This interface is obtained by querying it from the Interface using IUnknown::QueryInterface.

-
- - bb173516 - ID3D10Debug - ID3D10Debug -
- - - Initializes a new instance of the class. - - The device. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a bitfield of flags that will turn debug features on and off.

-
-

Feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See remarks for a list of flags.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

Note??If you call this API in a Session 0 process, it returns .

Setting a feature-mask flag will cause a rendering-operation method (listed below) to do some extra task when called. The possible feature flags are:

Application will wait for the GPU to finish processing the rendering operation before continuing.
Runtime will additionally call .
Runtime will call Present. Presentation of render buffers will occur according to the settings established by prior calls to and .

?

These feature-mask flags apply to the following rendering-operation methods:

-
- - bb173520 - HRESULT ID3D10Debug::SetFeatureMask([In] unsigned int Mask) - ID3D10Debug::SetFeatureMask -
- - -

Get a bitfield of flags that indicates which debug features are on or off.

-
-

Mask of feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See for a list of possible feature-mask flags.

- - bb173517 - unsigned int ID3D10Debug::GetFeatureMask() - ID3D10Debug::GetFeatureMask -
- - -

Set the number of milliseconds to sleep after Present is called.

-
- No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

Note??If you call this API in a Session 0 process, it returns .

The application will only sleep if is a set in the feature mask. If that flag is not set the number of milliseconds is set but ignored and the application does not sleep. 10ms is used as a default value if this method is never called.

-
- - bb173521 - HRESULT ID3D10Debug::SetPresentPerRenderOpDelay([In] unsigned int Milliseconds) - ID3D10Debug::SetPresentPerRenderOpDelay -
- - -

Get the number of milliseconds to sleep after Present is called.

-
-

Number of milliseconds to sleep after Present is called.

- -

Value is set with .

-
- - bb173518 - unsigned int ID3D10Debug::GetPresentPerRenderOpDelay() - ID3D10Debug::GetPresentPerRenderOpDelay -
- - -

Set a swap chain that the runtime will use for automatically calling Present.

-
- No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

Note??If you call this API in a Session 0 process, it returns .

The swap chain set by this method will only be used if is set in the feature mask.

-
- - bb173522 - HRESULT ID3D10Debug::SetSwapChain([In, Optional] IDXGISwapChain* pSwapChain) - ID3D10Debug::SetSwapChain -
- - -

Get the swap chain that the runtime will use for automatically calling Present.

-
- No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

The swap chain retrieved by this method will only be used if is set in the feature mask.

-
- - bb173519 - HRESULT ID3D10Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) - ID3D10Debug::GetSwapChain -
- - -

Check the validity of pipeline state.

-
-

This method returns one of the following Direct3D 10 Return Codes.

- -

When the debug layer is turned on all draw functions will do this operation.

-
- - bb173523 - HRESULT ID3D10Debug::Validate() - ID3D10Debug::Validate -
- - - Gets or sets the feature flags that indicates which debug features are on or off. - - The feature flags. - - - -

Get or sets the number of milliseconds to sleep after Present is called.

-
- -

Value is set with .

-
- - bb173518 - GetPresentPerRenderOpDelay / SetPresentPerRenderOpDelay - GetPresentPerRenderOpDelay - unsigned int ID3D10Debug::GetPresentPerRenderOpDelay() -
- - -

Get or sets the swap chain that the runtime will use for automatically calling Present.

-
- -

The swap chain retrieved by this method will only be used if is set in the feature mask.

-
- - bb173519 - GetSwapChain / SetSwapChain - GetSwapChain - HRESULT ID3D10Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) -
- - -

A depth-stencil-state interface accesses depth-stencil state which sets up the depth-stencil test for the output-merger stage.

-
- -

Create a depth-stencil state object by calling .

To initialize depth-stencil state, bind the depth-stencil-state object to the pipeline by calling .

-
- - bb173524 - ID3D10DepthStencilState - ID3D10DepthStencilState -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the depth-stencil state.

-
-

A reference to the depth-stencil state (see ).

- - bb173525 - void ID3D10DepthStencilState::GetDesc([Out] D3D10_DEPTH_STENCIL_DESC* pDesc) - ID3D10DepthStencilState::GetDesc -
- - -

Get the depth-stencil state.

-
- - bb173525 - GetDesc - GetDesc - void ID3D10DepthStencilState::GetDesc([Out] D3D10_DEPTH_STENCIL_DESC* pDesc) -
- - -

A depth-stencil-view interface accesses a texture resource during depth-stencil testing.

-
- -

To create a depth-stencil view, call .

To bind a depth-stencil view to the pipeline, call .

-
- - bb173526 - ID3D10DepthStencilView - ID3D10DepthStencilView -
- - -

A view interface specifies the parts of a resource the pipeline can access during rendering (see view).

-
- -

A view interface is the base interface for all views. There are three types of views; a depth-stencil view, a render-target view, and a shader-resource view.

  • To create a render-target view, call .
  • To create a depth-stencil view, call .
  • To create a shader-resource view, call .

All resources must be bound to the pipeline before they can be accessed.

  • To bind a render-target view or a depth-stencil view, call .
  • To bind a shader-resource view, call .

A view can also be used to access a typeless resource.

-
- - bb173876 - ID3D10View - ID3D10View -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the resource that is accessed through this view.

-
-

Address of a reference to the resource that is accessed through this view. (See .)

- -

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

-
- - bb173877 - void ID3D10View::GetResource([Out] ID3D10Resource** ppResource) - ID3D10View::GetResource -
- - -

Get the resource that is accessed through this view.

-
- -

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

-
- - bb173877 - GetResource - GetResource - void ID3D10View::GetResource([Out] ID3D10Resource** ppResource) -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. - ID3D10Device::CreateDepthStencilView - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. - A structure describing the to be created. - ID3D10Device::CreateDepthStencilView - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the depth-stencil view.

-
- No documentation. - - bb173527 - void ID3D10DepthStencilView::GetDesc([Out] D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc) - ID3D10DepthStencilView::GetDesc -
- - -

Get the depth-stencil view.

-
- - bb173527 - GetDesc - GetDesc - void ID3D10DepthStencilView::GetDesc([Out] D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc) -
- - - Common Shader class. Provides a common set of methods for a Shader Stage. - TODO: check if usage of abstract is not introducing an unacceptable overhead... - - Type of the shader - - - - Maximum number of bindable constant buffers to a pipeline stage. - - - - - Maximum number of bindable resources to a pipeline stage. - - - - - Maximum number of bindable samplers to a pipeline stage. - - - - - Initializes a new instance of the class. - - The pointer. - - - - Gets the constant buffers used by the shader stage. - - Index into the device's zero-based array from which to begin retrieving constant buffers. - Number of buffers to retrieve. - An array of constant buffers. - - - - Gets the sampler states used by the shader stage. - - Index into the device's zero-based array from which to begin retrieving samplers. - Number of samplers to retrieve. - An array of sampler states. - - - - Gets the shader resources used by the shader stage. - - Index into the device's zero-based array from which to begin retrieving shader resources. - Number of resources to retrieve. - An array of shader resources. - - - - Sets a single constant buffer to be used by the shader stage. - - Index into the device's zero-based array to which to set the constant buffer. - constant buffer to set - - - - Sets a single sampler to be used by the shader stage. - - Index into the device's zero-based array to which to set the sampler. - sampler state to set - - - - Sets a single shader resource to be used by the shader stage. - - Index into the device's zero-based array to which to set the resource. - Resource view to attach - - - - Get the shader resources. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). - Array of {{shader resource view}} interfaces to be returned by the device. - void PSGetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) - - - - Get an array of sampler states from the shader pipeline stage. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index into a zero-based array to begin getting samplers from (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). - Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). - Array of sampler-state interface pointers (see ) to be returned by the device. - void PSGetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) - - - - Get the constant buffers used by the shader pipeline stage. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). - Number of buffers to retrieve (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). - Array of constant buffer interface pointers (see ) to be returned by the method. - void PSGetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) - - - - Bind an array of shader resources to the shader stage. - - - If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). - Array of {{shader resource view}} interfaces to set to the device. - void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - - - - Bind an array of shader resources to the shader stage. - - - If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). - Array of {{shader resource view}} interfaces to set to the device. - void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - - - - Set an array of sampler states to the shader pipeline stage. - - - Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D10_FILTER_MIN_MAG_MIP_LINEARAddressUD3D10_TEXTURE_ADDRESS_CLAMPAddressVD3D10_TEXTURE_ADDRESS_CLAMPAddressWD3D10_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D10_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). - Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). - Pointer to an array of sampler-state interfaces (see ). See Remarks. - void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - - - - Set an array of sampler states to the shader pipeline stage. - - - Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D10_FILTER_MIN_MAG_MIP_LINEARAddressUD3D10_TEXTURE_ADDRESS_CLAMPAddressVD3D10_TEXTURE_ADDRESS_CLAMPAddressWD3D10_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D10_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). - Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). - Pointer to an array of sampler-state interfaces (see ). See Remarks. - void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - - - - Set the constant buffers used by the shader pipeline stage. - - - The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). - Number of buffers to set (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). - Array of constant buffers (see ) being given to the device. - void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - - - - Set the constant buffers used by the shader pipeline stage. - - - The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). - Number of buffers to set (ranges from 0 to D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). - Array of constant buffers (see ) being given to the device. - void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - - - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Constructor for a D3D10 Device. See for more information. - - - - - - Constructor for a D3D10 Device. See for more information. - - - - - - Constructor for a D3D10 Device. See for more information. - - - - - - - Constructor for a D3D10 Device. See for more information. - - - - - - - Initializes a new instance of the class along with a new used for rendering. - - The type of device to create. - A list of runtime layers to enable. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - Initializes a new instance of the class along with a new used for rendering. - - The video adapter on which the device should be created. - A list of runtime layers to enable. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type. - - - - - Get the type, name, units of measure, and a description of an existing counter. - - The counter description. - Description of the counter - - - - Get the rendering predicate state. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - a boolean to fill with the predicate comparison value. FALSE upon device creation. - a reference to a predicate (see ). - void ID3D10Device::GetPredication([Out, Optional] ID3D10Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue) - - - - Give a device access to a shared resource created on a different Direct3d device. - - The type of the resource we are gaining access to. - A resource handle. See remarks. - - This method returns a reference to the resource we are gaining access to. - - - To share a resource between two Direct3D 10 devices the resource must have been created with the flag, if it was created using the ID3D10Device interface. If it was created using the IDXGIDevice interface, then the resource is always shared. The REFIID, or GUID, of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof(ID3D10Buffer) will get the GUID of the interface to a buffer resource. When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling {{GetSharedHandle}}. - IDXGIResource* pOtherResource(NULL); - hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource ); - HANDLE sharedHandle; - pOtherResource->GetSharedHandle(&sharedHandle); - The only resources that can be shared are 2D non-mipmapped textures. To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using the pSharedHandle argument of {{CreateTexture}}. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument. The following code illustrates the method calls involved. - sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9 - pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); - ... - pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10)); - tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10)); - tempResource10->Release(); - // now use pTex2D_10 with pDevice10 - Textures being shared from D3D9 to D3D10 have the following restrictions. Textures must be 2D Only 1 mip level is allowed Texture must have default usage Texture must be write only MSAA textures are not allowed Bind flags must have SHADER_RESOURCE and RENDER_TARGET set Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed If a shared texture is updated on one device must be called on that device. - - HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] GUID* ReturnedInterface,[Out, Optional] void** ppResource) - - - - Copy the entire contents of the source resource to the destination resource using the GPU. - - - This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources: Must be different resources. Must be the same {{type}}. Must have identical dimensions (including width, height, depth, and size as appropriate). Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions. Must have compatible {{formats}}, which means the formats must be identical or at least from the same type group. For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently {{mapped}}. {{Immutable}}, and {{depth-stencil}} resources cannot be used as a destination. Resources created with {{multisampling capability}} cannot be used as either a source or destination. The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. See {{performance considerations}} for more details. An application that only needs to copy a portion of the data in a resource should use instead. Differences between Direct3D 10 and Direct3D 10.1: Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination. Direct3D 10.1 enables multisampled resources to be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to ID3D10Device::CopyResource fails. It is possible to copy between prestructured+typed resources and block-compressed textures. See {{Format Conversion using Direct3D 10.1}}. ? - - A reference to the source resource (see ). - A reference to the destination resource (see ). - void ID3D10Device::CopyResource([In] ID3D10Resource* pDstResource,[In] ID3D10Resource* pSrcResource) - - - - Copy a region from a source resource to a destination resource. - - - The source box must be within the size of the source resource. The destination location is an absolute value (not a relative value). The destination location can be offset from the source location; however, the size of the region to copy (including the destination location) must fit in the destination resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D10CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources must meet the following criteria: Must be different subresources (although they can be from the same resource). Must be the same {{type}}. Must have compatible {{formats}} (the formats must either be identical or be from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture because both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently {{mapped}}. CopySubresourceRegion supports only copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use instead. CopySubresourceRegion is an asynchronous call that the runtime can add to the command-buffer queue. This asynchronous behavior attempts to remove pipeline stalls that may occur when copying data. See {{performance considerations}} for more details. Differences between Direct3D 10 and Direct3D 10.1: Direct3D 10 has the following limitations: You cannot use a depth-stencil resource as a destination. You cannot use an immutable resource as a destination. You cannot use a multisampled texture as either a source or a destination Direct3D 10.1 has added support for the following features: You can use a depth-stencil buffer as a source or a destination. You can use multisampled resources as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to ID3D10Device::CopySubresourceRegion fails. You can copy between uncompressed and compressed resources. During copy, the format conversions that are specified in {{Format Conversion using Direct3D 10.1}} are supported automatically. The uncompressed resource must be at least prestructured, and typed. You must also account for the difference between the virtual and the physical size of the mipmap levels. ? Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. You must also pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters respectively, must have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a region (130,120),(210,240) in a destination texture. - D3D10_BOX sourceRegion; - sourceRegion.left = 120; - sourceRegion.right = 200; - sourceRegion.top = 100; - sourceRegion.bottom = 220; - sourceRegion.front = 0; - sourceRegion.back = 1; pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion ); - - Notice that, for a 2D texture, front and back are always set to 0 and 1 respectively. - - A reference to the source resource (see ). - index of the source. - A 3D box (see ) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. - A reference to the destination resource (see ). - index of the destination. - The x coordinate of the upper left corner of the destination region. - The y coordinate of the upper left corner of the destination region. - The z coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. - void ID3D10Device::CopySubresourceRegion([In] ID3D10Resource* pDstResource,[In] int DstSubresource,[In] int DstX,[In] int DstY,[In] int DstZ,[In] ID3D10Resource* pSrcResource,[In] int SrcSubresource,[In, Optional] const D3D10_BOX* pSrcBox) - - - - Copy a multisampled resource into a non-multisampled resource. This API is most useful when re-using the resulting render target of one render pass as an input to a second render pass. - - - Both the source and destination resources must be the same {{resource type}} and have the same dimensions. The source and destination must have compatible formats. There are three scenarios for this: ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and destination must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT or DXGI_FORMAT_R32_UINT could be specified in the Format parameter). ? - - Source resource. Must be multisampled. - The source subresource of the source resource. - Destination resource. Must be a created with the flag and be single-sampled. See . - A zero-based index, that identifies the destination subresource. See {{D3D10CalcSubresource}} for more details. - that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks. - void ID3D10Device::ResolveSubresource([In] ID3D10Resource* pDstResource,[In] int DstSubresource,[In] ID3D10Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format) - - - - Copies data from the CPU to to a non-mappable subresource region. - - Type of the data to upload - A reference to the data to upload. - The destination resource. - The destination subresource. - The row pitch. - The depth pitch. - - - - Copies data from the CPU to to a non-mappable subresource region. - - Type of the data to upload - A reference to the data to upload. - The destination resource. - The destination subresource. - The row pitch. - The depth pitch. - - - - Copies data from the CPU to to a non-mappable subresource region. - - The source data. - The destination resource. - The destination subresource. - - - - Copies data from the CPU to to a non-mappable subresource region. - - The source data. - The destination resource. - The destination subresource. - The destination region within the resource. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - Update nested inner interfaces pointer - - - -

Draw indexed, non-instanced primitives.

-
-

Number of indices to draw.

-

Index of the first index to use when accesssing the vertex buffer; begin at StartIndexLocation to index vertices from the vertex buffer.

-

Offset from the start of the vertex buffer to the first vertex.

- -

A draw API submits work to the rendering pipeline.

If the sum of both indices is negative, the result of the function call is undefined.

-
- - bb173565 - void ID3D10Device::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation) - ID3D10Device::DrawIndexed -
- - -

Draw non-indexed, non-instanced primitives.

-
-

Number of vertices to draw.

-

Index of the first vertex, which is usually an offset in a vertex buffer; it could also be used as the first vertex id generated for a shader parameter marked with the SV_TargetId?system-value semantic.

- -

A draw API submits work to the rendering pipeline.

The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has vertex data marked with the SV_VertexId?system-value semantic.

-
- - bb173563 - void ID3D10Device::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation) - ID3D10Device::Draw -
- - -

Draw indexed, instanced primitives.

-
-

Size of the index buffer used in each instance.

-

Number of instances to draw.

-

Index of the first index.

-

Index of the first vertex. The index is signed, which allows a negative index. If the negative index plus the index value from the index buffer are less than 0, the result is undefined.

-

Index of the first instance.

- -

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data. For an example of instancing, see the Instancing10 Sample.

-
- - bb173566 - void ID3D10Device::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation) - ID3D10Device::DrawIndexedInstanced -
- - -

Draw non-indexed, instanced primitives.

-
-

Number of vertices to draw.

-

Number of instances to draw.

-

Index of the first vertex.

-

Index of the first instance.

- -

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. For an example of instancing, see the Instancing10 Sample.

The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).

-
- - bb173567 - void ID3D10Device::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation) - ID3D10Device::DrawInstanced -
- - -

Set a rendering predicate.

-
-

Pointer to a predicate (see ). A null value indicates "no" predication; in this case, the value of PredicateValue is irrelevent but will be preserved for .

-

If TRUE, rendering will be affected by when the predicate's conditions are met. If , rendering will be affected when the conditions are not met.

- -

The predicate must be in the "issued" or "signaled" state to be used for predication. While the predicate is set for predication, calls to and are invalid.

This method is used to denote that subsequent rendering and resource manipulation commands are not actually performed if the resulting Predicate data of the Predicate is equal to the PredicateValue. However, some Predicates are only hints, so they may not actually prevent operations from being performed.

The primary usefulness of Predication is to allow an application to issue graphics commands without taking the performance hit of spinning, waiting for to return. So, Predication can occur while returns S_FALSE. Another way to think of it: an application can also use Predication as a fallback, if it is possible that returns S_FALSE. If returns , the application can skip calling the graphics commands manually with it's own application logic.

-
- - bb173615 - void ID3D10Device::SetPredication([In, Optional] ID3D10Predicate* pPredicate,[In] BOOL PredicateValue) - ID3D10Device::SetPredication -
- - -

Draw geometry of an unknown size that was created by the geometry shader stage. See remarks.

-
- -

A draw API submits work to the rendering pipeline.

After data has been streamed out to SO stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.

The following diagram shows the DrawAuto process.

Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.

DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, and .

This API does not support indexing or instancing.

If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using .

Example of using DrawAuto can be found in the ParticlesGS Sample and PipesGS Sample.

-
- - bb173564 - void ID3D10Device::DrawAuto() - ID3D10Device::DrawAuto -
- - -

Copy a region from a source resource to a destination resource.

-
-

A reference to the destination resource (see ).

-

Subresource index of the destination.

-

The x coordinate of the upper left corner of the destination region.

-

The y coordinate of the upper left corner of the destination region.

-

The z coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero.

-

A reference to the source resource (see ).

-

Subresource index of the source.

-

A 3D box (see ) that defines the source subresource that can be copied. If null, the entire source subresource is copied. The box must fit within the source resource.

An empty box results in a no-op. A box is empty if the top value is greater than or equal to the bottom value, or the left value is greater than or equal to the right value, or the front value is greater than or equal to the back value. When the box is empty, CopySubresourceRegion doesn't perform a copy operation.

- -

The source box must be within the size of the source resource. The destination location is an absolute value (not a relative value). The destination location can be offset from the source location; however, the size of the region to copy (including the destination location) must fit in the destination resource.

If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels.

D3D10CalcSubresource is a helper function for calculating subresource indexes.

CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources must meet the following criteria:

  • Must be different subresources (although they can be from the same resource).
  • Must be the same type.
  • Must have compatible formats (the formats must either be identical or be from the same type group). For example, a texture can be copied to an texture because both of these formats are in the group. Beginning with Direct3D 10.1, CopySubresourceRegion can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • May not be currently mapped.

CopySubresourceRegion supports only copy; it does not support any stretch, color key, blend, or format conversions. Beginning with Direct3D 10.1, CopySubresourceRegion can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

If your app needs to copy an entire resource, we recommend to use instead.

CopySubresourceRegion is an asynchronous call that the runtime can add to the command-buffer queue. This asynchronous behaviorattempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details.

Differences between Direct3D 10 and Direct3D 10.1:

Direct3D 10 has the following limitations:

  • You cannot use a depth-stencil resource as a destination.
  • You cannot use an immutable resource as a destination.
  • You cannot use a multisampled texture as either a source or a destination

Direct3D 10.1 has added support for the following features:

  • You can use a depth-stencil buffer as a source or a destination.
  • You can use multisampled resources as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if the source is multisampled and the destination is not multisampled (or vice versa), the call to fails.
  • You can copy between uncompressed and compressed resources. During copy, the format conversions that are specified in Format Conversion using Direct3D 10.1 are supported automatically. The uncompressed resource must be at least prestructured, and typed. You must also account for the difference between the virtual and the physical size of the mipmaps levels.

?

Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. You must also pass 0 to the DstX, DstY, and DstZ parameters and null to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters respectively, must have identical sample count values.

-
- - bb173542 - void ID3D10Device::CopySubresourceRegion([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D10Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D10_BOX* pSrcBox) - ID3D10Device::CopySubresourceRegion -
- - -

Copy the entire contents of the source resource to the destination resource using the GPU.

-
-

A reference to the destination resource (see ).

-

A reference to the source resource (see ).

- -

This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:

  • Must be different resources.
  • Must be the same type.
  • Must have identical dimensions (including width, height, depth, and size as appropriate).
  • Must have compatible formats, which means the formats must be identical or at least from the same type group. For example, a texture can be copied to an texture since both of these formats are in the group. Beginning with Direct3D 10.1, CopyResource can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • May not be currently mapped.

CopyResource supports only copy; it does not support any stretch, color key, blend, or format conversions. Beginning with Direct3D 10.1, CopyResource can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

Immutable, and depth-stencil resources cannot be used as a destination. Resources created with multisampling capability cannot be used as either a source or destination.

The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details.

An application that only needs to copy a portion of the data in a resource should use instead.

Differences between Direct3D 10 and Direct3D 10.1:

Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination. Direct3D 10.1 enables multisampled resources to be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or one of them is multisampled and the other is not multisampled, the call to fails.

It is possible to copy between prestructured+typed resources and block-compressed textures. See Format Conversion using Direct3D 10.1.

?

-
- - bb173541 - void ID3D10Device::CopyResource([In] ID3D10Resource* pDstResource,[In] ID3D10Resource* pSrcResource) - ID3D10Device::CopyResource -
- - -

The CPU copies data from memory to a subresource created in non-mappable memory. See remarks.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - -

For a shader-constant buffer; set pDstBox to null. It is not possible to use this method to partially update a shader-constant buffer.

A resource cannot be used as a destination if:

  • the resource is created with immutable or dynamic usage.
  • the resource is created as a depth-stencil resource.
  • the resource is created with multisampling capability (see ).

When UpdateSubresource returns, the application is free to change or even free the data pointed to by pSrcData because the method has already copied/snapped away the original contents.

The performance of UpdateSubresource depends on whether or not there is contention for the destination resource. For example, contention for a vertex buffer resource occurs when the application executes a Draw call and later calls UpdateSubresource on the same vertex buffer before the Draw call is actually executed by the GPU.

  • When there is contention for the resource, UpdateSubresource will perform 2 copies of the source data. First, the data is copied by the CPU to a temporary storage space accessible by the command buffer. This copy happens before the method returns. A second copy is then performed by the GPU to copy the source data into non-mappable memory. This second copy happens asynchronously because it is executed by GPU when the command buffer is flushed.
  • When there is no resource contention, the behavior of UpdateSubresource is dependent on which is faster (from the CPU's perspective): copying the data to the command buffer and then having a second copy execute when the command buffer is flushed, or having the CPU copy the data to the final resource location. This is dependent on the architecture of the underlying system.

To better understand the source row pitch and source depth pitch parameters, consider the following illustration of a 3D volume texture.

Each block in this visual represents an element of data, and the size of each element is dependent on the resource's format. For example, if the resource format is , then the size of each element would be 128 bits, or 16 bytes. This 3D volume texture has a width of two, a height of three, and a depth of four.

To calculate the source row pitch and source depth pitch for a given resource, use the following formulas:

  • Source Row Pitch = [size of one element in bytes] * [number of elements in one row]
  • Source Depth Pitch = [Source Row Pitch] * [number of rows (height)]

In the case of this example 3D volume texture where the size of each element is 16 bytes, the formulas are as follows:

  • Source Row Pitch = 16 * 2 = 32
  • Source Depth Pitch = 16 * 2 * 3 = 96

The following illustration shows the resource as it is laid out in memory.

For example, the following code snippet shows how to specify a destination region in a 2D texture. Assume the destination texture is 512x512 and the operation will copy the data pointed to by pData to [(120,100)..(200,220)] in the destination texture. Also assume that rowPitch has been initialized with the proper value (as explained above). Front and back are set to 0 and 1 respectively, because by having front equal to back, the box is technically empty.

  destRegion;	
-            destRegion.left = 120;	
-            destRegion.right = 200;	
-            destRegion.top = 100;	
-            destRegion.bottom = 220;	
-            destRegion.front = 0;	
-            destRegion.back = 1; pd3dDevice->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
-            

The 1D case is similar. The following snippet shows how to specify a destination region in a 1D texture. Use the same assumptions as above, except that the texture is 512 in length.

  destRegion;	
-            destRegion.left = 120;	
-            destRegion.right = 200;	
-            destRegion.top = 0;	
-            destRegion.bottom = 1;	
-            destRegion.front = 0;	
-            destRegion.back = 1; pd3dDevice->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
-            

Differences between Direct3D 10 and Direct3D 10.1:

Direct3D 10.1 enables depth-stencil resources to be used as either a source or destination.

?

-
- - bb173621 - void ID3D10Device::UpdateSubresource([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D10_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - ID3D10Device::UpdateSubresource -
- - -

Set all the elements in a render target to one value.

-
-

Pointer to the render target.

-

A 4-component array that represents the color to fill the render target with.

- -

Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method. The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.

Differences between Direct3D 9 and Direct3D 10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

When using 10Level9, ClearRenderTargetView only clears the first array slice in the render target view. This can impact (for example) cube map rendering scenarios. Applications should create a render target view for each face or array slice, then clear each view individually.

-
- - bb173539 - void ID3D10Device::ClearRenderTargetView([In] ID3D10RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA) - ID3D10Device::ClearRenderTargetView -
- - -

Clears the depth-stencil resource.

-
-

Pointer to the depth stencil to be cleared.

-

Which parts of the buffer to clear. See .

-

Clear the depth buffer with this value. This value will be clamped between 0 and 1.

-

Clear the stencil buffer with this value.

- -

Differences between Direct3D 9 and Direct3D 10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

-
- - bb173538 - void ID3D10Device::ClearDepthStencilView([In] ID3D10DepthStencilView* pDepthStencilView,[In] D3D10_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil) - ID3D10Device::ClearDepthStencilView -
- - -

Generates mipmaps for the given shader resource.

-
-

A reference to an . The mipmaps will be generated for this shader resource.

- -

GenerateMips may be called on any in order to generate the lower mipmap levels. GenerateMips uses the largest mipmap level of the view to recursively generate the lower levels of the mip, stopping with the smallest level specified by the view. If the base resource was not created with and , this call has no effect.

Video adapters that support feature level 9.1 and higher support generating mipmaps if you use any of these formats:

 	
-            	
-            	
-            	
-            	
-            	
-            	
-            

Video adapters that support feature level 9.2 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature level 9.1:

 	
-            	
-            	
-            	
-            	
-            

Video adapters that support feature level 9.3 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1 and 9.2:

 	
-            DXGI_FORMAT_B4G4R4A4 (optional)	
-            

Video adapters that support feature level 10 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1, 9.2, and 9.3:

  (optional)	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-             (optional)	
-            

For all other unsupported formats, this method will silently fail.

-
- - bb173569 - void ID3D10Device::GenerateMips([In] ID3D10ShaderResourceView* pShaderResourceView) - ID3D10Device::GenerateMips -
- - -

Copy a multisampled resource into a non-multisampled resource. This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.

-
-

Destination resource. Must be a created with the flag and be single-sampled. See .

-

A zero-based index, that identifies the destination subresource. See D3D10CalcSubresource for more details.

-

Source resource. Must be multisampled.

-

The source subresource of the source resource.

-

that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks.

- -

Both the source and destination resources must be the same resource type and have the same dimensions.

The source and destination must have compatible formats. There are three scenarios for this:

ScenarioRequirements
Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter.
One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is and the typeless resource is ). The format of the typed resource must be specified in the Format parameter.
Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have ), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are then or could be specified in the Format parameter).

?

-
- - bb173607 - void ID3D10Device::ResolveSubresource([In] ID3D10Resource* pDstResource,[In] unsigned int DstSubresource,[In] ID3D10Resource* pSrcResource,[In] unsigned int SrcSubresource,[In] DXGI_FORMAT Format) - ID3D10Device::ResolveSubresource -
- - -

Get the rendering predicate state.

-
-

Address of a reference to a predicate (see ). Value stored here will be null upon device creation.

-

Address of a boolean to fill with the predicate comparison value. upon device creation.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173573 - void ID3D10Device::GetPredication([Out, Optional] ID3D10Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue) - ID3D10Device::GetPredication -
- - -

Get the reason why the device was removed.

-
-

Possible return values include:

For more detail on these return codes, see DXGI_ERROR.

- - bb173571 - HRESULT ID3D10Device::GetDeviceRemovedReason() - ID3D10Device::GetDeviceRemovedReason -
- - -

Get the exception-mode flags.

-
-

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D10_RAISE_FLAG. A default value of 0 means there are no flags.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

Set an exception-mode flag to elevate an error condition to a non-continuable exception.

Whenever an error occurs, a Direct3D device enters the DEVICEREMOVED state and if the appropriate exception flag has been set, an exception is raised. A raised exception is designed to terminate an application. Before termination, the last chance an application has to persist data is by using an UnhandledExceptionFilter (see Structured Exception Handling). In general, UnhandledExceptionFilters are leveraged to try to persist data when an application is crashing (to disk, for example). Any code that executes during an UnhandledExceptionFilter is not guaranteed to reliably execute (due to possible process corruption). Any data that the UnhandledExceptionFilter manages to persist, before the UnhandledExceptionFilter crashes again, should be treated as suspect, and therefore inspected by a new, non-corrupted process to see if it is usable.

-
- - bb173614 - HRESULT ID3D10Device::SetExceptionMode([In] unsigned int RaiseFlags) - ID3D10Device::SetExceptionMode -
- - -

Get the exception-mode flags.

-
-

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D10_RAISE_FLAG. A default value of 0 means there are no flags.

- -

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

-
- - bb173572 - unsigned int ID3D10Device::GetExceptionMode() - ID3D10Device::GetExceptionMode -
- - -

Get data from a device that is associated with a guid.

-
-

Guid associated with the data.

-

Size of the data.

-

Pointer to the data stored with the device. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

The data stored in the device is set with .

The data retrieved and the guid will typically be application-defined.

-
- - bb173574 - HRESULT ID3D10Device::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) - ID3D10Device::GetPrivateData -
- - -

Set data to a device and associate that data with a guid.

-
-

Guid associated with the data.

-

Size of the data.

-

Pointer to the data to be stored with this device. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

The data stored in the device with this method can be retrieved with .

The data and guid set with this method will typically be application-defined.

-
- - bb173616 - HRESULT ID3D10Device::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) - ID3D10Device::SetPrivateData -
- - - No documentation. - - No documentation. - No documentation. - No documentation. - - HRESULT ID3D10Device::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) - ID3D10Device::SetPrivateDataInterface - - - -

Restore all default device settings; return the device to the state it was in when it was created. This will set all set all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to null. The primitive topology will be set to UNDEFINED.

-
- - bb173540 - void ID3D10Device::ClearState() - ID3D10Device::ClearState -
- - -

Send queued-up commands in the command buffer to the GPU.

-
- -

Most applications will not need to call this method. Calling this method when not necessary will incur a performance penalty. Each call to Flush incurs a significant amount of overhead.

When Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer. Flush sends those commands to the GPU for processing. Normally, these commands are sent to the GPU automatically whenever Direct3D determines that they need to be, such as when the command buffer is full or when mapping a resource. Flush will send the commands manually.

Flush should be used when the CPU waits for an arbitrary amount of time (such as when calling Sleep, ID3DX10ThreadPump::WaitForAllItems, or WaitForVBlank.

For more information about how flushing works, see Accurately Profiling Direct3D API Calls (Direct3D 9).

-
- - bb173568 - void ID3D10Device::Flush() - ID3D10Device::Flush -
- - -

Create a buffer (vertex buffer, index buffer, or shader-constant buffer).

-
- No documentation. - No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

For example code, see:

  • Create a Vertex Buffer
  • Create an Index Buffer
-
- - bb173544 - HRESULT ID3D10Device::CreateBuffer([In] const D3D10_BUFFER_DESC* pDesc,[In, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Buffer** ppBuffer) - ID3D10Device::CreateBuffer -
- - -

Create an array of 1D textures (see Texture1D).

-
- No documentation. - No documentation. - No documentation. -

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

- -

CreateTexture1D creates a 1D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.

-
- - bb173559 - HRESULT ID3D10Device::CreateTexture1D([In] const D3D10_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture1D** ppTexture1D) - ID3D10Device::CreateTexture1D -
- - -

Create an array of 2D textures (see Texture2D).

-
- No documentation. - No documentation. - No documentation. -

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

- -

CreateTexture2D creates a 2D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.

-
- - bb173560 - HRESULT ID3D10Device::CreateTexture2D([In] const D3D10_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture2D** ppTexture2D) - ID3D10Device::CreateTexture2D -
- - -

Create a single 3D texture (see Texture3D).

-
- No documentation. - No documentation. - No documentation. -

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

- -

CreateTexture3D creates a 3D texture resource, which contains an array of 1D textures. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications may supply the data initially as part of structure pointed to by pInitialData, or it may use one of the Texturing Functions supplied by the SDK.

-
- - bb173561 - HRESULT ID3D10Device::CreateTexture3D([In] const D3D10_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D10_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D10Texture3D** ppTexture3D) - ID3D10Device::CreateTexture3D -
- - -

Create a shader-resource view for accessing data in a resource.

-
- No documentation. - No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

A resource is made up of one or more subresources, a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: VSSetShaderResources, GSSetShaderResources and PSSetShaderResources.

Since a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.

-
- - bb173558 - HRESULT ID3D10Device::CreateShaderResourceView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D10ShaderResourceView** ppSRView) - ID3D10Device::CreateShaderResourceView -
- - -

Create a render-target view for accessing resource data.

-
- No documentation. - No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

A rendertarget view can be bound to the output merger stage by calling .

-
- - bb173556 - HRESULT ID3D10Device::CreateRenderTargetView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_RENDER_TARGET_VIEW_DESC* pDesc,[Out, Fast] ID3D10RenderTargetView** ppRTView) - ID3D10Device::CreateRenderTargetView -
- - -

Create a depth-stencil view for accessing resource data.

-
- No documentation. - No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

A depth-stencil view can be bound to the output-merger stage by calling .

For more background information, see the programming guide page about depth stencils.

-
- - bb173547 - HRESULT ID3D10Device::CreateDepthStencilView([In] ID3D10Resource* pResource,[In, Optional] const D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc,[Out, Fast] ID3D10DepthStencilView** ppDepthStencilView) - ID3D10Device::CreateDepthStencilView -
- - -

Create an input-layout object to describe the input-buffer data for the input-assembler stage.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

If the method succeeds, the return code is . See Direct3D 10 Return Codes for failing error codes.

- -

After creating an input layout object, it must be bound to the input-assembler stage before calling a draw API. See Getting Started with the Input-Assembler Stage (Direct3D 10) for example code.

Once an input-layout object is created from a shader signature, the input-layout object can be reused with any other shader that has an identical input signature (semantics included). This can simplify the creation of input-layout objects when you are working with many shaders with identical inputs.

If a data type in the input-layout declaration does not match the data type in a shader-input signature, CreateInputLayout will generate a warning during compilation. The warning is simply to call attention to the fact that the data may be reinterpreted when read from a register. You may either disregard this warning (if reinterpretation is intentional) or make the data types match in both declarations to eliminate the warning. The Data Conversion Rules overview describes the rules applied for data type conversion.

Differences between Direct3D 9 and Direct3D 10:

Mapping the vertex data to the shader inputs with an input layout is a new way of doing things in Direct3D 10 that improves performance.

In Direct3D 10 the vertex data is mapped to the shader inputs when the input layout object is created, whereas in Direct3D 9 this mapping was done at Draw time based on the currently bound vertex declarations, vertex buffers, and vertex shaders. Doing this mapping when the input layout object is created reduces or eliminates extra linkage work for drivers at Draw time because this re-mapping is no longer necessary.

?

-
- - bb173550 - HRESULT ID3D10Device::CreateInputLayout([In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pInputElementDescs,[In] unsigned int NumElements,[In] const void* pShaderBytecodeWithInputSignature,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10InputLayout** ppInputLayout) - ID3D10Device::CreateInputLayout -
- - -

Create a vertex-shader object from a compiled shader.

-
-

A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.

-

Size of the compiled vertex shader.

-

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173562 - HRESULT ID3D10Device::CreateVertexShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10VertexShader** ppVertexShader) - ID3D10Device::CreateVertexShader -
- - -

Create a geometry shader.

-
-

A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.

-

Size of the compiled geometry shader.

-

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

-

This method returns one of the following Direct3D 10 Return Codes.

- -

Once created, the shader can be set to the device by calling .

-
- - bb173548 - HRESULT ID3D10Device::CreateGeometryShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10GeometryShader** ppGeometryShader) - ID3D10Device::CreateGeometryShader -
- - -

Creates a geometry shader that can write to streaming output buffers.

-
-

A reference to the compiled geometry shader for a standard geometry shader plus stream output. For info on how to get this reference, see Getting a Pointer to a Compiled Shader.

To create the stream output without using a geometry shader, pass a reference to the output signature for the prior stage. To obtain this output signature, call the compiler function. You can also pass a reference to the compiled vertex shader that is used in the prior stage. This compiled shader provides the output signature for the data.

-

Size of the compiled geometry shader.

-

Pointer to a array. Cannot be null if NumEntries> 0.

-

The number of entries in the array pointed to by pSODeclaration. Minimum 0, maximum 64.

-

The size, in bytes, of each element in the array pointed to by pSODeclaration. This parameter is only used when the output slot is 0 for all entries in pSODeclaration.

-

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

-

This method returns one of the Direct3D 10 Return Codes.

- -

For more info about using CreateGeometryShaderWithStreamOutput, see Create a Geometry-Shader Object with Stream Output.

-
- - bb173549 - HRESULT ID3D10Device::CreateGeometryShaderWithStreamOutput([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Buffer, Optional] const D3D10_SO_DECLARATION_ENTRY* pSODeclaration,[In] unsigned int NumEntries,[In] unsigned int OutputStreamStride,[Out, Fast] ID3D10GeometryShader** ppGeometryShader) - ID3D10Device::CreateGeometryShaderWithStreamOutput -
- - -

Create a pixel shader.

-
-

A reference to the compiled shader. To get this reference see Getting a Pointer to a Compiled Shader.

-

Size of the compiled pixel shader.

-

Address of a reference to an Interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

-

This method returns one of the following Direct3D 10 Return Codes.

- -

After creating the pixel shader, you can set it to the device using .

-
- - bb173551 - HRESULT ID3D10Device::CreatePixelShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D10PixelShader** ppPixelShader) - ID3D10Device::CreatePixelShader -
- - -

Create a blend-state object that encapsules blend state for the output-merger stage.

-
-

Pointer to a blend-state description (see ).

-

Address of a reference to the blend-state object created (see Interface).

-

This method returns one of the following Direct3D 10 Return Codes.

- -

An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

-
- - bb173543 - HRESULT ID3D10Device::CreateBlendState([In] const D3D10_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D10BlendState** ppBlendState) - ID3D10Device::CreateBlendState -
- - -

Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.

-
- No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

4096 unique depth-stencil state objects can be created on a device at a time.

If an application attempts to create a depth-stencil state with the same description as an already existing depth-stencil state, then the same interface with an incremented reference count will be returned and the total number of unique depth-stencil state objects will stay the same.

-
- - bb173546 - HRESULT ID3D10Device::CreateDepthStencilState([In] const D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D10DepthStencilState** ppDepthStencilState) - ID3D10Device::CreateDepthStencilState -
- - -

Create a rasterizer state object that tells the rasterizer stage how to behave.

-
- No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

4096 unique rasterizer state objects can be created on a device at a time.

If an application attempts to create a rasterizer state with the same description as an already existing rasterizer state, then the same interface with an incremented reference count will be returned and the total number of unique rasterizer state objects will stay the same.

-
- - bb173554 - HRESULT ID3D10Device::CreateRasterizerState([In] const D3D10_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D10RasterizerState** ppRasterizerState) - ID3D10Device::CreateRasterizerState -
- - -

Create a sampler-state object that encapsulates sampling information for a texture.

-
- No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

4096 unique sampler state objects can be created on a device at a time.

If an application attempts to create a sampler state with the same description as an already existing sampler state, then the same interface with an incremented reference count will be returned and the total number of unique sampler state objects will stay the same.

-
- - bb173557 - HRESULT ID3D10Device::CreateSamplerState([In] const D3D10_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D10SamplerState** ppSamplerState) - ID3D10Device::CreateSamplerState -
- - -

This interface encapsulates methods for querying information from the GPU.

-
-

Pointer to a query description (see ).

-

Address of a reference to the query object created (see ).

-

This method returns E_OUTOFMEMORY if there is insufficient memory to create the query object. See Direct3D 11 Return Codes for other possible return values.

- -

Windows?Phone?8: This API is supported.

-
- - ff476515 - HRESULT ID3D10Device::CreateQuery([In] const D3D10_QUERY_DESC* pQueryDesc,[Out, Fast] ID3D10Query** ppQuery) - ID3D10Device::CreateQuery -
- - -

Creates a predicate.

-
-

Pointer to a query description where the type of query must be a or (see ).

-

Address of a reference to a predicate (see Interface).

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173552 - HRESULT ID3D10Device::CreatePredicate([In] const D3D10_QUERY_DESC* pPredicateDesc,[Out, Fast] ID3D10Predicate** ppPredicate) - ID3D10Device::CreatePredicate -
- - -

Create a counter object for measuring GPU performance.

-
-

Pointer to a counter description (see ).

-

Address of a reference to a counter (see Interface).

-

If this function succeeds, it will return . If it fails, possible return values are: S_FALSE, E_OUTOFMEMORY, , , or E_INVALIDARG.

is returned whenever the application requests to create a well-known counter, but the current device does not support it.

indicates that another device object is currently using the counters, so they cannot be used by this device at the moment.

E_INVALIDARG is returned whenever an out-of-range well-known or device-dependent counter is requested, or when the simulataneously active counters have been exhausted.

- - bb173545 - HRESULT ID3D10Device::CreateCounter([In] const D3D10_COUNTER_DESC* pCounterDesc,[Out, Fast] ID3D10Counter** ppCounter) - ID3D10Device::CreateCounter -
- - -

Get the support of a given format on the installed video device.

-
-

A enumeration that describes a format for which to check for support.

-

A bitfield of enumeration values describing how the specified format is supported on the installed device. The values are ORed together.

- -

Most format support is based on the Direct3D feature level. Only a few specific use cases require checking for support. See Hardware Support for Direct3D 10 Formats and Hardware Support for Direct3D 10.1 Formats for additional information.

-
- - bb173536 - HRESULT ID3D10Device::CheckFormatSupport([In] DXGI_FORMAT Format,[Out] D3D10_FORMAT_SUPPORT* pFormatSupport) - ID3D10Device::CheckFormatSupport -
- - -

Get the number of quality levels available during multisampling.

-
-

The texture format. See .

-

The number of samples during multisampling.

-

Number of quality levels supported by the adapter. See remarks.

- -

When multisampling a texture, the number of quality levels available for an adapter is dependent on the texture format used and the number of samples requested. The maximum sample count defined by D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT in d3d10.h is 32. If the returned value of pNumQualityLevels is 0, the format and sample count combination is not supported for the installed adapter.

Furthermore, the definition of a quality level is up to each hardware vendor to define, however no facility is provided by Direct3D to help discover this information.

Direct3D 10.1 devices are required to support 4x MSAA for all formats except R32G32B32A32 and R32G32B32 formats.

-
- - bb173537 - HRESULT ID3D10Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels) - ID3D10Device::CheckMultisampleQualityLevels -
- - -

Get a counter's information.

-
- - bb173535 - void ID3D10Device::CheckCounterInfo([Out] D3D10_COUNTER_INFO* pCounterInfo) - ID3D10Device::CheckCounterInfo -
- - -

Get the type, name, units of measure, and a description of an existing counter.

-
-

Pointer to a counter description (see ). Specifies which counter information is to be retrieved about.

-

Pointer to the data type of a counter (see ). Specifies the data type of the counter being retrieved.

-

Pointer to the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.

-

String to be filled with a brief name for the counter. May be null if the application is not interested in the name of the counter.

-

Length of the string returned to szName. Can be null.

-

Name of the units a counter measures, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

-

Length of the string returned to szUnits. Can be null.

-

A description of the counter, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

-

Length of the string returned to szDescription. Can be null.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

Length parameters can be null, which indicates the application is not interested in the length nor the corresponding string value. When a length parameter is non-null and the corresponding string is null, the input value of the length parameter is ignored, and the length of the corresponding string (including terminating null) will be returned through the length parameter. When length and the corresponding parameter are both non-null, the input value of length is checked to ensure there is enough room, and then the length of the string (including terminating null character) is passed out through the length parameter.

-
- - bb173534 - HRESULT ID3D10Device::CheckCounter([In] const D3D10_COUNTER_DESC* pDesc,[Out] D3D10_COUNTER_TYPE* pType,[Out] unsigned int* pActiveCounters,[Out, Buffer, Optional] char* szName,[InOut, Optional] unsigned int* pNameLength,[Out, Buffer, Optional] char* szUnits,[InOut, Optional] unsigned int* pUnitsLength,[Out, Buffer, Optional] char* szDescription,[InOut, Optional] unsigned int* pDescriptionLength) - ID3D10Device::CheckCounter -
- - -

Get the flags used during the call to create the device with .

-
-

A bitfield containing the flags used to create the device. See .

- - bb173570 - unsigned int ID3D10Device::GetCreationFlags() - ID3D10Device::GetCreationFlags -
- - -

Give a device access to a shared resource created on a different Direct3d device.

-
-

A resource handle. See remarks.

-

The globally unique identifier () for the resource interface. See remarks.

-

Address of a reference to the resource we are gaining access to.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

To share a resource between two Direct3D 10 devices the resource must have been created with the flag, if it was created using the interface. If it was created using the interface, then the resource is always shared.

The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling GetSharedHandle.

 * pOtherResource(null);	
-            hr = pOtherDeviceResource->QueryInterface( __uuidof(), (void**)&pOtherResource );	
-            HANDLE sharedHandle;	
-            pOtherResource->GetSharedHandle(&sharedHandle); 

The only resources that can be shared are 2D non-mipmapped textures.

To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using the pSharedHandle argument of CreateTexture. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument.

The following code illustrates the method calls involved.

 sharedHandle = null; // must be set to null to create, can use a valid handle here to open in D3D9 	
-            pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); 	
-            ... 	
-            pDevice10->OpenSharedResource(sharedHandle, __uuidof(), (void**)(&tempResource10)); 	
-            tempResource10->QueryInterface(__uuidof(), (void**)(&pTex2D_10)); 	
-            tempResource10->Release(); 	
-            // now use pTex2D_10 with pDevice10    

Textures being shared from D3D9 to D3D10 have the following restrictions.

  • Textures must be 2D
  • Only 1 mip level is allowed
  • Texture must have default usage
  • Texture must be write only
  • MSAA textures are not allowed
  • Bind flags must have SHADER_RESOURCE and RENDER_TARGET set
  • Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed

If a shared texture is updated on one device must be called on that device.

-
- - bb173598 - HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] const GUID& ReturnedInterface,[Out, Optional] void** ppResource) - ID3D10Device::OpenSharedResource -
- - - Get the flags used during the call to create the device with . - - A bitfield containing the flags used to create the device. See . - int ID3D10Device::GetCreationFlags() - - - - Gets or sets the debug-name for this object. - - - The debug name. - - - - Inner interface giving access to VertexShaderStage methods. - - - Inner interface giving access to PixelShaderStage methods. - - - Inner interface giving access to InputAssemblerStage methods. - - - Inner interface giving access to GeometryShaderStage methods. - - - Inner interface giving access to OutputMergerStage methods. - - - Inner interface giving access to StreamOutputStage methods. - - - Inner interface giving access to RasterizerStage methods. - - - -

Get the reason why the device was removed.

-
- - bb173571 - GetDeviceRemovedReason - GetDeviceRemovedReason - HRESULT ID3D10Device::GetDeviceRemovedReason() -
- - -

Get or sets the exception-mode flags.

-
- -

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

-
- - bb173572 - GetExceptionMode / SetExceptionMode - GetExceptionMode - unsigned int ID3D10Device::GetExceptionMode() -
- - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Set the target output {{buffers}} for the {{StreamOutput}} stage, which enables/disables the pipeline to stream-out data. - - - Call ID3D10Device::SOSetTargets (before any draw calls) to stream data out; call SOSetTargets with NULL to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output render targets before calling draw methods in the RenderInstanceToStream function. An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. Calling this method using a buffer that is currently bound for writing will effectively bind NULL instead because a buffer cannot be bound as both an input and an output at the same time. The {{DeviceDebug Layer}} will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime. The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device. - - an array of output buffers (see ) to bind to the device. The buffers must have been created with the flag. - void SOSetTargets([In] int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const int* pOffsets) - - - - Get the target output {{buffers}} for the {{StreamOutput}} stage of the pipeline. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Number of buffers to get. A maximum of four output buffers can be retrieved. - an array of output buffers (see ) to bind to the device. - void SOGetTargets([In] int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] int* pOffsets) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the target output buffers for the StreamOutput stage, which enables/disables the pipeline to stream-out data.

-
- No documentation. - No documentation. - No documentation. - -

Call (before any draw calls) to stream data out; call SOSetTargets with null to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function.

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173620 - void ID3D10Device::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) - ID3D10Device::SOSetTargets -
- - -

Set the target output buffers for the StreamOutput stage, which enables/disables the pipeline to stream-out data.

-
- No documentation. - No documentation. - No documentation. - -

Call (before any draw calls) to stream data out; call SOSetTargets with null to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function.

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The Debug Layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173620 - void ID3D10Device::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) - ID3D10Device::SOSetTargets -
- - -

Get the target output buffers for the StreamOutput stage of the pipeline.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173619 - void ID3D10Device::SOGetTargets([In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] unsigned int* pOffsets) - ID3D10Device::SOGetTargets -
- - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Get references to the render targets that are available to the {{output-merger stage}}. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - a depth-stencil view (see ) to be filled with the depth-stencil information from the device. - void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) - - - - Get references to the render targets that are available to the {{output-merger stage}}. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Number of render targets to retrieve. - an array of render targets views (see ) to be filled with the render targets from the device. - void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) - - - - Get references to the render targets and the depth-stencil buffer that are available to the {{output-merger stage}}. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Number of render targets to retrieve. - Pointer to a depth-stencil view (see ) to be filled with the depth-stencil information from the device. - an array of render targets views (see ) to be filled with the render targets from the device. - void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) - - - - Get the {{blend state}} of the output-merger stage. - - - The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak. - - Array of blend factors, one for each RGBA component. - Pointer to a {{sample mask}}. - a reference to a blend-state interface (see ). - void OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] float BlendFactor[4],[Out, Optional] int* pSampleMask) - - - - Gets the {{depth-stencil}} state of the output-merger stage. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Pointer to the stencil reference value used in the {{depth-stencil}} test. - a reference to a depth-stencil state interface (see ) to be filled with information from the device. - void OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] int* pStencilRef) - - - - Binds a set of render targets to the output-merger stage. - - A set of render target views to bind. - - - - Binds a single render target to the output-merger stage. - - A view of the render target to bind. - - - - Binds a depth-stencil buffer and a set of render targets to the output-merger stage. - - A view of the depth-stencil buffer to bind. - A set of render target views to bind. - - - - Binds a depth-stencil buffer and a single render target to the output-merger stage. - - A view of the depth-stencil buffer to bind. - A view of the render target to bind. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind one or more render targets and the depth-stencil buffer to the output-merger stage.

-
- No documentation. - No documentation. - No documentation. - -

A call to OMSetRenderTargets overrides all bounded render targets and the depth stencil target regardless of the number of render targets in ppRenderTargetViews.

The maximum number of render targets a device can have active at any given time is set by a #define in D3D10.h called D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.

If any subresources are also currently bound for reading or writing (perhaps in a different part of the pipeline), those bind points will be null'ed out to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

See Binding Resources and Pipeline stages for more information on binding resources.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- - bb173597 - void ID3D10Device::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D10RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D10DepthStencilView* pDepthStencilView) - ID3D10Device::OMSetRenderTargets -
- - -

Bind one or more render targets and the depth-stencil buffer to the output-merger stage.

-
- No documentation. - No documentation. - No documentation. - -

A call to OMSetRenderTargets overrides all bounded render targets and the depth stencil target regardless of the number of render targets in ppRenderTargetViews.

The maximum number of render targets a device can have active at any given time is set by a #define in D3D10.h called D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots.

If any subresources are also currently bound for reading or writing (perhaps in a different part of the pipeline), those bind points will be null'ed out to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

See Binding Resources and Pipeline stages for more information on binding resources.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- - bb173597 - void ID3D10Device::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D10RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D10DepthStencilView* pDepthStencilView) - ID3D10Device::OMSetRenderTargets -
- - -

Set the blend state of the output-merger stage.

-
- No documentation. - No documentation. - No documentation. - -

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

To create a blend-state interface, call .

Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.

StateDefault Value
AlphaToCoverageEnable
BlendEnable[8]
SrcBlend
DstBlend
BlendOp
SrcBlendAlpha
DstBlendAlpha
BlendOpAlpha
RenderTargetWriteMask[8][8]

?

A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173595 - void ID3D10Device::OMSetBlendState([In, Optional] ID3D10BlendState* pBlendState,[In] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) - ID3D10Device::OMSetBlendState -
- - -

Sets the depth-stencil state of the output-merger stage.

-
- No documentation. - No documentation. - -

To create a depth-stencil state interface, call .

Depth-stencil state is used by the output-merger stage to setup depth-stencil testing. The stencil reference value is the control value used in the depth-stencil test.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173596 - void ID3D10Device::OMSetDepthStencilState([In, Optional] ID3D10DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef) - ID3D10Device::OMSetDepthStencilState -
- - -

Get references to the render targets and the depth-stencil buffer that are available to the output-merger stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173594 - void ID3D10Device::OMGetRenderTargets([In] unsigned int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) - ID3D10Device::OMGetRenderTargets -
- - -

Get the blend state of the output-merger stage.

-
- No documentation. - No documentation. - No documentation. - -

The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak.

-
- - bb173592 - void ID3D10Device::OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] SHARPDX_COLOR4* BlendFactor,[Out, Optional] unsigned int* pSampleMask) - ID3D10Device::OMGetBlendState -
- - -

Gets the depth-stencil state of the output-merger stage.

-
- No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173593 - void ID3D10Device::OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] unsigned int* pStencilRef) - ID3D10Device::OMGetDepthStencilState -
- - - Gets or sets the blend factor. - - The blend factor. - - - - Gets or sets the blend sample mask. - - The blend sample mask. - - - - Gets or sets the state of the blend. - - The state of the blend. - - - - Gets or sets the depth stencil reference. - - The depth stencil reference. - - - - Gets or sets the state of the depth stencil. - - The state of the depth stencil. - - - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Get the array of {{viewports}} bound to the {{rasterizer stage}} - - An array of viewports (see ). - void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) - - - - Get the array of {{viewports}} bound to the {{rasterizer stage}} - - An array of viewports (see ). - void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) - - - - Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. - - An array of scissor rectangles (see ). - void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) - - - - Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. - - An array of scissor rectangles (see ). - void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) - - - - Binds a single scissor rectangle to the rasterizer stage. - - The scissor rectangle to bind. - - - - Binds a set of scissor rectangles to the rasterizer stage. - - The set of scissor rectangles to bind. - - - - Binds a set of viewports to the rasterizer stage. - - The set of viewports to bind. - - - - Binds a single viewport to the rasterizer stage. - - The viewport to bind. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the rasterizer state for the rasterizer stage of the pipeline.

-
- No documentation. - -

To create a rasterizer state interface, call . For more details on setting up the rasterizer state, see Set Rasterizer State.

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173612 - void ID3D10Device::RSSetState([In, Optional] ID3D10RasterizerState* pRasterizerState) - ID3D10Device::RSSetState -
- - -

Bind an array of viewports to the rasterizer stage of the pipeline.

-
- No documentation. - No documentation. - -

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first viewport in the array.

-
- - bb173613 - void ID3D10Device::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const D3D10_VIEWPORT* pViewports) - ID3D10Device::RSSetViewports -
- - -

Bind an array of scissor rectangles to the rasterizer stage.

-
- No documentation. - No documentation. - -

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

-
- - bb173611 - void ID3D10Device::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const RECT* pRects) - ID3D10Device::RSSetScissorRects -
- - -

Get the rasterizer state from the rasterizer stage of the pipeline.

-
- No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173609 - void ID3D10Device::RSGetState([Out] ID3D10RasterizerState** ppRasterizerState) - ID3D10Device::RSGetState -
- - -

Get the array of viewports bound to the rasterizer stage

-
- No documentation. - No documentation. - - bb173610 - void ID3D10Device::RSGetViewports([InOut] unsigned int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) - ID3D10Device::RSGetViewports -
- - -

Get the array of scissor rectangles bound to the rasterizer stage.

-
- No documentation. - No documentation. - - bb173608 - void ID3D10Device::RSGetScissorRects([InOut] unsigned int* NumRects,[Out, Buffer, Optional] RECT* pRects) - ID3D10Device::RSGetScissorRects -
- - -

Get or sets the rasterizer state from the rasterizer stage of the pipeline.

-
- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173609 - RSGetState / RSSetState - RSGetState - void ID3D10Device::RSGetState([Out] ID3D10RasterizerState** ppRasterizerState) -
- - -

The device interface represents a virtual adapter for Direct3D 10.1; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

This method requires Windows Vista Service Pack 1.

-
- - bb694546 - ID3D10Device1 - ID3D10Device1 -
- - - Constructor for a D3D10.1 Device. See for more information. - - - - - - Constructor for a D3D10.1 Device. See for more information. - - - - - - Constructor for a D3D10.1 Device. See for more information. - - - - - - - Constructor for a D3D10.1 Device. See for more information. - - - - - - - Constructor for a D3D10.1 Device. See for more information. - - - - - - - - Constructor for a D3D10.1 Device. See for more information. - - - - - - - - Initializes a new instance of the class along with a new used for rendering. - - The type of device to create. - A list of runtime layers to enable. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - Initializes a new instance of the class along with a new used for rendering. - - The video adapter on which the device should be created. - A list of runtime layers to enable. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - Initializes a new instance of the class along with a new used for rendering. - - The type of device to create. - A list of runtime layers to enable. - Details used to create the swap chain. - Desired feature level - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - Initializes a new instance of the class along with a new used for rendering. - - The video adapter on which the device should be created. - A list of runtime layers to enable. - Details used to create the swap chain. - Desired feature level - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type. - - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Create a shader-resource view for accessing data in a resource.

-
- No documentation. - No documentation. - No documentation. -

This method returns one of the following Direct3D 10 Return Codes.

- -

A resource is made up of one or more subresources, a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: VSSetShaderResources, GSSetShaderResources and PSSetShaderResources.

Since a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.

This method requires Windows Vista Service Pack 1.

-
- - bb694548 - HRESULT ID3D10Device1::CreateShaderResourceView1([In] ID3D10Resource* pResource,[In, Optional] const D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc,[Out, Fast] ID3D10ShaderResourceView1** ppSRView) - ID3D10Device1::CreateShaderResourceView1 -
- - -

Create a blend-state object that encapsules blend state for the output-merger stage.

-
-

Pointer to a blend-state description (see ).

-

Address of a reference to the blend-state object created (see Interface).

-

This method returns one of the following Direct3D 10 Return Codes.

- -

An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

This method requires Windows Vista Service Pack 1.

-
- - bb694547 - HRESULT ID3D10Device1::CreateBlendState1([In] const D3D10_BLEND_DESC1* pBlendStateDesc,[Out, Fast] ID3D10BlendState1** ppBlendState) - ID3D10Device1::CreateBlendState1 -
- - -

Gets the feature level of the hardware device.

-
-

The feature level (see ).

- -

This method requires Windows Vista Service Pack 1.

-
- - bb694549 - D3D10_FEATURE_LEVEL1 ID3D10Device1::GetFeatureLevel() - ID3D10Device1::GetFeatureLevel -
- - -

Gets the feature level of the hardware device.

-
- -

This method requires Windows Vista Service Pack 1.

-
- - bb694549 - GetFeatureLevel - GetFeatureLevel - D3D10_FEATURE_LEVEL1 ID3D10Device1::GetFeatureLevel() -
- - -

An interface manages a set of state objects, resources, and shaders for implementing a rendering effect.

-
- -

An effect is created by calling .

The effect system groups the information required for rendering into an effect which contains: state objects for assigning state changes in groups, resources for supplying input data and storing output data, and programs that control how the rendering is done called shaders. For more information, see Effects (Direct3D 10).

Note??

If you call QueryInterface on an object to retrieve the interface, QueryInterface returns E_NOINTERFACE. To work around this issue, use the following code:

 * pIUnknown = (*)pEffect; pIUnknown->AddRef();	
-            
-
- - bb173630 - ID3D10Effect - ID3D10Effect -
- - - Initializes a new instance of the class. - - The device. - The effect byte code. - Effect compile options - Optional. A reference to an memory space for effect variables that are shared across effects (see ). - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Test an effect to see if it contains valid syntax.

-
-

TRUE if the code syntax is valid; otherwise .

- - bb173772 - BOOL ID3D10Effect::IsValid() - ID3D10Effect::IsValid -
- - -

Test an effect to see if it is part of a memory pool.

-
-

TRUE if the effect is pooled; otherwise . See Interface.

- - bb173771 - BOOL ID3D10Effect::IsPool() - ID3D10Effect::IsPool -
- - -

Get the device that created the effect.

-
-

A reference to an Interface.

-

Returns one of the following Direct3D 10 Return Codes.

- -

An effect is created for a specific device, by calling a function such as .

-
- - bb173764 - HRESULT ID3D10Effect::GetDevice([Out] ID3D10Device** ppDevice) - ID3D10Effect::GetDevice -
- - -

Get an effect description.

-
-

A reference to an effect description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- -

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

-
- - bb173763 - HRESULT ID3D10Effect::GetDesc([Out] D3D10_EFFECT_DESC* pDesc) - ID3D10Effect::GetDesc -
- - -

Get a constant buffer by index.

-
-

A zero-based index.

-

A reference to a Interface.

- -

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

-
- - bb173761 - ID3D10EffectConstantBuffer* ID3D10Effect::GetConstantBufferByIndex([In] unsigned int Index) - ID3D10Effect::GetConstantBufferByIndex -
- - -

Get a constant buffer by name.

-
-

The constant-buffer name.

-

A reference to the constant buffer indicated by the Name. See .

- -

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

-
- - bb173762 - ID3D10EffectConstantBuffer* ID3D10Effect::GetConstantBufferByName([In] const char* Name) - ID3D10Effect::GetConstantBufferByName -
- - -

Get a variable by index.

-
-

A zero-based index.

-

A reference to a Interface.

- -

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access any local non-static effect variable using its name or with an index.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the index exists.

-
- - bb173767 - ID3D10EffectVariable* ID3D10Effect::GetVariableByIndex([In] unsigned int Index) - ID3D10Effect::GetVariableByIndex -
- - -

Get a variable by name.

-
-

The variable name.

-

A reference to an Interface.

- -

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access an effect variable using its name or with an index.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the name exists.

-
- - bb173768 - ID3D10EffectVariable* ID3D10Effect::GetVariableByName([In] const char* Name) - ID3D10Effect::GetVariableByName -
- - -

Get a variable by semantic.

-
-

The semantic name.

-

A reference to the effect variable indicated by the Semantic. See Interface.

- -

Each effect variable can have a semantic attached, which is a user defined metadata string. Some system-value semantics are reserved words that trigger built in functionality by pipeline stages.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the semantic exists.

-
- - bb173769 - ID3D10EffectVariable* ID3D10Effect::GetVariableBySemantic([In] const char* Semantic) - ID3D10Effect::GetVariableBySemantic -
- - -

Get a technique by index.

-
-

A zero-based index.

-

A reference to an Interface.

- -

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index. For more about techniques, see techniques and passes.

-
- - bb173765 - ID3D10EffectTechnique* ID3D10Effect::GetTechniqueByIndex([In] unsigned int Index) - ID3D10Effect::GetTechniqueByIndex -
- - -

Get a technique by name.

-
-

The name of the technique.

-

A reference to an Interface, or null if the technique is not found.

- -

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index. For more about techniques, see techniques and passes.

-
- - bb173766 - ID3D10EffectTechnique* ID3D10Effect::GetTechniqueByName([In] const char* Name) - ID3D10Effect::GetTechniqueByName -
- - -

Minimize the amount of memory required for an effect.

-
-

Returns one of the following Direct3D 10 Return Codes.

- -

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. API methods to read variables will no longer work once reflection data has been removed.

The following methods will fail after Optimize has been called on an effect.

Note that references retrieved with these methods before calling are still valid after is called. This allows the application to get all the variables, techniques, and passes it will use, call Optimize, and then use the effect.

-
- - bb173773 - HRESULT ID3D10Effect::Optimize() - ID3D10Effect::Optimize -
- - -

Test an effect to see if the reflection metadata has been removed from memory.

-
-

TRUE if the effect is optimized; otherwise .

- -

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

-
- - bb173770 - BOOL ID3D10Effect::IsOptimized() - ID3D10Effect::IsOptimized -
- - -

Test an effect to see if it contains valid syntax.

-
- - bb173772 - IsValid - IsValid - BOOL ID3D10Effect::IsValid() -
- - -

Test an effect to see if it is part of a memory pool.

-
- - bb173771 - IsPool - IsPool - BOOL ID3D10Effect::IsPool() -
- - -

Get the device that created the effect.

-
- -

An effect is created for a specific device, by calling a function such as .

-
- - bb173764 - GetDevice - GetDevice - HRESULT ID3D10Effect::GetDevice([Out] ID3D10Device** ppDevice) -
- - -

Get an effect description.

-
- -

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

-
- - bb173763 - GetDesc - GetDesc - HRESULT ID3D10Effect::GetDesc([Out] D3D10_EFFECT_DESC* pDesc) -
- - -

Test an effect to see if the reflection metadata has been removed from memory.

-
- -

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

-
- - bb173770 - IsOptimized - IsOptimized - BOOL ID3D10Effect::IsOptimized() -
- - -

The blend-variable interface accesses blend state.

-
- -

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

-
- - bb173631 - ID3D10EffectBlendVariable - ID3D10EffectBlendVariable -
- - -

The interface is the base class for all effect variables.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- - bb173724 - ID3D10EffectVariable - ID3D10EffectVariable -
- - - Set data. - - A reference to the variable. - size in bytes of data to write. - - Returns one of the following {{Direct3D 10 Return Codes}}. - - - This method does no conversion or type checking; it is therefore a very quick way to access array items. - - HRESULT ID3D10EffectVariable::SetRawValue([None] void* pData,[None] int Offset,[None] int Count) - - - - Get data. - - - This method does no conversion or type checking; it is therefore a very quick way to access array items. - - The number of bytes to get. - Returns a filled with the value. - HRESULT ID3D10EffectVariable::GetRawValue([None] void* pData,[None] int Offset,[None] int Count) - - - - Get a scalar variable. - - - AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a scalar variable. See . - ID3D10EffectScalarVariable* ID3D10EffectVariable::AsScalar() - - - - Get a vector variable. - - - AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a vector variable. See . - ID3D10EffectVectorVariable* ID3D10EffectVariable::AsVector() - - - - Get a matrix variable. - - - AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a matrix variable. See . - ID3D10EffectMatrixVariable* ID3D10EffectVariable::AsMatrix() - - - - Get a string variable. - - - AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a string variable. See . - ID3D10EffectStringVariable* ID3D10EffectVariable::AsString() - - - - Get a shader-resource variable. - - - AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a shader-resource variable. See . - ID3D10EffectShaderResourceVariable* ID3D10EffectVariable::AsShaderResource() - - - - Get a render-target-view variable. - - - This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a render-target-view variable. See . - ID3D10EffectRenderTargetViewVariable* ID3D10EffectVariable::AsRenderTargetView() - - - - Get a depth-stencil-view variable. - - - This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a depth-stencil-view variable. See . - ID3D10EffectDepthStencilViewVariable* ID3D10EffectVariable::AsDepthStencilView() - - - - Get a constant buffer. - - - AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a constant buffer. See . - ID3D10EffectConstantBuffer* ID3D10EffectVariable::AsConstantBuffer() - - - - Get a shader variable. - - - AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a shader variable. See . - ID3D10EffectShaderVariable* ID3D10EffectVariable::AsShader() - - - - Get a effect-blend variable. - - - AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to an effect blend variable. See . - ID3D10EffectBlendVariable* ID3D10EffectVariable::AsBlend() - - - - Get a depth-stencil variable. - - - AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a depth-stencil variable. See . - ID3D10EffectDepthStencilVariable* ID3D10EffectVariable::AsDepthStencil() - - - - Get a rasterizer variable. - - - AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a rasterizer variable. See . - ID3D10EffectRasterizerVariable* ID3D10EffectVariable::AsRasterizer() - - - - Get a sampler variable. - - - AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a sampler variable. See . - ID3D10EffectSamplerVariable* ID3D10EffectVariable::AsSampler() - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Compare the data type with the data stored.

-
-

TRUE if the syntax is valid; otherwise .

- -

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

-
- - bb173746 - BOOL ID3D10EffectVariable::IsValid() - ID3D10EffectVariable::IsValid -
- - -

Get type information.

-
-

A reference to an Interface.

- - bb173745 - ID3D10EffectType* ID3D10EffectVariable::GetType() - ID3D10EffectVariable::GetType -
- - -

Get a description.

-
-

A reference to an effect-variable description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173738 - HRESULT ID3D10EffectVariable::GetDesc([Out] D3D10_EFFECT_VARIABLE_DESC* pDesc) - ID3D10EffectVariable::GetDesc -
- - -

Get an annotation by index.

-
-

A zero-based index.

-

A reference to an Interface.

- -

Annonations can be attached to a technique, a pass or a gloval variable. For the syntax, see Annotation Syntax (Direct3D 10).

-
- - bb173736 - ID3D10EffectVariable* ID3D10EffectVariable::GetAnnotationByIndex([In] unsigned int Index) - ID3D10EffectVariable::GetAnnotationByIndex -
- - -

Get an annotation by name.

-
-

The annotation name.

-

A reference to an Interface. Note that if the annotation is not found the Interface returned will be empty. The method should be called to determine whether the annotation was found.

- -

Annonations can be attached to a technique, a pass or a gloval variable. For the syntax, see Annotation Syntax (Direct3D 10).

-
- - bb173737 - ID3D10EffectVariable* ID3D10EffectVariable::GetAnnotationByName([In] const char* Name) - ID3D10EffectVariable::GetAnnotationByName -
- - -

Get a structure member by index.

-
-

A zero-based index.

-

A reference to an Interface.

- -

If the effect variable is an structure, use this method to look up a member by index.

-
- - bb173740 - ID3D10EffectVariable* ID3D10EffectVariable::GetMemberByIndex([In] unsigned int Index) - ID3D10EffectVariable::GetMemberByIndex -
- - -

Get a structure member by name.

-
-

Member name.

-

A reference to an Interface.

- -

If the effect variable is an structure, use this method to look up a member by name.

-
- - bb173741 - ID3D10EffectVariable* ID3D10EffectVariable::GetMemberByName([In] const char* Name) - ID3D10EffectVariable::GetMemberByName -
- - -

Get a structure member by semantic.

-
-

The semantic.

-

A reference to an Interface.

- -

If the effect variable is an structure, use this method to look up a member by attached semantic.

-
- - bb173742 - ID3D10EffectVariable* ID3D10EffectVariable::GetMemberBySemantic([In] const char* Semantic) - ID3D10EffectVariable::GetMemberBySemantic -
- - -

Get an array element.

-
-

A zero-based index; otherwise 0.

-

A reference to an Interface.

- -

If the effect variable is an array, use this method to return one of the elements.

-
- - bb173739 - ID3D10EffectVariable* ID3D10EffectVariable::GetElement([In] unsigned int Index) - ID3D10EffectVariable::GetElement -
- - -

Get a constant buffer.

-
-

A reference to a Interface.

- -

Effect variables are read-from or written-to a constant buffer.

-
- - bb173743 - ID3D10EffectConstantBuffer* ID3D10EffectVariable::GetParentConstantBuffer() - ID3D10EffectVariable::GetParentConstantBuffer -
- - -

Get a scalar variable.

-
-

A reference to a scalar variable. See .

- -

AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173731 - ID3D10EffectScalarVariable* ID3D10EffectVariable::AsScalar() - ID3D10EffectVariable::AsScalar -
- - -

Get a vector variable.

-
-

A reference to a vector variable. See .

- -

AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173735 - ID3D10EffectVectorVariable* ID3D10EffectVariable::AsVector() - ID3D10EffectVariable::AsVector -
- - -

Get a matrix variable.

-
-

A reference to a matrix variable. See .

- -

AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173728 - ID3D10EffectMatrixVariable* ID3D10EffectVariable::AsMatrix() - ID3D10EffectVariable::AsMatrix -
- - -

Get a string variable.

-
-

A reference to a string variable. See .

- -

AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173734 - ID3D10EffectStringVariable* ID3D10EffectVariable::AsString() - ID3D10EffectVariable::AsString -
- - -

Get a shader-resource variable.

-
-

A reference to a shader-resource variable. See .

- -

AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173733 - ID3D10EffectShaderResourceVariable* ID3D10EffectVariable::AsShaderResource() - ID3D10EffectVariable::AsShaderResource -
- - -

Get a render-target-view variable.

-
-

A reference to a render-target-view variable. See Interface.

- -

This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb944008 - ID3D10EffectRenderTargetViewVariable* ID3D10EffectVariable::AsRenderTargetView() - ID3D10EffectVariable::AsRenderTargetView -
- - -

Get a depth-stencil-view variable.

-
-

A reference to a depth-stencil-view variable. See Interface.

- -

This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb944007 - ID3D10EffectDepthStencilViewVariable* ID3D10EffectVariable::AsDepthStencilView() - ID3D10EffectVariable::AsDepthStencilView -
- - -

Get a constant buffer.

-
-

A reference to a constant buffer. See .

- -

AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173726 - ID3D10EffectConstantBuffer* ID3D10EffectVariable::AsConstantBuffer() - ID3D10EffectVariable::AsConstantBuffer -
- - -

Get a shader variable.

-
-

A reference to a shader variable. See .

- -

AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173732 - ID3D10EffectShaderVariable* ID3D10EffectVariable::AsShader() - ID3D10EffectVariable::AsShader -
- - -

Get a effect-blend variable.

-
-

A reference to an effect blend variable. See .

- -

AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173725 - ID3D10EffectBlendVariable* ID3D10EffectVariable::AsBlend() - ID3D10EffectVariable::AsBlend -
- - -

Get a depth-stencil variable.

-
-

A reference to a depth-stencil variable. See .

- -

AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173727 - ID3D10EffectDepthStencilVariable* ID3D10EffectVariable::AsDepthStencil() - ID3D10EffectVariable::AsDepthStencil -
- - -

Get a rasterizer variable.

-
-

A reference to a rasterizer variable. See .

- -

AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173729 - ID3D10EffectRasterizerVariable* ID3D10EffectVariable::AsRasterizer() - ID3D10EffectVariable::AsRasterizer -
- - -

Get a sampler variable.

-
-

A reference to a sampler variable. See .

- -

AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data.

Applications can test the returned object for validity by calling IsValid.

-
- - bb173730 - ID3D10EffectSamplerVariable* ID3D10EffectVariable::AsSampler() - ID3D10EffectVariable::AsSampler -
- - -

Set data.

-
-

A reference to the variable.

-

The offset (in bytes) from the beginning of the reference to the data.

-

The number of bytes to set.

-

Returns one of the following Direct3D 10 Return Codes.

- -

This method does no conversion or type checking; it is therefore a very quick way to access array items.

-
- - bb173747 - HRESULT ID3D10EffectVariable::SetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVariable::SetRawValue -
- - -

Get data.

-
-

A reference to the variable.

-

The offset (in bytes) from the beginning of the reference to the data.

-

The number of bytes to get.

-

Returns one of the following Direct3D 10 Return Codes.

- -

This method does no conversion or type checking; it is therefore a very quick way to access array items.

-
- - bb173744 - HRESULT ID3D10EffectVariable::GetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVariable::GetRawValue -
- - -

Compare the data type with the data stored.

-
- -

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

-
- - bb173746 - IsValid - IsValid - BOOL ID3D10EffectVariable::IsValid() -
- - -

Get type information.

-
- - bb173745 - GetType - GetType - ID3D10EffectType* ID3D10EffectVariable::GetType() -
- - -

Get a description.

-
- - bb173738 - GetDesc - GetDesc - HRESULT ID3D10EffectVariable::GetDesc([Out] D3D10_EFFECT_VARIABLE_DESC* pDesc) -
- - -

Get a constant buffer.

-
- -

Effect variables are read-from or written-to a constant buffer.

-
- - bb173743 - GetParentConstantBuffer - GetParentConstantBuffer - ID3D10EffectConstantBuffer* ID3D10EffectVariable::GetParentConstantBuffer() -
- - - Get a pointer to a blend-state interface. - - Returns . - HRESULT ID3D10EffectBlendVariable::GetBlendState([None] int Index,[Out] ID3D10BlendState** ppBlendState) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a blend-state interface.

-
-

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

-

The address of a reference to a blend-state interface (see Interface).

- - bb173633 - HRESULT ID3D10EffectBlendVariable::GetBlendState([In] unsigned int Index,[Out] ID3D10BlendState** ppBlendState) - ID3D10EffectBlendVariable::GetBlendState -
- - -

Get a reference to a blend-state variable.

-
-

Index into an array of blend-state descriptions. If there is only one blend-state variable in the effect, use 0.

-

A reference to a blend-state description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- -

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

-
- - bb173632 - HRESULT ID3D10EffectBlendVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_BLEND_DESC* pBlendDesc) - ID3D10EffectBlendVariable::GetBackingStore -
- - -

A depth-stencil-variable interface accesses depth-stencil state.

-
- -

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

-
- - bb173639 - ID3D10EffectDepthStencilVariable - ID3D10EffectDepthStencilVariable -
- - - Get a pointer to a depth-stencil interface. - - Returns a pointer to a blend-state interface (see ). - HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([None] int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a depth-stencil interface.

-
-

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

-

The address of a reference to a blend-state interface (see Interface).

- - bb173641 - HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([In] unsigned int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState) - ID3D10EffectDepthStencilVariable::GetDepthStencilState -
- - -

Get a reference to a variable that contains depth-stencil state.

-
-

Index into an array of depth-stencil-state descriptions. If there is only one depth-stencil variable in the effect, use 0.

-

A reference to a depth-stencil-state description (see ).

- -

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

-
- - bb173640 - HRESULT ID3D10EffectDepthStencilVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc) - ID3D10EffectDepthStencilVariable::GetBackingStore -
- - -

A depth-stencil-view-variable interface accesses a depth-stencil view.

-
- - bb173642 - ID3D10EffectDepthStencilViewVariable - ID3D10EffectDepthStencilViewVariable -
- - - Set an array of depth-stencil-view resources. - - A pointer to an array of depth-stencil-view interfaces. See . - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Set an array of depth-stencil-view resources. - - A pointer to an array of depth-stencil-view interfaces. See . - The zero-based array index to set the first interface. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of depth-stencil-view resources. - - The number of elements in the array. - Returns an array of depth-stencil-view interfaces. See . - HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of depth-stencil-view resources. - - The zero-based array index to get the first interface. - The number of elements in the array. - Returns an array of depth-stencil-view interfaces. See . - HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a depth-stencil-view resource.

-
-

A reference to a depth-stencil-view interface. See Interface.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173645 - HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencil([In] ID3D10DepthStencilView* pResource) - ID3D10EffectDepthStencilViewVariable::SetDepthStencil -
- - -

Get a depth-stencil-view resource.

-
-

The address of a reference to a depth-stencil-view interface. See Interface.

- - bb173643 - HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencil([In] ID3D10DepthStencilView** ppResource) - ID3D10EffectDepthStencilViewVariable::GetDepthStencil -
- - -

Set an array of depth-stencil-view resources.

-
-

A reference to an array of depth-stencil-view interfaces. See Interface.

-

The zero-based array index to set the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173646 - HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray -
- - -

Set an array of depth-stencil-view resources.

-
-

A reference to an array of depth-stencil-view interfaces. See Interface.

-

The zero-based array index to set the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173646 - HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray -
- - -

Get an array of depth-stencil-view resources.

-
-

A reference to an array of depth-stencil-view interfaces. See Interface.

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173644 - HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray -
- - -

A matrix-variable interface accesses a matrix.

-
- - bb173647 - ID3D10EffectMatrixVariable - ID3D10EffectMatrixVariable -
- - - Set a floating-point matrix. - - A pointer to the first element in the matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] float* pData) - - - - Get a matrix. - - A reference to the first element in a matrix. - - Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) - - - - Get a matrix. - - A reference to the first element in a matrix. - - Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) - - - - Set a floating-point matrix. - - A pointer to the first element in the matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] float* pData) - - - - Set an array of floating-point matrices. - - A pointer to the first matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an array of floating-point matrices. - - A pointer to the first matrix. - The number of matrix elements to skip from the start of the array. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of matrices. - - The number of matrices in the returned array. - Returns an array of matrix. - HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of matrices. - - The offset (in number of matrices) between the start of the array and the first matrix returned. - The number of matrices in the returned array. - Returns an array of matrix. - HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and set a floating-point matrix. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to the first element of a matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] float* pData) - - - - Transpose and set a floating-point matrix. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to the first element of a matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] float* pData) - - - - Transpose and set an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to an array of matrices. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and set an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to an array of matrices. - The offset (in number of matrices) between the start of the array and the first matrix to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and get a floating-point matrix. - - The transposed matrix. - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) - - - - Transpose and get a floating-point matrix. - - The transposed matrix. - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) - - - - Transpose and get an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - The number of matrices in the array to get. - Returns an array of transposed . - HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and get an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - The offset (in number of matrices) between the start of the array and the first matrix to get. - The number of matrices in the array to get. - Returns an array of transposed . - HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a floating-point matrix.

-
-

A reference to the first element in the matrix.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173652 - HRESULT ID3D10EffectMatrixVariable::SetMatrix([In] SHARPDX_MATRIX* pData) - ID3D10EffectMatrixVariable::SetMatrix -
- - -

Get a matrix.

-
-

A reference to the first element in a matrix.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173648 - HRESULT ID3D10EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) - ID3D10EffectMatrixVariable::GetMatrix -
- - -

Set an array of floating-point matrices.

-
-

A reference to the first matrix.

-

The number of matrix elements to skip from the start of the array.

-

The number of elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173653 - HRESULT ID3D10EffectMatrixVariable::SetMatrixArray([In, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectMatrixVariable::SetMatrixArray -
- - -

Get an array of matrices.

-
-

A reference to the first element of the first matrix in an array of matrices.

-

The offset (in number of matrices) between the start of the array and the first matrix returned.

-

The number of matrices in the returned array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173649 - HRESULT ID3D10EffectMatrixVariable::GetMatrixArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectMatrixVariable::GetMatrixArray -
- - -

Transpose and set a floating-point matrix.

-
-

A reference to the first element of a matrix.

-

Returns one of the following Direct3D 10 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

-
- - bb173654 - HRESULT ID3D10EffectMatrixVariable::SetMatrixTranspose([In] SHARPDX_MATRIX* pData) - ID3D10EffectMatrixVariable::SetMatrixTranspose -
- - -

Transpose and get a floating-point matrix.

-
-

A reference to the first element of a transposed matrix.

-

Returns one of the following Direct3D 10 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

-
- - bb173650 - HRESULT ID3D10EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) - ID3D10EffectMatrixVariable::GetMatrixTranspose -
- - -

Transpose and set an array of floating-point matrices.

-
-

A reference to an array of matrices.

-

The offset (in number of matrices) between the start of the array and the first matrix to set.

-

The number of matrices in the array to set.

-

Returns one of the following Direct3D 10 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

-
- - bb173655 - HRESULT ID3D10EffectMatrixVariable::SetMatrixTransposeArray([In, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectMatrixVariable::SetMatrixTransposeArray -
- - -

Transpose and get an array of floating-point matrices.

-
-

A reference to the first element of an array of tranposed matrices.

-

The offset (in number of matrices) between the start of the array and the first matrix to get.

-

The number of matrices in the array to get.

-

Returns one of the following Direct3D 10 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

-
- - bb173651 - HRESULT ID3D10EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectMatrixVariable::GetMatrixTransposeArray -
- - -

A pass interface encapsulates state assignments within a technique.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- -

A pass is a block of code that sets render-state objects and shaders. A pass is declared within a technique; the syntax for a technique is shown in Effect Technique Syntax (Direct3D 10).

To get an effect-pass interface, call a method like .

-
- - bb173656 - ID3D10EffectPass - ID3D10EffectPass -
- - - Set the state contained in a pass to the device. - - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT Apply([None] UINT Flags) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Test a pass to see if it contains valid syntax.

-
-

TRUE if the code syntax is valid; otherwise .

- - bb173665 - BOOL ID3D10EffectPass::IsValid() - ID3D10EffectPass::IsValid -
- - -

Get a pass description.

-
-

A reference to a pass description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- -

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes. See techniques and passes.

-
- - bb173661 - HRESULT ID3D10EffectPass::GetDesc([Out] D3D10_PASS_DESC* pDesc) - ID3D10EffectPass::GetDesc -
- - -

Get a vertex-shader description.

-
-

A reference to a vertex-shader description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- -

An effect pass can contain render state assignments and shader object assignments.

-
- - bb173664 - HRESULT ID3D10EffectPass::GetVertexShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) - ID3D10EffectPass::GetVertexShaderDesc -
- - -

Get a geometry-shader description.

-
-

A reference to a geometry-shader description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- -

An effect pass can contain render state assignments and shader object assignments.

-
- - bb173662 - HRESULT ID3D10EffectPass::GetGeometryShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) - ID3D10EffectPass::GetGeometryShaderDesc -
- - -

Get a pixel-shader description.

-
-

A reference to a pixel-shader description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- -

An effect pass can contain render state assignments and shader object assignments.

-
- - bb173663 - HRESULT ID3D10EffectPass::GetPixelShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) - ID3D10EffectPass::GetPixelShaderDesc -
- - -

Get an annotation by index.

-
-

A zero-based index.

-

A reference to an Interface.

- - bb173659 - ID3D10EffectVariable* ID3D10EffectPass::GetAnnotationByIndex([In] unsigned int Index) - ID3D10EffectPass::GetAnnotationByIndex -
- - -

Get an annotation by name.

-
-

The name of the annotation.

-

A reference to an Interface.

- - bb173660 - ID3D10EffectVariable* ID3D10EffectPass::GetAnnotationByName([In] const char* Name) - ID3D10EffectPass::GetAnnotationByName -
- - -

Set the state contained in a pass to the device.

-
-

Unused.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173657 - HRESULT ID3D10EffectPass::Apply([In] unsigned int Flags) - ID3D10EffectPass::Apply -
- - -

Generate a mask for allowing/preventing state changes.

-
-

A reference to a state-block mask (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173658 - HRESULT ID3D10EffectPass::ComputeStateBlockMask([In] D3D10_STATE_BLOCK_MASK* pStateBlockMask) - ID3D10EffectPass::ComputeStateBlockMask -
- - -

Test a pass to see if it contains valid syntax.

-
- - bb173665 - IsValid - IsValid - BOOL ID3D10EffectPass::IsValid() -
- - -

Get a pass description.

-
- -

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes. See techniques and passes.

-
- - bb173661 - GetDesc - GetDesc - HRESULT ID3D10EffectPass::GetDesc([Out] D3D10_PASS_DESC* pDesc) -
- - -

Get a vertex-shader description.

-
- -

An effect pass can contain render state assignments and shader object assignments.

-
- - bb173664 - GetVertexShaderDesc - GetVertexShaderDesc - HRESULT ID3D10EffectPass::GetVertexShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) -
- - -

Get a geometry-shader description.

-
- -

An effect pass can contain render state assignments and shader object assignments.

-
- - bb173662 - GetGeometryShaderDesc - GetGeometryShaderDesc - HRESULT ID3D10EffectPass::GetGeometryShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) -
- - -

Get a pixel-shader description.

-
- -

An effect pass can contain render state assignments and shader object assignments.

-
- - bb173663 - GetPixelShaderDesc - GetPixelShaderDesc - HRESULT ID3D10EffectPass::GetPixelShaderDesc([Out] D3D10_PASS_SHADER_DESC* pDesc) -
- - -

Describes an effect pass, which contains pipeline state.

-
- -

Get a pass description by calling ; an effect technique contains one or more passes.

-
- - bb205330 - D3D10_PASS_DESC - D3D10_PASS_DESC -
- - -

A string that contains the name of the pass; otherwise null.

-
- - bb205330 - const char* Name - char Name -
- - -

The number of annotations.

-
- - bb205330 - unsigned int Annotations - unsigned int Annotations -
- - -

A reference to the input signature or the vertex shader; otherwise null.

-
- - bb205330 - unsigned char* pIAInputSignature - unsigned char pIAInputSignature -
- - -

The size of the input signature (in bytes).

-
- - bb205330 - SIZE_T IAInputSignatureSize - SIZE_T IAInputSignatureSize -
- - -

The stencil-reference value used in the depth-stencil state (see Configuring Depth-Stencil Functionality (Direct3D 10)).

-
- - bb205330 - unsigned int StencilRef - unsigned int StencilRef -
- - -

The sample mask for the blend state (see Configuring Blending Functionality (Direct3D 10)).

-
- - bb205330 - unsigned int SampleMask - unsigned int SampleMask -
- - -

The per-component blend factors (RGBA) for the blend state (see Configuring Blending Functionality (Direct3D 10)).

-
- - bb205330 - SHARPDX_COLOR4 BlendFactor - SHARPDX_COLOR4 BlendFactor -
- - - Returns the signature of this Effect pass. - - - - -

Describes an effect variable that contains a shader.

-
- -

To get a shader description, call a method like .

-
- - bb205331 - D3D10_PASS_SHADER_DESC - D3D10_PASS_SHADER_DESC -
- - -

A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. Its name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called.

-
- - bb205331 - ID3D10EffectShaderVariable* pShaderVariable - ID3D10EffectShaderVariable pShaderVariable -
- - -

A zero-based array index; otherwise 0.

-
- - bb205331 - unsigned int ShaderIndex - unsigned int ShaderIndex -
- - - A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. Its name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called. - - ID3D10EffectShaderVariable* pShaderVariable - - - -

A pool interface represents a common memory space (or pool) for sharing variables between effects.

-
- -

To create an effect pool, call a function like . Effect pools can improve performance by reducing the number of API calls required to make state changes (see Using Effect Pools).

-
- - bb173667 - ID3D10EffectPool - ID3D10EffectPool -
- - - Initializes a new instance of the class. - - The device. - The effect byte code. - Effect compile options - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the effect that created the effect pool.

-
-

A reference to an Interface interface.

- - bb173668 - ID3D10Effect* ID3D10EffectPool::AsEffect() - ID3D10EffectPool::AsEffect -
- - -

A rasterizer-variable interface accesses rasterizer state.

-
- -

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

-
- - bb173669 - ID3D10EffectRasterizerVariable - ID3D10EffectRasterizerVariable -
- - - Get a pointer to a rasterizer interface. - - Returns a pointer to a rasterizer interface (see ). - HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([None] int Index,[Out] ID3D10RasterizerState** ppRasterizerState) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a rasterizer interface.

-
-

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

-

The address of a reference to a rasterizer interface (see Interface).

- - bb173671 - HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([In] unsigned int Index,[Out] ID3D10RasterizerState** ppRasterizerState) - ID3D10EffectRasterizerVariable::GetRasterizerState -
- - -

Get a reference to a variable that contains rasteriser state.

-
-

Index into an array of rasteriser-state descriptions. If there is only one rasteriser variable in the effect, use 0.

-

A reference to a rasteriser-state description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- -

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

-
- - bb173670 - HRESULT ID3D10EffectRasterizerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_RASTERIZER_DESC* pRasterizerDesc) - ID3D10EffectRasterizerVariable::GetBackingStore -
- - -

A render-target-view interface accesses a render target.

-
- - bb173672 - ID3D10EffectRenderTargetViewVariable - ID3D10EffectRenderTargetViewVariable -
- - - Set an array of render-targets. - - Set an array of render-target-view interfaces. See . - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Set an array of render-targets. - - Set an array of render-target-view interfaces. See . - The zero-based array index to store the first interface. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of render-targets. - - The number of elements in the array. - Returns an array of . - HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of render-targets. - - The zero-based array index to get the first interface. - The number of elements in the array. - Returns an array of . - HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a render-target.

-
-

A reference to a render-target-view interface. See Interface.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173675 - HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTarget([In] ID3D10RenderTargetView* pResource) - ID3D10EffectRenderTargetViewVariable::SetRenderTarget -
- - -

Get a render-target.

-
-

The address of a reference to a render-target-view interface. See Interface.

- - bb173673 - HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTarget([Out] ID3D10RenderTargetView** ppResource) - ID3D10EffectRenderTargetViewVariable::GetRenderTarget -
- - -

Set an array of render-targets.

-
-

Set an array of render-target-view interfaces. See Interface.

-

The zero-based array index to store the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173676 - HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray -
- - -

Set an array of render-targets.

-
-

Set an array of render-target-view interfaces. See Interface.

-

The zero-based array index to store the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173676 - HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray -
- - -

Get an array of render-targets.

-
-

A reference to an array of render-target-view interfaces. See Interface.

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173674 - HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray -
- - -

A sampler interface accesses sampler state.

-
- -

An Interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state. For examples, see Two Ways to Get the State in an Effect Variable.

-
- - bb173677 - ID3D10EffectSamplerVariable - ID3D10EffectSamplerVariable -
- - - Get a reference to a sampler interface. - - Returns a reference to a sampler interface (see ). - HRESULT ID3D10EffectSamplerVariable::GetSampler([None] int Index,[Out] ID3D10SamplerState** ppSampler) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a sampler interface.

-
-

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

-

The address of a reference to a sampler interface (see Interface).

- - bb173679 - HRESULT ID3D10EffectSamplerVariable::GetSampler([In] unsigned int Index,[Out] ID3D10SamplerState** ppSampler) - ID3D10EffectSamplerVariable::GetSampler -
- - -

Get a reference to a variable that contains sampler state.

-
-

Index into an array of sampler descriptions. If there is only one sampler variable in the effect, use 0.

-

A reference to a sampler description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173678 - HRESULT ID3D10EffectSamplerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D10_SAMPLER_DESC* pSamplerDesc) - ID3D10EffectSamplerVariable::GetBackingStore -
- - -

Describes an effect shader.

-
- -

To get an effect-shader description, call .

-
- - bb205051 - D3D10_EFFECT_SHADER_DESC - D3D10_EFFECT_SHADER_DESC -
- - -

Passed into CreateInputLayout. Only valid on a vertex shader or geometry shader. See ID3D10Device_CreateInputLayout.

-
- - bb205051 - const unsigned char* pInputSignature - unsigned char pInputSignature -
- - -

TRUE is the shader is defined inline; otherwise .

-
- - bb205051 - BOOL IsInline - BOOL IsInline -
- - -

A reference to the compiled shader.

-
- - bb205051 - const unsigned char* pBytecode - unsigned char pBytecode -
- - -

The length of pBytecode.

-
- - bb205051 - unsigned int BytecodeLength - unsigned int BytecodeLength -
- - -

A string that constains a declaration of the stream output from a geometry shader.

-
- - bb205051 - const char* SODecl - char SODecl -
- - -

The number of entries in the input signature.

-
- - bb205051 - unsigned int NumInputSignatureEntries - unsigned int NumInputSignatureEntries -
- - -

The number of entries in the output signature.

-
- - bb205051 - unsigned int NumOutputSignatureEntries - unsigned int NumOutputSignatureEntries -
- - - Gets the signature passed into InputLayout. Only valid on a vertex shader or geometry shader. - - The signature. - - - - Gets the bytecode from the compiled shader. - - The bytecode. - - - -

A shader-resource interface accesses a shader resource.

-
- - bb173693 - ID3D10EffectShaderResourceVariable - ID3D10EffectShaderResourceVariable -
- - - Set an array of shader resources. - - The address of an array of shader-resource-view interfaces. See . - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Set an array of shader resources. - - The address of an array of shader-resource-view interfaces. See . - The zero-based array index to get the first interface. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of shader resources. - - The number of elements in the array. - Returns an array of shader-resource-view interfaces. See . - HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of shader resources. - - The zero-based array index to get the first interface. - The number of elements in the array. - Returns an array of shader-resource-view interfaces. See . - HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a shader resource.

-
-

The address of a reference to a shader-resource-view interface. See Interface.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173696 - HRESULT ID3D10EffectShaderResourceVariable::SetResource([In] ID3D10ShaderResourceView* pResource) - ID3D10EffectShaderResourceVariable::SetResource -
- - -

Get a shader resource.

-
-

The address of a reference to a shader-resource-view interface. See Interface.

- - bb173694 - HRESULT ID3D10EffectShaderResourceVariable::GetResource([Out] ID3D10ShaderResourceView** ppResource) - ID3D10EffectShaderResourceVariable::GetResource -
- - -

Set an array of shader resources.

-
-

The address of an array of shader-resource-view interfaces. See Interface.

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173697 - HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectShaderResourceVariable::SetResourceArray -
- - -

Set an array of shader resources.

-
-

The address of an array of shader-resource-view interfaces. See Interface.

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173697 - HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectShaderResourceVariable::SetResourceArray -
- - -

Get an array of shader resources.

-
-

The address of an array of shader-resource-view interfaces. See Interface.

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173695 - HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out, Buffer] ID3D10ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectShaderResourceVariable::GetResourceArray -
- - -

An effect-scalar-variable interface accesses scalar values.

-
- - bb173680 - ID3D10EffectScalarVariable - ID3D10EffectScalarVariable -
- - - Set a floating-point variable. - - A reference to the variable. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetFloat([None] float Value) - - - - Set an array of floating-point variables. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an array of floating-point variables. - - A reference to the start of the data to set. - Must be set to 0; this is reserved for future use. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of floating-point variables. - - The number of array elements to set. - Returns an array of floats. - HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of floating-point variables. - - Must be set to 0; this is reserved for future use. - The number of array elements to set. - Returns an array of floats. - HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an integer variable. - - A reference to the variable. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value) - - - - Set an array of integer variables. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Set an array of integer variables. - - A reference to the start of the data to set. - Must be set to 0; this is reserved for future use. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Get an array of integer variables. - - The number of array elements to set. - Returns an array of integer variables. - HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Get an array of integer variables. - - Must be set to 0; this is reserved for future use. - The number of array elements to set. - Returns an array of integer variables. - HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Set a boolean variable. - - A reference to the variable. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetBool([None] BOOL Value) - - - - Get a boolean variable. - - Returns a boolean. - HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue) - - - - Set an array of boolean variables. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Set an array of boolean variables. - - A reference to the start of the data to set. - Must be set to 0; this is reserved for future use. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Get an array of boolean variables. - - Must be set to 0; this is reserved for future use. - The number of array elements to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a floating-point variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173689 - HRESULT ID3D10EffectScalarVariable::SetFloat([In] float Value) - ID3D10EffectScalarVariable::SetFloat -
- - -

Get a floating-point variable.

-
-

A reference to the variable.

- - bb173683 - HRESULT ID3D10EffectScalarVariable::GetFloat([Out] float* pValue) - ID3D10EffectScalarVariable::GetFloat -
- - -

Set an array of floating-point variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173690 - HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectScalarVariable::SetFloatArray -
- - -

Get an array of floating-point variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173684 - HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectScalarVariable::GetFloatArray -
- - -

Set an integer variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173691 - HRESULT ID3D10EffectScalarVariable::SetInt([In] int Value) - ID3D10EffectScalarVariable::SetInt -
- - -

Get an integer variable.

-
-

A reference to the variable.

- - bb173685 - HRESULT ID3D10EffectScalarVariable::GetInt([Out] int* pValue) - ID3D10EffectScalarVariable::GetInt -
- - -

Set an array of integer variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173692 - HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectScalarVariable::SetIntArray -
- - -

Get an array of integer variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173686 - HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectScalarVariable::GetIntArray -
- - -

Set a boolean variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173687 - HRESULT ID3D10EffectScalarVariable::SetBool([In] BOOL Value) - ID3D10EffectScalarVariable::SetBool -
- - -

Get a boolean variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173681 - HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue) - ID3D10EffectScalarVariable::GetBool -
- - -

Set an array of boolean variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173688 - HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectScalarVariable::SetBoolArray -
- - -

Get an array of boolean variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173682 - HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectScalarVariable::GetBoolArray -
- - -

A string-variable interface accesses a string variable.

-
- - bb173705 - ID3D10EffectStringVariable - ID3D10EffectStringVariable -
- - - Get the string. - - Returns a reference to the string. - HRESULT ID3D10EffectStringVariable::GetString([Out] const char** ppString) - - - - Get an array of strings. - - The number of strings in the returned array. - Returns a reference to the first string in the array. - HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) - - - - Get an array of strings. - - The offset (in number of strings) between the start of the array and the first string to get. - The number of strings in the returned array. - Returns a reference to the first string in the array. - HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the string.

-
-

A reference to the string.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173706 - HRESULT ID3D10EffectStringVariable::GetString([Out] const void** ppString) - ID3D10EffectStringVariable::GetString -
- - -

Get an array of strings.

-
-

A reference to the first string in the array.

-

The offset (in number of strings) between the start of the array and the first string to get.

-

The number of strings in the returned array.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173707 - HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const void** ppStrings,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectStringVariable::GetStringArray -
- - -

A vector-variable interface accesses a four-component vector.

-
- - bb173748 - ID3D10EffectVectorVariable - ID3D10EffectVectorVariable -
- - - Get a four-component vector that contains integer data. - - Returns a four-component vector that contains integer data - HRESULT ID3D10EffectVectorVariable::GetIntVector([Out] int* pData) - - - - Get a four-component vector that contains floating-point data. - - Returns a four-component vector that contains floating-point data. - HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out] float* pData) - - - - Get a four-component vector that contains boolean data. - - a four-component vector that contains boolean data. - HRESULT ID3D10EffectVectorVariable::GetBoolVector([Out, Buffer] BOOL* pData) - - - - Get a four-component vector. - - Type of the four-component vector - a four-component vector. - HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out, Buffer] BOOL* pData) - - - - Set an array of four-component vectors that contain integer data. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetIntVectorArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Set an array of four-component vectors that contain floating-point data. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an array of four-component vectors that contain floating-point data. - - Type of the four-component vector - A reference to the start of the data to set. - - Returns one of the following {{Direct3D 10 Return Codes}}. - - HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set a x-component vector. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a x-component vector. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a two-component vector that contains floating-point data. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a three-component vector that contains floating-point data. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a four-component color that contains floating-point data. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set an array of four-component color that contain floating-point data. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain integer data. - - The number of array elements to set. - Returns an array of four-component vectors that contain integer data. - HRESULT ID3D10EffectVectorVariable::GetIntVectorArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain floating-point data. - - The number of array elements to set. - Returns an array of four-component vectors that contain floating-point data. - HRESULT ID3D10EffectVectorVariable::GetFloatVectorArray([None] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain boolean data. - - The number of array elements to set. - an array of four-component vectors that contain boolean data. - HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain boolean data. - - The number of array elements to set. - an array of four-component vectors that contain boolean data. - HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a four-component vector that contains boolean data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173755 - HRESULT ID3D10EffectVectorVariable::SetBoolVector([In] SHARPDX_BOOL4* pData) - ID3D10EffectVectorVariable::SetBoolVector -
- - -

Set a four-component vector that contains integer data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173759 - HRESULT ID3D10EffectVectorVariable::SetIntVector([In] SHARPDX_INT4* pData) - ID3D10EffectVectorVariable::SetIntVector -
- - -

Set a four-component vector that contains floating-point data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173757 - HRESULT ID3D10EffectVectorVariable::SetFloatVector([In] float* pData) - ID3D10EffectVectorVariable::SetFloatVector -
- - -

Get a four-component vector that contains boolean data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173749 - HRESULT ID3D10EffectVectorVariable::GetBoolVector([Out] SHARPDX_BOOL4* pData) - ID3D10EffectVectorVariable::GetBoolVector -
- - -

Get a four-component vector that contains integer data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173753 - HRESULT ID3D10EffectVectorVariable::GetIntVector([Out] SHARPDX_INT4* pData) - ID3D10EffectVectorVariable::GetIntVector -
- - -

Get a four-component vector that contains floating-point data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173751 - HRESULT ID3D10EffectVectorVariable::GetFloatVector([Out] SHARPDX_VECTOR4* pData) - ID3D10EffectVectorVariable::GetFloatVector -
- - -

Set an array of four-component vectors that contain boolean data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173756 - HRESULT ID3D10EffectVectorVariable::SetBoolVectorArray([In, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVectorVariable::SetBoolVectorArray -
- - -

Set an array of four-component vectors that contain integer data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173760 - HRESULT ID3D10EffectVectorVariable::SetIntVectorArray([In, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVectorVariable::SetIntVectorArray -
- - -

Set an array of four-component vectors that contain floating-point data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173758 - HRESULT ID3D10EffectVectorVariable::SetFloatVectorArray([In, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVectorVariable::SetFloatVectorArray -
- - -

Get an array of four-component vectors that contain boolean data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173750 - HRESULT ID3D10EffectVectorVariable::GetBoolVectorArray([Out, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVectorVariable::GetBoolVectorArray -
- - -

Get an array of four-component vectors that contain integer data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173754 - HRESULT ID3D10EffectVectorVariable::GetIntVectorArray([Out, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVectorVariable::GetIntVectorArray -
- - -

Get an array of four-component vectors that contain floating-point data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173752 - HRESULT ID3D10EffectVectorVariable::GetFloatVectorArray([Out, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3D10EffectVectorVariable::GetFloatVectorArray -
- - -

The interface encapsulates the textures and resources needed to render a specific font on a specific device.

-
- -

The interface is obtained by calling or .

The LPD3DX10FONT type is defined as a reference to the interface.

 typedef interface  ;	
-            typedef interface  *LPD3DX10FONT;	
-            
-
- - bb173886 - ID3DX10Font - ID3DX10Font -
- - - Initializes a new instance of the class. - - The device. - The font description. - - - - Initializes a new instance of the class from a - - The device. - The font. - - - - Initializes a new instance of the class. - - The device. - The height. - The width. - The weight. - The mip levels. - if set to true [is italic]. - The character set. - The precision. - The quality. - The pitch and family. - Name of the face. - - - - Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings. - - - The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used. This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles. Text will not be rendered to the device; ID3DX10Font::DrawText must still be called to render the text. However, by preloading text into video memory, ID3DX10Font::DrawText will use substantially fewer CPU resources. This method internally converts characters to glyphs using the GDI function {{GetCharacterPlacement}}. - - Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks. - If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. - HRESULT ID3DX10Font::PreloadTextW([None] const wchar_t* pString,[None] int Count) - - - - Draw formatted text. - - - The parameters of this method are very similar to those of the {{GDI DrawText}} function. This method supports both ANSI and Unicode strings. Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified. If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font. This method supports only fonts whose escapement and orientation are both zero. - - Reference to an ID3DX10Sprite object that contains the string you wish to draw. Can be NULL, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if ID3DX10Font::DrawText is to be called more than once in a row. - Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be NULL terminated. - Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. As with any RECT object, the coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top. - Specify the method of formatting the text. It can be any combination of the following values: ItemDescription DT_BOTTOM Justify the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE. DT_CALCRECT Tell DrawText to automatically calculate the width and height of the rectangle based on the length of the string you tell it to draw. If there are multiple lines of text, ID3DX10Font::DrawText uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, ID3DX10Font::DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, ID3DX10Font::DrawText returns the height of the formatted text but does not draw the text. DT_CENTER Center text horizontally in the rectangle. DT_EXPANDTABS Expand tab characters. The default number of characters per tab is eight. DT_LEFT Align text to the left. DT_NOCLIP Draw without clipping. ID3DX10Font::DrawText is somewhat faster when DT_NOCLIP is used. DT_RIGHT Align text to the right. DT_RTLREADING Display text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right. DT_SINGLELINE Display text on a single line only. Carriage returns and line feeds do not break the line. DT_TOP Top-justify text. DT_VCENTER Center text vertically (single line only). DT_WORDBREAK Break words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line. ? - Color of the text. See . - If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero. - int ID3DX10Font::DrawTextW([None] LPD3DX10SPRITE pSprite,[None] const wchar_t* pString,[None] int Count,[None] RECT* pRect,[None] int Format,[None] D3DXCOLOR Color) - - - - Draw formatted text at the specified position. - - Reference to an ID3DX10Sprite object that contains the string you wish to draw. Can be NULL, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if ID3DX10Font::DrawText is to be called more than once in a row. - Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be NULL terminated. - The x. - The y. - Color of the text. See . - - If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero. - - int ID3DX10Font::DrawTextW([None] LPD3DX10SPRITE pSprite,[None] const wchar_t* pString,[None] int Count,[None] RECT* pRect,[None] int Format,[None] D3DXCOLOR Color) - - The parameters of this method are very similar to those of the {{GDI DrawText}} function. This method supports both ANSI and Unicode strings. Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified. If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font. This method supports only fonts whose escapement and orientation are both zero. - - int ID3DX10Font::DrawTextW([In] ID3DX10Sprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] RECT* pRect,[In] unsigned int Format,[In] D3DXCOLOR Color) - - - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Retrieve the Direct3D device associated with the font object.

-
-

Address of a reference to an interface, representing the Direct3D device object associated with the font object.

-

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

- -

Note??Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

-
- - bb173891 - HRESULT ID3DX10Font::GetDevice([Out] ID3D10Device** ppDevice) - ID3DX10Font::GetDevice -
- - -

Get a description of the current font object.

-
-

Pointer to a structure that describes the font object. If UNICODE is defined, a reference to a D3DX10FONT_DESCW is returned; otherwise a reference to a D3DX10FONT_DESCA is returned.

-

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

- -

This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DX10FONT_DESCA structure.

-
- - bb173890 - HRESULT ID3DX10Font::GetDescW([Out] D3DX10_FONT_DESCW* pDesc) - ID3DX10Font::GetDescW -
- - -

Retrieve font characteristics.

-
-

Pointer to a structure, which contains font properties. If Unicode is defined, the function returns a structure. Otherwise, the function returns a structure.

-

Nonzero if the function is successful; otherwise 0.

- - bb173893 - BOOL ID3DX10Font::GetTextMetricsW([In] void* pTextMetrics) - ID3DX10Font::GetTextMetricsW -
- - -

Return a handle to a display device context (DC) that has the font set onto it.

-
-

Handle to a display DC.

- - bb173889 - HDC ID3DX10Font::GetDC() - ID3DX10Font::GetDC -
- - -

Return information about the placement and orientation of a glyph in a character cell.

-
-

Glyph identifier.

-

Address of a reference to a ID3D10Texture object that contains the glyph.

-

Pointer to the smallest rectangle object that completely encloses the glyph. See .

-

Pointer to the two-dimensional vector that connects the origin of the current character cell to the origin of the next character cell. See .

-

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

- - bb173892 - HRESULT ID3DX10Font::GetGlyphData([In] unsigned int Glyph,[Out] ID3D10ShaderResourceView** ppTexture,[Out] RECT* pBlackBox,[Out] POINT* pCellInc) - ID3DX10Font::GetGlyphData -
- - -

Load a series of characters into video memory to improve the efficiency of rendering to the device.

-
-

ID of the first character to be loaded into video memory.

-

ID of the last character to be loaded into video memory.

-

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

- -

This method generates textures containing glyphs that represent the input characters. The glyphs are drawn as a series of triangles.

Characters will not be rendered to the device; must still be called to render the characters. However, by pre-loading characters into video memory, will use substantially fewer CPU resources.

This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.

-
- - bb173894 - HRESULT ID3DX10Font::PreloadCharacters([In] unsigned int First,[In] unsigned int Last) - ID3DX10Font::PreloadCharacters -
- - -

Load a series of glyphs into video memory to improve the efficiency of rendering to the device.

-
-

ID of the first glyph to be loaded into video memory.

-

ID of the last glyph to be loaded into video memory.

-

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

- -

This method generates textures that contain the input glyphs. The glyphs are drawn as a series of triangles.

Glyphs will not be rendered to the device; must still be called to render the glyphs. However, by pre-loading glyphs into video memory, will use substantially fewer CPU resources.

-
- - bb173895 - HRESULT ID3DX10Font::PreloadGlyphs([In] unsigned int First,[In] unsigned int Last) - ID3DX10Font::PreloadGlyphs -
- - -

Load formatted text into video memory to improve the efficiency of rendering to the device. This method supports ANSI and Unicode strings.

-
-

Pointer to a string of characters to be loaded into video memory. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR; otherwise, the data type resolves to LPCSTR. See Remarks.

-

Number of characters in the text string.

-

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

- -

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to PreloadTextW. Otherwise, the function call resolves to PreloadTextA because ANSI strings are being used.

This method generates textures that contain glyphs that represent the input text. The glyphs are drawn as a series of triangles.

Text will not be rendered to the device; must still be called to render the text. However, by preloading text into video memory, will use substantially fewer CPU resources.

This method internally converts characters to glyphs using the GDI function GetCharacterPlacement.

-
- - bb173896 - HRESULT ID3DX10Font::PreloadTextW([In] const wchar_t* pString,[In] int Count) - ID3DX10Font::PreloadTextW -
- - -

Draw formatted text. This method supports ANSI and Unicode strings.

-
-

Pointer to an object that contains the string you wish to draw. Can be null, in which case Direct3D will render the string with its own sprite object. To improve efficiency, a sprite object should be specified if is to be called more than once in a row.

-

Pointer to a string to draw. If UNICODE is defined, this parameter type resolves to an LPCWSTR, otherwise, the type resolves to an LPCSTR. If the Count parameter is -1, the string must be null terminated.

-

The number of characters in the string. If Count is -1, then the pString parameter is assumed to be a reference to a sprite containing a null-terminated string and computes the character count automatically.

-

Pointer to a structure that contains the rectangle, in logical coordinates, in which the text is to be formatted. As with any object, the coordinate value of the rectangle's right side must be greater than that of its left side. Likewise, the coordinate value of the bottom must be greater than that of the top.

-

Specify the method of formatting the text. It can be any combination of the following values:

ItemDescription

DT_BOTTOM

Justify the text to the bottom of the rectangle. This value must be combined with DT_SINGLELINE.

DT_CALCRECT

Tell DrawText to automatically calculate the width and height of the rectangle based on the length of the string you tell it to draw. If there are multiple lines of text, uses the width of the rectangle pointed to by the pRect parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, modifies the right side of the rectangle so that it bounds the last character in the line. In either case, returns the height of the formatted text but does not draw the text.

DT_CENTER

Center text horizontally in the rectangle.

DT_EXPANDTABS

Expand tab characters. The default number of characters per tab is eight.

DT_LEFT

Align text to the left.

DT_NOCLIP

Draw without clipping. is somewhat faster when DT_NOCLIP is used.

DT_RIGHT

Align text to the right.

DT_RTLREADING

Display text in right-to-left reading order for bidirectional text when a Hebrew or Arabic font is selected. The default reading order for all text is left-to-right.

DT_SINGLELINE

Display text on a single line only. Carriage returns and line feeds do not break the line.

DT_TOP

Top-justify text.

DT_VCENTER

Center text vertically (single line only).

DT_WORDBREAK

Break words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the pRect parameter. A carriage return/line feed sequence also breaks the line.

?

-

Color of the text. See .

-

If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from pRect (top to the bottom) of the drawn text. If the function fails, the return value is zero.

- -

The parameters of this method are very similar to those of the GDI DrawText function.

This method supports both ANSI and Unicode strings.

Unless the DT_NOCLIP format is used, this method clips the text so that it does not appear outside the specified rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is specified.

If the selected font is too large for the rectangle, this method does not attempt to substitute a smaller font.

This method supports only fonts whose escapement and orientation are both zero.

-
- - bb173887 - int ID3DX10Font::DrawTextW([In] ID3DX10Sprite* pSprite,[In] const wchar_t* pString,[In] int Count,[In] void* pRect,[In] unsigned int Format,[In] D3DXCOLOR Color) - ID3DX10Font::DrawTextW -
- - -

Retrieve the Direct3D device associated with the font object.

-
- -

Note??Calling this method will increase the internal reference count on the interface. Be sure to call when you are done using this interface or you will have a memory leak.

-
- - bb173891 - GetDevice - GetDevice - HRESULT ID3DX10Font::GetDevice([Out] ID3D10Device** ppDevice) -
- - -

Get a description of the current font object.

-
- -

This method describes Unicode font objects if UNICODE is defined. Otherwise GetDescA is called, which returns a reference to the D3DX10FONT_DESCA structure.

-
- - bb173890 - GetDescW - GetDescW - HRESULT ID3DX10Font::GetDescW([Out] D3DX10_FONT_DESCW* pDesc) -
- - -

Return a handle to a display device context (DC) that has the font set onto it.

-
- - bb173889 - GetDC - GetDC - HDC ID3DX10Font::GetDC() -
- - - Defines possible character sets for fonts. - - CHARSET - - - - The ANSI character set. - - - - - The Arabic character set. - - - - - The Baltic character set. - - - - - The Chinese character set. - - - - - The default system character set. - - - - - The East Europe character set. - - - - - The GB2312 character set. - - - - - The Greek character set. - - - - - The Hangul character set. - - - - - The Hebrew character set. - - - - - The Johab character set. - - - - - The Mac character set. - - - - - The OEM character set. - - - - - The Russian character set. - - - - - The ShiftJIS character set. - - - - - The symbol character set. - - - - - The Thai character set. - - - - - The Turkish character set. - - - - - The Vietnamese character set. - - - - - Specifies formatting options for text rendering. - - DT - - - - Align the text to the bottom. - - - - - Align the text to the center. - - - - - Expand tab characters. - - - - - Align the text to the left. - - - - - Don't clip the text. - - - - - Align the text to the right. - - - - - Rendering the text in right-to-left reading order. - - - - - Force all text to a single line. - - - - - Align the text to the top. - - - - - Vertically align the text to the center. - - - - - Allow word breaks. - - - - - Defines pitch and family settings for fonts. - - - - - Use the Decorative family. - - - - - Default pitch. - - - - - The font family doesn't matter. - - - - - Fixed pitch. - - - - - Use the Modern family. - - - - - Mono pitch. - - - - - Use the Roman family. - - - - - Use the Script family. - - - - - Use the Swiss family. - - - - - Variable pitch. - - - - - Defines precision levels for font rendering. - - OutPrecision - - - - Default - - - - - String - - - - - Character - - - - - Stroke - - - - - TrueType - - - - - Device - - - - - Raster - - - - - TrueTypeOnly - - - - - Outline - - - - - ScreenOutline - - - - - PostScriptOnly - - - - - Specifies quality options for font rendering. - - QUALITY - - - - Default - - - - - Draft - - - - - Proof - - - - - Non antialiased - - - - - Antialiased - - - - - ClearType - - - - - ClearTypeNatural - - - - - Specifies weights for font rendering. - - FW - - - - Use a black weight. - - - - - Use a bold weight. - - - - - Use a demi-bold weight. - - - - - The font weight doesn't matter. - - - - - Use an extra bold weight. - - - - - Make the font extra light. - - - - - Use a heavy weight. - - - - - Make the font light. - - - - - Use a medium weight. - - - - - Use a normal weight. - - - - - Use a regular weight. - - - - - Use a semi-bold weight. - - - - - Make the font thin. - - - - - Use an ultra bold weight. - - - - - Make the font ultra light. - - - - -Flags that defines the behavior of method . - - bb204887 - D3D10_ASYNC_GETDATA_FLAG - D3D10_ASYNC_GETDATA_FLAG - - - - No documentation. - - - bb204887 - D3D10_ASYNC_GETDATA_DONOTFLUSH - D3D10_ASYNC_GETDATA_DONOTFLUSH - - - - None. - - - None - None - - - -

Identifies how to bind a resource to the pipeline.

-
- -

In general, binding flags can be combined using a logical OR (except the constant-buffer flag); however, you should use a single flag to allow the device to optimize the resource usage.

This enumeration is used by a:

  • Buffer description when creating a buffer.
  • Texture description when creating a texture (see or or ).

A shader-resource buffer is NOT a constant buffer; rather, it is a texture or buffer resource that is bound to a shader, that contains texture or buffer data (it is not limited to a single element type in the buffer). A shader-resource buffer is created with the flag and is bound to the pipeline using one of these APIs: , , or . Furthermore, a shader-resource buffer cannot use the flag.

-
- - bb204891 - D3D10_BIND_FLAG - D3D10_BIND_FLAG -
- - -

Bind a buffer as a vertex buffer to the input-assembler stage.

-
- - bb204891 - D3D10_BIND_VERTEX_BUFFER - D3D10_BIND_VERTEX_BUFFER -
- - -

Bind a buffer as an index buffer to the input-assembler stage.

-
- - bb204891 - D3D10_BIND_INDEX_BUFFER - D3D10_BIND_INDEX_BUFFER -
- - -

Bind a buffer as a constant buffer to a shader stage; this flag may NOT be combined with any other bind flag.

-
- - bb204891 - D3D10_BIND_CONSTANT_BUFFER - D3D10_BIND_CONSTANT_BUFFER -
- - -

Bind a buffer or texture to a shader stage; this flag cannot be used with the flag.

-
- - bb204891 - D3D10_BIND_SHADER_RESOURCE - D3D10_BIND_SHADER_RESOURCE -
- - -

Bind an output buffer for the stream-output stage.

-
- - bb204891 - D3D10_BIND_STREAM_OUTPUT - D3D10_BIND_STREAM_OUTPUT -
- - -

Bind a texture as a render target for the output-merger stage.

-
- - bb204891 - D3D10_BIND_RENDER_TARGET - D3D10_BIND_RENDER_TARGET -
- - -

Bind a texture as a depth-stencil target for the output-merger stage.

-
- - bb204891 - D3D10_BIND_DEPTH_STENCIL - D3D10_BIND_DEPTH_STENCIL -
- - - None. - - - None - None - - - -

RGB or alpha blending operation.

-
- -

The runtime implements RGB blending and alpha blending separately. Therefore, blend state requires separate blend operations for RGB data and alpha data. These blend operations are specified in a blend description. The two sources ? source 1 and source 2 ? are shown in the blending block diagram.

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

-
- - bb204894 - D3D10_BLEND_OP - D3D10_BLEND_OP -
- - -

Add source 1 and source 2.

-
- - bb204894 - D3D10_BLEND_OP_ADD - D3D10_BLEND_OP_ADD -
- - -

Subtract source 1 from source 2.

-
- - bb204894 - D3D10_BLEND_OP_SUBTRACT - D3D10_BLEND_OP_SUBTRACT -
- - -

Subtract source 2 from source 1.

-
- - bb204894 - D3D10_BLEND_OP_REV_SUBTRACT - D3D10_BLEND_OP_REV_SUBTRACT -
- - -

Find the minimum of source 1 and source 2.

-
- - bb204894 - D3D10_BLEND_OP_MIN - D3D10_BLEND_OP_MIN -
- - -

Find the maximum of source 1 and source 2.

-
- - bb204894 - D3D10_BLEND_OP_MAX - D3D10_BLEND_OP_MAX -
- - -

Describes the blend state.

-
- -

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
BlendEnable[8] (for all 8)
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask[8] (for all 8)

?

-
- - bb204893 - D3D10_BLEND - D3D10_BLEND -
- - -

Determines whether or not to use alpha-to-coverage as a multisampling technique when setting a pixel to a rendertarget.

-
- - bb204893 - D3D10_BLEND_ZERO - D3D10_BLEND_ZERO -
- - -

Enable (or disable) blending. There are eight elements in this array; these correspond to the eight rendertargets that can be set to output-merger stage at one time.

-
- - bb204893 - D3D10_BLEND_ONE - D3D10_BLEND_ONE -
- - -

This blend option specifies the first RGB data source and includes an optional pre-blend operation.

-
- - bb204893 - D3D10_BLEND_SRC_COLOR - D3D10_BLEND_SRC_COLOR -
- - -

This blend option specifies the second RGB data source and includes an optional pre-blend operation.

-
- - bb204893 - D3D10_BLEND_INV_SRC_COLOR - D3D10_BLEND_INV_SRC_COLOR -
- - -

This blend operation defines how to combine the RGB data sources.

-
- - bb204893 - D3D10_BLEND_SRC_ALPHA - D3D10_BLEND_SRC_ALPHA -
- - -

This blend option specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

-
- - bb204893 - D3D10_BLEND_INV_SRC_ALPHA - D3D10_BLEND_INV_SRC_ALPHA -
- - -

This blend option specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

-
- - bb204893 - D3D10_BLEND_DEST_ALPHA - D3D10_BLEND_DEST_ALPHA -
- - -

This blend operation defines how to combine the alpha data sources.

-
- - bb204893 - D3D10_BLEND_INV_DEST_ALPHA - D3D10_BLEND_INV_DEST_ALPHA -
- - -

A per-pixel write mask that allows control over which components can be written (see ).

-
- - bb204893 - D3D10_BLEND_DEST_COLOR - D3D10_BLEND_DEST_COLOR -
- - - No documentation. - - - bb204893 - D3D10_BLEND_INV_DEST_COLOR - D3D10_BLEND_INV_DEST_COLOR - - - - No documentation. - - - bb204893 - D3D10_BLEND_SRC_ALPHA_SAT - D3D10_BLEND_SRC_ALPHA_SAT - - - - No documentation. - - - bb204893 - D3D10_BLEND_BLEND_FACTOR - D3D10_BLEND_BLEND_FACTOR - - - - No documentation. - - - bb204893 - D3D10_BLEND_INV_BLEND_FACTOR - D3D10_BLEND_INV_BLEND_FACTOR - - - - No documentation. - - - bb204893 - D3D10_BLEND_SRC1_COLOR - D3D10_BLEND_SRC1_COLOR - - - - No documentation. - - - bb204893 - D3D10_BLEND_INV_SRC1_COLOR - D3D10_BLEND_INV_SRC1_COLOR - - - - No documentation. - - - bb204893 - D3D10_BLEND_SRC1_ALPHA - D3D10_BLEND_SRC1_ALPHA - - - - No documentation. - - - bb204893 - D3D10_BLEND_INV_SRC1_ALPHA - D3D10_BLEND_INV_SRC1_ALPHA - - - -

These flags are used by functions which operate on one or more channels in a texture.

-
- - bb172690 - D3DX10_CHANNEL_FLAG - D3DX10_CHANNEL_FLAG -
- - -

Indicates the red channel should be used.

-
- - bb172690 - D3DX10_CHANNEL_RED - D3DX10_CHANNEL_RED -
- - -

Indicates the blue channel should be used.

-
- - bb172690 - D3DX10_CHANNEL_BLUE - D3DX10_CHANNEL_BLUE -
- - -

Indicates the green channel should be used.

-
- - bb172690 - D3DX10_CHANNEL_GREEN - D3DX10_CHANNEL_GREEN -
- - -

Indicates the alpha channel should be used.

-
- - bb172690 - D3DX10_CHANNEL_ALPHA - D3DX10_CHANNEL_ALPHA -
- - -

Indicates the luminaces of the red, green, and blue channels should be used.

-
- - bb172690 - D3DX10_CHANNEL_LUMINANCE - D3DX10_CHANNEL_LUMINANCE -
- - - None. - - - None - None - - - -

Identify which components of each pixel of a render target are writable during blending.

-
- -

These flags can be combined with a bitwise OR.

-
- - bb204901 - D3D10_COLOR_WRITE_ENABLE - D3D10_COLOR_WRITE_ENABLE -
- - - No documentation. - - - bb204901 - D3D10_COLOR_WRITE_ENABLE_RED - D3D10_COLOR_WRITE_ENABLE_RED - - - - No documentation. - - - bb204901 - D3D10_COLOR_WRITE_ENABLE_GREEN - D3D10_COLOR_WRITE_ENABLE_GREEN - - - - No documentation. - - - bb204901 - D3D10_COLOR_WRITE_ENABLE_BLUE - D3D10_COLOR_WRITE_ENABLE_BLUE - - - - No documentation. - - - bb204901 - D3D10_COLOR_WRITE_ENABLE_ALPHA - D3D10_COLOR_WRITE_ENABLE_ALPHA - - - - No documentation. - - - bb204901 - D3D10_COLOR_WRITE_ENABLE_ALL - D3D10_COLOR_WRITE_ENABLE_ALL - - - -

Comparison options.

-
- -

A comparison option determines whether how the runtime compares source (new) data against destination (existing) data before storing the new data. The comparison option is declared in a description before an object is created. The API allows you to set a comparison option for a depth-stencil buffer (see ), depth-stencil operations (see ), or sampler state (see ).

-
- - bb204902 - D3D10_COMPARISON_FUNC - D3D10_COMPARISON_FUNC -
- - -

Never pass the comparison.

-
- - bb204902 - D3D10_COMPARISON_NEVER - D3D10_COMPARISON_NEVER -
- - -

If the source data is less than the destination data, the comparison passes.

-
- - bb204902 - D3D10_COMPARISON_LESS - D3D10_COMPARISON_LESS -
- - -

If the source data is equal to the destination data, the comparison passes.

-
- - bb204902 - D3D10_COMPARISON_EQUAL - D3D10_COMPARISON_EQUAL -
- - -

If the source data is less than or equal to the destination data, the comparison passes.

-
- - bb204902 - D3D10_COMPARISON_LESS_EQUAL - D3D10_COMPARISON_LESS_EQUAL -
- - -

If the source data is greater than the destination data, the comparison passes.

-
- - bb204902 - D3D10_COMPARISON_GREATER - D3D10_COMPARISON_GREATER -
- - -

If the source data is not equal to the destination data, the comparison passes.

-
- - bb204902 - D3D10_COMPARISON_NOT_EQUAL - D3D10_COMPARISON_NOT_EQUAL -
- - -

If the source data is greater than or equal to the destination data, the comparison passes.

-
- - bb204902 - D3D10_COMPARISON_GREATER_EQUAL - D3D10_COMPARISON_GREATER_EQUAL -
- - -

Always pass the comparison.

-
- - bb204902 - D3D10_COMPARISON_ALWAYS - D3D10_COMPARISON_ALWAYS -
- - -

Performance counter types.

-
- -

In addition to these performance counters, independent hardware vendors may define their own set of performance counters for their devices. The enum values for these counters would start after and would be defined by those hardware vendors.

A device can support one or more of these performance counters, but it is not required to support any of them.

-
- - bb204904 - D3D10_COUNTER - D3D10_COUNTER -
- - -

Percentage of the time that the GPU is idle.

-
- - bb204904 - D3D10_COUNTER_GPU_IDLE - D3D10_COUNTER_GPU_IDLE -
- - -

Percentage of the time that the GPU does vertex processing.

-
- - bb204904 - D3D10_COUNTER_VERTEX_PROCESSING - D3D10_COUNTER_VERTEX_PROCESSING -
- - -

Percentage of the time that the GPU does geometry processing.

-
- - bb204904 - D3D10_COUNTER_GEOMETRY_PROCESSING - D3D10_COUNTER_GEOMETRY_PROCESSING -
- - -

Percentage of the time that the GPU does pixel processing.

-
- - bb204904 - D3D10_COUNTER_PIXEL_PROCESSING - D3D10_COUNTER_PIXEL_PROCESSING -
- - -

Percentage of the time that the GPU does other processing (not vertex, geometry, or pixel processing).

-
- - bb204904 - D3D10_COUNTER_OTHER_GPU_PROCESSING - D3D10_COUNTER_OTHER_GPU_PROCESSING -
- - -

Percentage of bandwidth used on a host adapter. Value returned by between 0.0 and 1.0 when using this counter.

-
- - bb204904 - D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION - D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION -
- - -

Percentage of bandwidth used by the local video memory. Value returned by between 0.0 and 1.0 when using this counter

-
- - bb204904 - D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION - D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION -
- - -

Percentage of throughput used for vertices. Value returned by between 0.0 and 1.0 when using this counter

-
- - bb204904 - D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION - D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION -
- - -

Percentage of throughput used for triangle setup. Value returned by between 0.0 and 1.0 when using this counter

-
- - bb204904 - D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION - D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION -
- - -

Percentage of throughput used for the fillrate. Value returned by between 0.0 and 1.0 when using this counter.

-
- - bb204904 - D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION - D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION -
- - -

Percentage of time that a vertex shader spends sampling resources.

-
- - bb204904 - D3D10_COUNTER_VS_MEMORY_LIMITED - D3D10_COUNTER_VS_MEMORY_LIMITED -
- - -

Percentage of time that a vertex shader spends doing computations.

-
- - bb204904 - D3D10_COUNTER_VS_COMPUTATION_LIMITED - D3D10_COUNTER_VS_COMPUTATION_LIMITED -
- - -

Percentage of time that a geometry shader spends sampling resources.

-
- - bb204904 - D3D10_COUNTER_GS_MEMORY_LIMITED - D3D10_COUNTER_GS_MEMORY_LIMITED -
- - -

Percentage of time that a geometry shader spends doing computations.

-
- - bb204904 - D3D10_COUNTER_GS_COMPUTATION_LIMITED - D3D10_COUNTER_GS_COMPUTATION_LIMITED -
- - -

Percentage of time that a pixel shader spends sampling resources.

-
- - bb204904 - D3D10_COUNTER_PS_MEMORY_LIMITED - D3D10_COUNTER_PS_MEMORY_LIMITED -
- - -

Percentage of time that a pixel shader spends doing computations.

-
- - bb204904 - D3D10_COUNTER_PS_COMPUTATION_LIMITED - D3D10_COUNTER_PS_COMPUTATION_LIMITED -
- - -

Percentage of vertex data that was read from the vertex cache. For example, if 6 vertices were added to the cache and 3 of them were read from the cache, then the hit rate would be 0.5.

-
- - bb204904 - D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE - D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE -
- - -

Percentage of texel data that was read from the vertex cache. For example, if 6 texels were added to the cache and 3 of them were read from the cache, then the hit rate would be 0.5.

-
- - bb204904 - D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE - D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE -
- - -

Start of the device-dependent counters. See remarks.

-
- - bb204904 - D3D10_COUNTER_DEVICE_DEPENDENT_0 - D3D10_COUNTER_DEVICE_DEPENDENT_0 -
- - -

Data type of a performance counter.

-
- -

These flags are an output parameter in .

-
- - bb204907 - D3D10_COUNTER_TYPE - D3D10_COUNTER_TYPE -
- - -

32-bit floating point.

-
- - bb204907 - D3D10_COUNTER_TYPE_FLOAT32 - D3D10_COUNTER_TYPE_FLOAT32 -
- - -

16-bit unsigned integer.

-
- - bb204907 - D3D10_COUNTER_TYPE_UINT16 - D3D10_COUNTER_TYPE_UINT16 -
- - -

32-bit unsigned integer.

-
- - bb204907 - D3D10_COUNTER_TYPE_UINT32 - D3D10_COUNTER_TYPE_UINT32 -
- - -

64-bit unsigned integer.

-
- - bb204907 - D3D10_COUNTER_TYPE_UINT64 - D3D10_COUNTER_TYPE_UINT64 -
- - -

Specifies the types of CPU access allowed for a resource.

-
- -

This enumeration is used in , , , , and . See Creating Buffer Resources (Direct3D 10) for more details.

Applications can combine one or more of these flags with a bitwise OR. When possible, create resources with no CPU access flags, as this enables better resource optimization.

-
- - bb204908 - D3D10_CPU_ACCESS_FLAG - D3D10_CPU_ACCESS_FLAG -
- - -

The resource is to be mappable so that the CPU can change its contents. Resources created with this flag cannot be set as outputs of the pipeline and must be created with either dynamic or staging usage (see ).

-
- - bb204908 - D3D10_CPU_ACCESS_WRITE - D3D10_CPU_ACCESS_WRITE -
- - -

The resource is to be mappable so that the CPU can read its contents. Resources created with this flag cannot be set as either inputs or outputs to the pipeline and must be created with staging usage (see ).

-
- - bb204908 - D3D10_CPU_ACCESS_READ - D3D10_CPU_ACCESS_READ -
- - - None. - - - None - None - - - -

Indicates triangles facing a particular direction are not drawn.

-
- -

This enumeration is part of a rasterizer-state object description (see ).

-
- - bb204911 - D3D10_CULL_MODE - D3D10_CULL_MODE -
- - -

Always draw all triangles.

-
- - bb204911 - D3D10_CULL_NONE - D3D10_CULL_NONE -
- - -

Do not draw triangles that are front-facing.

-
- - bb204911 - D3D10_CULL_FRONT - D3D10_CULL_FRONT -
- - -

Do not draw triangles that are back-facing.

-
- - bb204911 - D3D10_CULL_BACK - D3D10_CULL_BACK -
- - - No documentation. - - - D3D10_DEBUG_FEATURE_FLAGS - D3D10_DEBUG_FEATURE_FLAGS - - - - No documentation. - - - D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP - D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP - - - - No documentation. - - - D3D10_DEBUG_FEATURE_FINISH_PER_RENDER_OP - D3D10_DEBUG_FEATURE_FINISH_PER_RENDER_OP - - - - No documentation. - - - D3D10_DEBUG_FEATURE_PRESENT_PER_RENDER_OP - D3D10_DEBUG_FEATURE_PRESENT_PER_RENDER_OP - - - -

Specifies the parts of the depth stencil to clear. Usually used with .

-
- -

These flags can be bitwise ORed together.

-
- - bb204900 - D3D10_CLEAR_FLAG - D3D10_CLEAR_FLAG -
- - - No documentation. - - - bb204900 - D3D10_CLEAR_DEPTH - D3D10_CLEAR_DEPTH - - - - No documentation. - - - bb204900 - D3D10_CLEAR_STENCIL - D3D10_CLEAR_STENCIL - - - -

Specifies how to access a resource used in a depth-stencil view.

-
- -

This enumeration is used in to create a depth-stencil view.

-
- - bb205043 - D3D10_DSV_DIMENSION - D3D10_DSV_DIMENSION -
- - - No documentation. - - - bb205043 - D3D10_DSV_DIMENSION_UNKNOWN - D3D10_DSV_DIMENSION_UNKNOWN - - - - No documentation. - - - bb205043 - D3D10_DSV_DIMENSION_TEXTURE1D - D3D10_DSV_DIMENSION_TEXTURE1D - - - - No documentation. - - - bb205043 - D3D10_DSV_DIMENSION_TEXTURE1DARRAY - D3D10_DSV_DIMENSION_TEXTURE1DARRAY - - - - No documentation. - - - bb205043 - D3D10_DSV_DIMENSION_TEXTURE2D - D3D10_DSV_DIMENSION_TEXTURE2D - - - - No documentation. - - - bb205043 - D3D10_DSV_DIMENSION_TEXTURE2DARRAY - D3D10_DSV_DIMENSION_TEXTURE2DARRAY - - - - No documentation. - - - bb205043 - D3D10_DSV_DIMENSION_TEXTURE2DMS - D3D10_DSV_DIMENSION_TEXTURE2DMS - - - - No documentation. - - - bb205043 - D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY - D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY - - - -

Identify the portion of a depth-stencil buffer for writing depth data.

-
- - bb205038 - D3D10_DEPTH_WRITE_MASK - D3D10_DEPTH_WRITE_MASK -
- - - No documentation. - - - bb205038 - D3D10_DEPTH_WRITE_MASK_ZERO - D3D10_DEPTH_WRITE_MASK_ZERO - - - - No documentation. - - - bb205038 - D3D10_DEPTH_WRITE_MASK_ALL - D3D10_DEPTH_WRITE_MASK_ALL - - - -

Device creation flags.

-
- -

Device creation flags are used by and .

An application might dynamically create (and destroy) threads to improve performance especially on a machine with multiple CPU cores. There may be cases, however, when an application needs to prevent extra threads from being created. This can happen when you want to simplify debugging, profile code or develop a tool for instance. For these cases, use to request that the runtime and video driver not create any additional threads that might interfere with the application.

-
- - bb204909 - D3D10_CREATE_DEVICE_FLAG - D3D10_CREATE_DEVICE_FLAG -
- - -

Use this flag if an application will only be calling D3D10 from a single thread. If this flag is not specified, the default behavior of D3D10 is to enter a lock during each API call to prevent multiple threads altering internal state. By using this flag no locks will be taken which can slightly increase performance, but could result in undefine behavior if D3D10 is called from multiple threads.

-
- - bb204909 - D3D10_CREATE_DEVICE_SINGLETHREADED - D3D10_CREATE_DEVICE_SINGLETHREADED -
- - -

Create a device that supports the debug layer.

-
- - bb204909 - D3D10_CREATE_DEVICE_DEBUG - D3D10_CREATE_DEVICE_DEBUG -
- - -

Create both a software (REF) and hardware (HAL) version of the device simultaneously, which allows an application to switch to a reference device to enable debugging. See Interface for more information.

-
- - bb204909 - D3D10_CREATE_DEVICE_SWITCH_TO_REF - D3D10_CREATE_DEVICE_SWITCH_TO_REF -
- - -

Prevents multiple threads from being created. When this flag is used with a WARP device, no additional threads will be created by WARP and all rasterization will occur on the calling thread. This flag is not recommended for general use. See remarks.

-
- - bb204909 - D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS - D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS -
- - -

Return a null reference instead of triggering an exception on memory exhaustion during invocations to Map. Without this flag an exception will be raised on memory exhaustion. Only valid on Winodws 7.

-
- - bb204909 - D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP - D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP -
- - -

Causes device creation to fail if BGRA support is not available.

BGRA support enables the following formats.

is only relevant when a device is created with or using the or feature levels, the flag will be ignored when a device is created with other feature levels.

Note that BGRA support may be present even if the application didn't specify . The flag merely causes device creation to fail if BGRA support isn't available.

is only valid on Windows 7, Windows Server 2008 R2, and updated Windows Vista (KB971644) systems.

-
- - bb204909 - D3D10_CREATE_DEVICE_BGRA_SUPPORT - D3D10_CREATE_DEVICE_BGRA_SUPPORT -
- - -

Reserved. This flag is currently not supported. Do not use.

-
- - bb204909 - D3D10_CREATE_DEVICE_STRICT_VALIDATION - D3D10_CREATE_DEVICE_STRICT_VALIDATION -
- - - None. - - - None - None - - - -

The device-driver type.

-
- -

The device-driver type needs to be specified when the device is created (using or ).

For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.

-
- - bb205042 - D3D10_DRIVER_TYPE - D3D10_DRIVER_TYPE -
- - -

A hardware device; commonly called a HAL device.

-
- - bb205042 - D3D10_DRIVER_TYPE_HARDWARE - D3D10_DRIVER_TYPE_HARDWARE -
- - -

A reference device; commonly called a REF device.

-
- - bb205042 - D3D10_DRIVER_TYPE_REFERENCE - D3D10_DRIVER_TYPE_REFERENCE -
- - -

A null device; which is a reference device without render capability.

-
- - bb205042 - D3D10_DRIVER_TYPE_NULL - D3D10_DRIVER_TYPE_NULL -
- - -

Reserved for later use.

-
- - bb205042 - D3D10_DRIVER_TYPE_SOFTWARE - D3D10_DRIVER_TYPE_SOFTWARE -
- - -

A WARP driver, which is a high-performance software rasterizer. The rasterizer supports feature level 9_1 through level 10.1 with a high performance software implementation when hardware is not available. For more information about using a WARP driver, see Windows Advanced Rasterization Platform (WARP) In-Depth Guide. Note that WARP is only available with the DirectX 11 Runtime (Windows 7, Windows Server 2008 R2, updated Windows Vista [KB971644]).

-
- - bb205042 - D3D10_DRIVER_TYPE_WARP - D3D10_DRIVER_TYPE_WARP -
- - -

Describes an effect variable.

-
- -

To get an effect-variable description, call .

-
- - bb205056 - D3D10_EFFECT_VARIABLE_FLAGS - D3D10_EFFECT_VARIABLE_FLAGS -
- - -

A string that contains the variable name.

-
- - bb205056 - D3D10_EFFECT_VARIABLE_POOLED - D3D10_EFFECT_VARIABLE_POOLED -
- - -

The semantic attached to the variable; otherwise null.

-
- - bb205056 - D3D10_EFFECT_VARIABLE_ANNOTATION - D3D10_EFFECT_VARIABLE_ANNOTATION -
- - -

Optional flags for effect variables.

-
- - bb205056 - D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT - D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT -
- - - None. - - - None - None - - - -

The version of hardware acceleration requested.

-
- -

Use this enumeration when creating a device with or .

Note that 10level9 feature levels 9_1, 9_2, and 9_3 are only available with the Direct3D 11 runtime (Windows?7, Windows Server?2008?R2, updated Windows?Vista with Service Pack?2 (SP2) [KB 971644], and updated Windows Server?2008 [KB 971512]).

For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.

For an overview of the capabilities of each feature level, see Overview For Each Feature Level.

-
- - bb694529 - D3D10_FEATURE_LEVEL1 - D3D10_FEATURE_LEVEL1 -
- - -

The hardware supports Direct3D 10.0 features.

-
- - bb694529 - D3D10_FEATURE_LEVEL_10_0 - D3D10_FEATURE_LEVEL_10_0 -
- - -

The hardware supports Direct3D 10.1 features.

-
- - bb694529 - D3D10_FEATURE_LEVEL_10_1 - D3D10_FEATURE_LEVEL_10_1 -
- - -

The hardware supports 9.1 feature level.

-
- - bb694529 - D3D10_FEATURE_LEVEL_9_1 - D3D10_FEATURE_LEVEL_9_1 -
- - -

The hardware supports 9.2 feature level.

-
- - bb694529 - D3D10_FEATURE_LEVEL_9_2 - D3D10_FEATURE_LEVEL_9_2 -
- - -

The hardware supports 9.3 feature level.

-
- - bb694529 - D3D10_FEATURE_LEVEL_9_3 - D3D10_FEATURE_LEVEL_9_3 -
- - -

Determines the fill mode to use when rendering triangles.

-
- -

This enumeration is part of a rasterizer-state object description (see ).

-
- - bb205059 - D3D10_FILL_MODE - D3D10_FILL_MODE -
- - -

Draw lines connecting the vertices. Adjacent vertices are not drawn.

-
- - bb205059 - D3D10_FILL_WIREFRAME - D3D10_FILL_WIREFRAME -
- - -

Fill the triangles formed by the vertices. Adjacent vertices are not drawn.

-
- - bb205059 - D3D10_FILL_SOLID - D3D10_FILL_SOLID -
- - -

Filtering options during texture sampling.

-
- -

During texture sampling, one or more texels are read and combined (this is calling filtering) to produce a single value. Point sampling reads a single texel while linear sampling reads two texels (endpoints) and linearly interpolates a third value between the endpoints.

HLSL texture-sampling functions also support comparison filtering during texture sampling. Comparison filtering compares each sampled texel against a comparison value. The boolean result is blended the same way that normal texture filtering is blended.

You can use HLSL intrinsic texture-sampling functions that implement texture filtering only or companion functions that use texture filtering with comparison filtering.

Texture Sampling FunctionTexture Sampling Function with Comparison Filtering
sample samplecmp or samplecmplevelzero

?

Comparison filters only work with textures that have the following formats: R32_FLOAT_X8X24_TYPELESS, R32_FLOAT, R24_UNORM_X8_TYPELESS, R16_UNORM.

-
- - bb205060 - D3D10_FILTER - D3D10_FILTER -
- - -

Use point sampling for minification, magnification, and mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_MAG_MIP_POINT - D3D10_FILTER_MIN_MAG_MIP_POINT -
- - -

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR - D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR -
- - -

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT - D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT -
- - -

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR - D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR -
- - -

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT - D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT -
- - -

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR - D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR -
- - -

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT - D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT -
- - -

Use linear interpolation for minification, magnification, and mip-level sampling.

-
- - bb205060 - D3D10_FILTER_MIN_MAG_MIP_LINEAR - D3D10_FILTER_MIN_MAG_MIP_LINEAR -
- - -

Use anisotropic interpolation for minification, magnification, and mip-level sampling.

-
- - bb205060 - D3D10_FILTER_ANISOTROPIC - D3D10_FILTER_ANISOTROPIC -
- - -

Use point sampling for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT - D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT -
- - -

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR - D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR -
- - -

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT - D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT -
- - -

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR - D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR -
- - -

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT - D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT -
- - -

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR - D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR -
- - -

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT - D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT -
- - -

Use linear interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR - D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR -
- - -

Use anisotropic interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

-
- - bb205060 - D3D10_FILTER_COMPARISON_ANISOTROPIC - D3D10_FILTER_COMPARISON_ANISOTROPIC -
- - -

For use in pixel shaders with textures that have the R1_UNORM format.

-
- - bb205060 - D3D10_FILTER_TEXT_1BIT - D3D10_FILTER_TEXT_1BIT -
- - -

Texture filtering flags.

-
- -

D3DX10 automatically performs gamma correction (to convert color data from RGB space to standard RGB space) when loading texture data. This is automatically done for instance when RGB data is loaded from a .png file into an sRGB texture. Use the SRGB filter flags to indicate if the data does not need to be converted into sRGB space.

-
- - bb172692 - D3DX10_FILTER_FLAG - D3DX10_FILTER_FLAG -
- - -

No scaling or filtering will take place. Pixels outside the bounds of the source image are assumed to be transparent black.

-
- - bb172692 - D3DX10_FILTER_NONE - D3DX10_FILTER_NONE -
- - -

Each destination pixel is computed by sampling the nearest pixel from the source image.

-
- - bb172692 - D3DX10_FILTER_POINT - D3DX10_FILTER_POINT -
- - -

Each destination pixel is computed by sampling the four nearest pixels from the source image. This filter works best when the scale on both axes is less than two.

-
- - bb172692 - D3DX10_FILTER_LINEAR - D3DX10_FILTER_LINEAR -
- - -

Every pixel in the source image contributes equally to the destination image. This is the slowest of the filters.

-
- - bb172692 - D3DX10_FILTER_TRIANGLE - D3DX10_FILTER_TRIANGLE -
- - -

Each pixel is computed by averaging a 2x2(x2) box of pixels from the source image. This filter works only when the dimensions of the destination are half those of the source, as is the case with mipmaps.

-
- - bb172692 - D3DX10_FILTER_BOX - D3DX10_FILTER_BOX -
- - -

Pixels off the edge of the texture on the u-axis should be mirrored, not wrapped.

-
- - bb172692 - D3DX10_FILTER_MIRROR_U - D3DX10_FILTER_MIRROR_U -
- - -

Pixels off the edge of the texture on the v-axis should be mirrored, not wrapped.

-
- - bb172692 - D3DX10_FILTER_MIRROR_V - D3DX10_FILTER_MIRROR_V -
- - -

Pixels off the edge of the texture on the w-axis should be mirrored, not wrapped.

-
- - bb172692 - D3DX10_FILTER_MIRROR_W - D3DX10_FILTER_MIRROR_W -
- - -

Specifying this flag is the same as specifying the , , and flags.

-
- - bb172692 - D3DX10_FILTER_MIRROR - D3DX10_FILTER_MIRROR -
- - -

The resulting image must be dithered using a 4x4 ordered dither algorithm. This happens when converting from one format to another.

-
- - bb172692 - D3DX10_FILTER_DITHER - D3DX10_FILTER_DITHER -
- - -

Do diffuse dithering on the image when changing from one format to another.

-
- - bb172692 - D3DX10_FILTER_DITHER_DIFFUSION - D3DX10_FILTER_DITHER_DIFFUSION -
- - -

Input data is in standard RGB (sRGB) color space. See remarks.

-
- - bb172692 - D3DX10_FILTER_SRGB_IN - D3DX10_FILTER_SRGB_IN -
- - -

Output data is in standard RGB (sRGB) color space. See remarks.

-
- - bb172692 - D3DX10_FILTER_SRGB_OUT - D3DX10_FILTER_SRGB_OUT -
- - -

Same as specifying | . See remarks.

-
- - bb172692 - D3DX10_FILTER_SRGB - D3DX10_FILTER_SRGB -
- - -

Types of magnification or minification sampler filters.

-
- - bb205061 - D3D10_FILTER_TYPE - D3D10_FILTER_TYPE -
- - -

Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture.

-
- - bb205061 - D3D10_FILTER_TYPE_POINT - D3D10_FILTER_TYPE_POINT -
- - -

Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures.

-
- - bb205061 - D3D10_FILTER_TYPE_LINEAR - D3D10_FILTER_TYPE_LINEAR -
- - -

Which resources are supported for a given format and given device (see ).

-
- - bb205063 - D3D10_FORMAT_SUPPORT - D3D10_FORMAT_SUPPORT -
- - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_BUFFER - D3D10_FORMAT_SUPPORT_BUFFER - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER - D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER - D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_SO_BUFFER - D3D10_FORMAT_SUPPORT_SO_BUFFER - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_TEXTURE1D - D3D10_FORMAT_SUPPORT_TEXTURE1D - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_TEXTURE2D - D3D10_FORMAT_SUPPORT_TEXTURE2D - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_TEXTURE3D - D3D10_FORMAT_SUPPORT_TEXTURE3D - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_TEXTURECUBE - D3D10_FORMAT_SUPPORT_TEXTURECUBE - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_SHADER_LOAD - D3D10_FORMAT_SUPPORT_SHADER_LOAD - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_SHADER_SAMPLE - D3D10_FORMAT_SUPPORT_SHADER_SAMPLE - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON - D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT - D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_MIP - D3D10_FORMAT_SUPPORT_MIP - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_MIP_AUTOGEN - D3D10_FORMAT_SUPPORT_MIP_AUTOGEN - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_RENDER_TARGET - D3D10_FORMAT_SUPPORT_RENDER_TARGET - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_BLENDABLE - D3D10_FORMAT_SUPPORT_BLENDABLE - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_DEPTH_STENCIL - D3D10_FORMAT_SUPPORT_DEPTH_STENCIL - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_CPU_LOCKABLE - D3D10_FORMAT_SUPPORT_CPU_LOCKABLE - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE - D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_DISPLAY - D3D10_FORMAT_SUPPORT_DISPLAY - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT - D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET - D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD - D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_SHADER_GATHER - D3D10_FORMAT_SUPPORT_SHADER_GATHER - - - - No documentation. - - - bb205063 - D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST - D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST - - - - None. - - - None - None - - - -

Image file formats supported by D3DXCreatexxx and D3DX10Savexxx functions.

-
- -

See Types of Bitmaps (GDI+) for more information on some of these formats.

D3DX10 makes use of the Windows Imaging Component to implement the majority of the supported bitmap file types. See Windows Imaging Component Overview for additional information. -

-
- - bb172694 - D3DX10_IMAGE_FILE_FORMAT - D3DX10_IMAGE_FILE_FORMAT -
- - -

Windows bitmap (BMP) file format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette. The file extension for this format is .bmp.

-
- - bb172694 - D3DX10_IFF_BMP - D3DX10_IFF_BMP -
- - -

Joint Photographic Experts Group (JPEG) compressed file format. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files. The file extension for this format is .jpg.

-
- - bb172694 - D3DX10_IFF_JPG - D3DX10_IFF_JPG -
- - -

Portable Network Graphics (PNG) file format. A non-proprietary bitmap format using lossless compression. The file extension for this format is .png.

-
- - bb172694 - D3DX10_IFF_PNG - D3DX10_IFF_PNG -
- - -

DirectDraw surface (DDS) file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. The file extension for this format is .dds.

-
- - bb172694 - D3DX10_IFF_DDS - D3DX10_IFF_DDS -
- - -

Tagged Image File Format (TIFF). The file extensions for this format are .tif and .tiff.

-
- - bb172694 - D3DX10_IFF_TIFF - D3DX10_IFF_TIFF -
- - -

Graphics Interchange Format (GIF).The file extension for this format is .gif.

-
- - bb172694 - D3DX10_IFF_GIF - D3DX10_IFF_GIF -
- - -

Windows Media Photo format (WMP). This format is also known as HD Photo and JPEG XR. The file extensions for this format are .hdp, .jxr, and .wdp.

To work properly, requires that you initialize COM. Therefore, call CoInitialize or CoInitializeEx in your application before you call D3DX.

-
- - bb172694 - D3DX10_IFF_WMP - D3DX10_IFF_WMP -
- - -

Type of data contained in an input slot.

-
- -

Use these values to specify the type of data for a particular input element (see ) of an input-layout object.

-
- - bb205315 - D3D10_INPUT_CLASSIFICATION - D3D10_INPUT_CLASSIFICATION -
- - -

Input data is per-vertex data.

-
- - bb205315 - D3D10_INPUT_PER_VERTEX_DATA - D3D10_INPUT_PER_VERTEX_DATA -
- - -

Input data is per-instance data.

-
- - bb205315 - D3D10_INPUT_PER_INSTANCE_DATA - D3D10_INPUT_PER_INSTANCE_DATA -
- - -

Specifies how the CPU should respond when Map is called on a resource being used by the GPU.

-
- -

This enumeration is used by , , , and .

cannot be used with or D3D10_MAP_WRITE_NOOVERWRITE.

For more information about potential conflicts between the GPU and CPU during resource mapping, see Copying and Accessing Resource Data (Direct3D 10).

-
- - bb205321 - D3D10_MAP_FLAG - D3D10_MAP_FLAG -
- - -

Specifies that Map should return when the GPU blocks the CPU from accessing a resource.

-
- - bb205321 - D3D10_MAP_FLAG_DO_NOT_WAIT - D3D10_MAP_FLAG_DO_NOT_WAIT -
- - - None. - - - None - None - - - -

Identifies a resource to be accessed for reading and writing by the CPU. Applications may combine one or more of these flags.

-
- -

This enumeration is used in , , , and .

These remarks are divided into the following topics:

  • Meaning
  • Common
-
- - bb205318 - D3D10_MAP - D3D10_MAP -
- - -

Resource is mapped for reading. The resource must have been created with read access (see ).

-
- - bb205318 - D3D10_MAP_READ - D3D10_MAP_READ -
- - -

Resource is mapped for writing. The resource must have been created with write access (see ).

-
- - bb205318 - D3D10_MAP_WRITE - D3D10_MAP_WRITE -
- - -

Resource is mapped for reading and writing. The resource must have been created with read and write access (see and ).

-
- - bb205318 - D3D10_MAP_READ_WRITE - D3D10_MAP_READ_WRITE -
- - -

Resource is mapped for writing; the previous contents of the resource will be undefined. The resource must have been created with write access (see ).

-
- - bb205318 - D3D10_MAP_WRITE_DISCARD - D3D10_MAP_WRITE_DISCARD -
- - -

Resource is mapped for writing; the existing contents of the resource cannot be overwritten (see Remarks). This flag is only valid on vertex and index buffers. The resource must have been created with write access (see ). Cannot be used on a resource created with the flag.

-
- - bb205318 - D3D10_MAP_WRITE_NO_OVERWRITE - D3D10_MAP_WRITE_NO_OVERWRITE -
- - -

Specifies which pieces of mesh data to discard from the device. Used with .

-
- - bb172700 - D3DX10_MESH_DISCARD_FLAGS - D3DX10_MESH_DISCARD_FLAGS -
- - - No documentation. - - - bb172700 - D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER - D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER - - - - No documentation. - - - bb172700 - D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE - D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE - - - - No documentation. - - - bb172700 - D3DX10_MESH_DISCARD_POINTREPS - D3DX10_MESH_DISCARD_POINTREPS - - - - No documentation. - - - bb172700 - D3DX10_MESH_DISCARD_ADJACENCY - D3DX10_MESH_DISCARD_ADJACENCY - - - - No documentation. - - - bb172700 - D3DX10_MESH_DISCARD_DEVICE_BUFFERS - D3DX10_MESH_DISCARD_DEVICE_BUFFERS - - - -

Flags used to specify creation options for a mesh.

-
- -

A 32-bit mesh () can theoretically support (232)-1 faces and vertices. However, allocating memory for a mesh that large on a 32-bit operating system is not practical.

-
- - bb172698 - _D3DX10_MESH - _D3DX10_MESH -
- - -

The mesh has 32-bit indices instead of 16-bit indices. See Remarks.

-
- - bb172698 - D3DX10_MESH_32_BIT - D3DX10_MESH_32_BIT -
- - -

Signals that the mesh contains geometry shader adjacency data.

-
- - bb172698 - D3DX10_MESH_GS_ADJACENCY - D3DX10_MESH_GS_ADJACENCY -
- - - None. - - - None - None - - - -

Specifies the type of mesh optimization to be performed.

-
- -

The and optimization flags are mutually exclusive.

The D3DXMESHOPT_SHAREVB flag has been removed from this enumeration. Use instead, in D3DXMESH.

-
- - bb172699 - _D3DX10_MESHOPT - _D3DX10_MESHOPT -
- - -

Reorders faces to remove unused vertices and faces.

-
- - bb172699 - D3DX10_MESHOPT_COMPACT - D3DX10_MESHOPT_COMPACT -
- - -

Reorders faces to optimize for fewer attribute bundle state changes and enhanced DrawSubset performance.

-
- - bb172699 - D3DX10_MESHOPT_ATTR_SORT - D3DX10_MESHOPT_ATTR_SORT -
- - -

Reorders faces to increase the cache hit rate of vertex caches.

-
- - bb172699 - D3DX10_MESHOPT_VERTEX_CACHE - D3DX10_MESHOPT_VERTEX_CACHE -
- - -

Reorders faces to maximize length of adjacent triangles.

-
- - bb172699 - D3DX10_MESHOPT_STRIP_REORDER - D3DX10_MESHOPT_STRIP_REORDER -
- - -

Optimize the faces only; do not optimize the vertices.

-
- - bb172699 - D3DX10_MESHOPT_IGNORE_VERTS - D3DX10_MESHOPT_IGNORE_VERTS -
- - -

While attribute sorting, do not split vertices that are shared between attribute groups.

-
- - bb172699 - D3DX10_MESHOPT_DO_NOT_SPLIT - D3DX10_MESHOPT_DO_NOT_SPLIT -
- - -

Affects the vertex cache size. Using this flag specifies a default vertex cache size that works well on legacy hardware.

-
- - bb172699 - D3DX10_MESHOPT_DEVICE_INDEPENDENT - D3DX10_MESHOPT_DEVICE_INDEPENDENT -
- - -

Categories of debug messages. This will identify the category of a message when retrieving a message with and when adding a message with . When creating an info queue filter, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.

-
- -

This is part of the Information Queue feature. See Interface.

-
- - bb205323 - D3D10_MESSAGE_CATEGORY - D3D10_MESSAGE_CATEGORY -
- - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED - D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_MISCELLANEOUS - D3D10_MESSAGE_CATEGORY_MISCELLANEOUS - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_INITIALIZATION - D3D10_MESSAGE_CATEGORY_INITIALIZATION - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_CLEANUP - D3D10_MESSAGE_CATEGORY_CLEANUP - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_COMPILATION - D3D10_MESSAGE_CATEGORY_COMPILATION - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_STATE_CREATION - D3D10_MESSAGE_CATEGORY_STATE_CREATION - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_STATE_SETTING - D3D10_MESSAGE_CATEGORY_STATE_SETTING - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_STATE_GETTING - D3D10_MESSAGE_CATEGORY_STATE_GETTING - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION - D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY_EXECUTION - D3D10_MESSAGE_CATEGORY_EXECUTION - - - -

Debug messages for setting up an info-queue filter (see ); use these messages to allow or deny message categories to pass through the storage and retrieval filters. These IDs are used by methods such as or .

-
- - bb205324 - D3D10_MESSAGE_ID - D3D10_MESSAGE_ID -
- - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_UNKNOWN - D3D10_MESSAGE_ID_UNKNOWN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD - D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD - D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD - D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD - D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD - D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD - D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD - D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD - D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_STRING_FROM_APPLICATION - D3D10_MESSAGE_ID_STRING_FROM_APPLICATION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_THIS - D3D10_MESSAGE_ID_CORRUPTED_THIS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15 - D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING - D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY - D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT - D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA - D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA - D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN - D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS - D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS - D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY - D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS - D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC - D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS - D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION - D3D10_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN - D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC - D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION - D3D10_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN - D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC - D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION - D3D10_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN - D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC - D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION - D3D10_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY - D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE - D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE - D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY - D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE - D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE - D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK - D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS - D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC - D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED - D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED - D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER - D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER - D3D10_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED - D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY - D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY - D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER - D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED - D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY - D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT - D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR - D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH - D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH - D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID - D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY - D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY - D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY - D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY - D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY - D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY - D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID - D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE - D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE - D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE - D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE - D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE - D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX - D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE - D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID - D3D10_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE - D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS - D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED - D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN - D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED - D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE - D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE - D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS - D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED - D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN - D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE - D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED - D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE - D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE - D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS - D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED - D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN - D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE - D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED - D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE - D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE - D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS - D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED - D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN - D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE - D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED - D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED - D3D10_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED - D3D10_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS - D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN - D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN - D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE - D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_THREADING_MODE - D3D10_MESSAGE_ID_REF_THREADING_MODE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION - D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION - D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION - D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE - D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER - D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY - D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_REF_INFO - D3D10_MESSAGE_ID_REF_INFO - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW - D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW - D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW - D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW - D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW - D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS - D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL - D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH - D3D10_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH - D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT - D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED - D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY - D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED - D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED - D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED - D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE - D3D10_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER - D3D10_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING - D3D10_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 - D3D10_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT - D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT - D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT - D3D10_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN - D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN - D3D10_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET - D3D10_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC - D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH - D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS - D3D10_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH - D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY - D3D10_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY - D3D10_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER - D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED - D3D10_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - D3D10_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN - D3D10_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN - D3D10_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATECOUNTER_NULLDESC - D3D10_MESSAGE_ID_CREATECOUNTER_NULLDESC - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER - D3D10_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - D3D10_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE - D3D10_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED - D3D10_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION - D3D10_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_BEGIN_DUPLICATE - D3D10_MESSAGE_ID_QUERY_BEGIN_DUPLICATE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS - D3D10_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION - D3D10_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS - D3D10_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN - D3D10_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE - D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS - D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL - D3D10_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH - D3D10_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN - D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE - D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH - D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_D3D10_MESSAGES_END - D3D10_MESSAGE_ID_D3D10_MESSAGES_END - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_D3D10L9_MESSAGES_START - D3D10_MESSAGE_ID_D3D10L9_MESSAGES_START - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED - D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED - D3D10_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS - D3D10_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS - D3D10_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS - D3D10_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND - D3D10_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D - D3D10_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE - D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE - D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX - D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS - D3D10_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED - D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS - D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY - D3D10_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK - D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK - D3D10_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT - D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE - D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE - D3D10_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES - D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET - D3D10_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER - D3D10_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE - D3D10_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE - D3D10_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT - D3D10_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS - D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES - D3D10_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED - D3D10_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED - D3D10_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED - D3D10_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED - D3D10_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED - D3D10_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND - D3D10_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED - D3D10_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED - D3D10_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 - D3D10_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED - D3D10_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO - D3D10_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION - D3D10_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED - D3D10_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR - D3D10_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA - D3D10_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP - D3D10_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED - D3D10_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT - D3D10_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT - - - - No documentation. - - - bb205324 - D3D10_MESSAGE_ID_D3D10L9_MESSAGES_END - D3D10_MESSAGE_ID_D3D10L9_MESSAGES_END - - - -

Debug message severity levels for an information queue.

-
- -

Use these values to allow or deny message categories to pass through the storage and retrieval filters for an information queue (see ). This API is used by .

-
- - bb205325 - D3D10_MESSAGE_SEVERITY - D3D10_MESSAGE_SEVERITY -
- - -

Defines some type of corruption which has occurred.

-
- - bb205325 - D3D10_MESSAGE_SEVERITY_CORRUPTION - D3D10_MESSAGE_SEVERITY_CORRUPTION -
- - -

Defines an error message.

-
- - bb205325 - D3D10_MESSAGE_SEVERITY_ERROR - D3D10_MESSAGE_SEVERITY_ERROR -
- - -

Defines a warning message.

-
- - bb205325 - D3D10_MESSAGE_SEVERITY_WARNING - D3D10_MESSAGE_SEVERITY_WARNING -
- - -

Defines an information message.

-
- - bb205325 - D3D10_MESSAGE_SEVERITY_INFO - D3D10_MESSAGE_SEVERITY_INFO -
- - -

These flags are used to control how generates normal maps. Any number of these flags may be OR'd together in any combination.

-
- - bb172701 - D3DX10_NORMALMAP_FLAG - D3DX10_NORMALMAP_FLAG -
- - - No documentation. - - - bb172701 - D3DX10_NORMALMAP_MIRROR_U - D3DX10_NORMALMAP_MIRROR_U - - - - No documentation. - - - bb172701 - D3DX10_NORMALMAP_MIRROR_V - D3DX10_NORMALMAP_MIRROR_V - - - - No documentation. - - - bb172701 - D3DX10_NORMALMAP_MIRROR - D3DX10_NORMALMAP_MIRROR - - - - No documentation. - - - bb172701 - D3DX10_NORMALMAP_INVERTSIGN - D3DX10_NORMALMAP_INVERTSIGN - - - - No documentation. - - - bb172701 - D3DX10_NORMALMAP_COMPUTE_OCCLUSION - D3DX10_NORMALMAP_COMPUTE_OCCLUSION - - - -

Flags that describe miscellaneous query behavior.

-
- -

This flag is part of a query description (see ).

-
- - bb172406 - D3D10_QUERY_MISC_FLAG - D3D10_QUERY_MISC_FLAG -
- - -

Tell the hardware that if it is not yet sure if something is hidden or not to draw it anyway. This is only used with an occlusion predicate. Predication data cannot be returned to your application via when using this flag.

-
- - bb172406 - D3D10_QUERY_MISC_PREDICATEHINT - D3D10_QUERY_MISC_PREDICATEHINT -
- - - None. - - - None - None - - - -

Query types.

-
- - bb205335 - D3D10_QUERY - D3D10_QUERY -
- - -

Determines whether or not the GPU is finished processing commands. When the GPU is finished processing commands GetData will return , and pData will point to a with a value of TRUE. When using this type of query, Begin is disabled.

-
- - bb205335 - D3D10_QUERY_EVENT - D3D10_QUERY_EVENT -
- - -

Get the number of samples that passed the depth and stencil tests in between Begin and End. GetData returns a UINT64. If a depth or stencil test is disabled, then each of those tests will be counted as a pass.

-
- - bb205335 - D3D10_QUERY_OCCLUSION - D3D10_QUERY_OCCLUSION -
- - -

Get a timestamp value where GetData returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See . When using this type of query, Begin is disabled.

-
- - bb205335 - D3D10_QUERY_TIMESTAMP - D3D10_QUERY_TIMESTAMP -
- - -

Determines whether or not a is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. GetData will return a . This type of query should only be invoked once per frame or less.

-
- - bb205335 - D3D10_QUERY_TIMESTAMP_DISJOINT - D3D10_QUERY_TIMESTAMP_DISJOINT -
- - -

Get pipeline statistics, such as the number of pixel shader invocations in between Begin and End. GetData will return a .

-
- - bb205335 - D3D10_QUERY_PIPELINE_STATISTICS - D3D10_QUERY_PIPELINE_STATISTICS -
- - -

Similar to , except GetData returns a indicating whether or not any samples passed the depth and stencil tests - TRUE meaning at least one passed, meaning none passed.

-
- - bb205335 - D3D10_QUERY_OCCLUSION_PREDICATE - D3D10_QUERY_OCCLUSION_PREDICATE -
- - -

Get streaming output statistics, such as the number of primitives streamed out in between Begin and End. GetData will return a structure.

-
- - bb205335 - D3D10_QUERY_SO_STATISTICS - D3D10_QUERY_SO_STATISTICS -
- - -

Determines whether or not any of the streaming output buffers overflowed in between Begin and End. GetData returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

-
- - bb205335 - D3D10_QUERY_SO_OVERFLOW_PREDICATE - D3D10_QUERY_SO_OVERFLOW_PREDICATE -
- - -

Specifies how to access a resource used in a render-target view.

-
- -

This enumeration is used in to create a render-target view.

-
- - bb172414 - D3D10_RTV_DIMENSION - D3D10_RTV_DIMENSION -
- - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_UNKNOWN - D3D10_RTV_DIMENSION_UNKNOWN - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_BUFFER - D3D10_RTV_DIMENSION_BUFFER - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_TEXTURE1D - D3D10_RTV_DIMENSION_TEXTURE1D - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_TEXTURE1DARRAY - D3D10_RTV_DIMENSION_TEXTURE1DARRAY - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_TEXTURE2D - D3D10_RTV_DIMENSION_TEXTURE2D - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_TEXTURE2DARRAY - D3D10_RTV_DIMENSION_TEXTURE2DARRAY - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_TEXTURE2DMS - D3D10_RTV_DIMENSION_TEXTURE2DMS - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY - D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY - - - - No documentation. - - - bb172414 - D3D10_RTV_DIMENSION_TEXTURE3D - D3D10_RTV_DIMENSION_TEXTURE3D - - - -

Identifies the type of resource being used.

-
- -

This enumeration is used in , and .

-
- - bb172411 - D3D10_RESOURCE_DIMENSION - D3D10_RESOURCE_DIMENSION -
- - - No documentation. - - - bb172411 - D3D10_RESOURCE_DIMENSION_UNKNOWN - D3D10_RESOURCE_DIMENSION_UNKNOWN - - - - No documentation. - - - bb172411 - D3D10_RESOURCE_DIMENSION_BUFFER - D3D10_RESOURCE_DIMENSION_BUFFER - - - - No documentation. - - - bb172411 - D3D10_RESOURCE_DIMENSION_TEXTURE1D - D3D10_RESOURCE_DIMENSION_TEXTURE1D - - - - No documentation. - - - bb172411 - D3D10_RESOURCE_DIMENSION_TEXTURE2D - D3D10_RESOURCE_DIMENSION_TEXTURE2D - - - - No documentation. - - - bb172411 - D3D10_RESOURCE_DIMENSION_TEXTURE3D - D3D10_RESOURCE_DIMENSION_TEXTURE3D - - - -

Identifies other, less common options for resources.

-
- -

This enumeration is used in , , , , , and .

These flags can be combined by bitwise OR.

and are mutually exclusive flags: either one may be set in the resource creation calls but not both simultaneously.

-
- - bb172412 - D3D10_RESOURCE_MISC_FLAG - D3D10_RESOURCE_MISC_FLAG -
- - -

Enables an application to call on a texture resource. The resource must be created with the bind flags that specify that the resource is a render target and a shader resource.

-
- - bb172412 - D3D10_RESOURCE_MISC_GENERATE_MIPS - D3D10_RESOURCE_MISC_GENERATE_MIPS -
- - -

Enables the sharing of resource data between two or more Direct3D devices. The only resources that can be shared are 2D non-mipmapped textures.

WARP and REF devices do not support shared resources. Attempting to create a resource with this flag on either a WARP or REF device will cause the create method to return an E_OUTOFMEMORY error code.

-
- - bb172412 - D3D10_RESOURCE_MISC_SHARED - D3D10_RESOURCE_MISC_SHARED -
- - -

Enables an application to create a cube texture from a Texture2DArray that contains 6 textures.

-
- - bb172412 - D3D10_RESOURCE_MISC_TEXTURECUBE - D3D10_RESOURCE_MISC_TEXTURECUBE -
- - -

Enables the resource created to be synchronized using the and ReleaseSync APIs. The following resource creation D3D10 APIs, that all take a parameter, have been extended to support the new flag.

  • ID3D10Device1::CreateTexture1D
  • ID3D10Device1::CreateTexture2D
  • ID3D10Device1::CreateTexture3D
  • ID3D10Device1::CreateBuffer

If any of the listed functions are called with the flag set, the interface returned can be queried for an interface, which implements AcquireSync and ReleaseSync APIs to synchronize access to the surface. The device creating the surface, and any other device opening the surface (using OpenSharedResource) is required to call before any rendering commands to the surface, and when it is done rendering.

WARP and REF devices do not support shared resources. Attempting to create a resource with this flag on either a WARP or REF device will cause the create method to return an E_OUTOFMEMORY error code.

-
- - bb172412 - D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX - D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX -
- - -

Enables a surface to be used for GDI interoperability. Setting this flag enables rendering on the surface via .

-
- - bb172412 - D3D10_RESOURCE_MISC_GDI_COMPATIBLE - D3D10_RESOURCE_MISC_GDI_COMPATIBLE -
- - - None. - - - None - None - - - -

Identifies expected resource use during rendering. The usage directly reflects whether a resource is accessible by the CPU and/or the GPU.

-
- -

An application identifies the way a resource is intended to be used (its usage) in a resource description. There are several structures for creating resources including: , , , , and .

Differences between Direct3D 9 and Direct3D 10:

In Direct3D 9, you specify the type of memory a resource should be created in at resource creation time (using ). It was an application's job to decide what memory pool would provide the best combination of functionality and performance.

In Direct3D 10, an application no longer specifies what type of memory (the pool) to create a resource in. Instead, you specify the intended usage of the resource, and let the runtime (in concert with the driver and a memory manager) choose the type of memory that will achieve the best performance.

?

-
- - bb172499 - D3D10_USAGE - D3D10_USAGE -
- - -

A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.

-
- - bb172499 - D3D10_USAGE_DEFAULT - D3D10_USAGE_DEFAULT -
- - -

A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.

-
- - bb172499 - D3D10_USAGE_IMMUTABLE - D3D10_USAGE_IMMUTABLE -
- - -

A resource that is accessible by both the GPU and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To write to a dynamic resource on the CPU, use a Map method. You can write to a dynamic resource on the GPU using CopyResource or CopySubresourceRegion.

-
- - bb172499 - D3D10_USAGE_DYNAMIC - D3D10_USAGE_DYNAMIC -
- - -

A resource that supports data transfer (copy) from the GPU to the CPU.

-
- - bb172499 - D3D10_USAGE_STAGING - D3D10_USAGE_STAGING -
- - -

Sprite flags that tell the sprite drawing API how to behave. These are passed into .

-
- -

After a front-to-back or back-to-front sort is done, it will automatically do a secondary sort by texture. This is helpful for when there are many sprites with the same texture all on the same plane, such as when drawing the user interface in a game.

-
- - bb172704 - D3DX10_SPRITE_FLAG - D3DX10_SPRITE_FLAG -
- - - No documentation. - - - bb172704 - D3DX10_SPRITE_SORT_TEXTURE - D3DX10_SPRITE_SORT_TEXTURE - - - - No documentation. - - - bb172704 - D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT - D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT - - - - No documentation. - - - bb172704 - D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK - D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK - - - - No documentation. - - - bb172704 - D3DX10_SPRITE_SAVE_STATE - D3DX10_SPRITE_SAVE_STATE - - - - No documentation. - - - bb172704 - D3DX10_SPRITE_ADDREF_TEXTURES - D3DX10_SPRITE_ADDREF_TEXTURES - - - - None. - - - None - None - - - -

Describes multi-sampling parameters for a resource.

-
- -

The default sampler mode, with no anti-aliasing, has a count of 1 and a quality level of 0.

If multi-sample antialiasing is being used, all bound render targets and depth buffers must have the same sample counts and quality levels.

Differences between Direct3D 10.0 and Direct3D 10.1 and between Direct3D 10.0 and Direct3D 11:

Direct3D 10.1 has defined two standard quality levels: and in the enumeration in D3D10_1.h.

Direct3D 11 has defined two standard quality levels: and in the enumeration in D3D11.h.

?

-
- - bb173072 - D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS - D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS -
- - -

The number of multisamples per pixel.

-
- - bb173072 - D3D10_STANDARD_MULTISAMPLE_PATTERN - D3D10_STANDARD_MULTISAMPLE_PATTERN -
- - -

The image quality level. The higher the quality, the lower the performance. The valid range is between zero and one less than the level returned by for Direct3D 10 or for Direct3D 11.

For Direct3D 10.1 and Direct3D 11, you can use two special quality level values. For more information about these quality level values, see Remarks.

-
- - bb173072 - D3D10_CENTER_MULTISAMPLE_PATTERN - D3D10_CENTER_MULTISAMPLE_PATTERN -
- - -

The stencil operations that can be performed during depth-stencil testing.

-
- - bb172455 - D3D10_STENCIL_OP - D3D10_STENCIL_OP -
- - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_KEEP - D3D10_STENCIL_OP_KEEP - - - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_ZERO - D3D10_STENCIL_OP_ZERO - - - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_REPLACE - D3D10_STENCIL_OP_REPLACE - - - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_INCR_SAT - D3D10_STENCIL_OP_INCR_SAT - - - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_DECR_SAT - D3D10_STENCIL_OP_DECR_SAT - - - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_INVERT - D3D10_STENCIL_OP_INVERT - - - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_INCR - D3D10_STENCIL_OP_INCR - - - - No documentation. - - - bb172455 - D3D10_STENCIL_OP_DECR - D3D10_STENCIL_OP_DECR - - - -

Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.

-
- - bb172483 - D3D10_TEXTURE_ADDRESS_MODE - D3D10_TEXTURE_ADDRESS_MODE -
- - -

Tile the texture at every integer junction. For example, for u values between 0 and 3, the texture is repeated three times.

-
- - bb172483 - D3D10_TEXTURE_ADDRESS_WRAP - D3D10_TEXTURE_ADDRESS_WRAP -
- - -

Flip the texture at every integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on.

-
- - bb172483 - D3D10_TEXTURE_ADDRESS_MIRROR - D3D10_TEXTURE_ADDRESS_MIRROR -
- - -

Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.

-
- - bb172483 - D3D10_TEXTURE_ADDRESS_CLAMP - D3D10_TEXTURE_ADDRESS_CLAMP -
- - -

Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in or HLSL code.

-
- - bb172483 - D3D10_TEXTURE_ADDRESS_BORDER - D3D10_TEXTURE_ADDRESS_BORDER -
- - -

Similar to and . Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.

-
- - bb172483 - D3D10_TEXTURE_ADDRESS_MIRROR_ONCE - D3D10_TEXTURE_ADDRESS_MIRROR_ONCE -
- - -

The different faces of a cube texture.

-
- - bb172482 - D3D10_TEXTURECUBE_FACE - D3D10_TEXTURECUBE_FACE -
- - -

Positive X face.

-
- - bb172482 - D3D10_TEXTURECUBE_FACE_POSITIVE_X - D3D10_TEXTURECUBE_FACE_POSITIVE_X -
- - -

Negative X face.

-
- - bb172482 - D3D10_TEXTURECUBE_FACE_NEGATIVE_X - D3D10_TEXTURECUBE_FACE_NEGATIVE_X -
- - -

Positive Y face.

-
- - bb172482 - D3D10_TEXTURECUBE_FACE_POSITIVE_Y - D3D10_TEXTURECUBE_FACE_POSITIVE_Y -
- - -

Negative Y face.

-
- - bb172482 - D3D10_TEXTURECUBE_FACE_NEGATIVE_Y - D3D10_TEXTURECUBE_FACE_NEGATIVE_Y -
- - -

Positive Z face.

-
- - bb172482 - D3D10_TEXTURECUBE_FACE_POSITIVE_Z - D3D10_TEXTURECUBE_FACE_POSITIVE_Z -
- - -

Negative Z face.

-
- - bb172482 - D3D10_TEXTURECUBE_FACE_NEGATIVE_Z - D3D10_TEXTURECUBE_FACE_NEGATIVE_Z -
- - - Functions - - - - - Constant SdkVersion. - D3D10_SDK_VERSION - - - Constant SdkVersion1. - D3D10_1_SDK_VERSION - - - -

Create a Direct3D 10.1 device and a swap chain.

-
-

Pointer to a .

-

The type of driver for the device. See .

-

A handle to the DLL that implements a software rasterizer. Must be null if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.

-

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

-

The version of hardware that is available for acceleration (see ).

-

Bit flag that indicates the version of the SDK. Should be , defined in D3D10.h.

-

Description of the swap chain. See .

-

Address of a reference to an .

-

Address of a reference to an Interface that will receive the newly created device.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

To create a device without creating a swap chain, see .

This method requires Windows Vista Service Pack 1, Windows Server 2008, or later release of Windows.

Note??If you call this API in a Session 0 process, it returns .

-
- - bb694527 - HRESULT D3D10CreateDeviceAndSwapChain1([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] D3D10_FEATURE_LEVEL1 HardwareLevel,[In] unsigned int SDKVersion,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out] IDXGISwapChain** ppSwapChain,[Out] ID3D10Device1** ppDevice) - D3D10CreateDeviceAndSwapChain1 -
- - -

Create a Direct3D 10.1 device that represents the display adapter.

-
-

Pointer to the display adapter (see ) when creating a hardware device; otherwise set this parameter to null. If null is specified when creating a hardware device, Direct3D will use the first adapter enumerated by EnumAdapters.

-

The device-driver type (see ). The driver type determines the type of device you will create.

-

This is set to null except for driver types.

-

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

-

The version of hardware that is available for acceleration (see ).

-

Bit flag that indicates the version of the SDK. Should be , defined in D3D10.h.

-

Address of a reference to the device created (see Interface).

-

This method returns one of the following Direct3D 10 Return Codes.

- -

To create a device and a swap chain at the same time, see .

This method requires Windows Vista Service Pack 1, Windows Server 2008, or later release of Windows.

The object returned by implements the interface and can be queried for other interfaces the object supports. To retrieve the interface of the object the following code could be used.

  * pDXGIDevice;	
-            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice); 
-
- - bb694526 - HRESULT D3D10CreateDevice1([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] D3D10_FEATURE_LEVEL1 HardwareLevel,[In] unsigned int SDKVersion,[Out, Fast] ID3D10Device1** ppDevice) - D3D10CreateDevice1 -
- - -

Create an effect pool (or shared memory location), to enable sharing variables between effects.

-
-

A reference to a compiled effect.

-

Length of pData.

-

Effect compile options.

-

A reference to the device (see Interface).

-

A reference to the Interface that contains the effect pool.

-

Returns one of the following Direct3D 10 Return Codes.

- -

A pool is a shared location in memory. Effect variables that are located in a pool can be updated once, and the effect system will take care of updating each effect that uses that variable. To pool an effect variable, tell the effect to locate the variable in a pool when the effect is created, using a helper function such as .

For help compiling an effect, see Compile an Effect (Direct3D 10).

-
- - bb205089 - HRESULT D3D10CreateEffectPoolFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[Out, Fast] ID3D10EffectPool** ppEffectPool) - D3D10CreateEffectPoolFromMemory -
- - -

Create a state block.

-
-

The device for which the state block will be created.

-

Indicates which parts of the device state will be captured when calling and reapplied when calling . See remarks.

-

Address of a reference to the buffer created (see Interface).

-

This method returns one of the following Direct3D 10 Return Codes.

- -

A state block is a collection of device state, and is used for saving and restoring device state. Use a state-block mask to enable subsets of state for saving and restoring.

The structure can be filled manually or by using any of the D3D10StateBlockMaskXXX APIs. A state block mask can also be obtained by calling or .

Differences between Direct3D 9 and Direct3D 10:

In Direct3D 10, a state block object does not contain any valid information about the state of the device until is called. In Direct3D 9, state is saved in a state block object, when it is created.

?

-
- - bb205090 - HRESULT D3D10CreateStateBlock([In] ID3D10Device* pDevice,[In] D3D10_STATE_BLOCK_MASK* pStateBlockMask,[Out, Fast] ID3D10StateBlock** ppStateBlock) - D3D10CreateStateBlock -
- - -

Compile an effect. -

Note??Use D3DX10CompileFromMemory instead of this function.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

Returns one of the following Direct3D 10 Return Codes.

- -

This function uses the version of the HLSL compiler released in the November 2006 DirectX SDK.

For an example, see Compile an Effect (Direct3D 10).

-
- - bb205083 - HRESULT D3D10CompileEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] D3DCOMPILE_SHADER_FLAGS HLSLFlags,[In] D3DCOMPILE_EFFECT_FLAGS FXFlags,[In] ID3D10Blob** ppCompiledEffect,[In] ID3D10Blob** ppErrors) - D3D10CompileEffectFromMemory -
- - -

Creates an from a buffer containing a compiled effect.

-
-

A reference to a compiled effect.

-

Length of pData.

-

Effect compile options.

-

A reference to the device (see Interface).

-

Optional. A reference to an memory space for effect variables that are shared across effects (see Interface).

-

A reference to an Interface which contains the created effect.

-

Returns one of the following Direct3D 10 Return Codes.

- -

This method is used to create an Interface object from an effect that has been compiled before runtime and loaded into memory. For help precompiling an effect, see Offline Compiling. To load and compile an ASCII .fx file see Compile an Effect (Direct3D 10).

-
- - bb205088 - HRESULT D3D10CreateEffectFromMemory([In] void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[Out, Fast] ID3D10Effect** ppEffect) - D3D10CreateEffectFromMemory -
- - -

Create a Direct3D 10.0 device and a swap chain.

-
-

Pointer to a .

-

The type of driver for the device. See .

-

A handle to the DLL that implements a software rasterizer. Must be null if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.

-

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

-

Bit flag that indicates the version of the SDK. Should be , defined in d3d10.h.

-

Description of the swap chain. See .

-

Address of a reference to an .

-

Address of a reference to an Interface that will receive the newly created device.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

To create a device without creating a swap chain, see .

Note??If you call this API in a Session 0 process, it returns .

-
- - bb205087 - HRESULT D3D10CreateDeviceAndSwapChain([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] unsigned int SDKVersion,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out] IDXGISwapChain** ppSwapChain,[Out] ID3D10Device** ppDevice) - D3D10CreateDeviceAndSwapChain -
- - -

Create a Direct3D 10.0 device that represents the display adapter.

-
-

Pointer to the display adapter (see ) when creating a hardware device; otherwise set this parameter to null. If null is specified when creating a hardware device, Direct3D will use the first adapter enumerated by EnumAdapters.

-

The device-driver type (see ). The driver type determines the type of device you will create.

-

Reserved. Set to null.

-

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

-

Bit flag that indicates the version of the SDK. Should always be .

-

Address of a reference to the device created (see Interface).

-

This method returns one of the following Direct3D 10 Return Codes.

- -

This example creates a reference device.

 * g_pd3dDevice = null;	
-            ( null, , null, 0,  , &g_pd3dDevice );              

To create a device and a swap chain at the same time, see .

The object returned by implements the interface and can be queried for other interfaces the object supports. To retrieve the interface of the object the following code could be used.

  * pDXGIDevice;	
-            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice); 
-
- - bb205086 - HRESULT D3D10CreateDevice([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D10_CREATE_DEVICE_FLAG Flags,[In] unsigned int SDKVersion,[Out, Fast] ID3D10Device** ppDevice) - D3D10CreateDevice -
- - -

Get the vertex shader profile best suited to a given device.

-
- No documentation. -

The shader profile.

- - bb205099 - const char* D3D10GetVertexShaderProfile([In] ID3D10Device* pDevice) - D3D10GetVertexShaderProfile -
- - -

Get the geometry shader profile best suited to a given device.

-
- No documentation. -

The shader profile.

- - bb205093 - const char* D3D10GetGeometryShaderProfile([In] ID3D10Device* pDevice) - D3D10GetGeometryShaderProfile -
- - -

Get the pixel shader profile best suited to a given device.

-
- No documentation. -

The shader profile.

- - bb205097 - const char* D3D10GetPixelShaderProfile([In] ID3D10Device* pDevice) - D3D10GetPixelShaderProfile -
- - - Functions - - - - - -

Get a Direct3D 10.1 device interface reference from a Direct3D 10.0 interface reference.

-
-

Pointer to the Direct3D 10.0 device (see the interface).

-

Pointer to the Direct3D 10.1 device (see the interface).

-

This function returns one of the following Direct3D 10 Return Codes. If a Direct3D 10.1 device interface can be acquired, this function succeeds and passes a reference to the 10.1 interface using the ppDevice parameter. If a Direct3D 10.1 device interface cannot be acquired, this function returns E_FAIL, and will not return anything for the ppDevice parameter.

- -

For this function to succeed, you must have acquired the supplied reference using a call to the function, the function, the function, or the function.

You can only create a Direct3D 10.1 device on computers running Windows Vista Service Pack 1 or later, and with Direct3D 10.1-compatible hardware installed. This function will return E_FAIL on any computer not meeting these requirements. - However, you can call this function on any version of Windows that has the D3DX10 DLL installed.

-
- - bb694539 - HRESULT D3DX10GetFeatureLevel1([In] ID3D10Device* pDevice,[In] ID3D10Device1** ppDevice1) - D3DX10GetFeatureLevel1 -
- - -

Creates a font object for a device and font.

Note??Instead of using this function, we recommend that you use DirectWrite and the DirectXTK library, SpriteFont class.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

- -

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DXCreateFontA because ANSI strings are being used.

If you want more information about font parameters, see The Logical Font.

-
- - bb172664 - HRESULT D3DX10CreateFontW([In] ID3D10Device* pDevice,[In] int Height,[In] unsigned int Width,[In] unsigned int Weight,[In] unsigned int MipLevels,[In] BOOL Italic,[In] unsigned int CharSet,[In] unsigned int OutputPrecision,[In] unsigned int Quality,[In] unsigned int PitchAndFamily,[In] const wchar_t* pFaceName,[Out, Fast] ID3DX10Font** ppFont) - D3DX10CreateFontW -
- - -

Creates a font object.

Note??Instead of using this function, we recommend that you use DirectWrite and the DirectXTK library, SpriteFont class.

-
- No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172665 - HRESULT D3DX10CreateFontIndirectW([In] ID3D10Device* pDevice,[In] const D3DX10_FONT_DESCW* pDesc,[Out, Fast] ID3DX10Font** ppFont) - D3DX10CreateFontIndirectW -
- - -

Create the best Direct3D device and a swap chain.

-
-

Pointer to a .

-

The type of driver for the device. See .

-

A handle to the DLL that implements a software rasterizer. Must be null if DriverType is non-software. The HMODULE of a DLL can be obtained with LoadLibrary, LoadLibraryEx, or GetModuleHandle.

-

Optional. Device creation flags (see ) that enable API layers. These flags can be bitwise OR'd together.

-

Description of the swap chain. See .

-

Address of a reference to an .

-

Address of a reference to an Interface that will receive the newly created device.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

To create the best device, this method implements more than one device creation option. First, the method attempts to create a 10.1 device (and swap chain). If that fails, the method attempts to create a 10.0 device. If that fails, the method will fail. If your application needs to create only a 10.1 device, or a 10.0 device only, use these APIs instead:

  • Use to create a Direct3D 10.0 (only) device and swap chain.
  • Use to create a Direct3D 10.1 (only) device and swap chain.

This method requires Windows Vista Service Pack 1.

-
- - bb694538 - HRESULT D3DX10CreateDeviceAndSwapChain([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] unsigned int Flags,[In] DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[In] IDXGISwapChain** ppSwapChain,[In] ID3D10Device** ppDevice) - D3DX10CreateDeviceAndSwapChain -
- - -

Create a sprite for drawing a 2D texture.

Note??Instead of using this function, we recommend that you use Direct2D and the DirectXTK library, SpriteBatch class.

-
- No documentation. - No documentation. - No documentation. -

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

- - bb172670 - HRESULT D3DX10CreateSprite([In] ID3D10Device* pDevice,[In] unsigned int cDeviceBufferSize,[Out, Fast] ID3DX10Sprite** ppSprite) - D3DX10CreateSprite -
- - -

Verify that the version of D3DX you compiled with is the version that you are running.

-
-

Use . See remarks.

-

Use D3DX10_SDK_VERSION. See remarks.

-

If the version doesn't match, the function will return (a number less than or equal to 0, the number itself has no meaning).

- -

Use this function during the initialization of your application.

  hr; if( FAILED( (, D3DX10_SDK_VERSION) ) ) return E_FAIL;	
-            
-
- - bb172639 - HRESULT D3DX10CheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DX10SdkVersion) - D3DX10CheckVersion -
- - -

Create the best Direct3D 10 device that represents the display adapter. If a Direct3D 10.1-compatible device can be created, it will be possible to acquire an Interface reference from the returned device interface reference.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

This function returns one of the following Direct3D 10 Return Codes.

- -

This function attempts to create the best device for the hardware. First, the function attempts to create a 10.1 device. If a 10.1 device cannot be created, the function attempts to create a 10.0 device. If neither device is successfully created, the function returns E_FAIL.

If your application needs to create only a 10.1 device, or a 10.0 device only, use the following functions instead:

  • Use the function to create a Direct3D 10.0 device only.
  • Use the function to create a Direct3D 10.1 device only.
  • Use the function to get an interface reference from an interface reference.

A Direct3D 10.1 device can only be created on computers running Windows Vista Service Pack 1 or later, and with Direct3D 10.1-compatible hardware installed. However, it is legal to call this function on computers running any version of Windows that has the D3DX10 DLL installed.

-
- - bb694537 - HRESULT D3DX10CreateDevice([In] IDXGIAdapter* pAdapter,[In] D3D10_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] unsigned int Flags,[In] ID3D10Device** ppDevice) - D3DX10CreateDevice -
- - -

Create a shader-resource view from a file.

-
-

A reference to the device (see Interface) that will use the resource.

-

Name of the file that contains the shader-resource view. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

-

Pointer to a thread-pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

-

Address of a reference to the shader-resource view (see Interface).

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

For a list of supported image formats, see .

-
- - bb172667 - HRESULT D3DX10CreateShaderResourceViewFromFileW([In] ID3D10Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) - D3DX10CreateShaderResourceViewFromFileW -
- - -

Save a texture to a file.

-
-

Pointer to the texture to be saved. See Interface.

-

The format the texture will be saved as (see ). is the preferred format since it is the only option that supports all the formats in .

-

Name of the destination output file where the texture will be saved. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

The return value is one of the values listed in Direct3D 10 Return Codes; use the return value to see if the DestFormat is supported.

- -

writes out the extra DDS_HEADER_DXT10 structure for the input texture only if necessary (for example, because the input texture is in standard RGB (sRGB) format). If writes out the DDS_HEADER_DXT10 structure, it sets the dwFourCC member of the DDS_PIXELFORMAT structure for the texture to DX10 to indicate the prescense of the DDS_HEADER_DXT10 extended header.

-
- - bb172684 - HRESULT D3DX10SaveTextureToFileW([In] ID3D10Resource* pSrcTexture,[In] D3DX10_IMAGE_FILE_FORMAT DestFormat,[In] const wchar_t* pDestFile) - D3DX10SaveTextureToFileW -
- - -

Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.

-
-

Pointer to an interface, representing the source height-map texture.

-

One or more flags that control generation of normal maps.

-

One flag specifying the source of height information.

-

Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible.

-

Pointer to an interface, representing the destination texture.

-

If the function succeeds, the return value is . If the function fails, the return value can be the following value: .

- -

This method computes the normal by using the central difference with a kernel size of 3x3. RGB channels in the destination contain biased (x,y,z) components of the normal. The central differencing denominator is hardcoded to 2.0.

-
- - bb172646 - HRESULT D3DX10ComputeNormalMap([In] ID3D10Texture2D* pSrcTexture,[In] D3DX10_NORMALMAP_FLAG Flags,[In] D3DX10_CHANNEL_FLAG Channel,[In] float Amplitude,[In] ID3D10Texture2D* pDestTexture) - D3DX10ComputeNormalMap -
- - -

Get information about an image already loaded into memory.

-
-

Pointer to the image in memory.

-

Size of the image in memory, in bytes.

-

Optional thread pump that can be used to load the info asynchronously. Can be null. See .

-

Information about the image in memory.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172678 - HRESULT D3DX10GetImageInfoFromMemory([In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) - D3DX10GetImageInfoFromMemory -
- - -

Retrieves information about a given image in a resource.

-
-

Module where the resource is loaded. Set this parameter to null to specify the module associated with the image that the operating system used to create the current process.

-

Pointer to a string that specifies the filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. See Remarks.

-

Optional thread pump that can be used to load the info asynchronously. Can be null. See .

-

Pointer to a structure to be filled with the description of the data in the source file.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

If the function succeeds, the return value is . If the function fails, the return value can be the following:

- -

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DX10GetImageInfoFromResourceA because ANSI strings are being used.

-
- - bb172679 - HRESULT D3DX10GetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) - D3DX10GetImageInfoFromResourceW -
- - -

Create a texture resource from a file.

-
-

A reference to the device (see Interface) that will use the resource.

-

The name of the file containing the resource. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR. See enumeration for a list of the supported image file formats.

-

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

-

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

-

The address of a reference to the texture resource (see Interface).

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

For a list of supported image formats see .

-
- - bb172671 - HRESULT D3DX10CreateTextureFromFileW([In] ID3D10Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) - D3DX10CreateTextureFromFileW -
- - -

Save a texture to memory.

-
-

Pointer to the texture to be saved. See Interface.

-

The format the texture will be saved as. See .

-

Address of a reference to the memory containing the saved texture. See Interface.

-

Optional.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172685 - HRESULT D3DX10SaveTextureToMemory([In] ID3D10Resource* pSrcTexture,[In] D3DX10_IMAGE_FILE_FORMAT DestFormat,[Out] ID3D10Blob** ppDestBuf,[In] unsigned int Flags) - D3DX10SaveTextureToMemory -
- - -

Projects a function represented in a cube map into spherical harmonics.

-
-

Order of the SH evaluation, generates Order^2 coefs, degree is Order-1.

-

Cubemap that is going to be projected into spherical harmonics. See .

-

Output SH vector for red.

-

Output SH vector for green.

-

Output SH vector for blue.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172686 - HRESULT D3DX10SHProjectCubeMap([In] unsigned int Order,[In] ID3D10Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut) - D3DX10SHProjectCubeMap -
- - -

Create a texture from another resource.

-
-

A reference to the device (see Interface) that will use the resource.

-

A handle to the source resource. HMODULE can be obtained with GetModuleHandle Function.

-

A string that contains the name of the source resource. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

-

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

-

The address of a reference to the texture resource (see Interface).

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

For a list of supported image formats see .

-
- - bb172673 - HRESULT D3DX10CreateTextureFromResourceW([In] ID3D10Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) - D3DX10CreateTextureFromResourceW -
- - -

Load a texture from a texture.

-
-

Pointer to the source texture. See .

-

Pointer to texture loading parameters. See .

-

Pointer to the destination texture. See Interface.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172680 - HRESULT D3DX10LoadTextureFromTexture([In] ID3D10Resource* pSrcTexture,[In] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[In] ID3D10Resource* pDstTexture) - D3DX10LoadTextureFromTexture -
- - -

Create a shader-resource view from a file in memory.

-
-

A reference to the device (see Interface) that will use the resource.

-

Pointer to the file in memory that contains the shader-resource view.

-

Size of the file in memory.

-

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

-

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

-

Address of a reference to the newly created shader resource view. See Interface.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172668 - HRESULT D3DX10CreateShaderResourceViewFromMemory([In] ID3D10Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) - D3DX10CreateShaderResourceViewFromMemory -
- - -

Generates mipmap chain using a particular texture filter.

-
-

The texture object to be filtered. See .

-

The mipmap level whose data is used to generate the rest of the mipmap chain.

-

Flags controlling how each miplevel is filtered (or D3DX10_DEFAULT for ). See .

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172675 - HRESULT D3DX10FilterTexture([In] ID3D10Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter) - D3DX10FilterTexture -
- - -

Create a texture resource from a file residing in system memory.

-
-

A reference to the device (see Interface) that will use the resource.

-

Pointer to the resource in system memory.

-

Size of the resource in system memory.

-

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

-

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

-

Address of a reference to the created resource. See Interface.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

For a list of supported image formats see .

-
- - bb172672 - HRESULT D3DX10CreateTextureFromMemory([In] ID3D10Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) - D3DX10CreateTextureFromMemory -
- - -

Retrieves information about a given image file.

-
-

File name of image to retrieve information about. If UNICODE or _UNICODE are defined, this parameter type is LPCWSTR, otherwise, the type is LPCSTR.

-

Optional thread pump that can be used to load the info asynchronously. Can be null. See .

-

Pointer to a structure to be filled with the description of the data in the source file.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

If the function succeeds, the return value is . If the function fails, the return value can be the following:

- -

This function supports both Unicode and ANSI strings.

-
- - bb172677 - HRESULT D3DX10GetImageInfoFromFileW([In] const wchar_t* pSrcFile,[In] ID3DX10ThreadPump* pPump,[In] D3DX10_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) - D3DX10GetImageInfoFromFileW -
- - -

Create a shader-resource view from a resource.

-
-

A reference to the device (see Interface) that will use the resource.

-

Handle to the resource module containing the shader-resource view. HMODULE can be obtained with GetModuleHandle Function.

-

Name of the shader resource view in hSrcModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

Optional. Identifies the characteristics of a texture (see ) when the data processor is created; set this to null to read the characteristics of a texture when the texture is loaded.

-

A reference to a thread pump interface (see Interface). If null is specified, this function will behave synchronously and will not return until it is finished.

-

Address of a reference to the shader-resource view (see Interface).

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172669 - HRESULT D3DX10CreateShaderResourceViewFromResourceW([In] ID3D10Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX10ThreadPump* pPump,[In] ID3D10ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) - D3DX10CreateShaderResourceViewFromResourceW -
- - -

Creates a mesh object using a declarator.

-
-

Pointer to an Interface, the device object to be associated with the mesh.

-

Array of elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF).

-

The number of elements in pDeclaration.

-

Semantic that identifies which part of the vertex declaration contains position information.

-

Number of vertices for the mesh. This parameter must be greater than 0.

-

Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved.

-

Combination of one or more flags from the D3DX10_MESH, specifying options for the mesh.

-

Address of a reference to an Interface, representing the created mesh object.

-

If the function succeeds, the return value is . If the function fails, the return value can be one of the following: , E_OUTOFMEMORY.

- - bb204914 - HRESULT D3DX10CreateMesh([In] ID3D10Device* pDevice,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDeclaration,[In] unsigned int DeclCount,[In] const char* pPositionSemantic,[In] unsigned int VertexCount,[In] unsigned int FaceCount,[In] unsigned int Options,[Out, Fast] ID3DX10Mesh** ppMesh) - D3DX10CreateMesh -
- - -

Creates an empty skin mesh object using a declarator.

-
-

Address of a reference to an Interface, representing the created skin mesh object.

-

If the function succeeds, the return value is . If the function fails, the return value can be: E_OUTOFMEMORY.

- -

Use the to populate the empty skin mesh object returned by this method.

-
- - bb204915 - HRESULT D3DX10CreateSkinInfo([In] ID3DX10SkinInfo** ppSkinInfo) - D3DX10CreateSkinInfo -
- - -

Create an effect pool from a resource.

-
-

A handle to the resource module containing the effect. HMODULE can be obtained with GetModuleHandle Function.

-

The name of the resource in hModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

Optional. Effect file name, which is used for error messages only. Can be null.

-

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

-

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

-

A string that specifies the shader profile, or shader model.

-

HLSL compile options (see D3D10_SHADER Constants).

-

Effect compile options (see Compile and Effect Flags).

-

A reference to the device (see Interface) that will use the resources.

-

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

-

The address of a reference to the effect pool (see Interface).

-

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172663 - HRESULT D3DX10CreateEffectPoolFromResourceW([In] HINSTANCE hModule,[In] const wchar_t* pResourceName,[In] const wchar_t* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) - D3DX10CreateEffectPoolFromResourceW -
- - -

Create an effect pool from an effect file.

-
-

The effect filename. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

-

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

-

A string that specifies the shader profile, or shader model.

-

HLSL compile options (see D3D10_SHADER Constants).

-

Effect compile options (see Compile and Effect Flags).

-

A reference to the device (see Interface) that will use the resources.

-

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

-

The address of a reference to the effect pool (see Interface).

-

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

This example creates an effect pool from the effect used in the BasicHLSL10 Sample.

 // Create an effect pool from an effect in memory	
-             * l_pEffectPool = null;	
-            *	l_pBlob_Errors = null;	
-            WCHAR str[MAX_PATH];	
-            hr = DXUTFindDXSDKMediaFileCch( str, MAX_PATH, L"BasicHLSL10.fx" );	
-            hr = ( str,  null, null, D3D10_SHADER_ENABLE_STRICTNESS,  0, pd3dDevice, null, &l_pEffectPool, &l_pBlob_Errors );	
-            
-
- - bb172661 - HRESULT D3DX10CreateEffectPoolFromFileW([In] const wchar_t* pFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) - D3DX10CreateEffectPoolFromFileW -
- - -

Create an effect from a file.

-
-

Name of the ASCII effect file. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

-

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

-

A string that specifies the shader profile, or shader model.

-

HLSL compile options (see D3D10_SHADER Constants).

-

Effect compile options (see Compile and Effect Flags).

-

A reference to the device (see Interface) that will use the resources.

-

Pointer to an effect pool (see Interface) for sharing variables between effects.

-

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

-

Address of a reference to the effect (see Interface) that is created.

-

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172658 - HRESULT D3DX10CreateEffectFromFileW([In] const wchar_t* pFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) - D3DX10CreateEffectFromFileW -
- - -

Create an effect from memory.

-
-

Pointer to the effect in memory.

-

Size of the effect in memory.

-

Name of the effect file in memory.

-

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

-

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

-

A string that specifies the shader profile, or shader model.

-

HLSL compile options (see D3D10_SHADER Constants).

-

Effect compile options (see D3D10_EFFECT Constants).

-

A reference to the device (see Interface) that will use the resources.

-

Pointer to an effect pool (see Interface) for sharing variables between effects.

-

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

-

Address of a reference to the effect (see Interface) that is created.

-

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172659 - HRESULT D3DX10CreateEffectFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) - D3DX10CreateEffectFromMemory -
- - -

Create an effect pool from an effect in memory.

-
-

A reference to the effect.

-

The size of the effect.

-

The name of the effect file.

-

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

-

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

-

A string that specifies the shader profile, or shader model.

-

HLSL compile options (see D3D10_SHADER Constants).

-

Effect compile options (see Compile and Effect Flags).

-

A reference to the device (see Interface) that will use the resources.

-

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

-

The address of a reference to the effect pool (see Interface).

-

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb172662 - HRESULT D3DX10CreateEffectPoolFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] const char* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3DX10ThreadPump* pPump,[In] ID3D10EffectPool** ppEffectPool,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) - D3DX10CreateEffectPoolFromMemory -
- - -

Create an effect from a resource.

-
-

A handle to the resource module containing the effect. HMODULE can be obtained with GetModuleHandle Function.

-

Name of the resource in hModule. If the compiler settings require Unicode, the data type LPCTSTR resolves to LPCWSTR. Otherwise, the data type resolves to LPCSTR.

-

Optional. Effect file name, which is used for error messages only. Can be null.

-

A null-terminated array of shader macros (see D3D10_SHADER_MACRO); set this to null to specify no macros.

-

A reference to an include interface (see ID3D10Include Interface). This parameter can be null.

-

A string that specifies the shader profile, or shader model.

-

HLSL compile options (see D3D10_SHADER Constants).

-

Effect compile options (see Compile and Effect Flags).

-

A reference to the device (see Interface) that will use the resources.

-

Pointer to an effect pool (see Interface) for sharing variables between effects.

-

A reference to a thread pump interface (see Interface). Use null to specify that this function should not return until it is completed.

-

Address of a reference to the effect (see Interface) that is created.

-

The address of a reference to memory (see Interface) that contains effect compile errors, if there were any.

-

A reference to the return value. May be null. If pPump is not null, then pHResult must be a valid memory location until the asynchronous execution completes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb172660 - HRESULT D3DX10CreateEffectFromResourceW([In] HINSTANCE hModule,[In] const wchar_t* pResourceName,[In] const wchar_t* pSrcFileName,[In, Buffer, Optional] const D3D_SHADER_MACRO* pDefines,[In] ID3DInclude* pInclude,[In] const char* pProfile,[In] unsigned int HLSLFlags,[In] unsigned int FXFlags,[In] ID3D10Device* pDevice,[In] ID3D10EffectPool* pEffectPool,[In] ID3DX10ThreadPump* pPump,[In] ID3D10Effect** ppEffect,[In] ID3D10Blob** ppErrors,[Out] HRESULT* pHResult) - D3DX10CreateEffectFromResourceW -
- - -

A constant-buffer interface accesses constant buffers or texture buffers.

-
- -

Use constant buffers to store many effect constants; grouping constants into buffers based on their frequency of update. This allows you to minimize the number of state changes as well as make the fewest API calls to change state. Both of these factors lead to better performance.

-
- - bb173634 - ID3D10EffectConstantBuffer - ID3D10EffectConstantBuffer -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a constant-buffer.

-
-

A reference to a constant-buffer interface. See Interface.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173637 - HRESULT ID3D10EffectConstantBuffer::SetConstantBuffer([In] ID3D10Buffer* pConstantBuffer) - ID3D10EffectConstantBuffer::SetConstantBuffer -
- - -

Get a constant-buffer.

-
-

The address of a reference to a constant-buffer interface. See Interface.

- - bb173635 - HRESULT ID3D10EffectConstantBuffer::GetConstantBuffer([Out] ID3D10Buffer** ppConstantBuffer) - ID3D10EffectConstantBuffer::GetConstantBuffer -
- - -

Set a texture-buffer.

-
-

A reference to a shader-resource-view interface for accessing a texture buffer.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173638 - HRESULT ID3D10EffectConstantBuffer::SetTextureBuffer([In] ID3D10ShaderResourceView* pTextureBuffer) - ID3D10EffectConstantBuffer::SetTextureBuffer -
- - -

Get a texture-buffer.

-
-

The address of a reference to a shader-resource-view interface for accessing a texture buffer. See Interface.

- - bb173636 - HRESULT ID3D10EffectConstantBuffer::GetTextureBuffer([Out] ID3D10ShaderResourceView** ppTextureBuffer) - ID3D10EffectConstantBuffer::GetTextureBuffer -
- - -

A shader-variable interface accesses a shader variable.

-
- - bb173698 - ID3D10EffectShaderVariable - ID3D10EffectShaderVariable -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a shader description.

-
-

A zero-based index.

-

A reference to a shader description (see ).

- - bb173703 - HRESULT ID3D10EffectShaderVariable::GetShaderDesc([In] unsigned int ShaderIndex,[Out] D3D10_EFFECT_SHADER_DESC* pDesc) - ID3D10EffectShaderVariable::GetShaderDesc -
- - -

Get a vertex shader.

-
-

A zero-based index.

-

A reference to a Interface.

- - bb173704 - HRESULT ID3D10EffectShaderVariable::GetVertexShader([In] unsigned int ShaderIndex,[Out] ID3D10VertexShader** ppVS) - ID3D10EffectShaderVariable::GetVertexShader -
- - -

Get a geometry shader.

-
-

A zero-based index.

-

A reference to a Interface.

- - bb173699 - HRESULT ID3D10EffectShaderVariable::GetGeometryShader([In] unsigned int ShaderIndex,[Out] ID3D10GeometryShader** ppGS) - ID3D10EffectShaderVariable::GetGeometryShader -
- - -

Get a pixel shader.

-
-

A zero-based index.

-

A reference to a Interface.

- - bb173702 - HRESULT ID3D10EffectShaderVariable::GetPixelShader([In] unsigned int ShaderIndex,[Out] ID3D10PixelShader** ppPS) - ID3D10EffectShaderVariable::GetPixelShader -
- - -

Get an input-signature description.

-
-

A zero-based shader index.

-

A zero-based shader-element index.

-

A reference to a parameter description (see ).

- -

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

-
- - bb173700 - HRESULT ID3D10EffectShaderVariable::GetInputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D10_SIGNATURE_PARAMETER_DESC* pDesc) - ID3D10EffectShaderVariable::GetInputSignatureElementDesc -
- - -

Get an output-signature description.

-
-

A zero-based shader index.

-

A zero-based element index.

-

A reference to a parameter description (see ).

- -

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

-
- - bb173701 - HRESULT ID3D10EffectShaderVariable::GetOutputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D10_SIGNATURE_PARAMETER_DESC* pDesc) - ID3D10EffectShaderVariable::GetOutputSignatureElementDesc -
- - -

An interface is a collection of passes.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- -

An effect contains one or more techniques; each technique contains one or more passes; each pass contains state assignments (see Organizing State in an Effect (Direct3D 10)). The syntax for creating a technique is shown in Effect Technique Syntax (Direct3D 10).

To get an effect-technique interface, call a method like .

-
- - bb173708 - ID3D10EffectTechnique - ID3D10EffectTechnique -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Test a technique to see if it contains valid syntax.

-
-

TRUE if the code syntax is valid; otherwise .

- - bb173715 - BOOL ID3D10EffectTechnique::IsValid() - ID3D10EffectTechnique::IsValid -
- - -

Get a technique description.

-
-

A reference to a technique description (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173712 - HRESULT ID3D10EffectTechnique::GetDesc([Out] D3D10_TECHNIQUE_DESC* pDesc) - ID3D10EffectTechnique::GetDesc -
- - -

Get an annotation by index.

-
-

The zero-based index of the interface reference.

-

A reference to an Interface.

- -

Use an annotation to attach a piece of metadata to a technique.

-
- - bb173710 - ID3D10EffectVariable* ID3D10EffectTechnique::GetAnnotationByIndex([In] unsigned int Index) - ID3D10EffectTechnique::GetAnnotationByIndex -
- - -

Get an annotation by name.

-
-

Name of the annotation.

-

A reference to an Interface.

- -

Use an annotation to attach a piece of metadata to a technique.

-
- - bb173711 - ID3D10EffectVariable* ID3D10EffectTechnique::GetAnnotationByName([In] const char* Name) - ID3D10EffectTechnique::GetAnnotationByName -
- - -

Get a pass by index.

-
-

A zero-based index.

-

A reference to a Interface.

- -

A technique contains one or more passes; get a pass using a name or an index.

-
- - bb173713 - ID3D10EffectPass* ID3D10EffectTechnique::GetPassByIndex([In] unsigned int Index) - ID3D10EffectTechnique::GetPassByIndex -
- - -

Get a pass by name.

-
-

The name of the pass.

-

A reference to an Interface.

- -

A technique contains one or more passes; get a pass using a name or an index.

-
- - bb173714 - ID3D10EffectPass* ID3D10EffectTechnique::GetPassByName([In] const char* Name) - ID3D10EffectTechnique::GetPassByName -
- - -

Compute a state-block mask to allow/prevent state changes.

-
-

A reference to a state-block mask (see ).

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173709 - HRESULT ID3D10EffectTechnique::ComputeStateBlockMask([In] D3D10_STATE_BLOCK_MASK* pStateBlockMask) - ID3D10EffectTechnique::ComputeStateBlockMask -
- - -

Test a technique to see if it contains valid syntax.

-
- - bb173715 - IsValid - IsValid - BOOL ID3D10EffectTechnique::IsValid() -
- - -

Get a technique description.

-
- - bb173712 - GetDesc - GetDesc - HRESULT ID3D10EffectTechnique::GetDesc([Out] D3D10_TECHNIQUE_DESC* pDesc) -
- - -

Get an member type by name.

-
- - bb173721 - ID3D10EffectType - ID3D10EffectType -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Tests that the effect type is valid.

-
-

TRUE if it is valid; otherwise .

- - bb173723 - BOOL ID3D10EffectType::IsValid() - ID3D10EffectType::IsValid -
- - -

Get an effect-type description.

-
-

A reference to an effect-type description. See .

-

Returns one of the following Direct3D 10 Return Codes.

- -

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

-
- - bb173717 - HRESULT ID3D10EffectType::GetDesc([Out] D3D10_EFFECT_TYPE_DESC* pDesc) - ID3D10EffectType::GetDesc -
- - -

Get a member type by index.

-
-

A zero-based index.

-

A reference to an Interface.

- - bb173720 - ID3D10EffectType* ID3D10EffectType::GetMemberTypeByIndex([In] unsigned int Index) - ID3D10EffectType::GetMemberTypeByIndex -
- - -

Get an member type by name.

-
-

A member's name.

-

A reference to an Interface.

- - bb173721 - ID3D10EffectType* ID3D10EffectType::GetMemberTypeByName([In] const char* Name) - ID3D10EffectType::GetMemberTypeByName -
- - -

Get a member type by semantic.

-
-

A semantic.

-

A reference to an Interface.

- - bb173722 - ID3D10EffectType* ID3D10EffectType::GetMemberTypeBySemantic([In] const char* Semantic) - ID3D10EffectType::GetMemberTypeBySemantic -
- - -

Get the name of a member.

-
-

A zero-based index.

-

The name of the member.

- - bb173718 - const char* ID3D10EffectType::GetMemberName([In] unsigned int Index) - ID3D10EffectType::GetMemberName -
- - -

Get the semantic attached to a member.

-
-

A zero-based index.

-

A string that contains the semantic.

- - bb173719 - const char* ID3D10EffectType::GetMemberSemantic([In] unsigned int Index) - ID3D10EffectType::GetMemberSemantic -
- - -

Tests that the effect type is valid.

-
- - bb173723 - IsValid - IsValid - BOOL ID3D10EffectType::IsValid() -
- - -

Get an effect-type description.

-
- -

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

-
- - bb173717 - GetDesc - GetDesc - HRESULT ID3D10EffectType::GetDesc([Out] D3D10_EFFECT_TYPE_DESC* pDesc) -
- - -

A geometry-shader interface manages an executable program (a geometry shader) that controls the geometry-shader stage.

-
- -

The geometry-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.

To create a geometry shader interface, call either or . Before using a geometry shader you must bind it to the device by calling .

This interface is defined in D3D10.h.

-
- - bb173774 - ID3D10GeometryShader - ID3D10GeometryShader -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - An array of instances describing the layout of the output buffers. - The size, in bytes, of each element in the array pointed to by pSODeclaration. This parameter is only used when the output slot is 0 for all entries in pSODeclaration. - - - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the constant buffers used by the geometry shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

-
- - bb173580 - void ID3D10Device::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - ID3D10Device::GSSetConstantBuffers -
- - -

Set the constant buffers used by the geometry shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

The method will not hold references to the interfaces passed in. For that reason, applications should be careful not to release interfaces currently in use by the device.

-
- - bb173580 - void ID3D10Device::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - ID3D10Device::GSSetConstantBuffers -
- - -

Set a geometry shader to the device.

-
-

Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

- -

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173582 - void ID3D10Device::GSSetShader([In, Optional] ID3D10GeometryShader* pShader) - ID3D10Device::GSSetShader -
- - -

Bind an array of shader resources to the geometry shader stage.

-
- No documentation. - No documentation. - No documentation. - -

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173583 - void ID3D10Device::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::GSSetShaderResources -
- - -

Bind an array of shader resources to the geometry shader stage.

-
- No documentation. - No documentation. - No documentation. - -

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173583 - void ID3D10Device::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::GSSetShaderResources -
- - -

Set an array of sampler states to the geometry shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173581 - void ID3D10Device::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - ID3D10Device::GSSetSamplers -
- - -

Set an array of sampler states to the geometry shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173581 - void ID3D10Device::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - ID3D10Device::GSSetSamplers -
- - -

Get the constant buffers used by the geometry shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173576 - void ID3D10Device::GSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) - ID3D10Device::GSGetConstantBuffers -
- - -

Get the geometry shader currently set on the device.

-
-

Address of a reference to a geometry shader (see ) to be returned by the method.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173578 - void ID3D10Device::GSGetShader([Out] ID3D10GeometryShader** ppGeometryShader) - ID3D10Device::GSGetShader -
- - -

Get the geometry shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from.

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173579 - void ID3D10Device::GSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::GSGetShaderResources -
- - -

Get an array of sampler states from the geometry shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173577 - void ID3D10Device::GSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) - ID3D10Device::GSGetSamplers -
- - -

An information-queue interface stores, retrieves, and filters debug messages. The queue consists of a message queue, an optional storage filter stack, and a optional retrieval filter stack.

-
- -

This interface is obtained by turning on the debug layer and querying it from the Interface using IUnknown::QueryInterface.

hr = ( null, g_driverType, null, , , &sd, &g_pSwapChain, &g_pd3dDevice );	
-            ...	
-             * infoQueue;	
-            g_pd3dDevice->QueryInterface(__uuidof(),  (void **)&infoQueue); 	
-            
-
- - bb173779 - ID3D10InfoQueue - ID3D10InfoQueue -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the maximum number of messages that can be added to the message queue.

-
-

Maximum number of messages that can be added to the message queue. -1 means no limit.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

-
- - bb173813 - HRESULT ID3D10InfoQueue::SetMessageCountLimit([In] unsigned longlong MessageCountLimit) - ID3D10InfoQueue::SetMessageCountLimit -
- - -

Clear all messages from the message queue.

-
- - bb173786 - void ID3D10InfoQueue::ClearStoredMessages() - ID3D10InfoQueue::ClearStoredMessages -
- - -

Get a message from the message queue.

-
-

Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with ). 0 is the message at the front of the message queue.

-

Returned message (see ).

-

Size of pMessage in bytes, including the size of the message string that the pMessage points to.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

This method does not remove any messages from the message queue.

This method gets messages from the message queue after an optional retrieval filter has been applied.

Applications should call this method twice to retrieve a message - first to obtain the size of the message and second to get the message. Here is a typical example:

 // Get the size of the message	
-             messageLength = 0;	
-             hr = pInfoQueue->GetMessage(0, null, &messageLength); // Allocate space and get the message	
-             * pMessage = (*)malloc(messageLength);	
-            hr = pInfoQueue->GetMessage(0, pMessage, &messageLength);	
-            

For an overview see Information Queue Overview.

-
- - bb173790 - HRESULT ID3D10InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength) - ID3D10InfoQueue::GetMessageW -
- - -

Get the number of messages that were allowed to pass through a storage filter.

-
-

Number of messages allowed by a storage filter.

- - bb173793 - unsigned longlong ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter() - ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter -
- - -

Get the number of messages that were denied passage through a storage filter.

-
-

Number of messages denied by a storage filter.

- - bb173794 - unsigned longlong ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter() - ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter -
- - -

Get the number of messages currently stored in the message queue.

-
-

Number of messages currently stored in the message queue.

- - bb173796 - unsigned longlong ID3D10InfoQueue::GetNumStoredMessages() - ID3D10InfoQueue::GetNumStoredMessages -
- - -

Get the number of messages that are able to pass through a retrieval filter.

-
-

Number of messages allowed by a retrieval filter.

- - bb173797 - unsigned longlong ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() - ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter -
- - -

Get the number of messages that were discarded due to the message count limit.

-
-

Number of messages discarded.

- -

Get and set the message count limit with and , respectively.

-
- - bb173795 - unsigned longlong ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() - ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit -
- - -

Get the maximum number of messages that can be added to the message queue.

-
-

Maximum number of messages that can be added to the queue. -1 means no limit.

- -

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

-
- - bb173791 - unsigned longlong ID3D10InfoQueue::GetMessageCountLimit() - ID3D10InfoQueue::GetMessageCountLimit -
- - -

Add storage filters to the top of the storage-filter stack.

-
-

Array of storage filters (see ).

-

This method returns one of the following Direct3D 10 Return Codes.

- -

A storage filter defines a grouping of debug messages that should be allowed into the info queue.

-
- - bb173783 - HRESULT ID3D10InfoQueue::AddStorageFilterEntries([In] D3D10_INFO_QUEUE_FILTER* pFilter) - ID3D10InfoQueue::AddStorageFilterEntries -
- - -

Get the storage filter at the top of the storage-filter stack.

-
-

Storage filter at the top of the storage-filter stack.

-

Size of the storage filter in bytes. If pFilter is null, the size of the storage filter will be output to this parameter.

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173800 - HRESULT ID3D10InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) - ID3D10InfoQueue::GetStorageFilter -
- - -

Remove a storage filter from the top of the storage-filter stack.

-
- - bb173785 - void ID3D10InfoQueue::ClearStorageFilter() - ID3D10InfoQueue::ClearStorageFilter -
- - -

Push an empty storage filter onto the storage-filter stack.

-
-

This method returns one of the following Direct3D 10 Return Codes.

- -

An empty storage filter allows all messages to pass through.

-
- - bb173807 - HRESULT ID3D10InfoQueue::PushEmptyStorageFilter() - ID3D10InfoQueue::PushEmptyStorageFilter -
- - -

Push a copy of storage filter currently on the top of the storage-filter stack onto the storage-filter stack.

-
-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173805 - HRESULT ID3D10InfoQueue::PushCopyOfStorageFilter() - ID3D10InfoQueue::PushCopyOfStorageFilter -
- - -

Push a storage filter onto the storage-filter stack.

-
-

Pointer to a storage filter (see ).

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173809 - HRESULT ID3D10InfoQueue::PushStorageFilter([In] D3D10_INFO_QUEUE_FILTER* pFilter) - ID3D10InfoQueue::PushStorageFilter -
- - -

Pop a storage filter from the top of the storage-filter stack.

-
- - bb173803 - void ID3D10InfoQueue::PopStorageFilter() - ID3D10InfoQueue::PopStorageFilter -
- - -

Get the size of the storage-filter stack in bytes.

-
-

Size of the storage-filter stack in bytes.

- - bb173801 - unsigned int ID3D10InfoQueue::GetStorageFilterStackSize() - ID3D10InfoQueue::GetStorageFilterStackSize -
- - -

Add storage filters to the top of the retrieval-filter stack.

-
-

Array of retrieval filters (see ).

-

This method returns one of the following Direct3D 10 Return Codes.

- -

A retrieval filter is used to define a subgroup of the messages that are already in the info queue. Retrieval filters affect the messages that will be returned by .

The number of messages already in the info queue that will be allowed through the retrieval filter can be determined by calling .

-
- - bb173782 - HRESULT ID3D10InfoQueue::AddRetrievalFilterEntries([In] D3D10_INFO_QUEUE_FILTER* pFilter) - ID3D10InfoQueue::AddRetrievalFilterEntries -
- - -

Get the retrieval filter at the top of the retrieval-filter stack.

-
-

Retrieval filter at the top of the retrieval-filter stack.

-

Size of the retrieval filter in bytes. If pFilter is null, the size of the retrieval filter will be output to this parameter.

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173798 - HRESULT ID3D10InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) - ID3D10InfoQueue::GetRetrievalFilter -
- - -

Remove a retrieval filter from the top of the retrieval-filter stack.

-
- - bb173784 - void ID3D10InfoQueue::ClearRetrievalFilter() - ID3D10InfoQueue::ClearRetrievalFilter -
- - -

Push an empty retrieval filter onto the retrieval-filter stack.

-
-

This method returns one of the following Direct3D 10 Return Codes.

- -

An empty retrieval filter allows all messages to pass through.

-
- - bb173806 - HRESULT ID3D10InfoQueue::PushEmptyRetrievalFilter() - ID3D10InfoQueue::PushEmptyRetrievalFilter -
- - -

Push a copy of retrieval filter currently on the top of the retrieval-filter stack onto the retrieval-filter stack.

-
-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173804 - HRESULT ID3D10InfoQueue::PushCopyOfRetrievalFilter() - ID3D10InfoQueue::PushCopyOfRetrievalFilter -
- - -

Push a retrieval filter onto the retrieval-filter stack.

-
-

Pointer to a retrieval filter (see ).

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173808 - HRESULT ID3D10InfoQueue::PushRetrievalFilter([In] D3D10_INFO_QUEUE_FILTER* pFilter) - ID3D10InfoQueue::PushRetrievalFilter -
- - -

Pop a retrieval filter from the top of the retrieval-filter stack.

-
- - bb173802 - void ID3D10InfoQueue::PopRetrievalFilter() - ID3D10InfoQueue::PopRetrievalFilter -
- - -

Get the size of the retrieval-filter stack in bytes.

-
-

Size of the retrieval-filter stack in bytes.

- - bb173799 - unsigned int ID3D10InfoQueue::GetRetrievalFilterStackSize() - ID3D10InfoQueue::GetRetrievalFilterStackSize -
- - -

Add a Direct3D 10 debug message to the message queue and send that message to debug output.

-
-

Category of a message (see ).

-

Severity of a message (see ).

-

Unique identifier of a message (see ).

-

User-defined message.

-

This method returns one of the following Direct3D 10 Return Codes.

- -

This method is used by the runtime's internal mechanisms to add Direct3D 10 debug messages to the message queue and send them to debug output. For applications to add their own custom messages to the message queue and send them to debug output, call .

-
- - bb173781 - HRESULT ID3D10InfoQueue::AddMessage([In] D3D10_MESSAGE_CATEGORY Category,[In] D3D10_MESSAGE_SEVERITY Severity,[In] D3D10_MESSAGE_ID ID,[In] const char* pDescription) - ID3D10InfoQueue::AddMessage -
- - -

Add a user-defined message to the message queue and send that message to debug output.

-
-

Severity of a message (see ).

-

Message string.

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173780 - HRESULT ID3D10InfoQueue::AddApplicationMessage([In] D3D10_MESSAGE_SEVERITY Severity,[In] const char* pDescription) - ID3D10InfoQueue::AddApplicationMessage -
- - -

Set a message category to break on when a message with that category passes through the storage filter.

-
-

Message category to break on (see ).

-

Turns this breaking condition on or off (true for on, false for off).

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173810 - HRESULT ID3D10InfoQueue::SetBreakOnCategory([In] D3D10_MESSAGE_CATEGORY Category,[In] BOOL bEnable) - ID3D10InfoQueue::SetBreakOnCategory -
- - -

Set a message severity level to break on when a message with that severity level passes through the storage filter.

-
-

Message severity level to break on (see ).

-

Turns this breaking condition on or off (true for on, false for off).

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173812 - HRESULT ID3D10InfoQueue::SetBreakOnSeverity([In] D3D10_MESSAGE_SEVERITY Severity,[In] BOOL bEnable) - ID3D10InfoQueue::SetBreakOnSeverity -
- - -

Set a message identifier to break on when a message with that identifier passes through the storage filter.

-
-

Message identifier to break on (see ).

-

Turns this breaking condition on or off (true for on, false for off).

-

This method returns one of the following Direct3D 10 Return Codes.

- - bb173811 - HRESULT ID3D10InfoQueue::SetBreakOnID([In] D3D10_MESSAGE_ID ID,[In] BOOL bEnable) - ID3D10InfoQueue::SetBreakOnID -
- - -

Get a message category to break on when a message with that category passes through the storage filter.

-
-

Message category to break on (see ).

-

Whether this breaking condition is turned on or off (true for on, false for off).

- - bb173787 - BOOL ID3D10InfoQueue::GetBreakOnCategory([In] D3D10_MESSAGE_CATEGORY Category) - ID3D10InfoQueue::GetBreakOnCategory -
- - -

Get a message severity level to break on when a message with that severity level passes through the storage filter.

-
-

Message severity level to break on (see ).

-

Whether this breaking condition is turned on or off (true for on, false for off).

- - bb173789 - BOOL ID3D10InfoQueue::GetBreakOnSeverity([In] D3D10_MESSAGE_SEVERITY Severity) - ID3D10InfoQueue::GetBreakOnSeverity -
- - -

Get a message identifier to break on when a message with that identifier passes through the storage filter.

-
-

Message identifier to break on (see ).

-

Whether this breaking condition is turned on or off (true for on, false for off).

- - bb173788 - BOOL ID3D10InfoQueue::GetBreakOnID([In] D3D10_MESSAGE_ID ID) - ID3D10InfoQueue::GetBreakOnID -
- - -

Set a boolean that turns the debug output on or off.

-
-

Disable/Enable the debug output (TRUE to disable or mute the output, to enable the output).

- -

This will stop messages that pass the storage filter from being printed out in the debug output, however those messages will still be added to the message queue.

-
- - bb173814 - void ID3D10InfoQueue::SetMuteDebugOutput([In] BOOL bMute) - ID3D10InfoQueue::SetMuteDebugOutput -
- - -

Get a boolean that turns the debug output on or off.

-
-

Whether the debug output is on or off (true for on, false for off).

- - bb173792 - BOOL ID3D10InfoQueue::GetMuteDebugOutput() - ID3D10InfoQueue::GetMuteDebugOutput -
- - - No documentation. - - No documentation. - No documentation. - - HRESULT ID3D10InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[Out, Buffer, Optional] D3D10_MESSAGE* pMessage,[InOut] SIZE_T* pMessageByteLength) - - - - No documentation. - - No documentation. - - HRESULT ID3D10InfoQueue::GetStorageFilter([Out, Buffer, Optional] D3D10_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength) - - - - No documentation. - - No documentation. - - HRESULT ID3D10InfoQueue::GetRetrievalFilter([Out, Buffer, Optional] D3D10_INFO_QUEUE_FILTER* pFilter,[InOut] SIZE_T* pFilterByteLength) - - - -

Get or sets the maximum number of messages that can be added to the message queue.

-
- -

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

-
- - bb173791 - GetMessageCountLimit / SetMessageCountLimit - GetMessageCountLimit - unsigned longlong ID3D10InfoQueue::GetMessageCountLimit() -
- - -

Get the number of messages that were allowed to pass through a storage filter.

-
- - bb173793 - GetNumMessagesAllowedByStorageFilter - GetNumMessagesAllowedByStorageFilter - unsigned longlong ID3D10InfoQueue::GetNumMessagesAllowedByStorageFilter() -
- - -

Get the number of messages that were denied passage through a storage filter.

-
- - bb173794 - GetNumMessagesDeniedByStorageFilter - GetNumMessagesDeniedByStorageFilter - unsigned longlong ID3D10InfoQueue::GetNumMessagesDeniedByStorageFilter() -
- - -

Get the number of messages currently stored in the message queue.

-
- - bb173796 - GetNumStoredMessages - GetNumStoredMessages - unsigned longlong ID3D10InfoQueue::GetNumStoredMessages() -
- - -

Get the number of messages that are able to pass through a retrieval filter.

-
- - bb173797 - GetNumStoredMessagesAllowedByRetrievalFilter - GetNumStoredMessagesAllowedByRetrievalFilter - unsigned longlong ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() -
- - -

Get the number of messages that were discarded due to the message count limit.

-
- -

Get and set the message count limit with and , respectively.

-
- - bb173795 - GetNumMessagesDiscardedByMessageCountLimit - GetNumMessagesDiscardedByMessageCountLimit - unsigned longlong ID3D10InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() -
- - -

Get the size of the storage-filter stack in bytes.

-
- - bb173801 - GetStorageFilterStackSize - GetStorageFilterStackSize - unsigned int ID3D10InfoQueue::GetStorageFilterStackSize() -
- - -

Get the size of the retrieval-filter stack in bytes.

-
- - bb173799 - GetRetrievalFilterStackSize - GetRetrievalFilterStackSize - unsigned int ID3D10InfoQueue::GetRetrievalFilterStackSize() -
- - -

Get or sets a boolean that turns the debug output on or off.

-
- - bb173792 - GetMuteDebugOutput / SetMuteDebugOutput - GetMuteDebugOutput - BOOL ID3D10InfoQueue::GetMuteDebugOutput() -
- - -

An input-layout interface accesses the input data for the input-assembler stage.

-
- -

This interface is created by calling ; use to bind it to the graphics pipeline.

-
- - bb173815 - ID3D10InputLayout - ID3D10InputLayout -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the object to describe the - input-buffer data for the input-assembler stage. - - ID3D10Device::CreateInputLayout - The device used to create the layout. - An array of input elements describing the layout of the input data. - The compiled shader used to validate the input elements. - - - -

Applications use the methods of the interface to manipulate mesh objects.

-
- -

To obtain the interface, call .

-
- - bb173897 - ID3DX10Mesh - ID3DX10Mesh -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Retrieves the number of faces in the mesh.

-
-

Returns the number of faces in the mesh.

- - bb173915 - unsigned int ID3DX10Mesh::GetFaceCount() - ID3DX10Mesh::GetFaceCount -
- - -

Get the number of vertices in the mesh. A mesh may contain multiple vertex buffers (i.e. one vertex buffer may contain all position data, another may contains all texture coordinate data, etc.), however each vertex buffer will contain the same number of elements.

-
-

The number of vertices in the mesh.

- - bb173921 - unsigned int ID3DX10Mesh::GetVertexCount() - ID3DX10Mesh::GetVertexCount -
- - -

Get the number of vertex buffers in the mesh.

-
-

The number of vertex buffers in the mesh.

- - bb173920 - unsigned int ID3DX10Mesh::GetVertexBufferCount() - ID3DX10Mesh::GetVertexBufferCount -
- - -

Access the mesh's creation flags.

-
-

The creation flags passed into the options parameter of when the mesh was created. See D3DX10_MESH.

- - bb173916 - unsigned int ID3DX10Mesh::GetFlags() - ID3DX10Mesh::GetFlags -
- - -

Access the vertex description passed into . The vertex description describes the layout of the mesh's vertex buffers.

-
- No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173922 - HRESULT ID3DX10Mesh::GetVertexDescription([Out, Buffer] const D3D10_INPUT_ELEMENT_DESC** ppDesc,[In] unsigned int* pDeclCount) - ID3DX10Mesh::GetVertexDescription -
- - -

Set vertex data into one of the mesh's vertex buffers.

-
-

The vertex buffer to be filled with pData.

-

The vertex data to set.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173931 - HRESULT ID3DX10Mesh::SetVertexData([In] unsigned int iBuffer,[In] const void* pData) - ID3DX10Mesh::SetVertexData -
- - -

Retrieves the vertex buffer associated with the mesh.

-
-

The vertex buffer to get. This is an index value.

-

The vertex buffer. See

- - bb173919 - HRESULT ID3DX10Mesh::GetVertexBuffer([In] unsigned int iBuffer,[In] ID3DX10MeshBuffer** ppVertexBuffer) - ID3DX10Mesh::GetVertexBuffer -
- - -

Set the mesh's index data.

-
-

The index data.

-

The number of indices in pData.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173929 - HRESULT ID3DX10Mesh::SetIndexData([In] const void* pData,[In] unsigned int cIndices) - ID3DX10Mesh::SetIndexData -
- - -

Retrieves the data in an index buffer.

-
-

Address of a reference to a interface, representing the index buffer associated with the mesh.

- - bb173917 - HRESULT ID3DX10Mesh::GetIndexBuffer([In] ID3DX10MeshBuffer** ppIndexBuffer) - ID3DX10Mesh::GetIndexBuffer -
- - -

Set the mesh's attribute data.

-
-

The attribute data to set.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173927 - HRESULT ID3DX10Mesh::SetAttributeData([In] const void* pData) - ID3DX10Mesh::SetAttributeData -
- - -

Access the mesh's attribute buffer.

-
-

The attribute buffer. See .

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173911 - HRESULT ID3DX10Mesh::GetAttributeBuffer([In] ID3DX10MeshBuffer** ppAttributeBuffer) - ID3DX10Mesh::GetAttributeBuffer -
- - -

Sets the attribute table for a mesh and the number of entries stored in the table.

-
-

Pointer to an array of structures, representing the entries in the mesh attribute table.

-

Number of attributes in the mesh attribute table.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling again.

-
- - bb173928 - HRESULT ID3DX10Mesh::SetAttributeTable([In, Buffer] const D3DX10_ATTRIBUTE_RANGE* pAttribTable,[In] unsigned int cAttribTableSize) - ID3DX10Mesh::SetAttributeTable -
- - -

Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh.

-
-

Pointer to an array of structures, representing the entries in the mesh's attribute table. Specify null to retrieve the value for pAttribTableSize.

-

Pointer to either the number of entries stored in pAttribTable or a value to be filled in with the number of entries stored in the attribute table for the mesh.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame.

-
- - bb173912 - HRESULT ID3DX10Mesh::GetAttributeTable([Out, Buffer, Optional] D3DX10_ATTRIBUTE_RANGE* pAttribTable,[InOut] unsigned int* pAttribTableSize) - ID3DX10Mesh::GetAttributeTable -
- - -

Generate a list of mesh edges, as well as a list of faces that share each edge.

-
-

Specifies that vertices that differ in position by less than epsilon should be treated as coincident.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

After an application generates adjacency information for a mesh, the mesh data can be optimized for better drawing performance.

The order of the entries in the adjacency buffer is determined by the order of the vertex indices in the index buffer. The adjacent triangle 0 always corresponds to the edge between the indices of the corners 0 and 1. The adjacent triangle 1 always corresponds to the edge between the indices of the corners 1 and 2 while the adjacent triangle 2 corresponds to the edge between the indices of the corners 2 and 0.

-
- - bb173907 - HRESULT ID3DX10Mesh::GenerateAdjacencyAndPointReps([In] float Epsilon) - ID3DX10Mesh::GenerateAdjacencyAndPointReps -
- - -

Adds adjacency data to the mesh's index buffer. When the mesh is to be sent to a geometry shader that takes adjacency data, it is neccessary for the mesh's index buffer to contain adjacency data.

-
-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173909 - HRESULT ID3DX10Mesh::GenerateGSAdjacency() - ID3DX10Mesh::GenerateGSAdjacency -
- - -

Set the mesh's adjacency data.

-
-

The adjacency data to set.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173926 - HRESULT ID3DX10Mesh::SetAdjacencyData([In] const void* pAdjacency) - ID3DX10Mesh::SetAdjacencyData -
- - -

Access the mesh's adjacency buffer.

-
-

The adjacency buffer. See .

- - bb173910 - HRESULT ID3DX10Mesh::GetAdjacencyBuffer([In] ID3DX10MeshBuffer** ppAdjacency) - ID3DX10Mesh::GetAdjacencyBuffer -
- - -

Set the point rep data for the mesh.

-
-

The point rep data to set.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173930 - HRESULT ID3DX10Mesh::SetPointRepData([In] const void* pPointReps) - ID3DX10Mesh::SetPointRepData -
- - -

Get the mesh's point rep buffer.

-
-

Pointer to a mesh buffer containing the mesh's point rep data. See .

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173918 - HRESULT ID3DX10Mesh::GetPointRepBuffer([In] ID3DX10MeshBuffer** ppPointReps) - ID3DX10Mesh::GetPointRepBuffer -
- - -

Removes mesh data from the device that has been committed to the device (with ).

-
- No documentation. -

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173904 - HRESULT ID3DX10Mesh::Discard([In] D3DX10_MESH_DISCARD_FLAGS dwDiscard) - ID3DX10Mesh::Discard -
- - -

Creates a new mesh and fills it with the data of a previously loaded mesh.

-
-

Creation flags to be applied to the new mesh. See D3DX10_MESH.

-

The semantic name for the position data.

-

Array of structures, describing the vertex format for the returned mesh. See .

-

The number of elements in the pDesc array.

-

The new mesh.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173902 - HRESULT ID3DX10Mesh::CloneMesh([In] unsigned int Flags,[In] const char* pPosSemantic,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDesc,[In] unsigned int DeclCount,[In] ID3DX10Mesh** ppCloneMesh) - ID3DX10Mesh::CloneMesh -
- - -

Generates a new mesh with reordered faces and vertices to optimize drawing performance.

-
-

Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except , , and ).

-

An array of UINTs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. If the value supplied for this argument is null, face remap data is not returned.

-

Address of a reference to an Interface, which contains a DWORD for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling . The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other.

This method is very similar to the method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh.

-
- - bb173925 - HRESULT ID3DX10Mesh::Optimize([In] unsigned int Flags,[Out, Buffer, Optional] unsigned int* pFaceRemap,[In] void** ppVertexRemap) - ID3DX10Mesh::Optimize -
- - -

Generate an attribute buffer from the data in the mesh's attribute table. An attribute buffer is another format for storing the data in the attribute table. Both the attribute buffer and the attribute table are internal data structures in the mesh.

-
-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb173908 - HRESULT ID3DX10Mesh::GenerateAttributeBufferFromTable() - ID3DX10Mesh::GenerateAttributeBufferFromTable -
- - -

Determines if a ray intersects with this mesh.

-
-

Pointer to a structure, specifying the point where the ray begins.

-

Pointer to a structure, specifying the direction of the ray.

-

The number of times the ray intersected with the mesh.

-

Pointer to an index value of the face closest to the ray origin, if pHit is TRUE.

-

Pointer to a barycentric hit coordinate, U.

-

Pointer to a barycentric hit coordinate, V.

-

Pointer to a ray intersection parameter distance.

-

Pointer to an Interface, containing an array of D3DX10_INTERSECT_INFO structures. This is a list of all the hits that occurred in the intersection test.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

This API provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

-
- - bb173923 - HRESULT ID3DX10Mesh::Intersect([In] D3DXVECTOR3* pRayPos,[In] D3DXVECTOR3* pRayDir,[In] unsigned int* pHitCount,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3D10Blob** ppAllHits) - ID3DX10Mesh::Intersect -
- - -

Determines if a ray intersects with a subset of this mesh.

-
-

Attribute ID identifying the subset of the mesh.

-

Pointer to a structure, specifying the point where the ray begins.

-

Pointer to a structure, specifying the direction of the ray.

-

The number of times the ray intersected with the mesh.

-

Pointer to an index value of the face closest to the ray origin, if pHit is TRUE.

-

Pointer to a barycentric hit coordinate, U.

-

Pointer to a barycentric hit coordinate, V.

-

Pointer to a ray intersection parameter distance.

-

Pointer to an Interface, containing an array of D3DX10_INTERSECT_INFO structures. This is a list of all the hits that occurred in the intersection test.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

This API provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

-
- - bb173924 - HRESULT ID3DX10Mesh::IntersectSubset([In] unsigned int AttribId,[In] D3DXVECTOR3* pRayPos,[In] D3DXVECTOR3* pRayDir,[In] unsigned int* pHitCount,[In] unsigned int* pFaceIndex,[In] float* pU,[In] float* pV,[In] float* pDist,[In] ID3D10Blob** ppAllHits) - ID3DX10Mesh::IntersectSubset -
- - -

Commit any changes made to a mesh to the device so that the changes can be rendered. This should be called after a mesh's data is altered and before it is rendered. A mesh cannot be rendered unless it is committed to the device. See remarks.

-
-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

When a mesh is loaded, it's data is loaded into staging resources, meaning the data can be altered but not rendered. When CommitToDevice is called, the data from the staging resources are copied into device resources so that they can be rendered. Although the data is committed to the device, the staging resources remain and can be modified. If any modifications are made to the staging resources, the staging resources must be committed to the device again in order for those changes to be rendered on screen.

-
- - bb173903 - HRESULT ID3DX10Mesh::CommitToDevice() - ID3DX10Mesh::CommitToDevice -
- - -

Draws a subset of a mesh.

-
-

Specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.

-
- - bb173905 - HRESULT ID3DX10Mesh::DrawSubset([In] unsigned int AttribId) - ID3DX10Mesh::DrawSubset -
- - -

Draw several instances of the same subset of a mesh.

-
-

Specifies which subset of the mesh to draw. This value is used to differentiate faces in a mesh as belonging to one or more attribute groups. See remarks.

-

Number of instances to render.

-

Which instance to start fetching from in each buffer marked as instance data.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

A mesh contains an attribute table. The attribute table can divide a mesh into subsets, where each subset is identified with an attribute ID. For example, a mesh with 200 faces, divided into three subsets, might have an attribute table that looks like this:

AttribID 0Faces 0 ~ 50
AttribID 1Faces 51 ~ 125
AttribID 2Faces 126 ~ 200

?

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data.

Drawing instances with DrawSubsetInstanced is very similar to the process used with that is outlined in Instancing Sample. The key difference when using DrawSubsetInstanced is that vertex and index buffers must be extracted from the Interface object before the instancing data can be combined.

The following code illustrates extracting the vertex and index buffers from the mesh object.

 * vertexBuffer; pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer); * indexBuffer; pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer); 
-
- - bb173906 - HRESULT ID3DX10Mesh::DrawSubsetInstanced([In] unsigned int AttribId,[In] unsigned int InstanceCount,[In] unsigned int StartInstanceLocation) - ID3DX10Mesh::DrawSubsetInstanced -
- - -

Access the mesh's vertex buffer after it has been committed to the device with . This is different from , which returns the vertex buffer before it has been committed to the device.

-
- No documentation. - No documentation. - - bb173914 - HRESULT ID3DX10Mesh::GetDeviceVertexBuffer([In] unsigned int iBuffer,[In] ID3D10Buffer** ppVertexBuffer) - ID3DX10Mesh::GetDeviceVertexBuffer -
- - -

Access the mesh's index buffer after it has been committed to the device with . This is different from , which returns the index buffer before it has been committed to the device.

-
- No documentation. - -

If the mesh's index buffer has not already been committed to the device, this API will automatically commit the index buffer before it returns a reference to the buffer.

-
- - bb173913 - HRESULT ID3DX10Mesh::GetDeviceIndexBuffer([In] ID3D10Buffer** ppIndexBuffer) - ID3DX10Mesh::GetDeviceIndexBuffer -
- - - Creates a mesh object using a declarator. - - Pointer to an , the device object to be associated with the mesh. - Array of elements, describing the vertex format for the returned mesh. This parameter must map directly to a flexible vertex format (FVF). - Semantic that identifies which part of the vertex declaration contains position information. - Number of vertices for the mesh. This parameter must be greater than 0. - Number of faces for the mesh. The valid range for this number is greater than 0, and one less than the maximum DWORD (typically 65534), because the last index is reserved. - Combination of one or more flags from the , specifying options for the mesh. - HRESULT D3DX10CreateMesh([None] ID3D10Device* pDevice,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDeclaration,[None] int DeclCount,[None] const char* pPositionSemantic,[None] int VertexCount,[None] int FaceCount,[None] int Options,[None] ID3DX10Mesh** ppMesh) - - - - Creates a new mesh and fills it with the data of a previously loaded mesh. - - The semantic name for the position data. - Array of structures, describing the vertex format for the returned mesh. See . - Creation flags to be applied to the new mesh. See . - returns the Mesh cloned. - HRESULT ID3DX10Mesh::CloneMesh([None] int Flags,[None] const char* pPosSemantic,[In, Buffer] const D3D10_INPUT_ELEMENT_DESC* pDesc,[None] int DeclCount,[None] ID3DX10Mesh** ppCloneMesh) - - - - Access the mesh's attribute buffer. - - Returns the attribute buffer. See . - HRESULT ID3DX10Mesh::GetAttributeBuffer([None] ID3DX10MeshBuffer** ppAttribute) - - - - Retrieves either an attribute table for a mesh, or the number of entries stored in an attribute table for a mesh. - - - An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier when drawing the frame. - - Returns an array of structures, representing the entries in the mesh's attribute table. - HRESULT ID3DX10Mesh::GetAttributeTable([Out, Buffer, Optional] D3DX10_ATTRIBUTE_RANGE* pAttribTable,[None] int* pAttribTableSize) - - - - Get the mesh's point rep buffer. - - Returns a mesh buffer containing the mesh's point rep data. See . - HRESULT ID3DX10Mesh::GetPointRepBuffer([None] ID3DX10MeshBuffer** ppPointReps) - - - - Optimizes the mesh data. - - Flags indicating which optimizations to perform. - A result code. - - - - Generates a new mesh with reordered faces and vertices to optimize drawing performance. - - - This method generates a new mesh. Before running Optimize, an application must generate an adjacency buffer by calling . The adjacency buffer contains adjacency data, such as a list of edges and the faces that are adjacent to each other. This method is very similar to the method, except that it can perform optimization while generating the new clone of the mesh. The output mesh inherits all of the creation parameters of the input mesh. - - Specifies the type of optimization to perform. This parameter can be set to a combination of one or more flags from D3DXMESHOPT and D3DXMESH (except D3DXMESH_32BIT, D3DXMESH_IB_WRITEONLY, and D3DXMESH_WRITEONLY). - An array of UINTs, one per face, that identifies the original mesh face that corresponds to each face in the optimized mesh. - An array of index for each vertex that specifies how the new vertices map to the old vertices. This remap is useful if you need to alter external data based on the new vertex mapping. - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT ID3DX10Mesh::Optimize([None] int Flags,[Out, Buffer, Optional] int* pFaceRemap,[In] LPD3D10BLOB* ppVertexRemap) - - - - Set the mesh's adjacency data. - - The adjacency data to set - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT ID3DX10Mesh::SetAdjacencyData([In] const int* pAdjacency) - - - - Set the mesh's attribute data. - - The attribute data to set. - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT ID3DX10Mesh::SetAttributeData([In] const int* pData) - - - - Sets the attribute table for a mesh and the number of entries stored in the table. - - - If an application keeps track of the information in an attribute table, and rearranges the table as a result of changes to attributes or faces, this method allows the application to update the attribute tables instead of calling ID3DX10Mesh::Optimize again. - - an array of structures, representing the entries in the mesh attribute table. - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT ID3DX10Mesh::SetAttributeTable([In, Buffer] const D3DX10_ATTRIBUTE_RANGE* pAttribTable,[None] int cAttribTableSize) - - - - Set the mesh's index data. - - The index data. - The number of indices in pData. - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT ID3DX10Mesh::SetIndexData([None] const void* pData,[None] int cIndices) - - - - Set the point rep data for the mesh. - - The point rep data to set. - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT ID3DX10Mesh::SetPointRepData([None] const int* pPointReps) - - - - Set vertex data into one of the mesh's vertex buffers. - - The vertex buffer to be filled with pData. - The vertex data to set. - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT ID3DX10Mesh::SetVertexData([None] int iBuffer,[None] const void* pData) - - - -

Retrieves the number of faces in the mesh.

-
- - bb173915 - GetFaceCount - GetFaceCount - unsigned int ID3DX10Mesh::GetFaceCount() -
- - -

Get the number of vertices in the mesh. A mesh may contain multiple vertex buffers (i.e. one vertex buffer may contain all position data, another may contains all texture coordinate data, etc.), however each vertex buffer will contain the same number of elements.

-
- - bb173921 - GetVertexCount - GetVertexCount - unsigned int ID3DX10Mesh::GetVertexCount() -
- - -

Get the number of vertex buffers in the mesh.

-
- - bb173920 - GetVertexBufferCount - GetVertexBufferCount - unsigned int ID3DX10Mesh::GetVertexBufferCount() -
- - - Access the mesh's creation flags. - - The creation flags passed into the options parameter of when the mesh was created. See {{D3DX10_MESH}}. - int ID3DX10Mesh::GetFlags() - - - -

A mesh buffer is a buffer that contains data about a mesh. It can contain one of five different types of data: vertex data, index data, adjacency data, attribute data, or point rep data. The structure is used to access these five pieces of data through the following five APIs: , , , , or .

-
- - bb173898 - ID3DX10MeshBuffer - ID3DX10MeshBuffer -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to the mesh buffer memory to modify its contents.

-
-

Pointer to the buffer data.

-

Size of the buffer in bytes.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

Differences between Direct3D 9 and Direct3D 10:

Map() in Direct3D 10 is analogous to resource Map() in Direct3D 9.

?

-
- - bb173900 - HRESULT ID3DX10MeshBuffer::Map([Out] void** ppData,[Out] SIZE_T* pSize) - ID3DX10MeshBuffer::Map -
- - -

Unmap a buffer.

-
-

The return value is one of the values listed in Direct3D 10 Return Codes.

- -

Differences between Direct3D 9 and Direct3D 10:

Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.

?

-
- - bb173901 - HRESULT ID3DX10MeshBuffer::Unmap() - ID3DX10MeshBuffer::Unmap -
- - -

Get the size of the mesh buffer, in bytes.

-
-

The size of the mesh buffer, in bytes.

- - bb173899 - SIZE_T ID3DX10MeshBuffer::GetSize() - ID3DX10MeshBuffer::GetSize -
- - - Get a reference to the mesh buffer memory to modify its contents. - - - Differences between Direct3D 9 and Direct3D 10: Map() in Direct3D 10 is analogous to resource Map() in Direct3D 9. ? - - Returns a reference to the mesh buffer memory to modify its contents - HRESULT ID3DX10MeshBuffer::Map([Out] void** ppData,[Out] SIZE_T* pSize) - - - -

Get the size of the mesh buffer, in bytes.

-
- - bb173899 - GetSize - GetSize - SIZE_T ID3DX10MeshBuffer::GetSize() -
- - -

A pixel-shader interface manages an executable program (a pixel shader) that controls the pixel-shader stage.

-
- -

The pixel-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.

To create a pixel shader interface, call . Before using a pixel shader you must bind it to the device by calling .

This interface is defined in D3D10.h.

-
- - bb173821 - ID3D10PixelShader - ID3D10PixelShader -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - - - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind an array of shader resources to the pixel shader stage.

-
- No documentation. - No documentation. - No documentation. - -

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173606 - void ID3D10Device::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::PSSetShaderResources -
- - -

Bind an array of shader resources to the pixel shader stage.

-
- No documentation. - No documentation. - No documentation. - -

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173606 - void ID3D10Device::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::PSSetShaderResources -
- - -

Sets a pixel shader to the device.

-
-

Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

- -

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173605 - void ID3D10Device::PSSetShader([In, Optional] ID3D10PixelShader* pPixelShader) - ID3D10Device::PSSetShader -
- - -

Set an array of sampler states to the pixel shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MipLODBias0
MaxAnisotropy1
ComparisonFunc
BorderColor[0]1.0f
BorderColor[1]1.0f
BorderColor[2]1.0f
BorderColor[3]1.0f
MinLOD-FLT_MAX
MaxLODFLT_MAX

?

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173604 - void ID3D10Device::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - ID3D10Device::PSSetSamplers -
- - -

Set an array of sampler states to the pixel shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MipLODBias0
MaxAnisotropy1
ComparisonFunc
BorderColor[0]1.0f
BorderColor[1]1.0f
BorderColor[2]1.0f
BorderColor[3]1.0f
MinLOD-FLT_MAX
MaxLODFLT_MAX

?

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173604 - void ID3D10Device::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - ID3D10Device::PSSetSamplers -
- - -

Set the constant buffers used by the pixel shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173603 - void ID3D10Device::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - ID3D10Device::PSSetConstantBuffers -
- - -

Set the constant buffers used by the pixel shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173603 - void ID3D10Device::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - ID3D10Device::PSSetConstantBuffers -
- - -

Get the pixel shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from.

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173602 - void ID3D10Device::PSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::PSGetShaderResources -
- - -

Get the pixel shader currently set on the device.

-
-

Address of a reference to a pixel shader (see ) to be returned by the method.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173601 - void ID3D10Device::PSGetShader([Out] ID3D10PixelShader** ppPixelShader) - ID3D10Device::PSGetShader -
- - -

Get an array of sampler states from the pixel shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173600 - void ID3D10Device::PSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) - ID3D10Device::PSGetSamplers -
- - -

Get the constant buffers used by the pixel shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173599 - void ID3D10Device::PSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) - ID3D10Device::PSGetConstantBuffers -
- - -

A predicate interface determines whether geometry should be processed depending on the results of a previous draw call.

-
- -

A predicate can be created with , and used with .

There are two types of predicates in Direct3D 10: stream-output-overflow predicates and occlusion predicates. Stream-output-overflow predicates will cause any geometry residing in stream-output buffers that were overflowed to not be processed. Occlusion predicates will cause any geometry that did not have a single sample pass the depth/stencil tests to not be processed.

For an example of occlusion-predicated rendering, see Draw Predicated Sample.

-
- - bb173822 - ID3D10Predicate - ID3D10Predicate -
- - -

A query interface queries information from the GPU.

-
- -

A query can be created with .

This interface inherits the functionality of an Interface.

Query data is typically gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of query.

There are, however, some queries that do not require calls to Begin. For a list of possible queries see .

A query is typically executed as shown in the following code:

 queryDesc; ... // Fill out queryDesc structure  * pQuery;	
-            pDevice->CreateQuery(&queryDesc, &pQuery); pQuery->Begin(); ... // Issue graphis commands, do whatever pQuery->End(); UINT64 queryData; // This data type is different depending on the query type while(  != pQuery->GetData(&queryData, sizeof(UINT64), 0) )	
-            {	
-            }	
-            

When using a query that does not require a call to Begin, it still requires a call to End. The call to End causes the data returned by GetData to be accurate up until the last call to End.

-
- - bb173823 - ID3D10Query - ID3D10Query -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a query description.

-
-

Pointer to a query description (see ).

- - bb173824 - void ID3D10Query::GetDesc([Out] D3D10_QUERY_DESC* pDesc) - ID3D10Query::GetDesc -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The query description. - The newly created object. - - - -

Get a query description.

-
- - bb173824 - GetDesc - GetDesc - void ID3D10Query::GetDesc([Out] D3D10_QUERY_DESC* pDesc) -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The query description. - The newly created object. - - - -

A rasterizer-state interface accesses rasterizer state for the rasterizer stage.

-
- -

A rasterizer-state object is created with and bound to the pipeline with .

-
- - bb173825 - ID3D10RasterizerState - ID3D10RasterizerState -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the properties of a rasterizer-state object.

-
-

Pointer to a rasterizer-state description (see ).

- - bb173826 - void ID3D10RasterizerState::GetDesc([Out] D3D10_RASTERIZER_DESC* pDesc) - ID3D10RasterizerState::GetDesc -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - -

Get the properties of a rasterizer-state object.

-
- - bb173826 - GetDesc - GetDesc - void ID3D10RasterizerState::GetDesc([Out] D3D10_RASTERIZER_DESC* pDesc) -
- - -

A render-target-view interface identifies the render-target subresources that can be accessed during rendering.

-
- -

To create a render-target view, call . To bind a render-target view to the pipeline, call .

A rendertarget is a resource that can be written by the output-merger stage at the end of a render pass. Each render-target should also have a corresponding depth-stencil view.

-
- - bb173827 - ID3D10RenderTargetView - ID3D10RenderTargetView -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the properties of a render target view.

-
-

Pointer to the description of a render target view (see ).

- - bb173828 - void ID3D10RenderTargetView::GetDesc([Out] D3D10_RENDER_TARGET_VIEW_DESC* pDesc) - ID3D10RenderTargetView::GetDesc -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. - ID3D10Device::CreateRenderTargetView - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. - A structure describing the to be created. - ID3D10Device::CreateRenderTargetView - - - -

Get the properties of a render target view.

-
- - bb173828 - GetDesc - GetDesc - void ID3D10RenderTargetView::GetDesc([Out] D3D10_RENDER_TARGET_VIEW_DESC* pDesc) -
- - -

A sampler-state interface accesses sampler state for a texture.

-
- -

Create a sampler-state object by calling .

To initialize sampler state, bind the sampler-state object to the pipeline by calling , , or .

-
- - bb173833 - ID3D10SamplerState - ID3D10SamplerState -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the sampler state.

-
-

A reference to the sampler state (see ).

- - bb173834 - void ID3D10SamplerState::GetDesc([Out] D3D10_SAMPLER_DESC* pDesc) - ID3D10SamplerState::GetDesc -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - -

Get the sampler state.

-
- - bb173834 - GetDesc - GetDesc - void ID3D10SamplerState::GetDesc([Out] D3D10_SAMPLER_DESC* pDesc) -
- - -

A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.

-
- -

To create a shader-resource view, call .

A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling , or .

-
- - bb173854 - ID3D10ShaderResourceView - ID3D10ShaderResourceView -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the shader resource view's description.

-
-

A reference to a structure to be filled with data about the shader resource view.

- - bb173855 - void ID3D10ShaderResourceView::GetDesc([Out] D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc) - ID3D10ShaderResourceView::GetDesc -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. - ID3D10Device::CreateShaderResourceView - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. - A structure describing the to be created. - ID3D10Device::CreateShaderResourceView - - - - Create a shader-resource view from a file. Read the characteristics of a texture when the texture is loaded. - - A reference to the device (see ) that will use the resource. - Name of the file that contains the shader-resource view. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file. - - A reference to the device (see ) that will use the resource. - Name of the file that contains the shader-resource view. - Identifies the characteristics of a texture (see ) when the data processor is created. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in memory. - - A reference to the device (see ) that will use the resource. - Pointer to a memory location that contains the shader-resource view. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in memory. - - A reference to the device (see ) that will use the resource. - Pointer to a memory location that contains the shader-resource view. - Identifies the characteristics of a texture (see ) when the data processor is created. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in a stream.. - - A reference to the device (see ) that will use the resource. - Pointer to the file in memory that contains the shader-resource view. - Size of the file to read from the stream - Returns a reference to the shader-resource view (see ). - HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in a stream.. - - A reference to the device (see ) that will use the resource. - Pointer to the file in memory that contains the shader-resource view. - Size of the file to read from the stream - Identifies the characteristics of a texture (see ) when the data processor is created. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - -

Get the shader resource view's description.

-
- - bb173855 - GetDesc - GetDesc - void ID3D10ShaderResourceView::GetDesc([Out] D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc) -
- - -

A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.

-
- -

To create a shader-resource view, call .

A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling , or .

This method requires Windows Vista Service Pack 1.

-
- - bb694557 - ID3D10ShaderResourceView1 - ID3D10ShaderResourceView1 -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the shader resource view's description.

-
-

A reference to a structure to be filled with data about the shader resource view.

- -

This method requires Windows Vista Service Pack 1.

-
- - bb694558 - void ID3D10ShaderResourceView1::GetDesc1([Out] D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc) - ID3D10ShaderResourceView1::GetDesc1 -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. - ID3D10Device1::CreateShaderResourceView1 - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. - A structure describing the to be created. - ID3D10Device1::CreateShaderResourceView1 - - - -

Get the shader resource view's description.

-
- -

This method requires Windows Vista Service Pack 1.

-
- - bb694558 - GetDesc1 - GetDesc1 - void ID3D10ShaderResourceView1::GetDesc1([Out] D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc) -
- - -

allows you to optimize, process, and manually set the relationship between bones and vertices in your meshes (see Skeletal Animation on Wikipedia). It is most useful for making .x files exported by DCC Apps (such as 3DS Max and Maya) more hardware-friendly, and for improving the render speed of your skinned meshes in software render mode.

-
- -

Create a interface with , D3DX10CreateSkinInfoFromBlendedMesh, or D3DX10CreateSkinInfoFVF.

The LPD3DX10SKININFO type is defined as a reference to the interface.

 typedef struct  *LPD3DX10SKININFO;	
-            
-
- - bb173932 - ID3DX10SkinInfo - ID3DX10SkinInfo -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the number of vertices in .

-
-

The number of vertices in .

- - bb173945 - unsigned int ID3DX10SkinInfo::GetNumVertices() - ID3DX10SkinInfo::GetNumVertices -
- - -

Get the number of bones in .

-
-

The number of bones in .

- - bb173944 - unsigned int ID3DX10SkinInfo::GetNumBones() - ID3DX10SkinInfo::GetNumBones -
- - -

Get the number of vertices a bone can maximally influence.

-
-

The number of vertices a bone can maximally influence.

- - bb173943 - unsigned int ID3DX10SkinInfo::GetMaxBoneInfluences() - ID3DX10SkinInfo::GetMaxBoneInfluences -
- - -

Allocate space for additional vertices.

-
-

The number of vertices to add.

-

If this method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY.

- - bb173935 - HRESULT ID3DX10SkinInfo::AddVertices([In] unsigned int Count) - ID3DX10SkinInfo::AddVertices -
- - -

Change which vertices are influenced by which bones.

-
-

The new number of vertices.

-

A reference to an array of vertex indices, which describe the remapping. For example, say SkinInfo contains some vertices such that bone0 is mapped to v0, bone1 to v1, and bone2 to v2, and array with 2,1,0 is specified for pBoneRemap. This will cause bone0 to be mapped to v2, bone1 to v1, and bone2 to v0.

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.

- - bb173947 - HRESULT ID3DX10SkinInfo::RemapVertices([In] unsigned int NewVertexCount,[In, Buffer] unsigned int* pVertexRemap) - ID3DX10SkinInfo::RemapVertices -
- - -

Allocate space for more bones.

-
-

The number of bones to add.

-

If this method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY.

- - bb173934 - HRESULT ID3DX10SkinInfo::AddBones([In] unsigned int Count) - ID3DX10SkinInfo::AddBones -
- - -

Remove a bone.

-
-

An index that specifies which bone to remove. Must be between 0 and the value returned by .

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

- - bb173948 - HRESULT ID3DX10SkinInfo::RemoveBone([In] unsigned int Index) - ID3DX10SkinInfo::RemoveBone -
- - -

Change which bones influence which vertices.

-
-

The new number of bones.

-

A reference to an array of bone indices, which describe the remapping. For example, say SkinInfo contains some bones such that bone0 is mapped to v0, bone1 to v1, and bone2 to v2, and array with 2,1,0 is specified for pBoneRemap. This will cause bone0 to be mapped to v2, bone1 to v1, and bone2 to v0.

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.

- - bb173946 - HRESULT ID3DX10SkinInfo::RemapBones([In] unsigned int NewBoneCount,[In, Buffer] unsigned int* pBoneRemap) - ID3DX10SkinInfo::RemapBones -
- - -

Enable an existing bone to influence a group of vertices and define how much influence the bone has on each vertex.

-
-

An index that specifies an existing bone. Must be between 0 and the value returned by .

-

Number of vertices to add to the bone's influence.

-

Pointer to an array of vertex indices. Each member of this array has a corresponding member in pWeights, such that pIndices[i] corresponds to pWeights[i]. The corresponding value in pWeights[i] determines how much influence BoneIndex will have on the vertex indexed by pIndices[i]. The size of the pIndices array must be equal to or greater than InfluenceCount.

-

Pointer to an array of bone weights. Each member of this array has a corresponding member in pIndices, such that pWeights[i] corresponds to pIndices[i]. Each value in pWeights is between 0 and 1 and defines the amount of influence the bone has over each vertex. The size of pWeights must be equal to or greater than InfluenceCount.

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY.

- - bb173933 - HRESULT ID3DX10SkinInfo::AddBoneInfluences([In] unsigned int BoneIndex,[In] unsigned int InfluenceCount,[In, Buffer] unsigned int* pIndices,[In, Buffer] float* pWeights) - ID3DX10SkinInfo::AddBoneInfluences -
- - -

Clear a bone's list of vertices that it influences.

-
-

An index that specifies an existing bone. Must be between 0 and the value returned by .

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

- - bb173936 - HRESULT ID3DX10SkinInfo::ClearBoneInfluences([In] unsigned int BoneIndex) - ID3DX10SkinInfo::ClearBoneInfluences -
- - -

Get the number of vertices that a given bone influences.

-
-

An index that specifies an existing bone. Must be between 0 and the value returned by .

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

- - bb173941 - unsigned int ID3DX10SkinInfo::GetBoneInfluenceCount([In] unsigned int BoneIndex) - ID3DX10SkinInfo::GetBoneInfluenceCount -
- - -

Get a list of vertices that a given bone influences and a list of the amount of influence that bone has on each vertex.

-
-

An index that specifies an existing bone. Must be between 0 and the value returned by .

-

An offset from the top of the bone's list of influenced vertices. This must be between 0 and the value returned by .

-

The number of indices and weights to retrieve. Must be between 0 and the value returned by .

-

A list of indices into the vertex buffer, each one representing a vertex influenced by the bone. These values correspond to the values in pDestWeights, such that pDestIndices[i] corresponds to pDestWeights[i].

-

A list of the amount of influence the bone has on each vertex. These values correspond to the values in pDestIndices, such that pDestWeights[i] corresponds to pDestIndices[i].f

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY.

- - bb173942 - HRESULT ID3DX10SkinInfo::GetBoneInfluences([In] unsigned int BoneIndex,[In] unsigned int Offset,[In] unsigned int Count,[Out, Buffer] unsigned int* pDestIndices,[Out, Buffer] float* pDestWeights) - ID3DX10SkinInfo::GetBoneInfluences -
- - -

Find the index that indicates where a given vertex is in a given bone's list of influenced vertices.

-
-

An index that specifies an existing bone. Must be between 0 and the value returned by .

-

The index of the vertex in the vertex buffer.

-

The index of the vertex in the bone's list of influenced vertices.

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

- - bb173939 - HRESULT ID3DX10SkinInfo::FindBoneInfluenceIndex([In] unsigned int BoneIndex,[In] unsigned int VertexIndex,[In] unsigned int* pInfluenceIndex) - ID3DX10SkinInfo::FindBoneInfluenceIndex -
- - -

Set the amount of influence a given bone has over a given vertex.

-
-

An index that specifies an existing bone. Must be between 0 and the value returned by .

-

An index into the bone's list of vertices that it influences.

-

The amount of influence, between 0 and 1, that the bone has over the vertex.

-

If the method succeeds, the return value is . If the method fails, the return value can be E_INVALIDARG.

- - bb173949 - HRESULT ID3DX10SkinInfo::SetBoneInfluence([In] unsigned int BoneIndex,[In] unsigned int InfluenceIndex,[In] float Weight) - ID3DX10SkinInfo::SetBoneInfluence -
- - -

Get the amount of influence a given bone has over a given vertex.

-
-

An index that specifies an existing bone. Must be between 0 and the value returned by .

-

An index into the bone's list of vertices that it influences.

-

The amount of influence, between 0 and 1, that the bone has over the vertex.

-

If the method succeeds, the return value is . If the method fails, the return value can be E_INVALIDARG.

- -

Use to find out how many vertices the bone influences.

-
- - bb173940 - HRESULT ID3DX10SkinInfo::GetBoneInfluence([In] unsigned int BoneIndex,[In] unsigned int InfluenceIndex,[In] float* pWeight) - ID3DX10SkinInfo::GetBoneInfluence -
- - -

Limit the number of bones that can influence a vertex and/or limit the amount of influence a bone can have on a vertex.

-
-

The maximum number of bones that can influence any given vertex. This value is ignored if it is greater than the value returned by .

-

A flag describing how to scale the remaining weights on a given vertex after some have been chopped off by MinWeight. If D3DX10_SKININFO_NO_SCALING is specified, the weights will not be scaled at all. If D3DX10_SKININFO_SCALE_TO_1 is specified, the weights greater than MinWeight will be scaled up so that they add up to 1.0. If D3DX10_SKININFO_SCALE_TO_TOTAL is specified, the weights greater than MinWeight will be scaled up so that they add up to the original total.

-

The minimum percentage of influence, or weight, that any bone can have on any vertex. This value must be between 0 and 1.

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_OUTOFMEMORY or E_INVALIDARG.

- - bb173937 - HRESULT ID3DX10SkinInfo::Compact([In] unsigned int MaxPerVertexInfluences,[In] unsigned int ScaleMode,[In] float MinWeight) - ID3DX10SkinInfo::Compact -
- - -

Do software skinning on an array of vertices.

-
-

A 0-based index into pSrcVertices.

-

Number of vertices to transform.

-

Pointer to an array of vertices to transform.

-

The size, in bytes, of a vertex in pSrcVertices.

-

Pointer to an array of vertices, which will be filled with the transformed vertices.

-

The size, in bytes, of a vertex in pDestVertices.

-

An array of matrices that will be used to transform the points mapped to each bone, such that the vertices mapped to bone[i] will be transformed by pBoneMatrices[i]. This array will be used to transform the matrices only if the IsNormal value in pChannelDescs is set to , otherwise pInverseTransposeBoneMatrices will be used.

-

If this value is null, it will be set equal to pBoneMatrices. This array of matrices will be used to transform the vertices only if the IsNormal value in pChannelDescs is set to TRUE, otherwise pBoneMatrices will be used.

-

Pointer to a structure, which determines the member of the vertex decl the software skinning will be done on.

-

The number of structures in pChannelDescs.

-

If the method succeeds, the return value is . If the method fails, the return value can be: E_INVALIDARG.

- -

Here is an example of how to use software skinning:

 //vertex definition	
-            struct MyVertex	
-            {  Position;  Weight;  TexCoord;	
-            }; //create vertex data	
-            const UINT numVertices = 16;	
-            MyVertex vertices[numVertices] = {...};	
-            MyVertex destVertices[numVertices]; //create bone matrices	
-             boneMatrices[2];	
-            D3DXMatrixIdentity(&boneMatrices[0]);	
-            D3DXMatrixRotationX(&boneMatrices[1], 3.14159f / 180.0f); //create bone indices and weights	
-            UINT boneIndices[numVertices] = {...};	
-            float boneWeights[2][numVertices] = {...}; //create skin info, populate it with bones and vertices, and then map them to each other	
-             *pSkinInfo = null;	
-            (&pSkinInfo);	
-            pSkinInfo->AddBones(2);	
-            pSkinInfo->AddVertices(numVertices);	
-            pSkinInfo->AddBoneInfluences(0, numVertices, boneIndices, boneWeights[0]);	
-            pSkinInfo->AddBoneInfluences(1, numVertices, boneIndices, boneWeights[1]); //create channel desc	
-             channelDesc;	
-            channelDesc.SrcOffset = 0;	
-            channelDesc.DestOffset = 0;	
-            channelDesc.IsNormal = ; //do the skinning	
-            pSkinInfo->DoSoftwareSkinning(0, numVertices, vertices, sizeof(MyVertex),  destVertices, sizeof(MyVertex),  boneMatrices, null,  &channelDesc, 1);	
-            
-
- - bb173938 - HRESULT ID3DX10SkinInfo::DoSoftwareSkinning([In] unsigned int StartVertex,[In] unsigned int VertexCount,[In] void* pSrcVertices,[In] unsigned int SrcStride,[In] void* pDestVertices,[In] unsigned int DestStride,[In] D3DXMATRIX* pBoneMatrices,[In, Optional] D3DXMATRIX* pInverseTransposeBoneMatrices,[In] D3DX10_SKINNING_CHANNEL* pChannelDescs,[In] unsigned int NumChannels) - ID3DX10SkinInfo::DoSoftwareSkinning -
- - - Get a list of vertices that a given bone influences and a list of the amount of influence that bone has on each vertex. - - An index that specifies an existing bone. Must be between 0 and the value returned by . - An offset from the top of the bone's list of influenced vertices. This must be between 0 and the value returned by . - The number of indices and weights to retrieve. Must be between 0 and the value returned by ID3DX10SkinInfo::GetBoneInfluenceCount. - A list of indices into the vertex buffer, each one representing a vertex influenced by the bone. These values correspond to the values in pDestWeights, such that pDestIndices[i] corresponds to pDestWeights[i]. - A list of the amount of influence the bone has on each vertex. These values correspond to the values in pDestIndices, such that pDestWeights[i] corresponds to pDestIndices[i].f - If the method succeeds, the return value is S_OK. If the method fails, the return value can be: E_INVALIDARG or E_OUTOFMEMORY. - HRESULT ID3DX10SkinInfo::GetBoneInfluences([None] int BoneIndex,[None] int Offset,[None] int Count,[Out, Buffer] int* pDestIndices,[Out, Buffer] float* pDestWeights) - - - -

Get the number of vertices in .

-
- - bb173945 - GetNumVertices - GetNumVertices - unsigned int ID3DX10SkinInfo::GetNumVertices() -
- - -

Get the number of bones in .

-
- - bb173944 - GetNumBones - GetNumBones - unsigned int ID3DX10SkinInfo::GetNumBones() -
- - -

Get the number of vertices a bone can maximally influence.

-
- - bb173943 - GetMaxBoneInfluences - GetMaxBoneInfluences - unsigned int ID3DX10SkinInfo::GetMaxBoneInfluences() -
- - -

The interface provides a set of methods that simplify the process of drawing sprites using Microsoft Direct3D. This interface can operate on a set of many sprites.

-
- -

The interface is obtained by calling the function.

-
- - bb205601 - ID3DX10Sprite - ID3DX10Sprite -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Prepare a device for drawing sprites.

-
-

Flags that control how the sprites will be drawn. See .

-

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , , D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

- -

Every call to Begin must be matched with a call to .

-
- - bb205602 - HRESULT ID3DX10Sprite::Begin([In] D3DX10_SPRITE_FLAG flags) - ID3DX10Sprite::Begin -
- - -

Add an array of sprites to the batch of sprites to be rendered. This must be called in between calls to and , and must be called before End to send all of the batched sprites to the device for rendering. This draw method is most useful when drawing a small number of sprites that you want buffered into a large batch, such as fonts.

-
- No documentation. - No documentation. -

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

- - bb205603 - HRESULT ID3DX10Sprite::DrawSpritesBuffered([In, Buffer] D3DX10_SPRITE* pSprites,[In] unsigned int cSprites) - ID3DX10Sprite::DrawSpritesBuffered -
- - -

Force all batched sprites to be submitted to the device. Device states remain as they were after the last call to . The list of batched sprites is then cleared.

-
-

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

- - bb205606 - HRESULT ID3DX10Sprite::Flush() - ID3DX10Sprite::Flush -
- - -

Draw an array of sprites. This will immediately send the sprites to the device for rendering, which is different from which only adds an array of sprites to a batch of sprites to be rendered when is called. This draw method is most useful when drawing a large number of sprites that have already been sorted on the CPU (or do not need to be sorted), such as in a particle system. This must be called in between calls to and .

-
- No documentation. - No documentation. - No documentation. - No documentation. -

If the method succeeds, the return value is . If the method fails, the return value can be one of the following: , D3DXERR_INVALIDDATA.

- - bb205604 - HRESULT ID3DX10Sprite::DrawSpritesImmediate([In, Buffer] D3DX10_SPRITE* pSprites,[In] unsigned int cSprites,[In] unsigned int cbSprite,[In] unsigned int flags) - ID3DX10Sprite::DrawSpritesImmediate -
- - -

Call this after . If was specified when was called, this API will restore the device state to how it was before was called.

-
-

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

- - bb205605 - HRESULT ID3DX10Sprite::End() - ID3DX10Sprite::End -
- - -

Get the view transform that applies to all sprites.

-
-

Pointer to a D3DX10MATRIX that will be set to the transform of the sprite from the original world space.

-

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

- - bb205609 - HRESULT ID3DX10Sprite::GetViewTransform([Out] D3DXMATRIX* pViewTransform) - ID3DX10Sprite::GetViewTransform -
- - -

Set the view transform that applies to all sprites.

-
-

Pointer to a that contains a transform of the sprite from the original world space. Use this transform to scale, rotate, or transform the sprite.

-

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

- - bb205611 - HRESULT ID3DX10Sprite::SetViewTransform([In] D3DXMATRIX* pViewTransform) - ID3DX10Sprite::SetViewTransform -
- - -

Get the sprite projection matrix that is applied to all sprites.

-
-

Pointer to a D3DX10MATRIX that will be set to the sprite's projection matrix.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb205608 - HRESULT ID3DX10Sprite::GetProjectionTransform([Out] D3DXMATRIX* pProjectionTransform) - ID3DX10Sprite::GetProjectionTransform -
- - -

Set the projection matrix for all sprites.

-
-

The projection matrix to be used on all sprites.

-

The return value is one of the values listed in Direct3D 10 Return Codes.

- - bb205610 - HRESULT ID3DX10Sprite::SetProjectionTransform([In] D3DXMATRIX* pProjectionTransform) - ID3DX10Sprite::SetProjectionTransform -
- - -

Retrieve the device associated with the sprite object.

-
-

Address of a reference to an interface, representing the Direct3D device object associated with the sprite object.

-

If the method succeeds, the return value is . If the method fails, the following value will be returned: .

- -

Calling this method will increase the internal reference count on the interface.

-
- - bb205607 - HRESULT ID3DX10Sprite::GetDevice([Out] ID3D10Device** ppDevice) - ID3DX10Sprite::GetDevice -
- - - Create a sprite for drawing a 2D texture. - - A reference to the device (see ) that will draw the sprite. - The size of the vertex buffer, in number of sprites, that will be sent to the device when or is called. This should be a small number if you know you will be rendering a small number of sprites at a time (to save memory) and a large number if you know you will be rendering a large number of sprites at a time. The maximum value is 4096. If 0 is specified, the vertex buffer size will automatically be set to 4096. - HRESULT D3DX10CreateSprite([None] ID3D10Device* pDevice,[None] int cDeviceBufferSize,[None] LPD3DX10SPRITE* ppSprite) - - - - Add an array of sprites to the batch of sprites to be rendered. This must be called in between calls to and , and must be called before End to send all of the batched sprites to the device for rendering. This draw method is most useful when drawing a small number of sprites that you want buffered into a large batch, such as fonts. - - The array of sprites to draw. See . - If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. - HRESULT ID3DX10Sprite::DrawSpritesBuffered([None] D3DX10_SPRITE* pSprites,[None] int cSprites) - - - - Draw an array of sprites. This will immediately send the sprites to the device for rendering, which is different from which only adds an array of sprites to a batch of sprites to be rendered when is called. This draw method is most useful when drawing a large number of sprites that have already been sorted on the CPU (or do not need to be sorted), such as in a particle system. This must be called in between calls to and . - - The array of sprites to draw. See . - If the method succeeds, the return value is S_OK. If the method fails, the return value can be one of the following: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA. - HRESULT ID3DX10Sprite::DrawSpritesImmediate([In, Buffer] D3DX10_SPRITE* pSprites,[None] int cSprites,[None] int cbSprite,[None] int flags) - - - -

Get or sets the view transform that applies to all sprites.

-
- - bb205609 - GetViewTransform / SetViewTransform - GetViewTransform - HRESULT ID3DX10Sprite::GetViewTransform([Out] D3DXMATRIX* pViewTransform) -
- - -

Get or sets the sprite projection matrix that is applied to all sprites.

-
- - bb205608 - GetProjectionTransform / SetProjectionTransform - GetProjectionTransform - HRESULT ID3DX10Sprite::GetProjectionTransform([Out] D3DXMATRIX* pProjectionTransform) -
- - -

Retrieve the device associated with the sprite object.

-
- -

Calling this method will increase the internal reference count on the interface.

-
- - bb205607 - GetDevice - GetDevice - HRESULT ID3DX10Sprite::GetDevice([Out] ID3D10Device** ppDevice) -
- - -

A state-block interface encapsulates render states.

-
- -

To create a state-block interface, call .

This interface can be used to save and restore pipeline state. It can also be used to capture the current state.

-
- - bb173856 - ID3D10StateBlock - ID3D10StateBlock -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Capture the current value of states that are included in a stateblock.

-
-

Returns one of the following Direct3D 10 Return Codes.

- -

Capture captures current values for states within an existing state block. It does not capture the entire state of the device. Creating an empty stateblock and calling Capture does nothing if no states have been set.

-
- - bb173858 - HRESULT ID3D10StateBlock::Capture() - ID3D10StateBlock::Capture -
- - -

Apply the state block to the current device state.

-
-

Returns one of the following Direct3D 10 Return Codes.

- - bb173857 - HRESULT ID3D10StateBlock::Apply() - ID3D10StateBlock::Apply -
- - -

Release all references to device objects.

-
-

Returns one of the following Direct3D 10 Return Codes.

- -

Each time you return a reference to an interface (by calling ), the internal reference count is incremented; when you are finished using a stateblock, call this method to release all references and avoid a memory leak.

-
- - cc627127 - HRESULT ID3D10StateBlock::ReleaseAllDeviceObjects() - ID3D10StateBlock::ReleaseAllDeviceObjects -
- - -

Get the device.

-
-

Pointer to the interface that is returned.

-

Returns one of the following Direct3D 10 Return Codes.

- - bb173859 - HRESULT ID3D10StateBlock::GetDevice([Out] ID3D10Device** ppDevice) - ID3D10StateBlock::GetDevice -
- - - Create a state block. - - - A state block is a collection of device state, and is used for saving and restoring device state. Use a state-block mask to enable subsets of state for saving and restoring. The structure can be filled manually or by using any of the D3D10StateBlockMaskXXX APIs. A state block mask can also be obtained by calling or . Differences between Direct3D 9 and Direct3D 10: In Direct3D 10, a state block object does not contain any valid information about the state of the device until is called. In Direct3D 9, state is saved in a state block object, when it is created. ? - - The device for which the state block will be created. - Indicates which parts of the device state will be captured when calling and reapplied when calling . See remarks. - HRESULT D3D10CreateStateBlock([None] ID3D10Device* pDevice,[None] D3D10_STATE_BLOCK_MASK* pStateBlockMask,[None] ID3D10StateBlock** ppStateBlock) - - - -

Get the device.

-
- - bb173859 - GetDevice - GetDevice - HRESULT ID3D10StateBlock::GetDevice([Out] ID3D10Device** ppDevice) -
- - -

A switch-to-reference interface (see the switch-to-reference layer) enables an application to switch between a hardware and software device.

-
- -

This interface is obtained by calling QueryInterface on a Interface created with the flag.

-
- - bb173860 - ID3D10SwitchToRef - ID3D10SwitchToRef -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Switch between a hardware and a software device.

-
-

A boolean value. Set this to TRUE to change to a software device, set this to to change to a hardware device.

-

The previous value of UseRef.

- -

This API will fail if the device is not switchable; you must have created a device that is switchable by specifying the flag during device creation (when calling ).

Switching from a software device to a hardware device clears all cached objects from system memory. Switching from a hardware device to a software device causes resources to be downloaded to system memory.

-
- - bb173862 - BOOL ID3D10SwitchToRef::SetUseRef([In] BOOL UseRef) - ID3D10SwitchToRef::SetUseRef -
- - -

Get a boolean value that indicates the type of device being used.

-
-

TRUE if the device is a software device, if the device is a hardware device. See remarks.

- -

A hardware device is commonly referred to as a HAL device, which stands for a hardware accelerated device. This means that the pipeline is rendering all of the pipeline commands in hardware, using the GPU. Operating the pipeline with a HAL device gives the best performance generally, but it can be more difficult to debug since resources exist on the GPU instead of the CPU.

A software device implements rendering in software using the CPU with no hardware acceleration. A software device is commonly referred to as a reference device or REF device. Because a REF device implements rendering on the CPU, it is generally slower, but is easier to debug since it allows access to resources.

-
- - bb173861 - BOOL ID3D10SwitchToRef::GetUseRef() - ID3D10SwitchToRef::GetUseRef -
- - -

Get a boolean value that indicates the type of device being used.

-
- -

A hardware device is commonly referred to as a HAL device, which stands for a hardware accelerated device. This means that the pipeline is rendering all of the pipeline commands in hardware, using the GPU. Operating the pipeline with a HAL device gives the best performance generally, but it can be more difficult to debug since resources exist on the GPU instead of the CPU.

A software device implements rendering in software using the CPU with no hardware acceleration. A software device is commonly referred to as a reference device or REF device. Because a REF device implements rendering on the CPU, it is generally slower, but is easier to debug since it allows access to resources.

-
- - bb173861 - GetUseRef - GetUseRef - BOOL ID3D10SwitchToRef::GetUseRef() -
- - -

A 1D texture interface accesses texel data, which is structured memory.

-
- -

To create an empty 1D texture, call . For more details on creating and loading textures, see Creating Texture Resources.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

-
- - bb173863 - ID3D10Texture1D - ID3D10Texture1D -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to the data contained in a subresource, and deny the GPU access to that subresource.

-
-

Index number of the subresource. See D3D10CalcSubresource for more details.

-

Specifies the CPU's read and write permissions for a resource. For possible values, see .

-

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

-

Pointer to the texture resource data.

-

If this function succeeds, it returns . For other restrictions, and a listing of error values that can be returned by any of the Map methods, see Remarks.

- - bb173865 - HRESULT ID3D10Texture1D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] void** ppData) - ID3D10Texture1D::Map -
- - -

Invalidate the reference to a resource that was retrieved by , and re-enable the GPU's access to that resource.

-
- No documentation. - -

A subresource must be mapped before Unmap is called.

Differences between Direct3D 9 and Direct3D 10:

Unmap in Direct3D 10 is analogous to resource Unlock in Direct3D 9.

?

-
- - bb173866 - void ID3D10Texture1D::Unmap([In] unsigned int Subresource) - ID3D10Texture1D::Unmap -
- - -

Get the properties of the texture resource.

-
-

Pointer to a resource description (see ).

- - bb173864 - void ID3D10Texture1D::GetDesc([Out] D3D10_TEXTURE1D_DESC* pDesc) - ID3D10Texture1D::GetDesc -
- - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - The initial texture data. - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - - - - Maps the texture, providing CPU access to its contents. - - The mip slice to map. - The IO operations to enable on the CPU. - Flags indicating how the CPU should respond when the GPU is busy. - A data stream containing the mapped data. This data stream is invalidated - when the buffer is unmapped. - - - -

Get the properties of the texture resource.

-
- - bb173864 - GetDesc - GetDesc - void ID3D10Texture1D::GetDesc([Out] D3D10_TEXTURE1D_DESC* pDesc) -
- - -

A 2D texture interface manages texel data, which is structured memory.

-
- -

To create an empty Texture2D resource, call . For more details on creating and loading textures, see Creating Texture Resources.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

-
- - bb173867 - ID3D10Texture2D - ID3D10Texture2D -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to the data contained in a subresource, and deny GPU access to that subresource.

-
-

Index number of the subresource. See D3D10CalcSubresource for more details.

-

Integer that specifies the CPU's read and write permissions for a resource. For possible values, see .

-

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

-

Pointer to a structure () that is filled in by the function and contains a reference to the resource data.

-

If this function succeeds, it returns .

All of the Map methods have identical return values and operating restrictions. These are listed in the remarks section of .

- - bb173869 - HRESULT ID3D10Texture2D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] D3D10_MAPPED_TEXTURE2D* pMappedTex2D) - ID3D10Texture2D::Map -
- - -

Invalidate the reference to the resource that was retrieved by , and re-enable GPU access to the resource.

-
- No documentation. - -

A subresource must be mapped before Unmap is called.

Differences between Direct3D 9 and Direct3D 10:

Unmap in Direct3D 10 is analogous to resource Unlock in Direct3D 9.

?

-
- - bb173870 - void ID3D10Texture2D::Unmap([In] unsigned int Subresource) - ID3D10Texture2D::Unmap -
- - -

Get the properties of the texture resource.

-
-

Pointer to a resource description (see ).

- - bb173868 - void ID3D10Texture2D::GetDesc([Out] D3D10_TEXTURE2D_DESC* pDesc) - ID3D10Texture2D::GetDesc -
- - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - The initial texture data. - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - - - - Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture. - - The source height map texture. - The destination texture. - One or more flags that control generation of normal maps. - One or more flag specifying the source of height information. - Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible. - A object describing the result of the operation. - - - - Maps the texture, providing CPU access to its contents. - - The mip slice to map. - The IO operations to enable on the CPU. - Flags indicating how the CPU should respond when the GPU is busy. - A data rectangle containing the mapped data. This data stream is invalidated when the buffer is unmapped. - - - - Maps the texture, providing CPU access to its contents. - - The mip slice to map. - The IO operations to enable on the CPU. - Flags indicating how the CPU should respond when the GPU is busy. - The data stream. - - A data rectangle containing the mapped data. This data stream is invalidated when the buffer is unmapped. - - - - -

Get the properties of the texture resource.

-
- - bb173868 - GetDesc - GetDesc - void ID3D10Texture2D::GetDesc([Out] D3D10_TEXTURE2D_DESC* pDesc) -
- - -

A 3D texture interface accesses texel data, which is structured memory.

-
- -

To create an empty Texture3D resource, call . For more details on creating and loading textures, see Creating Texture Resources.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

-
- - bb173871 - ID3D10Texture3D - ID3D10Texture3D -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to the data contained in a subresource, and deny GPU access to that subresource.

-
-

Index number of the subresource. See D3D10CalcSubresourcefor more details.

-

Specifies the CPU's read and write permissions for a resource. For possible values, see .

-

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

-

Pointer to a structure () that is filled in by the function and contains a reference to the resource data.

-

If this function succeeds, it returns . All of the Map methods have identical return values and operating restrictions. These are listed in the remarks section of .

- - bb173873 - HRESULT ID3D10Texture3D::Map([In] unsigned int Subresource,[In] D3D10_MAP MapType,[In] D3D10_MAP_FLAG MapFlags,[Out] D3D10_MAPPED_TEXTURE3D* pMappedTex3D) - ID3D10Texture3D::Map -
- - -

Invalidate the reference to the resource retrieved by , and re-enable the GPU's access to the resource.

-
- No documentation. - -

A subresource must be mapped before Unmap is called.

Differences between Direct3D 9 and Direct3D 10:

Unmap() in Direct3D 10 is analogous to resource Unlock() in Direct3D 9.

?

-
- - bb173874 - void ID3D10Texture3D::Unmap([In] unsigned int Subresource) - ID3D10Texture3D::Unmap -
- - -

Get the properties of the texture resource.

-
-

Pointer to a resource description (see ).

- - bb173872 - void ID3D10Texture3D::GetDesc([Out] D3D10_TEXTURE3D_DESC* pDesc) - ID3D10Texture3D::GetDesc -
- - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - The initial texture data. - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - - - - Maps the texture, providing CPU access to its contents. - - The mip slice to map. - The IO operations to enable on the CPU. - Flags indicating how the CPU should respond when the GPU is busy. - - A databox containing the mapped data. This data stream is invalidated when the buffer is unmapped. - - - - - Maps the texture, providing CPU access to its contents. - - The mip slice to map. - The IO operations to enable on the CPU. - Flags indicating how the CPU should respond when the GPU is busy. - The data stream. - - A databox containing the mapped data. This data stream is invalidated when the buffer is unmapped. - - - - -

Get the properties of the texture resource.

-
- - bb173872 - GetDesc - GetDesc - void ID3D10Texture3D::GetDesc([Out] D3D10_TEXTURE3D_DESC* pDesc) -
- - -

A vertex-shader interface manages an executable program (a vertex shader) that controls the vertex-shader stage.

-
- -

The vertex-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in Direct3D 10 are implemented from a common set of features referred to as the common shader core.

To create a vertex shader interface, call . Before using a vertex shader you must bind it to the device by calling .

This interface is defined in D3D10.h.

-
- - bb173875 - ID3D10VertexShader - ID3D10VertexShader -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - - - -

The device interface represents a virtual adapter for Direct3D 10.0; it is used to perform rendering and create Direct3D resources.

-
- -

A device is created using .

-
- - bb173528 - ID3D10Device - ID3D10Device -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the constant buffers used by the vertex shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173626 - void ID3D10Device::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - ID3D10Device::VSSetConstantBuffers -
- - -

Set the constant buffers used by the vertex shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173626 - void ID3D10Device::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const ID3D10Buffer** ppConstantBuffers) - ID3D10Device::VSSetConstantBuffers -
- - -

Set a vertex shader to the device.

-
-

Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

- -

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173628 - void ID3D10Device::VSSetShader([In, Optional] ID3D10VertexShader* pVertexShader) - ID3D10Device::VSSetShader -
- - -

Bind an array of shader resources to the vertex shader stage.

-
- No documentation. - No documentation. - No documentation. - -

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173629 - void ID3D10Device::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::VSSetShaderResources -
- - -

Bind an array of shader resources to the vertex shader stage.

-
- No documentation. - No documentation. - No documentation. - -

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with null. The debug layer (when active) will alert you if this is true.

For information about creating shader-resource views, see .

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173629 - void ID3D10Device::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::VSSetShaderResources -
- - -

Set an array of sampler states to the vertex shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173627 - void ID3D10Device::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - ID3D10Device::VSSetSamplers -
- - -

Set an array of sampler states to the vertex shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device.

-
- - bb173627 - void ID3D10Device::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const ID3D10SamplerState** ppSamplers) - ID3D10Device::VSSetSamplers -
- - -

Get the constant buffers used by the vertex shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173622 - void ID3D10Device::VSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D10Buffer** ppConstantBuffers) - ID3D10Device::VSGetConstantBuffers -
- - -

Get the vertex shader currently set on the device.

-
-

Address of a reference to a vertex shader (see ) to be returned by the method.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173624 - void ID3D10Device::VSGetShader([Out] ID3D10VertexShader** ppVertexShader) - ID3D10Device::VSGetShader -
- - -

Get the vertex shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from.

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources.

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173625 - void ID3D10Device::VSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D10ShaderResourceView** ppShaderResourceViews) - ID3D10Device::VSGetShaderResources -
- - -

Get an array of sampler states from the vertex shader pipeline stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

-
- - bb173623 - void ID3D10Device::VSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D10SamplerState** ppSamplers) - ID3D10Device::VSGetSamplers -
- - -

Describes the blend state.

-
- -

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
BlendEnable[8] (for all 8)
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask[8] (for all 8)

?

-
- - bb204893 - D3D10_BLEND_DESC - D3D10_BLEND_DESC -
- - -

Determines whether or not to use alpha-to-coverage as a multisampling technique when setting a pixel to a rendertarget.

-
- - bb204893 - BOOL AlphaToCoverageEnable - BOOL AlphaToCoverageEnable -
- - -

This blend option specifies the first RGB data source and includes an optional pre-blend operation.

-
- - bb204893 - D3D10_BLEND SrcBlend - D3D10_BLEND SrcBlend -
- - -

This blend option specifies the second RGB data source and includes an optional pre-blend operation.

-
- - bb204893 - D3D10_BLEND DestBlend - D3D10_BLEND DestBlend -
- - -

This blend operation defines how to combine the RGB data sources.

-
- - bb204893 - D3D10_BLEND_OP BlendOp - D3D10_BLEND_OP BlendOp -
- - -

This blend option specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

-
- - bb204893 - D3D10_BLEND SrcBlendAlpha - D3D10_BLEND SrcBlendAlpha -
- - -

This blend option specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

-
- - bb204893 - D3D10_BLEND DestBlendAlpha - D3D10_BLEND DestBlendAlpha -
- - -

This blend operation defines how to combine the alpha data sources.

-
- - bb204893 - D3D10_BLEND_OP BlendOpAlpha - D3D10_BLEND_OP BlendOpAlpha -
- - -

Enable (or disable) blending. There are eight elements in this array; these correspond to the eight rendertargets that can be set to output-merger stage at one time.

-
- - bb204893 - BOOL BlendEnable[8] - BOOL BlendEnable -
- - -

A per-pixel write mask that allows control over which components can be written (see ).

-
- - bb204893 - D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask[8] - D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask -
- - -

Describes the blend state for a Direct3D 10.1 device.

-
- -

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for the blend description.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

This structure requires Windows Vista Service Pack 1.

If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the device performs the blend in linear space.

-
- - bb694528 - D3D10_BLEND_DESC1 - D3D10_BLEND_DESC1 -
- - -

Determines whether or not to use the alpha-to-coverage multisampling technique when setting a render-target pixel.

-
- - bb694528 - BOOL AlphaToCoverageEnable - BOOL AlphaToCoverageEnable -
- - -

Set to TRUE to enable independent blending in simultaneous render targets. If set to , only the RenderTarget[0] members are used. RenderTarget[1..7] are ignored.

-
- - bb694528 - BOOL IndependentBlendEnable - BOOL IndependentBlendEnable -
- - -

An array of render-target-blend descriptions (see ); these correspond to the eight rendertargets that can be set to the output-merger stage at one time.

-
- - bb694528 - D3D10_RENDER_TARGET_BLEND_DESC1 RenderTarget[8] - D3D10_RENDER_TARGET_BLEND_DESC1 RenderTarget -
- - -

Information about the video card's performance counter capabilities.

-
- -

This structure is returned by .

-
- - bb204906 - D3D10_COUNTER_INFO - D3D10_COUNTER_INFO -
- - -

Largest device-dependent counter ID that the device supports. If none are supported, this value will be 0. Otherwise it will be greater than or equal to . See .

-
- - bb204906 - D3D10_COUNTER LastDeviceDependentCounter - D3D10_COUNTER LastDeviceDependentCounter -
- - -

Number of counters that can be simultaneously supported.

-
- - bb204906 - unsigned int NumSimultaneousCounters - unsigned int NumSimultaneousCounters -
- - -

Number of detectable parallel units that the counter is able to discern. Values are 1 ~ 4. Use NumDetectableParallelUnits to interpret the values of the VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, and OTHER_GPU_PROCESSING counters. See for an equation.

-
- - bb204906 - unsigned char NumDetectableParallelUnits - unsigned char NumDetectableParallelUnits -
- - -

Describes a counter.

-
- - bb204905 - D3D10_COUNTER_DESC - D3D10_COUNTER_DESC -
- - -

Type of counter (see ).

-
- - bb204905 - D3D10_COUNTER Counter - D3D10_COUNTER Counter -
- - -

Reserved.

-
- - bb204905 - unsigned int MiscFlags - unsigned int MiscFlags -
- - -

Describes the stencil operations that can be performed based on the results of stencil test.

-
- -

The stencil operation can be set differently based on the outcome of the stencil test by using the StencilFunc member. This can be done for the stencil test portion of depth-stencil testing.

The structure is a member of the structure.

-
- - bb205035 - D3D10_DEPTH_STENCILOP_DESC - D3D10_DEPTH_STENCILOP_DESC -
- - - No documentation. - - - bb205035 - D3D10_STENCIL_OP StencilFailOp - D3D10_STENCIL_OP StencilFailOp - - - - No documentation. - - - bb205035 - D3D10_STENCIL_OP StencilDepthFailOp - D3D10_STENCIL_OP StencilDepthFailOp - - - - No documentation. - - - bb205035 - D3D10_STENCIL_OP StencilPassOp - D3D10_STENCIL_OP StencilPassOp - - - - No documentation. - - - bb205035 - D3D10_COMPARISON_FUNC StencilFunc - D3D10_COMPARISON_FUNC StencilFunc - - - -

Describes depth-stencil state.

-
- -

Depth-stencil state controls how depth-stencil testing is performed by the output-merger stage.

The formats that support stenciling are and .

-
- - bb205036 - D3D10_DEPTH_STENCIL_DESC - D3D10_DEPTH_STENCIL_DESC -
- - -

A Boolean value that enables depth testing. The default value is TRUE.

-
- - bb205036 - BOOL DepthEnable - BOOL DepthEnable -
- - -

A member of the enumerated type that identifies a portion of the depth-stencil buffer that can be modified by depth data. The default value is .

-
- - bb205036 - D3D10_DEPTH_WRITE_MASK DepthWriteMask - D3D10_DEPTH_WRITE_MASK DepthWriteMask -
- - -

A member of the enumerated type that defines how depth data is compared against existing depth data. The default value is

-
- - bb205036 - D3D10_COMPARISON_FUNC DepthFunc - D3D10_COMPARISON_FUNC DepthFunc -
- - -

A Boolean value that enables stencil testing. The default value is .

-
- - bb205036 - BOOL StencilEnable - BOOL StencilEnable -
- - -

A value that identifies a portion of the depth-stencil buffer for reading stencil data. The default value is D3D10_DEFAULT_STENCIL_READ_MASK.

-
- - bb205036 - unsigned char StencilReadMask - unsigned char StencilReadMask -
- - -

A value that identifies a portion of the depth-stencil buffer for writing stencil data. The default value is D3D10_DEFAULT_STENCIL_WRITE_MASK.

-
- - bb205036 - unsigned char StencilWriteMask - unsigned char StencilWriteMask -
- - -

A structure that identifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing toward the camera.

-
- - bb205036 - D3D10_DEPTH_STENCILOP_DESC FrontFace - D3D10_DEPTH_STENCILOP_DESC FrontFace -
- - -

A structure that identifies how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from the camera.

-
- - bb205036 - D3D10_DEPTH_STENCILOP_DESC BackFace - D3D10_DEPTH_STENCILOP_DESC BackFace -
- - -

Specifies the subresource(s) from a texture that are accessible using a depth-stencil view.

-
- -

These are valid formats for a depth-stencil view:

A depth-stencil view cannot use a typeless format. If the format chosen is , then the format of the parent resource is used.

A depth-stencil-view description is needed when calling .

-
- - bb205037 - D3D10_DEPTH_STENCIL_VIEW_DESC - D3D10_DEPTH_STENCIL_VIEW_DESC -
- - - No documentation. - - - bb205037 - DXGI_FORMAT Format - DXGI_FORMAT Format - - - - No documentation. - - - bb205037 - D3D10_DSV_DIMENSION ViewDimension - D3D10_DSV_DIMENSION ViewDimension - - - - No documentation. - - - bb205037 - D3D10_TEX1D_DSV Texture1D - D3D10_TEX1D_DSV Texture1D - - - - No documentation. - - - bb205037 - D3D10_TEX1D_ARRAY_DSV Texture1DArray - D3D10_TEX1D_ARRAY_DSV Texture1DArray - - - - No documentation. - - - bb205037 - D3D10_TEX2D_DSV Texture2D - D3D10_TEX2D_DSV Texture2D - - - - No documentation. - - - bb205037 - D3D10_TEX2D_ARRAY_DSV Texture2DArray - D3D10_TEX2D_ARRAY_DSV Texture2DArray - - - - No documentation. - - - bb205037 - D3D10_TEX2DMS_DSV Texture2DMS - D3D10_TEX2DMS_DSV Texture2DMS - - - - No documentation. - - - bb205037 - D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray - D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray - - - -

Specifies the subresource(s) from an array 2D textures that are accessible to a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - bb172470 - D3D10_TEX2D_ARRAY_DSV - D3D10_TEX2D_ARRAY_DSV -
- - - No documentation. - - - bb172470 - unsigned int MipSlice - unsigned int MipSlice - - - - No documentation. - - - bb172470 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172470 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource(s) from an array of multisampled 2D textures for a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - bb172464 - D3D10_TEX2DMS_ARRAY_DSV - D3D10_TEX2DMS_ARRAY_DSV -
- - - No documentation. - - - bb172464 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172464 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource(s) from an array of 1D textures to use in a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - bb172458 - D3D10_TEX1D_ARRAY_DSV - D3D10_TEX1D_ARRAY_DSV -
- - - No documentation. - - - bb172458 - unsigned int MipSlice - unsigned int MipSlice - - - - No documentation. - - - bb172458 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172458 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource from a 1D texture that is accessible to a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - bb172461 - D3D10_TEX1D_DSV - D3D10_TEX1D_DSV -
- - - No documentation. - - - bb172461 - unsigned int MipSlice - unsigned int MipSlice - - - -

Specifies the subresource from a multisampled 2D texture that is accessible to a depth-stencil view.

-
- -

Since a multisampled 2D texture contains a single subtexture, there is nothing to specify; this unused member is included so that this structure will compile in C.

-
- - bb172467 - D3D10_TEX2DMS_DSV - D3D10_TEX2DMS_DSV -
- - - No documentation. - - - bb172467 - unsigned int UnusedField_NothingToDefine - unsigned int UnusedField_NothingToDefine - - - -

Specifies the subresource from a 2D texture that is accessible to a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - bb172473 - D3D10_TEX2D_DSV - D3D10_TEX2D_DSV -
- - - No documentation. - - - bb172473 - unsigned int MipSlice - unsigned int MipSlice - - - -

Describes an effect.

-
- -

To get an effect description, call .

-
- - bb205047 - D3D10_EFFECT_DESC - D3D10_EFFECT_DESC -
- - -

TRUE if the effect is a child effect; otherwise .

-
- - bb205047 - BOOL IsChildEffect - BOOL IsChildEffect -
- - -

The number of constant buffers.

-
- - bb205047 - unsigned int ConstantBuffers - unsigned int ConstantBuffers -
- - -

The number of constant buffers shared in an effect pool.

-
- - bb205047 - unsigned int SharedConstantBuffers - unsigned int SharedConstantBuffers -
- - -

The number of global variables.

-
- - bb205047 - unsigned int GlobalVariables - unsigned int GlobalVariables -
- - -

The number of global variables shared in an effect pool.

-
- - bb205047 - unsigned int SharedGlobalVariables - unsigned int SharedGlobalVariables -
- - -

The number of techniques.

-
- - bb205047 - unsigned int Techniques - unsigned int Techniques -
- - -

Describes an effect technique.

-
- -

To get a technique, call .

-
- - bb172457 - D3D10_TECHNIQUE_DESC - D3D10_TECHNIQUE_DESC -
- - -

A string that contains the technique name; otherwise null.

-
- - bb172457 - const char* Name - char Name -
- - -

The number of passes in the technique.

-
- - bb172457 - unsigned int Passes - unsigned int Passes -
- - -

The number of annotations.

-
- - bb172457 - unsigned int Annotations - unsigned int Annotations -
- - -

Describes an effect-variable type.

-
- -

To get an effect-variable type, call .

-
- - bb205054 - D3D10_EFFECT_TYPE_DESC - D3D10_EFFECT_TYPE_DESC -
- - -

A string that contains the variable name.

-
- - bb205054 - const char* TypeName - char TypeName -
- - -

The variable class (see D3D10_SHADER_VARIABLE_CLASS).

-
- - bb205054 - D3D_SHADER_VARIABLE_CLASS Class - D3D_SHADER_VARIABLE_CLASS Class -
- - -

The variable type (see D3D10_SHADER_VARIABLE_TYPE).

-
- - bb205054 - D3D_SHADER_VARIABLE_TYPE Type - D3D_SHADER_VARIABLE_TYPE Type -
- - -

The number of elements if the variable is an array; otherwise 0.

-
- - bb205054 - unsigned int Elements - unsigned int Elements -
- - -

The number of members if the variable is a structure; otherwise 0.

-
- - bb205054 - unsigned int Members - unsigned int Members -
- - -

The number of rows if the variable is a matrix; otherwise 0.

-
- - bb205054 - unsigned int Rows - unsigned int Rows -
- - -

The number of columns if the variable is a matrix; otherwise 0.

-
- - bb205054 - unsigned int Columns - unsigned int Columns -
- - -

The number of bytes that the variable consumes when it is packed tightly by the compiler.

-
- - bb205054 - unsigned int PackedSize - unsigned int PackedSize -
- - -

The number of bytes that the variable consumes before it is packed by the compiler.

-
- - bb205054 - unsigned int UnpackedSize - unsigned int UnpackedSize -
- - -

The number of bytes between elements.

-
- - bb205054 - unsigned int Stride - unsigned int Stride -
- - -

Describes an effect variable.

-
- -

To get an effect-variable description, call .

-
- - bb205056 - D3D10_EFFECT_VARIABLE_DESC - D3D10_EFFECT_VARIABLE_DESC -
- - -

A string that contains the variable name.

-
- - bb205056 - const char* Name - char Name -
- - -

The semantic attached to the variable; otherwise null.

-
- - bb205056 - const char* Semantic - char Semantic -
- - -

Optional flags for effect variables.

-
- - bb205056 - D3D10_EFFECT_VARIABLE_FLAGS Flags - D3D10_EFFECT_VARIABLE_FLAGS Flags -
- - -

The number of annotations; otherwise 0.

-
- - bb205056 - unsigned int Annotations - unsigned int Annotations -
- - -

The offset between the beginning of the constant buffer and this variable; otherwise 0.

-
- - bb205056 - unsigned int BufferOffset - unsigned int BufferOffset -
- - -

The register that this variable is bound to. To bind a variable explicitly use the flag.

-
- - bb205056 - unsigned int ExplicitBindPoint - unsigned int ExplicitBindPoint -
- - -

Defines font attributes.

-
- -

The compiler setting also determines the structure type. If Unicode is defined, the structure type resolves to a ; otherwise the structure type resolves to a D3DX10_FONT_DESCA.

Possible values of the above members are given in the GDI structure.

-
- - bb172693 - D3DX10_FONT_DESCW - D3DX10_FONT_DESCW -
- - -

Height, in logical units, of the font's character cell or character.

-
- - bb172693 - int Height - int Height -
- - -

Width, in logical units, of characters in the font.

-
- - bb172693 - unsigned int Width - unsigned int Width -
- - -

Weight of the font in the range from 0 through 1000.

-
- - bb172693 - D3DX10_FONT_WEIGHT Weight - D3DX10_FONT_WEIGHT Weight -
- - -

Number of mipmap levels requested. If this value is zero or D3DX_DEFAULT, a complete mipmap chain is created. If the value is 1, the texture space is mapped identically to the screen space.

-
- - bb172693 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Set to TRUE for an Italic font.

-
- - bb172693 - BOOL Italic - BOOL Italic -
- - -

Character set.

-
- - bb172693 - D3DX10_FONT_CHARSET CharSet - D3DX10_FONT_CHARSET CharSet -
- - -

Output precision. The output precision defines how closely the output must match the requested font height, width, character orientation, escapement, pitch, and font type.

-
- - bb172693 - D3DX10_FONT_PRECISION OutputPrecision - D3DX10_FONT_PRECISION OutputPrecision -
- - -

Output quality.

-
- - bb172693 - D3DX10_FONT_QUALITY Quality - D3DX10_FONT_QUALITY Quality -
- - -

Pitch and family of the font.

-
- - bb172693 - D3DX10_FONT_PITCHFAMILY PitchAndFamily - D3DX10_FONT_PITCHFAMILY PitchAndFamily -
- - -

A null-terminated string that specifies the typeface name of the font. The length of the string must not exceed 32 characters, including the terminating null character. If FaceName is an empty string, the first font that matches the other specified attributes will be used. If the compiler settings require Unicode, the data type TCHAR resolves to WCHAR; otherwise, the data type resolves to CHAR. See Remarks.

-
- - bb172693 - wchar_t FaceName[32] - wchar_t FaceName -
- - -

Returns a description of the original contents of an image file.

-
- - bb172695 - D3DX10_IMAGE_INFO - D3DX10_IMAGE_INFO -
- - -

Width of original image in pixels.

-
- - bb172695 - unsigned int Width - unsigned int Width -
- - -

Height of original image in pixels.

-
- - bb172695 - unsigned int Height - unsigned int Height -
- - -

Depth of original image in pixels.

-
- - bb172695 - unsigned int Depth - unsigned int Depth -
- - -

Size of the texture array. ArraySize will be 1 for a single image.

-
- - bb172695 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Number of mipmap levels in original image.

-
- - bb172695 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Miscellaneous resource properties (see ).

-
- - bb172695 - D3D10_RESOURCE_MISC_FLAG MiscFlags - D3D10_RESOURCE_MISC_FLAG MiscFlags -
- - -

A value from the enumerated type that most closely describes the data in the original image.

-
- - bb172695 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

Represents the type of the texture stored in the file. See .

-
- - bb172695 - D3D10_RESOURCE_DIMENSION ResourceDimension - D3D10_RESOURCE_DIMENSION ResourceDimension -
- - -

Represents the format of the image file. See .

-
- - bb172695 - D3DX10_IMAGE_FILE_FORMAT ImageFileFormat - D3DX10_IMAGE_FILE_FORMAT ImageFileFormat -
- - - Retrieves information about a given image file. - - File name of image to retrieve information about. - If the function succeeds, returns a filled with the description of the data in the source file. else returns null - HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) - - - - Retrieves information about a given image file from a memory location. - - an array to the image in memory - If the function succeeds, returns a filled with the description of the data from the image memory. else returns null - HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) - - - -

Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX10_DEFAULT for any of these parameters will cause D3DX to automatically use the value from the source file.

-
- -

When initializing the structure, you may set any member to D3DX10_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.

This structure can be used by APIs that:

  • Create resources, such as and .
  • Create data processors, such as D3DX10CreateAsyncTextureInfoProcessor or - D3DX10CreateAsyncShaderResourceViewProcessor.
-
- - bb172696 - D3DX10_IMAGE_LOAD_INFO - D3DX10_IMAGE_LOAD_INFO -
- - - The default value for load options. - - - - -

The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.

-
- - bb172696 - unsigned int Width - unsigned int Width -
- - -

The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.

-
- - bb172696 - unsigned int Height - unsigned int Height -
- - -

The depth of the texture. This only applies to volume textures.

-
- - bb172696 - unsigned int Depth - unsigned int Depth -
- - -

The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.

-
- - bb172696 - unsigned int FirstMipLevel - unsigned int FirstMipLevel -
- - -

The maximum number of mipmap levels that the texture will have. Using 0 or D3DX10_DEFAULT will cause a full mipmap chain to be created.

-
- - bb172696 - unsigned int MipLevels - unsigned int MipLevels -
- - -

The way the texture resource is intended to be used. See .

-
- - bb172696 - D3D10_USAGE Usage - D3D10_USAGE Usage -
- - -

The pipeline stages that the texture will be allowed to bind to. See .

-
- - bb172696 - D3D10_BIND_FLAG BindFlags - D3D10_BIND_FLAG BindFlags -
- - -

The access permissions the cpu will have for the texture resource. See .

-
- - bb172696 - D3D10_CPU_ACCESS_FLAG CpuAccessFlags - D3D10_CPU_ACCESS_FLAG CpuAccessFlags -
- - -

Miscellaneous resource properties (see ).

-
- - bb172696 - D3D10_RESOURCE_MISC_FLAG MiscFlags - D3D10_RESOURCE_MISC_FLAG MiscFlags -
- - -

The format the texture will be in after it is loaded. See .

-
- - bb172696 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

Filter the texture using the specified filter (only when resampling). See .

-
- - bb172696 - D3DX10_FILTER_FLAG Filter - D3DX10_FILTER_FLAG Filter -
- - -

Filter the texture mip levels using the specified filter (only if generating mipmaps). Valid values are , , , or . See .

-
- - bb172696 - D3DX10_FILTER_FLAG MipFilter - D3DX10_FILTER_FLAG MipFilter -
- - -

Information about the original image. See . Can be obtained with , , or .

-
- - bb172696 - D3DX10_IMAGE_INFO* pSrcInfo - D3DX10_IMAGE_INFO pSrcInfo -
- - - Gets an ImageLoadInformation that is setup with all default values (). - - - - -

Allow or deny certain types of messages to pass through a filter.

-
- -

is used to define the allow list and deny list in the structure.

-
- - bb205314 - D3D10_INFO_QUEUE_FILTER - D3D10_INFO_QUEUE_FILTER -
- - -

Number of message categories to allow or deny.

-
- - bb205314 - D3D10_INFO_QUEUE_FILTER_DESC AllowList - D3D10_INFO_QUEUE_FILTER_DESC AllowList -
- - -

Array of message categories to allow or deny. Array must have at least NumCategories members (see ).

-
- - bb205314 - D3D10_INFO_QUEUE_FILTER_DESC DenyList - D3D10_INFO_QUEUE_FILTER_DESC DenyList -
- - -

Allow or deny certain types of messages to pass through a filter.

-
- -

is used to define the allow list and deny list in the structure.

-
- - bb205314 - D3D10_INFO_QUEUE_FILTER_DESC - D3D10_INFO_QUEUE_FILTER_DESC -
- - -

Number of message categories to allow or deny.

-
- - bb205314 - unsigned int NumCategories - unsigned int NumCategories -
- - -

Array of message categories to allow or deny. Array must have at least NumCategories members (see ).

-
- - bb205314 - D3D10_MESSAGE_CATEGORY* pCategoryList - D3D10_MESSAGE_CATEGORY pCategoryList -
- - -

Number of message severity levels to allow or deny.

-
- - bb205314 - unsigned int NumSeverities - unsigned int NumSeverities -
- - -

Array of message severity levels to allow or deny. Array must have at least NumSeverities members (see ).

-
- - bb205314 - D3D10_MESSAGE_SEVERITY* pSeverityList - D3D10_MESSAGE_SEVERITY pSeverityList -
- - -

Number of message IDs to allow or deny.

-
- - bb205314 - unsigned int NumIDs - unsigned int NumIDs -
- - -

Array of message IDs to allow or deny. Array must have at least NumIDs members (see ).

-
- - bb205314 - D3D10_MESSAGE_ID* pIDList - D3D10_MESSAGE_ID pIDList -
- - - Gets or sets the categories. - - - The categories. - - - - - Gets or sets the severities. - - - The severities. - - - - - Gets or sets the ids. - - - The ids. - - - - -

A description of a single element for the input-assembler stage.

-
- -

An input-layout object contains an array of structures, each structure defines one element being read from an input slot. Create an input-layout object by calling . For an example, see Create an input-layout object.

-
- - bb205316 - D3D10_INPUT_ELEMENT_DESC - D3D10_INPUT_ELEMENT_DESC -
- - - No documentation. - - - bb205316 - const char* SemanticName - char SemanticName - - - - No documentation. - - - bb205316 - unsigned int SemanticIndex - unsigned int SemanticIndex - - - - No documentation. - - - bb205316 - DXGI_FORMAT Format - DXGI_FORMAT Format - - - - No documentation. - - - bb205316 - unsigned int InputSlot - unsigned int InputSlot - - - - No documentation. - - - bb205316 - unsigned int AlignedByteOffset - unsigned int AlignedByteOffset - - - - No documentation. - - - bb205316 - D3D10_INPUT_CLASSIFICATION InputSlotClass - D3D10_INPUT_CLASSIFICATION InputSlotClass - - - - No documentation. - - - bb205316 - unsigned int InstanceDataStepRate - unsigned int InstanceDataStepRate - - - - Initializes a new instance of the struct. - - The HLSL semantic associated with this element in a shader input-signature. - The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). - The data type of the element data. - Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. - An integer value that identifies the input-assembler. Valid values are between 0 and 15. - Identifies the input data class for a single input slot. - The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data. - - - - Initializes a new instance of the struct. - - The HLSL semantic associated with this element in a shader input-signature. - The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). - The data type of the element data. - Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. - An integer value that identifies the input-assembler. Valid values are between 0 and 15. - - - - Initializes a new instance of the struct. - - The HLSL semantic associated with this element in a shader input-signature. - The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). - The data type of the element data. - An integer value that identifies the input-assembler. Valid values are between 0 and 15. - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - - - - - - - Implements the operator ==. - - The left. - The right. - - The result of the operator. - - - - - Implements the operator !=. - - The left. - The right. - - The result of the operator. - - - - - Returns a value that can be used for the offset parameter of an InputElement to indicate that the element - should be aligned directly after the previous element, including any packing if necessary. - - A value used to align input elements. - D3D10_APPEND_ALIGNED_ELEMENT - - - -

Stores an attribute table entry.

-
- -

An attribute table is used to identify areas of the mesh that need to be drawn with different textures, render states, materials, and so on. In addition, the application can use the attribute table to hide portions of a mesh by not drawing a given attribute identifier (AttribId) when drawing the frame.

The LPD3DX_ATTRIBUTE_RANGE type is defined as a reference to the D3DX_ATTRIBUTE_RANGE structure.

 typedef D3DX_ATTRIBUTE_RANGE* LPD3DX_ATTRIBUTE_RANGE;	
-            
-
- - bb172688 - D3DX10_ATTRIBUTE_RANGE - D3DX10_ATTRIBUTE_RANGE -
- - -

Attribute table identifier.

-
- - bb172688 - unsigned int AttribId - unsigned int AttribId -
- - -

Starting face.

-
- - bb172688 - unsigned int FaceStart - unsigned int FaceStart -
- - -

Face count.

-
- - bb172688 - unsigned int FaceCount - unsigned int FaceCount -
- - -

Starting vertex.

-
- - bb172688 - unsigned int VertexStart - unsigned int VertexStart -
- - -

Vertex count.

-
- - bb172688 - unsigned int VertexCount - unsigned int VertexCount -
- - -

Specifies mesh weight attributes.

-
- -

This structure describes how a simplification operation will consider vertex data when calculating relative costs between collapsing edges. For example, if the Normal field is 0.0, the simplification operation will ignore the vertex normal component when calculating the error for the collapse. However, if the Normal field is 1.0, the simplification operation will use the vertex normal component. If the Normal field is 2.0, double the amount of errors; if the Normal field is 4.0, then quadruple the number of errors, and so on.

The LPD3DX_ATTRIBUTE_WEIGHTS type is defined as a reference to the D3DX_ATTRIBUTE_WEIGHTS structure.

 typedef D3DX_ATTRIBUTE_WEIGHTS* LPD3DX_ATTRIBUTE_WEIGHTS;	
-            
-
- - bb172689 - D3DX10_ATTRIBUTE_WEIGHTS - D3DX10_ATTRIBUTE_WEIGHTS -
- - -

Position.

-
- - bb172689 - float Position - float Position -
- - -

Blend weight.

-
- - bb172689 - float Boundary - float Boundary -
- - -

Normal.

-
- - bb172689 - float Normal - float Normal -
- - -

Diffuse lighting value.

-
- - bb172689 - float Diffuse - float Diffuse -
- - -

Specular lighting value.

-
- - bb172689 - float Specular - float Specular -
- - -

Tangent.

-
- - bb172689 - float Tangent - float Tangent -
- - -

Binormal.

-
- - bb172689 - float Binormal - float Binormal -
- - -

Eight texture coordinates.

-
- - bb172689 - float Texcoord[8] - float Texcoord -
- - -

Categories of debug messages. This will identify the category of a message when retrieving a message with and when adding a message with . When creating an info queue filter, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.

-
- -

This is part of the Information Queue feature. See Interface.

-
- - bb205323 - D3D10_MESSAGE - D3D10_MESSAGE -
- - - No documentation. - - - bb205323 - D3D10_MESSAGE_CATEGORY Category - D3D10_MESSAGE_CATEGORY Category - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_SEVERITY Severity - D3D10_MESSAGE_SEVERITY Severity - - - - No documentation. - - - bb205323 - D3D10_MESSAGE_ID ID - D3D10_MESSAGE_ID ID - - - - No documentation. - - - bb205323 - const char* pDescription - char pDescription - - - - No documentation. - - - bb205323 - SIZE_T DescriptionByteLength - SIZE_T DescriptionByteLength - - - -

Query information about graphics-pipeline activity in between calls to and .

-
- - bb172402 - D3D10_QUERY_DATA_PIPELINE_STATISTICS - D3D10_QUERY_DATA_PIPELINE_STATISTICS -
- - - No documentation. - - - bb172402 - unsigned longlong IAVertices - unsigned longlong IAVertices - - - - No documentation. - - - bb172402 - unsigned longlong IAPrimitives - unsigned longlong IAPrimitives - - - - No documentation. - - - bb172402 - unsigned longlong VSInvocations - unsigned longlong VSInvocations - - - - No documentation. - - - bb172402 - unsigned longlong GSInvocations - unsigned longlong GSInvocations - - - - No documentation. - - - bb172402 - unsigned longlong GSPrimitives - unsigned longlong GSPrimitives - - - - No documentation. - - - bb172402 - unsigned longlong CInvocations - unsigned longlong CInvocations - - - - No documentation. - - - bb172402 - unsigned longlong CPrimitives - unsigned longlong CPrimitives - - - - No documentation. - - - bb172402 - unsigned longlong PSInvocations - unsigned longlong PSInvocations - - - -

Query information about the reliability of a timestamp query.

-
- -

For a list of query types see .

-
- - bb172404 - D3D10_QUERY_DATA_TIMESTAMP_DISJOINT - D3D10_QUERY_DATA_TIMESTAMP_DISJOINT -
- - -

How frequently the GPU counter increments in Hz.

-
- - bb172404 - unsigned longlong Frequency - unsigned longlong Frequency -
- - -

If this is TRUE, something occurred in between the query's and calls that caused the timestamp counter to become discontinuous or disjoint, such as unplugging the AC chord on a laptop, overheating, or throttling up/down due to laptop savings events. The timestamp returned by for a timestamp query is only reliable if Disjoint is .

-
- - bb172404 - BOOL Disjoint - BOOL Disjoint -
- - -

Describes a query.

-
- - bb172405 - D3D10_QUERY_DESC - D3D10_QUERY_DESC -
- - -

Type of query (see ).

-
- - bb172405 - D3D10_QUERY Query - D3D10_QUERY Query -
- - -

Miscellaneous flags (see ).

-
- - bb172405 - D3D10_QUERY_MISC_FLAG MiscFlags - D3D10_QUERY_MISC_FLAG MiscFlags -
- - -

Describes the rasterizer state.

-
- -

Rasterizer state defines the behavior of the rasterizer stage. To create a rasterizer-state object, call . To set rasterizer state, call .

Note??For feature levels 9.1, 9.2, 9.3, and 10.0, if you set MultisampleEnable to , the runtime renders all points, lines, and triangles without anti-aliasing even for render targets with a sample count greater than 1. For feature level 10.1, the setting of MultisampleEnable has no effect on points and triangles with regard to MSAA and impacts only the selection of the line-rendering algorithm as shown in this table:

Line-rendering algorithmMultisampleEnableAntialiasedLineEnable
Aliased
Alpha antialiasedTRUE
QuadrilateralTRUE
QuadrilateralTRUETRUE

?

The settings of the MultisampleEnable and AntialiasedLineEnable members apply only to multisample antialiasing (MSAA) render targets (that is, render targets with sample counts greater than 1). Because of the differences in feature-level behavior and as long as you aren?t performing any line drawing or don?t mind that lines render as quadrilaterals, we recommend that you always set MultisampleEnable to TRUE whenever you render on MSAA render targets.

-
- - bb172408 - D3D10_RASTERIZER_DESC - D3D10_RASTERIZER_DESC -
- - -

A member of the enumerated type that determines the fill mode to use when rendering. The default value is .

-
- - bb172408 - D3D10_FILL_MODE FillMode - D3D10_FILL_MODE FillMode -
- - -

A member of the enumerated type that indicates whether triangles facing the specified direction are drawn. The default value is .

-
- - bb172408 - D3D10_CULL_MODE CullMode - D3D10_CULL_MODE CullMode -
- - -

Determines if a triangle is front-facing or back-facing. If this parameter is TRUE, then a triangle is considered front-facing if its vertices are counter-clockwise on the render target, and considered back-facing if they are clockwise. If this parameter is , then the opposite is true. The default value is .

-
- - bb172408 - BOOL FrontCounterClockwise - BOOL FrontCounterClockwise -
- - -

Specifies the depth value added to a given pixel. The default value is 0. For info about depth bias, see Depth Bias.

-
- - bb172408 - int DepthBias - int DepthBias -
- - -

Specifies the maximum depth bias of a pixel. The default value is 0.0f. For info about depth bias, see Depth Bias.

-
- - bb172408 - float DepthBiasClamp - float DepthBiasClamp -
- - -

Specifies a scalar on a given pixel's slope. The default value is 0.0f. For info about depth bias, see Depth Bias.

-
- - bb172408 - float SlopeScaledDepthBias - float SlopeScaledDepthBias -
- - -

Enables or disables clipping based on distance. The default value is TRUE.

The hardware always performs x and y clipping of rasterized coordinates. When DepthClipEnable is set to the default value, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm). -

0 < w - -w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) - -w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) - 0 <= z <= w -

When you set DepthClipEnable to , the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the "0 < w" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane. -

-
- - bb172408 - BOOL DepthClipEnable - BOOL DepthClipEnable -
- - -

Enable or disables scissor-rectangle culling. All pixels outside an active scissor rectangle are culled. The default value is . For more information, see Set the Scissor Rectangle.

-
- - bb172408 - BOOL ScissorEnable - BOOL ScissorEnable -
- - -

Specifies whether to use the quadrilateral or alpha line anti-aliasing algorithm on multisample antialiasing (MSAA) render targets. The default value is . Set to TRUE to use the quadrilateral line anti-aliasing algorithm and to to use the alpha line anti-aliasing algorithm. For more info about this member, see Remarks.

-
- - bb172408 - BOOL MultisampleEnable - BOOL MultisampleEnable -
- - -

Specifies whether to enable line antialiasing; only applies when alpha blending is enabled, you are drawing lines, and the MultisampleEnable member is . The default value is . For more info about this member, see Remarks.

-
- - bb172408 - BOOL AntialiasedLineEnable - BOOL AntialiasedLineEnable -
- - -

Describes the blend state for a render target for a Direct3D 10.1 device

-
- -

To see how blending is done, see Output-Merger Stage (Direct3D 10).

These are the default values for blend state.

StateDefault Value
BlendEnable
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask

?

-
- - bb694533 - D3D10_RENDER_TARGET_BLEND_DESC1 - D3D10_RENDER_TARGET_BLEND_DESC1 -
- - -

Enable (or disable) blending.

-
- - bb694533 - BOOL BlendEnable - BOOL BlendEnable -
- - -

This blend option specifies the first RGB data source and includes an optional pre-blend operation.

-
- - bb694533 - D3D10_BLEND SrcBlend - D3D10_BLEND SrcBlend -
- - -

This blend option specifies the second RGB data source and includes an optional pre-blend operation.

-
- - bb694533 - D3D10_BLEND DestBlend - D3D10_BLEND DestBlend -
- - -

This blend operation defines how to combine the RGB data sources.

-
- - bb694533 - D3D10_BLEND_OP BlendOp - D3D10_BLEND_OP BlendOp -
- - -

This blend option specifies the first alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

-
- - bb694533 - D3D10_BLEND SrcBlendAlpha - D3D10_BLEND SrcBlendAlpha -
- - -

This blend option specifies the second alpha data source and includes an optional pre-blend operation. Blend options that end in _COLOR are not allowed.

-
- - bb694533 - D3D10_BLEND DestBlendAlpha - D3D10_BLEND DestBlendAlpha -
- - -

This blend operation defines how to combine the alpha data sources.

-
- - bb694533 - D3D10_BLEND_OP BlendOpAlpha - D3D10_BLEND_OP BlendOpAlpha -
- - -

A write mask.

-
- - bb694533 - D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask - D3D10_COLOR_WRITE_ENABLE RenderTargetWriteMask -
- - -

Specifies the subresource(s) from a resource that are accessible using a render-target view.

-
- -

A render-target-view description is passed into to create a render target.

A render-target-view cannot use the following formats:

  • Any typeless format.
  • if the view will be used to bind a buffer (vertex, index, constant, or stream-output).

If the format is set to , then the format of the resource that the view binds to the pipeline will be used.

-
- - bb172410 - D3D10_RENDER_TARGET_VIEW_DESC - D3D10_RENDER_TARGET_VIEW_DESC -
- - - No documentation. - - - bb172410 - DXGI_FORMAT Format - DXGI_FORMAT Format - - - - No documentation. - - - bb172410 - D3D10_RTV_DIMENSION ViewDimension - D3D10_RTV_DIMENSION ViewDimension - - - - No documentation. - - - bb172410 - D3D10_BUFFER_RTV Buffer - D3D10_BUFFER_RTV Buffer - - - - No documentation. - - - bb172410 - D3D10_TEX1D_RTV Texture1D - D3D10_TEX1D_RTV Texture1D - - - - No documentation. - - - bb172410 - D3D10_TEX1D_ARRAY_RTV Texture1DArray - D3D10_TEX1D_ARRAY_RTV Texture1DArray - - - - No documentation. - - - bb172410 - D3D10_TEX2D_RTV Texture2D - D3D10_TEX2D_RTV Texture2D - - - - No documentation. - - - bb172410 - D3D10_TEX2D_ARRAY_RTV Texture2DArray - D3D10_TEX2D_ARRAY_RTV Texture2DArray - - - - No documentation. - - - bb172410 - D3D10_TEX2DMS_RTV Texture2DMS - D3D10_TEX2DMS_RTV Texture2DMS - - - - No documentation. - - - bb172410 - D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray - D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray - - - - No documentation. - - - bb172410 - D3D10_TEX3D_RTV Texture3D - D3D10_TEX3D_RTV Texture3D - - - -

Specifies the subresource(s) from a 3D texture to use in a render-target view.

-
- -

This structure is one member of a render target view. See .

-
- - bb172476 - D3D10_TEX3D_RTV - D3D10_TEX3D_RTV -
- - - No documentation. - - - bb172476 - unsigned int MipSlice - unsigned int MipSlice - - - - No documentation. - - - bb172476 - unsigned int FirstWSlice - unsigned int FirstWSlice - - - - No documentation. - - - bb172476 - unsigned int WSize - unsigned int WSize - - - -

Specifies the subresource(s) from an array of 2D textures to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - bb172471 - D3D10_TEX2D_ARRAY_RTV - D3D10_TEX2D_ARRAY_RTV -
- - - No documentation. - - - bb172471 - unsigned int MipSlice - unsigned int MipSlice - - - - No documentation. - - - bb172471 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172471 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource(s) from a an array of multisampled 2D textures to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - bb172465 - D3D10_TEX2DMS_ARRAY_RTV - D3D10_TEX2DMS_ARRAY_RTV -
- - - No documentation. - - - bb172465 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172465 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the elements from a buffer resource to use in a render-target view.

-
- -

A render-target view is a member of a render-target-view description (see ). Create a render-target view by calling .

-
- - bb204897 - D3D10_BUFFER_RTV - D3D10_BUFFER_RTV -
- - - No documentation. - - - bb204897 - unsigned int FirstElement - unsigned int FirstElement - - - - No documentation. - - - bb204897 - unsigned int ElementOffset - unsigned int ElementOffset - - - - No documentation. - - - bb204897 - unsigned int NumElements - unsigned int NumElements - - - - No documentation. - - - bb204897 - unsigned int ElementWidth - unsigned int ElementWidth - - - -

Specifies the subresource from a 1D texture to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - bb172462 - D3D10_TEX1D_RTV - D3D10_TEX1D_RTV -
- - - No documentation. - - - bb172462 - unsigned int MipSlice - unsigned int MipSlice - - - -

Specifies the subresource(s) from an array of 1D textures to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - bb172459 - D3D10_TEX1D_ARRAY_RTV - D3D10_TEX1D_ARRAY_RTV -
- - - No documentation. - - - bb172459 - unsigned int MipSlice - unsigned int MipSlice - - - - No documentation. - - - bb172459 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172459 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource from a 2D texture to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - bb172474 - D3D10_TEX2D_RTV - D3D10_TEX2D_RTV -
- - - No documentation. - - - bb172474 - unsigned int MipSlice - unsigned int MipSlice - - - -

Specifies the subresource from a multisampled 2D texture to use in a render-target view.

-
- -

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

-
- - bb172468 - D3D10_TEX2DMS_RTV - D3D10_TEX2DMS_RTV -
- - - No documentation. - - - bb172468 - unsigned int UnusedField_NothingToDefine - unsigned int UnusedField_NothingToDefine - - - -

Defines a 3D box.

-
- -

The following diagram shows a 3D box, where the origin is the left, front, top corner.

-
- - bb204895 - D3D10_BOX - D3D10_BOX -
- - -

The x position of the left hand side of the box.

-
- - bb204895 - unsigned int left - unsigned int left -
- - -

The y position of the top of the box.

-
- - bb204895 - unsigned int top - unsigned int top -
- - -

The z position of the front of the box.

-
- - bb204895 - unsigned int front - unsigned int front -
- - -

The x position of the right hand side of the box.

-
- - bb204895 - unsigned int right - unsigned int right -
- - -

The y position of the bottom of the box.

-
- - bb204895 - unsigned int bottom - unsigned int bottom -
- - -

The z position of the back of the box.

-
- - bb204895 - unsigned int back - unsigned int back -
- - -

Describes a sampler state.

-
- -

These are the default values for sampler state.

StateDefault Value
FilterMin_Mag_Mip_Point
AddressUClamp
AddressVClamp
AddressWClamp
MinLOD0.0f
MaxLOD3.402823466e+38F (FLT_MAX)
MipMapLODBias0.0f
MaxAnisotropy16
ComparisonFuncNever
BorderColorfloat4(0.0f, 0.0f, 0.0f, 0.0f)
TextureN/A

?

-
- - bb172415 - D3D10_SAMPLER_DESC - D3D10_SAMPLER_DESC -
- - -

Filtering method to use when sampling a texture (see ).

-
- - bb172415 - D3D10_FILTER Filter - D3D10_FILTER Filter -
- - -

Method to use for resolving a u texture coordinate that is outside the 0 to 1 range (see ).

-
- - bb172415 - D3D10_TEXTURE_ADDRESS_MODE AddressU - D3D10_TEXTURE_ADDRESS_MODE AddressU -
- - -

Method to use for resolving a v texture coordinate that is outside the 0 to 1 range.

-
- - bb172415 - D3D10_TEXTURE_ADDRESS_MODE AddressV - D3D10_TEXTURE_ADDRESS_MODE AddressV -
- - -

Method to use for resolving a w texture coordinate that is outside the 0 to 1 range.

-
- - bb172415 - D3D10_TEXTURE_ADDRESS_MODE AddressW - D3D10_TEXTURE_ADDRESS_MODE AddressW -
- - -

Offset from the calculated mipmap level. For example, if Direct3D calculates that a texture should be sampled at mipmap level 3 and MipLODBias is 2, then the texture will be sampled at mipmap level 5.

-
- - bb172415 - float MipLODBias - float MipLODBias -
- - -

Clamping value used if or is specified in Filter. Valid values are between 1 and 16.

-
- - bb172415 - unsigned int MaxAnisotropy - unsigned int MaxAnisotropy -
- - -

A function that compares sampled data against existing sampled data. The function options are listed in .

-
- - bb172415 - D3D10_COMPARISON_FUNC ComparisonFunc - D3D10_COMPARISON_FUNC ComparisonFunc -
- - -

Border color to use if is specified for AddressU, AddressV, or AddressW. Range must be between 0.0 and 1.0 inclusive.

-
- - bb172415 - SHARPDX_COLOR4 BorderColor - SHARPDX_COLOR4 BorderColor -
- - -

Lower end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed.

-
- - bb172415 - float MinLOD - float MinLOD -
- - -

Upper end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed. This value must be greater than or equal to MinLOD. To have no upper limit on LOD set this to a large value such as D3D10_FLOAT32_MAX.

-
- - bb172415 - float MaxLOD - float MaxLOD -
- - -

Describes a shader constant-buffer.

-
- -

Constants are supplied to shaders in a shader-constant buffer. Get the description of a shader-constant-buffer by calling ID3D10ShaderReflectionConstantBuffer::GetDesc.

-
- - bb172417 - D3D10_SHADER_BUFFER_DESC - D3D10_SHADER_BUFFER_DESC -
- - -

The name of the buffer.

-
- - bb172417 - const char* Name - char Name -
- - -

The intended use of the constant data. See D3D10_CBUFFER_TYPE.

-
- - bb172417 - D3D_CBUFFER_TYPE Type - D3D_CBUFFER_TYPE Type -
- - -

The number of unique variables.

-
- - bb172417 - unsigned int Variables - unsigned int Variables -
- - -

Buffer size (in bytes).

-
- - bb172417 - unsigned int Size - unsigned int Size -
- - -

Shader buffer properties. See D3D10_SHADER_CBUFFER_FLAGS.

-
- - bb172417 - D3D_SHADER_CBUFFER_FLAGS uFlags - D3D_SHADER_CBUFFER_FLAGS uFlags -
- - -

Describes a shader signature.

-
- -

A shader can take n inputs and can produce m outputs. The order of the input (or output) parameters, their associated types, and any attached semantics make up the shader signature. Each shader has an input and an output signature.

When compiling a shader or an effect, some API calls validate shader signatures (such as D3D10CompileShader and ). That is, they compare the output signature of one shader (like a vertex shader) with the input signature of another shader (like a pixel shader). This ensures that a shader outputs data that is compatible with a downstream shader that is consuming that data. Compatible means that a shader signature is a exact-match subset of the preceding shader stage. Exact match means parameter types and semantics must exactly match. Subset means that a parameter that is not required by a downstream stage, does not need to include that parameter in its shader signature.

Get a shader-signature from a shader or an effect by calling APIs such as ID3D10ShaderReflection::GetInputParameterDesc or .

-
- - bb172446 - D3D10_SIGNATURE_PARAMETER_DESC - D3D10_SIGNATURE_PARAMETER_DESC -
- - -

A per-parameter string that identifies how the data will be used. See Semantics (DirectX HLSL).

-
- - bb172446 - const char* SemanticName - char SemanticName -
- - -

Semantic index that modifies the semantic. Used to differentiate different parameters that use the same semantic.

-
- - bb172446 - unsigned int SemanticIndex - unsigned int SemanticIndex -
- - -

The register that will contain this variable's data.

-
- - bb172446 - unsigned int Register - unsigned int Register -
- - -

A predefined string that determines the functionality of certain pipeline stages. See D3D10_NAME.

-
- - bb172446 - D3D_NAME SystemValueType - D3D_NAME SystemValueType -
- - -

The per-component-data type that is stored in a register. See D3D10_REGISTER_COMPONENT_TYPE. Each register can store up to four-components of data.

-
- - bb172446 - D3D_REGISTER_COMPONENT_TYPE ComponentType - D3D_REGISTER_COMPONENT_TYPE ComponentType -
- - -

Mask which indicates which components of a register are used.

-
- - bb172446 - unsigned char Mask - unsigned char Mask -
- - -

Mask which indicates whether a given component is never written (if the signature is an output signature) or always read (if the signature is an input signature). The mask is a combination of D3D10_REGISTER_COMPONENT_TYPE values.

-
- - bb172446 - unsigned char ReadWriteMask - unsigned char ReadWriteMask -
- - -

Describes a shader-resource view.

-
- -

A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read. For more information about how views work, see Views

When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a resource can be viewed with one of these typed formats: , , and , since these typed formats are compatible with the typeless resource.

Create a shader-resource-view description by calling . To view a shader-resource-view description, call .

-
- - bb172437 - D3D10_SHADER_RESOURCE_VIEW_DESC - D3D10_SHADER_RESOURCE_VIEW_DESC -
- - -

The viewing format. See remarks.

-
- - bb172437 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

The resource type of the view. See D3D10_SRV_DIMENSION. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.

-
- - bb172437 - D3D_SRV_DIMENSION ViewDimension - D3D_SRV_DIMENSION ViewDimension -
- - -

View the resource as a buffer using information from a shader-resource view (see ).

-
- - bb172437 - D3D10_BUFFER_SRV Buffer - D3D10_BUFFER_SRV Buffer -
- - -

View the resource as a 1D texture using information from a shader-resource view (see ).

-
- - bb172437 - D3D10_TEX1D_SRV Texture1D - D3D10_TEX1D_SRV Texture1D -
- - -

View the resource as a 1D-texture array using information from a shader-resource view (see .

-
- - bb172437 - D3D10_TEX1D_ARRAY_SRV Texture1DArray - D3D10_TEX1D_ARRAY_SRV Texture1DArray -
- - -

View the resource as a 2D-texture using information from a shader-resource view (see .

-
- - bb172437 - D3D10_TEX2D_SRV Texture2D - D3D10_TEX2D_SRV Texture2D -
- - -

View the resource as a 2D-texture array using information from a shader-resource view (see .

-
- - bb172437 - D3D10_TEX2D_ARRAY_SRV Texture2DArray - D3D10_TEX2D_ARRAY_SRV Texture2DArray -
- - -

View the resource as a 2D-multisampled texture using information from a shader-resource view (see .

-
- - bb172437 - D3D10_TEX2DMS_SRV Texture2DMS - D3D10_TEX2DMS_SRV Texture2DMS -
- - -

View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see .

-
- - bb172437 - D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray - D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray -
- - -

View the resource as a 3D texture using information from a shader-resource view (see .

-
- - bb172437 - D3D10_TEX3D_SRV Texture3D - D3D10_TEX3D_SRV Texture3D -
- - -

View the resource as a 3D-cube texture using information from a shader-resource view (see ).

-
- - bb172437 - D3D10_TEXCUBE_SRV TextureCube - D3D10_TEXCUBE_SRV TextureCube -
- - -

Specifies the elements in a buffer resource to use in a shader-resource view.

-
- -

The structure is a member of the structure, which represents a shader-resource view description. You can create a shader-resource view by calling the method.

-
- - bb204898 - D3D10_BUFFER_SRV - D3D10_BUFFER_SRV -
- - - No documentation. - - - bb204898 - unsigned int FirstElement - unsigned int FirstElement - - - - No documentation. - - - bb204898 - unsigned int ElementOffset - unsigned int ElementOffset - - - - No documentation. - - - bb204898 - unsigned int NumElements - unsigned int NumElements - - - - No documentation. - - - bb204898 - unsigned int ElementWidth - unsigned int ElementWidth - - - -

Specifies the subresource from a 1D texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - bb172463 - D3D10_TEX1D_SRV - D3D10_TEX1D_SRV -
- - - No documentation. - - - bb172463 - unsigned int MostDetailedMip - unsigned int MostDetailedMip - - - - No documentation. - - - bb172463 - unsigned int MipLevels - unsigned int MipLevels - - - -

Specifies the subresource(s) from an array of 1D textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - bb172460 - D3D10_TEX1D_ARRAY_SRV - D3D10_TEX1D_ARRAY_SRV -
- - - No documentation. - - - bb172460 - unsigned int MostDetailedMip - unsigned int MostDetailedMip - - - - No documentation. - - - bb172460 - unsigned int MipLevels - unsigned int MipLevels - - - - No documentation. - - - bb172460 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172460 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource from a 2D texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - bb172475 - D3D10_TEX2D_SRV - D3D10_TEX2D_SRV -
- - - No documentation. - - - bb172475 - unsigned int MostDetailedMip - unsigned int MostDetailedMip - - - - No documentation. - - - bb172475 - unsigned int MipLevels - unsigned int MipLevels - - - -

Specifies the subresource(s) from an array of 2D textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - bb172472 - D3D10_TEX2D_ARRAY_SRV - D3D10_TEX2D_ARRAY_SRV -
- - - No documentation. - - - bb172472 - unsigned int MostDetailedMip - unsigned int MostDetailedMip - - - - No documentation. - - - bb172472 - unsigned int MipLevels - unsigned int MipLevels - - - - No documentation. - - - bb172472 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172472 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource(s) from a multisampled 2D texture to use in a shader-resource view.

-
- -

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

-
- - bb172469 - D3D10_TEX2DMS_SRV - D3D10_TEX2DMS_SRV -
- - - No documentation. - - - bb172469 - unsigned int UnusedField_NothingToDefine - unsigned int UnusedField_NothingToDefine - - - -

Specifies the subresource(s) from an array of multisampled 2D textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - bb172466 - D3D10_TEX2DMS_ARRAY_SRV - D3D10_TEX2DMS_ARRAY_SRV -
- - - No documentation. - - - bb172466 - unsigned int FirstArraySlice - unsigned int FirstArraySlice - - - - No documentation. - - - bb172466 - unsigned int ArraySize - unsigned int ArraySize - - - -

Specifies the subresource(s) from a 3D texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - bb172477 - D3D10_TEX3D_SRV - D3D10_TEX3D_SRV -
- - - No documentation. - - - bb172477 - unsigned int MostDetailedMip - unsigned int MostDetailedMip - - - - No documentation. - - - bb172477 - unsigned int MipLevels - unsigned int MipLevels - - - -

Specifies the subresource from a cube texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - bb172478 - D3D10_TEXCUBE_SRV - D3D10_TEXCUBE_SRV -
- - - No documentation. - - - bb172478 - unsigned int MostDetailedMip - unsigned int MostDetailedMip - - - - No documentation. - - - bb172478 - unsigned int MipLevels - unsigned int MipLevels - - - -

Describes a shader-resource view.

-
- -

A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read. For more information about how views work, see Views

When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a resource can be viewed with one of these typed formats: , , and , since these typed formats are compatible with the typeless resource.

Create a shader-resource-view description by calling . To view a shader-resource-view description, call .

This structure requires Windows Vista Service Pack 1.

-
- - bb694534 - D3D10_SHADER_RESOURCE_VIEW_DESC1 - D3D10_SHADER_RESOURCE_VIEW_DESC1 -
- - -

The viewing format. See remarks.

-
- - bb694534 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

The resource type of the view. See D3D10_SRV_DIMENSION1. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.

-
- - bb694534 - D3D_SRV_DIMENSION ViewDimension - D3D_SRV_DIMENSION ViewDimension -
- - -

View the resource as a buffer using information from a shader-resource view (see ).

-
- - bb694534 - D3D10_BUFFER_SRV Buffer - D3D10_BUFFER_SRV Buffer -
- - -

View the resource as a 1D texture using information from a shader-resource view (see ).

-
- - bb694534 - D3D10_TEX1D_SRV Texture1D - D3D10_TEX1D_SRV Texture1D -
- - -

View the resource as a 1D-texture array using information from a shader-resource view (see .

-
- - bb694534 - D3D10_TEX1D_ARRAY_SRV Texture1DArray - D3D10_TEX1D_ARRAY_SRV Texture1DArray -
- - -

View the resource as a 2D-texture using information from a shader-resource view (see .

-
- - bb694534 - D3D10_TEX2D_SRV Texture2D - D3D10_TEX2D_SRV Texture2D -
- - -

View the resource as a 2D-texture array using information from a shader-resource view (see .

-
- - bb694534 - D3D10_TEX2D_ARRAY_SRV Texture2DArray - D3D10_TEX2D_ARRAY_SRV Texture2DArray -
- - -

View the resource as a 2D-multisampled texture using information from a shader-resource view (see .

-
- - bb694534 - D3D10_TEX2DMS_SRV Texture2DMS - D3D10_TEX2DMS_SRV Texture2DMS -
- - -

View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see .

-
- - bb694534 - D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray - D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray -
- - -

View the resource as a 3D texture using information from a shader-resource view (see .

-
- - bb694534 - D3D10_TEX3D_SRV Texture3D - D3D10_TEX3D_SRV Texture3D -
- - -

View the resource as a 3D-cube texture using information from a shader-resource view (see ).

-
- - bb694534 - D3D10_TEXCUBE_SRV TextureCube - D3D10_TEXCUBE_SRV TextureCube -
- - -

View the resource as an array of cube textures using information from a shader-resource view (see ).

-
- - bb694534 - D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray - D3D10_TEXCUBE_ARRAY_SRV1 TextureCubeArray -
- - -

Specifies the subresource(s) from an array of cube textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

This structure requires Windows Vista Service Pack 1.

-
- - bb694536 - D3D10_TEXCUBE_ARRAY_SRV1 - D3D10_TEXCUBE_ARRAY_SRV1 -
- - - No documentation. - - - bb694536 - unsigned int MostDetailedMip - unsigned int MostDetailedMip - - - - No documentation. - - - bb694536 - unsigned int MipLevels - unsigned int MipLevels - - - - No documentation. - - - bb694536 - unsigned int First2DArrayFace - unsigned int First2DArrayFace - - - - No documentation. - - - bb694536 - unsigned int NumCubes - unsigned int NumCubes - - - -

The member of the vertex decl to do the software skinning on. This is used with the API.

-
- - bb172702 - D3DX10_SKINNING_CHANNEL - D3DX10_SKINNING_CHANNEL -
- - - No documentation. - - - bb172702 - unsigned int SrcOffset - unsigned int SrcOffset - - - - No documentation. - - - bb172702 - unsigned int DestOffset - unsigned int DestOffset - - - - No documentation. - - - bb172702 - BOOL IsNormal - BOOL IsNormal - - - -

Defines position, texture, and color information about a sprite.

-
- - bb172703 - D3DX10_SPRITE - D3DX10_SPRITE -
- - -

The sprite's model-world transformation. This defines the position and orientation of the sprite in world space.

-
- - bb172703 - D3DXMATRIX matWorld - D3DXMATRIX matWorld -
- - -

Offset from the upper-left corner of the texture indicating where the sprite image should start in the texture. TexCoord is in texture coordinates.

-
- - bb172703 - D3DXVECTOR2 TexCoord - D3DXVECTOR2 TexCoord -
- - -

A vector containing the width and height of the sprite in texture coordinates.

-
- - bb172703 - D3DXVECTOR2 TexSize - D3DXVECTOR2 TexSize -
- - -

A color that will be multiplied with the pixel color before rendering.

-
- - bb172703 - D3DXCOLOR ColorModulate - D3DXCOLOR ColorModulate -
- - -

Pointer to a shader-resource view representing the sprite's texture. See Interface.

-
- - bb172703 - ID3D10ShaderResourceView* pTexture - ID3D10ShaderResourceView pTexture -
- - -

The index of the texture. If pTexture does not represent a texture array, then this should be 0.

-
- - bb172703 - unsigned int TextureIndex - unsigned int TextureIndex -
- - - Gets or sets the texture. - - The texture. - - - -

Indicates the device state.

-
- -

A state-block mask indicates the device states that a pass or a technique changes. The D3D10StateBlockMaskEnableCapture function provides a convenient way of setting a range of bitmasks for the array members of .

-
- - bb172453 - D3D10_STATE_BLOCK_MASK - D3D10_STATE_BLOCK_MASK -
- - -

Boolean value indicating whether to save the vertex shader state.

-
- - bb172453 - bool VS - bool VS -
- - -

Boolean value indicating whether to save the geometry shader state.

-
- - bb172453 - bool GS - bool GS -
- - -

Boolean value indicating whether to save the pixel shader state.

-
- - bb172453 - bool PS - bool PS -
- - -

Boolean value indicating whether to save the index buffer state.

-
- - bb172453 - bool IAIndexBuffer - bool IAIndexBuffer -
- - -

Boolean value indicating whether to save the input layout state.

-
- - bb172453 - bool IAInputLayout - bool IAInputLayout -
- - -

Boolean value indicating whether to save the primitive topology state.

-
- - bb172453 - bool IAPrimitiveTopology - bool IAPrimitiveTopology -
- - -

Boolean value indicating whether to save the render targets states.

-
- - bb172453 - bool OMRenderTargets - bool OMRenderTargets -
- - -

Boolean value indicating whether to save the depth-stencil state.

-
- - bb172453 - bool OMDepthStencilState - bool OMDepthStencilState -
- - -

Boolean value indicating whether to save the blend state.

-
- - bb172453 - bool OMBlendState - bool OMBlendState -
- - -

Boolean value indicating whether to save the viewports states.

-
- - bb172453 - bool RSViewports - bool RSViewports -
- - -

Boolean value indicating whether to save the scissor rectangles states.

-
- - bb172453 - bool RSScissorRects - bool RSScissorRects -
- - -

Boolean value indicating whether to save the rasterizer state.

-
- - bb172453 - bool RSRasterizerState - bool RSRasterizerState -
- - -

Boolean value indicating whether to save the stream-out buffers states.

-
- - bb172453 - bool SOBuffers - bool SOBuffers -
- - -

Boolean value indicating whether to save the predication state.

-
- - bb172453 - bool Predication - bool Predication -
- - -

Array of vertex-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - bb172453 - bool VSSamplers[2] - bool VSSamplers -
- - -

Array of vertex-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - bb172453 - bool VSShaderResources[16] - bool VSShaderResources -
- - -

Array of vertex-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

-
- - bb172453 - bool VSConstantBuffers[2] - bool VSConstantBuffers -
- - -

Array of geometry-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - bb172453 - bool GSSamplers[2] - bool GSSamplers -
- - -

Array of geometry-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - bb172453 - bool GSShaderResources[16] - bool GSShaderResources -
- - -

Array of geometry-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.

-
- - bb172453 - bool GSConstantBuffers[2] - bool GSConstantBuffers -
- - -

Array of pixel-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - bb172453 - bool PSSamplers[2] - bool PSSamplers -
- - -

Array of pixel-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - bb172453 - bool PSShaderResources[16] - bool PSShaderResources -
- - -

Array of pixel-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

-
- - bb172453 - bool PSConstantBuffers[2] - bool PSConstantBuffers -
- - -

Array of vertex buffers. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - bb172453 - bool IAVertexBuffers[2] - bool IAVertexBuffers -
- - -

Description of a vertex element in a vertex buffer in an output slot.

-
- - bb172450 - D3D10_SO_DECLARATION_ENTRY - D3D10_SO_DECLARATION_ENTRY -
- - -

Type of output element. Possible values: "POSITION", "NORMAL", or "TEXCOORD0".

-
- - bb172450 - const char* SemanticName - char SemanticName -
- - -

Output element's zero-based index. Should be used if, for example, you have more than one texture coordinate stored in each vertex.

-
- - bb172450 - unsigned int SemanticIndex - unsigned int SemanticIndex -
- - -

Which component of the entry to begin writing out to. Valid values are 0 ~ 3. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.

-
- - bb172450 - unsigned char StartComponent - unsigned char StartComponent -
- - -

The number of components of the entry to write out to. Valid values are 1 ~ 4. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.

-
- - bb172450 - unsigned char ComponentCount - unsigned char ComponentCount -
- - -

The output slot that contains the vertex buffer that contains this output entry.

-
- - bb172450 - unsigned char OutputSlot - unsigned char OutputSlot -
- - - Initializes a new instance of the struct. - - Name of the semantic. - Index of the semantic. - The start component. - The component count. - The output slot. - - - -

Query information about the amount of data streamed out to the stream-output buffers in between and .

-
- - bb172403 - D3D10_QUERY_DATA_SO_STATISTICS - D3D10_QUERY_DATA_SO_STATISTICS -
- - - No documentation. - - - bb172403 - unsigned longlong NumPrimitivesWritten - unsigned longlong NumPrimitivesWritten - - - - No documentation. - - - bb172403 - unsigned longlong PrimitivesStorageNeeded - unsigned longlong PrimitivesStorageNeeded - - - -

Describes a 1D texture.

-
- -

This structure is used in a call to . A helpful derived structure CD3D10_TEXTURE1D_DESC is declared in D3D10.h, to help create a texture description.

-
- - bb172479 - D3D10_TEXTURE1D_DESC - D3D10_TEXTURE1D_DESC -
- - - No documentation. - - - bb172479 - unsigned int Width - unsigned int Width - - - - No documentation. - - - bb172479 - unsigned int MipLevels - unsigned int MipLevels - - - - No documentation. - - - bb172479 - unsigned int ArraySize - unsigned int ArraySize - - - - No documentation. - - - bb172479 - DXGI_FORMAT Format - DXGI_FORMAT Format - - - - No documentation. - - - bb172479 - D3D10_USAGE Usage - D3D10_USAGE Usage - - - - No documentation. - - - bb172479 - D3D10_BIND_FLAG BindFlags - D3D10_BIND_FLAG BindFlags - - - - No documentation. - - - bb172479 - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - - - - No documentation. - - - bb172479 - D3D10_RESOURCE_MISC_FLAG MiscFlags - D3D10_RESOURCE_MISC_FLAG MiscFlags - - - -

Describes a 2D texture.

-
- -

This structure is used in a call to . A helpful derived structure CD3D10_TEXTURE2D_DESC is declared in D3D10.h, to help create a texture description.

The device places some size restrictions (must be multiples of a minimum size) for a subsampled, block compressed, or bit-format resource.

-
- - bb172480 - D3D10_TEXTURE2D_DESC - D3D10_TEXTURE2D_DESC -
- - - No documentation. - - - bb172480 - unsigned int Width - unsigned int Width - - - - No documentation. - - - bb172480 - unsigned int Height - unsigned int Height - - - - No documentation. - - - bb172480 - unsigned int MipLevels - unsigned int MipLevels - - - - No documentation. - - - bb172480 - unsigned int ArraySize - unsigned int ArraySize - - - - No documentation. - - - bb172480 - DXGI_FORMAT Format - DXGI_FORMAT Format - - - - No documentation. - - - bb172480 - DXGI_SAMPLE_DESC SampleDesc - DXGI_SAMPLE_DESC SampleDesc - - - - No documentation. - - - bb172480 - D3D10_USAGE Usage - D3D10_USAGE Usage - - - - No documentation. - - - bb172480 - D3D10_BIND_FLAG BindFlags - D3D10_BIND_FLAG BindFlags - - - - No documentation. - - - bb172480 - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - - - - No documentation. - - - bb172480 - D3D10_RESOURCE_MISC_FLAG MiscFlags - D3D10_RESOURCE_MISC_FLAG MiscFlags - - - -

Describes a 3D texture.

-
- -

This structure is used in a call to . A helpful derived structure CD3D10_TEXTURE3D_DESC is declared in D3D10.h, to help create a texture description.

The device restricts the size of subsampled, block compressed (see Block Compression (Direct3D 10)), and bit format resources to be multiples of sizes specific to each format.

-
- - bb172481 - D3D10_TEXTURE3D_DESC - D3D10_TEXTURE3D_DESC -
- - - No documentation. - - - bb172481 - unsigned int Width - unsigned int Width - - - - No documentation. - - - bb172481 - unsigned int Height - unsigned int Height - - - - No documentation. - - - bb172481 - unsigned int Depth - unsigned int Depth - - - - No documentation. - - - bb172481 - unsigned int MipLevels - unsigned int MipLevels - - - - No documentation. - - - bb172481 - DXGI_FORMAT Format - DXGI_FORMAT Format - - - - No documentation. - - - bb172481 - D3D10_USAGE Usage - D3D10_USAGE Usage - - - - No documentation. - - - bb172481 - D3D10_BIND_FLAG BindFlags - D3D10_BIND_FLAG BindFlags - - - - No documentation. - - - bb172481 - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - D3D10_CPU_ACCESS_FLAG CPUAccessFlags - - - - No documentation. - - - bb172481 - D3D10_RESOURCE_MISC_FLAG MiscFlags - D3D10_RESOURCE_MISC_FLAG MiscFlags - - - -

Describes parameters used to load a texture from another texture.

-
- -

This structure is used in a call to .

-
- - bb172705 - D3DX10_TEXTURE_LOAD_INFO - D3DX10_TEXTURE_LOAD_INFO -
- - -

Source texture box (see ).

-
- - bb172705 - D3D10_BOX* pSrcBox - D3D10_BOX pSrcBox -
- - -

Destination texture box (see ).

-
- - bb172705 - D3D10_BOX* pDstBox - D3D10_BOX pDstBox -
- - -

Source texture mipmap level, see D3D10CalcSubresource for more detail.

-
- - bb172705 - unsigned int SrcFirstMip - unsigned int SrcFirstMip -
- - -

Destination texture mipmap level, see D3D10CalcSubresource for more detail.

-
- - bb172705 - unsigned int DstFirstMip - unsigned int DstFirstMip -
- - -

Number of mipmap levels in the source texture.

-
- - bb172705 - unsigned int NumMips - unsigned int NumMips -
- - -

First element of the source texture.

-
- - bb172705 - unsigned int SrcFirstElement - unsigned int SrcFirstElement -
- - -

First element of the destination texture.

-
- - bb172705 - unsigned int DstFirstElement - unsigned int DstFirstElement -
- - -

Number of elements to load.

-
- - bb172705 - unsigned int NumElements - unsigned int NumElements -
- - -

Filtering options during resampling (see ).

-
- - bb172705 - D3DX10_FILTER_FLAG Filter - D3DX10_FILTER_FLAG Filter -
- - -

Filtering options when generating mip levels (see ).

-
- - bb172705 - D3DX10_FILTER_FLAG MipFilter - D3DX10_FILTER_FLAG MipFilter -
- - - Source texture box (see ). - - D3D11_BOX* pSrcBox - - - - Destination texture box (see ). - - D3D11_BOX* pDstBox - - - - The namespace provides a managed Direct3D10 API. - - bb205066 - Direct3D10 - Direct3D10 - - - - Properties defining the way a buffer is bound to the pipeline as a target for stream output operations. - - - - - Initializes a new instance of the struct. - - The buffer being bound. - The offset to the first vertex (in bytes). - - - - Gets or sets the buffer being bound. - - - - - Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). - - - - - Properties defining the way a buffer (containing vertex data) is bound - to the pipeline for rendering. - - - - - Initializes a new instance of the struct. - - The buffer being bound. - The stride between vertex element (in bytes). - The offset to the first vertex (in bytes). - - - - Gets or sets the buffer being bound. - - - - - Gets or sets the stride between vertex elements in the buffer (in bytes). - - - - - Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). - - -
-
diff --git a/distribution/SharpDX.Direct3D11.Effects.dll b/distribution/SharpDX.Direct3D11.Effects.dll deleted file mode 100644 index 3dce8ee852e7a8387ecab71943903eebdc22a934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58880 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 diff --git a/distribution/SharpDX.Direct3D11.Effects.xml b/distribution/SharpDX.Direct3D11.Effects.xml deleted file mode 100644 index edcf79da..00000000 --- a/distribution/SharpDX.Direct3D11.Effects.xml +++ /dev/null @@ -1,5129 +0,0 @@ - - - - SharpDX.Direct3D11.Effects - - - - - The assembly provides Effects11 managed API for Direct3D11. - - ff476080 - Direct3D11 - Direct3D11 - - - -

An interface manages a set of state objects, resources, and shaders for implementing a rendering effect.

-
- -

An effect is created by calling .

The effect system groups the information required for rendering into an effect which contains: state objects for assigning state changes in groups, resources for supplying input data and storing output data, and programs that control how the rendering is done called shaders.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

Note??

If you call QueryInterface on an object to retrieve the interface, QueryInterface returns E_NOINTERFACE. To work around this issue, use the following code:

 * pIUnknown = (*)pEffect; pIUnknown->AddRef();	
-            
-
- - ff476652 - ID3DX11Effect - ID3DX11Effect -
- - - Initializes a new instance of the class. - - The device. - The effect byte code. - Effect compile options - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Test an effect to see if it contains valid syntax.

-
-

TRUE if the code syntax is valid; otherwise .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476844 - BOOL ID3DX11Effect::IsValid() - ID3DX11Effect::IsValid -
- - -

Get the device that created the effect.

-
-

A reference to an .

-

Returns one of the following Direct3D 11 Return Codes.

- -

An effect is created for a specific device, by calling a function such as .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476835 - HRESULT ID3DX11Effect::GetDevice([Out] ID3D11Device** ppDevice) - ID3DX11Effect::GetDevice -
- - -

Get an effect description.

-
-

A reference to an effect description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476834 - HRESULT ID3DX11Effect::GetDesc([Out] D3DX11_EFFECT_DESC* pDesc) - ID3DX11Effect::GetDesc -
- - -

Get a constant buffer by index.

-
-

A zero-based index.

-

A reference to a .

- -

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476832 - ID3DX11EffectConstantBuffer* ID3DX11Effect::GetConstantBufferByIndex([In] unsigned int Index) - ID3DX11Effect::GetConstantBufferByIndex -
- - -

Get a constant buffer by name.

-
-

The constant-buffer name.

-

A reference to the constant buffer indicated by the Name. See .

- -

An effect that contains a variable that will be read/written by an application requires at least one constant buffer. For best performance, an effect should organize variables into one or more constant buffers based on their frequency of update.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476833 - ID3DX11EffectConstantBuffer* ID3DX11Effect::GetConstantBufferByName([In] const char* Name) - ID3DX11Effect::GetConstantBufferByName -
- - -

Get a variable by index.

-
-

A zero-based index.

-

A reference to a .

- -

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access any local non-static effect variable using its name or with an index.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the index exists.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476840 - ID3DX11EffectVariable* ID3DX11Effect::GetVariableByIndex([In] unsigned int Index) - ID3DX11Effect::GetVariableByIndex -
- - -

Get a variable by name.

-
-

The variable name.

-

A reference to an . Returns an invalid variable if the specified name cannot be found.

- -

An effect may contain one or more variables. Variables outside of a technique are considered global to all effects, those located inside of a technique are local to that technique. You can access an effect variable using its name or with an index.

The method returns a reference to an effect-variable interface whether or not a variable is found. should be called to verify whether or not the name exists.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476841 - ID3DX11EffectVariable* ID3DX11Effect::GetVariableByName([In] const char* Name) - ID3DX11Effect::GetVariableByName -
- - -

Get a variable by semantic.

-
-

The semantic name.

-

A reference to the effect variable indicated by the Semantic. See .

- -

Each effect variable can have a semantic attached, which is a user defined metadata string. Some system-value semantics are reserved words that trigger built in functionality by pipeline stages.

The method returns a reference to an effect-variable interface if a variable is not found; you can call to verify whether or not the semantic exists.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476842 - ID3DX11EffectVariable* ID3DX11Effect::GetVariableBySemantic([In] const char* Semantic) - ID3DX11Effect::GetVariableBySemantic -
- - -

Gets an effect group by index.

-
-

Index of the effect group.

-

A reference to an interface.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476836 - ID3DX11EffectGroup* ID3DX11Effect::GetGroupByIndex([In] unsigned int Index) - ID3DX11Effect::GetGroupByIndex -
- - -

Gets an effect group by name.

-
-

Name of the effect group.

-

A reference to an interface.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476837 - ID3DX11EffectGroup* ID3DX11Effect::GetGroupByName([In] const char* Name) - ID3DX11Effect::GetGroupByName -
- - -

Get a technique by index.

-
-

A zero-based index.

-

A reference to an .

- -

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476838 - ID3DX11EffectTechnique* ID3DX11Effect::GetTechniqueByIndex([In] unsigned int Index) - ID3DX11Effect::GetTechniqueByIndex -
- - -

Get a technique by name.

-
-

The name of the technique.

-

A reference to an . If a technique with the appropriate name is not found an invalid technique is returned. should be called on the returned technique to determine whether it is valid.

- -

An effect contains one or more techniques; each technique contains one or more passes. You can access a technique using its name or with an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476839 - ID3DX11EffectTechnique* ID3DX11Effect::GetTechniqueByName([In] const char* Name) - ID3DX11Effect::GetTechniqueByName -
- - -

Gets a class linkage interface.

-
-

Returns a reference to an interface.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476831 - ID3D11ClassLinkage* ID3DX11Effect::GetClassLinkage() - ID3DX11Effect::GetClassLinkage -
- - -

Creates a copy of an effect interface.

-
-

Flags affecting the creation of the cloned effect. Can be 0 or one of the following values.

FlagDescription
D3DX11_EFFECT_CLONE_FORCE_NONSINGLEIgnore all "single" qualifiers on cbuffers. All cbuffers will have their own s created in the cloned effect.

?

-

Pointer to an reference that will be set to the copy of the effect.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476830 - HRESULT ID3DX11Effect::CloneEffect([In] unsigned int Flags,[In] ID3DX11Effect** ppClonedEffect) - ID3DX11Effect::CloneEffect -
- - -

Minimize the amount of memory required for an effect.

-
-

Returns one of the following Direct3D 11 Return Codes.

- -

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. API methods to read variables will no longer work once reflection data has been removed.

The following methods will fail after Optimize has been called on an effect.

Note??References retrieved with these methods before calling are still valid after is called. This allows the application to get all the variables, techniques, and passes it will use, call Optimize, and then use the effect.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476845 - HRESULT ID3DX11Effect::Optimize() - ID3DX11Effect::Optimize -
- - -

Test an effect to see if the reflection metadata has been removed from memory.

-
-

TRUE if the effect is optimized; otherwise .

- -

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476843 - BOOL ID3DX11Effect::IsOptimized() - ID3DX11Effect::IsOptimized -
- - -

Test an effect to see if it contains valid syntax.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476844 - IsValid - IsValid - BOOL ID3DX11Effect::IsValid() -
- - -

Get the device that created the effect.

-
- -

An effect is created for a specific device, by calling a function such as .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476835 - GetDevice - GetDevice - HRESULT ID3DX11Effect::GetDevice([Out] ID3D11Device** ppDevice) -
- - -

Get an effect description.

-
- -

An effect description contains basic information about an effect such as the techniques it contains and the constant buffer resources it requires.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476834 - GetDesc - GetDesc - HRESULT ID3DX11Effect::GetDesc([Out] D3DX11_EFFECT_DESC* pDesc) -
- - -

Gets a class linkage interface.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476831 - GetClassLinkage - GetClassLinkage - ID3D11ClassLinkage* ID3DX11Effect::GetClassLinkage() -
- - -

Test an effect to see if the reflection metadata has been removed from memory.

-
- -

An effect uses memory space two different ways: to store the information required by the runtime to execute an effect, and to store the metadata required to reflect information back to an application using the API. You can minimize the amount of memory required by an effect by calling which removes the reflection metadata from memory. Of course, API methods to read variables will no longer work once reflection data has been removed.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476843 - IsOptimized - IsOptimized - BOOL ID3DX11Effect::IsOptimized() -
- - -

The blend-variable interface accesses blend state.

-
- -

An interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476653 - ID3DX11EffectBlendVariable - ID3DX11EffectBlendVariable -
- - -

The interface is the base class for all effect variables.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476788 - ID3DX11EffectVariable - ID3DX11EffectVariable -
- - - Set data. - - A reference to the variable. - size in bytes of data to write. - - Returns one of the following {{Direct3D 10 Return Codes}}. - - - This method does no conversion or type checking; it is therefore a very quick way to access array items. - - HRESULT ID3D11EffectVariable::SetRawValue([None] void* pData,[None] int Offset,[None] int Count) - - - - Get data. - - - This method does no conversion or type checking; it is therefore a very quick way to access array items. - - The number of bytes to get. - Returns a filled with the value. - HRESULT ID3D11EffectVariable::GetRawValue([None] void* pData,[None] int Offset,[None] int Count) - - - - Get a scalar variable. - - - AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a scalar variable. See . - ID3D11EffectScalarVariable* ID3D11EffectVariable::AsScalar() - - - - Get a vector variable. - - - AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a vector variable. See . - ID3D11EffectVectorVariable* ID3D11EffectVariable::AsVector() - - - - Get a matrix variable. - - - AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a matrix variable. See . - ID3D11EffectMatrixVariable* ID3D11EffectVariable::AsMatrix() - - - - Get a string variable. - - - AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a string variable. See . - ID3D11EffectStringVariable* ID3D11EffectVariable::AsString() - - - - Get a shader-resource variable. - - - AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a shader-resource variable. See . - ID3D11EffectShaderResourceVariable* ID3D11EffectVariable::AsShaderResource() - - - - Get a render-target-view variable. - - - This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a render-target-view variable. See . - ID3D11EffectRenderTargetViewVariable* ID3D11EffectVariable::AsRenderTargetView() - - - - Get a depth-stencil-view variable. - - - This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a depth-stencil-view variable. See . - ID3D11EffectDepthStencilViewVariable* ID3D11EffectVariable::AsDepthStencilView() - - - - Get a class instance variable. - - A reference to a . - ID3D11EffectClassInstanceVariable* ID3D11EffectVariable::AsClassInstance() - - - - Get an interface variable. - - A reference to a . - ID3D11EffectClassInstanceVariable* ID3D11EffectVariable::AsInterface() - - - - Get an unordered access view variable. - - A reference to a . - ID3D11EffectUnorderedAccessViewVariable* ID3D11EffectVariable::AsDepthStencilView() - - - - Get a constant buffer. - - - AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a constant buffer. See . - ID3D11EffectConstantBuffer* ID3D11EffectVariable::AsConstantBuffer() - - - - Get a shader variable. - - - AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a shader variable. See . - ID3D11EffectShaderVariable* ID3D11EffectVariable::AsShader() - - - - Get a effect-blend variable. - - - AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to an effect blend variable. See . - ID3D11EffectBlendVariable* ID3D11EffectVariable::AsBlend() - - - - Get a depth-stencil variable. - - - AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a depth-stencil variable. See . - ID3D11EffectDepthStencilVariable* ID3D11EffectVariable::AsDepthStencil() - - - - Get a rasterizer variable. - - - AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a rasterizer variable. See . - ID3D11EffectRasterizerVariable* ID3D11EffectVariable::AsRasterizer() - - - - Get a sampler variable. - - - AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data. Applications can test the returned object for validity by calling {{IsValid}}. - - A reference to a sampler variable. See . - ID3D11EffectSamplerVariable* ID3D11EffectVariable::AsSampler() - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Compare the data type with the data stored.

-
-

TRUE if the syntax is valid; otherwise .

- -

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476815 - BOOL ID3DX11EffectVariable::IsValid() - ID3DX11EffectVariable::IsValid -
- - -

Get type information.

-
-

A reference to an .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476814 - ID3DX11EffectType* ID3DX11EffectVariable::GetType() - ID3DX11EffectVariable::GetType -
- - -

Get a description.

-
-

A reference to an effect-variable description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476807 - HRESULT ID3DX11EffectVariable::GetDesc([Out] D3DX11_EFFECT_VARIABLE_DESC* pDesc) - ID3DX11EffectVariable::GetDesc -
- - -

Get an annotation by index.

-
-

A zero-based index.

-

A reference to an .

- -

Annonations can be attached to a technique, a pass, or a global variable.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476805 - ID3DX11EffectVariable* ID3DX11EffectVariable::GetAnnotationByIndex([In] unsigned int Index) - ID3DX11EffectVariable::GetAnnotationByIndex -
- - -

Get an annotation by name.

-
-

The annotation name.

-

A reference to an . Note that if the annotation is not found the returned will be empty. The method should be called to determine whether the annotation was found.

- -

Annonations can be attached to a technique, a pass, or a global variable.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476806 - ID3DX11EffectVariable* ID3DX11EffectVariable::GetAnnotationByName([In] const char* Name) - ID3DX11EffectVariable::GetAnnotationByName -
- - -

Get a structure member by index.

-
-

A zero-based index.

-

A reference to an .

- -

If the effect variable is an structure, use this method to look up a member by index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476809 - ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberByIndex([In] unsigned int Index) - ID3DX11EffectVariable::GetMemberByIndex -
- - -

Get a structure member by name.

-
-

Member name.

-

A reference to an .

- -

If the effect variable is an structure, use this method to look up a member by name.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476810 - ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberByName([In] const char* Name) - ID3DX11EffectVariable::GetMemberByName -
- - -

Get a structure member by semantic.

-
-

The semantic.

-

A reference to an .

- -

If the effect variable is an structure, use this method to look up a member by attached semantic.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476811 - ID3DX11EffectVariable* ID3DX11EffectVariable::GetMemberBySemantic([In] const char* Semantic) - ID3DX11EffectVariable::GetMemberBySemantic -
- - -

Get an array element.

-
-

A zero-based index; otherwise 0.

-

A reference to an .

- -

If the effect variable is an array, use this method to return one of the elements.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476808 - ID3DX11EffectVariable* ID3DX11EffectVariable::GetElement([In] unsigned int Index) - ID3DX11EffectVariable::GetElement -
- - -

Get a constant buffer.

-
-

A reference to a .

- -

Effect variables are read-from or written-to a constant buffer.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476812 - ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::GetParentConstantBuffer() - ID3DX11EffectVariable::GetParentConstantBuffer -
- - -

Get a scalar variable.

-
-

A reference to a scalar variable. See .

- -

AsScalar returns a version of the effect variable that has been specialized to a scalar variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain scalar data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476799 - ID3DX11EffectScalarVariable* ID3DX11EffectVariable::AsScalar() - ID3DX11EffectVariable::AsScalar -
- - -

Get a vector variable.

-
-

A reference to a vector variable. See .

- -

AsVector returns a version of the effect variable that has been specialized to a vector variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain vector data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476804 - ID3DX11EffectVectorVariable* ID3DX11EffectVariable::AsVector() - ID3DX11EffectVariable::AsVector -
- - -

Get a matrix variable.

-
-

A reference to a matrix variable. See .

- -

AsMatrix returns a version of the effect variable that has been specialized to a matrix variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain matrix data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476795 - ID3DX11EffectMatrixVariable* ID3DX11EffectVariable::AsMatrix() - ID3DX11EffectVariable::AsMatrix -
- - -

Get a string variable.

-
-

A reference to a string variable. See .

- -

AsString returns a version of the effect variable that has been specialized to a string variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain string data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476802 - ID3DX11EffectStringVariable* ID3DX11EffectVariable::AsString() - ID3DX11EffectVariable::AsString -
- - -

Get a class-instance variable.

-
-

A reference to class-instance variable. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476790 - ID3DX11EffectClassInstanceVariable* ID3DX11EffectVariable::AsClassInstance() - ID3DX11EffectVariable::AsClassInstance -
- - -

Get an interface variable.

-
-

A reference to an interface variable. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476794 - ID3DX11EffectInterfaceVariable* ID3DX11EffectVariable::AsInterface() - ID3DX11EffectVariable::AsInterface -
- - -

Get a shader-resource variable.

-
-

A reference to a shader-resource variable. See .

- -

AsShaderResource returns a version of the effect variable that has been specialized to a shader-resource variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader-resource data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476801 - ID3DX11EffectShaderResourceVariable* ID3DX11EffectVariable::AsShaderResource() - ID3DX11EffectVariable::AsShaderResource -
- - -

Get an unordered-access-view variable.

-
-

A reference to an unordered-access-view variable. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476803 - ID3DX11EffectUnorderedAccessViewVariable* ID3DX11EffectVariable::AsUnorderedAccessView() - ID3DX11EffectVariable::AsUnorderedAccessView -
- - -

Get a render-target-view variable.

-
-

A reference to a render-target-view variable. See .

- -

This method returns a version of the effect variable that has been specialized to a render-target-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain render-target-view data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476797 - ID3DX11EffectRenderTargetViewVariable* ID3DX11EffectVariable::AsRenderTargetView() - ID3DX11EffectVariable::AsRenderTargetView -
- - -

Get a depth-stencil-view variable.

-
-

A reference to a depth-stencil-view variable. See .

- -

This method returns a version of the effect variable that has been specialized to a depth-stencil-view variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil-view data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476793 - ID3DX11EffectDepthStencilViewVariable* ID3DX11EffectVariable::AsDepthStencilView() - ID3DX11EffectVariable::AsDepthStencilView -
- - -

Get a constant buffer.

-
-

A reference to a constant buffer. See .

- -

AsConstantBuffer returns a version of the effect variable that has been specialized to a constant buffer. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain constant buffer data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476791 - ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::AsConstantBuffer() - ID3DX11EffectVariable::AsConstantBuffer -
- - -

Get a shader variable.

-
-

A reference to a shader variable. See .

- -

AsShader returns a version of the effect variable that has been specialized to a shader variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain shader data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476800 - ID3DX11EffectShaderVariable* ID3DX11EffectVariable::AsShader() - ID3DX11EffectVariable::AsShader -
- - -

Get a effect-blend variable.

-
-

A reference to an effect blend variable. See .

- -

AsBlend returns a version of the effect variable that has been specialized to an effect-blend variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain effect-blend data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476789 - ID3DX11EffectBlendVariable* ID3DX11EffectVariable::AsBlend() - ID3DX11EffectVariable::AsBlend -
- - -

Get a depth-stencil variable.

-
-

A reference to a depth-stencil variable. See .

- -

AsDepthStencil returns a version of the effect variable that has been specialized to a depth-stencil variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain depth-stencil data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476792 - ID3DX11EffectDepthStencilVariable* ID3DX11EffectVariable::AsDepthStencil() - ID3DX11EffectVariable::AsDepthStencil -
- - -

Get a rasterizer variable.

-
-

A reference to a rasterizer variable. See .

- -

AsRasterizer returns a version of the effect variable that has been specialized to a rasterizer variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain rasterizer data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476796 - ID3DX11EffectRasterizerVariable* ID3DX11EffectVariable::AsRasterizer() - ID3DX11EffectVariable::AsRasterizer -
- - -

Get a sampler variable.

-
-

A reference to a sampler variable. See .

- -

AsSampler returns a version of the effect variable that has been specialized to a sampler variable. Similar to a cast, this specialization will return an invalid object if the effect variable does not contain sampler data.

Applications can test the returned object for validity by calling IsValid.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476798 - ID3DX11EffectSamplerVariable* ID3DX11EffectVariable::AsSampler() - ID3DX11EffectVariable::AsSampler -
- - -

Set data.

-
-

A reference to the variable.

-

The offset (in bytes) from the beginning of the reference to the data.

-

The number of bytes to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

This method does no conversion or type checking; it is therefore a very quick way to access array items.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476816 - HRESULT ID3DX11EffectVariable::SetRawValue([In] const void* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVariable::SetRawValue -
- - -

Get data.

-
-

A reference to the variable.

-

The offset (in bytes) from the beginning of the reference to the data.

-

The number of bytes to get.

-

Returns one of the following Direct3D 11 Return Codes.

- -

This method does no conversion or type checking; it is therefore a very quick way to access array items.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476813 - HRESULT ID3DX11EffectVariable::GetRawValue([In] void* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVariable::GetRawValue -
- - -

Compare the data type with the data stored.

-
- -

This method checks that the data type matches the data stored after casting one interface to another (using any of the As methods).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476815 - IsValid - IsValid - BOOL ID3DX11EffectVariable::IsValid() -
- - -

Get type information.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476814 - GetType - GetType - ID3DX11EffectType* ID3DX11EffectVariable::GetType() -
- - -

Get a description.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476807 - GetDesc - GetDesc - HRESULT ID3DX11EffectVariable::GetDesc([Out] D3DX11_EFFECT_VARIABLE_DESC* pDesc) -
- - -

Get a constant buffer.

-
- -

Effect variables are read-from or written-to a constant buffer.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476812 - GetParentConstantBuffer - GetParentConstantBuffer - ID3DX11EffectConstantBuffer* ID3DX11EffectVariable::GetParentConstantBuffer() -
- - - Get a pointer to a blend-state interface. - - Returns . - HRESULT ID3D10EffectBlendVariable::GetBlendState([None] int Index,[Out] ID3D10BlendState** ppBlendState) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a blend-state interface.

-
-

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

-

The address of a reference to a blend-state interface (see ).

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476655 - HRESULT ID3DX11EffectBlendVariable::GetBlendState([In] unsigned int Index,[Out] ID3D11BlendState** ppBlendState) - ID3DX11EffectBlendVariable::GetBlendState -
- - -

Sets an effect's blend-state.

-
-

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

-

A reference to an interface containing the blend-state to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476656 - HRESULT ID3DX11EffectBlendVariable::SetBlendState([In] unsigned int Index,[In] ID3D11BlendState* pBlendState) - ID3DX11EffectBlendVariable::SetBlendState -
- - -

Reverts a previously set blend-state.

-
-

Index into an array of blend-state interfaces. If there is only one blend-state interface, use 0.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476657 - HRESULT ID3DX11EffectBlendVariable::UndoSetBlendState([In] unsigned int Index) - ID3DX11EffectBlendVariable::UndoSetBlendState -
- - -

Get a reference to a blend-state variable.

-
-

Index into an array of blend-state descriptions. If there is only one blend-state variable in the effect, use 0.

-

A reference to a blend-state description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476654 - HRESULT ID3DX11EffectBlendVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_BLEND_DESC* pBlendDesc) - ID3DX11EffectBlendVariable::GetBackingStore -
- - -

A depth-stencil-variable interface accesses depth-stencil state.

-
- -

An interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476677 - ID3DX11EffectDepthStencilVariable - ID3DX11EffectDepthStencilVariable -
- - - Get a pointer to a depth-stencil interface. - - Returns a pointer to a blend-state interface (see ). - HRESULT ID3D10EffectDepthStencilVariable::GetDepthStencilState([None] int Index,[Out] ID3D10DepthStencilState** ppDepthStencilState) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a depth-stencil interface.

-
-

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

-

The address of a reference to a blend-state interface (see ).

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476679 - HRESULT ID3DX11EffectDepthStencilVariable::GetDepthStencilState([In] unsigned int Index,[Out] ID3D11DepthStencilState** ppDepthStencilState) - ID3DX11EffectDepthStencilVariable::GetDepthStencilState -
- - -

Sets the depth stencil state.

-
-

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

-

Pointer to an interface containing the new depth stencil state.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476680 - HRESULT ID3DX11EffectDepthStencilVariable::SetDepthStencilState([In] unsigned int Index,[In] ID3D11DepthStencilState* pDepthStencilState) - ID3DX11EffectDepthStencilVariable::SetDepthStencilState -
- - -

Reverts a previously set depth stencil state.

-
-

Index into an array of depth-stencil interfaces. If there is only one depth-stencil interface, use 0.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476681 - HRESULT ID3DX11EffectDepthStencilVariable::UndoSetDepthStencilState([In] unsigned int Index) - ID3DX11EffectDepthStencilVariable::UndoSetDepthStencilState -
- - -

Get a reference to a variable that contains depth-stencil state.

-
-

Index into an array of depth-stencil-state descriptions. If there is only one depth-stencil variable in the effect, use 0.

-

A reference to a depth-stencil-state description (see ).

- -

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476678 - HRESULT ID3DX11EffectDepthStencilVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc) - ID3DX11EffectDepthStencilVariable::GetBackingStore -
- - -

A depth-stencil-view-variable interface accesses a depth-stencil view.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476682 - ID3DX11EffectDepthStencilViewVariable - ID3DX11EffectDepthStencilViewVariable -
- - - Set an array of depth-stencil-view resources. - - A pointer to an array of depth-stencil-view interfaces. See . - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Set an array of depth-stencil-view resources. - - A pointer to an array of depth-stencil-view interfaces. See . - The zero-based array index to set the first interface. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of depth-stencil-view resources. - - The number of elements in the array. - Returns an array of depth-stencil-view interfaces. See . - HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of depth-stencil-view resources. - - The zero-based array index to get the first interface. - The number of elements in the array. - Returns an array of depth-stencil-view interfaces. See . - HRESULT ID3D10EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D10DepthStencilView** ppResources,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a depth-stencil-view resource.

-
-

A reference to a depth-stencil-view interface. See .

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476685 - HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencil([In] ID3D11DepthStencilView* pResource) - ID3DX11EffectDepthStencilViewVariable::SetDepthStencil -
- - -

Get a depth-stencil-view resource.

-
-

The address of a reference to a depth-stencil-view interface. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476683 - HRESULT ID3DX11EffectDepthStencilViewVariable::GetDepthStencil([In] ID3D11DepthStencilView** ppResource) - ID3DX11EffectDepthStencilViewVariable::GetDepthStencil -
- - -

Set an array of depth-stencil-view resources.

-
-

A reference to an array of depth-stencil-view interfaces. See .

-

The zero-based array index to set the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476686 - HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray -
- - -

Set an array of depth-stencil-view resources.

-
-

A reference to an array of depth-stencil-view interfaces. See .

-

The zero-based array index to set the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476686 - HRESULT ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray([In, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectDepthStencilViewVariable::SetDepthStencilArray -
- - -

Get an array of depth-stencil-view resources.

-
-

A reference to an array of depth-stencil-view interfaces. See .

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476684 - HRESULT ID3DX11EffectDepthStencilViewVariable::GetDepthStencilArray([Out, Buffer] ID3D11DepthStencilView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectDepthStencilViewVariable::GetDepthStencilArray -
- - -

A matrix-variable interface accesses a matrix.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476697 - ID3DX11EffectMatrixVariable - ID3DX11EffectMatrixVariable -
- - - Set a floating-point matrix. - - A pointer to the first element in the matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrix([In] float* pData) - - - - Get a matrix. - - A reference to the first element in a matrix. - - Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) - - - - Get a matrix. - - A reference to the first element in a matrix. - - Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) - - - - Set a floating-point matrix. - - A pointer to the first element in the matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrix([In] float* pData) - - - - Set an array of floating-point matrices. - - A pointer to the first matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an array of floating-point matrices. - - A pointer to the first matrix. - The number of matrix elements to skip from the start of the array. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrixArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of matrices. - - The number of matrices in the returned array. - Returns an array of matrix. - HRESULT ID3D11EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of matrices. - - The offset (in number of matrices) between the start of the array and the first matrix returned. - The number of matrices in the returned array. - Returns an array of matrix. - HRESULT ID3D11EffectMatrixVariable::GetMatrixArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and set a floating-point matrix. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to the first element of a matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrixTranspose([In] float* pData) - - - - Transpose and set a floating-point matrix. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to the first element of a matrix. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrixTranspose([In] float* pData) - - - - Transpose and set an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to an array of matrices. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and set an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - A pointer to an array of matrices. - The offset (in number of matrices) between the start of the array and the first matrix to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectMatrixVariable::SetMatrixTransposeArray([In] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and get a floating-point matrix. - - The transposed matrix. - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) - - - - Transpose and get a floating-point matrix. - - The transposed matrix. - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11. - - HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) - - - - Transpose and get an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - The number of matrices in the array to get. - Returns an array of transposed . - HRESULT ID3D11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Transpose and get an array of floating-point matrices. - - - Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa). - - The offset (in number of matrices) between the start of the array and the first matrix to get. - The number of matrices in the array to get. - Returns an array of transposed . - HRESULT ID3D11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a floating-point matrix.

-
-

A reference to the first element in the matrix.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476702 - HRESULT ID3DX11EffectMatrixVariable::SetMatrix([In] const SHARPDX_MATRIX* pData) - ID3DX11EffectMatrixVariable::SetMatrix -
- - -

Get a matrix.

-
-

A reference to the first element in a matrix.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476698 - HRESULT ID3DX11EffectMatrixVariable::GetMatrix([Out] SHARPDX_MATRIX* pData) - ID3DX11EffectMatrixVariable::GetMatrix -
- - -

Set an array of floating-point matrices.

-
-

A reference to the first matrix.

-

The number of matrix elements to skip from the start of the array.

-

The number of elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476703 - HRESULT ID3DX11EffectMatrixVariable::SetMatrixArray([In, Buffer] const SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectMatrixVariable::SetMatrixArray -
- - -

Get an array of matrices.

-
-

A reference to the first element of the first matrix in an array of matrices.

-

The offset (in number of matrices) between the start of the array and the first matrix returned.

-

The number of matrices in the returned array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476699 - HRESULT ID3DX11EffectMatrixVariable::GetMatrixArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectMatrixVariable::GetMatrixArray -
- - -

Transpose and set a floating-point matrix.

-
-

A reference to the first element of a matrix.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476704 - HRESULT ID3DX11EffectMatrixVariable::SetMatrixTranspose([In] const SHARPDX_MATRIX* pData) - ID3DX11EffectMatrixVariable::SetMatrixTranspose -
- - -

Transpose and get a floating-point matrix.

-
-

A reference to the first element of a transposed matrix.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476700 - HRESULT ID3DX11EffectMatrixVariable::GetMatrixTranspose([Out] SHARPDX_MATRIX* pData) - ID3DX11EffectMatrixVariable::GetMatrixTranspose -
- - -

Transpose and set an array of floating-point matrices.

-
-

A reference to an array of matrices.

-

The offset (in number of matrices) between the start of the array and the first matrix to set.

-

The number of matrices in the array to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476705 - HRESULT ID3DX11EffectMatrixVariable::SetMatrixTransposeArray([In, Buffer] const SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectMatrixVariable::SetMatrixTransposeArray -
- - -

Transpose and get an array of floating-point matrices.

-
-

A reference to the first element of an array of tranposed matrices.

-

The offset (in number of matrices) between the start of the array and the first matrix to get.

-

The number of matrices in the array to get.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Transposing a matrix will rearrange the data order from row-column order to column-row order (or vice versa).

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476701 - HRESULT ID3DX11EffectMatrixVariable::GetMatrixTransposeArray([Out, Buffer] SHARPDX_MATRIX* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectMatrixVariable::GetMatrixTransposeArray -
- - -

An interface encapsulates state assignments within a technique.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- -

A pass is a block of code that sets render-state objects and shaders. A pass is declared within a technique.

To get an effect-pass interface, call a method like .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476706 - ID3DX11EffectPass - ID3DX11EffectPass -
- - - Set the state contained in a pass to the device. - - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT Apply([None] UINT Flags) - - - - Set the state contained in a pass to the device. - - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT Apply([None] UINT Flags) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Test a pass to see if it contains valid syntax.

-
-

TRUE if the code syntax is valid; otherwise .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476718 - BOOL ID3DX11EffectPass::IsValid() - ID3DX11EffectPass::IsValid -
- - -

Get a pass description.

-
-

A reference to a pass description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476712 - HRESULT ID3DX11EffectPass::GetDesc([Out] D3DX11_PASS_DESC* pDesc) - ID3DX11EffectPass::GetDesc -
- - -

Get a vertex-shader description.

-
-

A reference to a vertex-shader description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476717 - HRESULT ID3DX11EffectPass::GetVertexShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) - ID3DX11EffectPass::GetVertexShaderDesc -
- - -

Get a geometry-shader description.

-
-

A reference to a geometry-shader description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476714 - HRESULT ID3DX11EffectPass::GetGeometryShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) - ID3DX11EffectPass::GetGeometryShaderDesc -
- - -

Get a pixel-shader description.

-
-

A reference to a pixel-shader description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476716 - HRESULT ID3DX11EffectPass::GetPixelShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) - ID3DX11EffectPass::GetPixelShaderDesc -
- - -

Get hull-shader description.

-
-

A reference to a hull-shader description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476715 - HRESULT ID3DX11EffectPass::GetHullShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) - ID3DX11EffectPass::GetHullShaderDesc -
- - -

Get a domain-shader description.

-
-

A reference to a domain-shader description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476713 - HRESULT ID3DX11EffectPass::GetDomainShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) - ID3DX11EffectPass::GetDomainShaderDesc -
- - -

Get a compute-shader description.

-
-

A reference to a compute-shader description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476711 - HRESULT ID3DX11EffectPass::GetComputeShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) - ID3DX11EffectPass::GetComputeShaderDesc -
- - -

Get an annotation by index.

-
-

A zero-based index.

-

A reference to an .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476709 - ID3DX11EffectVariable* ID3DX11EffectPass::GetAnnotationByIndex([In] unsigned int Index) - ID3DX11EffectPass::GetAnnotationByIndex -
- - -

Get an annotation by name.

-
-

The name of the annotation.

-

A reference to an .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476710 - ID3DX11EffectVariable* ID3DX11EffectPass::GetAnnotationByName([In] const char* Name) - ID3DX11EffectPass::GetAnnotationByName -
- - -

Set the state contained in a pass to the device.

-
-

Unused.

-

The to apply the pass to.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476707 - HRESULT ID3DX11EffectPass::Apply([In] unsigned int Flags,[In] ID3D11DeviceContext* pContext) - ID3DX11EffectPass::Apply -
- - -

Generate a mask for allowing/preventing state changes.

-
-

A reference to a state-block mask (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476708 - HRESULT ID3DX11EffectPass::ComputeStateBlockMask([In] D3DX11_STATE_BLOCK_MASK* pStateBlockMask) - ID3DX11EffectPass::ComputeStateBlockMask -
- - -

Test a pass to see if it contains valid syntax.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476718 - IsValid - IsValid - BOOL ID3DX11EffectPass::IsValid() -
- - -

Get a pass description.

-
- -

A pass is a block of code that sets render state and shaders (which in turn sets constant buffers, samplers and textures). An effect technique contains one or more passes.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476712 - GetDesc - GetDesc - HRESULT ID3DX11EffectPass::GetDesc([Out] D3DX11_PASS_DESC* pDesc) -
- - -

Get a vertex-shader description.

-
- -

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476717 - GetVertexShaderDesc - GetVertexShaderDesc - HRESULT ID3DX11EffectPass::GetVertexShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) -
- - -

Get a geometry-shader description.

-
- -

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476714 - GetGeometryShaderDesc - GetGeometryShaderDesc - HRESULT ID3DX11EffectPass::GetGeometryShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) -
- - -

Get a pixel-shader description.

-
- -

An effect pass can contain render state assignments and shader object assignments.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476716 - GetPixelShaderDesc - GetPixelShaderDesc - HRESULT ID3DX11EffectPass::GetPixelShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) -
- - -

Get hull-shader description.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476715 - GetHullShaderDesc - GetHullShaderDesc - HRESULT ID3DX11EffectPass::GetHullShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) -
- - -

Get a domain-shader description.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476713 - GetDomainShaderDesc - GetDomainShaderDesc - HRESULT ID3DX11EffectPass::GetDomainShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) -
- - -

Get a compute-shader description.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476711 - GetComputeShaderDesc - GetComputeShaderDesc - HRESULT ID3DX11EffectPass::GetComputeShaderDesc([Out] D3DX11_PASS_SHADER_DESC* pDesc) -
- - -

Describes an effect pass, which contains pipeline state.

-
- -

is used with .

-
- - ff476319 - D3DX11_PASS_DESC - D3DX11_PASS_DESC -
- - -

Name of this pass (null if not anonymous).

-
- - ff476319 - const char* Name - char Name -
- - -

Number of annotations on this pass.

-
- - ff476319 - unsigned int Annotations - unsigned int Annotations -
- - -

Signature from the vertex shader or geometry shader (if there is no vertex shader) or null if neither exists.

-
- - ff476319 - unsigned char* pIAInputSignature - unsigned char pIAInputSignature -
- - -

Singature size in bytes.

-
- - ff476319 - SIZE_T IAInputSignatureSize - SIZE_T IAInputSignatureSize -
- - -

The stencil-reference value used in the depth-stencil state.

-
- - ff476319 - unsigned int StencilRef - unsigned int StencilRef -
- - -

The sample mask for the blend state.

-
- - ff476319 - unsigned int SampleMask - unsigned int SampleMask -
- - -

The per-component blend factors (RGBA) for the blend state.

-
- - ff476319 - SHARPDX_COLOR4 BlendFactor - SHARPDX_COLOR4 BlendFactor -
- - - Returns the signature of this Effect pass. - - - - - Returns true if this Effect pass has a Signature (eg: if a VertexShader or Geometry Shader is present), false otherwise - - - - -

Describes an effect pass.

-
- -

is used with Get*ShaderDesc methods.

If this is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. It's name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, pShaderVariable != null, but pShaderVariable->IsValid() == .

-
- - ff476320 - D3DX11_PASS_SHADER_DESC - D3DX11_PASS_SHADER_DESC -
- - -

The variable that this shader came from.

-
- - ff476320 - ID3DX11EffectShaderVariable* pShaderVariable - ID3DX11EffectShaderVariable pShaderVariable -
- - -

The element of pShaderVariable (if an array) or 0 if not applicable.

-
- - ff476320 - unsigned int ShaderIndex - unsigned int ShaderIndex -
- - - A reference to the variable that the shader came from. If it is an inline shader assignment, the returned interface will be an anonymous shader variable, which is not retrievable any other way. Its name in the variable description will be "$Anonymous". If there is no assignment of this type in the pass block, this will point to a shader variable that returns false when IsValid is called. - - ID3D10EffectShaderVariable* pShaderVariable - - - -

A rasterizer-variable interface accesses rasterizer state.

-
- -

An interface is created when an effect is read into memory.

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. You can use either of these methods to return state.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476719 - ID3DX11EffectRasterizerVariable - ID3DX11EffectRasterizerVariable -
- - - Get a pointer to a rasterizer interface. - - Returns a pointer to a rasterizer interface (see ). - HRESULT ID3D10EffectRasterizerVariable::GetRasterizerState([None] int Index,[Out] ID3D10RasterizerState** ppRasterizerState) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a rasterizer interface.

-
-

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

-

The address of a reference to a rasterizer interface (see ).

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476721 - HRESULT ID3DX11EffectRasterizerVariable::GetRasterizerState([In] unsigned int Index,[Out] ID3D11RasterizerState** ppRasterizerState) - ID3DX11EffectRasterizerVariable::GetRasterizerState -
- - -

Sets the rasterizer state.

-
-

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

-

Pointer to an interface.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476722 - HRESULT ID3DX11EffectRasterizerVariable::SetRasterizerState([In] unsigned int Index,[In] ID3D11RasterizerState* pRasterizerState) - ID3DX11EffectRasterizerVariable::SetRasterizerState -
- - -

Reverts a previously set rasterizer state.

-
-

Index into an array of rasterizer interfaces. If there is only one rasterizer interface, use 0.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476723 - HRESULT ID3DX11EffectRasterizerVariable::UndoSetRasterizerState([In] unsigned int Index) - ID3DX11EffectRasterizerVariable::UndoSetRasterizerState -
- - -

Get a reference to a variable that contains rasteriser state.

-
-

Index into an array of rasteriser-state descriptions. If there is only one rasteriser variable in the effect, use 0.

-

A reference to a rasteriser-state description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Effect variables are saved in memory in the backing store; when a technique is applied, the values in the backing store are copied to the device. Backing store data can used to recreate the variable when necessary.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476720 - HRESULT ID3DX11EffectRasterizerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_RASTERIZER_DESC* pRasterizerDesc) - ID3DX11EffectRasterizerVariable::GetBackingStore -
- - -

A render-target-view interface accesses a render target.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476724 - ID3DX11EffectRenderTargetViewVariable - ID3DX11EffectRenderTargetViewVariable -
- - - Set an array of render-targets. - - Set an array of render-target-view interfaces. See . - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Set an array of render-targets. - - Set an array of render-target-view interfaces. See . - The zero-based array index to store the first interface. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of render-targets. - - The number of elements in the array. - Returns an array of . - HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of render-targets. - - The zero-based array index to get the first interface. - The number of elements in the array. - Returns an array of . - HRESULT ID3D10EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D10RenderTargetView** ppResources,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a render-target.

-
-

A reference to a render-target-view interface. See .

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476727 - HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTarget([In] ID3D11RenderTargetView* pResource) - ID3DX11EffectRenderTargetViewVariable::SetRenderTarget -
- - -

Get a render-target.

-
-

The address of a reference to a render-target-view interface. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476725 - HRESULT ID3DX11EffectRenderTargetViewVariable::GetRenderTarget([Out] ID3D11RenderTargetView** ppResource) - ID3DX11EffectRenderTargetViewVariable::GetRenderTarget -
- - -

Set an array of render-targets.

-
-

Set an array of render-target-view interfaces. See .

-

The zero-based array index to store the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476728 - HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray -
- - -

Set an array of render-targets.

-
-

Set an array of render-target-view interfaces. See .

-

The zero-based array index to store the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476728 - HRESULT ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray([In, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectRenderTargetViewVariable::SetRenderTargetArray -
- - -

Get an array of render-targets.

-
-

A reference to an array of render-target-view interfaces. See .

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476726 - HRESULT ID3DX11EffectRenderTargetViewVariable::GetRenderTargetArray([Out, Buffer] ID3D11RenderTargetView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectRenderTargetViewVariable::GetRenderTargetArray -
- - -

Revert a previously set sampler state.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476733 - ID3DX11EffectSamplerVariable - ID3DX11EffectSamplerVariable -
- - - Get a reference to a sampler interface. - - Returns a reference to a sampler interface (see ). - HRESULT ID3D10EffectSamplerVariable::GetSampler([None] int Index,[Out] ID3D10SamplerState** ppSampler) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to a sampler interface.

-
-

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

-

The address of a reference to a sampler interface (see ).

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476731 - HRESULT ID3DX11EffectSamplerVariable::GetSampler([In] unsigned int Index,[Out] ID3D11SamplerState** ppSampler) - ID3DX11EffectSamplerVariable::GetSampler -
- - -

Set sampler state.

-
-

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

-

Pointer to an interface containing the sampler state.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476732 - HRESULT ID3DX11EffectSamplerVariable::SetSampler([In] unsigned int Index,[In] ID3D11SamplerState* pSampler) - ID3DX11EffectSamplerVariable::SetSampler -
- - -

Revert a previously set sampler state.

-
-

Index into an array of sampler interfaces. If there is only one sampler interface, use 0.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476733 - HRESULT ID3DX11EffectSamplerVariable::UndoSetSampler([In] unsigned int Index) - ID3DX11EffectSamplerVariable::UndoSetSampler -
- - -

Get a reference to a variable that contains sampler state.

-
-

Index into an array of sampler descriptions. If there is only one sampler variable in the effect, use 0.

-

A reference to a sampler description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476730 - HRESULT ID3DX11EffectSamplerVariable::GetBackingStore([In] unsigned int Index,[Out] D3D11_SAMPLER_DESC* pSamplerDesc) - ID3DX11EffectSamplerVariable::GetBackingStore -
- - -

An effect-scalar-variable interface accesses scalar values.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476734 - ID3DX11EffectScalarVariable - ID3DX11EffectScalarVariable -
- - - Set a floating-point variable. - - A reference to the variable. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetFloat([None] float Value) - - - - Set an array of floating-point variables. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an array of floating-point variables. - - A reference to the start of the data to set. - Must be set to 0; this is reserved for future use. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetFloatArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of floating-point variables. - - The number of array elements to set. - Returns an array of floats. - HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of floating-point variables. - - Must be set to 0; this is reserved for future use. - The number of array elements to set. - Returns an array of floats. - HRESULT ID3D10EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an unsigned integer variable. - - A reference to the variable. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value) - - - - Set an array of unsigned integer variables. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Set an integer variable. - - A reference to the variable. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetInt([None] int Value) - - - - Set an array of integer variables. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Set an array of integer variables. - - A reference to the start of the data to set. - Must be set to 0; this is reserved for future use. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetIntArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Get an array of integer variables. - - The number of array elements to set. - Returns an array of integer variables. - HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Get an array of integer variables. - - Must be set to 0; this is reserved for future use. - The number of array elements to set. - Returns an array of integer variables. - HRESULT ID3D10EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Set a boolean variable. - - A reference to the variable. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetBool([None] BOOL Value) - - - - Get a boolean variable. - - Returns a boolean. - HRESULT ID3D10EffectScalarVariable::GetBool([Out] BOOL* pValue) - - - - Set an array of boolean variables. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Set an array of boolean variables. - - A reference to the start of the data to set. - Must be set to 0; this is reserved for future use. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::SetBoolArray([In, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Get an array of boolean variables. - - Must be set to 0; this is reserved for future use. - The number of array elements to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a floating-point variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476743 - HRESULT ID3DX11EffectScalarVariable::SetFloat([In] const float Value) - ID3DX11EffectScalarVariable::SetFloat -
- - -

Get a floating-point variable.

-
-

A reference to the variable.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476737 - HRESULT ID3DX11EffectScalarVariable::GetFloat([Out] float* pValue) - ID3DX11EffectScalarVariable::GetFloat -
- - -

Set an array of floating-point variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476744 - HRESULT ID3DX11EffectScalarVariable::SetFloatArray([In, Buffer] const float* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectScalarVariable::SetFloatArray -
- - -

Get an array of floating-point variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476738 - HRESULT ID3DX11EffectScalarVariable::GetFloatArray([Out, Buffer] float* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectScalarVariable::GetFloatArray -
- - -

Set an integer variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476745 - HRESULT ID3DX11EffectScalarVariable::SetInt([In] const int Value) - ID3DX11EffectScalarVariable::SetInt -
- - -

Get an integer variable.

-
-

A reference to the variable.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476739 - HRESULT ID3DX11EffectScalarVariable::GetInt([Out] int* pValue) - ID3DX11EffectScalarVariable::GetInt -
- - -

Set an array of integer variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476746 - HRESULT ID3DX11EffectScalarVariable::SetIntArray([In, Buffer] const int* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectScalarVariable::SetIntArray -
- - -

Get an array of integer variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476740 - HRESULT ID3DX11EffectScalarVariable::GetIntArray([Out, Buffer] int* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectScalarVariable::GetIntArray -
- - -

Set a boolean variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476741 - HRESULT ID3DX11EffectScalarVariable::SetBool([In] const BOOL Value) - ID3DX11EffectScalarVariable::SetBool -
- - -

Get a boolean variable.

-
-

A reference to the variable.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476735 - HRESULT ID3DX11EffectScalarVariable::GetBool([Out] BOOL* pValue) - ID3DX11EffectScalarVariable::GetBool -
- - -

Set an array of boolean variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476742 - HRESULT ID3DX11EffectScalarVariable::SetBoolArray([In, Buffer] const BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectScalarVariable::SetBoolArray -
- - -

Get an array of boolean variables.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476736 - HRESULT ID3DX11EffectScalarVariable::GetBoolArray([Out, Buffer] BOOL* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectScalarVariable::GetBoolArray -
- - -

Describes an effect shader.

-
- -

is used with .

-
- - ff476304 - D3DX11_EFFECT_SHADER_DESC - D3DX11_EFFECT_SHADER_DESC -
- - -

Passed into CreateInputLayout. Only valid on a vertex shader or geometry shader. See .

-
- - ff476304 - const unsigned char* pInputSignature - unsigned char pInputSignature -
- - -

TRUE is the shader is defined inline; otherwise .

-
- - ff476304 - BOOL IsInline - BOOL IsInline -
- - -

Shader bytecode.

-
- - ff476304 - const unsigned char* pBytecode - unsigned char pBytecode -
- - -

The length of pBytecode.

-
- - ff476304 - unsigned int BytecodeLength - unsigned int BytecodeLength -
- - -

Indicates which stream is rasterized. D3D11 geometry shaders can output up to four streams of data, one of which can be rasterized.

-
- - ff476304 - unsigned int RasterizedStream - unsigned int RasterizedStream -
- - -

Number of entries in the input signature.

-
- - ff476304 - unsigned int NumInputSignatureEntries - unsigned int NumInputSignatureEntries -
- - -

Number of entries in the output signature.

-
- - ff476304 - unsigned int NumOutputSignatureEntries - unsigned int NumOutputSignatureEntries -
- - -

Number of entries in the patch constant signature.

-
- - ff476304 - unsigned int NumPatchConstantSignatureEntries - unsigned int NumPatchConstantSignatureEntries -
- - - Gets the signature passed into InputLayout. Only valid on a vertex shader or geometry shader. - - The signature. - - - - Gets the bytecode from the compiled shader. - - The bytecode. - - - -

Stream out declaration string (for geometry shader with SO).

-
- - ff476304 - const void* SODecls[4] - void SODecls -
- - -

A shader-resource interface accesses a shader resource.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476747 - ID3DX11EffectShaderResourceVariable - ID3DX11EffectShaderResourceVariable -
- - - Set an array of shader resources. - - The address of an array of shader-resource-view interfaces. See . - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Set an array of shader resources. - - The address of an array of shader-resource-view interfaces. See . - The zero-based array index to get the first interface. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D10EffectShaderResourceVariable::SetResourceArray([None] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of shader resources. - - The number of elements in the array. - Returns an array of shader-resource-view interfaces. See . - HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Get an array of shader resources. - - The zero-based array index to get the first interface. - The number of elements in the array. - Returns an array of shader-resource-view interfaces. See . - HRESULT ID3D10EffectShaderResourceVariable::GetResourceArray([Out] ID3D10ShaderResourceView** ppResources,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a shader resource.

-
-

The address of a reference to a shader-resource-view interface. See .

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476750 - HRESULT ID3DX11EffectShaderResourceVariable::SetResource([In] ID3D11ShaderResourceView* pResource) - ID3DX11EffectShaderResourceVariable::SetResource -
- - -

Get a shader resource.

-
-

The address of a reference to a shader-resource-view interface. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476748 - HRESULT ID3DX11EffectShaderResourceVariable::GetResource([Out] ID3D11ShaderResourceView** ppResource) - ID3DX11EffectShaderResourceVariable::GetResource -
- - -

Set an array of shader resources.

-
-

The address of an array of shader-resource-view interfaces. See .

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476751 - HRESULT ID3DX11EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectShaderResourceVariable::SetResourceArray -
- - -

Set an array of shader resources.

-
-

The address of an array of shader-resource-view interfaces. See .

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476751 - HRESULT ID3DX11EffectShaderResourceVariable::SetResourceArray([In, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectShaderResourceVariable::SetResourceArray -
- - -

Get an array of shader resources.

-
-

The address of an array of shader-resource-view interfaces. See .

-

The zero-based array index to get the first interface.

-

The number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476749 - HRESULT ID3DX11EffectShaderResourceVariable::GetResourceArray([Out, Buffer] ID3D11ShaderResourceView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectShaderResourceVariable::GetResourceArray -
- - -

A string-variable interface accesses a string variable.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476763 - ID3DX11EffectStringVariable - ID3DX11EffectStringVariable -
- - - Get the string. - - Returns a reference to the string. - HRESULT ID3D10EffectStringVariable::GetString([Out] const char** ppString) - - - - Get an array of strings. - - The number of strings in the returned array. - Returns a reference to the first string in the array. - HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) - - - - Get an array of strings. - - The offset (in number of strings) between the start of the array and the first string to get. - The number of strings in the returned array. - Returns a reference to the first string in the array. - HRESULT ID3D10EffectStringVariable::GetStringArray([Out, Buffer] const char** ppStrings,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the string.

-
-

A reference to the string.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476764 - HRESULT ID3DX11EffectStringVariable::GetString([Out] const void** ppString) - ID3DX11EffectStringVariable::GetString -
- - -

Get an array of strings.

-
-

A reference to the first string in the array.

-

The offset (in number of strings) between the start of the array and the first string to get.

-

The number of strings in the returned array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476765 - HRESULT ID3DX11EffectStringVariable::GetStringArray([Out, Buffer] const void** ppStrings,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectStringVariable::GetStringArray -
- - -

Accesses an unordered access view.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476783 - ID3DX11EffectUnorderedAccessViewVariable - ID3DX11EffectUnorderedAccessViewVariable -
- - - Sets the specified view. - - The view. - A object describing the result of the operation. - HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - - - - Sets the specified data ref. - - The data ref. - The offset. - A object describing the result of the operation. - HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - - - - Sets the specified data ref. - - The data ref. - A object describing the result of the operation. - HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - - - - Sets the specified data ref. - - The data ref. - The offset. - A object describing the result of the operation. - HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - - - - Gets the unordered access view array. - - The count. - A object describing the result of the operation. - HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - - - - Gets the unordered access view array. - - The offset. - The count. - A object describing the result of the operation. - HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set an unordered-access-view.

-
-

Pointer to an .

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476786 - HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessView([In] ID3D11UnorderedAccessView* pResource) - ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessView -
- - -

Get an unordered-access-view.

-
-

Pointer to an reference that will be set on return.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476784 - HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessView([In] ID3D11UnorderedAccessView** ppResource) - ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessView -
- - -

Set an array of unordered-access-views.

-
-

An array of references.

-

Index of the first unordered-access-view.

-

Number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476787 - HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray -
- - -

Set an array of unordered-access-views.

-
-

An array of references.

-

Index of the first unordered-access-view.

-

Number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476787 - HRESULT ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray([In, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectUnorderedAccessViewVariable::SetUnorderedAccessViewArray -
- - -

Get an array of unordered-access-views.

-
-

Pointer to an reference that will be set to the UAV array on return.

-

Index of the first interface.

-

Number of elements in the array.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476785 - HRESULT ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray([Out, Buffer] ID3D11UnorderedAccessView** ppResources,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectUnorderedAccessViewVariable::GetUnorderedAccessViewArray -
- - -

A vector-variable interface accesses a four-component vector.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476817 - ID3DX11EffectVectorVariable - ID3DX11EffectVectorVariable -
- - - Get a four-component vector that contains integer data. - - Returns a four-component vector that contains integer data - HRESULT ID3D11EffectVectorVariable::GetIntVector([Out] int* pData) - - - - Get a four-component vector that contains floating-point data. - - Returns a four-component vector that contains floating-point data. - HRESULT ID3D11EffectVectorVariable::GetFloatVector([Out] float* pData) - - - - Get a four-component vector that contains boolean data. - - a four-component vector that contains boolean data. - HRESULT ID3D11EffectVectorVariable::GetBoolVector([Out, Buffer] BOOL* pData) - - - - Get a four-component vector. - - Type of the four-component vector - a four-component vector. - HRESULT ID3D11EffectVectorVariable::GetFloatVector([Out, Buffer] BOOL* pData) - - - - Set an array of four-component vectors that contain integer data. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetIntVectorArray([In, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Set an array of four-component vectors that contain floating-point data. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set an array of four-component vectors that contain floating-point data. - - Type of the four-component vector - A reference to the start of the data to set. - - Returns one of the following {{Direct3D 10 Return Codes}}. - - HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Set a x-component vector. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a x-component vector. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a two-component vector that contains floating-point data. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a three-component vector that contains floating-point data. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set a four-component color that contains floating-point data. - - A reference to the first component. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetFloatVector([In] float* pData) - - - - Set an array of four-component color that contain floating-point data. - - A reference to the start of the data to set. - Returns one of the following {{Direct3D 10 Return Codes}}. - HRESULT ID3D11EffectVectorVariable::SetFloatVectorArray([In, Buffer] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain integer data. - - The number of array elements to set. - Returns an array of four-component vectors that contain integer data. - HRESULT ID3D11EffectVectorVariable::GetIntVectorArray([Out, Buffer] int* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain floating-point data. - - The number of array elements to set. - Returns an array of four-component vectors that contain floating-point data. - HRESULT ID3D11EffectVectorVariable::GetFloatVectorArray([None] float* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain boolean data. - - The number of array elements to set. - an array of four-component vectors that contain boolean data. - HRESULT ID3D11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Get an array of four-component vectors that contain boolean data. - - The number of array elements to set. - an array of four-component vectors that contain boolean data. - HRESULT ID3D11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] BOOL* pData,[None] int Offset,[None] int Count) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a four-component vector that contains boolean data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476824 - HRESULT ID3DX11EffectVectorVariable::SetBoolVector([In] const SHARPDX_BOOL4* pData) - ID3DX11EffectVectorVariable::SetBoolVector -
- - -

Set a four-component vector that contains integer data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476828 - HRESULT ID3DX11EffectVectorVariable::SetIntVector([In] const SHARPDX_INT4* pData) - ID3DX11EffectVectorVariable::SetIntVector -
- - -

Set a four-component vector that contains floating-point data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476826 - HRESULT ID3DX11EffectVectorVariable::SetFloatVector([In] const float* pData) - ID3DX11EffectVectorVariable::SetFloatVector -
- - -

Get a four-component vector that contains boolean data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476818 - HRESULT ID3DX11EffectVectorVariable::GetBoolVector([Out] SHARPDX_BOOL4* pData) - ID3DX11EffectVectorVariable::GetBoolVector -
- - -

Get a four-component vector that contains integer data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476822 - HRESULT ID3DX11EffectVectorVariable::GetIntVector([Out] SHARPDX_INT4* pData) - ID3DX11EffectVectorVariable::GetIntVector -
- - -

Get a four-component vector that contains floating-point data.

-
-

A reference to the first component.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476820 - HRESULT ID3DX11EffectVectorVariable::GetFloatVector([Out] SHARPDX_VECTOR4* pData) - ID3DX11EffectVectorVariable::GetFloatVector -
- - -

Set an array of four-component vectors that contain boolean data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476825 - HRESULT ID3DX11EffectVectorVariable::SetBoolVectorArray([In, Buffer] const SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVectorVariable::SetBoolVectorArray -
- - -

Set an array of four-component vectors that contain integer data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476829 - HRESULT ID3DX11EffectVectorVariable::SetIntVectorArray([In, Buffer] const SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVectorVariable::SetIntVectorArray -
- - -

Set an array of four-component vectors that contain floating-point data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476827 - HRESULT ID3DX11EffectVectorVariable::SetFloatVectorArray([In, Buffer] const SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVectorVariable::SetFloatVectorArray -
- - -

Get an array of four-component vectors that contain boolean data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476819 - HRESULT ID3DX11EffectVectorVariable::GetBoolVectorArray([Out, Buffer] SHARPDX_BOOL4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVectorVariable::GetBoolVectorArray -
- - -

Get an array of four-component vectors that contain integer data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476823 - HRESULT ID3DX11EffectVectorVariable::GetIntVectorArray([Out, Buffer] SHARPDX_INT4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVectorVariable::GetIntVectorArray -
- - -

Get an array of four-component vectors that contain floating-point data.

-
-

A reference to the start of the data to set.

-

Must be set to 0; this is reserved for future use.

-

The number of array elements to set.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476821 - HRESULT ID3DX11EffectVectorVariable::GetFloatVectorArray([Out, Buffer] SHARPDX_VECTOR4* pData,[In] unsigned int Offset,[In] unsigned int Count) - ID3DX11EffectVectorVariable::GetFloatVectorArray -
- - -

Describes an effect variable.

-
- -

is used with .

-
- - ff476306 - D3DX11_EFFECT_VARIABLE_FLAGS - D3DX11_EFFECT_VARIABLE_FLAGS -
- - -

Name of this variable, annotation, or structure member.

-
- - ff476306 - D3DX11_EFFECT_VARIABLE_ANNOTATION - D3DX11_EFFECT_VARIABLE_ANNOTATION -
- - -

Semantic string of this variable or structure member (null for annotations or if not present).

-
- - ff476306 - D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT - D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT -
- - - None. - - - None - None - - - - Functions - - - - - - DLLs loaders - - - - -

Creates an effect from a binary effect or file.

-
-

Blob of compiled effect data.

-

Length of the data blob.

-

No effect flags exist. Set to zero.

-

Pointer to the on which to create Effect resources.

-

Address of the newly created interface.

-

The return value is one of the values listed in Direct3D 11 Return Codes.

- -

Note??You must use Effects 11 source to build your effects-type application. For more info about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476273 - HRESULT D3DX11CreateEffectFromMemory([In] const void* pData,[In] SIZE_T DataLength,[In] unsigned int FXFlags,[In] ID3D11Device* pDevice,[Out, Fast] ID3DX11Effect** ppEffect) - D3DX11CreateEffectFromMemory -
- - -

Accesses a class instance.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476658 - ID3DX11EffectClassInstanceVariable - ID3DX11EffectClassInstanceVariable -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets a class instance.

-
-

Pointer to an reference that will be set to class instance.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476659 - HRESULT ID3DX11EffectClassInstanceVariable::GetClassInstance([In] ID3D11ClassInstance** ppClassInstance) - ID3DX11EffectClassInstanceVariable::GetClassInstance -
- - -

Gets a class instance.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476659 - GetClassInstance - GetClassInstance - HRESULT ID3DX11EffectClassInstanceVariable::GetClassInstance([In] ID3D11ClassInstance** ppClassInstance) -
- - -

A constant-buffer interface accesses constant buffers or texture buffers.

-
- -

Use constant buffers to store many effect constants; grouping constants into buffers based on their frequency of update. This allows you to minimize the number of state changes as well as make the fewest API calls to change state. Both of these factors lead to better performance.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476670 - ID3DX11EffectConstantBuffer - ID3DX11EffectConstantBuffer -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a constant-buffer.

-
-

A reference to a constant-buffer interface. See .

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476673 - HRESULT ID3DX11EffectConstantBuffer::SetConstantBuffer([In] ID3D11Buffer* pConstantBuffer) - ID3DX11EffectConstantBuffer::SetConstantBuffer -
- - -

Reverts a previously set constant buffer.

-
-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476675 - HRESULT ID3DX11EffectConstantBuffer::UndoSetConstantBuffer() - ID3DX11EffectConstantBuffer::UndoSetConstantBuffer -
- - -

Get a constant-buffer.

-
-

The address of a reference to a constant-buffer interface. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476671 - HRESULT ID3DX11EffectConstantBuffer::GetConstantBuffer([Out] ID3D11Buffer** ppConstantBuffer) - ID3DX11EffectConstantBuffer::GetConstantBuffer -
- - -

Set a texture-buffer.

-
-

A reference to a shader-resource-view interface for accessing a texture buffer.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476674 - HRESULT ID3DX11EffectConstantBuffer::SetTextureBuffer([In] ID3D11ShaderResourceView* pTextureBuffer) - ID3DX11EffectConstantBuffer::SetTextureBuffer -
- - -

Reverts a previously set texture buffer.

-
-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476676 - HRESULT ID3DX11EffectConstantBuffer::UndoSetTextureBuffer() - ID3DX11EffectConstantBuffer::UndoSetTextureBuffer -
- - -

Get a texture-buffer.

-
-

The address of a reference to a shader-resource-view interface for accessing a texture buffer. See .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476672 - HRESULT ID3DX11EffectConstantBuffer::GetTextureBuffer([Out] ID3D11ShaderResourceView** ppTextureBuffer) - ID3DX11EffectConstantBuffer::GetTextureBuffer -
- - -

The interface accesses an Effect group.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- -

To get an interface, call a method like .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476687 - ID3DX11EffectGroup - ID3DX11EffectGroup -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Test an effect to see if it contains valid syntax.

-
-

TRUE if the code syntax is valid; otherwise .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476693 - BOOL ID3DX11EffectGroup::IsValid() - ID3DX11EffectGroup::IsValid -
- - -

Gets a group description.

-
-

A reference to a structure.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476690 - HRESULT ID3DX11EffectGroup::GetDesc([Out] D3DX11_GROUP_DESC* pDesc) - ID3DX11EffectGroup::GetDesc -
- - -

Get an annotation by index.

-
-

Index of the annotation.

-

Pointer to an interface.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476688 - ID3DX11EffectVariable* ID3DX11EffectGroup::GetAnnotationByIndex([In] unsigned int Index) - ID3DX11EffectGroup::GetAnnotationByIndex -
- - -

Get an annotation by name.

-
-

The name of the annotation.

-

A reference to an . Note that if the annotation is not found the returned will be empty. The method should be called to determine whether the annotation was found.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476689 - ID3DX11EffectVariable* ID3DX11EffectGroup::GetAnnotationByName([In] const char* Name) - ID3DX11EffectGroup::GetAnnotationByName -
- - -

Get a technique by index.

-
-

A zero-based index.

-

A reference to an .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476691 - ID3DX11EffectTechnique* ID3DX11EffectGroup::GetTechniqueByIndex([In] unsigned int Index) - ID3DX11EffectGroup::GetTechniqueByIndex -
- - -

Get a technique by name.

-
-

The name of the technique.

-

A reference to an , or null if the technique is not found.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476692 - ID3DX11EffectTechnique* ID3DX11EffectGroup::GetTechniqueByName([In] const char* Name) - ID3DX11EffectGroup::GetTechniqueByName -
- - -

Test an effect to see if it contains valid syntax.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476693 - IsValid - IsValid - BOOL ID3DX11EffectGroup::IsValid() -
- - -

Gets a group description.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476690 - GetDesc - GetDesc - HRESULT ID3DX11EffectGroup::GetDesc([Out] D3DX11_GROUP_DESC* pDesc) -
- - -

Accesses an interface variable.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476694 - ID3DX11EffectInterfaceVariable - ID3DX11EffectInterfaceVariable -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets a class instance.

-
-

Pointer to an interface.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476696 - HRESULT ID3DX11EffectInterfaceVariable::SetClassInstance([In] ID3DX11EffectClassInstanceVariable* pEffectClassInstance) - ID3DX11EffectInterfaceVariable::SetClassInstance -
- - -

Get a class instance.

-
-

Pointer to an reference that will be set to the class instance.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476695 - HRESULT ID3DX11EffectInterfaceVariable::GetClassInstance([In] ID3DX11EffectClassInstanceVariable** ppEffectClassInstance) - ID3DX11EffectInterfaceVariable::GetClassInstance -
- - -

Get or sets a class instance.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476695 - GetClassInstance / SetClassInstance - GetClassInstance - HRESULT ID3DX11EffectInterfaceVariable::GetClassInstance([In] ID3DX11EffectClassInstanceVariable** ppEffectClassInstance) -
- - -

A shader-variable interface accesses a shader variable.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476752 - ID3DX11EffectShaderVariable - ID3DX11EffectShaderVariable -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a shader description.

-
-

A zero-based index.

-

A reference to a shader description (see ).

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476761 - HRESULT ID3DX11EffectShaderVariable::GetShaderDesc([In] unsigned int ShaderIndex,[Out] D3DX11_EFFECT_SHADER_DESC* pDesc) - ID3DX11EffectShaderVariable::GetShaderDesc -
- - -

Get a vertex shader.

-
-

A zero-based index.

-

A reference to an reference that will be set to the vertex shader on return.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476762 - HRESULT ID3DX11EffectShaderVariable::GetVertexShader([In] unsigned int ShaderIndex,[Out] ID3D11VertexShader** ppVS) - ID3DX11EffectShaderVariable::GetVertexShader -
- - -

Get a geometry shader.

-
-

A zero-based index.

-

A reference to an reference that will be set to the geometry shader on return.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476755 - HRESULT ID3DX11EffectShaderVariable::GetGeometryShader([In] unsigned int ShaderIndex,[Out] ID3D11GeometryShader** ppGS) - ID3DX11EffectShaderVariable::GetGeometryShader -
- - -

Get a pixel shader.

-
-

A zero-based index.

-

A reference to an reference that will be set to the pixel shader on return.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476760 - HRESULT ID3DX11EffectShaderVariable::GetPixelShader([In] unsigned int ShaderIndex,[Out] ID3D11PixelShader** ppPS) - ID3DX11EffectShaderVariable::GetPixelShader -
- - -

Get a hull shader.

-
-

Index of the shader.

-

A reference to an reference that will be set to the hull shader on return.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476756 - HRESULT ID3DX11EffectShaderVariable::GetHullShader([In] unsigned int ShaderIndex,[In] ID3D11HullShader** ppPS) - ID3DX11EffectShaderVariable::GetHullShader -
- - -

Get a domain shader.

-
-

Index of the domain shader.

-

Pointer to an reference that will be set to the domain shader on return.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476754 - HRESULT ID3DX11EffectShaderVariable::GetDomainShader([In] unsigned int ShaderIndex,[In] ID3D11DomainShader** ppPS) - ID3DX11EffectShaderVariable::GetDomainShader -
- - -

Get a compute shader.

-
-

Index of the compute shader.

-

Pointer to an reference that will be set to the compute shader on return.

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476753 - HRESULT ID3DX11EffectShaderVariable::GetComputeShader([In] unsigned int ShaderIndex,[In] ID3D11ComputeShader** ppPS) - ID3DX11EffectShaderVariable::GetComputeShader -
- - -

Get an input-signature description.

-
-

A zero-based shader index.

-

A zero-based shader-element index.

-

A reference to a parameter description (see ).

- -

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476757 - HRESULT ID3DX11EffectShaderVariable::GetInputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) - ID3DX11EffectShaderVariable::GetInputSignatureElementDesc -
- - -

Get an output-signature description.

-
-

A zero-based shader index.

-

A zero-based element index.

-

A reference to a parameter description (see ).

- -

An effect contains one or more shaders; each shader has an input and output signature; each signature contains one or more elements (or parameters). The shader index identifies the shader and the element index identifies the element (or parameter) in the shader signature.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476758 - HRESULT ID3DX11EffectShaderVariable::GetOutputSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[Out] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) - ID3DX11EffectShaderVariable::GetOutputSignatureElementDesc -
- - -

Get a patch constant signature description.

-
-

A zero-based shader index.

-

A zero-based element index.

-

A reference to a parameter description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476759 - HRESULT ID3DX11EffectShaderVariable::GetPatchConstantSignatureElementDesc([In] unsigned int ShaderIndex,[In] unsigned int Element,[In] D3D11_SIGNATURE_PARAMETER_DESC* pDesc) - ID3DX11EffectShaderVariable::GetPatchConstantSignatureElementDesc -
- - -

An interface is a collection of passes.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- -

An effect contains one or more techniques; each technique contains one or more passes; each pass contains state assignments.

To get an effect-technique interface, call a method such as .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476766 - ID3DX11EffectTechnique - ID3DX11EffectTechnique -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Test a technique to see if it contains valid syntax.

-
-

TRUE if the code syntax is valid; otherwise .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476773 - BOOL ID3DX11EffectTechnique::IsValid() - ID3DX11EffectTechnique::IsValid -
- - -

Get a technique description.

-
-

A reference to a technique description (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476770 - HRESULT ID3DX11EffectTechnique::GetDesc([Out] D3DX11_TECHNIQUE_DESC* pDesc) - ID3DX11EffectTechnique::GetDesc -
- - -

Get an annotation by index.

-
-

The zero-based index of the interface reference.

-

A reference to an .

- -

Use an annotation to attach a piece of metadata to a technique.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476768 - ID3DX11EffectVariable* ID3DX11EffectTechnique::GetAnnotationByIndex([In] unsigned int Index) - ID3DX11EffectTechnique::GetAnnotationByIndex -
- - -

Get an annotation by name.

-
-

Name of the annotation.

-

A reference to an .

- -

Use an annotation to attach a piece of metadata to a technique.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476769 - ID3DX11EffectVariable* ID3DX11EffectTechnique::GetAnnotationByName([In] const char* Name) - ID3DX11EffectTechnique::GetAnnotationByName -
- - -

Get a pass by index.

-
-

A zero-based index.

-

A reference to a .

- -

A technique contains one or more passes; get a pass using a name or an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476771 - ID3DX11EffectPass* ID3DX11EffectTechnique::GetPassByIndex([In] unsigned int Index) - ID3DX11EffectTechnique::GetPassByIndex -
- - -

Get a pass by name.

-
-

The name of the pass.

-

A reference to an .

- -

A technique contains one or more passes; get a pass using a name or an index.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476772 - ID3DX11EffectPass* ID3DX11EffectTechnique::GetPassByName([In] const char* Name) - ID3DX11EffectTechnique::GetPassByName -
- - -

Compute a state-block mask to allow/prevent state changes.

-
-

A reference to a state-block mask (see ).

-

Returns one of the following Direct3D 11 Return Codes.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476767 - HRESULT ID3DX11EffectTechnique::ComputeStateBlockMask([In] D3DX11_STATE_BLOCK_MASK* pStateBlockMask) - ID3DX11EffectTechnique::ComputeStateBlockMask -
- - -

Test a technique to see if it contains valid syntax.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476773 - IsValid - IsValid - BOOL ID3DX11EffectTechnique::IsValid() -
- - -

Get a technique description.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476770 - GetDesc - GetDesc - HRESULT ID3DX11EffectTechnique::GetDesc([Out] D3DX11_TECHNIQUE_DESC* pDesc) -
- - -

The interface accesses effect variables by type.

The lifetime of an object is equal to the lifetime of its parent object.

  • Methods
-
- -

To get information about an effect type from an effect variable, call .

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476774 - ID3DX11EffectType - ID3DX11EffectType -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Tests that the effect type is valid.

-
-

TRUE if it is valid; otherwise .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476782 - BOOL ID3DX11EffectType::IsValid() - ID3DX11EffectType::IsValid -
- - -

Get an effect-type description.

-
-

A reference to an effect-type description. See .

-

Returns one of the following Direct3D 11 Return Codes.

- -

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476775 - HRESULT ID3DX11EffectType::GetDesc([Out] D3DX11_EFFECT_TYPE_DESC* pDesc) - ID3DX11EffectType::GetDesc -
- - -

Get a member type by index.

-
-

A zero-based index.

-

A reference to an .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476779 - ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeByIndex([In] unsigned int Index) - ID3DX11EffectType::GetMemberTypeByIndex -
- - -

Get an member type by name.

-
-

A member's name.

-

A reference to an .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476780 - ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeByName([In] const char* Name) - ID3DX11EffectType::GetMemberTypeByName -
- - -

Get a member type by semantic.

-
-

A semantic.

-

A reference to an .

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476781 - ID3DX11EffectType* ID3DX11EffectType::GetMemberTypeBySemantic([In] const char* Semantic) - ID3DX11EffectType::GetMemberTypeBySemantic -
- - -

Get the name of a member.

-
-

A zero-based index.

-

The name of the member.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476776 - const char* ID3DX11EffectType::GetMemberName([In] unsigned int Index) - ID3DX11EffectType::GetMemberName -
- - -

Get the semantic attached to a member.

-
-

A zero-based index.

-

A string that contains the semantic.

- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476778 - const char* ID3DX11EffectType::GetMemberSemantic([In] unsigned int Index) - ID3DX11EffectType::GetMemberSemantic -
- - -

Tests that the effect type is valid.

-
- -

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476782 - IsValid - IsValid - BOOL ID3DX11EffectType::IsValid() -
- - -

Get an effect-type description.

-
- -

The effect-variable description contains data about the name, annotations, semantic, flags and buffer offset of the effect type.

Note??The DirectX SDK does not supply any compiled binaries for effects. You must use Effects 11 source to build your effects-type application. For more information about using Effects 11 source, see Differences Between Effects 10 and Effects 11.

-
- - ff476775 - GetDesc - GetDesc - HRESULT ID3DX11EffectType::GetDesc([Out] D3DX11_EFFECT_TYPE_DESC* pDesc) -
- - -

Describes an effect.

-
- -

is used with .

-
- - ff476303 - D3DX11_EFFECT_DESC - D3DX11_EFFECT_DESC -
- - -

Number of constant buffers in this effect.

-
- - ff476303 - unsigned int ConstantBuffers - unsigned int ConstantBuffers -
- - -

Number of global variables in this effect.

-
- - ff476303 - unsigned int GlobalVariables - unsigned int GlobalVariables -
- - -

Number of global interfaces in this effect.

-
- - ff476303 - unsigned int InterfaceVariables - unsigned int InterfaceVariables -
- - -

Number of techniques in this effect.

-
- - ff476303 - unsigned int Techniques - unsigned int Techniques -
- - -

Number of groups in this effect.

-
- - ff476303 - unsigned int Groups - unsigned int Groups -
- - -

Describes an effect group.

-
- -

is used with .

-
- - ff476314 - D3DX11_GROUP_DESC - D3DX11_GROUP_DESC -
- - -

Name of this group (only null if global).

-
- - ff476314 - const char* Name - char Name -
- - -

Number of techniques contained in group.

-
- - ff476314 - unsigned int Techniques - unsigned int Techniques -
- - -

Number of annotations on this group.

-
- - ff476314 - unsigned int Annotations - unsigned int Annotations -
- - -

Describes an effect technique.

-
- -

is used with .

-
- - ff476326 - D3DX11_TECHNIQUE_DESC - D3DX11_TECHNIQUE_DESC -
- - -

Name of this technique (null if not anonymous).

-
- - ff476326 - const char* Name - char Name -
- - -

Number of passes contained in the technique.

-
- - ff476326 - unsigned int Passes - unsigned int Passes -
- - -

Number of annotations on this technique.

-
- - ff476326 - unsigned int Annotations - unsigned int Annotations -
- - -

Describes an effect-variable type.

-
- -

is used with

-
- - ff476305 - D3DX11_EFFECT_TYPE_DESC - D3DX11_EFFECT_TYPE_DESC -
- - -

Name of the type, for example "float4" or "MyStruct".

-
- - ff476305 - const char* TypeName - char TypeName -
- - -

The variable class (see D3D10_SHADER_VARIABLE_CLASS).

-
- - ff476305 - D3D_SHADER_VARIABLE_CLASS Class - D3D_SHADER_VARIABLE_CLASS Class -
- - -

The variable type (see D3D10_SHADER_VARIABLE_TYPE).

-
- - ff476305 - D3D_SHADER_VARIABLE_TYPE Type - D3D_SHADER_VARIABLE_TYPE Type -
- - -

Number of elements in this type (0 if not an array).

-
- - ff476305 - unsigned int Elements - unsigned int Elements -
- - -

Number of members (0 if not a structure).

-
- - ff476305 - unsigned int Members - unsigned int Members -
- - -

Number of rows in this type (0 if not a numeric primitive).

-
- - ff476305 - unsigned int Rows - unsigned int Rows -
- - -

Number of columns in this type (0 if not a numeric primitive).

-
- - ff476305 - unsigned int Columns - unsigned int Columns -
- - -

Number of bytes required to represent this data type, when tightly packed.

-
- - ff476305 - unsigned int PackedSize - unsigned int PackedSize -
- - -

Number of bytes occupied by this data type, when laid out in a constant buffer.

-
- - ff476305 - unsigned int UnpackedSize - unsigned int UnpackedSize -
- - -

Number of bytes to seek between elements, when laid out in a constant buffer.

-
- - ff476305 - unsigned int Stride - unsigned int Stride -
- - -

Describes an effect variable.

-
- -

is used with .

-
- - ff476306 - D3DX11_EFFECT_VARIABLE_DESC - D3DX11_EFFECT_VARIABLE_DESC -
- - -

Name of this variable, annotation, or structure member.

-
- - ff476306 - const char* Name - char Name -
- - -

Semantic string of this variable or structure member (null for annotations or if not present).

-
- - ff476306 - const char* Semantic - char Semantic -
- - -

Optional flags for effect variables.

-
- - ff476306 - D3DX11_EFFECT_VARIABLE_FLAGS Flags - D3DX11_EFFECT_VARIABLE_FLAGS Flags -
- - -

Number of annotations on this variable (always 0 for annotations).

-
- - ff476306 - unsigned int Annotations - unsigned int Annotations -
- - -

Offset into containing cbuffer or tbuffer (always 0 for annotations or variables not in constant buffers).

-
- - ff476306 - unsigned int BufferOffset - unsigned int BufferOffset -
- - -

Used if the variable has been explicitly bound using the register keyword. Check Flags for .

-
- - ff476306 - unsigned int ExplicitBindPoint - unsigned int ExplicitBindPoint -
- - -

Indicates the device state.

-
- -

A state-block mask indicates the device states that a pass or a technique changes.

-
- - ff476325 - D3DX11_STATE_BLOCK_MASK - D3DX11_STATE_BLOCK_MASK -
- - -

Boolean value indicating whether to save the vertex shader state.

-
- - ff476325 - unsigned char VS - unsigned char VS -
- - -

Boolean value indicating whether to save the hull shader state.

-
- - ff476325 - unsigned char HS - unsigned char HS -
- - -

Boolean value indicating whether to save the domain shader state.

-
- - ff476325 - unsigned char DS - unsigned char DS -
- - -

Boolean value indicating whether to save the geometry shader state.

-
- - ff476325 - unsigned char GS - unsigned char GS -
- - -

Boolean value indicating whether to save the pixel shader state.

-
- - ff476325 - unsigned char PS - unsigned char PS -
- - -

Boolean value indicating whether to save the pixel shader unordered access views.

-
- - ff476325 - unsigned char PSUnorderedAccessViews - unsigned char PSUnorderedAccessViews -
- - -

Boolean value indicating whether to save the compute shader state.

-
- - ff476325 - unsigned char CS - unsigned char CS -
- - -

Boolean value indicating whether to save the compute shader unordered access views.

-
- - ff476325 - unsigned char CSUnorderedAccessViews - unsigned char CSUnorderedAccessViews -
- - -

Boolean value indicating whether to save the index buffer state.

-
- - ff476325 - unsigned char IAIndexBuffer - unsigned char IAIndexBuffer -
- - -

Boolean value indicating whether to save the input layout state.

-
- - ff476325 - unsigned char IAInputLayout - unsigned char IAInputLayout -
- - -

Boolean value indicating whether to save the primitive topology state.

-
- - ff476325 - unsigned char IAPrimitiveTopology - unsigned char IAPrimitiveTopology -
- - -

Boolean value indicating whether to save the render targets states.

-
- - ff476325 - unsigned char OMRenderTargets - unsigned char OMRenderTargets -
- - -

Boolean value indicating whether to save the depth-stencil state.

-
- - ff476325 - unsigned char OMDepthStencilState - unsigned char OMDepthStencilState -
- - -

Boolean value indicating whether to save the blend state.

-
- - ff476325 - unsigned char OMBlendState - unsigned char OMBlendState -
- - -

Boolean value indicating whether to save the viewports states.

-
- - ff476325 - unsigned char RSViewports - unsigned char RSViewports -
- - -

Boolean value indicating whether to save the scissor rectangles states.

-
- - ff476325 - unsigned char RSScissorRects - unsigned char RSScissorRects -
- - -

Boolean value indicating whether to save the rasterizer state.

-
- - ff476325 - unsigned char RSRasterizerState - unsigned char RSRasterizerState -
- - -

Boolean value indicating whether to save the stream-out buffers states.

-
- - ff476325 - unsigned char SOBuffers - unsigned char SOBuffers -
- - -

Boolean value indicating whether to save the predication state.

-
- - ff476325 - unsigned char Predication - unsigned char Predication -
- - -

Array of vertex-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - ff476325 - unsigned char VSSamplers[2] - unsigned char VSSamplers -
- - -

Array of vertex-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - ff476325 - unsigned char VSShaderResources[16] - unsigned char VSShaderResources -
- - -

Array of vertex-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

-
- - ff476325 - unsigned char VSConstantBuffers[2] - unsigned char VSConstantBuffers -
- - -

Array of vertex-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

-
- - ff476325 - unsigned char VSInterfaces[32] - unsigned char VSInterfaces -
- - -

Array of hull-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - ff476325 - unsigned char HSSamplers[2] - unsigned char HSSamplers -
- - -

Array of hull-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - ff476325 - unsigned char HSShaderResources[16] - unsigned char HSShaderResources -
- - -

Array of hull-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

-
- - ff476325 - unsigned char HSConstantBuffers[2] - unsigned char HSConstantBuffers -
- - -

Array of hull-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

-
- - ff476325 - unsigned char HSInterfaces[32] - unsigned char HSInterfaces -
- - -

Array of domain-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - ff476325 - unsigned char DSSamplers[2] - unsigned char DSSamplers -
- - -

Array of domain-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - ff476325 - unsigned char DSShaderResources[16] - unsigned char DSShaderResources -
- - -

Array of domain-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.

-
- - ff476325 - unsigned char DSConstantBuffers[2] - unsigned char DSConstantBuffers -
- - -

Array of domain-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

-
- - ff476325 - unsigned char DSInterfaces[32] - unsigned char DSInterfaces -
- - -

Array of geometry-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - ff476325 - unsigned char GSSamplers[2] - unsigned char GSSamplers -
- - -

Array of geometry-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - ff476325 - unsigned char GSShaderResources[16] - unsigned char GSShaderResources -
- - -

Array of geometry-shader constant buffers. The array is a multi-byte bitmask where each bit represents one buffer slot.

-
- - ff476325 - unsigned char GSConstantBuffers[2] - unsigned char GSConstantBuffers -
- - -

Array of geometry-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

-
- - ff476325 - unsigned char GSInterfaces[32] - unsigned char GSInterfaces -
- - -

Array of pixel-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - ff476325 - unsigned char PSSamplers[2] - unsigned char PSSamplers -
- - -

Array of pixel-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - ff476325 - unsigned char PSShaderResources[16] - unsigned char PSShaderResources -
- - -

Array of pixel-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

-
- - ff476325 - unsigned char PSConstantBuffers[2] - unsigned char PSConstantBuffers -
- - -

Array of pixel-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

-
- - ff476325 - unsigned char PSInterfaces[32] - unsigned char PSInterfaces -
- - -

Array of compute-shader samplers. The array is a multi-byte bitmask where each bit represents one sampler slot.

-
- - ff476325 - unsigned char CSSamplers[2] - unsigned char CSSamplers -
- - -

Array of compute-shader resources. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - ff476325 - unsigned char CSShaderResources[16] - unsigned char CSShaderResources -
- - -

Array of compute-shader constant buffers. The array is a multi-byte bitmask where each bit represents one constant buffer slot.

-
- - ff476325 - unsigned char CSConstantBuffers[2] - unsigned char CSConstantBuffers -
- - -

Array of compute-shader interfaces. The array is a multi-byte bitmask where each bit represents one interface slot.

-
- - ff476325 - unsigned char CSInterfaces[32] - unsigned char CSInterfaces -
- - -

Array of vertex buffers. The array is a multi-byte bitmask where each bit represents one resource slot.

-
- - ff476325 - unsigned char IAVertexBuffers[4] - unsigned char IAVertexBuffers -
-
-
diff --git a/distribution/SharpDX.Direct3D11.dll b/distribution/SharpDX.Direct3D11.dll deleted file mode 100644 index a07984f64c8da2cf60382b9b7c6624cf24edf426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171520 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

_W5FQt%14b%1>wE}^faG=3T72TFL_K1o+ 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 b>mUF8UsM8@JDq+cXPk}fAOHM+R|5YVNTLmq diff --git a/distribution/SharpDX.Direct3D11.xml b/distribution/SharpDX.Direct3D11.xml deleted file mode 100644 index 9a1d8347..00000000 --- a/distribution/SharpDX.Direct3D11.xml +++ /dev/null @@ -1,22957 +0,0 @@ - - - - SharpDX.Direct3D11 - - - -

- The assembly provides managed Direct3D11 API. - - ff476080 - Direct3D11 - Direct3D11 - - - -

The blend-state interface holds a description for blending state that you can bind to the output-merger stage.

-
- -

Blending applies a simple function to combine output values from a pixel shader with data in a render target. You have control over how the pixels are blended by using a predefined set of blending operations and preblending operations.

To create a blend-state object, call . To bind the blend-state object to the output-merger stage, call .

Windows?Phone?8: This API is supported.

-
- - ff476349 - ID3D11BlendState - ID3D11BlendState -
- - -

A device-child interface accesses data used by a device.

-
- -

There are several types of device child interfaces, all of which inherit this interface. They include shaders, state objects, and input layouts.

Windows?Phone?8: This API is supported.

-
- - ff476380 - ID3D11DeviceChild - ID3D11DeviceChild -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a reference to the device that created this interface.

-
-

Address of a reference to a device (see ).

- -

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

Windows?Phone?8: This API is supported.

-
- - ff476381 - void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice) - ID3D11DeviceChild::GetDevice -
- - -

Get application-defined data from a device child.

-
-

Guid associated with the data.

-

A reference to a variable that on input contains the size, in bytes, of the buffer that pData points to, and on output contains the size, in bytes, of the amount of data that GetPrivateData retrieved.

-

A reference to a buffer that GetPrivateData fills with data from the device child if pDataSize points to a value that specifies a buffer large enough to hold the data.

-

This method returns one of the codes described in the topic Direct3D 11 Return Codes.

- -

The data stored in the device child is set by calling .

Windows?Phone?8: This API is supported.

-
- - ff476382 - HRESULT ID3D11DeviceChild::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) - ID3D11DeviceChild::GetPrivateData -
- - -

Set application-defined data to a device child and associate that data with an application-defined guid.

-
-

Guid associated with the data.

-

Size of the data.

-

Pointer to the data to be stored with this device child. If pData is null, DataSize must also be 0, and any data previously associated with the specified guid will be destroyed.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

The data stored in the device child with this method can be retrieved with .

The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

 static const char c_szName[] = "My name";	
-            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
-            

Windows?Phone?8: This API is supported.

-
- - ff476383 - HRESULT ID3D11DeviceChild::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) - ID3D11DeviceChild::SetPrivateData -
- - -

Associate an -derived interface with this device child and associate that interface with an application-defined guid.

-
-

Guid associated with the interface.

-

Pointer to an -derived interface to be associated with the device child.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

When this method is called ::addref() will be called on the -derived interface, and when the device child is detroyed ::release() will be called on the -derived interface.

Windows?Phone?8: This API is supported.

-
- - ff476384 - HRESULT ID3D11DeviceChild::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) - ID3D11DeviceChild::SetPrivateDataInterface -
- - - Gets or sets the debug-name for this object. - - - The debug name. - - - - -

Get a reference to the device that created this interface.

-
- -

Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

Windows?Phone?8: This API is supported.

-
- - ff476381 - GetDevice - GetDevice - void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice) -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets the description for blending state that you used to create the blend-state object.

-
-

A reference to a structure that receives a description of the blend state.

- -

You use the description for blending state in a call to the method to create the blend-state object.

Windows?Phone?8: This API is supported.

-
- - ff476350 - void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc) - ID3D11BlendState::GetDesc -
- - -

Gets the description for blending state that you used to create the blend-state object.

-
- -

You use the description for blending state in a call to the method to create the blend-state object.

Windows?Phone?8: This API is supported.

-
- - ff476350 - GetDesc - GetDesc - void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc) -
- - -

Describes the blend state that you use in a call to to create a blend-state object.

-
- -

Here are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

Note?? is identical to .

If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the display device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the display device performs the blend in linear space, which is ideal.

-
- - ff476087 - D3D11_BLEND_DESC - D3D11_BLEND_DESC -
- - - Returns default values for . - - - See MSDN documentation for default values. - - - - - Clones this instance. - - A copy of this instance. - - Because this structure contains an array, it is not possible to modify it without making an explicit clone method. - - - - - No documentation. - - - ff476087 - BOOL AlphaToCoverageEnable - BOOL AlphaToCoverageEnable - - - - No documentation. - - - ff476087 - BOOL IndependentBlendEnable - BOOL IndependentBlendEnable - - - - No documentation. - - - ff476087 - D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[8] - D3D11_RENDER_TARGET_BLEND_DESC RenderTarget - - - -

A buffer interface accesses a buffer resource, which is unstructured memory. Buffers typically store vertex or index data.

-
- -

There are three types of buffers: vertex, index, or a shader-constant buffer. Create a buffer resource by calling .

A buffer must be bound to the pipeline before it can be accessed. Buffers can be bound to the input-assembler stage by calls to and , to the stream-output stage by a call to , and to a shader stage by calling the appropriate shader method (such as for example).

Buffers can be bound to multiple pipeline stages simultaneously for reading. A buffer can also be bound to a single pipeline stage for writing; however, the same buffer cannot be bound for reading and writing simultaneously.

Windows?Phone?8: This API is supported.

-
- - ff476351 - ID3D11Buffer - ID3D11Buffer -
- - -

A resource interface provides common actions on all resources.

-
- -

You don't directly create a resource interface; instead, you create buffers and textures that inherit from a resource interface. For more info, see How to: Create a Vertex Buffer, How to: Create an Index Buffer, How to: Create a Constant Buffer, and How to: Create a Texture.

Windows?Phone?8: This API is supported.

-
- - ff476584 - ID3D11Resource - ID3D11Resource -
- - Constant MaximumMipLevels. - D3D11_REQ_MIP_LEVELS - - - Constant ResourceSizeInMegabytes. - D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM - - - Constant MaximumTexture1DArraySize. - D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION - - - Constant MaximumTexture2DArraySize. - D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION - - - Constant MaximumTexture1DSize. - D3D11_REQ_TEXTURE1D_U_DIMENSION - - - Constant MaximumTexture2DSize. - D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION - - - Constant MaximumTexture3DSize. - D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION - - - Constant MaximumTextureCubeSize. - D3D11_REQ_TEXTURECUBE_DIMENSION - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the type of the resource.

-
-

Pointer to the resource type (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476586 - void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension) - ID3D11Resource::GetType -
- - -

Set the eviction priority of a resource.

-
-

Eviction priority for the resource, which is one of the following values:

- -

Resource priorities determine which resource to evict from video memory when the system has run out of video memory. The resource will not be lost; it will be removed from video memory and placed into system memory, or possibly placed onto the hard drive. The resource will be loaded back into video memory when it is required.

A resource that is set to the maximum priority, , is only evicted if there is no other way of resolving the incoming memory request. The Windows Display Driver Model (WDDM) tries to split an incoming memory request to its minimum size and evict lower-priority resources before evicting a resource with maximum priority.

Changing the priorities of resources should be done carefully. The wrong eviction priorities could be a detriment to performance rather than an improvement.

Windows?Phone?8: This API is supported.

-
- - ff476587 - void ID3D11Resource::SetEvictionPriority([In] unsigned int EvictionPriority) - ID3D11Resource::SetEvictionPriority -
- - -

Get the eviction priority of a resource.

-
-

One of the following values, which specifies the eviction priority for the resource:

- -

Windows?Phone?8: This API is supported.

-
- - ff476585 - unsigned int ID3D11Resource::GetEvictionPriority() - ID3D11Resource::GetEvictionPriority -
- - - Gets a swap chain back buffer. - - The type of the buffer. - The swap chain to get the buffer from. - The index of the desired buffer. - The buffer interface, or null on failure. - - - - Loads a texture from an image file. - - The device used to load the texture. - Path to the file on disk. - The loaded texture object. - - - - Loads a texture from an image file. - - The device used to load the texture. - Path to the file on disk. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from an image file. - - The device used to load the texture. - Path to the file on disk. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from an image file. - - The device used to load the texture. - Path to the file on disk. - The loaded texture object. - - - - Load a texture from a texture. - - A reference to a valid - Pointer to the source texture. See . - Pointer to the destination texture. See . - Pointer to texture loading parameters. See . - The return value is one of the values listed in {{Direct3D 10 Return Codes}}. - HRESULT D3DX10LoadTextureFromTexture([None] ID3D10Resource* pSrcTexture,[None] D3DX10_TEXTURE_LOAD_INFO* pLoadInfo,[None] ID3D10Resource* pDstTexture) - - - - Generates mipmap chain using a particular texture filter for this texture instance. - - A reference to an object. - The mipmap level whose data is used to generate the rest of the mipmap chain. - Flags controlling how each miplevel is filtered (or D3DX11_DEFAULT for ). See . - The return value is one of the values listed in Direct3D 11 Return Codes. - HRESULT D3DX11FilterTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter) - - - - Saves a texture to file. - - The device used to save the texture. - The texture to save. - The format the texture will be saved as. - Name of the destination output file where the texture will be saved. - A object describing the result of the operation. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Array of memory containing the image data to load. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Array of memory containing the image data to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Pointer to unmanaged memory containing the image data to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Pointer to unmanaged memory containing the image data to load. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Array of memory containing the image data to load. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Array of memory containing the image data to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Pointer to unmanaged memory containing the image data to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from an image in memory. - - The device used to load the texture. - Pointer to unmanaged memory containing the image data to load. - The loaded texture object. - - - - Loads a texture from a stream of data. - - The device used to load the texture. - A stream containing the image data to load. - Size of the image to load. - The loaded texture object. - - - - Loads a texture from a stream of data. - - The device used to load the texture. - A stream containing the image data to load. - Size of the image to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Loads a texture from a stream of data. - - The device used to load the texture. - A stream containing the image data to load. - Size of the image to load. - The loaded texture object. - - - - Loads a texture from a stream of data. - - The device used to load the texture. - A stream containing the image data to load. - Size of the image to load. - Specifies information used to load the texture. - The loaded texture object. - - - - Saves a texture to a stream. - - The device used to save the texture. - The texture to save. - The format the texture will be saved as. - Destination memory stream where the image will be saved. - A object describing the result of the operation. - - - - Calculates the sub resource index from a miplevel. - - A zero-based index for the mipmap level to address; 0 indicates the first, most detailed mipmap level. - The zero-based index for the array level to address; always use 0 for volume (3D) textures. - Number of mipmap levels in the resource. - - The index which equals MipSlice + (ArraySlice * MipLevels). - - D3D11CalcSubresource - - - - Calculates the resulting size at a single level for an original size. - - The mip level to get the size. - Size of the base. - - Size of the mipLevel - - - - - Calculates the sub resource index for a particular mipSlice and arraySlice. - - The mip slice. - The array slice. - The size of slice. This values is resource dependent. Texture1D -> mipSize of the Width. Texture2D -> mipSize of the Height. Texture3D -> mipsize of the Depth - The resulting miplevel calulated for this instance with this mipSlice and arraySlice. - - - -

Get the type of the resource.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476586 - GetType - GetType - void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension) -
- - -

Get or sets the eviction priority of a resource.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476585 - GetEvictionPriority / SetEvictionPriority - GetEvictionPriority - unsigned int ID3D11Resource::GetEvictionPriority() -
- - - Initializes a new instance of the class. - - The device with which to associate the buffer. - The description of the buffer. - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Initializes a new instance of the class. - - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The description of the buffer. - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Initializes a new instance of the class. - - The device with which to associate the buffer. - The data pointer. - The description of the buffer. - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Initializes a new instance of the class. - - The device with which to associate the buffer. - The size, in bytes, of the buffer. - The usage pattern for the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - The size (in bytes) of the structure element for structured buffers. - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Initializes a new instance of the class. - - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The size, in bytes, of the buffer. - The usage pattern for the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - The size (in bytes) of the structure element for structured buffers. - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Initial data used to initialize the buffer. - The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. - The usage pattern for the buffer. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - The size (in bytes) of the structure element for structured buffers. - An initialized buffer - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Flags specifying how the buffer will be bound to the pipeline. - Initial data used to initialize the buffer. - The size, in bytes, of the buffer. If 0 is specified, sizeof(T) * data.Length is used. - The usage pattern for the buffer. - Flags specifying how the buffer will be accessible from the CPU. - Miscellaneous resource options. - The size (in bytes) of the structure element for structured buffers. - An initialized buffer - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The description. - - An initialized buffer - - - If the is at 0, sizeof(T) is used. - - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Creates a new instance of the class. - - Type of the data to upload - The device with which to associate the buffer. - Initial data used to initialize the buffer. - The description. - - An initialized buffer - - - If the is at 0, sizeof(T) * data.Length is used. - - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the properties of a buffer resource.

-
-

Pointer to a resource description (see ) filled in by the method.

- -

Windows?Phone?8: This API is supported.

-
- - ff476352 - void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc) - ID3D11Buffer::GetDesc -
- - -

Get the properties of a buffer resource.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476352 - GetDesc - GetDesc - void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc) -
- - -

Describes a buffer resource.

-
- -

This structure is used by to create buffer resources.

In addition to this structure, you can also use the CD3D11_BUFFER_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a buffer description.

If the bind flag is , you must set the ByteWidth value in multiples of 16, and less than or equal to D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

-
- - ff476092 - D3D11_BUFFER_DESC - D3D11_BUFFER_DESC -
- - - Initializes a new instance of the struct. - - The size in bytes. - The usage. - The bind flags. - The CPU access flags. - The option flags. - The structure byte stride. - - - -

Size of the buffer in bytes.

-
- - ff476092 - unsigned int ByteWidth - unsigned int ByteWidth -
- - -

Identify how the buffer is expected to be read from and written to. Frequency of update is a key factor. The most common value is typically ; see for all possible values.

-
- - ff476092 - D3D11_USAGE Usage - D3D11_USAGE Usage -
- - -

Identify how the buffer will be bound to the pipeline. Flags (see ) can be combined with a logical OR.

-
- - ff476092 - D3D11_BIND_FLAG BindFlags - D3D11_BIND_FLAG BindFlags -
- - -

CPU access flags (see ) or 0 if no CPU access is necessary. Flags can be combined with a logical OR.

-
- - ff476092 - D3D11_CPU_ACCESS_FLAG CPUAccessFlags - D3D11_CPU_ACCESS_FLAG CPUAccessFlags -
- - -

Miscellaneous flags (see ) or 0 if unused. Flags can be combined with a logical OR.

-
- - ff476092 - D3D11_RESOURCE_MISC_FLAG MiscFlags - D3D11_RESOURCE_MISC_FLAG MiscFlags -
- - -

The size of each element in the buffer structure (in bytes) when the buffer represents a structured buffer. For more info about structured buffers, see Structured Buffer.

The size value in StructureByteStride must match the size of the format that you use for views of the buffer. For example, if you use a shader resource view (SRV) to read a buffer in a pixel shader, the SRV format size must match the size value in StructureByteStride.

-
- - ff476092 - unsigned int StructureByteStride - unsigned int StructureByteStride -
- - -

This interface encapsulates an HLSL class.

-
- -

This interface is created by calling . The interface is used when binding shader resources to the pipeline using APIs such as .

Windows?Phone?8: This API is supported.

-
- - ff476353 - ID3D11ClassInstance - ID3D11ClassInstance -
- - - Initializes a class-instance object that represents an HLSL class instance. - - - Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in. For more information about using the interface, see {{Dynamic Linking}}. - - An instance of . - The type name of a class to initialize. - Identifies the constant buffer that contains the class data. - The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset. - The texture slot for the first texture; there may be multiple textures following the offset. - The sampler slot for the first sampler; there may be multiple samplers following the offset. - Returns S_OK if successful; otherwise, returns one of the following {{Direct3D 11 Return Codes}}. - HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] int ConstantBufferOffset,[In] int ConstantVectorOffset,[In] int TextureOffset,[In] int SamplerOffset,[Out] ID3D11ClassInstance** ppInstance) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets the object associated with the current HLSL class.

-
- No documentation. - -

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

-
- - ff476354 - void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage) - ID3D11ClassInstance::GetClassLinkage -
- - -

Gets a description of the current HLSL class.

-
-

A reference to a structure that describes the current HLSL class.

- -

For more information about using the interface, see Dynamic Linking.

An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.

  • A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name DefaultShader would work in any shader that contained a type DefaultShader even though several shaders could describe a different type.
  • A gotten instance maps directly to an instance name/index in a shader. A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.

An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.

Windows?Phone?8: This API is supported.

-
- - ff476355 - void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc) - ID3D11ClassInstance::GetDesc -
- - -

Gets the instance name of the current HLSL class.

-
-

The instance name of the current HLSL class.

-

The length of the pInstanceName parameter.

- -

GetInstanceName will return a valid name only for instances acquired using .

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

-
- - ff476356 - void ID3D11ClassInstance::GetInstanceName([Out, Buffer, Optional] char* pInstanceName,[InOut] SIZE_T* pBufferLength) - ID3D11ClassInstance::GetInstanceName -
- - -

Gets the type of the current HLSL class.

-
-

Type of the current HLSL class.

-

The length of the pTypeName parameter.

- -

GetTypeName will return a valid name only for instances acquired using .

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

-
- - ff476357 - void ID3D11ClassInstance::GetTypeName([Out, Buffer, Optional] char* pTypeName,[InOut] SIZE_T* pBufferLength) - ID3D11ClassInstance::GetTypeName -
- - - Gets the instance name of the current HLSL class. - - - GetInstanceName will return a valid name only for instances acquired using .For more information about using the interface, see {{Dynamic Linking}}. - - The instance name of the current HLSL class. - void GetInstanceName([Out, Buffer, Optional] LPSTR pInstanceName,[InOut] SIZE_T* pBufferLength) - - - - Gets the type of the current HLSL class. - - - GetTypeName will return a valid name only for instances acquired using .For more information about using the interface, see {{Dynamic Linking}}. - - Type of the current HLSL class. - void GetTypeName([Out, Buffer, Optional] LPSTR pTypeName,[InOut] SIZE_T* pBufferLength) - - - -

Gets the object associated with the current HLSL class.

-
- -

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

-
- - ff476354 - GetClassLinkage - GetClassLinkage - void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage) -
- - -

Gets a description of the current HLSL class.

-
- -

For more information about using the interface, see Dynamic Linking.

An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.

  • A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name DefaultShader would work in any shader that contained a type DefaultShader even though several shaders could describe a different type.
  • A gotten instance maps directly to an instance name/index in a shader. A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.

An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.

Windows?Phone?8: This API is supported.

-
- - ff476355 - GetDesc - GetDesc - void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc) -
- - -

This interface encapsulates an HLSL dynamic linkage.

-
- -

A class linkage object can hold up to 64K gotten instances. A gotten instance is a handle that references a variable name in any shader that is created with that linkage object. When you create a shader with a class linkage object, the runtime gathers these instances and stores them in the class linkage object. For more information about how a class linkage object is used, see Storing Variables and Types for Shaders to Share.

An object is created using the method.

Windows?Phone?8: This API is supported.

-
- - ff476358 - ID3D11ClassLinkage - ID3D11ClassLinkage -
- - - Create a new instance of . - - - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets the class-instance object that represents the specified HLSL class.

-
-

The name of a class for which to get the class instance.

-

The index of the class instance.

-

The address of a reference to an interface to initialize.

- -

For more information about using the interface, see Dynamic Linking.

A class instance must have at least 1 data member in order to be available for the runtime to use with . Any instance with no members will be optimized out of a compiled shader blob as a zero-sized object. If you have a class with no data members, use instead.

Windows?Phone?8: This API is supported.

-
- - ff476360 - HRESULT ID3D11ClassLinkage::GetClassInstance([In] const char* pClassInstanceName,[In] unsigned int InstanceIndex,[Out] ID3D11ClassInstance** ppInstance) - ID3D11ClassLinkage::GetClassInstance -
- - -

Initializes a class-instance object that represents an HLSL class instance.

-
-

The type name of a class to initialize.

-

Identifies the constant buffer that contains the class data.

-

The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset.

-

The texture slot for the first texture; there may be multiple textures following the offset.

-

The sampler slot for the first sampler; there may be multiple samplers following the offset.

-

The address of a reference to an interface to initialize.

-

Returns if successful; otherwise, returns one of the following Direct3D 11 Return Codes.

- -

Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in.

For more information about using the interface, see Dynamic Linking.

Windows?Phone?8: This API is supported.

-
- - ff476359 - HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] unsigned int ConstantBufferOffset,[In] unsigned int ConstantVectorOffset,[In] unsigned int TextureOffset,[In] unsigned int SamplerOffset,[Out, Fast] ID3D11ClassInstance** ppInstance) - ID3D11ClassLinkage::CreateClassInstance -
- - -

A compute-shader interface manages an executable program (a compute shader) that controls the compute-shader stage.

-
- -

The compute-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a compute-shader interface, call . Before using a compute shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

-
- - ff476363 - ID3D11ComputeShader - ID3D11ComputeShader -
- - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - A dynamic class linkage interface. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Describes depth-stencil state.

-
- -

Pass a reference to to the method to create the depth-stencil state object.

Depth-stencil state controls how depth-stencil testing is performed by the output-merger stage.

The following table shows the default values of depth-stencil states.

StateDefault Value
DepthEnableTRUE
DepthWriteMask
DepthFunc
StencilEnable
StencilReadMaskD3D11_DEFAULT_STENCIL_READ_MASK
StencilWriteMaskD3D11_DEFAULT_STENCIL_WRITE_MASK

FrontFace.StencilFunc

and

BackFace.StencilFunc

FrontFace.StencilDepthFailOp

and

BackFace.StencilDepthFailOp

FrontFace.StencilPassOp

and

BackFace.StencilPassOp

FrontFace.StencilFailOp

and

BackFace.StencilFailOp

?

The formats that support stenciling are and .

-
- - ff476110 - D3D11_DEPTH_STENCIL_DESC - D3D11_DEPTH_STENCIL_DESC -
- - - Returns default values for . - - - See MSDN documentation for default values. - - - - -

Enable depth testing.

-
- - ff476110 - BOOL DepthEnable - BOOL DepthEnable -
- - -

Identify a portion of the depth-stencil buffer that can be modified by depth data (see ).

-
- - ff476110 - D3D11_DEPTH_WRITE_MASK DepthWriteMask - D3D11_DEPTH_WRITE_MASK DepthWriteMask -
- - -

A function that compares depth data against existing depth data. The function options are listed in .

-
- - ff476110 - D3D11_COMPARISON_FUNC DepthFunc - D3D11_COMPARISON_FUNC DepthFunc -
- - -

Enable stencil testing.

-
- - ff476110 - BOOL StencilEnable - BOOL StencilEnable -
- - -

Identify a portion of the depth-stencil buffer for reading stencil data.

-
- - ff476110 - unsigned char StencilReadMask - unsigned char StencilReadMask -
- - -

Identify a portion of the depth-stencil buffer for writing stencil data.

-
- - ff476110 - unsigned char StencilWriteMask - unsigned char StencilWriteMask -
- - -

Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing towards the camera (see ).

-
- - ff476110 - D3D11_DEPTH_STENCILOP_DESC FrontFace - D3D11_DEPTH_STENCILOP_DESC FrontFace -
- - -

Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from the camera (see ).

-
- - ff476110 - D3D11_DEPTH_STENCILOP_DESC BackFace - D3D11_DEPTH_STENCILOP_DESC BackFace -
- - - The namespace provides a managed Direct3D11 API. - - ff476080 - Direct3D11 - Direct3D11 - - - -

Describes rasterizer state.

-
- -

Rasterizer state defines the behavior of the rasterizer stage. To create a rasterizer-state object, call . To set rasterizer state, call .

If you do not specify some rasterizer state, the Direct3D runtime uses the following default values for rasterizer state.

StateDefault Value
FillModeSolid
CullModeBack
FrontCounterClockwise
DepthBias0
SlopeScaledDepthBias0.0f
DepthBiasClamp0.0f
DepthClipEnableTRUE
ScissorEnable
MultisampleEnable
AntialiasedLineEnable

?

Note??For feature levels 9.1, 9.2, 9.3, and 10.0, if you set MultisampleEnable to , the runtime renders all points, lines, and triangles without anti-aliasing even for render targets with a sample count greater than 1. For feature levels 10.1 and higher, the setting of MultisampleEnable has no effect on points and triangles with regard to MSAA and impacts only the selection of the line-rendering algorithm as shown in this table:

Line-rendering algorithmMultisampleEnableAntialiasedLineEnable
Aliased
Alpha antialiasedTRUE
QuadrilateralTRUE
QuadrilateralTRUETRUE

?

The settings of the MultisampleEnable and AntialiasedLineEnable members apply only to multisample antialiasing (MSAA) render targets (that is, render targets with sample counts greater than 1). Because of the differences in feature-level behavior and as long as you aren?t performing any line drawing or don?t mind that lines render as quadrilaterals, we recommend that you always set MultisampleEnable to TRUE whenever you render on MSAA render targets.

-
- - ff476198 - D3D11_RASTERIZER_DESC - D3D11_RASTERIZER_DESC -
- - - Returns default values for . - - - See MSDN documentation for default values. - - - - -

Determines the fill mode to use when rendering (see ).

-
- - ff476198 - D3D11_FILL_MODE FillMode - D3D11_FILL_MODE FillMode -
- - -

Indicates triangles facing the specified direction are not drawn (see ).

-
- - ff476198 - D3D11_CULL_MODE CullMode - D3D11_CULL_MODE CullMode -
- - -

Determines if a triangle is front- or back-facing. If this parameter is TRUE, a triangle will be considered front-facing if its vertices are counter-clockwise on the render target and considered back-facing if they are clockwise. If this parameter is , the opposite is true.

-
- - ff476198 - BOOL FrontCounterClockwise - BOOL FrontCounterClockwise -
- - -

Depth value added to a given pixel. For info about depth bias, see Depth Bias.

-
- - ff476198 - int DepthBias - int DepthBias -
- - -

Maximum depth bias of a pixel. For info about depth bias, see Depth Bias.

-
- - ff476198 - float DepthBiasClamp - float DepthBiasClamp -
- - -

Scalar on a given pixel's slope. For info about depth bias, see Depth Bias.

-
- - ff476198 - float SlopeScaledDepthBias - float SlopeScaledDepthBias -
- - -

Enable clipping based on distance.

The hardware always performs x and y clipping of rasterized coordinates. When DepthClipEnable is set to the default?TRUE, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm). -

0 < w - -w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) - -w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) - 0 <= z <= w -

When you set DepthClipEnable to , the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the "0 < w" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane. -

-
- - ff476198 - BOOL DepthClipEnable - BOOL DepthClipEnable -
- - -

Enable scissor-rectangle culling. All pixels outside an active scissor rectangle are culled.

-
- - ff476198 - BOOL ScissorEnable - BOOL ScissorEnable -
- - -

Specifies whether to use the quadrilateral or alpha line anti-aliasing algorithm on multisample antialiasing (MSAA) render targets. Set to TRUE to use the quadrilateral line anti-aliasing algorithm and to to use the alpha line anti-aliasing algorithm. For more info about this member, see Remarks.

-
- - ff476198 - BOOL MultisampleEnable - BOOL MultisampleEnable -
- - -

Specifies whether to enable line antialiasing; only applies if doing line drawing and MultisampleEnable is . For more info about this member, see Remarks.

-
- - ff476198 - BOOL AntialiasedLineEnable - BOOL AntialiasedLineEnable -
- - -

This interface encapsulates methods for measuring GPU performance.

-
- -

A counter can be created with .

This is a derived class of .

Counter data is gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of counter. The call to End causes the data returned by GetData to be accurate up until the last call to End.

Counters are best suited for profiling.

For a list of the types of performance counters, see .

Windows?Phone?8: This API is supported.

-
- - ff476364 - ID3D11Counter - ID3D11Counter -
- - -

This interface encapsulates methods for retrieving data from the GPU asynchronously.

-
- -

There are three types of asynchronous interfaces, all of which inherit this interface:

  • - Queries information from the GPU.
  • - Determines whether a piece of geometry should be processed or not depending on the results of a previous draw call.
  • - Measures GPU performance.

Windows?Phone?8: This API is supported.

-
- - ff476347 - ID3D11Asynchronous - ID3D11Asynchronous -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the size of the data (in bytes) that is output when calling .

-
-

Size of the data (in bytes) that is output when calling GetData.

- -

Windows?Phone?8: This API is supported.

-
- - ff476348 - unsigned int ID3D11Asynchronous::GetDataSize() - ID3D11Asynchronous::GetDataSize -
- - -

Get the size of the data (in bytes) that is output when calling .

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476348 - GetDataSize - GetDataSize - unsigned int ID3D11Asynchronous::GetDataSize() -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The counter description. - The newly created object. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a counter description.

-
-

Pointer to a counter description (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476365 - void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc) - ID3D11Counter::GetDesc -
- - -

Get a counter description.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476365 - GetDesc - GetDesc - void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc) -
- - - Counter metadata that contains the type, name, units of measure, and a description of an existing counter. - - - - - Gets the data type of a counter (see ). - - The type. - - - - Gets the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters. - - The hardware counter count. - - - - Gets a brief name for the counter. - - The name. - - - - Gets the units a counter measures. - - The units. - - - - Gets a description of the counter. - - The description. - - - -

A debug interface controls debug settings, validates pipeline state and can only be used if the debug layer is turned on.

-
- -

This interface is obtained by querying it from the using IUnknown::QueryInterface.

For more information about the debug layer, see Debug Layer.

Windows?Phone?8: This API is supported.

-
- - ff476366 - ID3D11Debug - ID3D11Debug -
- - - Initializes a new instance of the class. - - The device. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set a bit field of flags that will turn debug features on and off.

-
-

A combination of feature-mask flags that are combined by using a bitwise OR operation. If a flag is present, that feature will be set to on, otherwise the feature will be set to off. For descriptions of the feature-mask flags, see Remarks.

-

This method returns one of the Direct3D 11 Return Codes.

- -

Note??If you call this API in a Session 0 process, it returns .

Setting one of the following feature-mask flags will cause a rendering-operation method (listed below) to do some extra task when called.

(0x2)Application will wait for the GPU to finish processing the rendering operation before continuing.
(0x1)Runtime will additionally call .
(0x4)Runtime will call . Presentation of render buffers will occur according to the settings established by prior calls to and .

?

These feature-mask flags apply to the following rendering-operation methods:

By setting one of the following feature-mask flags, you can control the behavior of the IDXGIDevice2::OfferResources and IDXGIDevice2::ReclaimResources methods to aid in testing and debugging.

Note??These flags are supported by the Direct3D 11.1 runtime, which is available starting with Windows?8.

D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE (0x8)When you call IDXGIDevice2::OfferResources to offer resources while this flag is enabled, their content is always discarded. Use this flag to test code paths that regenerate resource content on reclaim. You cannot use this flag in combination with D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE.
D3D11_DEBUG_FEATURE_NEVER_DISCARD_OFFERED_RESOURCE (0x10)When you call IDXGIDevice2::OfferResources to offer resources while this flag is enabled, their content is never discarded. Use this flag to test code paths that do not need to regenerate resource content on reclaim. You cannot use this flag in combination with D3D11_DEBUG_FEATURE_ALWAYS_DISCARD_OFFERED_RESOURCE.

?

The behavior of the IDXGIDevice2::OfferResources and IDXGIDevice2::ReclaimResources methods depends on system-wide memory pressure. Therefore, the scenario where content is lost and must be regenerated is uncommon for most applications. The preceding new options in the Direct3D debug layer let you simulate that scenario consistently and test code paths.

The following flag is supported by the Direct3D 11.1 runtime.

D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS (0x40)Disables the following default debugging behavior.

?

When the debug layer is enabled, it performs certain actions to reveal application problems. By setting the D3D11_DEBUG_FEATURE_AVOID_BEHAVIOR_CHANGING_DEBUG_AIDS feature-mask flag, you can enable the debug layer without getting the following default debugging behavior:

  • If an application calls ID3D11DeviceContext1::DiscardView, the runtime fills in the resource with a random color.
  • If an application calls IDXGISwapChain1::Present1 with partial presentation parameters, the runtime ignores the partial presentation information.

The following flag is supported by the Direct3D 11.2 runtime.

D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION (0x80)Disables the following default debugging behavior.

?

By default (that is, without D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION set), the debug layer validates the proper usage of all tile mappings for tiled resources for bound resources for every operation performed on the device context (for example, draw, copy, and so on). Depending on the size of the tiled resources used (if any), this validation can be processor intensive and slow. Apps might want to initially run with tiled resource tile mapping validation on; then, when they determine that the calling pattern is safe, they can disable the validation by setting D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION.

If D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION is set when a tiled resource is created, the debug layer never performs the tracking of tile mapping for that resource for its entire lifetime. Alternatively, if D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION is set for any given device context method call (like draw or copy calls) involving tiled resources, the debug layer skips all tile mapping validation for the call.

Windows?Phone?8: This API is supported.

-
- - ff476371 - HRESULT ID3D11Debug::SetFeatureMask([In] unsigned int Mask) - ID3D11Debug::SetFeatureMask -
- - -

Get a bitfield of flags that indicates which debug features are on or off.

-
-

Mask of feature-mask flags bitwise ORed together. If a flag is present, then that feature will be set to on, otherwise the feature will be set to off. See for a list of possible feature-mask flags.

- -

Windows?Phone?8: This API is supported.

-
- - ff476367 - unsigned int ID3D11Debug::GetFeatureMask() - ID3D11Debug::GetFeatureMask -
- - -

Set the number of milliseconds to sleep after is called.

-
- No documentation. -

This method returns one of the following Direct3D 11 Return Codes.

- -

Note??If you call this API in a Session 0 process, it returns .

The application will only sleep if is a set in the feature mask. If that flag is not set the number of milliseconds is set but ignored and the application does not sleep. 10ms is used as a default value if this method is never called.

Windows?Phone?8: This API is supported.

-
- - ff476372 - HRESULT ID3D11Debug::SetPresentPerRenderOpDelay([In] unsigned int Milliseconds) - ID3D11Debug::SetPresentPerRenderOpDelay -
- - -

Get the number of milliseconds to sleep after is called.

-
-

Number of milliseconds to sleep after Present is called.

- -

Value is set with .

Windows?Phone?8: This API is supported.

-
- - ff476368 - unsigned int ID3D11Debug::GetPresentPerRenderOpDelay() - ID3D11Debug::GetPresentPerRenderOpDelay -
- - -

Sets a swap chain that the runtime will use for automatically calling .

-
- No documentation. -

This method returns one of the following Direct3D 11 Return Codes.

- -

Note??If you call this API in a Session 0 process, it returns .

The swap chain set by this method will only be used if is set in the feature mask.

Windows?Phone?8: This API is supported.

-
- - ff476373 - HRESULT ID3D11Debug::SetSwapChain([In, Optional] IDXGISwapChain* pSwapChain) - ID3D11Debug::SetSwapChain -
- - -

Get the swap chain that the runtime will use for automatically calling .

-
- No documentation. -

This method returns one of the following Direct3D 11 Return Codes.

- -

The swap chain retrieved by this method will only be used if is set in the feature mask.

Windows?Phone?8: This API is supported.

-
- - ff476369 - HRESULT ID3D11Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) - ID3D11Debug::GetSwapChain -
- - -

Check to see if the draw pipeline state is valid.

-
-

A reference to the , that represents a device context.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Use validate prior to calling a draw method (for example, ); validation requires the debug layer.

Windows?Phone?8: This API is supported.

-
- - ff476374 - HRESULT ID3D11Debug::ValidateContext([In] ID3D11DeviceContext* pContext) - ID3D11Debug::ValidateContext -
- - -

Report information about a device object's lifetime.

-
-

A value from the enumeration.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

ReportLiveDeviceObjects uses the value in Flags to determine the amount of information to report about a device object's lifetime.

Windows?Phone?8: This API is supported.

-
- - ff476370 - HRESULT ID3D11Debug::ReportLiveDeviceObjects([In] D3D11_RLDO_FLAGS Flags) - ID3D11Debug::ReportLiveDeviceObjects -
- - -

Verifies whether the dispatch pipeline state is valid.

-
-

A reference to the that represents a device context.

-

This method returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

Use this method before you call a dispatch method (for example, ). Validation requires the debug layer.

Windows?Phone?8: This API is supported.

-
- - ff728740 - HRESULT ID3D11Debug::ValidateContextForDispatch([In] ID3D11DeviceContext* pContext) - ID3D11Debug::ValidateContextForDispatch -
- - - Gets or sets the feature flags that indicates which debug features are on or off. - - The feature flags. - - - -

Get or sets the number of milliseconds to sleep after is called.

-
- -

Value is set with .

Windows?Phone?8: This API is supported.

-
- - ff476368 - GetPresentPerRenderOpDelay / SetPresentPerRenderOpDelay - GetPresentPerRenderOpDelay - unsigned int ID3D11Debug::GetPresentPerRenderOpDelay() -
- - -

Get or sets the swap chain that the runtime will use for automatically calling .

-
- -

The swap chain retrieved by this method will only be used if is set in the feature mask.

Windows?Phone?8: This API is supported.

-
- - ff476369 - GetSwapChain / SetSwapChain - GetSwapChain - HRESULT ID3D11Debug::GetSwapChain([Out] IDXGISwapChain** ppSwapChain) -
- - -

The depth-stencil-state interface holds a description for depth-stencil state that you can bind to the output-merger stage.

-
- -

To create a depth-stencil-state object, call . To bind the depth-stencil-state object to the output-merger stage, call .

Windows?Phone?8: This API is supported.

-
- - ff476375 - ID3D11DepthStencilState - ID3D11DepthStencilState -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - ff476506 - HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState) - ID3D11Device::CreateDepthStencilState - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets the description for depth-stencil state that you used to create the depth-stencil-state object.

-
-

A reference to a structure that receives a description of the depth-stencil state.

- -

You use the description for depth-stencil state in a call to the method to create the depth-stencil-state object.

Windows?Phone?8: This API is supported.

-
- - ff476376 - void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc) - ID3D11DepthStencilState::GetDesc -
- - -

Gets the description for depth-stencil state that you used to create the depth-stencil-state object.

-
- -

You use the description for depth-stencil state in a call to the method to create the depth-stencil-state object.

Windows?Phone?8: This API is supported.

-
- - ff476376 - GetDesc - GetDesc - void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc) -
- - -

A depth-stencil-view interface accesses a texture resource during depth-stencil testing.

-
- -

To create a depth-stencil view, call .

To bind a depth-stencil view to the pipeline, call .

Windows?Phone?8: This API is supported.

-
- - ff476377 - ID3D11DepthStencilView - ID3D11DepthStencilView -
- - -

A view interface specifies the parts of a resource the pipeline can access during rendering.

-
- -

A view interface is the base interface for all views. There are four types of views; a depth-stencil view, a render-target view, a shader-resource view, and an unordered-access view.

  • To create a render-target view, call .
  • To create a depth-stencil view, call .
  • To create a shader-resource view, call .
  • To create an unordered-access view, call .

All resources must be bound to the pipeline before they can be accessed.

  • To bind a render-target view or a depth-stencil view, call .
  • To bind a shader resource, call .

Windows?Phone?8: This API is supported.

-
- - ff476642 - ID3D11View - ID3D11View -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the resource that is accessed through this view.

-
-

Address of a reference to the resource that is accessed through this view. (See .)

- -

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

Windows?Phone?8: This API is supported.

-
- - ff476643 - void ID3D11View::GetResource([Out] void** ppResource) - ID3D11View::GetResource -
- - -

Get the resource that is accessed through this view.

-
- -

This function increments the reference count of the resource by one, so it is necessary to call Dispose on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

-
- ff476643 - GetResource - GetResource - void ID3D11View::GetResource([Out] ID3D11Resource** ppResource) -
- - -

Get the resource that is accessed through this view.

-
- -

This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

-
- ff476643 - GetResource - GetResource - void ID3D11View::GetResource([Out] ID3D11Resource** ppResource) -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. - ID3D11Device::CreateDepthStencilView - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. - A structure describing the to be created. - ID3D11Device::CreateDepthStencilView - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the depth-stencil view.

-
-

Pointer to a depth-stencil-view description (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476378 - void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc) - ID3D11DepthStencilView::GetDesc -
- - -

Get the depth-stencil view.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476378 - GetDesc - GetDesc - void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc) -
- - -

The device interface represents a virtual adapter; it is used to create resources.

-
- -

A device is created using .

Windows?Phone?8: This API is supported.

-
- - ff476379 - ID3D11Device - ID3D11Device -
- - Constant MultisampleCountMaximum. - D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT - - - - Initializes a new instance of the class. - - - Type of the driver. - - ff476082 - HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDevice - - - - Initializes a new instance of the class. - - - The adapter. - - ff476082 - HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDevice - - - - Constructor for a D3D11 Device. See for more information. - - Type of the driver. - The flags. - ff476082 - HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDevice - - - - Constructor for a D3D11 Device. See for more information. - - - - ff476082 - HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDevice - - - - Constructor for a D3D11 Device. See for more information. - - - - - ff476082 - HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDevice - - - - Constructor for a D3D11 Device. See for more information. - - - - - ff476082 - HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDevice - - - - Initializes a new instance of the class along with a new used for rendering. - - The type of device to create. - A list of runtime layers to enable. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - Initializes a new instance of the class along with a new used for rendering. - - The video adapter on which the device should be created. - A list of runtime layers to enable. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - Initializes a new instance of the class along with a new used for rendering. - - The type of device to create. - A list of runtime layers to enable. - A list of feature levels which determine the order of feature levels to attempt to create. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - Initializes a new instance of the class along with a new used for rendering. - - The video adapter on which the device should be created. - A list of runtime layers to enable. - A list of feature levels which determine the order of feature levels to attempt to create. - Details used to create the swap chain. - When the method completes, contains the created device instance. - When the method completes, contains the created swap chain instance. - A object describing the result of the operation. - - - - This overload has been deprecated. Use one of the alternatives that does not take both an adapter and a driver type. - - - - - Get the type, name, units of measure, and a description of an existing counter. - - The counter description. - Description of the counter - - - - Give a device access to a shared resource created on a different Direct3d device. - - The type of the resource we are gaining access to. - A resource handle. See remarks. - - This method returns a reference to the resource we are gaining access to. - - - To share a resource between two Direct3D 10 devices the resource must have been created with the flag, if it was created using the ID3D10Device interface. If it was created using the IDXGIDevice interface, then the resource is always shared. The REFIID, or GUID, of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof(ID3D10Buffer) will get the GUID of the interface to a buffer resource. When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling {{GetSharedHandle}}. - IDXGIResource* pOtherResource(NULL); - hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource ); - HANDLE sharedHandle; - pOtherResource->GetSharedHandle(&sharedHandle); - The only resources that can be shared are 2D non-mipmapped textures. To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using the pSharedHandle argument of {{CreateTexture}}. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument. The following code illustrates the method calls involved. - sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9 - pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); - ... - pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10)); - tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10)); - tempResource10->Release(); - // now use pTex2D_10 with pDevice10 - Textures being shared from D3D9 to D3D10 have the following restrictions. Textures must be 2D Only 1 mip level is allowed Texture must have default usage Texture must be write only MSAA textures are not allowed Bind flags must have SHADER_RESOURCE and RENDER_TARGET set Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed If a shared texture is updated on one device must be called on that device. - - HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] GUID* ReturnedInterface,[Out, Optional] void** ppResource) - - - - Check if this device is supporting compute shaders for the specified format. - - The format for which to check support. - Flags indicating usage contexts in which the specified format is supported. - - - - Check if this device is supporting a feature. - - The feature to check. - - Returns true if this device supports this feature, otherwise false. - - - - - Check if this device is supporting threading. - - Support concurrent resources. - Support command lists. - - A object describing the result of the operation. - - - - - Check if a feature level is supported by a primary adapter. - - The feature level. - true if the primary adapter is supporting this feature level; otherwise, false. - - - - Check if a feature level is supported by a particular adapter. - - The adapter. - The feature level. - true if the specified adapter is supporting this feature level; otherwise, false. - - - - Gets the highest supported hardware feature level of the primary adapter. - - The highest supported hardware feature level. - - - - Gets the highest supported hardware feature level of the primary adapter. - - The adapter. - - The highest supported hardware feature level. - - - - - Internal CreateDevice - - - - - - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Creates a buffer (vertex buffer, index buffer, or shader-constant buffer).

-
-

A reference to a structure that describes the buffer.

-

A reference to a structure that describes the initialization data; use null to allocate space only (with the exception that it cannot be null if the usage flag is ).

If you don't pass anything to pInitialData, the initial content of the memory for the buffer is undefined. In this case, you need to write the buffer content some other way before the resource is read.

-

Address of a reference to the interface for the buffer object created. Set this parameter to null to validate the other input parameters (S_FALSE indicates a pass).

-

This method returns E_OUTOFMEMORY if there is insufficient memory to create the buffer. See Direct3D 11 Return Codes for other possible return values.

- -

For example code, see How to: Create a Vertex Buffer, How to: Create an Index Buffer or How to: Create a Constant Buffer.

For a constant buffer (BindFlags of set to ), you must set the ByteWidth value of in multiples of 16, and less than or equal to D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

The Direct3D 11.1 runtime, which is available on Windows?8 and later operating systems, provides the following new functionality for CreateBuffer.

You can create a constant buffer that is larger than the maximum constant buffer size that a shader can access (4096 32-bit*4-component constants ? 64KB). When you bind the constant buffer to the pipeline (for example, via PSSetConstantBuffers or PSSetConstantBuffers1), you can define a range of the buffer that the shader can access that fits within the 4096 constant limit.

The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher. On existing drivers that are implemented to feature level 10 and higher, a call to CreateBuffer to request a constant buffer that is larger than 4096 fails.

Windows?Phone?8: This API is supported.

-
- - ff476501 - HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) - ID3D11Device::CreateBuffer -
- - -

Create an array of 2D textures.

-
- No documentation. - No documentation. - No documentation. -

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

- -

CreateTexture2D creates a 2D texture resource, which can contain a number of 2D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or it may use one of the D3DX texture functions such as .

For a 32 x 32 texture with a full mipmap chain, the pInitialData array has the following 6 elements: -

  • pInitialData[0] = 32x32
  • pInitialData[1] = 16x16
  • pInitialData[2] = 8x8
  • pInitialData[3] = 4x4 -
  • pInitialData[4] = 2x2 -
  • pInitialData[5] = 1x1 -

Windows?Phone?8: This API is supported.

-
- - ff476521 - HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) - ID3D11Device::CreateTexture1D -
- - -

Create an array of 2D textures.

-
- No documentation. - No documentation. - No documentation. -

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

- -

CreateTexture2D creates a 2D texture resource, which can contain a number of 2D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or it may use one of the D3DX texture functions such as .

For a 32 x 32 texture with a full mipmap chain, the pInitialData array has the following 6 elements: -

  • pInitialData[0] = 32x32
  • pInitialData[1] = 16x16
  • pInitialData[2] = 8x8
  • pInitialData[3] = 4x4 -
  • pInitialData[4] = 2x2 -
  • pInitialData[5] = 1x1 -

Windows?Phone?8: This API is supported.

-
- - ff476521 - HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) - ID3D11Device::CreateTexture2D -
- - -

Create a single 3D texture.

-
- No documentation. - No documentation. - No documentation. -

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

- -

CreateTexture3D creates a 3D texture resource, which can contain a number of 3D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or they can use one of the D3DX texture functions such as .

Each element of pInitialData provides all of the slices that are defined for a given miplevel. For example, for a 32 x 32 x 4 volume texture with a full mipmap chain, the array has the following 6 elements:

  • pInitialData[0] = 32x32 with 4 slices
  • pInitialData[1] = 16x16 with 2 slices
  • pInitialData[2] = 8x8 with 1 slice
  • pInitialData[3] = 4x4 - with 1 slice
  • pInitialData[4] = 2x2 - with 1 slice
  • pInitialData[5] = 1x1 - with 1 slice

Windows?Phone?8: This API is supported.

-
- - ff476522 - HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D) - ID3D11Device::CreateTexture3D -
- - -

Create a shader-resource view for accessing data in a resource.

-
-

Pointer to the resource that will serve as input to a shader. This resource must have been created with the flag.

-

Pointer to a shader-resource view description (see ). Set this parameter to null to create a view that accesses the entire resource (using the format the resource was created with).

-

Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

A resource is made up of one or more subresources; a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: , and .

Because a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.

Note??To successfully create a shader-resource view from a typeless buffer (for example, ), you must set the flag when you create the buffer.

The Direct3D 11.1 runtime, which is available starting with Windows?8, allows you to use CreateShaderResourceView for the following new purpose.

You can create shader-resource views of video resources so that Direct3D shaders can process those shader-resource views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created shader-resource view must match the type of video resource, D3D11_SRV_DIMENSION_TEXTURE2D for Texture2D and D3D11_SRV_DIMENSION_TEXTURE2DARRAY for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

Windows?Phone?8: This API is supported.

-
- - ff476519 - HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) - ID3D11Device::CreateShaderResourceView -
- - -

Creates a view for accessing an unordered access resource.

-
- No documentation. - No documentation. - No documentation. -

This method returns one of the Direct3D 11 Return Codes.

- -

The Direct3D 11.1 runtime, which is available starting with Windows?8, allows you to use CreateUnorderedAccessView for the following new purpose.

You can create unordered-access views of video resources so that Direct3D shaders can process those unordered-access views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created unordered-access view must match the type of video resource, for Texture2D and for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

Windows?Phone?8: This API is supported.

-
- - ff476523 - HRESULT ID3D11Device::CreateUnorderedAccessView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc,[Out, Fast] ID3D11UnorderedAccessView** ppUAView) - ID3D11Device::CreateUnorderedAccessView -
- - -

Creates a render-target view for accessing resource data.

-
-

Pointer to a that represents a render target. This resource must have been created with the flag.

-

Pointer to a that represents a render-target view description. Set this parameter to null to create a view that accesses all of the subresources in mipmap level 0.

-

Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

-

This method returns one of the Direct3D 11 Return Codes.

- -

A render-target view can be bound to the output-merger stage by calling .

The Direct3D 11.1 runtime, which is available starting with Windows?8, allows you to use CreateRenderTargetView for the following new purpose.

You can create render-target views of video resources so that Direct3D shaders can process those render-target views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created render-target view must match the type of video resource, for Texture2D and for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

Windows?Phone?8: This API is supported.

-
- - ff476517 - HRESULT ID3D11Device::CreateRenderTargetView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_RENDER_TARGET_VIEW_DESC* pDesc,[Out, Fast] ID3D11RenderTargetView** ppRTView) - ID3D11Device::CreateRenderTargetView -
- - -

Create a depth-stencil view for accessing resource data.

-
-

Pointer to the resource that will serve as the depth-stencil surface. This resource must have been created with the flag.

-

Pointer to a depth-stencil-view description (see ). Set this parameter to null to create a view that accesses mipmap level 0 of the entire resource (using the format the resource was created with).

-

Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

A depth-stencil view can be bound to the output-merger stage by calling .

Windows?Phone?8: This API is supported.

-
- - ff476507 - HRESULT ID3D11Device::CreateDepthStencilView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc,[Out, Fast] ID3D11DepthStencilView** ppDepthStencilView) - ID3D11Device::CreateDepthStencilView -
- - -

Create an input-layout object to describe the input-buffer data for the input-assembler stage.

-
-

An array of the input-assembler stage input data types; each type is described by an element description (see ).

-

The number of input-data types in the array of input-elements.

-

A reference to the compiled shader. The compiled shader code contains a input signature which is validated against the array of elements. See remarks.

-

Size of the compiled shader.

-

A reference to the input-layout object created (see ). To validate the other input parameters, set this reference to be null and verify that the method returns S_FALSE.

-

If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

- -

After creating an input layout object, it must be bound to the input-assembler stage before calling a draw API.

Once an input-layout object is created from a shader signature, the input-layout object can be reused with any other shader that has an identical input signature (semantics included). This can simplify the creation of input-layout objects when you are working with many shaders with identical inputs.

If a data type in the input-layout declaration does not match the data type in a shader-input signature, CreateInputLayout will generate a warning during compilation. The warning is simply to call attention to the fact that the data may be reinterpreted when read from a register. You may either disregard this warning (if reinterpretation is intentional) or make the data types match in both declarations to eliminate the warning.

Windows?Phone?8: This API is supported.

-
- - ff476512 - HRESULT ID3D11Device::CreateInputLayout([In, Buffer] const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs,[In] unsigned int NumElements,[In] const void* pShaderBytecodeWithInputSignature,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D11InputLayout** ppInputLayout) - ID3D11Device::CreateInputLayout -
- - -

Create a vertex-shader object from a compiled shader.

-
-

A reference to the compiled shader.

-

Size of the compiled vertex shader.

-

A reference to a class linkage interface (see ); the value can be null.

-

Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

-

This method returns one of the Direct3D 11 Return Codes.

- -

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateVertexShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a vertex shader, you can successfully pass the compiled vertex shader to pShaderBytecode. That is, the call to CreateVertexShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateVertexShader fails. CreateVertexShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

-
- - ff476524 - HRESULT ID3D11Device::CreateVertexShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11VertexShader** ppVertexShader) - ID3D11Device::CreateVertexShader -
- - -

Create a geometry shader.

-
-

A reference to the compiled shader.

-

Size of the compiled geometry shader.

-

A reference to a class linkage interface (see ); the value can be null.

-

Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

-

This method returns one of the following Direct3D 11 Return Codes.

- -

After it is created, the shader can be set to the device by calling .

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateGeometryShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to pShaderBytecode. That is, the call to CreateGeometryShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateGeometryShader fails. CreateGeometryShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

-
- - ff476509 - HRESULT ID3D11Device::CreateGeometryShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader) - ID3D11Device::CreateGeometryShader -
- - -

Creates a geometry shader that can write to streaming output buffers.

-
-

A reference to the compiled geometry shader for a standard geometry shader plus stream output. For info on how to get this reference, see Getting a Pointer to a Compiled Shader.

To create the stream output without using a geometry shader, pass a reference to the output signature for the prior stage. To obtain this output signature, call the compiler function. You can also pass a reference to the compiled shader for the prior stage (for example, the vertex-shader stage or domain-shader stage). This compiled shader provides the output signature for the data.

-

Size of the compiled geometry shader.

-

Pointer to a array. Cannot be null if NumEntries > 0.

-

The number of entries in the stream output declaration ( ranges from 0 to * ).

-

An array of buffer strides; each stride is the size of an element for that buffer.

-

The number of strides (or buffers) in pBufferStrides (ranges from 0 to ).

-

The index number of the stream to be sent to the rasterizer stage (ranges from 0 to - 1). Set to if no stream is to be rasterized.

-

A reference to a class linkage interface (see ); the value can be null.

-

Address of a reference to an interface, representing the geometry shader that was created. Set this to null to validate the other parameters; if validation passes, the method will return S_FALSE instead of .

-

This method returns one of the Direct3D 11 Return Codes.

- -

For more info about using CreateGeometryShaderWithStreamOutput, see Create a Geometry-Shader Object with Stream Output.

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateGeometryShaderWithStreamOutput.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to pShaderBytecode. That is, the call to CreateGeometryShaderWithStreamOutput succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateGeometryShaderWithStreamOutput fails. CreateGeometryShaderWithStreamOutput also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

-
- - ff476510 - HRESULT ID3D11Device::CreateGeometryShaderWithStreamOutput([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Buffer, Optional] const D3D11_SO_DECLARATION_ENTRY* pSODeclaration,[In] unsigned int NumEntries,[In, Buffer, Optional] const unsigned int* pBufferStrides,[In] unsigned int NumStrides,[In] unsigned int RasterizedStream,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader) - ID3D11Device::CreateGeometryShaderWithStreamOutput -
- - -

Create a pixel shader.

-
-

A reference to the compiled shader.

-

Size of the compiled pixel shader.

-

A reference to a class linkage interface (see ); the value can be null.

-

Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

-

This method returns one of the following Direct3D 11 Return Codes.

- -

After creating the pixel shader, you can set it to the device using .

Windows?Phone?8: This API is supported.

-
- - ff476513 - HRESULT ID3D11Device::CreatePixelShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11PixelShader** ppPixelShader) - ID3D11Device::CreatePixelShader -
- - -

Create a hull shader.

-
- No documentation. - No documentation. - No documentation. - No documentation. -

This method returns one of the Direct3D 11 Return Codes.

- -

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateHullShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a hull shader, you can successfully pass the compiled hull shader to pShaderBytecode. That is, the call to CreateHullShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateHullShader fails. CreateHullShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

-
- - ff476511 - HRESULT ID3D11Device::CreateHullShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11HullShader** ppHullShader) - ID3D11Device::CreateHullShader -
- - -

Create a domain shader .

-
- No documentation. - No documentation. - No documentation. - No documentation. -

This method returns one of the following Direct3D 11 Return Codes.

- -

The Direct3D 11.1 runtime, which is available starting with Windows?8, provides the following new functionality for CreateDomainShader.

The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

Therefore, if you use the following shader model 5.0 instructions in a domain shader, you can successfully pass the compiled domain shader to pShaderBytecode. That is, the call to CreateDomainShader succeeds.

If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateDomainShader fails. CreateDomainShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

  • dcl_uav_typed
  • dcl_uav_raw
  • dcl_uav_structured
  • ld_raw
  • ld_structured
  • ld_uav_typed
  • store_raw
  • store_structured
  • store_uav_typed
  • sync_uglobal
  • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)

Windows?Phone?8: This API is supported.

-
- - ff476508 - HRESULT ID3D11Device::CreateDomainShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11DomainShader** ppDomainShader) - ID3D11Device::CreateDomainShader -
- - -

Create a compute shader.

-
- No documentation. - No documentation. - No documentation. - No documentation. -

This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader. See Direct3D 11 Return Codes for other possible return values.

- -

For an example, see How To: Create a Compute Shader and HDRToneMappingCS11 Sample.

Windows?Phone?8: This API is supported.

-
- - ff476503 - HRESULT ID3D11Device::CreateComputeShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11ComputeShader** ppComputeShader) - ID3D11Device::CreateComputeShader -
- - -

Creates class linkage libraries to enable dynamic shader linkage.

-
-

A reference to a class-linkage interface reference (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

The interface returned in ppLinkage is associated with a shader by passing it as a parameter to one of the create shader methods such as .

Windows?Phone?8: This API is supported.

-
- - ff476502 - HRESULT ID3D11Device::CreateClassLinkage([Out, Fast] ID3D11ClassLinkage** ppLinkage) - ID3D11Device::CreateClassLinkage -
- - -

Create a blend-state object that encapsules blend state for the output-merger stage.

-
-

Pointer to a blend-state description (see ).

-

Address of a reference to the blend-state object created (see ).

-

This method returns E_OUTOFMEMORY if there is insufficient memory to create the blend-state object. See Direct3D 11 Return Codes for other possible return values.

- -

An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

Windows?Phone?8: This API is supported.

-
- - ff476500 - HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState) - ID3D11Device::CreateBlendState -
- - -

Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.

-
-

Pointer to a depth-stencil state description (see ).

-

Address of a reference to the depth-stencil state object created (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

4096 unique depth-stencil state objects can be created on a device at a time.

If an application attempts to create a depth-stencil-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique depth-stencil state objects will stay the same.

Windows?Phone?8: This API is supported.

-
- - ff476506 - HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState) - ID3D11Device::CreateDepthStencilState -
- - -

Create a rasterizer state object that tells the rasterizer stage how to behave.

-
-

Pointer to a rasterizer state description (see ).

-

Address of a reference to the rasterizer state object created (see ).

-

This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader. See Direct3D 11 Return Codes for other possible return values.

- -

4096 unique rasterizer state objects can be created on a device at a time.

If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.

Windows?Phone?8: This API is supported.

-
- - ff476516 - HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState) - ID3D11Device::CreateRasterizerState -
- - -

Create a sampler-state object that encapsulates sampling information for a texture.

-
-

Pointer to a sampler state description (see ).

-

Address of a reference to the sampler state object created (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

4096 unique sampler state objects can be created on a device at a time.

If an application attempts to create a sampler-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique sampler state objects will stay the same.

Windows?Phone?8: This API is supported.

-
- - ff476518 - HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState) - ID3D11Device::CreateSamplerState -
- - -

This interface encapsulates methods for querying information from the GPU.

-
-

Pointer to a query description (see ).

-

Address of a reference to the query object created (see ).

-

This method returns E_OUTOFMEMORY if there is insufficient memory to create the query object. See Direct3D 11 Return Codes for other possible return values.

- -

Windows?Phone?8: This API is supported.

-
- - ff476515 - HRESULT ID3D11Device::CreateQuery([In] const D3D11_QUERY_DESC* pQueryDesc,[Out, Fast] ID3D11Query** ppQuery) - ID3D11Device::CreateQuery -
- - -

Creates a predicate.

-
-

Pointer to a query description where the type of query must be a or (see ).

-

Address of a reference to a predicate (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476514 - HRESULT ID3D11Device::CreatePredicate([In] const D3D11_QUERY_DESC* pPredicateDesc,[Out, Fast] ID3D11Predicate** ppPredicate) - ID3D11Device::CreatePredicate -
- - -

Create a counter object for measuring GPU performance.

-
-

Pointer to a counter description (see ).

-

Address of a reference to a counter (see ).

-

If this function succeeds, it will return . If it fails, possible return values are: S_FALSE, E_OUTOFMEMORY, , , or E_INVALIDARG.

is returned whenever the application requests to create a well-known counter, but the current device does not support it.

indicates that another device object is currently using the counters, so they cannot be used by this device at the moment.

E_INVALIDARG is returned whenever an out-of-range well-known or device-dependent counter is requested, or when the simulataneously active counters have been exhausted.

- -

Windows?Phone?8: This API is supported.

-
- - ff476504 - HRESULT ID3D11Device::CreateCounter([In] const D3D11_COUNTER_DESC* pCounterDesc,[Out, Fast] ID3D11Counter** ppCounter) - ID3D11Device::CreateCounter -
- - -

Creates a deferred context, which can record command lists.

-
-

Reserved for future use. Pass 0.

-

Upon completion of the method, the passed reference to an interface reference is initialized.

-

Returns if successful; otherwise, returns one of the following:

  • Returns if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.
  • Returns if the CreateDeferredContext method cannot be called from the current context. For example, if the device was created with the value, CreateDeferredContext returns .
  • Returns E_INVALIDARG if the ContextFlags parameter is invalid.
  • Returns E_OUTOFMEMORY if the application has exhausted available memory.
- -

A deferred context is a thread-safe context that you can use to record graphics commands on a thread other than the main rendering thread. Using a deferred context, you can record graphics commands into a command list that is encapsulated by the interface. After all scene items are recorded, you can then submit them to the main render thread for final rendering. In this manner, you can perform rendering tasks concurrently across multiple threads and potentially improve performance in multi-core CPU scenarios.

You can create multiple deferred contexts.

Note??If you use the value to create the device that is represented by , the CreateDeferredContext method will fail, and you will not be able to create a deferred context.

For more information about deferred contexts, see Immediate and Deferred Rendering.

Windows?Phone?8: This API is supported.

-
- - ff476505 - HRESULT ID3D11Device::CreateDeferredContext([In] unsigned int ContextFlags,[Out, Fast] ID3D11DeviceContext** ppDeferredContext) - ID3D11Device::CreateDeferredContext -
- - -

Give a device access to a shared resource created on a different device.

-
-

A resource handle. See remarks.

-

The globally unique identifier () for the resource interface. See remarks.

-

Address of a reference to the resource we are gaining access to.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

The unique handle of the resource is obtained differently depending on the type of device that originally created the resource.

To share a resource between two Direct3D 11 devices the resource must have been created with the flag, if it was created using the interface. If it was created using a DXGI device interface, then the resource is always shared.

The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

When sharing a resource between two Direct3D 10/11 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling GetSharedHandle.

 * pOtherResource(null);	
-            hr = pOtherDeviceResource->QueryInterface( __uuidof(), (void**)&pOtherResource );	
-            HANDLE sharedHandle;	
-            pOtherResource->GetSharedHandle(&sharedHandle); 

The only resources that can be shared are 2D non-mipmapped textures.

To share a resource between a Direct3D 9 device and a Direct3D 11 device the texture must have been created using the pSharedHandle argument of CreateTexture. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument.

The following code illustrates the method calls involved.

 sharedHandle = null; // must be set to null to create, can use a valid handle here to open in D3D9 	
-            pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); 	
-            ... 	
-            pDevice11->OpenSharedResource(sharedHandle, __uuidof(), (void**)(&tempResource11)); 	
-            tempResource11->QueryInterface(__uuidof(), (void**)(&pTex2D_11)); 	
-            tempResource11->Release(); 	
-            // now use pTex2D_11 with pDevice11    

Textures being shared from D3D9 to D3D11 have the following restrictions.

  • Textures must be 2D
  • Only 1 mip level is allowed
  • Texture must have default usage
  • Texture must be write only
  • MSAA textures are not allowed
  • Bind flags must have SHADER_RESOURCE and RENDER_TARGET set
  • Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed

If a shared texture is updated on one device must be called on that device.

Windows?Phone?8: This API is supported.

-
- - ff476531 - HRESULT ID3D11Device::OpenSharedResource([In] void* hResource,[In] const GUID& ReturnedInterface,[Out, Optional] void** ppResource) - ID3D11Device::OpenSharedResource -
- - -

Get the support of a given format on the installed video device.

-
-

A enumeration that describes a format for which to check for support.

-

A bitfield of enumeration values describing how the specified format is supported on the installed device. The values are ORed together.

- -

Windows?Phone?8: This API is supported.

-
- - ff476498 - HRESULT ID3D11Device::CheckFormatSupport([In] DXGI_FORMAT Format,[Out] D3D11_FORMAT_SUPPORT* pFormatSupport) - ID3D11Device::CheckFormatSupport -
- - -

Get the number of quality levels available during multisampling.

-
-

The texture format. See .

-

The number of samples during multisampling.

-

Number of quality levels supported by the adapter. See remarks.

- -

When multisampling a texture, the number of quality levels available for an adapter is dependent on the texture format used and the number of samples requested. The maximum number of quality levels is defined by in D3D11.h. If this method returns 0, the format and sample count combination is not supported for the installed adapter.

Furthermore, the definition of a quality level is up to each hardware vendor to define, however no facility is provided by Direct3D to help discover this information.

Note that FEATURE_LEVEL_10_1 devices are required to support 4x MSAA for all render targets except R32G32B32A32 and R32G32B32. FEATURE_LEVEL_11_0 devices are required to support 4x MSAA for all render target formats, and 8x MSAA for all render target formats except R32G32B32A32 formats.

Windows?Phone?8: This API is supported.

-
- - ff476499 - HRESULT ID3D11Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels) - ID3D11Device::CheckMultisampleQualityLevels -
- - -

Get a counter's information.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476496 - void ID3D11Device::CheckCounterInfo([Out] D3D11_COUNTER_INFO* pCounterInfo) - ID3D11Device::CheckCounterInfo -
- - -

Get the type, name, units of measure, and a description of an existing counter.

-
-

Pointer to a counter description (see ). Specifies which counter information is to be retrieved about.

-

Pointer to the data type of a counter (see ). Specifies the data type of the counter being retrieved.

-

Pointer to the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.

-

String to be filled with a brief name for the counter. May be null if the application is not interested in the name of the counter.

-

Length of the string returned to szName. Can be null.

-

Name of the units a counter measures, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

-

Length of the string returned to szUnits. Can be null.

-

A description of the counter, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

-

Length of the string returned to szDescription. Can be null.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Length parameters can be null, which indicates the application is not interested in the length nor the corresponding string value. When a length parameter is non-null and the corresponding string is null, the input value of the length parameter is ignored, and the length of the corresponding string (including terminating null) will be returned through the length parameter. When length and the corresponding parameter are both non-null, the input value of length is checked to ensure there is enough room, and then the length of the string (including terminating null character) is passed out through the length parameter.

Windows?Phone?8: This API is supported.

-
- - ff476495 - HRESULT ID3D11Device::CheckCounter([In] const D3D11_COUNTER_DESC* pDesc,[Out] D3D11_COUNTER_TYPE* pType,[Out] unsigned int* pActiveCounters,[Out, Buffer, Optional] char* szName,[InOut, Optional] unsigned int* pNameLength,[Out, Buffer, Optional] char* szUnits,[InOut, Optional] unsigned int* pUnitsLength,[Out, Buffer, Optional] char* szDescription,[InOut, Optional] unsigned int* pDescriptionLength) - ID3D11Device::CheckCounter -
- - -

Gets information about the features that are supported by the current graphics driver.

-
-

A member of the enumerated type that describes which feature to query for support.

-

Upon completion of the method, the passed structure is filled with data that describes the feature support.

-

The size of the structure passed to the pFeatureSupportData parameter.

-

Returns if successful; otherwise, returns E_INVALIDARG if an unsupported data type is passed to the pFeatureSupportData parameter or a size mismatch is detected for the FeatureSupportDataSize parameter.

- -

To query for multi-threading support, pass the value to the Feature parameter, pass the structure to the pFeatureSupportData parameter, and pass the size of the structure to the FeatureSupportDataSize parameter.

Calling CheckFeatureSupport with Feature set to causes the method to return the same information that would be returned by .

Windows?Phone?8: This API is supported.

-
- - ff476497 - HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize) - ID3D11Device::CheckFeatureSupport -
- - -

Get application-defined data from a device.

-
-

Guid associated with the data.

-

A reference to a variable that on input contains the size, in bytes, of the buffer that pData points to, and on output contains the size, in bytes, of the amount of data that GetPrivateData retrieved.

-

A reference to a buffer that GetPrivateData fills with data from the device if pDataSize points to a value that specifies a buffer large enough to hold the data.

-

This method returns one of the codes described in the topic Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476530 - HRESULT ID3D11Device::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) - ID3D11Device::GetPrivateData -
- - -

Set data to a device and associate that data with a guid.

-
-

Guid associated with the data.

-

Size of the data.

-

Pointer to the data to be stored with this device. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

The data stored in the device with this method can be retrieved with .

The data and guid set with this method will typically be application-defined.

The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

 static const char c_szName[] = "My name";	
-            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
-            

Windows?Phone?8: This API is supported.

-
- - ff476533 - HRESULT ID3D11Device::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) - ID3D11Device::SetPrivateData -
- - -

Associate an -derived interface with this device child and associate that interface with an application-defined guid.

-
-

Guid associated with the interface.

-

Pointer to an -derived interface to be associated with the device child.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476534 - HRESULT ID3D11Device::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) - ID3D11Device::SetPrivateDataInterface -
- - -

Gets the feature level of the hardware device.

-
-

A member of the enumerated type that describes the feature level of the hardware device.

- -

Feature levels determine the capabilities of your device.

Windows?Phone?8: This API is supported.

-
- - ff476528 - D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel() - ID3D11Device::GetFeatureLevel -
- - -

Get the flags used during the call to create the device with .

-
-

A bitfield containing the flags used to create the device. See .

- -

Windows?Phone?8: This API is supported.

-
- - ff476525 - unsigned int ID3D11Device::GetCreationFlags() - ID3D11Device::GetCreationFlags -
- - -

Get the reason why the device was removed.

-
-

Possible return values include:

For more detail on these return codes, see DXGI_ERROR.

- -

Windows?Phone?8: This API is supported.

-
- - ff476526 - HRESULT ID3D11Device::GetDeviceRemovedReason() - ID3D11Device::GetDeviceRemovedReason -
- - -

Gets an immediate context, which can play back command lists.

-
-

Upon completion of the method, the passed reference to an interface reference is initialized.

- -

The GetImmediateContext method returns an object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

The GetImmediateContext method increments the reference count of the immediate context by one. Therefore, you must call Release on the returned interface reference when you are done with it to avoid a memory leak.

Windows?Phone?8: This API is supported.

-
- - ff476529 - void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext) - ID3D11Device::GetImmediateContext -
- - -

Get the exception-mode flags.

-
-

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D11_RAISE_FLAG. A default value of 0 means there are no flags.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Set an exception-mode flag to elevate an error condition to a non-continuable exception.

Whenever an error occurs, a Direct3D device enters the DEVICEREMOVED state and if the appropriate exception flag has been set, an exception is raised. A raised exception is designed to terminate an application. Before termination, the last chance an application has to persist data is by using an UnhandledExceptionFilter (see Structured Exception Handling). In general, UnhandledExceptionFilters are leveraged to try to persist data when an application is crashing (to disk, for example). Any code that executes during an UnhandledExceptionFilter is not guaranteed to reliably execute (due to possible process corruption). Any data that the UnhandledExceptionFilter manages to persist, before the UnhandledExceptionFilter crashes again, should be treated as suspect, and therefore inspected by a new, non-corrupted process to see if it is usable.

Windows?Phone?8: This API is supported.

-
- - ff476532 - HRESULT ID3D11Device::SetExceptionMode([In] unsigned int RaiseFlags) - ID3D11Device::SetExceptionMode -
- - -

Get the exception-mode flags.

-
-

A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D11_RAISE_FLAG. A default value of 0 means there are no flags.

- -

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

Windows?Phone?8: This API is supported.

-
- - ff476527 - unsigned int ID3D11Device::GetExceptionMode() - ID3D11Device::GetExceptionMode -
- - - Gets a value indicating whether the current device is using the reference rasterizer. - - - - - Gets or sets the debug-name for this object. - - - The debug name. - - - - -

Gets the feature level of the hardware device.

-
- -

Feature levels determine the capabilities of your device.

Windows?Phone?8: This API is supported.

-
- - ff476528 - GetFeatureLevel - GetFeatureLevel - D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel() -
- - -

Get the flags used during the call to create the device with .

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476525 - GetCreationFlags - GetCreationFlags - unsigned int ID3D11Device::GetCreationFlags() -
- - -

Get the reason why the device was removed.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476526 - GetDeviceRemovedReason - GetDeviceRemovedReason - HRESULT ID3D11Device::GetDeviceRemovedReason() -
- - -

Gets an immediate context, which can play back command lists.

-
- -

The GetImmediateContext method returns an object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

The GetImmediateContext method increments the reference count of the immediate context by one. Therefore, you must call Release on the returned interface reference when you are done with it to avoid a memory leak.

Windows?Phone?8: This API is supported.

-
- - ff476529 - GetImmediateContext - GetImmediateContext - void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext) -
- - -

Get or sets the exception-mode flags.

-
- -

An exception-mode flag is used to elevate an error condition to a non-continuable exception.

Windows?Phone?8: This API is supported.

-
- - ff476527 - GetExceptionMode / SetExceptionMode - GetExceptionMode - unsigned int ID3D11Device::GetExceptionMode() -
- - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - -

Set the target output buffers for the stream-output stage of the pipeline.

-
-

The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to null. See Remarks.

-

The array of output buffers (see ) to bind to the device. The buffers must have been created with the flag.

-

Array of offsets to the output buffers from ppSOTargets, one offset for each buffer. The offset values must be in bytes.

- -

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

-
- ff476484 - void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) - ID3D11DeviceContext::SOSetTargets -
- - - Sets the stream output targets bound to the StreamOutput stage. - - The buffer to bind on the first stream output slot. - An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. - ff476484 - void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) - ID3D11DeviceContext::SOSetTargets - - - - Set the target output {{buffers}} for the {{StreamOutput}} stage, which enables/disables the pipeline to stream-out data. - - - Call ID3D10Device::SOSetTargets (before any draw calls) to stream data out; call SOSetTargets with NULL to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output render targets before calling draw methods in the RenderInstanceToStream function. An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. Calling this method using a buffer that is currently bound for writing will effectively bind NULL instead because a buffer cannot be bound as both an input and an output at the same time. The {{DeviceDebug Layer}} will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime. The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device. - - an array of output buffers (see ) to bind to the device. The buffers must have been created with the flag. - void SOSetTargets([In] int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const int* pOffsets) - ff476484 - void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) - ID3D11DeviceContext::SOSetTargets - - - - Get the target output {{buffers}} for the {{StreamOutput}} stage of the pipeline. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Number of buffers to get. A maximum of four output buffers can be retrieved. - an array of output buffers (see ) to bind to the device. - void SOGetTargets([In] int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] int* pOffsets) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the target output buffers for the stream-output stage of the pipeline.

-
-

The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to null. See Remarks.

-

The array of output buffers (see ) to bind to the device. The buffers must have been created with the flag.

-

Array of offsets to the output buffers from ppSOTargets, one offset for each buffer. The offset values must be in bytes.

- -

An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476484 - void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppSOTargets,[In, Buffer, Optional] const void* pOffsets) - ID3D11DeviceContext::SOSetTargets -
- - -

Get the target output buffers for the stream-output stage of the pipeline.

-
-

Number of buffers to get.

-

An array of output buffers (see ) to be retrieved from the device.

- -

A maximum of four output buffers can be retrieved.

The offsets to the output buffers pointed to in the returned ppSOTargets array may be assumed to be -1 (append), as defined for use in .

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476483 - void ID3D11DeviceContext::SOGetTargets([In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppSOTargets) - ID3D11DeviceContext::SOGetTargets -
- - - Common Shader class. Provides a common set of methods for a Shader Stage. - TODO: check if usage of abstract is not introducing an unacceptable overhead... - - Type of the shader - - Functions - - - - - Constant SamplerRegisterComponents. - D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS - - - Constant SamplerRegisterCount. - D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT - - - Constant ConstantBufferComponentBitCount. - D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT - - - Constant TextureCoordRangeReductionMinimum. - D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN - - - Constant InputResourceSlotCount. - D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - - - Constant TempRegisterComponents. - D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS - - - Constant ImmediateValueComponentBitCount. - D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT - - - Constant ImmediateConstantBufferRegisterCount. - D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT - - - Constant TextureElOffsetMaximumPositive. - D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE - - - Constant ConstantBufferComponents. - D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS - - - Constant TempRegisterReadsPerInst. - D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST - - - Constant SubRoutineNestingLimit. - D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT - - - Constant ImmediateConstantBufferRegisterReadPorts. - D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS - - - Constant ConstantBufferApiSlotCount. - D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - - - Constant InputResourceRegisterReadPorts. - D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS - - - Constant ImmediateConstantBufferRegisterReadsPerInst. - D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST - - - Constant InputResourceRegisterCount. - D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT - - - Constant InputResourceRegisterReadsPerInst. - D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST - - - Constant ConstantBufferRegisterReadPorts. - D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS - - - Constant FlowcontrolNestingLimit. - D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT - - - Constant SamplerRegisterReadsPerInst. - D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST - - - Constant TempRegisterComponentBitCount. - D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT - - - Constant SamplerRegisterReadPorts. - D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS - - - Constant TextureElOffsetMaximumNegative. - D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE - - - Constant TextureCoordRangeReductionMaximum. - D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX - - - Constant TempRegisterCount. - D3D11_COMMONSHADER_TEMP_REGISTER_COUNT - - - Constant ConstantBufferRegisterCount. - D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT - - - Constant ImmediateConstantBufferRegisterComponents. - D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS - - - Constant InputResourceRegisterComponents. - D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS - - - Constant TempRegisterReadPorts. - D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS - - - Constant ConstantBufferRegisterComponents. - D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS - - - Constant ConstantBufferHwSlotCount. - D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT - - - Constant SamplerSlotCount. - D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - - - Constant ConstantBufferRegisterReadsPerInst. - D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST - - - - Initializes a new instance of the class. - - The pointer. - - - - Gets the constant buffers used by the shader stage. - - Index into the device's zero-based array from which to begin retrieving constant buffers. - Number of buffers to retrieve. - An array of constant buffers. - - - - Gets the sampler states used by the shader stage. - - Index into the device's zero-based array from which to begin retrieving samplers. - Number of samplers to retrieve. - An array of sampler states. - - - - Gets the shader resources used by the shader stage. - - Index into the device's zero-based array from which to begin retrieving shader resources. - Number of resources to retrieve. - An array of shader resources. - - - - Sets a single constant buffer to be used by the shader stage. - - Index into the device's zero-based array to which to set the constant buffer. - constant buffer to set - - - - Sets an array of constant buffers to be used by the shader stage. - - Index into the device's zero-based array to which to set the array of constant buffers. - An array of constant buffer to set - - - - Sets an array of constant buffers to be used by the shader stage. - - Index into the device's zero-based array to which to set the array of constant buffers. - An array of constant buffer to set - - - - Sets a single sampler to be used by the shader stage. - - Index into the device's zero-based array to which to set the sampler. - sampler state to set - - - - Sets an array of samplers to be used by the shader stage. - - Index into the device's zero-based array to which to set the array of sampler states. - An array of sampler state to set - - - - Sets an array of samplers to be used by the shader stage. - - Index into the device's zero-based array to which to set the array of sampler states. - An array of sampler state to set - - - - Sets a single shader resource to be used by the shader stage. - - Index into the device's zero-based array to which to set the resource. - Resource view to attach - - - - Bind an array of shader resources to the shader stage. - - - If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - Array of {{shader resource view}} interfaces to set to the device. - - - - Bind an array of shader resources to the shader stage. - - - If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - Array of {{shader resource view}} interfaces to set to the device. - - - - Get the shader resources. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). - Array of {{shader resource view}} interfaces to be returned by the device. - void PSGetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) - - - - Get an array of sampler states from the shader pipeline stage. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index into a zero-based array to begin getting samplers from (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). - Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). - Array of sampler-state interface pointers (see ) to be returned by the device. - void PSGetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) - - - - Get the constant buffers used by the shader pipeline stage. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). - Number of buffers to retrieve (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). - Array of constant buffer interface pointers (see ) to be returned by the method. - void PSGetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) - - - - Bind an array of shader resources to the shader stage. - - - If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). - Array of {{shader resource view}} interfaces to set to the device. - void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) - - - - Bind an array of shader resources to the shader stage. - - - If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). - Array of {{shader resource view}} interfaces to set to the device. - void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) - - - - Bind an array of shader resources to the shader stage. - - - If an overlapping resource view is already bound to an output slot, such as a render target, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). - Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). - Array of {{shader resource view}} interfaces to set to the device. - void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) - - - - Set an array of sampler states to the shader pipeline stage. - - - Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). - Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). - Pointer to an array of sampler-state interfaces (see ). See Remarks. - void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers) - - - - Set an array of sampler states to the shader pipeline stage. - - - Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). - Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). - Pointer to an array of sampler-state interfaces (see ). See Remarks. - void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers) - - - - Set the constant buffers used by the shader pipeline stage. - - - The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). - Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). - Array of constant buffers (see ) being given to the device. - void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers) - - - - Set the constant buffers used by the shader pipeline stage. - - - The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). - Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). - Array of constant buffers (see ) being given to the device. - void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers) - - - - Common Shader class. Provides a common set of methods for a Shader Stage. - TODO: check if usage of abstract is not introducing an unacceptable overhead... - - Type of the shader - - - - Initializes a new instance of the class. - - The pointer. - - - - Gets the shader currently assigned to the device. - - The shader (null if no shader is assigned). - - - - Gets the shader currently assigned to the device. - - An array that will be used to contain any class instances currently active. - The shader (null if no shader is assigned). - - - - Assigns a compute shader to the device. - - The shader to assign to the device. Assign null to disable the compute shader. - - - - Assigns a compute shader to the device. - - The shader to assign to the device. Assign null to disable the compute shader. - An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled. - - - - Assigns a compute shader to the device. - - The shader to assign to the device. Assign null to disable the compute shader. - An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled. - - - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - Constant UnorderedAccessViewSlotCount. - D3D11_PS_CS_UAV_REGISTER_COUNT - - - Constant DispatchMaximumThreadGroupsPerDimension. - D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION - - - Constant ThreadLocalTempRegisterPool. - D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL - - - Constant ThreadGroupSharedMemoryRegisterCount. - D3D11_CS_TGSM_REGISTER_COUNT - - - Constant ThreadGroupMaximumY. - D3D11_CS_THREAD_GROUP_MAX_Y - - - Constant ThreadGroupSharedMemoryResourceRegisterReadPorts. - D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS - - - Constant ThreadGroupMinimumY. - D3D11_CS_THREAD_GROUP_MIN_Y - - - Constant ThreadGroupSharedMemoryRegisterReadsPerInst. - D3D11_CS_TGSM_REGISTER_READS_PER_INST - - - Constant ThreadGroupMaximumZ. - D3D11_CS_THREAD_GROUP_MAX_Z - - - Constant ThreadGroupMinimumX. - D3D11_CS_THREAD_GROUP_MIN_X - - - Constant ThreadGroupSharedMemoryResourceRegisterComponents. - D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS - - - Constant ThreadGroupMaximumX. - D3D11_CS_THREAD_GROUP_MAX_X - - - Constant ThreadGroupMaximumThreadsPerGroup. - D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP - - - Constant ThreadGroupMinimumZ. - D3D11_CS_THREAD_GROUP_MIN_Z - - - - Gets an array of views for an unordered resource. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). - Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). - void CSGetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[Out, Buffer] ID3D11UnorderedAccessView** ppUnorderedAccessViews) - - - - Sets an array of views for an unordered resource. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an references to be set by the method. - void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) - - - - Sets an array of views for an unordered resource. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an references to be set by the method. - An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. uAVInitialCount is only relevant for UAVs which have the flag, otherwise the argument is ignored. - void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) - - - - Sets an array of views for an unordered resource. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an array of references to be set by the method. - void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) - - - - Sets an array of views for an unordered resource. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an array of references to be set by the method. - An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. pUAVInitialCounts is only relevant for UAVs which have the flag, otherwise the argument is ignored. - void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind an array of shader resources to the compute-shader stage.

-
-

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

-

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to set to the device.

- -

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. -

Windows?Phone?8: This API is supported.

-
- - ff476403 - void ID3D11DeviceContext::CSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) - ID3D11DeviceContext::CSSetShaderResources -
- - -

Sets an array of views for an unordered resource.

-
-

Index of the first element in the zero-based array to begin setting (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - 1). D3D11_1_UAV_SLOT_COUNT is defined as 64.

-

Number of views to set (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - StartSlot).

-

A reference to an array of references to be set by the method.

-

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is only relevant for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

- -

Windows?Phone?8: This API is supported.

-
- - ff476404 - void ID3D11DeviceContext::CSSetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[In, Buffer] const void** ppUnorderedAccessViews,[In, Buffer] const void* pUAVInitialCounts) - ID3D11DeviceContext::CSSetUnorderedAccessViews -
- - -

Set a compute shader to the device.

-
-

Pointer to a compute shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476402 - void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::CSSetShader -
- - -

Set a compute shader to the device.

-
-

Pointer to a compute shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476402 - void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::CSSetShader -
- - -

Set an array of sampler states to the compute-shader stage.

-
-

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

-

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ). See Remarks.

- -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476401 - void ID3D11DeviceContext::CSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) - ID3D11DeviceContext::CSSetSamplers -
- - -

Sets the constant buffers used by the compute-shader stage.

-
-

Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

-

Number of buffers to set (ranges from 0 to - StartSlot).

-

Array of constant buffers (see ) being given to the device.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the CSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

-
- - ff476400 - void ID3D11DeviceContext::CSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) - ID3D11DeviceContext::CSSetConstantBuffers -
- - -

Get the compute-shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476398 - void ID3D11DeviceContext::CSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) - ID3D11DeviceContext::CSGetShaderResources -
- - -

Gets an array of views for an unordered resource.

-
-

Index of the first element in the zero-based array to return (ranges from 0 to - 1).

-

Number of views to get (ranges from 0 to - StartSlot).

-

A reference to an array of interface references (see ) to get.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476399 - void ID3D11DeviceContext::CSGetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[Out, Buffer] ID3D11UnorderedAccessView** ppUnorderedAccessViews) - ID3D11DeviceContext::CSGetUnorderedAccessViews -
- - -

Get the compute shader currently set on the device.

-
-

Address of a reference to a Compute shader (see ) to be returned by the method.

-

Pointer to an array of class instance interfaces (see ).

-

The number of class-instance elements in the array.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476397 - void ID3D11DeviceContext::CSGetShader([Out] ID3D11ComputeShader** ppComputeShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) - ID3D11DeviceContext::CSGetShader -
- - -

Get an array of sampler state interfaces from the compute-shader stage.

-
-

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

-

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ).

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476396 - void ID3D11DeviceContext::CSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) - ID3D11DeviceContext::CSGetSamplers -
- - -

Get the constant buffers used by the compute-shader stage.

-
-

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

-

Number of buffers to retrieve (ranges from 0 to - StartSlot).

-

Array of constant buffer interface references (see ) to be returned by the method.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476395 - void ID3D11DeviceContext::CSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) - ID3D11DeviceContext::CSGetConstantBuffers -
- - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - - Constructs a new deferred context . - - The device with which to associate the state object. - The newly created object. - - - - Create a command list and record graphics commands into it. - - A flag indicating whether the immediate context state is saved (prior) and restored (after) the execution of a command list. - The created command list containing the queued rendering commands. - - - - Determines whether asynchronous query data is available. - - The data. - - true if asynchronous query data is available; otherwise, false. - - HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) - - - - Determines whether asynchronous query data is available. - - The data. - Optional flags - - true if asynchronous query data is available; otherwise, false. - - HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) - - - - Gets data from the GPU asynchronously. - - The asynchronous data provider. - The data retrieved from the GPU. - - - - Gets data from the GPU asynchronously. - - The asynchronous data provider. - The data retrieved from the GPU. - - - - Gets data from the GPU asynchronously. - - - The asynchronous data provider. - The data retrieved from the GPU. - - True if result contains valid data, false otherwise. - - - - - Gets data from the GPU asynchronously. - - The asynchronous data provider. - Flags specifying how the command should operate. - The data retrieved from the GPU. - - - - Gets data from the GPU asynchronously. - - The asynchronous data provider. - Flags specifying how the command should operate. - The data retrieved from the GPU. - - - - Gets data from the GPU asynchronously. - - - The asynchronous data provider. - Flags specifying how the command should operate. - The data retrieved from the GPU. - - True if result contains valid data, false otherwise. - - - - - Copy the entire contents of the source resource to the destination resource using the GPU. - - - This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources: Must be different resources. Must be the same type. Must have identical dimensions (including width, height, depth, and size as appropriate). Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions. Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. Might not be currently mapped. You cannot use an {{Immutable}} resource as a destination. You can use a {{depth-stencil}} resource as either a source or a destination. Resources created with multisampling capability (see ) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled the call to ID3D11DeviceContext::CopyResource fails. The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. An application that only needs to copy a portion of the data in a resource should use instead. - - A reference to the source resource (see ). - A reference to the destination resource (see ). - void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) - ff476392 - void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) - ID3D11DeviceContext::CopyResource - - - - Copy a region from a source resource to a destination resource. - - - The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D11CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources: Must be different subresources (although they can be from the same resource). Must be the same type. Must have compatible DXGI formats (identical or from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently mapped. CopySubresourceRegion only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use instead. CopySubresourceRegion is an asynchronous call which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details. Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a region (10,20),(90,140) in a destination texture. - D3D11_BOX sourceRegion; - sourceRegion.left = 120; - sourceRegion.right = 200; - sourceRegion.top = 100; - sourceRegion.bottom = 220; - sourceRegion.front = 0; - sourceRegion.back = 1; pd3dDeviceContext->CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &sourceRegion ); - - Notice, that for a 2D texture, front and back are set to 0 and 1 respectively. - - A reference to the source resource (see ). - Source subresource index. - A reference to a 3D box (see ) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. - A reference to the destination resource (see ). - Destination subresource index. - The x-coordinate of the upper left corner of the destination region. - The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero. - The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. - ff476394 - void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox) - ID3D11DeviceContext::CopySubresourceRegion - - - - Copy a multisampled resource into a non-multisampled resource. - - - This API is most useful when re-using the resulting render target of one render pass as an input to a second render pass. The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this: ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and destination must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT could be specified in the Format parameter). For example, given the DXGI_FORMAT_R16G16B16A16_TYPELESS format: The source (or dest) format could be DXGI_FORMAT_R16G16B16A16_UNORM The dest (or source) format could be DXGI_FORMAT_R16G16B16A16_FLOAT ? - - Source resource. Must be multisampled. - >The source subresource of the source resource. - Destination resource. Must be a created with the flag and be single-sampled. See . - A zero-based index, that identifies the destination subresource. Use {{D3D11CalcSubresource}} to calculate the index. - A that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks. - void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format) - - - - Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. - - The resource. - The mip slice. - The array slice. - The mode. - The flags. - The output stream containing the pointer. - - The locked - - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - - - - Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. - - The resource. - The mip slice. - The array slice. - The mode. - The flags. - The output stream containing the pointer. - - The locked - - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - - - - Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. - - The resource. - The mip slice. - The array slice. - The mode. - The flags. - The output stream containing the pointer. - - The locked - - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - - - - Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. - - The resource. - The mode. - The flags. - The output stream containing the pointer. - - The locked - - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - - - - Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. - - The resource. - The mip slice. - The array slice. - The mode. - The flags. - Size of the selected miplevel. - - The locked - - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - - - - Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. - - The resource. - The subresource. - The mode. - The flags. - The output stream containing the pointer. - The locked - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - - - -

Gets a reference to the data contained in a subresource, and denies the GPU access to that subresource.

-
-

A reference to a interface.

-

Index number of the subresource.

-

Specifies the CPU's read and write permissions for a resource. For possible values, see .

-

Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

-

A reference to the mapped subresource (see ).

- The mapped subresource (see ). If is used and the resource is still being used by the GPU, this method return an empty DataBox whose property returns true.

This method also throws an exception with the code if MapType allows any CPU read access and the video card has been removed.

For more information about these error codes, see DXGI_ERROR.

- -

If you call Map on a deferred context, you can only pass , , or both to the MapType parameter. Other -typed values are not supported for a deferred context.

The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can map shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers.

- If is used and the resource is still being used by the GPU, this method return an empty DataBox whose property returns true. -
- ff476457 - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - ID3D11DeviceContext::Map -
- - - Copies data from the CPU to to a non-mappable subresource region. - - Type of the data to upload - A reference to the data to upload. - The destination resource. - The destination subresource. - The row pitch. - The depth pitch. - The region - - This method is implementing the
workaround for deferred context. - - ff476486 - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - ID3D11DeviceContext::UpdateSubresource - - - - Copies data from the CPU to to a non-mappable subresource region. - - Type of the data to upload - A reference to the data to upload. - The destination resource. - The destination subresource. - The row pitch. - The depth pitch. - A region that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. - ff476486 - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - ID3D11DeviceContext::UpdateSubresource - This method is implementing the workaround for deferred context. - - - - Copies data from the CPU to to a non-mappable subresource region. - - The source data. - The destination resource. - The destination subresource. - - This method is implementing the workaround for deferred context. - - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - - - - Copies data from the CPU to to a non-mappable subresource region. - - The source data. - The destination resource. - The destination subresource. - The destination region within the resource. - - This method is implementing the workaround for deferred context. - - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - - - - Copies data from the CPU to to a non-mappable subresource region. - - Type of the data to upload - A reference to the data to upload. - The destination resource. - The size in bytes per pixel/block element. - The destination subresource. - The row pitch. - The depth pitch. - if set to true the resource is a block/compressed resource - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - - This method is implementing the workaround for deferred context. - - - - - Copies data from the CPU to to a non-mappable subresource region. - - Type of the data to upload - A reference to the data to upload. - The destination resource. - The size in bytes per pixel/block element. - The destination subresource. - The row pitch. - The depth pitch. - if set to true the resource is a block/compressed resource - - This method is implementing the workaround for deferred context. - - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - - - - Copies data from the CPU to to a non-mappable subresource region. - - The source data. - The destination resource. - The size in bytes per pixel/block element. - The destination subresource. - if set to true the resource is a block/compressed resource - - This method is implementing the workaround for deferred context. - - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - - - - Copies data from the CPU to to a non-mappable subresource region. - - The source data. - The destination resource. - The size in bytes per pixel/block element. - The destination subresource. - The destination region within the resource. - if set to true the resource is a block/compressed resource - - This method is implementing the workaround for deferred context. - - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - - - - Updates the subresource safe method. - - The DST resource ref. - The DST subresource. - The DST box ref. - The p SRC data. - The SRC row pitch. - The SRC depth pitch. - The size in bytes per pixel/block element. - if set to true the resource is a block/compressed resource - - - This method is implementing the workaround for deferred context. - - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - Update nested inner interfaces pointer - - - -

Draw indexed, non-instanced primitives.

-
-

Number of indices to draw.

-

The location of the first index read by the GPU from the index buffer.

-

A value added to each index before reading a vertex from the vertex buffer.

- -

A draw API submits work to the rendering pipeline.

If the sum of both indices is negative, the result of the function call is undefined.

Windows?Phone?8: This API is supported.

-
- - ff476409 - void ID3D11DeviceContext::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation) - ID3D11DeviceContext::DrawIndexed -
- - -

Draw non-indexed, non-instanced primitives.

-
-

Number of vertices to draw.

-

Index of the first vertex, which is usually an offset in a vertex buffer.

- -

Draw submits work to the rendering pipeline.

The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline.

Even without any vertex buffer bound to the pipeline, you can generate your own vertex data in your vertex shader by using the SV_VertexID system-value semantic to determine the current vertex that the runtime is processing.

Windows?Phone?8: This API is supported.

-
- - ff476407 - void ID3D11DeviceContext::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation) - ID3D11DeviceContext::Draw -
- - -

Gets a reference to the data contained in a subresource, and denies the GPU access to that subresource.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

This method returns one of the Direct3D 11 Return Codes.

This method also returns if MapFlags specifies and the GPU is not yet finished with the resource.

This method also returns if MapType allows any CPU read access and the video card has been removed.

For more information about these error codes, see DXGI_ERROR.

- -

If you call Map on a deferred context, you can only pass , , or both to the MapType parameter. Other -typed values are not supported for a deferred context.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

For info about how to use Map, see How to: Use dynamic resources.

-
- - ff476457 - HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) - ID3D11DeviceContext::Map -
- - -

Invalidate the reference to a resource and reenable the GPU's access to that resource.

-
-

A reference to a interface.

-

A subresource to be unmapped.

- -

For info about how to use Unmap, see How to: Use dynamic resources.

Windows?Phone?8: This API is supported.

-
- - ff476485 - void ID3D11DeviceContext::Unmap([In] ID3D11Resource* pResource,[In] unsigned int Subresource) - ID3D11DeviceContext::Unmap -
- - -

Draw indexed, instanced primitives.

-
-

Number of indices read from the index buffer for each instance.

-

Number of instances to draw.

-

The location of the first index read by the GPU from the index buffer.

-

A value added to each index before reading a vertex from the vertex buffer.

-

A value added to each index before reading per-instance data from a vertex buffer.

- -

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Instancing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data.

Windows?Phone?8: This API is supported.

-
- - ff476410 - void ID3D11DeviceContext::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation) - ID3D11DeviceContext::DrawIndexedInstanced -
- - -

Draw non-indexed, instanced primitives.

-
-

Number of vertices to draw.

-

Number of instances to draw.

-

Index of the first vertex.

-

A value added to each index before reading per-instance data from a vertex buffer.

- -

A draw API submits work to the rendering pipeline.

Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors.

The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).

Windows?Phone?8: This API is supported.

-
- - ff476412 - void ID3D11DeviceContext::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation) - ID3D11DeviceContext::DrawInstanced -
- - -

Mark the beginning of a series of commands.

-
-

A reference to an interface.

- -

Use to mark the ending of the series of commands.

Windows?Phone?8: This API is supported.

-
- - ff476386 - void ID3D11DeviceContext::Begin([In] ID3D11Asynchronous* pAsync) - ID3D11DeviceContext::Begin -
- - -

Mark the end of a series of commands.

-
-

A reference to an interface.

- -

Use to mark the beginning of the series of commands.

Windows?Phone?8: This API is supported.

-
- - ff476422 - void ID3D11DeviceContext::End([In] ID3D11Asynchronous* pAsync) - ID3D11DeviceContext::End -
- - -

Get data from the graphics processing unit (GPU) asynchronously.

-
-

A reference to an interface for the object about which GetData retrieves data.

-

Address of memory that will receive the data. If null, GetData will be used only to check status. The type of data output depends on the type of asynchronous interface.

-

Size of the data to retrieve or 0. Must be 0 when pData is null.

-

Optional flags. Can be 0 or any combination of the flags enumerated by .

-

This method returns one of the Direct3D 11 Return Codes. A return value of indicates that the data at pData is available for the calling application to access. A return value of S_FALSE indicates that the data is not yet available. If the data is not yet available, the application must call GetData until the data is available.

- -

Queries in a deferred context are limited to predicated drawing. That is, you cannot call on a deferred context to get data about a query; you can only call GetData on the immediate context to get data about a query. For predicated drawing, the results of a predication-type query are used by the GPU and not returned to an application. For more information about predication and predicated drawing, see D3D11DeviceContext::SetPredication.

GetData retrieves the data that the runtime collected between calls to and . Certain queries only require a call to in which case the data returned by GetData is accurate up to the last call to . For information about the queries that only require a call to and about the type of data that GetData retrieves for each query, see .

If DataSize is 0, GetData is only used to check status.

An application gathers counter data by calling , issuing some graphics commands, calling , and then calling to get data about what happened in between the Begin and End calls. For information about performance counter types, see .

Windows?Phone?8: This API is supported.

-
- - ff476428 - HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) - ID3D11DeviceContext::GetData -
- - -

Set a rendering predicate.

-
-

A reference to the interface that represents the rendering predicate. A null value indicates "no" predication; in this case, the value of PredicateValue is irrelevant but will be preserved for .

-

If TRUE, rendering will be affected by when the predicate's conditions are met. If , rendering will be affected when the conditions are not met.

- -

The predicate must be in the "issued" or "signaled" state to be used for predication. While the predicate is set for predication, calls to and are invalid.

Use this method to denote that subsequent rendering and resource manipulation commands are not actually performed if the resulting predicate data of the predicate is equal to the PredicateValue. However, some predicates are only hints, so they may not actually prevent operations from being performed.

The primary usefulness of predication is to allow an application to issue rendering and resource manipulation commands without taking the performance hit of spinning, waiting for to return. So, predication can occur while returns S_FALSE. Another way to think of it: an application can also use predication as a fallback, if it is possible that returns S_FALSE. If returns , the application can skip calling the rendering and resource manipulation commands manually with it's own application logic.

Rendering and resource manipulation commands for Direct3D?11 include these Draw, Dispatch, Copy, Update, Clear, Generate, and Resolve operations.

  • Draw
  • DrawAuto
  • DrawIndexed
  • DrawIndexedInstanced
  • DrawIndexedInstancedIndirect
  • DrawInstanced
  • DrawInstancedIndirect
  • Dispatch
  • DispatchIndirect
  • CopyResource
  • CopyStructureCount
  • CopySubresourceRegion
  • CopySubresourceRegion1
  • CopyTiles
  • CopyTileMappings
  • UpdateSubresource
  • UpdateSubresource1
  • UpdateTiles
  • UpdateTileMappings
  • ClearRenderTargetView
  • ClearUnorderedAccessViewFloat
  • ClearUnorderedAccessViewUint
  • ClearView
  • GenerateMips
  • ResolveSubresource

You can set a rendering predicate on an immediate or a deferred context. For info about immediate and deferred contexts, see Immediate and Deferred Rendering.

Windows?Phone?8: This API is supported.

-
- - ff476481 - void ID3D11DeviceContext::SetPredication([In, Optional] ID3D11Predicate* pPredicate,[In] BOOL PredicateValue) - ID3D11DeviceContext::SetPredication -
- - -

Draw geometry of an unknown size.

-
- -

A draw API submits work to the rendering pipeline. This API submits work of an unknown size that was processed by the input assembler, vertex shader, and stream-output stages; the work may or may not have gone through the geometry-shader stage.

After data has been streamed out to stream-output stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.

The following diagram shows the DrawAuto process.

Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.

DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, and .

This API does not support indexing or instancing.

If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using .

Windows?Phone?8: This API is supported.

-
- - ff476408 - void ID3D11DeviceContext::DrawAuto() - ID3D11DeviceContext::DrawAuto -
- - -

Draw indexed, instanced, GPU-generated primitives.

-
-

A reference to an , which is a buffer containing the GPU generated primitives.

-

Offset in pBufferForArgs to the start of the GPU generated primitives.

- -

When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

Windows?Phone?8: This API is supported.

-
- - ff476411 - void ID3D11DeviceContext::DrawIndexedInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) - ID3D11DeviceContext::DrawIndexedInstancedIndirect -
- - -

Draw instanced, GPU-generated primitives.

-
-

A reference to an , which is a buffer containing the GPU generated primitives.

-

Offset in pBufferForArgs to the start of the GPU generated primitives.

- -

When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

Windows?Phone?8: This API is supported.

-
- - ff476413 - void ID3D11DeviceContext::DrawInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) - ID3D11DeviceContext::DrawInstancedIndirect -
- - -

Execute a command list from a thread group.

-
-

The number of groups dispatched in the x direction. ThreadGroupCountX must be less than or equal to (65535).

-

The number of groups dispatched in the y direction. ThreadGroupCountY must be less than or equal to (65535).

-

The number of groups dispatched in the z direction. ThreadGroupCountZ must be less than or equal to (65535). In feature level 10 the value for ThreadGroupCountZ must be 1.

- -

You call the Dispatch method to execute commands in a compute shader. A compute shader can be run on many threads in parallel, within a thread group. Index a particular thread, within a thread group using a 3D vector given by (x,y,z).

In the following illustration, assume a thread group with 50 threads where the size of the group is given by (5,5,2). A single thread is identified from a thread group with 50 threads in it, using the vector (4,1,1).

The following illustration shows the relationship between the parameters passed to , Dispatch(5,3,2), the values specified in the numthreads attribute, numthreads(10,8,3), and values that will passed to the compute shader for the thread-related system values - (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).

Windows?Phone?8: This API is supported.

-
- - ff476405 - void ID3D11DeviceContext::Dispatch([In] unsigned int ThreadGroupCountX,[In] unsigned int ThreadGroupCountY,[In] unsigned int ThreadGroupCountZ) - ID3D11DeviceContext::Dispatch -
- - -

Execute a command list over one or more thread groups.

-
-

A reference to an , which must be loaded with data that matches the argument list for .

-

A byte-aligned offset between the start of the buffer and the arguments.

- -

You call the DispatchIndirect method to execute commands in a compute shader.

When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

Windows?Phone?8: This API is supported.

-
- - ff476406 - void ID3D11DeviceContext::DispatchIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) - ID3D11DeviceContext::DispatchIndirect -
- - -

Copy a region from a source resource to a destination resource.

-
-

A reference to the destination resource (see ).

-

Destination subresource index.

-

The x-coordinate of the upper left corner of the destination region.

-

The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero.

-

The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero.

-

A reference to the source resource (see ).

-

Source subresource index.

-

A reference to a 3D box (see ) that defines the source subresource that can be copied. If null, the entire source subresource is copied. The box must fit within the source resource.

An empty box results in a no-op. A box is empty if the top value is greater than or equal to the bottom value, or the left value is greater than or equal to the right value, or the front value is greater than or equal to the back value. When the box is empty, CopySubresourceRegion doesn't perform a copy operation.

- -

The source box must be within the size of the source resource. The destination offsets, (x, y, and z), allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If you try and copy outside the destination resource or specify a source box that is larger than the source resource, the behavior of CopySubresourceRegion is undefined. If you created a device that supports the debug layer, the debug output reports an error on this invalid CopySubresourceRegion call. Invalid parameters to CopySubresourceRegion cause undefined behavior and might result in incorrect rendering, clipping, no copy, or even the removal of the rendering device.

If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. D3D11CalcSubresource is a helper function for calculating subresource indexes.

CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources:

  • Must be different subresources (although they can be from the same resource).
  • Must be the same type.
  • Must have compatible DXGI formats (identical or from the same type group). For example, a texture can be copied to an texture since both of these formats are in the group. CopySubresourceRegion can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • May not be currently mapped.

CopySubresourceRegion only supports copy; it does not support any stretch, color key, or blend. CopySubresourceRegion can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

If your app needs to copy an entire resource, we recommend to use instead.

CopySubresourceRegion is an asynchronous call, which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. For more information about pipeline stalls, see performance considerations.

Note??Applies only to feature level 9_x hardware If you use or CopySubresourceRegion to copy from a staging resource to a default resource, you can corrupt the destination contents. This occurs if you pass a null source box and if the source resource has different dimensions from those of the destination resource or if you use destination offsets, (x, y, and z). In this situation, always pass a source box that is the full size of the source resource.

Note??Applies only to feature level 9_x hardware You can't use CopySubresourceRegion to copy mipmapped volume textures.

Note??Applies only to feature levels 9_x Subresources created with the flag can only be used as a source for CopySubresourceRegion.

Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and null to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values.

-
- - ff476394 - void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox) - ID3D11DeviceContext::CopySubresourceRegion -
- - -

Copy the entire contents of the source resource to the destination resource using the GPU.

-
-

A reference to the interface that represents the destination resource.

-

A reference to the interface that represents the source resource.

- -

This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:

  • Must be different resources.
  • Must be the same type.
  • Must have identical dimensions (including width, height, depth, and size as appropriate).
  • Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a texture can be copied to an texture since both of these formats are in the group. CopyResource can copy between a few format types. For more info, see Format Conversion using Direct3D 10.1.
  • Can't be currently mapped.

CopyResource only supports copy; it doesn't support any stretch, color key, or blend. CopyResource can reinterpret the resource data between a few format types. For more info, see Format Conversion using Direct3D 10.1.

You can't use an Immutable resource as a destination. You can use a depth-stencil resource as either a source or a destination provided that the feature level is or greater. For feature levels 9_x, resources created with the flag can only be used as a source for CopyResource. Resources created with multisampling capability (see ) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled, the call to fails. Use to resolve a multisampled resource to a resource that is not multisampled.

The method is an asynchronous call, which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. For more info, see performance considerations.

We recommend to use instead if you only need to copy a portion of the data in a resource.

Windows?Phone?8: This API is supported.

-
- - ff476392 - void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) - ID3D11DeviceContext::CopyResource -
- - -

The CPU copies data from memory to a subresource created in non-mappable memory.

-
-

A reference to the destination resource (see ).

-

A zero-based index, that identifies the destination subresource. See D3D11CalcSubresource for more details.

-

A reference to a box that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. If null, the data is written to the destination subresource with no offset. The dimensions of the source must fit the destination (see ).

An empty box results in a no-op. A box is empty if the top value is greater than or equal to the bottom value, or the left value is greater than or equal to the right value, or the front value is greater than or equal to the back value. When the box is empty, UpdateSubresource doesn't perform an update operation.

-

A reference to the source data in memory.

-

The size of one row of the source data.

-

The size of one depth slice of source data.

- -

For a shader-constant buffer; set pDstBox to null. It is not possible to use this method to partially update a shader-constant buffer.

A resource cannot be used as a destination if:

  • the resource is created with immutable or dynamic usage.
  • the resource is created as a depth-stencil resource.
  • the resource is created with multisampling capability (see ).

When UpdateSubresource returns, the application is free to change or even free the data pointed to by pSrcData because the method has already copied/snapped away the original contents.

The performance of UpdateSubresource depends on whether or not there is contention for the destination resource. For example, contention for a vertex buffer resource occurs when the application executes a Draw call and later calls UpdateSubresource on the same vertex buffer before the Draw call is actually executed by the GPU.

  • When there is contention for the resource, UpdateSubresource will perform 2 copies of the source data. First, the data is copied by the CPU to a temporary storage space accessible by the command buffer. This copy happens before the method returns. A second copy is then performed by the GPU to copy the source data into non-mappable memory. This second copy happens asynchronously because it is executed by GPU when the command buffer is flushed.
  • When there is no resource contention, the behavior of UpdateSubresource is dependent on which is faster (from the CPU's perspective): copying the data to the command buffer and then having a second copy execute when the command buffer is flushed, or having the CPU copy the data to the final resource location. This is dependent on the architecture of the underlying system.

Note??Applies only to feature level 9_x hardware If you use UpdateSubresource or to copy from a staging resource to a default resource, you can corrupt the destination contents. This occurs if you pass a null source box and if the source resource has different dimensions from those of the destination resource or if you use destination offsets, (x, y, and z). In this situation, always pass a source box that is the full size of the source resource.

To better understand the source row pitch and source depth pitch parameters, the following illustration shows a 3D volume texture.

Each block in this visual represents an element of data, and the size of each element is dependent on the resource's format. For example, if the resource format is , the size of each element would be 128 bits, or 16 bytes. This 3D volume texture has a width of two, a height of three, and a depth of four.

To calculate the source row pitch and source depth pitch for a given resource, use the following formulas:

  • Source Row Pitch = [size of one element in bytes] * [number of elements in one row]
  • Source Depth Pitch = [Source Row Pitch] * [number of rows (height)]

In the case of this example 3D volume texture where the size of each element is 16 bytes, the formulas are as follows:

  • Source Row Pitch = 16 * 2 = 32
  • Source Depth Pitch = 16 * 2 * 3 = 96

The following illustration shows the resource as it is laid out in memory.

For example, the following code snippet shows how to specify a destination region in a 2D texture. Assume the destination texture is 512x512 and the operation will copy the data pointed to by pData to [(120,100)..(200,220)] in the destination texture. Also assume that rowPitch has been initialized with the proper value (as explained above). front and back are set to 0 and 1 respectively, because by having front equal to back, the box is technically empty.

  destRegion;	
-            destRegion.left = 120;	
-            destRegion.right = 200;	
-            destRegion.top = 100;	
-            destRegion.bottom = 220;	
-            destRegion.front = 0;	
-            destRegion.back = 1; pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
-            

The 1D case is similar. The following snippet shows how to specify a destination region in a 1D texture. Use the same assumptions as above, except that the texture is 512 in length.

  destRegion;	
-            destRegion.left = 120;	
-            destRegion.right = 200;	
-            destRegion.top = 0;	
-            destRegion.bottom = 1;	
-            destRegion.front = 0;	
-            destRegion.back = 1; pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
-            

For info about various resource types and how UpdateSubresource might work with each resource type, see Introduction to a Resource in Direct3D 11.

-
- - ff476486 - void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) - ID3D11DeviceContext::UpdateSubresource -
- - -

Copies data from a buffer holding variable length data.

-
-

Pointer to . This can be any buffer resource that other copy commands, such as or , are able to write to.

-

Offset from the start of pDstBuffer to write 32-bit UINT structure (vertex) count from pSrcView.

-

Pointer to an of a Structured Buffer resource created with either or specified when the UAV was created. These types of resources have hidden counters tracking "how many" records have been written.

- -

Windows?Phone?8: This API is supported.

-
- - ff476393 - void ID3D11DeviceContext::CopyStructureCount([In] ID3D11Buffer* pDstBuffer,[In] unsigned int DstAlignedByteOffset,[In] ID3D11UnorderedAccessView* pSrcView) - ID3D11DeviceContext::CopyStructureCount -
- - -

Set all the elements in a render target to one value.

-
-

Pointer to the render target.

-

A 4-component array that represents the color to fill the render target with.

- -

Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method. The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.

Differences between Direct3D 9 and Direct3D 11/10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

When using D3D_FEATURE_LEVEL_9_x, ClearRenderTargetView only clears the first array slice in the render target view. This can impact (for example) cube map rendering scenarios. Applications should create a render target view for each face or array slice, then clear each view individually.

Windows?Phone?8: This API is supported.

-
- - ff476388 - void ID3D11DeviceContext::ClearRenderTargetView([In] ID3D11RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA) - ID3D11DeviceContext::ClearRenderTargetView -
- - -

Clears an unordered access resource with bit-precise values.

-
- No documentation. - No documentation. - -

This API copies the lower ni bits from each array element i to the corresponding channel, where ni is the number of bits in the ith channel of the resource format (for example, R8G8B8_FLOAT has 8 bits for the first 3 channels). This works on any UAV with no format conversion. For a raw or structured buffer view, only the first array element value is used.

Windows?Phone?8: This API is supported.

-
- - ff476391 - void ID3D11DeviceContext::ClearUnorderedAccessViewUint([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_INT4* Values) - ID3D11DeviceContext::ClearUnorderedAccessViewUint -
- - -

Clears an unordered access resource with a float value.

-
- No documentation. - No documentation. - -

This API works on FLOAT, UNORM, and SNORM unordered access views (UAVs), with format conversion from FLOAT to *NORM where appropriate. On other UAVs, the operation is invalid and the call will not reach the driver.

Windows?Phone?8: This API is supported.

-
- - ff476390 - void ID3D11DeviceContext::ClearUnorderedAccessViewFloat([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_VECTOR4* Values) - ID3D11DeviceContext::ClearUnorderedAccessViewFloat -
- - -

Clears the depth-stencil resource.

-
-

Pointer to the depth stencil to be cleared.

-

Identify the type of data to clear (see ).

-

Clear the depth buffer with this value. This value will be clamped between 0 and 1.

-

Clear the stencil buffer with this value.

- -

Differences between Direct3D 9 and Direct3D 11/10:

Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

?

Windows?Phone?8: This API is supported.

-
- - ff476387 - void ID3D11DeviceContext::ClearDepthStencilView([In] ID3D11DepthStencilView* pDepthStencilView,[In] D3D11_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil) - ID3D11DeviceContext::ClearDepthStencilView -
- - -

Generates mipmaps for the given shader resource.

-
-

A reference to an interface that represents the shader resource.

- -

You can call GenerateMips on any shader-resource view to generate the lower mipmap levels for the shader resource. GenerateMips uses the largest mipmap level of the view to recursively generate the lower levels of the mip and stops with the smallest level that is specified by the view. If the base resource wasn't created with , , and , the call to GenerateMips has no effect.

Feature levels 9.1, 9.2, and 9.3 can't support automatic generation of mipmaps for 3D (volume) textures.

Video adapters that support feature level 9.1 and higher support generating mipmaps if you use any of these formats:

 	
-            	
-            	
-            	
-            	
-            	
-            	
-            

Video adapters that support feature level 9.2 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature level 9.1:

 	
-            	
-            	
-            	
-            	
-            

Video adapters that support feature level 9.3 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1 and 9.2:

 	
-            DXGI_FORMAT_B4G4R4A4 (optional)	
-            

Video adapters that support feature level 10 and higher support generating mipmaps if you use any of these formats in addition to any of the formats for feature levels 9.1, 9.2, and 9.3:

  (optional)	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-            	
-             (optional)	
-            

For all other unsupported formats, GenerateMips will silently fail.

Windows?Phone?8: This API is supported.

-
- - ff476426 - void ID3D11DeviceContext::GenerateMips([In] ID3D11ShaderResourceView* pShaderResourceView) - ID3D11DeviceContext::GenerateMips -
- - -

Sets the minimum level-of-detail (LOD) for a resource.

-
-

A reference to an that represents the resource.

-

The level-of-detail, which ranges between 0 and the maximum number of mipmap levels of the resource. For example, the maximum number of mipmap levels of a 1D texture is specified in the MipLevels member of the structure.

- -

To use a resource with SetResourceMinLOD, you must set the flag when you create that resource.

For Direct3D 10 and Direct3D 10.1, when sampling from a texture resource in a shader, the sampler can define a minimum LOD clamp to force sampling from less detailed mip levels. For Direct3D 11, this functionality is extended from the sampler to the entire resource. Therefore, the application can specify the highest-resolution mip level of a resource that is available for access. This restricts the set of mip levels that are required to be resident in GPU memory, thereby saving memory.

The set of mip levels resident per-resource in GPU memory can be specified by the user.

Minimum LOD affects all of the resident mip levels. Therefore, only the resident mip levels can be updated and read from.

All methods that access texture resources must adhere to minimum LOD clamps.

Empty-set accesses are handled as out-of-bounds cases.

Windows?Phone?8: This API is supported.

-
- - ff476482 - void ID3D11DeviceContext::SetResourceMinLOD([In] ID3D11Resource* pResource,[In] float MinLOD) - ID3D11DeviceContext::SetResourceMinLOD -
- - -

Gets the minimum level-of-detail (LOD).

-
-

A reference to an which represents the resource.

-

Returns the minimum LOD.

- -

Windows?Phone?8: This API is supported.

-
- - ff476430 - float ID3D11DeviceContext::GetResourceMinLOD([In] ID3D11Resource* pResource) - ID3D11DeviceContext::GetResourceMinLOD -
- - -

Copy a multisampled resource into a non-multisampled resource.

-
-

Destination resource. Must be a created with the flag and be single-sampled. See .

-

A zero-based index, that identifies the destination subresource. Use D3D11CalcSubresource to calculate the index.

-

Source resource. Must be multisampled.

-

The source subresource of the source resource.

-

A that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks.

- -

This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.

The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this:

ScenarioRequirements
Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter.
One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is and the typeless resource is ). The format of the typed resource must be specified in the Format parameter.
Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have ), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are then could be specified in the Format parameter).

For example, given the format:

  • The source (or dest) format could be
  • The dest (or source) format could be

?

Windows?Phone?8: This API is supported.

-
- - ff476474 - void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In] DXGI_FORMAT Format) - ID3D11DeviceContext::ResolveSubresource -
- - -

Queues commands from a command list onto a device.

-
-

A reference to an interface that encapsulates a command list.

-

A Boolean flag that determines whether the target context state is saved prior to and restored after the execution of a command list. Use TRUE to indicate that the runtime needs to save and restore the state. Use to indicate that no state shall be saved or restored, which causes the target context to return to its default state after the command list executes. Applications should typically use unless they will restore the state to be nearly equivalent to the state that the runtime would restore if TRUE were passed. When applications use , they can avoid unnecessary and inefficient state transitions.

- -

Use this method to play back a command list that was recorded by a deferred context on any thread.

A call to ExecuteCommandList of a command list from a deferred context onto the immediate context is required for the recorded commands to be executed on the graphics processing unit (GPU). A call to ExecuteCommandList of a command list from a deferred context onto another deferred context can be used to merge recorded lists. But to run the commands from the merged deferred command list on the GPU, you need to execute them on the immediate context.

This method performs some runtime validation related to queries. Queries that are begun in a device context cannot be manipulated indirectly by executing a command list (that is, Begin or End was invoked against the same query by the deferred context which generated the command list). If such a condition occurs, the ExecuteCommandList method does not execute the command list. However, the state of the device context is still maintained, as would be expected ( is performed, unless the application indicates to preserve the device context state).

Windows?Phone?8: This API is supported.

-
- - ff476423 - void ID3D11DeviceContext::ExecuteCommandList([In] ID3D11CommandList* pCommandList,[In] BOOL RestoreContextState) - ID3D11DeviceContext::ExecuteCommandList -
- - -

Get the rendering predicate state.

-
-

Address of a boolean to fill with the predicate comparison value. upon device creation.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476429 - void ID3D11DeviceContext::GetPredication([Out, Optional] ID3D11Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue) - ID3D11DeviceContext::GetPredication -
- - -

Restore all default settings.

-
- -

This method resets any device context to the default settings. This sets all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to null. The primitive topology is set to UNDEFINED.

For a scenario where you would like to clear a list of commands recorded so far, call and throw away the resulting .

Windows?Phone?8: This API is supported.

-
- - ff476389 - void ID3D11DeviceContext::ClearState() - ID3D11DeviceContext::ClearState -
- - -

Sends queued-up commands in the command buffer to the graphics processing unit (GPU).

-
- -

Most applications don't need to call this method. If an application calls this method when not necessary, it incurs a performance penalty. Each call to Flush incurs a significant amount of overhead.

When Microsoft Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer. Flush sends those commands to the GPU for processing. Typically, the Direct3D runtime sends these commands to the GPU automatically whenever the runtime determines that they need to be sent, such as when the command buffer is full or when an application maps a resource. Flush sends the commands manually.

We recommend that you use Flush when the CPU waits for an arbitrary amount of time (such as when you call the Sleep function).

Because Flush operates asynchronously, it can return either before or after the GPU finishes executing the queued graphics commands. However, the graphics commands eventually always complete. You can call the method with the value to create an event query; you can then use that event query in a call to the method to determine when the GPU is finished processing the graphics commands. -

Microsoft Direct3D?11 defers the destruction of objects. Therefore, an application can't rely upon objects immediately being destroyed. By calling Flush, you destroy any objects whose destruction was deferred. If an application requires synchronous destruction of an object, we recommend that the application release all its references, call , and then call Flush.

-
- - ff476425 - void ID3D11DeviceContext::Flush() - ID3D11DeviceContext::Flush -
- - -

Gets the type of device context.

-
-

A member of that indicates the type of device context.

- -

Windows?Phone?8: This API is supported.

-
- - ff476431 - D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType() - ID3D11DeviceContext::GetType -
- - -

Gets the initialization flags associated with the current deferred context.

-
- No documentation. - -

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

Windows?Phone?8: This API is supported.

-
- - ff476427 - unsigned int ID3D11DeviceContext::GetContextFlags() - ID3D11DeviceContext::GetContextFlags -
- - -

Create a command list and record graphics commands into it.

-
-

A Boolean flag that determines whether the runtime saves deferred context state before it executes FinishCommandList and restores it afterwards. Use TRUE to indicate that the runtime needs to save and restore the state. Use to indicate that the runtime will not save or restore any state. In this case, the deferred context will return to its default state after the call to FinishCommandList completes. For information about default state, see . Typically, use unless you restore the state to be nearly equivalent to the state that the runtime would restore if you passed TRUE. When you use , you can avoid unnecessary and inefficient state transitions.

Note??This parameter does not affect the command list that the current call to FinishCommandList returns. However, this parameter affects the command list of the next call to FinishCommandList on the same deferred context.

-

Upon completion of the method, the passed reference to an interface reference is initialized with the recorded command list information. The resulting object is immutable and can only be used with .

-

Returns if successful; otherwise, returns one of the following:

  • Returns if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.
  • Returns if FinishCommandList cannot be called from the current context. See remarks.
  • Returns E_OUTOFMEMORY if the application has exhausted available memory.
- -

Create a command list from a deferred context and record commands into it by calling FinishCommandList. Play back a command list with an immediate context by calling .

Immediate context state is cleared before and after a command list is executed. A command list has no concept of inheritance. Each call to FinishCommandList will record only the state set since any previous call to FinishCommandList.

For example, the state of a device context is its render state or pipeline state. To retrieve device context state, an application can call or .

For more information about how to use FinishCommandList, see How to: Record a Command List.

Windows?Phone?8: This API is supported.

-
- - ff476424 - HRESULT ID3D11DeviceContext::FinishCommandList([In] BOOL RestoreDeferredContextState,[Out, Optional] ID3D11CommandList** ppCommandList) - ID3D11DeviceContext::FinishCommandList -
- - Inner interface giving access to VertexShaderStage methods. - - - Inner interface giving access to PixelShaderStage methods. - - - Inner interface giving access to InputAssemblerStage methods. - - - Inner interface giving access to GeometryShaderStage methods. - - - Inner interface giving access to OutputMergerStage methods. - - - Inner interface giving access to StreamOutputStage methods. - - - Inner interface giving access to RasterizerStage methods. - - - Inner interface giving access to HullShaderStage methods. - - - Inner interface giving access to DomainShaderStage methods. - - - Inner interface giving access to ComputeShaderStage methods. - - - -

Gets the type of device context.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476431 - GetType - GetType - D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType() -
- - -

Gets the initialization flags associated with the current deferred context.

-
- -

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

Windows?Phone?8: This API is supported.

-
- - ff476427 - GetContextFlags - GetContextFlags - unsigned int ID3D11DeviceContext::GetContextFlags() -
- - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - Constant IndexInputResourceSlotCount. - D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT - - - Constant VertexIdBitCount. - D3D11_IA_VERTEX_ID_BIT_COUNT - - - Constant DefaultIndexBufferOffsetInBytes. - D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES - - - Constant DefaultPrimitiveTopology. - D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY - - - Constant IntegerArithmeticBitCount. - D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT - - - Constant VertexInputStructureElementsComponents. - D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS - - - Constant VertexInputStructureElementCount. - D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT - - - Constant PatchMaximumControlPointCount. - D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT - - - Constant DefaultVertexBufferOffsetInBytes. - D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES - - - Constant InstanceIdBitCount. - D3D11_IA_INSTANCE_ID_BIT_COUNT - - - Constant VertexInputResourceSlotCount. - D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - - - Constant PrimitiveIdBitCount. - D3D11_IA_PRIMITIVE_ID_BIT_COUNT - - - -

Bind a single vertex buffer to the input-assembler stage.

-
-

The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

-

A . The vertex buffer must have been created with the flag.

/// -

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

-
- ff476456 - void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) - ID3D11DeviceContext::IASetVertexBuffers -
- - -

Bind an array of vertex buffers to the input-assembler stage.

-
-

The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

-

A reference to an array of . The vertex buffers must have been created with the flag.

/// -

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

-
- ff476456 - void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) - ID3D11DeviceContext::IASetVertexBuffers -
- - -

Bind an array of vertex buffers to the input-assembler stage.

-
-

The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

-

A reference to an array of vertex buffers (see ). The vertex buffers must have been created with the flag.

-

Pointer to an array of stride values; one stride value for each buffer in the vertex-buffer array. Each stride is the size (in bytes) of the elements that are to be used from that vertex buffer.

-

Pointer to an array of offset values; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.

- -

For information about creating vertex buffers, see Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

-
- ff476456 - void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) - ID3D11DeviceContext::IASetVertexBuffers -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind an input-layout object to the input-assembler stage.

-
-

A reference to the input-layout object (see ), which describes the input buffers that will be read by the IA stage.

- -

Input-layout objects describe how vertex buffer data is streamed into the IA pipeline stage. To create an input-layout object, call .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476454 - void ID3D11DeviceContext::IASetInputLayout([In, Optional] ID3D11InputLayout* pInputLayout) - ID3D11DeviceContext::IASetInputLayout -
- - -

Bind an array of vertex buffers to the input-assembler stage.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - -

For info about creating vertex buffers, see How to: Create a Vertex Buffer.

Calling this method using a buffer that is currently bound for writing (that is, bound to the stream output pipeline stage) will effectively bind null instead because a buffer can't be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476456 - void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) - ID3D11DeviceContext::IASetVertexBuffers -
- - -

Bind an index buffer to the input-assembler stage.

-
-

A reference to an object, that contains indices. The index buffer must have been created with the flag.

-

A that specifies the format of the data in the index buffer. The only formats allowed for index buffer data are 16-bit () and 32-bit () integers.

-

Offset (in bytes) from the start of the index buffer to the first index to use.

- -

For information about creating index buffers, see How to: Create an Index Buffer.

Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476453 - void ID3D11DeviceContext::IASetIndexBuffer([In, Optional] ID3D11Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset) - ID3D11DeviceContext::IASetIndexBuffer -
- - -

Bind information about the primitive type, and data order that describes input data for the input assembler stage.

-
-

The type of primitive and ordering of the primitive data (see D3D11_PRIMITIVE_TOPOLOGY).

- -

Windows?Phone?8: This API is supported.

-
- - ff476455 - void ID3D11DeviceContext::IASetPrimitiveTopology([In] D3D_PRIMITIVE_TOPOLOGY Topology) - ID3D11DeviceContext::IASetPrimitiveTopology -
- - -

Get a reference to the input-layout object that is bound to the input-assembler stage.

-
-

A reference to the input-layout object (see ), which describes the input buffers that will be read by the IA stage.

- -

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476450 - void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout) - ID3D11DeviceContext::IAGetInputLayout -
- - -

Get the vertex buffers bound to the input-assembler stage.

-
-

The input slot of the first vertex buffer to get. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

-

The number of vertex buffers to get starting at the offset. The number of buffers (plus the starting slot) cannot exceed the total number of IA-stage input slots.

-

A reference to an array of vertex buffers returned by the method (see ).

-

Pointer to an array of stride values returned by the method; one stride value for each buffer in the vertex-buffer array. Each stride value is the size (in bytes) of the elements that are to be used from that vertex buffer.

-

Pointer to an array of offset values returned by the method; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476452 - void ID3D11DeviceContext::IAGetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppVertexBuffers,[Out, Buffer, Optional] unsigned int* pStrides,[Out, Buffer, Optional] unsigned int* pOffsets) - ID3D11DeviceContext::IAGetVertexBuffers -
- - -

Get a reference to the index buffer that is bound to the input-assembler stage.

-
-

A reference to an index buffer returned by the method (see ).

-

Specifies format of the data in the index buffer (see ). These formats provide the size and type of the data in the buffer. The only formats allowed for index buffer data are 16-bit () and 32-bit () integers.

-

Offset (in bytes) from the start of the index buffer, to the first index to use.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476449 - void ID3D11DeviceContext::IAGetIndexBuffer([Out, Optional] ID3D11Buffer** pIndexBuffer,[Out, Optional] DXGI_FORMAT* Format,[Out, Optional] unsigned int* Offset) - ID3D11DeviceContext::IAGetIndexBuffer -
- - -

Get information about the primitive type, and data order that describes input data for the input assembler stage.

-
-

A reference to the type of primitive, and ordering of the primitive data (see D3D11_PRIMITIVE_TOPOLOGY).

- -

Windows?Phone?8: This API is supported.

-
- - ff476451 - void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) - ID3D11DeviceContext::IAGetPrimitiveTopology -
- - -

Get or sets a reference to the input-layout object that is bound to the input-assembler stage.

-
- -

For information about creating an input-layout object, see Creating the Input-Layout Object.

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476450 - IAGetInputLayout / IASetInputLayout - IAGetInputLayout - void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout) -
- - -

Get or sets information about the primitive type, and data order that describes input data for the input assembler stage.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476451 - IAGetPrimitiveTopology / IASetPrimitiveTopology - IAGetPrimitiveTopology - void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) -
- - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - Constant SimultaneousRenderTargetCount. - D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT - - - - Get references to the render targets that are available to the {{output-merger stage}}. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - a depth-stencil view (see ) to be filled with the depth-stencil information from the device. - void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) - - - - Get references to the render targets that are available to the {{output-merger stage}}. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Number of render targets to retrieve. - an array of render targets views (see ) to be filled with the render targets from the device. - void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) - - - - Get references to the render targets and the depth-stencil buffer that are available to the {{output-merger stage}}. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Number of render targets to retrieve. - Pointer to a depth-stencil view (see ) to be filled with the depth-stencil information from the device. - an array of render targets views (see ) to be filled with the render targets from the device. - void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) - - - - Get the {{blend state}} of the output-merger stage. - - - The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak. - - Array of blend factors, one for each RGBA component. - Pointer to a {{sample mask}}. - a reference to a blend-state interface (see ). - void OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] float BlendFactor[4],[Out, Optional] int* pSampleMask) - - - - Gets the {{depth-stencil}} state of the output-merger stage. - - - Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. - - Pointer to the stencil reference value used in the {{depth-stencil}} test. - a reference to a depth-stencil state interface (see ) to be filled with information from the device. - void OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] int* pStencilRef) - - - - Gets an array of views for an unordered resource. - - - Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. - - Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). - Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). - void OMGetRenderTargetsAndUnorderedAccessViews([In] int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] int UAVStartSlot,[In] int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews) - - - - Unbinds all depth-stencil buffer and render targets from the output-merger stage. - - ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets - - - -

Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.

-
- A set of render target views to bind. - -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -
- - - Binds a single render target to the output-merger stage. - - A view of the render target to bind. - -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -
- - - Binds a depth-stencil buffer and a set of render targets to the output-merger stage. - - A view of the depth-stencil buffer to bind. - A set of render target views to bind. - -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -
- - - Binds a depth-stencil buffer and a set of render targets to the output-merger stage. - - A view of the depth-stencil buffer to bind. - The render target count. - A set of render target views to bind. - ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- - - Binds a depth-stencil buffer and a single render target to the output-merger stage. - - A view of the depth-stencil buffer to bind. - A view of the render target to bind. - -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -
- - - Binds a depth-stencil buffer and a set of render targets to the output-merger stage. - - A view of the depth-stencil buffer to bind. - A set of render target views to bind. - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -
- - - Binds a set of render targets to the output-merger stage and clear the depth stencil view. - - A set of render target views to bind. - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

-
- ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -
- - - Binds a set of unordered access views and a single render target to the output-merger stage. - - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A view of the render target to bind. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a set of unordered access views and a set of render targets to the output-merger stage. - - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A set of render target views to bind. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage. - - A view of the depth-stencil buffer to bind. - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A view of the render target to bind. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage. - - A view of the depth-stencil buffer to bind. - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A set of render target views to bind. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a set of unordered access views and a single render target to the output-merger stage. - - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A view of the render target to bind. - An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a set of unordered access views and a set of render targets to the output-merger stage. - - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A set of render target views to bind. - An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage. - - A view of the depth-stencil buffer to bind. - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A view of the render target to bind. - An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage. - - A view of the depth-stencil buffer to bind. - Index into a zero-based array to begin setting unordered access views. - A set of unordered access views to bind. - A set of render target views to bind. - An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - - - - Binds a depth stencil view and a render target view to the output-merger stage keeping existing unordered access views bindings. - - A view of the depth-stencil buffer to bind. - A view to a render target to bind. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a render target view to the output-merger stage keeping existing unordered access views bindings. - - A view to a render target to bind. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Binds a depth stencil view and a render target view to the output-merger stage keeping existing unordered access views bindings. - - A view of the depth-stencil buffer to bind. - A set of render target views to bind. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Sets an array of views for an unordered resource keeping existing render targets bindings. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an references to be set by the method. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Sets an array of views for an unordered resource keeping existing render targets bindings. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an references to be set by the method. - An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. uAVInitialCount is only relevant for UAVs which have the flag, otherwise the argument is ignored. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Sets an array of views for an unordered resource keeping existing render targets bindings. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an array of references to be set by the method. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - - Sets an array of views for an unordered resource keeping existing render targets bindings. - - - - Index of the first element in the zero-based array to begin setting. - A reference to an array of references to be set by the method. - An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumable UAV. pUAVInitialCounts is only relevant for UAVs which have the flag, otherwise the argument is ignored. - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews - - - -

Binds resources to the output-merger stage.

-
-

Number of render-target views (ppRenderTargetViews) and depth-stencil view (ppDepthStencilView) to bind. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

-

Pointer to an array of s, which represent render-target views. Specify null to set none.

-

Pointer to a , which represents a depth-stencil view. Specify null to set none.

-

Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

-

Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

-

Pointer to an array of s, which represent unordered-access views.

-

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

- -

For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

Two RTVs conflict if they share a subresource (and therefore share the same resource).

Two UAVs conflict if they share a subresource (and therefore share the same resource).

An RTV conflicts with a UAV if they share a subresource or share a bind point.

OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

  1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • UAVStartSlot >= NumViews
    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

    • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
    • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
  2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All RTVs in slots >= UAVStartSlot
    • All RTVs that conflict with any UAVs in ppUnorderedAccessView
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

    OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • There must be no conflicts in ppRenderTargetViews.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All UAVs in slots < NumViews
    • All UAVs that conflict with any RTVs in ppRenderTargetViews
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

    OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

-
- ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews -
- - -

Binds resources to the output-merger stage.

-
-

Number of render-target views (ppRenderTargetViews) and depth-stencil view (ppDepthStencilView) to bind. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

-

Pointer to an array of s, which represent render-target views. Specify null to set none.

-

Pointer to a , which represents a depth-stencil view. Specify null to set none.

-

Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

-

Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

-

Pointer to an array of s, which represent unordered-access views.

-

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

- -

For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

Two RTVs conflict if they share a subresource (and therefore share the same resource).

Two UAVs conflict if they share a subresource (and therefore share the same resource).

An RTV conflicts with a UAV if they share a subresource or share a bind point.

OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

  1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • UAVStartSlot >= NumViews
    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

    • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
    • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
  2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All RTVs in slots >= UAVStartSlot
    • All RTVs that conflict with any UAVs in ppUnorderedAccessView
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

    OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • There must be no conflicts in ppRenderTargetViews.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All UAVs in slots < NumViews
    • All UAVs that conflict with any RTVs in ppRenderTargetViews
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

    OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

-
- ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews -
- - - Set the blend state of the output-merger stage. - - Pointer to a blend-state interface (see ). Passing in null implies a default blend state. See remarks for further details. - Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the option. - 32-bit sample coverage. The default value is 0xffffffff. See remarks. - - Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the blend operation to control where the two pixel values come from and how they are mathematically combined.To create a blend-state interface, call .Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.StateDefault Value AlphaToCoverageEnableFALSE BlendEnableFALSE[8] SrcBlendD3D11_BLEND_ONE DstBlendD3D11_BLEND_ZERO BlendOpD3D11_BLEND_OP_ADD SrcBlendAlphaD3D11_BLEND_ONE DstBlendAlphaD3D11_BLEND_ZERO BlendOpAlphaD3D11_BLEND_OP_ADD RenderTargetWriteMask[8][8]?A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. - - void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.

-
- No documentation. - No documentation. - No documentation. - -

The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called . It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

If the render-target views were created from an array resource type, all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

Any combination of the eight slots for render targets can have a render target set or not set.

The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

Windows?Phone?8: This API is supported.

-
- - ff476464 - void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) - ID3D11DeviceContext::OMSetRenderTargets -
- - -

Binds resources to the output-merger stage.

-
-

Number of render targets to bind (ranges between 0 and ). If this parameter is nonzero, the number of entries in the array to which ppRenderTargetViews points must equal the number in this parameter. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

-

Pointer to an array of s that represent the render targets to bind to the device. If this parameter is null and NumViews is 0, no render targets are bound.

-

Pointer to a that represents the depth-stencil view to bind to the device. If this parameter is null, the depth-stencil state is not bound.

-

Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

For the Direct3D 11.1 runtime, which is available starting with Windows?8, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

-

Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

For the Direct3D 11.1 runtime, which is available starting with Windows?8, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

-

Pointer to an array of s that represent the unordered-access views to bind to the device. If this parameter is null and NumUAVs is 0, no unordered-access views are bound.

-

An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

- -

For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

Two RTVs conflict if they share a subresource (and therefore share the same resource).

Two UAVs conflict if they share a subresource (and therefore share the same resource).

An RTV conflicts with a UAV if they share a subresource or share a bind point.

OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

  1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • UAVStartSlot >= NumViews
    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

    • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
    • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
  2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • UAVStartSlot + NumUAVs <= 8
    • There must be no conflicts in ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All RTVs in slots >= UAVStartSlot
    • All RTVs that conflict with any UAVs in ppUnorderedAccessView
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

    OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

  3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

    In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

    The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

    • NumViews <= 8
    • There must be no conflicts in ppRenderTargetViews.
    • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

    OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

    • All UAVs in slots < NumViews
    • All UAVs that conflict with any RTVs in ppRenderTargetViews
    • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

    OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

    OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

Windows?Phone?8: This API is supported.

-
- - ff476465 - void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const void** ppUnorderedAccessViews,[In, Buffer, Optional] const void* pUAVInitialCounts) - ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews -
- - -

Set the blend state of the output-merger stage.

-
-

Pointer to a blend-state interface (see ). Pass null for a default blend state. For more info about default blend state, see Remarks.

-

Array of blend factors, one for each RGBA component. The blend factors modulate values for the pixel shader, render target, or both. If you created the blend-state object with or , the blending stage uses the non-null array of blend factors. If you didn't create the blend-state object with or , the blending stage does not use the non-null array of blend factors; the runtime stores the blend factors, and you can later call to retrieve the blend factors. If you pass null, the runtime uses or stores a blend factor equal to { 1, 1, 1, 1 }.

-

32-bit sample coverage. The default value is 0xffffffff. See remarks.

- -

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

To create a blend-state interface, call .

Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476462 - void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) - ID3D11DeviceContext::OMSetBlendState -
- - -

Sets the depth-stencil state of the output-merger stage.

-
-

Pointer to a depth-stencil state interface (see ) to bind to the device. Set this to null to use the default state listed in .

-

Reference value to perform against when doing a depth-stencil test. See remarks.

- -

To create a depth-stencil state interface, call .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476463 - void ID3D11DeviceContext::OMSetDepthStencilState([In, Optional] ID3D11DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef) - ID3D11DeviceContext::OMSetDepthStencilState -
- - -

Get references to the resources bound to the output-merger stage.

-
-

Number of render targets to retrieve.

-

Pointer to an array of s which represent render target views. Specify null for this parameter when retrieval of a render target is not needed.

-

Pointer to a , which represents a depth-stencil view. Specify null for this parameter when retrieval of the depth-stencil view is not needed.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476460 - void ID3D11DeviceContext::OMGetRenderTargets([In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView) - ID3D11DeviceContext::OMGetRenderTargets -
- - -

Get references to the resources bound to the output-merger stage.

-
-

The number of render-target views to retrieve.

-

Pointer to an array of s, which represent render-target views. Specify null for this parameter when retrieval of render-target views is not required.

-

Pointer to a , which represents a depth-stencil view. Specify null for this parameter when retrieval of the depth-stencil view is not required.

-

Index into a zero-based array to begin retrieving unordered-access views (ranges from 0 to - 1). For pixel shaders UAVStartSlot should be equal to the number of render-target views that are bound.

-

Number of unordered-access views to return in ppUnorderedAccessViews. This number ranges from 0 to - UAVStartSlot.

-

Pointer to an array of s, which represent unordered-access views that are retrieved. Specify null for this parameter when retrieval of unordered-access views is not required.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476461 - void ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews) - ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews -
- - -

Get the blend state of the output-merger stage.

-
-

Address of a reference to a blend-state interface (see ).

-

Array of blend factors, one for each RGBA component.

-

Pointer to a sample mask.

- -

The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak.

Windows?Phone?8: This API is supported.

-
- - ff476458 - void ID3D11DeviceContext::OMGetBlendState([Out, Optional] ID3D11BlendState** ppBlendState,[Out, Optional] SHARPDX_COLOR4* BlendFactor,[Out, Optional] unsigned int* pSampleMask) - ID3D11DeviceContext::OMGetBlendState -
- - -

Gets the depth-stencil state of the output-merger stage.

-
-

Address of a reference to a depth-stencil state interface (see ) to be filled with information from the device.

-

Pointer to the stencil reference value used in the depth-stencil test.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476459 - void ID3D11DeviceContext::OMGetDepthStencilState([Out, Optional] ID3D11DepthStencilState** ppDepthStencilState,[Out, Optional] unsigned int* pStencilRef) - ID3D11DeviceContext::OMGetDepthStencilState -
- - - Gets or sets the blend factor. - - The blend factor. - - - - Gets or sets the blend sample mask. - - The blend sample mask. - - - - Gets or sets the state of the blend. - - The state of the blend. - - - - Gets or sets the depth stencil reference. - - The depth stencil reference. - - - - Gets or sets the state of the depth stencil. - - The state of the depth stencil. - - - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - - Get the array of {{viewports}} bound to the {{rasterizer stage}} - - An array of viewports (see ). - void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) - ff476477 - void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) - ID3D11DeviceContext::RSGetViewports - - - - Get the array of {{viewports}} bound to the {{rasterizer stage}} - - An array of viewports (see ). - void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) - ff476477 - void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) - ID3D11DeviceContext::RSGetViewports - - - - Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. - - An array of scissor rectangles (see ). - void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) - ff476475 - void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) - ID3D11DeviceContext::RSGetScissorRects - - - - Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. - - An array of scissor rectangles (see ). - void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) - ff476475 - void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) - ID3D11DeviceContext::RSGetScissorRects - - - - Binds a single scissor rectangle to the rasterizer stage. - - The left. - The top. - The right. - The bottom. - -

All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

-
- ff476478 - void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) - ID3D11DeviceContext::RSSetScissorRects -
- - - Binds a set of scissor rectangles to the rasterizer stage. - - The set of scissor rectangles to bind. - -

All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

-
- ff476478 - void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) - ID3D11DeviceContext::RSSetScissorRects -
- - - Binds a single viewport to the rasterizer stage. - - The x coordinate of the viewport. - The y coordinate of the viewport. - The width. - The height. - The min Z. - The max Z. - -

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

-
- ff476480 - void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) - ID3D11DeviceContext::RSSetViewports -
- - - Binds a single viewport to the rasterizer stage. - - The viewport. - -

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

-
- ff476480 - void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) - ID3D11DeviceContext::RSSetViewports -
- - - Binds a set of viewports to the rasterizer stage. - - The set of viewports to bind. - The number of viewport to set. - ff476480 - void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) - ID3D11DeviceContext::RSSetViewports -

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

-
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the rasterizer state for the rasterizer stage of the pipeline.

-
- No documentation. - -

To create a rasterizer state interface, call .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476479 - void ID3D11DeviceContext::RSSetState([In, Optional] ID3D11RasterizerState* pRasterizerState) - ID3D11DeviceContext::RSSetState -
- - -

Bind an array of viewports to the rasterizer stage of the pipeline.

-
-

Number of viewports to bind.

-

An array of structures to bind to the device. See the structure page for details about how the viewport size is dependent on the device feature level which has changed between Direct3D 11 and Direct3D 10.

- -

All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

Note??Even though you specify float values to the members of the structure for the pViewports array in a call to for feature levels 9_x, RSSetViewports uses DWORDs internally. Because of this behavior, when you use a negative top left corner for the viewport, the call to RSSetViewports for feature levels 9_x fails. This failure occurs because RSSetViewports for 9_x casts the floating point values into unsigned integers without validation, which results in integer overflow.

Windows?Phone?8: This API is supported.

-
- - ff476480 - void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) - ID3D11DeviceContext::RSSetViewports -
- - -

Bind an array of scissor rectangles to the rasterizer stage.

-
-

Number of scissor rectangles to bind.

-

An array of scissor rectangles (see D3D11_RECT).

- -

All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

Windows?Phone?8: This API is supported.

-
- - ff476478 - void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) - ID3D11DeviceContext::RSSetScissorRects -
- - -

Get the rasterizer state from the rasterizer stage of the pipeline.

-
- No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476476 - void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState) - ID3D11DeviceContext::RSGetState -
- - -

Gets the array of viewports bound to the rasterizer stage.

-
-

A reference to a variable that, on input, specifies the number of viewports (ranges from 0 to D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) in the pViewports array; on output, the variable contains the actual number of viewports that are bound to the rasterizer stage. If pViewports is null, RSGetViewports fills the variable with the number of viewports currently bound.

Note??In some versions of the Windows SDK, a debug device will raise an exception if the input value in the variable to which pNumViewports points is greater than D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE even if pViewports is null. The regular runtime ignores the value in the variable to which pNumViewports points when pViewports is null. This behavior of a debug device might be corrected in a future release of the Windows SDK.

-

An array of structures for the viewports that are bound to the rasterizer stage. If the number of viewports (in the variable to which pNumViewports points) is greater than the actual number of viewports currently bound, unused elements of the array contain 0. For info about how the viewport size depends on the device feature level, which has changed between Direct3D 11 and Direct3D 10, see .

- -

Windows?Phone?8: This API is supported.

-
- - ff476477 - void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) - ID3D11DeviceContext::RSGetViewports -
- - -

Get the array of scissor rectangles bound to the rasterizer stage.

-
-

The number of scissor rectangles (ranges between 0 and D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) bound; set pRects to null to use pNumRects to see how many rectangles would be returned.

-

An array of scissor rectangles (see D3D11_RECT). If NumRects is greater than the number of scissor rects currently bound, then unused members of the array will contain 0.

- -

Windows?Phone?8: This API is supported.

-
- - ff476475 - void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) - ID3D11DeviceContext::RSGetScissorRects -
- - -

Get or sets the rasterizer state from the rasterizer stage of the pipeline.

-
- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476476 - RSGetState / RSSetState - RSGetState - void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState) -
- - -

A domain-shader interface manages an executable program (a domain shader) that controls the domain-shader stage.

-
- -

The domain-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a domain-shader interface, call . Before using a domain shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

-
- - ff476535 - ID3D11DomainShader - ID3D11DomainShader -
- - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - A dynamic class linkage interface. - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Encapsulates forward and inverse FFTs.

-
- - ff476846 - ID3DX11FFT - ID3DX11FFT -
- - - Initializes a new instance of the class. - - The device context used to create the FFT. - Information that describes the shape of the FFT data as well as the scaling factors that should be used for forward and inverse transforms. - - - - Initializes a new instance of the class. - - The device context used to create the FFT. - Information that describes the shape of the FFT data as well as the scaling factors that should be used for forward and inverse transforms. - Flag affecting the behavior of the FFT. - - - - Attaches buffers to an FFT context and performs any required precomputations. - - - The buffers must be no smaller than the corresponding buffer sizes returned by D3DX11CreateFFT*(). Temporary buffers can be shared between multiple contexts, though care should be taken not to concurrently execute multiple FFTs which share temp buffers. - - Temporary buffers to attach. - Buffers to hold precomputed data. - Returns one of the return codes described in the topic {{Direct3D 11 Return Codes}}. - HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes) - - - - Creates a new one-dimensional complex FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - an interface reference. - HRESULT D3DX11CreateFFT1DComplex([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new one-dimensional complex FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . - an interface reference. - HRESULT D3DX11CreateFFT1DComplex([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new one-dimensional real FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new one-dimensional real FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new two-dimensional complex FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new two-dimensional complex FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new two-dimensional real FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new two-dimensional real FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new three-dimensional complex FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - Length of the third dimension of the FFT. - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new three-dimensional complex FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - Length of the third dimension of the FFT. - Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new three-dimensional real FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - Length of the third dimension of the FFT. - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Creates a new three-dimensional real FFT. - - Pointer to the interface to use for the FFT. - Length of the first dimension of the FFT. - Length of the second dimension of the FFT. - Length of the third dimension of the FFT. - Flag affecting the behavior of the FFT, can be 0 or a combination of flags from . - an interface reference. - HRESULT D3DX11CreateFFT1DReal([None] ID3D11DeviceContext* pDeviceContext,[None] int X,[None] int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - - - - Performs a forward FFT. - - Pointer to onto the input buffer. - - Returns the computation in a temp buffers; in addition, the last buffer written to is returned. - - HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) - - ForwardTransform can be called after buffers have been attached to the context using . The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.The format of complex data is interleaved components (for example, (Real0, Imag0), (Real1, Imag1) ... , and so on). Data is stored in row major order. - - - - - Performs an inverse FFT. - - Pointer to onto the input buffer. - - Returns the computation in a temp buffers; in addition, the last buffer written to is returned. - - HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) - - - - Performs a forward FFT. - - Pointer to onto the input buffer. - Buffer reference used as the output buffer. - Returns one of the return codes described in the topic Direct3D 11 Return Codes. - HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) - - ForwardTransform can be called after buffers have been attached to the context using . The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.The format of complex data is interleaved components (for example, (Real0, Imag0), (Real1, Imag1) ... , and so on). Data is stored in row major order. - - - - - Performs an inverse FFT. - - Pointer to onto the input buffer. - Buffer reference used as the output buffer. - Returns one of the return codes described in the topic Direct3D 11 Return Codes. - HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets the scale used for forward transforms.

-
-

The scale to use for forward transforms. Setting ForwardScale to 0 causes the default values of 1 to be used.

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

SetForwardScale sets the scale used by .

-
- - ff476852 - HRESULT ID3DX11FFT::SetForwardScale([In] float ForwardScale) - ID3DX11FFT::SetForwardScale -
- - -

Gets the scale for forward transforms.

-
-

Scale for forward transforms.

- - ff476849 - float ID3DX11FFT::GetForwardScale() - ID3DX11FFT::GetForwardScale -
- - -

Sets the scale used for inverse transforms.

-
-

Scale used for inverse transforms. Setting InverseScale to 0 causes the default value of 1/N to be used, where N is the product of the transformed dimension lengths.

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

SetInverseScale sets the scale used by .

-
- - ff476853 - HRESULT ID3DX11FFT::SetInverseScale([In] float InverseScale) - ID3DX11FFT::SetInverseScale -
- - -

Get the scale for inverse transforms.

-
-

Scale for inverse transforms.

- - ff476850 - float ID3DX11FFT::GetInverseScale() - ID3DX11FFT::GetInverseScale -
- - -

Attaches buffers to an FFT context and performs any required precomputations.

-
-

Number of buffers in ppTempBuffers.

-

A reference to an array of references for the temporary buffers to attach. The FFT object might use these temporary buffers for its algorithm.

-

Number of buffers in ppPrecomputeBuffers.

-

A reference to an array of references for the precompute buffers to attach. The FFT object might store precomputed data in these buffers.

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

The structure is initialized by a call to one of the create-FFT functions (for example, ). For more create-FFT functions, see D3DCSX 11 Functions.

Use the info in to allocate raw buffers of the specified (or larger) sizes and then call the AttachBuffersAndPrecompute to register the buffers with the FFT object.

Although you can share temporary buffers between multiple device contexts, we recommend not to concurrently execute multiple FFT objects that share temporary buffers.

Some FFT algorithms benefit from precomputing sin and cos. The FFT object might store precomputed data in the user-supplied precompute buffers.

-
- - ff476847 - HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] unsigned int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] unsigned int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes) - ID3DX11FFT::AttachBuffersAndPrecompute -
- - -

Attaches buffers to an FFT context and performs any required precomputations.

-
-

Number of buffers in ppTempBuffers.

-

A reference to an array of references for the temporary buffers to attach. The FFT object might use these temporary buffers for its algorithm.

-

Number of buffers in ppPrecomputeBuffers.

-

A reference to an array of references for the precompute buffers to attach. The FFT object might store precomputed data in these buffers.

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

The structure is initialized by a call to one of the create-FFT functions (for example, ). For more create-FFT functions, see D3DCSX 11 Functions.

Use the info in to allocate raw buffers of the specified (or larger) sizes and then call the AttachBuffersAndPrecompute to register the buffers with the FFT object.

Although you can share temporary buffers between multiple device contexts, we recommend not to concurrently execute multiple FFT objects that share temporary buffers.

Some FFT algorithms benefit from precomputing sin and cos. The FFT object might store precomputed data in the user-supplied precompute buffers.

-
- - ff476847 - HRESULT ID3DX11FFT::AttachBuffersAndPrecompute([In] unsigned int NumTempBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppTempBuffers,[In] unsigned int NumPrecomputeBuffers,[In, Buffer] const ID3D11UnorderedAccessView** ppPrecomputeBufferSizes) - ID3DX11FFT::AttachBuffersAndPrecompute -
- - -

Performs a forward FFT.

-
-

Pointer to onto the input buffer.

-

Pointer to a reference. If *ppOutputBuffer is null, the computation will switch between temp buffers; in addition, the last buffer written to is stored at *ppOutputBuffer. Otherwise, *ppOutputBuffer is used as the output buffer (which might incur an extra copy).

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

ForwardTransform can be called after buffers have been attached to the context using . The combination of pInputBuffer and *ppOuputBuffer can be one of the temp buffers.

The format of complex data is interleaved components (for example, (Real0, Imag0), (Real1, Imag1) ... , and so on). Data is stored in row major order.

-
- - ff476848 - HRESULT ID3DX11FFT::ForwardTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) - ID3DX11FFT::ForwardTransform -
- - -

Performs an inverse FFT.

-
-

Pointer to onto the input buffer.

-

Pointer to a reference. If *ppOutput is null, then the computation will switch between temp buffers; in addition, the last buffer written to is stored at *ppOutput. Otherwise, *ppOutput is used as the output buffer (which might incur an extra copy).

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- - ff476851 - HRESULT ID3DX11FFT::InverseTransform([In] const ID3D11UnorderedAccessView* pInputBuffer,[InOut] void** ppOutputBuffer) - ID3DX11FFT::InverseTransform -
- - - Gets the buffer requirements. - - The buffer requirements. - - - -

Gets or sets the scale for forward transforms.

-
- - ff476849 - GetForwardScale / SetForwardScale - GetForwardScale - float ID3DX11FFT::GetForwardScale() -
- - -

Get or sets the scale for inverse transforms.

-
- - ff476850 - GetInverseScale / SetInverseScale - GetInverseScale - float ID3DX11FFT::GetInverseScale() -
- - -

Optional flags that control the behavior of .

-
- - ff476084 - D3D11_ASYNC_GETDATA_FLAG - D3D11_ASYNC_GETDATA_FLAG -
- - - No documentation. - - - ff476084 - D3D11_ASYNC_GETDATA_DONOTFLUSH - D3D11_ASYNC_GETDATA_DONOTFLUSH - - - - None. - - - None - None - - - -

Identifies how to bind a resource to the pipeline.

-
- -

In general, binding flags can be combined using a logical OR (except the constant-buffer flag); however, you should use a single flag to allow the device to optimize the resource usage.

This enumeration is used by a:

  • Buffer description when creating a buffer.
  • Texture description when creating a texture (see or or ).

A shader-resource buffer is NOT a constant buffer; rather, it is a texture or buffer resource that is bound to a shader, that contains texture or buffer data (it is not limited to a single element type in the buffer). A shader-resource buffer is created with the flag and is bound to the pipeline using one of these APIs: , , or . Furthermore, a shader-resource buffer cannot use the flag.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

-
- - ff476085 - D3D11_BIND_FLAG - D3D11_BIND_FLAG -
- - -

Bind a buffer as a vertex buffer to the input-assembler stage.

-
- - ff476085 - D3D11_BIND_VERTEX_BUFFER - D3D11_BIND_VERTEX_BUFFER -
- - -

Bind a buffer as an index buffer to the input-assembler stage.

-
- - ff476085 - D3D11_BIND_INDEX_BUFFER - D3D11_BIND_INDEX_BUFFER -
- - -

Bind a buffer as a constant buffer to a shader stage; this flag may NOT be combined with any other bind flag.

-
- - ff476085 - D3D11_BIND_CONSTANT_BUFFER - D3D11_BIND_CONSTANT_BUFFER -
- - -

Bind a buffer or texture to a shader stage; this flag cannot be used with the flag.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

-
- - ff476085 - D3D11_BIND_SHADER_RESOURCE - D3D11_BIND_SHADER_RESOURCE -
- - -

Bind an output buffer for the stream-output stage.

-
- - ff476085 - D3D11_BIND_STREAM_OUTPUT - D3D11_BIND_STREAM_OUTPUT -
- - -

Bind a texture as a render target for the output-merger stage.

-
- - ff476085 - D3D11_BIND_RENDER_TARGET - D3D11_BIND_RENDER_TARGET -
- - -

Bind a texture as a depth-stencil target for the output-merger stage.

-
- - ff476085 - D3D11_BIND_DEPTH_STENCIL - D3D11_BIND_DEPTH_STENCIL -
- - -

Bind an unordered access resource.

-
- - ff476085 - D3D11_BIND_UNORDERED_ACCESS - D3D11_BIND_UNORDERED_ACCESS -
- - - None. - - - None - None - - - -

RGB or alpha blending operation.

-
- -

The runtime implements RGB blending and alpha blending separately. Therefore, blend state requires separate blend operations for RGB data and alpha data. These blend operations are specified in a blend description. The two sources ?source 1 and source 2? are shown in the blending block diagram.

Blend state is used by the output-merger stage to determine how to blend together two RGB pixel values and two alpha values. The two RGB pixel values and two alpha values are the RGB pixel value and alpha value that the pixel shader outputs and the RGB pixel value and alpha value already in the output render target. The blend option controls the data source that the blending stage uses to modulate values for the pixel shader, render target, or both. The blend operation controls how the blending stage mathematically combines these modulated values.

-
- - ff476088 - D3D11_BLEND_OP - D3D11_BLEND_OP -
- - -

Add source 1 and source 2.

-
- - ff476088 - D3D11_BLEND_OP_ADD - D3D11_BLEND_OP_ADD -
- - -

Subtract source 1 from source 2.

-
- - ff476088 - D3D11_BLEND_OP_SUBTRACT - D3D11_BLEND_OP_SUBTRACT -
- - -

Subtract source 2 from source 1.

-
- - ff476088 - D3D11_BLEND_OP_REV_SUBTRACT - D3D11_BLEND_OP_REV_SUBTRACT -
- - -

Find the minimum of source 1 and source 2.

-
- - ff476088 - D3D11_BLEND_OP_MIN - D3D11_BLEND_OP_MIN -
- - -

Find the maximum of source 1 and source 2.

-
- - ff476088 - D3D11_BLEND_OP_MAX - D3D11_BLEND_OP_MAX -
- - -

Describes the blend state that you use in a call to to create a blend-state object.

-
- -

Here are the default values for blend state.

StateDefault Value
AlphaToCoverageEnable
IndependentBlendEnable
RenderTarget[0].BlendEnable
RenderTarget[0].SrcBlend
RenderTarget[0].DestBlend
RenderTarget[0].BlendOp
RenderTarget[0].SrcBlendAlpha
RenderTarget[0].DestBlendAlpha
RenderTarget[0].BlendOpAlpha
RenderTarget[0].RenderTargetWriteMask

?

Note?? is identical to .

If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the display device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the display device performs the blend in linear space, which is ideal.

-
- - ff476087 - D3D11_BLEND - D3D11_BLEND -
- - - No documentation. - - - ff476087 - D3D11_BLEND_ZERO - D3D11_BLEND_ZERO - - - - No documentation. - - - ff476087 - D3D11_BLEND_ONE - D3D11_BLEND_ONE - - - - No documentation. - - - ff476087 - D3D11_BLEND_SRC_COLOR - D3D11_BLEND_SRC_COLOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_INV_SRC_COLOR - D3D11_BLEND_INV_SRC_COLOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_SRC_ALPHA - D3D11_BLEND_SRC_ALPHA - - - - No documentation. - - - ff476087 - D3D11_BLEND_INV_SRC_ALPHA - D3D11_BLEND_INV_SRC_ALPHA - - - - No documentation. - - - ff476087 - D3D11_BLEND_DEST_ALPHA - D3D11_BLEND_DEST_ALPHA - - - - No documentation. - - - ff476087 - D3D11_BLEND_INV_DEST_ALPHA - D3D11_BLEND_INV_DEST_ALPHA - - - - No documentation. - - - ff476087 - D3D11_BLEND_DEST_COLOR - D3D11_BLEND_DEST_COLOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_INV_DEST_COLOR - D3D11_BLEND_INV_DEST_COLOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_SRC_ALPHA_SAT - D3D11_BLEND_SRC_ALPHA_SAT - - - - No documentation. - - - ff476087 - D3D11_BLEND_BLEND_FACTOR - D3D11_BLEND_BLEND_FACTOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_INV_BLEND_FACTOR - D3D11_BLEND_INV_BLEND_FACTOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_SRC1_COLOR - D3D11_BLEND_SRC1_COLOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_INV_SRC1_COLOR - D3D11_BLEND_INV_SRC1_COLOR - - - - No documentation. - - - ff476087 - D3D11_BLEND_SRC1_ALPHA - D3D11_BLEND_SRC1_ALPHA - - - - No documentation. - - - ff476087 - D3D11_BLEND_INV_SRC1_ALPHA - D3D11_BLEND_INV_SRC1_ALPHA - - - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

These flags are used by functions which operate on one or more channels in a texture.

-
- - ff476302 - D3DX11_CHANNEL_FLAG - D3DX11_CHANNEL_FLAG -
- - -

Indicates the red channel should be used.

-
- - ff476302 - D3DX11_CHANNEL_RED - D3DX11_CHANNEL_RED -
- - -

Indicates the blue channel should be used.

-
- - ff476302 - D3DX11_CHANNEL_BLUE - D3DX11_CHANNEL_BLUE -
- - -

Indicates the green channel should be used.

-
- - ff476302 - D3DX11_CHANNEL_GREEN - D3DX11_CHANNEL_GREEN -
- - -

Indicates the alpha channel should be used.

-
- - ff476302 - D3DX11_CHANNEL_ALPHA - D3DX11_CHANNEL_ALPHA -
- - -

Indicates the luminaces of the red, green, and blue channels should be used.

-
- - ff476302 - D3DX11_CHANNEL_LUMINANCE - D3DX11_CHANNEL_LUMINANCE -
- - - None. - - - None - None - - - -

Identify which components of each pixel of a render target are writable during blending.

-
- -

These flags can be combined with a bitwise OR.

-
- - ff476100 - D3D11_COLOR_WRITE_ENABLE - D3D11_COLOR_WRITE_ENABLE -
- - -

Allow data to be stored in the red component.

-
- - ff476100 - D3D11_COLOR_WRITE_ENABLE_RED - D3D11_COLOR_WRITE_ENABLE_RED -
- - -

Allow data to be stored in the green component.

-
- - ff476100 - D3D11_COLOR_WRITE_ENABLE_GREEN - D3D11_COLOR_WRITE_ENABLE_GREEN -
- - -

Allow data to be stored in the blue component.

-
- - ff476100 - D3D11_COLOR_WRITE_ENABLE_BLUE - D3D11_COLOR_WRITE_ENABLE_BLUE -
- - -

Allow data to be stored in the alpha component.

-
- - ff476100 - D3D11_COLOR_WRITE_ENABLE_ALPHA - D3D11_COLOR_WRITE_ENABLE_ALPHA -
- - -

Allow data to be stored in all components.

-
- - ff476100 - D3D11_COLOR_WRITE_ENABLE_ALL - D3D11_COLOR_WRITE_ENABLE_ALL -
- - -

Comparison options.

-
- -

A comparison option determines whether how the runtime compares source (new) data against destination (existing) data before storing the new data. The comparison option is declared in a description before an object is created. The API allows you to set a comparison option for a depth-stencil buffer (see ), depth-stencil operations (see ), or sampler state (see ).

-
- - ff476101 - D3D11_COMPARISON_FUNC - D3D11_COMPARISON_FUNC -
- - -

Never pass the comparison.

-
- - ff476101 - D3D11_COMPARISON_NEVER - D3D11_COMPARISON_NEVER -
- - -

If the source data is less than the destination data, the comparison passes.

-
- - ff476101 - D3D11_COMPARISON_LESS - D3D11_COMPARISON_LESS -
- - -

If the source data is equal to the destination data, the comparison passes.

-
- - ff476101 - D3D11_COMPARISON_EQUAL - D3D11_COMPARISON_EQUAL -
- - -

If the source data is less than or equal to the destination data, the comparison passes.

-
- - ff476101 - D3D11_COMPARISON_LESS_EQUAL - D3D11_COMPARISON_LESS_EQUAL -
- - -

If the source data is greater than the destination data, the comparison passes.

-
- - ff476101 - D3D11_COMPARISON_GREATER - D3D11_COMPARISON_GREATER -
- - -

If the source data is not equal to the destination data, the comparison passes.

-
- - ff476101 - D3D11_COMPARISON_NOT_EQUAL - D3D11_COMPARISON_NOT_EQUAL -
- - -

If the source data is greater than or equal to the destination data, the comparison passes.

-
- - ff476101 - D3D11_COMPARISON_GREATER_EQUAL - D3D11_COMPARISON_GREATER_EQUAL -
- - -

Always pass the comparison.

-
- - ff476101 - D3D11_COMPARISON_ALWAYS - D3D11_COMPARISON_ALWAYS -
- - -

Unordered resource support options for a compute shader resource (see ).

-
- - ff476135 - D3D11_FORMAT_SUPPORT2 - D3D11_FORMAT_SUPPORT2 -
- - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD - - - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS - - - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE - - - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE - - - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX - - - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX - D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX - - - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD - D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD - - - - No documentation. - - - ff476135 - D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE - D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE - - - - None. - - - None - None - - - -

Options for performance counters.

-
- -

Independent hardware vendors may define their own set of performance counters for their devices, by giving the enumeration value a number that is greater than the value for .

This enumeration is used by and .

-
- - ff476102 - D3D11_COUNTER - D3D11_COUNTER -
- - -

Define a performance counter that is dependent on the hardware device.

-
- - ff476102 - D3D11_COUNTER_DEVICE_DEPENDENT_0 - D3D11_COUNTER_DEVICE_DEPENDENT_0 -
- - -

Data type of a performance counter.

-
- -

These flags are an output parameter in .

-
- - ff476105 - D3D11_COUNTER_TYPE - D3D11_COUNTER_TYPE -
- - -

32-bit floating point.

-
- - ff476105 - D3D11_COUNTER_TYPE_FLOAT32 - D3D11_COUNTER_TYPE_FLOAT32 -
- - -

16-bit unsigned integer.

-
- - ff476105 - D3D11_COUNTER_TYPE_UINT16 - D3D11_COUNTER_TYPE_UINT16 -
- - -

32-bit unsigned integer.

-
- - ff476105 - D3D11_COUNTER_TYPE_UINT32 - D3D11_COUNTER_TYPE_UINT32 -
- - -

64-bit unsigned integer.

-
- - ff476105 - D3D11_COUNTER_TYPE_UINT64 - D3D11_COUNTER_TYPE_UINT64 -
- - -

Specifies the types of CPU access allowed for a resource.

-
- -

This enumeration is used in , , , .

Applications may combine one or more of these flags with a logical OR. When possible, create resources with no CPU access flags, as this enables better resource optimization.

The cannot be used when creating resources with D3D11_CPU_ACCESS flags.

-
- - ff476106 - D3D11_CPU_ACCESS_FLAG - D3D11_CPU_ACCESS_FLAG -
- - -

The resource is to be mappable so that the CPU can change its contents. Resources created with this flag cannot be set as outputs of the pipeline and must be created with either dynamic or staging usage (see ).

-
- - ff476106 - D3D11_CPU_ACCESS_WRITE - D3D11_CPU_ACCESS_WRITE -
- - -

The resource is to be mappable so that the CPU can read its contents. Resources created with this flag cannot be set as either inputs or outputs to the pipeline and must be created with staging usage (see ).

-
- - ff476106 - D3D11_CPU_ACCESS_READ - D3D11_CPU_ACCESS_READ -
- - - None. - - - None - None - - - -

Indicates triangles facing a particular direction are not drawn.

-
- -

This enumeration is part of a rasterizer-state object description (see ).

-
- - ff476108 - D3D11_CULL_MODE - D3D11_CULL_MODE -
- - -

Always draw all triangles.

-
- - ff476108 - D3D11_CULL_NONE - D3D11_CULL_NONE -
- - -

Do not draw triangles that are front-facing.

-
- - ff476108 - D3D11_CULL_FRONT - D3D11_CULL_FRONT -
- - -

Do not draw triangles that are back-facing.

-
- - ff476108 - D3D11_CULL_BACK - D3D11_CULL_BACK -
- - - No documentation. - - - D3D11_DEBUG_FEATURE_FLAGS - D3D11_DEBUG_FEATURE_FLAGS - - - - No documentation. - - - D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP - D3D11_DEBUG_FEATURE_FLUSH_PER_RENDER_OP - - - - No documentation. - - - D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP - D3D11_DEBUG_FEATURE_FINISH_PER_RENDER_OP - - - - No documentation. - - - D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP - D3D11_DEBUG_FEATURE_PRESENT_PER_RENDER_OP - - - -

Specifies the parts of the depth stencil to clear.

-
- -

These flags are used when calling ; the flags can be combined with a bitwise OR.

-
- - ff476099 - D3D11_CLEAR_FLAG - D3D11_CLEAR_FLAG -
- - -

Clear the depth buffer.

-
- - ff476099 - D3D11_CLEAR_DEPTH - D3D11_CLEAR_DEPTH -
- - -

Clear the stencil buffer.

-
- - ff476099 - D3D11_CLEAR_STENCIL - D3D11_CLEAR_STENCIL -
- - -

Specifies how to access a resource used in a depth-stencil view.

-
- -

This enumeration is used in to create a depth-stencil view.

-
- - ff476115 - D3D11_DSV_DIMENSION - D3D11_DSV_DIMENSION -
- - -

is not a valid value for and is not used.

-
- - ff476115 - D3D11_DSV_DIMENSION_UNKNOWN - D3D11_DSV_DIMENSION_UNKNOWN -
- - -

The resource will be accessed as a 1D texture.

-
- - ff476115 - D3D11_DSV_DIMENSION_TEXTURE1D - D3D11_DSV_DIMENSION_TEXTURE1D -
- - -

The resource will be accessed as an array of 1D textures.

-
- - ff476115 - D3D11_DSV_DIMENSION_TEXTURE1DARRAY - D3D11_DSV_DIMENSION_TEXTURE1DARRAY -
- - -

The resource will be accessed as a 2D texture.

-
- - ff476115 - D3D11_DSV_DIMENSION_TEXTURE2D - D3D11_DSV_DIMENSION_TEXTURE2D -
- - -

The resource will be accessed as an array of 2D textures.

-
- - ff476115 - D3D11_DSV_DIMENSION_TEXTURE2DARRAY - D3D11_DSV_DIMENSION_TEXTURE2DARRAY -
- - -

The resource will be accessed as a 2D texture with multisampling.

-
- - ff476115 - D3D11_DSV_DIMENSION_TEXTURE2DMS - D3D11_DSV_DIMENSION_TEXTURE2DMS -
- - -

The resource will be accessed as an array of 2D textures with multisampling.

-
- - ff476115 - D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY - D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY -
- - -

Depth-stencil view options.

-
- -

This enumeration is used by .

Limiting a depth-stencil buffer to read-only access allows more than one depth-stencil view to be bound to the pipeline simultaneously, since it is not possible to have a read/write conflicts between separate views.

-
- - ff476116 - D3D11_DSV_FLAG - D3D11_DSV_FLAG -
- - -

Indicates that depth values are read only.

-
- - ff476116 - D3D11_DSV_READ_ONLY_DEPTH - D3D11_DSV_READ_ONLY_DEPTH -
- - -

Indicates that stencil values are read only.

-
- - ff476116 - D3D11_DSV_READ_ONLY_STENCIL - D3D11_DSV_READ_ONLY_STENCIL -
- - - None. - - - None - None - - - -

Identify the portion of a depth-stencil buffer for writing depth data.

-
- - ff476113 - D3D11_DEPTH_WRITE_MASK - D3D11_DEPTH_WRITE_MASK -
- - -

Turn off writes to the depth-stencil buffer.

-
- - ff476113 - D3D11_DEPTH_WRITE_MASK_ZERO - D3D11_DEPTH_WRITE_MASK_ZERO -
- - -

Turn on writes to the depth-stencil buffer.

-
- - ff476113 - D3D11_DEPTH_WRITE_MASK_ALL - D3D11_DEPTH_WRITE_MASK_ALL -
- - -

Device context options.

-
- -

This enumeration is used by .

-
- - ff476114 - D3D11_DEVICE_CONTEXT_TYPE - D3D11_DEVICE_CONTEXT_TYPE -
- - -

The device context is an immediate context.

-
- - ff476114 - D3D11_DEVICE_CONTEXT_IMMEDIATE - D3D11_DEVICE_CONTEXT_IMMEDIATE -
- - -

The device context is a deferred context.

-
- - ff476114 - D3D11_DEVICE_CONTEXT_DEFERRED - D3D11_DEVICE_CONTEXT_DEFERRED -
- - -

Describes parameters that are used to create a device.

-
- -

Device creation flags are used by and .

An application might dynamically create (and destroy) threads to improve performance especially on a machine with multiple CPU cores. There may be cases, however, when an application needs to prevent extra threads from being created. This can happen when you want to simplify debugging, profile code or develop a tool for instance. For these cases, use to request that the runtime and video driver not create any additional threads that might interfere with the application.

-
- - ff476107 - D3D11_CREATE_DEVICE_FLAG - D3D11_CREATE_DEVICE_FLAG -
- - -

Use this flag if your application will only call methods of Direct3D?11 interfaces from a single thread. By default, the object is thread-safe. By using this flag, you can increase performance. However, if you use this flag and your application calls methods of Direct3D?11 interfaces from multiple threads, undefined behavior might result.

-
- - ff476107 - D3D11_CREATE_DEVICE_SINGLETHREADED - D3D11_CREATE_DEVICE_SINGLETHREADED -
- - -

Creates a device that supports the debug layer.

To use this flag, you must have D3D11*SDKLayers.dll installed; otherwise, device creation fails. To get D3D11_1SDKLayers.dll, install the SDK for Windows?8.

-
- - ff476107 - D3D11_CREATE_DEVICE_DEBUG - D3D11_CREATE_DEVICE_DEBUG -
- - -

Note??This flag is not supported in Direct3D?11.

-
- - ff476107 - D3D11_CREATE_DEVICE_SWITCH_TO_REF - D3D11_CREATE_DEVICE_SWITCH_TO_REF -
- - -

Prevents multiple threads from being created. When this flag is used with a Windows Advanced Rasterization Platform (WARP) device, no additional threads will be created by WARP and all rasterization will occur on the calling thread. This flag is not recommended for general use. See remarks.

-
- - ff476107 - D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS - D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS -
- - -

Required for Direct2D interoperability with Direct3D resources.

-
- - ff476107 - D3D11_CREATE_DEVICE_BGRA_SUPPORT - D3D11_CREATE_DEVICE_BGRA_SUPPORT -
- - - None. - - - None - None - - - -

FFT creation flags.

-
- - ff476309 - D3DX11_FFT_CREATE_FLAG - D3DX11_FFT_CREATE_FLAG -
- - -

Do not AddRef or Release temp and precompute buffers, caller is responsible for holding references to these buffers.

-
- - ff476309 - D3DX11_FFT_CREATE_FLAG_NO_PRECOMPUTE_BUFFERS - D3DX11_FFT_CREATE_FLAG_NO_PRECOMPUTE_BUFFERS -
- - - None. - - - None - None - - - -

FFT data types.

-
- - ff476310 - D3DX11_FFT_DATA_TYPE - D3DX11_FFT_DATA_TYPE -
- - -

Real numbers.

-
- - ff476310 - D3DX11_FFT_DATA_TYPE_REAL - D3DX11_FFT_DATA_TYPE_REAL -
- - -

Complex numbers.

-
- - ff476310 - D3DX11_FFT_DATA_TYPE_COMPLEX - D3DX11_FFT_DATA_TYPE_COMPLEX -
- - -

Number of dimensions for FFT data.

-
- - ff476312 - D3DX11_FFT_DIM_MASK - D3DX11_FFT_DIM_MASK -
- - -

One dimension.

-
- - ff476312 - D3DX11_FFT_DIM_MASK_1D - D3DX11_FFT_DIM_MASK_1D -
- - -

Two dimensions.

-
- - ff476312 - D3DX11_FFT_DIM_MASK_2D - D3DX11_FFT_DIM_MASK_2D -
- - -

Three dimensions.

-
- - ff476312 - D3DX11_FFT_DIM_MASK_3D - D3DX11_FFT_DIM_MASK_3D -
- - -

Direct3D 11 feature options.

-
- -

This enumeration is used when querying a driver about support for these features by calling . Each value in this enumeration has a corresponding data structure that is required to be passed to the pFeatureSupportData parameter of .

The following table shows the structures associated with each enumeration value.

EnumerantAssociated Structure
D3D11_FEATURE_D3D11_OPTIONS D3D11_FEATURE_DATA_D3D11_OPTIONS
D3D11_FEATURE_ARCHITECTURE_INFO D3D11_FEATURE_DATA_ARCHITECTURE_INFO
D3D11_FEATURE_D3D9_OPTIONS D3D11_FEATURE_DATA_D3D9_OPTIONS
D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT
D3D11_FEATURE_D3D9_SHADOW_SUPPORT D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT
D3D11_FEATURE_D3D11_OPTIONS1 D3D11_FEATURE_DATA_D3D11_OPTIONS1
D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT
D3D11_FEATURE_MARKER_SUPPORT - D3D11_FEATURE_DATA_MARKER_SUPPORT
D3D11_FEATURE_D3D9_OPTIONS1 D3D11_FEATURE_DATA_D3D9_OPTIONS1

?

-
- - ff476124 - D3D11_FEATURE - D3D11_FEATURE -
- - -

The driver supports multithreading. To see an example of testing a driver for multithread support, see How To: Check for Driver Support.

-
- - ff476124 - D3D11_FEATURE_THREADING - D3D11_FEATURE_THREADING -
- - -

Supports the use of the double-precision shaders in HLSL.

-
- - ff476124 - D3D11_FEATURE_DOUBLES - D3D11_FEATURE_DOUBLES -
- - -

Supports the formats in .

-
- - ff476124 - D3D11_FEATURE_FORMAT_SUPPORT - D3D11_FEATURE_FORMAT_SUPPORT -
- - -

Supports the formats in .

-
- - ff476124 - D3D11_FEATURE_FORMAT_SUPPORT2 - D3D11_FEATURE_FORMAT_SUPPORT2 -
- - -

Supports compute shaders and raw and structured buffers.

-
- - ff476124 - D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS - D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS -
- - -

Determines the fill mode to use when rendering triangles.

-
- -

This enumeration is part of a rasterizer-state object description (see ).

-
- - ff476131 - D3D11_FILL_MODE - D3D11_FILL_MODE -
- - -

Draw lines connecting the vertices. Adjacent vertices are not drawn.

-
- - ff476131 - D3D11_FILL_WIREFRAME - D3D11_FILL_WIREFRAME -
- - -

Fill the triangles formed by the vertices. Adjacent vertices are not drawn.

-
- - ff476131 - D3D11_FILL_SOLID - D3D11_FILL_SOLID -
- - -

Filtering options during texture sampling.

-
- -

Note??If you use different filter types for min versus mag filter, undefined behavior occurs in certain cases where the choice between whether magnification or minification happens is ambiguous. To prevent this undefined behavior, use filter modes that use similar filter operations for both min and mag (or use anisotropic filtering, which avoids the issue as well).

During texture sampling, one or more texels are read and combined (this is calling filtering) to produce a single value. Point sampling reads a single texel while linear sampling reads two texels (endpoints) and linearly interpolates a third value between the endpoints.

HLSL texture-sampling functions also support comparison filtering during texture sampling. Comparison filtering compares each sampled texel against a comparison value. The boolean result is blended the same way that normal texture filtering is blended.

You can use HLSL intrinsic texture-sampling functions that implement texture filtering only or companion functions that use texture filtering with comparison filtering.

Texture Sampling FunctionTexture Sampling Function with Comparison Filtering
samplesamplecmp or samplecmplevelzero

?

Comparison filters only work with textures that have the following DXGI formats: R32_FLOAT_X8X24_TYPELESS, R32_FLOAT, R24_UNORM_X8_TYPELESS, R16_UNORM.

-
- - ff476132 - D3D11_FILTER - D3D11_FILTER -
- - -

Use point sampling for minification, magnification, and mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_MAG_MIP_POINT - D3D11_FILTER_MIN_MAG_MIP_POINT -
- - -

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR - D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR -
- - -

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT - D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT -
- - -

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR - D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR -
- - -

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT - D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT -
- - -

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR - D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR -
- - -

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT - D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT -
- - -

Use linear interpolation for minification, magnification, and mip-level sampling.

-
- - ff476132 - D3D11_FILTER_MIN_MAG_MIP_LINEAR - D3D11_FILTER_MIN_MAG_MIP_LINEAR -
- - -

Use anisotropic interpolation for minification, magnification, and mip-level sampling.

-
- - ff476132 - D3D11_FILTER_ANISOTROPIC - D3D11_FILTER_ANISOTROPIC -
- - -

Use point sampling for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT - D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT -
- - -

Use point sampling for minification and magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR - D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR -
- - -

Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT - D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT -
- - -

Use point sampling for minification; use linear interpolation for magnification and mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR - D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR -
- - -

Use linear interpolation for minification; use point sampling for magnification and mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT - D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT -
- - -

Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR - D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR -
- - -

Use linear interpolation for minification and magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT - D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT -
- - -

Use linear interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR - D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR -
- - -

Use anisotropic interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.

-
- - ff476132 - D3D11_FILTER_COMPARISON_ANISOTROPIC - D3D11_FILTER_COMPARISON_ANISOTROPIC -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Texture filtering flags.

-
- -

D3DX11 automatically performs gamma correction (to convert color data from RGB space to standard RGB space) when loading texture data. This is automatically done for instance when RGB data is loaded from a .png file into an sRGB texture. Use the SRGB filter flags to indicate if the data does not need to be converted into sRGB space.

-
- - ff476313 - D3DX11_FILTER_FLAG - D3DX11_FILTER_FLAG -
- - -

No scaling or filtering will take place. Pixels outside the bounds of the source image are assumed to be transparent black.

-
- - ff476313 - D3DX11_FILTER_NONE - D3DX11_FILTER_NONE -
- - -

Each destination pixel is computed by sampling the nearest pixel from the source image.

-
- - ff476313 - D3DX11_FILTER_POINT - D3DX11_FILTER_POINT -
- - -

Each destination pixel is computed by sampling the four nearest pixels from the source image. This filter works best when the scale on both axes is less than two.

-
- - ff476313 - D3DX11_FILTER_LINEAR - D3DX11_FILTER_LINEAR -
- - -

Every pixel in the source image contributes equally to the destination image. This is the slowest of the filters.

-
- - ff476313 - D3DX11_FILTER_TRIANGLE - D3DX11_FILTER_TRIANGLE -
- - -

Each pixel is computed by averaging a 2x2(x2) box of pixels from the source image. This filter works only when the dimensions of the destination are half those of the source, as is the case with mipmaps.

-
- - ff476313 - D3DX11_FILTER_BOX - D3DX11_FILTER_BOX -
- - -

Pixels off the edge of the texture on the u-axis should be mirrored, not wrapped.

-
- - ff476313 - D3DX11_FILTER_MIRROR_U - D3DX11_FILTER_MIRROR_U -
- - -

Pixels off the edge of the texture on the v-axis should be mirrored, not wrapped.

-
- - ff476313 - D3DX11_FILTER_MIRROR_V - D3DX11_FILTER_MIRROR_V -
- - -

Pixels off the edge of the texture on the w-axis should be mirrored, not wrapped.

-
- - ff476313 - D3DX11_FILTER_MIRROR_W - D3DX11_FILTER_MIRROR_W -
- - -

Specifying this flag is the same as specifying the , , and flags.

-
- - ff476313 - D3DX11_FILTER_MIRROR - D3DX11_FILTER_MIRROR -
- - -

The resulting image must be dithered using a 4x4 ordered dither algorithm. This happens when converting from one format to another.

-
- - ff476313 - D3DX11_FILTER_DITHER - D3DX11_FILTER_DITHER -
- - -

Do diffuse dithering on the image when changing from one format to another.

-
- - ff476313 - D3DX11_FILTER_DITHER_DIFFUSION - D3DX11_FILTER_DITHER_DIFFUSION -
- - -

Input data is in standard RGB (sRGB) color space. See remarks.

-
- - ff476313 - D3DX11_FILTER_SRGB_IN - D3DX11_FILTER_SRGB_IN -
- - -

Output data is in standard RGB (sRGB) color space. See remarks.

-
- - ff476313 - D3DX11_FILTER_SRGB_OUT - D3DX11_FILTER_SRGB_OUT -
- - -

Same as specifying | . See remarks.

-
- - ff476313 - D3DX11_FILTER_SRGB - D3DX11_FILTER_SRGB -
- - -

Types of magnification or minification sampler filters.

-
- - ff476133 - D3D11_FILTER_TYPE - D3D11_FILTER_TYPE -
- - -

Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture.

-
- - ff476133 - D3D11_FILTER_TYPE_POINT - D3D11_FILTER_TYPE_POINT -
- - -

Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures.

-
- - ff476133 - D3D11_FILTER_TYPE_LINEAR - D3D11_FILTER_TYPE_LINEAR -
- - -

Which resources are supported for a given format and given device (see and ).

-
- - ff476134 - D3D11_FORMAT_SUPPORT - D3D11_FORMAT_SUPPORT -
- - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_BUFFER - D3D11_FORMAT_SUPPORT_BUFFER - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER - D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER - D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_SO_BUFFER - D3D11_FORMAT_SUPPORT_SO_BUFFER - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_TEXTURE1D - D3D11_FORMAT_SUPPORT_TEXTURE1D - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_TEXTURE2D - D3D11_FORMAT_SUPPORT_TEXTURE2D - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_TEXTURE3D - D3D11_FORMAT_SUPPORT_TEXTURE3D - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_TEXTURECUBE - D3D11_FORMAT_SUPPORT_TEXTURECUBE - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_SHADER_LOAD - D3D11_FORMAT_SUPPORT_SHADER_LOAD - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_SHADER_SAMPLE - D3D11_FORMAT_SUPPORT_SHADER_SAMPLE - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON - D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT - D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_MIP - D3D11_FORMAT_SUPPORT_MIP - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_MIP_AUTOGEN - D3D11_FORMAT_SUPPORT_MIP_AUTOGEN - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_RENDER_TARGET - D3D11_FORMAT_SUPPORT_RENDER_TARGET - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_BLENDABLE - D3D11_FORMAT_SUPPORT_BLENDABLE - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_DEPTH_STENCIL - D3D11_FORMAT_SUPPORT_DEPTH_STENCIL - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_CPU_LOCKABLE - D3D11_FORMAT_SUPPORT_CPU_LOCKABLE - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE - D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_DISPLAY - D3D11_FORMAT_SUPPORT_DISPLAY - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT - D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET - D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD - D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_SHADER_GATHER - D3D11_FORMAT_SUPPORT_SHADER_GATHER - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST - D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW - D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW - - - - No documentation. - - - ff476134 - D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON - D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON - - - - None. - - - None - None - - - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Image file formats supported by D3DX11Createxxx and D3DX11Savexxx functions.

-
- -

See Types of Bitmaps (GDI+) for more information on some of these formats.

-
- - ff476315 - D3DX11_IMAGE_FILE_FORMAT - D3DX11_IMAGE_FILE_FORMAT -
- - -

Windows bitmap (BMP) file format. Contains a header that describes the resolution of the device on which the rectangle of pixels was created, the dimensions of the rectangle, the size of the array of bits, a logical palette, and an array of bits that defines the relationship between pixels in the bitmapped image and entries in the logical palette. The file extension for this format is .bmp.

-
- - ff476315 - D3DX11_IFF_BMP - D3DX11_IFF_BMP -
- - -

Joint Photographic Experts Group (JPEG) compressed file format. Specifies variable compression of 24-bit RGB color and 8-bit gray-scale Tagged Image File Format (TIFF) image document files. The file extension for this format is .jpg.

-
- - ff476315 - D3DX11_IFF_JPG - D3DX11_IFF_JPG -
- - -

Portable Network Graphics (PNG) file format. A non-proprietary bitmap format using lossless compression. The file extension for this format is .png.

-
- - ff476315 - D3DX11_IFF_PNG - D3DX11_IFF_PNG -
- - -

DirectDraw surface (DDS) file format. Stores textures, volume textures, and cubic environment maps, with or without mipmap levels, and with or without pixel compression. The file extension for this format is .dds.

-
- - ff476315 - D3DX11_IFF_DDS - D3DX11_IFF_DDS -
- - -

Tagged Image File Format (TIFF). The file extensions for this format are .tif and .tiff.

-
- - ff476315 - D3DX11_IFF_TIFF - D3DX11_IFF_TIFF -
- - -

Graphics Interchange Format (GIF). The file extension for this format is .gif.

-
- - ff476315 - D3DX11_IFF_GIF - D3DX11_IFF_GIF -
- - -

Windows Media Photo format (WMP). This format is also known as HD Photo and JPEG XR. The file extensions for this format are .hdp, .jxr, and .wdp.

To work properly, requires that you initialize COM. Therefore, call CoInitialize or CoInitializeEx in your application before you call D3DX.

-
- - ff476315 - D3DX11_IFF_WMP - D3DX11_IFF_WMP -
- - -

Type of data contained in an input slot.

-
- -

Use these values to specify the type of data for a particular input element (see ) of an input-layout object.

-
- - ff476179 - D3D11_INPUT_CLASSIFICATION - D3D11_INPUT_CLASSIFICATION -
- - -

Input data is per-vertex data.

-
- - ff476179 - D3D11_INPUT_PER_VERTEX_DATA - D3D11_INPUT_PER_VERTEX_DATA -
- - -

Input data is per-instance data.

-
- - ff476179 - D3D11_INPUT_PER_INSTANCE_DATA - D3D11_INPUT_PER_INSTANCE_DATA -
- - -

Specifies how the CPU should respond when an application calls the method on a resource that is being used by the GPU.

-
- -

This enumeration is used by .

cannot be used with or D3D11_MAP_WRITE_NOOVERWRITE.

-
- - ff476183 - D3D11_MAP_FLAG - D3D11_MAP_FLAG -
- - - No documentation. - - - ff476183 - D3D11_MAP_FLAG_DO_NOT_WAIT - D3D11_MAP_FLAG_DO_NOT_WAIT - - - - None. - - - None - None - - - -

Identifies a resource to be accessed for reading and writing by the CPU. Applications may combine one or more of these flags.

-
- -

This enumeration is used in .

These remarks are divided into the following topics:

  • Meaning
  • Common
-
- - ff476181 - D3D11_MAP - D3D11_MAP -
- - -

Resource is mapped for reading. The resource must have been created with read access (see ).

-
- - ff476181 - D3D11_MAP_READ - D3D11_MAP_READ -
- - -

Resource is mapped for writing. The resource must have been created with write access (see ).

-
- - ff476181 - D3D11_MAP_WRITE - D3D11_MAP_WRITE -
- - -

Resource is mapped for reading and writing. The resource must have been created with read and write access (see and ).

-
- - ff476181 - D3D11_MAP_READ_WRITE - D3D11_MAP_READ_WRITE -
- - -

Resource is mapped for writing; the previous contents of the resource will be undefined. The resource must have been created with write access and dynamic usage (See and ).

-
- - ff476181 - D3D11_MAP_WRITE_DISCARD - D3D11_MAP_WRITE_DISCARD -
- - -

Resource is mapped for writing; the existing contents of the resource cannot be overwritten (see Remarks). This flag is only valid on vertex and index buffers. The resource must have been created with write access (see ). Cannot be used on a resource created with the flag.

Note??The Direct3D 11.1 runtime, which is available starting with Windows?8, enables mapping dynamic constant buffers and shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers. To determine if a Direct3D device supports these features, call with D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport fills members of a D3D11_FEATURE_DATA_D3D11_OPTIONS structure with the device's features. The relevant members here are MapNoOverwriteOnDynamicConstantBuffer and MapNoOverwriteOnDynamicBufferSRV.

-
- - ff476181 - D3D11_MAP_WRITE_NO_OVERWRITE - D3D11_MAP_WRITE_NO_OVERWRITE -
- - -

Categories of debug messages. This will identify the category of a message when retrieving a message with and when adding a message with . When creating an info queue filter, these values can be used to allow or deny any categories of messages to pass through the storage and retrieval filters.

-
- -

This is part of the Information Queue feature. See Interface.

-
- - ff476185 - D3D11_MESSAGE_CATEGORY - D3D11_MESSAGE_CATEGORY -
- - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED - D3D11_MESSAGE_CATEGORY_APPLICATION_DEFINED - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_MISCELLANEOUS - D3D11_MESSAGE_CATEGORY_MISCELLANEOUS - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_INITIALIZATION - D3D11_MESSAGE_CATEGORY_INITIALIZATION - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_CLEANUP - D3D11_MESSAGE_CATEGORY_CLEANUP - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_COMPILATION - D3D11_MESSAGE_CATEGORY_COMPILATION - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_STATE_CREATION - D3D11_MESSAGE_CATEGORY_STATE_CREATION - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_STATE_SETTING - D3D11_MESSAGE_CATEGORY_STATE_SETTING - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_STATE_GETTING - D3D11_MESSAGE_CATEGORY_STATE_GETTING - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION - D3D11_MESSAGE_CATEGORY_RESOURCE_MANIPULATION - - - - No documentation. - - - ff476185 - D3D11_MESSAGE_CATEGORY_EXECUTION - D3D11_MESSAGE_CATEGORY_EXECUTION - - - -

A debug message in the Information Queue.

-
- -

This structure is returned from as part of the Information Queue feature (see Interface).

-
- - ff476184 - D3D11_MESSAGE_ID - D3D11_MESSAGE_ID -
- - -

The category of the message. See .

-
- - ff476184 - D3D11_MESSAGE_ID_UNKNOWN - D3D11_MESSAGE_ID_UNKNOWN -
- - -

The severity of the message. See .

-
- - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD -
- - -

The ID of the message. See .

-
- - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD -
- - -

The message string.

-
- - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD - D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD -
- - -

The length of pDescription in bytes.

-
- - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD - D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD -
- - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD - D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD - D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD - D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD - D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD - D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_STRING_FROM_APPLICATION - D3D11_MESSAGE_ID_STRING_FROM_APPLICATION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_THIS - D3D11_MESSAGE_ID_CORRUPTED_THIS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER1 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER2 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER3 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER4 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER5 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER6 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER7 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER8 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER9 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER10 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER11 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER12 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER13 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER14 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15 - D3D11_MESSAGE_ID_CORRUPTED_PARAMETER15 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING - D3D11_MESSAGE_ID_CORRUPTED_MULTITHREADING - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY - D3D11_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA - D3D11_MESSAGE_ID_GETPRIVATEDATA_MOREDATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA - D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN - D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS - D3D11_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS - D3D11_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY - D3D11_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS - D3D11_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC - D3D11_MESSAGE_ID_CREATEBUFFER_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDCONSTANTBUFFERBINDINGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION - D3D11_MESSAGE_ID_CREATEBUFFER_LARGEALLOCATION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC - D3D11_MESSAGE_ID_CREATETEXTURE1D_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION - D3D11_MESSAGE_ID_CREATETEXTURE1D_LARGEALLOCATION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC - D3D11_MESSAGE_ID_CREATETEXTURE2D_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION - D3D11_MESSAGE_ID_CREATETEXTURE2D_LARGEALLOCATION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC - D3D11_MESSAGE_ID_CREATETEXTURE3D_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION - D3D11_MESSAGE_ID_CREATETEXTURE3D_LARGEALLOCATION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE - D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE - D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK - D3D11_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC - D3D11_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER - D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER - D3D11_MESSAGE_ID_IASETINDEXBUFFER_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D11_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D11_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER - D3D11_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D11_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT - D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR - D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH - D3D11_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY - D3D11_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY - D3D11_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID - D3D11_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE - D3D11_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE - D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE - D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE - D3D11_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE - D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX - D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE - D3D11_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID - D3D11_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE - D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS - D3D11_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED - D3D11_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN - D3D11_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED - D3D11_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE - D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS - D3D11_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED - D3D11_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN - D3D11_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED - D3D11_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE - D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS - D3D11_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED - D3D11_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN - D3D11_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED - D3D11_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE - D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS - D3D11_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED - D3D11_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN - D3D11_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED - D3D11_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED - D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED - D3D11_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS - D3D11_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN - D3D11_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN - D3D11_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE - D3D11_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_THREADING_MODE - D3D11_MESSAGE_ID_REF_THREADING_MODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION - D3D11_MESSAGE_ID_REF_UMDRIVER_EXCEPTION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION - D3D11_MESSAGE_ID_REF_KMDRIVER_EXCEPTION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION - D3D11_MESSAGE_ID_REF_HARDWARE_EXCEPTION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE - D3D11_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER - D3D11_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY - D3D11_MESSAGE_ID_REF_OUT_OF_MEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_INFO - D3D11_MESSAGE_ID_REF_INFO - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS - D3D11_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL - D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_VIEW_DIMENSION_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT - D3D11_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED - D3D11_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY - D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE - D3D11_MESSAGE_ID_DEVICE_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER - D3D11_MESSAGE_ID_DEVICE_DRAW_SO_STRIDE_LARGER_THAN_BUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING - D3D11_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 - D3D11_MESSAGE_ID_DEVICE_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT - D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT - D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT - D3D11_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN - D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN - D3D11_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET - D3D11_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH - D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY - D3D11_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY - D3D11_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATEQUERY_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATEPREDICATE_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER - D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFRANGE_COUNTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED - D3D11_MESSAGE_ID_CREATECOUNTER_SIMULTANEOUS_ACTIVE_COUNTERS_EXHAUSTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - D3D11_MESSAGE_ID_CREATECOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATECOUNTER_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN - D3D11_MESSAGE_ID_CREATECOUNTER_NONEXCLUSIVE_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC - D3D11_MESSAGE_ID_CREATECOUNTER_NULLDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER - D3D11_MESSAGE_ID_CHECKCOUNTER_OUTOFRANGE_COUNTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - D3D11_MESSAGE_ID_CHECKCOUNTER_UNSUPPORTED_WELLKNOWN_COUNTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE - D3D11_MESSAGE_ID_SETPREDICATION_INVALID_PREDICATE_STATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED - D3D11_MESSAGE_ID_QUERY_BEGIN_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION - D3D11_MESSAGE_ID_PREDICATE_BEGIN_DURING_PREDICATION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE - D3D11_MESSAGE_ID_QUERY_BEGIN_DUPLICATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS - D3D11_MESSAGE_ID_QUERY_BEGIN_ABANDONING_PREVIOUS_RESULTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION - D3D11_MESSAGE_ID_PREDICATE_END_DURING_PREDICATION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS - D3D11_MESSAGE_ID_QUERY_END_ABANDONING_PREVIOUS_RESULTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN - D3D11_MESSAGE_ID_QUERY_END_WITHOUT_BEGIN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE - D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_DATASIZE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS - D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_FLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL - D3D11_MESSAGE_ID_QUERY_GETDATA_INVALID_CALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN - D3D11_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE - D3D11_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_D3D10_MESSAGES_END - D3D11_MESSAGE_ID_D3D10_MESSAGES_END - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START - D3D11_MESSAGE_ID_D3D10L9_MESSAGES_START - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_STENCIL_NO_TWO_SIDED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthBiasClamp_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_COMPARISON_SUPPORT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_EXCESSIVE_ANISOTROPY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_OUT_OF_RANGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED - D3D11_MESSAGE_ID_VSSETSAMPLERS_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS - D3D11_MESSAGE_ID_VSSETSAMPLERS_TOO_MANY_SAMPLERS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS - D3D11_MESSAGE_ID_PSSETSAMPLERS_TOO_MANY_SAMPLERS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS - D3D11_MESSAGE_ID_CREATERESOURCE_NO_ARRAYS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND - D3D11_MESSAGE_ID_CREATERESOURCE_NO_VB_AND_IB_BIND - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D - D3D11_MESSAGE_ID_CREATERESOURCE_NO_TEXTURE_1D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE - D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_OUT_OF_RANGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE - D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_SHADER_RESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_TOO_MANY_RENDER_TARGETS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_DIFFERING_BIT_DEPTHS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX - D3D11_MESSAGE_ID_IASETVERTEXBUFFERS_BAD_BUFFER_INDEX - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS - D3D11_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_TOO_MANY_VIEWPORTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_ADJACENCY_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS - D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_TOO_MANY_SCISSORS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY - D3D11_MESSAGE_ID_COPYRESOURCE_ONLY_TEXTURE_2D_WITHIN_GPU_MEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK - D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_3D_READBACK - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK - D3D11_MESSAGE_ID_COPYRESOURCE_NO_TEXTURE_ONLY_READBACK - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT - D3D11_MESSAGE_ID_CREATEINPUTLAYOUT_UNSUPPORTED_FORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_ALPHA_TO_COVERAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE - D3D11_MESSAGE_ID_CREATERASTERIZERSTATE_DepthClipEnable_MUST_BE_TRUE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE - D3D11_MESSAGE_ID_DRAWINDEXED_STARTINDEXLOCATION_MUST_BE_POSITIVE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_MUST_USE_LOWEST_LOD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MINLOD_MUST_NOT_BE_FRACTIONAL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_MAXLOD_MUST_BE_FLT_MAX - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_FIRSTARRAYSLICE_MUST_BE_ZERO - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_CUBES_MUST_HAVE_6_SIDES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET - D3D11_MESSAGE_ID_CREATERESOURCE_NOT_BINDABLE_AS_RENDER_TARGET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER - D3D11_MESSAGE_ID_CREATERESOURCE_NO_DWORD_INDEX_BUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE - D3D11_MESSAGE_ID_CREATERESOURCE_MSAA_PRECLUDES_SHADER_RESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE - D3D11_MESSAGE_ID_CREATERESOURCE_PRESENTATION_PRECLUDES_SHADER_RESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_BLEND_ENABLE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_INDEPENDENT_WRITE_MASKS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT - D3D11_MESSAGE_ID_CREATERESOURCE_NO_STREAM_OUT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS - D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_VB_IB_FOR_BUFFERS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES - D3D11_MESSAGE_ID_CREATERESOURCE_NO_AUTOGEN_FOR_VOLUMES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED - D3D11_MESSAGE_ID_CREATERESOURCE_DXGI_FORMAT_R8G8B8A8_CANNOT_BE_SHARED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED - D3D11_MESSAGE_ID_VSSHADERRESOURCES_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED - D3D11_MESSAGE_ID_GEOMETRY_SHADER_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED - D3D11_MESSAGE_ID_STREAM_OUT_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED - D3D11_MESSAGE_ID_TEXT_FILTER_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_SEPARATE_ALPHA_BLEND - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND - D3D11_MESSAGE_ID_CREATEBLENDSTATE_NO_MRT_BLEND - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED - D3D11_MESSAGE_ID_CREATEBLENDSTATE_OPERATION_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_NO_MIRRORONCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED - D3D11_MESSAGE_ID_DRAWINSTANCED_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 - D3D11_MESSAGE_ID_DRAWINDEXEDINSTANCED_NOT_SUPPORTED_BELOW_9_3 - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED - D3D11_MESSAGE_ID_DRAWINDEXED_POINTLIST_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO - D3D11_MESSAGE_ID_SETBLENDSTATE_SAMPLE_MASK_CANNOT_BE_ZERO - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION - D3D11_MESSAGE_ID_CREATERESOURCE_DIMENSION_EXCEEDS_FEATURE_LEVEL_DEFINITION - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED - D3D11_MESSAGE_ID_CREATERESOURCE_ONLY_SINGLE_MIP_LEVEL_DEPTH_STENCIL_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR - D3D11_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_NEGATIVESCISSOR - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA - D3D11_MESSAGE_ID_SLOT_ZERO_MUST_BE_D3D10_INPUT_PER_VERTEX_DATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP - D3D11_MESSAGE_ID_CREATERESOURCE_NON_POW_2_MIPMAP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED - D3D11_MESSAGE_ID_CREATESAMPLERSTATE_BORDER_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT - D3D11_MESSAGE_ID_OMSETRENDERTARGETS_NO_SRGB_MRT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END - D3D11_MESSAGE_ID_D3D10L9_MESSAGES_END - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_D3D11_MESSAGES_START - D3D11_MESSAGE_ID_D3D11_MESSAGES_START - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS - D3D11_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE - D3D11_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE - D3D11_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_COMMANDLISTFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_SINGLETHREADED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_INVALID_CALL_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATEDEFERREDCONTEXT_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT - D3D11_MESSAGE_ID_FINISHDISPLAYLIST_ONIMMEDIATECONTEXT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_FINISHDISPLAYLIST_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN - D3D11_MESSAGE_ID_FINISHDISPLAYLIST_INVALID_CALL_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES - D3D11_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD - D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD - D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_HSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE - D3D11_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_HSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D11_MESSAGE_ID_HSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_HSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_HSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_HSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_HSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_HSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD - D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD - D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_DSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE - D3D11_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_DSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D11_MESSAGE_ID_DSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_DSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_DSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_DSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_DSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_DSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT - D3D11_MESSAGE_ID_DEFERRED_CONTEXT_REMOVAL_PROCESS_AT_FAULT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER - D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE - D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS - D3D11_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED - D3D11_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN - D3D11_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD - D3D11_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE - D3D11_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED - D3D11_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS - D3D11_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH - D3D11_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_CONTEXT - D3D11_MESSAGE_ID_CREATE_CONTEXT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_CONTEXT - D3D11_MESSAGE_ID_LIVE_CONTEXT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_CONTEXT - D3D11_MESSAGE_ID_DESTROY_CONTEXT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_BUFFER - D3D11_MESSAGE_ID_CREATE_BUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_BUFFER - D3D11_MESSAGE_ID_LIVE_BUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_BUFFER - D3D11_MESSAGE_ID_DESTROY_BUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_TEXTURE1D - D3D11_MESSAGE_ID_CREATE_TEXTURE1D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_TEXTURE1D - D3D11_MESSAGE_ID_LIVE_TEXTURE1D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_TEXTURE1D - D3D11_MESSAGE_ID_DESTROY_TEXTURE1D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_TEXTURE2D - D3D11_MESSAGE_ID_CREATE_TEXTURE2D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_TEXTURE2D - D3D11_MESSAGE_ID_LIVE_TEXTURE2D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_TEXTURE2D - D3D11_MESSAGE_ID_DESTROY_TEXTURE2D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_TEXTURE3D - D3D11_MESSAGE_ID_CREATE_TEXTURE3D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_TEXTURE3D - D3D11_MESSAGE_ID_LIVE_TEXTURE3D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_TEXTURE3D - D3D11_MESSAGE_ID_DESTROY_TEXTURE3D - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW - D3D11_MESSAGE_ID_CREATE_SHADERRESOURCEVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW - D3D11_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW - D3D11_MESSAGE_ID_DESTROY_SHADERRESOURCEVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW - D3D11_MESSAGE_ID_CREATE_RENDERTARGETVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW - D3D11_MESSAGE_ID_LIVE_RENDERTARGETVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW - D3D11_MESSAGE_ID_DESTROY_RENDERTARGETVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW - D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW - D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW - D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_VERTEXSHADER - D3D11_MESSAGE_ID_CREATE_VERTEXSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_VERTEXSHADER - D3D11_MESSAGE_ID_LIVE_VERTEXSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER - D3D11_MESSAGE_ID_DESTROY_VERTEXSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_HULLSHADER - D3D11_MESSAGE_ID_CREATE_HULLSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_HULLSHADER - D3D11_MESSAGE_ID_LIVE_HULLSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_HULLSHADER - D3D11_MESSAGE_ID_DESTROY_HULLSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_DOMAINSHADER - D3D11_MESSAGE_ID_CREATE_DOMAINSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_DOMAINSHADER - D3D11_MESSAGE_ID_LIVE_DOMAINSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER - D3D11_MESSAGE_ID_DESTROY_DOMAINSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER - D3D11_MESSAGE_ID_CREATE_GEOMETRYSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER - D3D11_MESSAGE_ID_LIVE_GEOMETRYSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER - D3D11_MESSAGE_ID_DESTROY_GEOMETRYSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_PIXELSHADER - D3D11_MESSAGE_ID_CREATE_PIXELSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_PIXELSHADER - D3D11_MESSAGE_ID_LIVE_PIXELSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_PIXELSHADER - D3D11_MESSAGE_ID_DESTROY_PIXELSHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT - D3D11_MESSAGE_ID_CREATE_INPUTLAYOUT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT - D3D11_MESSAGE_ID_LIVE_INPUTLAYOUT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT - D3D11_MESSAGE_ID_DESTROY_INPUTLAYOUT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_SAMPLER - D3D11_MESSAGE_ID_CREATE_SAMPLER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_SAMPLER - D3D11_MESSAGE_ID_LIVE_SAMPLER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_SAMPLER - D3D11_MESSAGE_ID_DESTROY_SAMPLER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_BLENDSTATE - D3D11_MESSAGE_ID_CREATE_BLENDSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_BLENDSTATE - D3D11_MESSAGE_ID_LIVE_BLENDSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_BLENDSTATE - D3D11_MESSAGE_ID_DESTROY_BLENDSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE - D3D11_MESSAGE_ID_CREATE_DEPTHSTENCILSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE - D3D11_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE - D3D11_MESSAGE_ID_DESTROY_DEPTHSTENCILSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE - D3D11_MESSAGE_ID_CREATE_RASTERIZERSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE - D3D11_MESSAGE_ID_LIVE_RASTERIZERSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE - D3D11_MESSAGE_ID_DESTROY_RASTERIZERSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_QUERY - D3D11_MESSAGE_ID_CREATE_QUERY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_QUERY - D3D11_MESSAGE_ID_LIVE_QUERY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_QUERY - D3D11_MESSAGE_ID_DESTROY_QUERY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_PREDICATE - D3D11_MESSAGE_ID_CREATE_PREDICATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_PREDICATE - D3D11_MESSAGE_ID_LIVE_PREDICATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_PREDICATE - D3D11_MESSAGE_ID_DESTROY_PREDICATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_COUNTER - D3D11_MESSAGE_ID_CREATE_COUNTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_COUNTER - D3D11_MESSAGE_ID_LIVE_COUNTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_COUNTER - D3D11_MESSAGE_ID_DESTROY_COUNTER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_COMMANDLIST - D3D11_MESSAGE_ID_CREATE_COMMANDLIST - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_COMMANDLIST - D3D11_MESSAGE_ID_LIVE_COMMANDLIST - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_COMMANDLIST - D3D11_MESSAGE_ID_DESTROY_COMMANDLIST - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE - D3D11_MESSAGE_ID_CREATE_CLASSINSTANCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE - D3D11_MESSAGE_ID_LIVE_CLASSINSTANCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE - D3D11_MESSAGE_ID_DESTROY_CLASSINSTANCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE - D3D11_MESSAGE_ID_CREATE_CLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE - D3D11_MESSAGE_ID_LIVE_CLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE - D3D11_MESSAGE_ID_DESTROY_CLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_DEVICE - D3D11_MESSAGE_ID_LIVE_DEVICE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY - D3D11_MESSAGE_ID_LIVE_OBJECT_SUMMARY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_COMPUTESHADER - D3D11_MESSAGE_ID_CREATE_COMPUTESHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_COMPUTESHADER - D3D11_MESSAGE_ID_LIVE_COMPUTESHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER - D3D11_MESSAGE_ID_DESTROY_COMPUTESHADER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW - D3D11_MESSAGE_ID_CREATE_UNORDEREDACCESSVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW - D3D11_MESSAGE_ID_LIVE_UNORDEREDACCESSVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW - D3D11_MESSAGE_ID_DESTROY_UNORDEREDACCESSVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACES_FEATURELEVEL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INTERFACE_COUNT_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_INDEX - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_TYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INVALID_INSTANCE_DATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA - D3D11_MESSAGE_ID_DEVICE_SETSHADER_UNBOUND_INSTANCE_DATA - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS - D3D11_MESSAGE_ID_DEVICE_SETSHADER_INSTANCE_DATA_BINDINGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL - D3D11_MESSAGE_ID_DEVICE_CREATESHADER_CLASSLINKAGE_FULL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE - D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE - D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN - D3D11_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD - D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD - D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_CSSETSHADERRESOURCES_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERTYPE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE - D3D11_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER - D3D11_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED - D3D11_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED - D3D11_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED - D3D11_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED - D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED - D3D11_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED - D3D11_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED - D3D11_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE - D3D11_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS - D3D11_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP - D3D11_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_CSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_PSSETUNORDEREDACCESSVIEWS_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_HAZARD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH - D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY - D3D11_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS - D3D11_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS - D3D11_MESSAGE_ID_CREATESHADERRESESOURCEVIEW_TOOMANYOBJECTS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT - D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDCONTEXT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE - D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD - D3D11_MESSAGE_ID_DEVICE_SETRESOURCEMINLOD_INVALIDMINLOD - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT - D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDCONTEXT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE - D3D11_MESSAGE_ID_DEVICE_GETRESOURCEMINLOD_INVALIDRESOURCE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT - D3D11_MESSAGE_ID_OMSETDEPTHSTENCIL_UNBINDDELETINGOBJECT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY - D3D11_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED - D3D11_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP - D3D11_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED - D3D11_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW - D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO - D3D11_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH - D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE - D3D11_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED - D3D11_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDVIEW - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_INVALIDOFFSET - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS - D3D11_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSVIEWS_TOOMANYVIEWS - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT - D3D11_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED - D3D11_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_REF_WARNING - D3D11_MESSAGE_ID_REF_WARNING - - - - No documentation. - - - ff476184 - D3D11_MESSAGE_ID_D3D11_MESSAGES_END - D3D11_MESSAGE_ID_D3D11_MESSAGES_END - - - -

Debug message severity levels for an information queue.

-
- -

Use these values to allow or deny message categories to pass through the storage and retrieval filters for an information queue (see ). This API is used by .

-
- - ff476187 - D3D11_MESSAGE_SEVERITY - D3D11_MESSAGE_SEVERITY -
- - -

Defines some type of corruption which has occurred.

-
- - ff476187 - D3D11_MESSAGE_SEVERITY_CORRUPTION - D3D11_MESSAGE_SEVERITY_CORRUPTION -
- - -

Defines an error message.

-
- - ff476187 - D3D11_MESSAGE_SEVERITY_ERROR - D3D11_MESSAGE_SEVERITY_ERROR -
- - -

Defines a warning message.

-
- - ff476187 - D3D11_MESSAGE_SEVERITY_WARNING - D3D11_MESSAGE_SEVERITY_WARNING -
- - -

Defines an information message.

-
- - ff476187 - D3D11_MESSAGE_SEVERITY_INFO - D3D11_MESSAGE_SEVERITY_INFO -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Normal map options. You can combine any number of these flags by using a bitwise OR operation.

-
- -

These flags are used by .

-
- - ff476318 - D3DX11_NORMALMAP_FLAG - D3DX11_NORMALMAP_FLAG -
- - -

Indicates that pixels off the edge of the texture on the U-axis should be mirrored, not wraped.

-
- - ff476318 - D3DX11_NORMALMAP_MIRROR_U - D3DX11_NORMALMAP_MIRROR_U -
- - -

Indicates that pixels off the edge of the texture on the V-axis should be mirrored, not wraped.

-
- - ff476318 - D3DX11_NORMALMAP_MIRROR_V - D3DX11_NORMALMAP_MIRROR_V -
- - -

Same as | .

-
- - ff476318 - D3DX11_NORMALMAP_MIRROR - D3DX11_NORMALMAP_MIRROR -
- - -

Inverts the direction of each normal.

-
- - ff476318 - D3DX11_NORMALMAP_INVERTSIGN - D3DX11_NORMALMAP_INVERTSIGN -
- - -

Computes the per pixel occlusion term and encodes it into the alpha. An Alpha of 1 means that the pixel is not obscured in any way, and an alpha of 0 would mean that the pixel is completly obscured.

-
- - ff476318 - D3DX11_NORMALMAP_COMPUTE_OCCLUSION - D3DX11_NORMALMAP_COMPUTE_OCCLUSION -
- - - None. - - - None - None - - - -

Flags that describe miscellaneous query behavior.

-
- -

This flag is part of a query description (see ).

-
- - ff476196 - D3D11_QUERY_MISC_FLAG - D3D11_QUERY_MISC_FLAG -
- - -

Tell the hardware that if it is not yet sure if something is hidden or not to draw it anyway. This is only used with an occlusion predicate. Predication data cannot be returned to your application via when using this flag.

-
- - ff476196 - D3D11_QUERY_MISC_PREDICATEHINT - D3D11_QUERY_MISC_PREDICATEHINT -
- - - None. - - - None - None - - - -

Query types.

-
- -

Create a query with .

-
- - ff476191 - D3D11_QUERY - D3D11_QUERY -
- - -

Determines whether or not the GPU is finished processing commands. When the GPU is finished processing commands will return , and pData will point to a with a value of TRUE. When using this type of query, is disabled.

-
- - ff476191 - D3D11_QUERY_EVENT - D3D11_QUERY_EVENT -
- - -

Get the number of samples that passed the depth and stencil tests in between and . returns a UINT64. If a depth or stencil test is disabled, then each of those tests will be counted as a pass.

-
- - ff476191 - D3D11_QUERY_OCCLUSION - D3D11_QUERY_OCCLUSION -
- - -

Get a timestamp value where returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See . When using this type of query, is disabled.

-
- - ff476191 - D3D11_QUERY_TIMESTAMP - D3D11_QUERY_TIMESTAMP -
- - -

Determines whether or not a is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. will return a . This type of query should only be invoked once per frame or less.

-
- - ff476191 - D3D11_QUERY_TIMESTAMP_DISJOINT - D3D11_QUERY_TIMESTAMP_DISJOINT -
- - -

Get pipeline statistics, such as the number of pixel shader invocations in between and . will return a .

-
- - ff476191 - D3D11_QUERY_PIPELINE_STATISTICS - D3D11_QUERY_PIPELINE_STATISTICS -
- - -

Similar to , except returns a indicating whether or not any samples passed the depth and stencil tests - TRUE meaning at least one passed, meaning none passed.

-
- - ff476191 - D3D11_QUERY_OCCLUSION_PREDICATE - D3D11_QUERY_OCCLUSION_PREDICATE -
- - -

Get streaming output statistics, such as the number of primitives streamed out in between and . will return a structure.

-
- - ff476191 - D3D11_QUERY_SO_STATISTICS - D3D11_QUERY_SO_STATISTICS -
- - -

Determines whether or not any of the streaming output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

-
- - ff476191 - D3D11_QUERY_SO_OVERFLOW_PREDICATE - D3D11_QUERY_SO_OVERFLOW_PREDICATE -
- - -

Get streaming output statistics for stream 0, such as the number of primitives streamed out in between and . will return a structure.

-
- - ff476191 - D3D11_QUERY_SO_STATISTICS_STREAM0 - D3D11_QUERY_SO_STATISTICS_STREAM0 -
- - -

Determines whether or not the stream 0 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

-
- - ff476191 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 -
- - -

Get streaming output statistics for stream 1, such as the number of primitives streamed out in between and . will return a structure.

-
- - ff476191 - D3D11_QUERY_SO_STATISTICS_STREAM1 - D3D11_QUERY_SO_STATISTICS_STREAM1 -
- - -

Determines whether or not the stream 1 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

-
- - ff476191 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 -
- - -

Get streaming output statistics for stream 2, such as the number of primitives streamed out in between and . will return a structure.

-
- - ff476191 - D3D11_QUERY_SO_STATISTICS_STREAM2 - D3D11_QUERY_SO_STATISTICS_STREAM2 -
- - -

Determines whether or not the stream 2 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

-
- - ff476191 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 -
- - -

Get streaming output statistics for stream 3, such as the number of primitives streamed out in between and . will return a structure.

-
- - ff476191 - D3D11_QUERY_SO_STATISTICS_STREAM3 - D3D11_QUERY_SO_STATISTICS_STREAM3 -
- - -

Determines whether or not the stream 3 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

-
- - ff476191 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 - D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 -
- - -

These flags identify the type of resource that will be viewed as a render target.

-
- -

This enumeration is used in to create a render-target view.

-
- - ff476206 - D3D11_RTV_DIMENSION - D3D11_RTV_DIMENSION -
- - -

Do not use this value, as it will cause to fail.

-
- - ff476206 - D3D11_RTV_DIMENSION_UNKNOWN - D3D11_RTV_DIMENSION_UNKNOWN -
- - -

The resource will be accessed as a buffer.

-
- - ff476206 - D3D11_RTV_DIMENSION_BUFFER - D3D11_RTV_DIMENSION_BUFFER -
- - -

The resource will be accessed as a 1D texture.

-
- - ff476206 - D3D11_RTV_DIMENSION_TEXTURE1D - D3D11_RTV_DIMENSION_TEXTURE1D -
- - -

The resource will be accessed as an array of 1D textures.

-
- - ff476206 - D3D11_RTV_DIMENSION_TEXTURE1DARRAY - D3D11_RTV_DIMENSION_TEXTURE1DARRAY -
- - -

The resource will be accessed as a 2D texture.

-
- - ff476206 - D3D11_RTV_DIMENSION_TEXTURE2D - D3D11_RTV_DIMENSION_TEXTURE2D -
- - -

The resource will be accessed as an array of 2D textures.

-
- - ff476206 - D3D11_RTV_DIMENSION_TEXTURE2DARRAY - D3D11_RTV_DIMENSION_TEXTURE2DARRAY -
- - -

The resource will be accessed as a 2D texture with multisampling.

-
- - ff476206 - D3D11_RTV_DIMENSION_TEXTURE2DMS - D3D11_RTV_DIMENSION_TEXTURE2DMS -
- - -

The resource will be accessed as an array of 2D textures with multisampling.

-
- - ff476206 - D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY - D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY -
- - -

The resource will be accessed as a 3D texture.

-
- - ff476206 - D3D11_RTV_DIMENSION_TEXTURE3D - D3D11_RTV_DIMENSION_TEXTURE3D -
- - -

Options for the amount of information to report about a device object's lifetime.

-
- -

This enumeration is used by .

Several inline functions exist to combine the options using operators, see the D3D11SDKLayers.h header file for details.

-
- - ff476205 - D3D11_RLDO_FLAGS - D3D11_RLDO_FLAGS -
- - -

Specifies to obtain a summary about a device object's lifetime.

-
- - ff476205 - D3D11_RLDO_SUMMARY - D3D11_RLDO_SUMMARY -
- - -

Specifies to obtain detailed information about a device object's lifetime.

-
- - ff476205 - D3D11_RLDO_DETAIL - D3D11_RLDO_DETAIL -
- - - None. - - - None - None - - - -

Identifies the type of resource being used.

-
- -

This enumeration is used in .

-
- - ff476202 - D3D11_RESOURCE_DIMENSION - D3D11_RESOURCE_DIMENSION -
- - -

Resource is of unknown type.

-
- - ff476202 - D3D11_RESOURCE_DIMENSION_UNKNOWN - D3D11_RESOURCE_DIMENSION_UNKNOWN -
- - -

Resource is a buffer.

-
- - ff476202 - D3D11_RESOURCE_DIMENSION_BUFFER - D3D11_RESOURCE_DIMENSION_BUFFER -
- - -

Resource is a 1D texture.

-
- - ff476202 - D3D11_RESOURCE_DIMENSION_TEXTURE1D - D3D11_RESOURCE_DIMENSION_TEXTURE1D -
- - -

Resource is a 2D texture.

-
- - ff476202 - D3D11_RESOURCE_DIMENSION_TEXTURE2D - D3D11_RESOURCE_DIMENSION_TEXTURE2D -
- - -

Resource is a 3D texture.

-
- - ff476202 - D3D11_RESOURCE_DIMENSION_TEXTURE3D - D3D11_RESOURCE_DIMENSION_TEXTURE3D -
- - -

Identifies options for resources.

-
- -

This enumeration is used in , , , .

These flags can be combined by bitwise OR.

The cannot be used when creating resources with D3D11_CPU_ACCESS flags.

-
- - ff476203 - D3D11_RESOURCE_MISC_FLAG - D3D11_RESOURCE_MISC_FLAG -
- - -

Enables MIP map generation by using on a texture resource. The resource must be created with the bind flags that specify that the resource is a render target and a shader resource.

-
- - ff476203 - D3D11_RESOURCE_MISC_GENERATE_MIPS - D3D11_RESOURCE_MISC_GENERATE_MIPS -
- - -

Enables resource data sharing between two or more Direct3D devices. The only resources that can be shared are 2D non-mipmapped textures.

and are mutually exclusive.

WARP and REF devices do not support shared resources. If you try to create a resource with this flag on either a WARP or REF device, the create method will return an E_OUTOFMEMORY error code.

Note??Starting with Windows?8, WARP devices fully support shared resources.

Note??Starting with Windows?8, we recommend that you enable resource data sharing between two or more Direct3D devices by using a combination of the D3D11_RESOURCE_MISC_SHARED_NTHANDLE and flags instead.

-
- - ff476203 - D3D11_RESOURCE_MISC_SHARED - D3D11_RESOURCE_MISC_SHARED -
- - -

Sets a resource to be a cube texture created from a Texture2DArray that contains 6 textures.

-
- - ff476203 - D3D11_RESOURCE_MISC_TEXTURECUBE - D3D11_RESOURCE_MISC_TEXTURECUBE -
- - -

Enables instancing of GPU-generated content.

-
- - ff476203 - D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS - D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS -
- - -

Enables a resource as a byte address buffer.

-
- - ff476203 - D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS - D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS -
- - -

Enables a resource as a structured buffer.

-
- - ff476203 - D3D11_RESOURCE_MISC_BUFFER_STRUCTURED - D3D11_RESOURCE_MISC_BUFFER_STRUCTURED -
- - -

Enables a resource with MIP map clamping for use with .

-
- - ff476203 - D3D11_RESOURCE_MISC_RESOURCE_CLAMP - D3D11_RESOURCE_MISC_RESOURCE_CLAMP -
- - -

Enables the resource to be synchronized by using the and APIs. The following Direct3D?11 resource creation APIs, that take parameters, have been extended to support the new flag.

If you call any of these methods with the flag set, the interface returned will support the interface. You can retrieve a reference to the interface from the resource by using IUnknown::QueryInterface. The interface implements the and APIs to synchronize access to the surface. The device that creates the surface, and any other device that opens the surface by using OpenSharedResource, must call before they issue any rendering commands to the surface. When those devices finish rendering, they must call .

and are mutually exclusive.

WARP and REF devices do not support shared resources. If you try to create a resource with this flag on either a WARP or REF device, the create method will return an E_OUTOFMEMORY error code.

Note??Starting with Windows?8, WARP devices fully support shared resources.

-
- - ff476203 - D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX - D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX -
- - -

Enables a resource compatible with GDI. You must set the flag on surfaces that you use with GDI. Setting the flag allows GDI rendering on the surface via . -

Consider the following programming tips for using when you create a texture or use that texture in a swap chain:

  • and are mutually exclusive. Therefore, do not use them together.
  • and are mutually exclusive. Therefore, do not use them together.
  • You must bind the texture as a render target for the output-merger stage. For example, set the flag in the BindFlags member of the structure.
  • You must set the maximum number of MIP map levels to 1. For example, set the MipLevels member of the structure to 1.
  • You must specify that the texture requires read and write access by the GPU. For example, set the Usage member of the structure to .
  • You must set the texture format to one of the following types.

    • -
    • -
    For example, set the Format member of the structure to one of these types.
  • You cannot use with multisampling. Therefore, set the Count member of the structure to 1. Then, set the SampleDesc member of the structure to this structure.
-
- - ff476203 - D3D11_RESOURCE_MISC_GDI_COMPATIBLE - D3D11_RESOURCE_MISC_GDI_COMPATIBLE -
- - - None. - - - None - None - - - -

Identifies expected resource use during rendering. The usage directly reflects whether a resource is accessible by the CPU and/or the graphics processing unit (GPU).

-
- -

An application identifies the way a resource is intended to be used (its usage) in a resource description. There are several structures for creating resources including: , , , and .

Differences between Direct3D 9 and Direct3D 10/11:

In Direct3D 9, you specify the type of memory a resource should be created in at resource creation time (using ). It was an application's job to decide what memory pool would provide the best combination of functionality and performance.

In Direct3D 10/11, an application no longer specifies what type of memory (the pool) to create a resource in. Instead, you specify the intended usage of the resource, and let the runtime (in concert with the driver and a memory manager) choose the type of memory that will achieve the best performance.

?

-
- - ff476259 - D3D11_USAGE - D3D11_USAGE -
- - -

A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.

-
- - ff476259 - D3D11_USAGE_DEFAULT - D3D11_USAGE_DEFAULT -
- - -

A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.

-
- - ff476259 - D3D11_USAGE_IMMUTABLE - D3D11_USAGE_IMMUTABLE -
- - -

A resource that is accessible by both the GPU (read only) and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To update a dynamic resource, use a Map method.

For info about how to use dynamic resources, see How to: Use dynamic resources.

-
- - ff476259 - D3D11_USAGE_DYNAMIC - D3D11_USAGE_DYNAMIC -
- - -

A resource that supports data transfer (copy) from the GPU to the CPU.

-
- - ff476259 - D3D11_USAGE_STAGING - D3D11_USAGE_STAGING -
- - -

Type for scan data.

-
- - ff476322 - D3DX11_SCAN_DATA_TYPE - D3DX11_SCAN_DATA_TYPE -
- - -

FLOAT data.

-
- - ff476322 - D3DX11_SCAN_DATA_TYPE_FLOAT - D3DX11_SCAN_DATA_TYPE_FLOAT -
- - -

INT data.

-
- - ff476322 - D3DX11_SCAN_DATA_TYPE_INT - D3DX11_SCAN_DATA_TYPE_INT -
- - -

UINT data.

-
- - ff476322 - D3DX11_SCAN_DATA_TYPE_UINT - D3DX11_SCAN_DATA_TYPE_UINT -
- - -

Direction to perform scan in.

-
- - ff476323 - D3DX11_SCAN_DIRECTION - D3DX11_SCAN_DIRECTION -
- - -

Scan forward.

-
- - ff476323 - D3DX11_SCAN_DIRECTION_FORWARD - D3DX11_SCAN_DIRECTION_FORWARD -
- - -

Scan backward.

-
- - ff476323 - D3DX11_SCAN_DIRECTION_BACKWARD - D3DX11_SCAN_DIRECTION_BACKWARD -
- - -

Scan opcodes.

-
- - ff476324 - D3DX11_SCAN_OPCODE - D3DX11_SCAN_OPCODE -
- - -

Add values.

-
- - ff476324 - D3DX11_SCAN_OPCODE_ADD - D3DX11_SCAN_OPCODE_ADD -
- - -

Take the minimum value.

-
- - ff476324 - D3DX11_SCAN_OPCODE_MIN - D3DX11_SCAN_OPCODE_MIN -
- - -

Take the maximum value.

-
- - ff476324 - D3DX11_SCAN_OPCODE_MAX - D3DX11_SCAN_OPCODE_MAX -
- - -

Multiply the values.

-
- - ff476324 - D3DX11_SCAN_OPCODE_MUL - D3DX11_SCAN_OPCODE_MUL -
- - -

Perform a logical AND on the values.

-
- - ff476324 - D3DX11_SCAN_OPCODE_AND - D3DX11_SCAN_OPCODE_AND -
- - -

Perform a logical OR on the values.

-
- - ff476324 - D3DX11_SCAN_OPCODE_OR - D3DX11_SCAN_OPCODE_OR -
- - -

Perform a logical XOR on the values.

-
- - ff476324 - D3DX11_SCAN_OPCODE_XOR - D3DX11_SCAN_OPCODE_XOR -
- - -

Identifies how to view a buffer resource.

-
- -

This enumeration is used by

-
- - ff476091 - D3D11_BUFFEREX_SRV_FLAG - D3D11_BUFFEREX_SRV_FLAG -
- - -

View the buffer as raw. For more info about raw viewing of buffers, see Raw Views of Buffers.

-
- - ff476091 - D3D11_BUFFEREX_SRV_FLAG_RAW - D3D11_BUFFEREX_SRV_FLAG_RAW -
- - - None. - - - None - None - - - -

Specifies a multi-sample pattern type.

-
- -

An app calls to get the number of quality levels available during multisampling. A 0 quality level means the hardware does not support multisampling for the particular format. If the number of quality levels is greater than 0 and the hardware supports the fixed sample patterns for the sample count, the app can request the fixed patterns by specifying quality level as either or . The app can call to check for support of the standard fixed patterns. If the hardware only supports the fixed patterns but no additional vendor-specific patterns, the runtime can report the number of quality levels as 1, and the hardware can pretend 0 quality level behaves the same as quality level equal to .

The runtime defines the following standard sample patterns for 1(trivial), 2, 4, 8, and 16 sample counts. Hardware must support 1, 4, and 8 sample counts. Hardware vendors can expose more sample counts beyond these. However, if vendors support 2, 4(required), 8(required), or 16, they must also support the corresponding standard pattern or center pattern for each of those sample counts.

-
- - ff476218 - D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS - D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS -
- - -

Pre-defined multi-sample patterns required for Direct3D?11 and Direct3D?10.1 hardware.

-
- - ff476218 - D3D11_STANDARD_MULTISAMPLE_PATTERN - D3D11_STANDARD_MULTISAMPLE_PATTERN -
- - -

Pattern where all of the samples are located at the pixel center.

-
- - ff476218 - D3D11_CENTER_MULTISAMPLE_PATTERN - D3D11_CENTER_MULTISAMPLE_PATTERN -
- - -

The stencil operations that can be performed during depth-stencil testing.

-
- - ff476219 - D3D11_STENCIL_OP - D3D11_STENCIL_OP -
- - -

Keep the existing stencil data.

-
- - ff476219 - D3D11_STENCIL_OP_KEEP - D3D11_STENCIL_OP_KEEP -
- - -

Set the stencil data to 0.

-
- - ff476219 - D3D11_STENCIL_OP_ZERO - D3D11_STENCIL_OP_ZERO -
- - -

Set the stencil data to the reference value set by calling .

-
- - ff476219 - D3D11_STENCIL_OP_REPLACE - D3D11_STENCIL_OP_REPLACE -
- - -

Increment the stencil value by 1, and clamp the result.

-
- - ff476219 - D3D11_STENCIL_OP_INCR_SAT - D3D11_STENCIL_OP_INCR_SAT -
- - -

Decrement the stencil value by 1, and clamp the result.

-
- - ff476219 - D3D11_STENCIL_OP_DECR_SAT - D3D11_STENCIL_OP_DECR_SAT -
- - -

Invert the stencil data.

-
- - ff476219 - D3D11_STENCIL_OP_INVERT - D3D11_STENCIL_OP_INVERT -
- - -

Increment the stencil value by 1, and wrap the result if necessary.

-
- - ff476219 - D3D11_STENCIL_OP_INCR - D3D11_STENCIL_OP_INCR -
- - -

Decrement the stencil value by 1, and wrap the result if necessary.

-
- - ff476219 - D3D11_STENCIL_OP_DECR - D3D11_STENCIL_OP_DECR -
- - -

Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.

-
- - ff476256 - D3D11_TEXTURE_ADDRESS_MODE - D3D11_TEXTURE_ADDRESS_MODE -
- - -

Tile the texture at every (u,v) integer junction. For example, for u values between 0 and 3, the texture is repeated three times.

-
- - ff476256 - D3D11_TEXTURE_ADDRESS_WRAP - D3D11_TEXTURE_ADDRESS_WRAP -
- - -

Flip the texture at every (u,v) integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on.

-
- - ff476256 - D3D11_TEXTURE_ADDRESS_MIRROR - D3D11_TEXTURE_ADDRESS_MIRROR -
- - -

Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.

-
- - ff476256 - D3D11_TEXTURE_ADDRESS_CLAMP - D3D11_TEXTURE_ADDRESS_CLAMP -
- - -

Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in or HLSL code.

-
- - ff476256 - D3D11_TEXTURE_ADDRESS_BORDER - D3D11_TEXTURE_ADDRESS_BORDER -
- - -

Similar to and . Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.

-
- - ff476256 - D3D11_TEXTURE_ADDRESS_MIRROR_ONCE - D3D11_TEXTURE_ADDRESS_MIRROR_ONCE -
- - -

The different faces of a cube texture.

-
- - ff476255 - D3D11_TEXTURECUBE_FACE - D3D11_TEXTURECUBE_FACE -
- - -

Positive X face.

-
- - ff476255 - D3D11_TEXTURECUBE_FACE_POSITIVE_X - D3D11_TEXTURECUBE_FACE_POSITIVE_X -
- - -

Negative X face.

-
- - ff476255 - D3D11_TEXTURECUBE_FACE_NEGATIVE_X - D3D11_TEXTURECUBE_FACE_NEGATIVE_X -
- - -

Positive Y face.

-
- - ff476255 - D3D11_TEXTURECUBE_FACE_POSITIVE_Y - D3D11_TEXTURECUBE_FACE_POSITIVE_Y -
- - -

Negative Y face.

-
- - ff476255 - D3D11_TEXTURECUBE_FACE_NEGATIVE_Y - D3D11_TEXTURECUBE_FACE_NEGATIVE_Y -
- - -

Positive Z face.

-
- - ff476255 - D3D11_TEXTURECUBE_FACE_POSITIVE_Z - D3D11_TEXTURECUBE_FACE_POSITIVE_Z -
- - -

Negative Z face.

-
- - ff476255 - D3D11_TEXTURECUBE_FACE_NEGATIVE_Z - D3D11_TEXTURECUBE_FACE_NEGATIVE_Z -
- - -

Identifies unordered-access view options for a buffer resource.

-
- - ff476096 - D3D11_BUFFER_UAV_FLAG - D3D11_BUFFER_UAV_FLAG -
- - -

Resource contains raw, unstructured data. Requires the UAV format to be . For more info about raw viewing of buffers, see Raw Views of Buffers.

-
- - ff476096 - D3D11_BUFFER_UAV_FLAG_RAW - D3D11_BUFFER_UAV_FLAG_RAW -
- - -

Allow data to be appended to the end of the buffer. flag must also be used for any view that will be used as a AppendStructuredBuffer or a ConsumeStructuredBuffer. Requires the UAV format to be .

-
- - ff476096 - D3D11_BUFFER_UAV_FLAG_APPEND - D3D11_BUFFER_UAV_FLAG_APPEND -
- - -

Adds a counter to the unordered-access-view buffer. can only be used on a UAV that is a RWStructuredBuffer and it enables the functionality needed for the IncrementCounter and DecrementCounter methods in HLSL. Requires the UAV format to be .

-
- - ff476096 - D3D11_BUFFER_UAV_FLAG_COUNTER - D3D11_BUFFER_UAV_FLAG_COUNTER -
- - - None. - - - None - None - - - -

Unordered-access view options.

-
- -

This enumeration is used by a unordered access-view description (see ).

-
- - ff476257 - D3D11_UAV_DIMENSION - D3D11_UAV_DIMENSION -
- - -

The view type is unknown.

-
- - ff476257 - D3D11_UAV_DIMENSION_UNKNOWN - D3D11_UAV_DIMENSION_UNKNOWN -
- - -

View the resource as a buffer.

-
- - ff476257 - D3D11_UAV_DIMENSION_BUFFER - D3D11_UAV_DIMENSION_BUFFER -
- - -

View the resource as a 1D texture.

-
- - ff476257 - D3D11_UAV_DIMENSION_TEXTURE1D - D3D11_UAV_DIMENSION_TEXTURE1D -
- - -

View the resource as a 1D texture array.

-
- - ff476257 - D3D11_UAV_DIMENSION_TEXTURE1DARRAY - D3D11_UAV_DIMENSION_TEXTURE1DARRAY -
- - -

View the resource as a 2D texture.

-
- - ff476257 - D3D11_UAV_DIMENSION_TEXTURE2D - D3D11_UAV_DIMENSION_TEXTURE2D -
- - -

View the resource as a 2D texture array.

-
- - ff476257 - D3D11_UAV_DIMENSION_TEXTURE2DARRAY - D3D11_UAV_DIMENSION_TEXTURE2DARRAY -
- - -

View the resource as a 3D texture array.

-
- - ff476257 - D3D11_UAV_DIMENSION_TEXTURE3D - D3D11_UAV_DIMENSION_TEXTURE3D -
- - - Functions - - - - - Constant SdkVersion. - D3D11_SDK_VERSION - - - -

Creates a device that represents the display adapter.

-
-

A reference to the video adapter to use when creating a device. Pass null to use the default adapter, which is the first adapter that is enumerated by IDXGIFactory1::EnumAdapters.

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

-

The , which represents the driver type to create.

-

A handle to a DLL that implements a software rasterizer. If DriverType is , Software must not be null. Get the handle by calling LoadLibrary, LoadLibraryEx , or GetModuleHandle.

-

The runtime layers to enable (see ); values can be bitwise OR'd together.

-

A reference to an array of s, which determine the order of feature levels to attempt to create. If pFeatureLevels is set to null, this function uses the following array of feature levels:

 { , , , , , ,}; 

Note??If the Direct3D 11.1 runtime is present on the computer and pFeatureLevels is set to null, this function won't create a D3D_FEATURE_LEVEL_11_1 device. To create a D3D_FEATURE_LEVEL_11_1 device, you must explicitly provide a array that includes D3D_FEATURE_LEVEL_11_1. If you provide a array that contains D3D_FEATURE_LEVEL_11_1 on a computer that doesn't have the Direct3D 11.1 runtime installed, this function immediately fails with E_INVALIDARG.

-

The number of elements in pFeatureLevels.

-

The SDK version; use .

-

Returns the address of a reference to an object that represents the device created.

-

If successful, returns the first from the pFeatureLevels array which succeeded. Otherwise, returns 0.

-

Returns the address of a reference to an object that represents the device context.

-

This method can return one of the Direct3D 11 Return Codes.

This method returns E_INVALIDARG if you set the pAdapter parameter to a non-null value and the DriverType parameter to the value.

- -

This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to Windows Vista (KB971644).

To create a Direct3D 11.1 device (ID3D11Device1), which is available on Windows?8, Windows Server?2012, and Windows?7 and Windows Server?2008?R2 with the Platform Update for Windows 7 installed, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device1 interface. -

To create a Direct3D 11.2 device (ID3D11Device2), which is available on Windows?8.1 and Windows Server?2012?R2, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device2 interface. -

Set ppDevice and ppImmediateContext to null to determine which feature level is supported by looking at pFeatureLevel without creating a device.

For an example, see How To: Create a Device and Immediate Context; to create a device and a swap chain at the same time, use .

If you set the pAdapter parameter to a non-null value, you must also set the DriverType parameter to the value. If you set the pAdapter parameter to a non-null value and the DriverType parameter to the value, returns an of E_INVALIDARG.

Differences between Direct3D 10 and Direct3D 11:

In Direct3D 10, the presence of pAdapter dictated which adapter to use and the DriverType could mismatch what the adapter was.

In Direct3D 11, if you are trying to create a hardware or a software device, set pAdapter != null which constrains the other inputs to be:

  • DriverType must be
  • Software must be null.

On the other hand, if pAdapter == null, the DriverType cannot be set to ; it can be set to either:

  • If DriverType == , Software cannot be null.
  • If DriverType == , the adapter used will be the default adapter, which is the first adapter that is enumerated by IDXGIFactory1::EnumAdapters

?

Windows?Phone?8: This API is supported.

Windows Phone 8.1: This API is supported.

-
- - ff476082 - HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDevice -
- - -

Creates a device that represents the display adapter and a swap chain used for rendering.

-
-

A reference to the video adapter to use when creating a device. Pass null to use the default adapter, which is the first adapter enumerated by IDXGIFactory1::EnumAdapters.

Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

-

The , which represents the driver type to create.

-

A handle to a DLL that implements a software rasterizer. If DriverType is , Software must not be null. Get the handle by calling LoadLibrary, LoadLibraryEx , or GetModuleHandle. The value should be non-null when is and null otherwise.

-

The runtime layers to enable (see ); values can be bitwise OR'd together.

-

A reference to an array of s, which determine the order of feature levels to attempt to create. If pFeatureLevels is set to null, this function uses the following array of feature levels:

 { , , , , , ,}; 

Note??If the Direct3D 11.1 runtime is present on the computer and pFeatureLevels is set to null, this function won't create a D3D_FEATURE_LEVEL_11_1 device. To create a D3D_FEATURE_LEVEL_11_1 device, you must explicitly provide a array that includes D3D_FEATURE_LEVEL_11_1. If you provide a array that contains D3D_FEATURE_LEVEL_11_1 on a computer that doesn't have the Direct3D 11.1 runtime installed, this function immediately fails with E_INVALIDARG.

-

The number of elements in pFeatureLevels.

-

The SDK version; use .

-

A reference to a swap chain description (see ) that contains initialization parameters for the swap chain.

-

Returns the address of a reference to the object that represents the swap chain used for rendering.

-

Returns the address of a reference to an object that represents the device created. Supply null as an input to return the highest supported feature level in pFeatureLevel.

-

Returns a reference to a , which represents the first element in an array of feature levels supported by the device.

-

Returns the address of a reference to an object that represents the device context.

-

This method can return one of the Direct3D 11 Return Codes.

This method returns if you call it in a Session 0 process.

This method returns E_INVALIDARG if you set the pAdapter parameter to a non-null value and the DriverType parameter to the value.

- -

Note??If you call this method in a Session 0 process, it returns .

This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to Windows Vista (KB971644).

To create a Direct3D 11.1 device (ID3D11Device1), which is available on Windows?8, Windows Server?2012, and Windows?7 and Windows Server?2008?R2 with the Platform Update for Windows 7 installed, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device1 interface. -

To create a Direct3D 11.2 device (ID3D11Device2), which is available on Windows?8.1 and Windows Server?2012?R2, you first create a with this function, and then call the QueryInterface method on the object to obtain the ID3D11Device2 interface. -

Also, see the remarks section in for details about input parameter dependencies. To create a device without creating a swap chain, use the function.

If you set the pAdapter parameter to a non-null value, you must also set the DriverType parameter to the value. If you set the pAdapter parameter to a non-null value and the DriverType parameter to the value, returns an of E_INVALIDARG.

-
- - ff476083 - HRESULT D3D11CreateDeviceAndSwapChain([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[In] const DXGI_SWAP_CHAIN_DESC* pSwapChainDesc,[Out, Optional] IDXGISwapChain** ppSwapChain,[Out, Optional] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) - D3D11CreateDeviceAndSwapChain -
- - - Functions - - - - - -

Creates an COM interface object.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476277 - HRESULT D3DX11CreateFFT2DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - D3DX11CreateFFT2DComplex -
- - -

Creates an COM interface object.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476276 - HRESULT D3DX11CreateFFT1DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - D3DX11CreateFFT1DReal -
- - -

Creates an COM interface object.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476274 - HRESULT D3DX11CreateFFT([In] ID3D11DeviceContext* pDeviceContext,[In] const D3DX11_FFT_DESC* pDesc,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out, Fast] ID3DX11FFT** ppFFT) - D3DX11CreateFFT -
- - -

Creates an COM interface object.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476278 - HRESULT D3DX11CreateFFT2DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - D3DX11CreateFFT2DReal -
- - -

Creates a scan context.

-
-

The the scan is associated with.

-

Maximum single scan size, in elements (FLOAT, UINT, or INT)

-

Maximum number of scans in multiscan.

-

Pointer to a Interface reference that will be set to the created interface object.

-

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476281 - HRESULT D3DX11CreateScan([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int MaxElementScanSize,[In] unsigned int MaxScanCount,[Out, Fast] ID3DX11Scan** ppScan) - D3DX11CreateScan -
- - -

Creates an COM interface object.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476279 - HRESULT D3DX11CreateFFT3DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Z,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - D3DX11CreateFFT3DComplex -
- - -

Creates an COM interface object.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476275 - HRESULT D3DX11CreateFFT1DComplex([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - D3DX11CreateFFT1DComplex -
- - -

Creates a segmented scan context.

-
-

Pointer to an interface.

-

Maximum single scan size, in elements (FLOAT, UINT, or INT).

-

Pointer to a Interface reference that will be set to the created interface object.

-

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476282 - HRESULT D3DX11CreateSegmentedScan([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int MaxElementScanSize,[Out, Fast] ID3DX11SegmentedScan** ppScan) - D3DX11CreateSegmentedScan -
- - -

Creates an COM interface object.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476280 - HRESULT D3DX11CreateFFT3DReal([In] ID3D11DeviceContext* pDeviceContext,[In] unsigned int X,[In] unsigned int Y,[In] unsigned int Z,[In] unsigned int Flags,[Out] D3DX11_FFT_BUFFER_INFO* pBufferInfo,[Out] ID3DX11FFT** ppFFT) - D3DX11CreateFFT3DReal -
- - - Functions - - - - - - No documentation. - - No documentation. - No documentation. - No documentation. - - HRESULT D3DX11CheckVersion([In] unsigned int D3DSdkVersion,[In] unsigned int D3DX11SdkVersion) - D3DX11CheckVersion - - - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), - LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateShaderResourceView

Create a shader-resource view from a file in memory.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476284 - HRESULT D3DX11CreateShaderResourceViewFromMemory([In] ID3D11Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) - D3DX11CreateShaderResourceViewFromMemory -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the Spherical Harmonics Math library, SHProjectCubeMap.

Projects a function represented in a cube map into spherical harmonics.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476300 - HRESULT D3DX11SHProjectCubeMap([In] ID3D11DeviceContext* pContext,[In] unsigned int Order,[In] ID3D11Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut) - D3DX11SHProjectCubeMap -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use resource functions, then these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), - LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateTexture

Create a texture from another resource.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476288 - HRESULT D3DX11CreateTextureFromResourceW([In] ID3D11Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) - D3DX11CreateTextureFromResourceW -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, CaptureTexture then SaveToXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Save a texture to memory.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476299 - HRESULT D3DX11SaveTextureToMemory([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_IMAGE_FILE_FORMAT DestFormat,[Out] ID3D10Blob** ppDestBuf,[In] unsigned int Flags) - D3DX11SaveTextureToMemory -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use resource functions, then use DirectXTex library (tools), - LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Retrieves information about a given image in a resource.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

If the function succeeds, the return value is . If the function fails, the return value can be the following:

- -

The compiler setting also determines the function version. If Unicode is defined, the function call resolves to . Otherwise, the function call resolves to D3DX11GetImageInfoFromResourceA because ANSI strings are being used.

-
- - ff476293 - HRESULT D3DX11GetImageInfoFromResourceW([In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) - D3DX11GetImageInfoFromResourceW -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromFile (where XXX is DDS or WIC)
  • DirectXTex library (tools), - LoadFromXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateShaderResourceView

Create a shader-resource view from a file.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- -

For a list of supported image formats, see .

-
- - ff476283 - HRESULT D3DX11CreateShaderResourceViewFromFileW([In] ID3D11Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) - D3DX11CreateShaderResourceViewFromFileW -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromFile (where XXX is DDS or WIC)
  • DirectXTex library (tools), - LoadFromXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateTexture

Create a texture resource from a file.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476286 - HRESULT D3DX11CreateTextureFromFileW([In] ID3D11Device* pDevice,[In] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) - D3DX11CreateTextureFromFileW -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, GenerateMipMaps and GenerateMipMaps3D.

Generates mipmap chain using a particular texture filter.

-
- No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476290 - HRESULT D3DX11FilterTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pTexture,[In] unsigned int SrcLevel,[In] unsigned int MipFilter) - D3DX11FilterTexture -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, GetMetadataFromXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Retrieves information about a given image file.

-
- No documentation. - No documentation. - No documentation. - No documentation. -

If the function succeeds, the return value is . If the function fails, the return value can be the following:

- -

This function supports both Unicode and ANSI strings.

-
- - ff476291 - HRESULT D3DX11GetImageInfoFromFileW([In] const wchar_t* pSrcFile,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) - D3DX11GetImageInfoFromFileW -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use resource functions, then these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), - LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateShaderResourceView

Create a shader-resource view from a resource.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476285 - HRESULT D3DX11CreateShaderResourceViewFromResourceW([In] ID3D11Device* pDevice,[In] HINSTANCE hSrcModule,[In] const wchar_t* pSrcResource,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[In] ID3D11ShaderResourceView** ppShaderResourceView,[Out] HRESULT* pHResult) - D3DX11CreateShaderResourceViewFromResourceW -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, Resize, Convert, Compress, Decompress, and/or CopyRectangle.

Load a texture from a texture.

-
- No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476294 - HRESULT D3DX11LoadTextureFromTexture([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_TEXTURE_LOAD_INFO* pLoadInfo,[In] ID3D11Resource* pDstTexture) - D3DX11LoadTextureFromTexture -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, GetMetadataFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games).

Get information about an image already loaded into memory.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476292 - HRESULT D3DX11GetImageInfoFromMemory([In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In] ID3DX11ThreadPump* pPump,[In] D3DX11_IMAGE_INFO* pSrcInfo,[Out] HRESULT* pHResult) - D3DX11GetImageInfoFromMemory -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use these:

  • DirectXTK library (runtime), CreateXXXTextureFromMemory (where XXX is DDS or WIC)
  • DirectXTex library (tools), - LoadFromXXXMemory (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games) then CreateTexture

Create a texture resource from a file residing in system memory.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes.

- - ff476287 - HRESULT D3DX11CreateTextureFromMemory([In] ID3D11Device* pDevice,[In] const void* pSrcData,[In] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[In] ID3DX11ThreadPump* pPump,[Out] void** ppTexture,[Out] HRESULT* pHResult) - D3DX11CreateTextureFromMemory -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, ComputeNormalMap.

Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture.

-
- No documentation. - No documentation. - No documentation. - No documentation. - No documentation. - No documentation. -

If the function succeeds, the return value is . If the function fails, the return value can be the following value: .

- -

This method computes the normal by using the central difference with a kernel size of 3x3. RGB channels in the destination contain biased (x,y,z) components of the normal. The central differencing denominator is hardcoded to 2.0.

-
- - ff476264 - HRESULT D3DX11ComputeNormalMap([In] ID3D11DeviceContext* pContext,[In] ID3D11Texture2D* pSrcTexture,[In] D3DX11_NORMALMAP_FLAG Flags,[In] D3DX11_CHANNEL_FLAG Channel,[In] float Amplitude,[In] ID3D11Texture2D* pDestTexture) - D3DX11ComputeNormalMap -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Note??Instead of using this function, we recommend that you use the DirectXTex library, CaptureTexture then SaveToXXXFile (where XXX is WIC, DDS, or TGA; WIC doesn't support DDS and TGA; D3DX 9 supported TGA as a common art source format for games). For the simplified scenario of creating a screen shot from a render target texture, we recommend that you use the DirectXTK library, SaveDDSTextureToFile or SaveWICTextureToFile.

Save a texture to a file.

-
- No documentation. - No documentation. - No documentation. - No documentation. -

The return value is one of the values listed in Direct3D 11 Return Codes; use the return value to see if the DestFormat is supported.

- -

writes out the extra DDS_HEADER_DXT10 structure for the input texture only if necessary (for example, because the input texture is in standard RGB (sRGB) format). If writes out the DDS_HEADER_DXT10 structure, it sets the dwFourCC member of the DDS_PIXELFORMAT structure for the texture to DX10 to indicate the prescense of the DDS_HEADER_DXT10 extended header.

-
- - ff476298 - HRESULT D3DX11SaveTextureToFileW([In] ID3D11DeviceContext* pContext,[In] ID3D11Resource* pSrcTexture,[In] D3DX11_IMAGE_FILE_FORMAT DestFormat,[In] const wchar_t* pDestFile) - D3DX11SaveTextureToFileW -
- - - Functions - - - - - Constant TooManyUniqueViewObjects. - D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS - - - Constant DeferredContextMapWithoutInitialDiscard. - D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD - - - Constant TooManyUniqueStateObjects. - D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS - - - Constant FileNotFound. - D3D11_ERROR_FILE_NOT_FOUND - - - Constant CannotModifyIndexBuffer. - D3DX11_ERR_CANNOT_MODIFY_INDEX_BUFFER - - - Constant CannotAttrSort. - D3DX11_ERR_CANNOT_ATTR_SORT - - - Constant SkinningNotSupported. - D3DX11_ERR_SKINNING_NOT_SUPPORTED - - - Constant LoadedMeshHasNoData. - D3DX11_ERR_LOADED_MESH_HAS_NO_DATA - - - Constant CannotRemoveLastItem. - D3DX11_ERR_CANNOT_REMOVE_LAST_ITEM - - - Constant DuplicateNamedFragment. - D3DX11_ERR_DUPLICATE_NAMED_FRAGMENT - - - Constant InvalidMesh. - D3DX11_ERR_INVALID_MESH - - - Constant InvalidData. - D3DX11_ERR_INVALID_DATA - - - Constant TooManyInfluences. - D3DX11_ERR_TOO_MANY_INFLUENCES - - - -

The interface encapsulates a list of graphics commands for play back.

-
- -

There is no explicit creation method, simply declare an interface, then call to record commands or to play back commands.

-
- - ff476361 - ID3D11CommandList - ID3D11CommandList -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets the initialization flags associated with the deferred context that created the command list.

-
-

The context flag is reserved for future use and is always 0.

- -

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

-
- - ff476362 - unsigned int ID3D11CommandList::GetContextFlags() - ID3D11CommandList::GetContextFlags -
- - -

Gets the initialization flags associated with the deferred context that created the command list.

-
- -

The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

-
- - ff476362 - GetContextFlags - GetContextFlags - unsigned int ID3D11CommandList::GetContextFlags() -
- - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind an array of shader resources to the domain-shader stage.

-
-

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

-

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to set to the device.

- -

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476421 - void ID3D11DeviceContext::DSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) - ID3D11DeviceContext::DSSetShaderResources -
- - -

Set a domain shader to the device.

-
-

Pointer to a domain shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476420 - void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::DSSetShader -
- - -

Set a domain shader to the device.

-
-

Pointer to a domain shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476420 - void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::DSSetShader -
- - -

Set an array of sampler states to the domain-shader stage.

-
-

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

-

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ). See Remarks.

- -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476419 - void ID3D11DeviceContext::DSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) - ID3D11DeviceContext::DSSetSamplers -
- - -

Sets the constant buffers used by the domain-shader stage.

-
-

Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

-

Number of buffers to set (ranges from 0 to - StartSlot).

-

Array of constant buffers (see ) being given to the device.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the DSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

-
- - ff476418 - void ID3D11DeviceContext::DSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) - ID3D11DeviceContext::DSSetConstantBuffers -
- - -

Get the domain-shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476417 - void ID3D11DeviceContext::DSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) - ID3D11DeviceContext::DSGetShaderResources -
- - -

Get the domain shader currently set on the device.

-
-

Address of a reference to a domain shader (see ) to be returned by the method.

-

Pointer to an array of class instance interfaces (see ).

-

The number of class-instance elements in the array.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476416 - void ID3D11DeviceContext::DSGetShader([Out] ID3D11DomainShader** ppDomainShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) - ID3D11DeviceContext::DSGetShader -
- - -

Get an array of sampler state interfaces from the domain-shader stage.

-
-

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

-

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ).

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476415 - void ID3D11DeviceContext::DSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) - ID3D11DeviceContext::DSGetSamplers -
- - -

Get the constant buffers used by the domain-shader stage.

-
-

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

-

Number of buffers to retrieve (ranges from 0 to - StartSlot).

-

Array of constant buffer interface references (see ) to be returned by the method.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476414 - void ID3D11DeviceContext::DSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) - ID3D11DeviceContext::DSGetConstantBuffers -
- - -

A geometry-shader interface manages an executable program (a geometry shader) that controls the geometry-shader stage.

-
- -

The geometry-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a geometry shader interface, call either or . Before using a geometry shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

-
- - ff476536 - ID3D11GeometryShader - ID3D11GeometryShader -
- - Constant StreamOutputNoRasterizedStream. - D3D11_SO_NO_RASTERIZED_STREAM - - - Constant StreamOutputStreamCount. - D3D11_SO_STREAM_COUNT - - - Constant StreamOutputOutputComponentCount. - D3D11_SO_OUTPUT_COMPONENT_COUNT - - - Constant StreamOutputBufferSlotCount. - D3D11_SO_BUFFER_SLOT_COUNT - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - A dynamic class linkage interface. - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - An array of instances describing the layout of the output buffers. - An array of buffer strides; each stride is the size of an element for that buffer. - The index number of the stream to be sent to the rasterizer stage. Set to NoRasterizedStream if no stream is to be rasterized. - A dynamic class linkage interface. - - - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets the constant buffers used by the geometry shader pipeline stage.

-
-

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

-

Number of buffers to set (ranges from 0 to - StartSlot).

-

Array of constant buffers (see ) being given to the device.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

You can't use the interface to get information about what is currently bound to the pipeline in the device context. But you can use to get information from a compiled shader. For example, you can use and to determine the slot in which a geometry shader expects a constant buffer. You can then pass this slot number to GSSetConstantBuffers to set the constant buffer. You can call the D3D11Reflect function to retrieve the address of a reference to the interface and then call to get a reference to .

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the GSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

-
- - ff476436 - void ID3D11DeviceContext::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) - ID3D11DeviceContext::GSSetConstantBuffers -
- - -

Set a geometry shader to the device.

-
-

Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476438 - void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::GSSetShader -
- - -

Set a geometry shader to the device.

-
-

Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476438 - void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::GSSetShader -
- - -

Bind an array of shader resources to the geometry shader stage.

-
-

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

-

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to set to the device.

- -

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476439 - void ID3D11DeviceContext::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) - ID3D11DeviceContext::GSSetShaderResources -
- - -

Set an array of sampler states to the geometry shader pipeline stage.

-
-

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

-

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ). See Remarks.

- -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476437 - void ID3D11DeviceContext::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) - ID3D11DeviceContext::GSSetSamplers -
- - -

Get the constant buffers used by the geometry shader pipeline stage.

-
-

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

-

Number of buffers to retrieve (ranges from 0 to - StartSlot).

-

Array of constant buffer interface references (see ) to be returned by the method.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476432 - void ID3D11DeviceContext::GSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) - ID3D11DeviceContext::GSGetConstantBuffers -
- - -

Get the geometry shader currently set on the device.

-
-

Address of a reference to a geometry shader (see ) to be returned by the method.

-

Pointer to an array of class instance interfaces (see ).

-

The number of class-instance elements in the array.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476434 - void ID3D11DeviceContext::GSGetShader([Out] ID3D11GeometryShader** ppGeometryShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) - ID3D11DeviceContext::GSGetShader -
- - -

Get the geometry shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476435 - void ID3D11DeviceContext::GSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) - ID3D11DeviceContext::GSGetShaderResources -
- - -

Get an array of sampler state interfaces from the geometry shader pipeline stage.

-
-

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

-

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ).

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476433 - void ID3D11DeviceContext::GSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) - ID3D11DeviceContext::GSGetSamplers -
- - -

A hull-shader interface manages an executable program (a hull shader) that controls the hull-shader stage.

-
- -

The hull-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a hull-shader interface, call . Before using a hull shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

-
- - ff476537 - ID3D11HullShader - ID3D11HullShader -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - A dynamic class linkage interface. - - - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind an array of shader resources to the hull-shader stage.

-
- No documentation. - No documentation. - No documentation. - -

If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476448 - void ID3D11DeviceContext::HSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) - ID3D11DeviceContext::HSSetShaderResources -
- - -

Set a hull shader to the device.

-
-

Pointer to a hull shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476447 - void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::HSSetShader -
- - -

Set a hull shader to the device.

-
-

Pointer to a hull shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476447 - void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::HSSetShader -
- - -

Set an array of sampler states to the hull-shader stage.

-
- No documentation. - No documentation. - No documentation. - -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476446 - void ID3D11DeviceContext::HSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) - ID3D11DeviceContext::HSSetSamplers -
- - -

Set the constant buffers used by the hull-shader stage.

-
- No documentation. - No documentation. - No documentation. - -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the HSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

-
- - ff476445 - void ID3D11DeviceContext::HSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) - ID3D11DeviceContext::HSSetConstantBuffers -
- - -

Get the hull-shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476443 - void ID3D11DeviceContext::HSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) - ID3D11DeviceContext::HSGetShaderResources -
- - -

Get the hull shader currently set on the device.

-
-

Address of a reference to a hull shader (see ) to be returned by the method.

-

Pointer to an array of class instance interfaces (see ).

-

The number of class-instance elements in the array.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476442 - void ID3D11DeviceContext::HSGetShader([Out] ID3D11HullShader** ppHullShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) - ID3D11DeviceContext::HSGetShader -
- - -

Get an array of sampler state interfaces from the hull-shader stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476441 - void ID3D11DeviceContext::HSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) - ID3D11DeviceContext::HSGetSamplers -
- - -

Get the constant buffers used by the hull-shader stage.

-
- No documentation. - No documentation. - No documentation. - -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476440 - void ID3D11DeviceContext::HSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) - ID3D11DeviceContext::HSGetConstantBuffers -
- - -

An information-queue interface stores, retrieves, and filters debug messages. The queue consists of a message queue, an optional storage filter stack, and a optional retrieval filter stack.

-
- -

To get this interface, turn on debug layer and use IUnknown::QueryInterface from the .

Windows?Phone?8: This API is supported.

-
- - ff476538 - ID3D11InfoQueue - ID3D11InfoQueue -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Set the maximum number of messages that can be added to the message queue.

-
-

Maximum number of messages that can be added to the message queue. -1 means no limit.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

Windows?Phone?8: This API is supported.

-
- - ff476573 - HRESULT ID3D11InfoQueue::SetMessageCountLimit([In] unsigned longlong MessageCountLimit) - ID3D11InfoQueue::SetMessageCountLimit -
- - -

Clear all messages from the message queue.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476545 - void ID3D11InfoQueue::ClearStoredMessages() - ID3D11InfoQueue::ClearStoredMessages -
- - -

Get a message from the message queue.

-
-

Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with ). 0 is the message at the front of the message queue.

-

Returned message (see ).

-

Size of pMessage in bytes, including the size of the message string that the pMessage points to.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

This method does not remove any messages from the message queue.

This method gets messages from the message queue after an optional retrieval filter has been applied.

Applications should call this method twice to retrieve a message - first to obtain the size of the message and second to get the message. Here is a typical example:

 // Get the size of the message	
-             messageLength = 0;	
-             hr = pInfoQueue->GetMessage(0, null, &messageLength); // Allocate space and get the message	
-             * pMessage = (*)malloc(messageLength);	
-            hr = pInfoQueue->GetMessage(0, pMessage, &messageLength);	
-            

For an overview see Information Queue Overview.

Windows?Phone?8: This API is supported.

-
- - ff476549 - HRESULT ID3D11InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength) - ID3D11InfoQueue::GetMessageW -
- - -

Get the number of messages that were allowed to pass through a storage filter.

-
-

Number of messages allowed by a storage filter.

- -

Windows?Phone?8: This API is supported.

-
- - ff476552 - unsigned longlong ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter() - ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter -
- - -

Get the number of messages that were denied passage through a storage filter.

-
-

Number of messages denied by a storage filter.

- -

Windows?Phone?8: This API is supported.

-
- - ff476553 - unsigned longlong ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter() - ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter -
- - -

Get the number of messages currently stored in the message queue.

-
-

Number of messages currently stored in the message queue.

- -

Windows?Phone?8: This API is supported.

-
- - ff476556 - unsigned longlong ID3D11InfoQueue::GetNumStoredMessages() - ID3D11InfoQueue::GetNumStoredMessages -
- - -

Get the number of messages that are able to pass through a retrieval filter.

-
-

Number of messages allowed by a retrieval filter.

- -

Windows?Phone?8: This API is supported.

-
- - ff476557 - unsigned longlong ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() - ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter -
- - -

Get the number of messages that were discarded due to the message count limit.

-
-

Number of messages discarded.

- -

Get and set the message count limit with and , respectively.

Windows?Phone?8: This API is supported.

-
- - ff476554 - unsigned longlong ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() - ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit -
- - -

Get the maximum number of messages that can be added to the message queue.

-
-

Maximum number of messages that can be added to the queue. -1 means no limit.

- -

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

Windows?Phone?8: This API is supported.

-
- - ff476550 - unsigned longlong ID3D11InfoQueue::GetMessageCountLimit() - ID3D11InfoQueue::GetMessageCountLimit -
- - -

Add storage filters to the top of the storage-filter stack.

-
-

Array of storage filters (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476542 - HRESULT ID3D11InfoQueue::AddStorageFilterEntries([In] D3D11_INFO_QUEUE_FILTER* pFilter) - ID3D11InfoQueue::AddStorageFilterEntries -
- - -

Get the storage filter at the top of the storage-filter stack.

-
-

Storage filter at the top of the storage-filter stack.

-

Size of the storage filter in bytes. If pFilter is null, the size of the storage filter will be output to this parameter.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476560 - HRESULT ID3D11InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) - ID3D11InfoQueue::GetStorageFilter -
- - -

Remove a storage filter from the top of the storage-filter stack.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476544 - void ID3D11InfoQueue::ClearStorageFilter() - ID3D11InfoQueue::ClearStorageFilter -
- - -

Push an empty storage filter onto the storage-filter stack.

-
-

This method returns one of the following Direct3D 11 Return Codes.

- -

An empty storage filter allows all messages to pass through.

Windows?Phone?8: This API is supported.

-
- - ff476567 - HRESULT ID3D11InfoQueue::PushEmptyStorageFilter() - ID3D11InfoQueue::PushEmptyStorageFilter -
- - -

Push a copy of storage filter currently on the top of the storage-filter stack onto the storage-filter stack.

-
-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476565 - HRESULT ID3D11InfoQueue::PushCopyOfStorageFilter() - ID3D11InfoQueue::PushCopyOfStorageFilter -
- - -

Push a storage filter onto the storage-filter stack.

-
-

Pointer to a storage filter (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476569 - HRESULT ID3D11InfoQueue::PushStorageFilter([In] D3D11_INFO_QUEUE_FILTER* pFilter) - ID3D11InfoQueue::PushStorageFilter -
- - -

Pop a storage filter from the top of the storage-filter stack.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476563 - void ID3D11InfoQueue::PopStorageFilter() - ID3D11InfoQueue::PopStorageFilter -
- - -

Get the size of the storage-filter stack in bytes.

-
-

Size of the storage-filter stack in bytes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476561 - unsigned int ID3D11InfoQueue::GetStorageFilterStackSize() - ID3D11InfoQueue::GetStorageFilterStackSize -
- - -

Add storage filters to the top of the retrieval-filter stack.

-
-

Array of retrieval filters (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

The following code example shows how to use :

  cats[] = { ..., ..., ... };	
-             sevs[] = { ..., ..., ... };	
-            UINT ids[] = { ..., ..., ... };  filter;	
-            memset( &filter, 0, sizeof(filter) ); // To set the type of messages to allow, 	
-            // set filter.AllowList as follows:	
-            filter.AllowList.NumCategories = sizeof(cats / sizeof()); 	
-            filter.AllowList.pCategoryList = cats;	
-            filter.AllowList.NumSeverities = sizeof(sevs / sizeof()); 	
-            filter.AllowList.pSeverityList = sevs;	
-            filter.AllowList.NumIDs = sizeof(ids) / sizeof(UINT);	
-            filter.AllowList.pIDList = ids; // To set the type of messages to deny, set filter.DenyList 	
-            // similarly to the preceding filter.AllowList. // The following single call sets all of the preceding information.	
-            hr = infoQueue->AddRetrievalFilterEntries( &filter );	
-            

Windows?Phone?8: This API is supported.

-
- - ff476541 - HRESULT ID3D11InfoQueue::AddRetrievalFilterEntries([In] D3D11_INFO_QUEUE_FILTER* pFilter) - ID3D11InfoQueue::AddRetrievalFilterEntries -
- - -

Get the retrieval filter at the top of the retrieval-filter stack.

-
-

Retrieval filter at the top of the retrieval-filter stack.

-

Size of the retrieval filter in bytes. If pFilter is null, the size of the retrieval filter will be output to this parameter.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476558 - HRESULT ID3D11InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) - ID3D11InfoQueue::GetRetrievalFilter -
- - -

Remove a retrieval filter from the top of the retrieval-filter stack.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476543 - void ID3D11InfoQueue::ClearRetrievalFilter() - ID3D11InfoQueue::ClearRetrievalFilter -
- - -

Push an empty retrieval filter onto the retrieval-filter stack.

-
-

This method returns one of the following Direct3D 11 Return Codes.

- -

An empty retrieval filter allows all messages to pass through.

Windows?Phone?8: This API is supported.

-
- - ff476566 - HRESULT ID3D11InfoQueue::PushEmptyRetrievalFilter() - ID3D11InfoQueue::PushEmptyRetrievalFilter -
- - -

Push a copy of retrieval filter currently on the top of the retrieval-filter stack onto the retrieval-filter stack.

-
-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476564 - HRESULT ID3D11InfoQueue::PushCopyOfRetrievalFilter() - ID3D11InfoQueue::PushCopyOfRetrievalFilter -
- - -

Push a retrieval filter onto the retrieval-filter stack.

-
-

Pointer to a retrieval filter (see ).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476568 - HRESULT ID3D11InfoQueue::PushRetrievalFilter([In] D3D11_INFO_QUEUE_FILTER* pFilter) - ID3D11InfoQueue::PushRetrievalFilter -
- - -

Pop a retrieval filter from the top of the retrieval-filter stack.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476562 - void ID3D11InfoQueue::PopRetrievalFilter() - ID3D11InfoQueue::PopRetrievalFilter -
- - -

Get the size of the retrieval-filter stack in bytes.

-
-

Size of the retrieval-filter stack in bytes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476559 - unsigned int ID3D11InfoQueue::GetRetrievalFilterStackSize() - ID3D11InfoQueue::GetRetrievalFilterStackSize -
- - -

Add a debug message to the message queue and send that message to debug output.

-
-

Category of a message (see ).

-

Severity of a message (see ).

-

Unique identifier of a message (see ).

-

User-defined message.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

This method is used by the runtime's internal mechanisms to add debug messages to the message queue and send them to debug output. For applications to add their own custom messages to the message queue and send them to debug output, call .

Windows?Phone?8: This API is supported.

-
- - ff476540 - HRESULT ID3D11InfoQueue::AddMessage([In] D3D11_MESSAGE_CATEGORY Category,[In] D3D11_MESSAGE_SEVERITY Severity,[In] D3D11_MESSAGE_ID ID,[In] const char* pDescription) - ID3D11InfoQueue::AddMessage -
- - -

Add a user-defined message to the message queue and send that message to debug output.

-
-

Severity of a message (see ).

-

Message string.

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476539 - HRESULT ID3D11InfoQueue::AddApplicationMessage([In] D3D11_MESSAGE_SEVERITY Severity,[In] const char* pDescription) - ID3D11InfoQueue::AddApplicationMessage -
- - -

Set a message category to break on when a message with that category passes through the storage filter.

-
-

Message category to break on (see ).

-

Turns this breaking condition on or off (true for on, false for off).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476570 - HRESULT ID3D11InfoQueue::SetBreakOnCategory([In] D3D11_MESSAGE_CATEGORY Category,[In] BOOL bEnable) - ID3D11InfoQueue::SetBreakOnCategory -
- - -

Set a message severity level to break on when a message with that severity level passes through the storage filter.

-
-

A , which represents a message severity level to break on.

-

Turns this breaking condition on or off (true for on, false for off).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476572 - HRESULT ID3D11InfoQueue::SetBreakOnSeverity([In] D3D11_MESSAGE_SEVERITY Severity,[In] BOOL bEnable) - ID3D11InfoQueue::SetBreakOnSeverity -
- - -

Set a message identifier to break on when a message with that identifier passes through the storage filter.

-
-

Message identifier to break on (see ).

-

Turns this breaking condition on or off (true for on, false for off).

-

This method returns one of the following Direct3D 11 Return Codes.

- -

Windows?Phone?8: This API is supported.

-
- - ff476571 - HRESULT ID3D11InfoQueue::SetBreakOnID([In] D3D11_MESSAGE_ID ID,[In] BOOL bEnable) - ID3D11InfoQueue::SetBreakOnID -
- - -

Get a message category to break on when a message with that category passes through the storage filter.

-
-

Message category to break on (see ).

-

Whether this breaking condition is turned on or off (true for on, false for off).

- -

Windows?Phone?8: This API is supported.

-
- - ff476546 - BOOL ID3D11InfoQueue::GetBreakOnCategory([In] D3D11_MESSAGE_CATEGORY Category) - ID3D11InfoQueue::GetBreakOnCategory -
- - -

Get a message severity level to break on when a message with that severity level passes through the storage filter.

-
-

Message severity level to break on (see ).

-

Whether this breaking condition is turned on or off (true for on, false for off).

- -

Windows?Phone?8: This API is supported.

-
- - ff476548 - BOOL ID3D11InfoQueue::GetBreakOnSeverity([In] D3D11_MESSAGE_SEVERITY Severity) - ID3D11InfoQueue::GetBreakOnSeverity -
- - -

Get a message identifier to break on when a message with that identifier passes through the storage filter.

-
-

Message identifier to break on (see ).

-

Whether this breaking condition is turned on or off (true for on, false for off).

- -

Windows?Phone?8: This API is supported.

-
- - ff476547 - BOOL ID3D11InfoQueue::GetBreakOnID([In] D3D11_MESSAGE_ID ID) - ID3D11InfoQueue::GetBreakOnID -
- - -

Set a boolean that turns the debug output on or off.

-
-

Disable/Enable the debug output (TRUE to disable or mute the output, to enable the output).

- -

This will stop messages that pass the storage filter from being printed out in the debug output, however those messages will still be added to the message queue.

Windows?Phone?8: This API is supported.

-
- - ff476574 - void ID3D11InfoQueue::SetMuteDebugOutput([In] BOOL bMute) - ID3D11InfoQueue::SetMuteDebugOutput -
- - -

Get a boolean that turns the debug output on or off.

-
-

Whether the debug output is on or off (true for on, false for off).

- -

Windows?Phone?8: This API is supported.

-
- - ff476551 - BOOL ID3D11InfoQueue::GetMuteDebugOutput() - ID3D11InfoQueue::GetMuteDebugOutput -
- - -

Get a message from the message queue.

-
-

Index into message queue after an optional retrieval filter has been applied. This can be between 0 and the number of messages in the message queue that pass through the retrieval filter (which can be obtained with ). 0 is the message at the front of the message queue.

- Returned message (see ) - ff476549 - HRESULT ID3D11InfoQueue::GetMessageW([In] unsigned longlong MessageIndex,[In] void* pMessage,[InOut] SIZE_T* pMessageByteLength) - ID3D11InfoQueue::GetMessageW -
- - -

Get the storage filter at the top of the storage-filter stack.

-
- The storage filter at the top of the storage-filter stack. - ff476560 - HRESULT ID3D11InfoQueue::GetStorageFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) - ID3D11InfoQueue::GetStorageFilter -
- - -

Get the retrieval filter at the top of the retrieval-filter stack.

-
- The retrieval filter at the top of the retrieval-filter stack. - ff476558 - HRESULT ID3D11InfoQueue::GetRetrievalFilter([In] void* pFilter,[InOut] SIZE_T* pFilterByteLength) - ID3D11InfoQueue::GetRetrievalFilter -
- - -

Get or sets the maximum number of messages that can be added to the message queue.

-
- -

When the number of messages in the message queue has reached the maximum limit, new messages coming in will push old messages out.

Windows?Phone?8: This API is supported.

-
- - ff476550 - GetMessageCountLimit / SetMessageCountLimit - GetMessageCountLimit - unsigned longlong ID3D11InfoQueue::GetMessageCountLimit() -
- - -

Get the number of messages that were allowed to pass through a storage filter.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476552 - GetNumMessagesAllowedByStorageFilter - GetNumMessagesAllowedByStorageFilter - unsigned longlong ID3D11InfoQueue::GetNumMessagesAllowedByStorageFilter() -
- - -

Get the number of messages that were denied passage through a storage filter.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476553 - GetNumMessagesDeniedByStorageFilter - GetNumMessagesDeniedByStorageFilter - unsigned longlong ID3D11InfoQueue::GetNumMessagesDeniedByStorageFilter() -
- - -

Get the number of messages currently stored in the message queue.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476556 - GetNumStoredMessages - GetNumStoredMessages - unsigned longlong ID3D11InfoQueue::GetNumStoredMessages() -
- - -

Get the number of messages that are able to pass through a retrieval filter.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476557 - GetNumStoredMessagesAllowedByRetrievalFilter - GetNumStoredMessagesAllowedByRetrievalFilter - unsigned longlong ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter() -
- - -

Get the number of messages that were discarded due to the message count limit.

-
- -

Get and set the message count limit with and , respectively.

Windows?Phone?8: This API is supported.

-
- - ff476554 - GetNumMessagesDiscardedByMessageCountLimit - GetNumMessagesDiscardedByMessageCountLimit - unsigned longlong ID3D11InfoQueue::GetNumMessagesDiscardedByMessageCountLimit() -
- - -

Get the size of the storage-filter stack in bytes.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476561 - GetStorageFilterStackSize - GetStorageFilterStackSize - unsigned int ID3D11InfoQueue::GetStorageFilterStackSize() -
- - -

Get the size of the retrieval-filter stack in bytes.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476559 - GetRetrievalFilterStackSize - GetRetrievalFilterStackSize - unsigned int ID3D11InfoQueue::GetRetrievalFilterStackSize() -
- - -

Get or sets a boolean that turns the debug output on or off.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476551 - GetMuteDebugOutput / SetMuteDebugOutput - GetMuteDebugOutput - BOOL ID3D11InfoQueue::GetMuteDebugOutput() -
- - -

An input-layout interface holds a definition of how to feed vertex data that is laid out in memory into the input-assembler stage of the graphics pipeline.

-
- -

To create an input-layout object, call . To bind the input-layout object to the input-assembler stage, call .

Windows?Phone?8: This API is supported.

-
- - ff476575 - ID3D11InputLayout - ID3D11InputLayout -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the object to describe the - input-buffer data for the input-assembler stage. - - ID3D11Device::CreateInputLayout - The device used to create the layout. - An array of input elements describing the layout of the input data. - The compiled shader used to validate the input elements. - - - -

A pixel-shader interface manages an executable program (a pixel shader) that controls the pixel-shader stage.

-
- -

The pixel-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in are implemented from a common set of features referred to as the common-shader core..

To create a pixel shader interface, call . Before using a pixel shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

Windows?Phone?8: This API is supported.

-
- - ff476576 - ID3D11PixelShader - ID3D11PixelShader -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - A dynamic class linkage interface. - - - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - Constant InputRegisterComponentBitCount. - D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT - - - Constant OutputRegisterComponentBitCount. - D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT - - - Constant PixelCenterFractionalComponent. - D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT - - - Constant OutputRegisterComponents. - D3D11_PS_OUTPUT_REGISTER_COMPONENTS - - - Constant OutputMaskRegisterComponents. - D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS - - - Constant InputRegisterComponents. - D3D11_PS_INPUT_REGISTER_COMPONENTS - - - Constant LegacyPixelCenterFractionalComponent. - D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT - - - Constant OutputMaskRegisterComponentBitCount. - D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT - - - Constant OutputMaskRegisterCount. - D3D11_PS_OUTPUT_MASK_REGISTER_COUNT - - - Constant FrontfacingTrueValue. - D3D11_PS_FRONTFACING_TRUE_VALUE - - - Constant OutputDepthRegisterCount. - D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT - - - Constant OutputDepthRegisterComponents. - D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS - - - Constant InputRegisterReadsPerInst. - D3D11_PS_INPUT_REGISTER_READS_PER_INST - - - Constant OutputRegisterCount. - D3D11_PS_OUTPUT_REGISTER_COUNT - - - Constant OutputDepthRegisterComponentBitCount. - D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT - - - Constant FrontfacingDefaultValue. - D3D11_PS_FRONTFACING_DEFAULT_VALUE - - - Constant FrontfacingFalseValue. - D3D11_PS_FRONTFACING_FALSE_VALUE - - - Constant InputRegisterCount. - D3D11_PS_INPUT_REGISTER_COUNT - - - Constant InputRegisterReadPorts. - D3D11_PS_INPUT_REGISTER_READ_PORTS - - - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Bind an array of shader resources to the pixel shader stage.

-
-

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

-

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to set to the device.

- -

If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476473 - void ID3D11DeviceContext::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) - ID3D11DeviceContext::PSSetShaderResources -
- - -

Sets a pixel shader to the device.

-
-

Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Set ppClassInstances to null if no interfaces are used in the shader. If it is not null, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.

Windows?Phone?8: This API is supported.

-
- - ff476472 - void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::PSSetShader -
- - -

Sets a pixel shader to the device.

-
-

Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Set ppClassInstances to null if no interfaces are used in the shader. If it is not null, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.

Windows?Phone?8: This API is supported.

-
- - ff476472 - void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::PSSetShader -
- - -

Set an array of sampler states to the pixel shader pipeline stage.

-
-

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

-

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ). See Remarks.

- -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MipLODBias0
MaxAnisotropy1
ComparisonFunc
BorderColor[0]1.0f
BorderColor[1]1.0f
BorderColor[2]1.0f
BorderColor[3]1.0f
MinLOD-FLT_MAX
MaxLODFLT_MAX

?

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476471 - void ID3D11DeviceContext::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) - ID3D11DeviceContext::PSSetSamplers -
- - -

Sets the constant buffers used by the pixel shader pipeline stage.

-
-

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

-

Number of buffers to set (ranges from 0 to - StartSlot).

-

Array of constant buffers (see ) being given to the device.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available on Windows?8 and later operating systems, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the PSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

-
- - ff476470 - void ID3D11DeviceContext::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) - ID3D11DeviceContext::PSSetConstantBuffers -
- - -

Bind an array of shader resources to the pixel shader stage.

-
-

Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

-

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to set to the device.

- -

If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476473 - void ID3D11DeviceContext::PSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) - ID3D11DeviceContext::PSGetShaderResources -
- - -

Get the pixel shader currently set on the device.

-
-

Address of a reference to a pixel shader (see ) to be returned by the method.

-

Pointer to an array of class instance interfaces (see ).

-

The number of class-instance elements in the array.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476468 - void ID3D11DeviceContext::PSGetShader([Out] ID3D11PixelShader** ppPixelShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) - ID3D11DeviceContext::PSGetShader -
- - -

Get an array of sampler states from the pixel shader pipeline stage.

-
-

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

-

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Arry of sampler-state interface references (see ) to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476467 - void ID3D11DeviceContext::PSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) - ID3D11DeviceContext::PSGetSamplers -
- - -

Get the constant buffers used by the pixel shader pipeline stage.

-
-

Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

-

Number of buffers to retrieve (ranges from 0 to - StartSlot).

-

Array of constant buffer interface references (see ) to be returned by the method.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476466 - void ID3D11DeviceContext::PSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) - ID3D11DeviceContext::PSGetConstantBuffers -
- - -

A predicate interface determines whether geometry should be processed depending on the results of a previous draw call.

-
- -

To create a predicate object, call . To set the predicate object, call .

There are two types of predicates: stream-output-overflow predicates and occlusion predicates. Stream-output-overflow predicates cause any geometry residing in stream-output buffers that were overflowed to not be processed. Occlusion predicates cause any geometry that did not have a single sample pass the depth/stencil tests to not be processed.

Windows?Phone?8: This API is supported.

-
- - ff476577 - ID3D11Predicate - ID3D11Predicate -
- - -

A query interface queries information from the GPU.

-
- -

A query can be created with .

Query data is typically gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of query.

There are, however, some queries that do not require calls to Begin. For a list of possible queries see .

A query is typically executed as shown in the following code:

  queryDesc;	
-            ... // Fill out queryDesc structure	
-             * pQuery;	
-            pDevice->CreateQuery(&queryDesc, &pQuery);	
-            pDeviceContext->Begin(pQuery); ... // Issue graphics commands pDeviceContext->End(pQuery);	
-            UINT64 queryData; // This data type is different depending on the query type while(  != pDeviceContext->GetData(pQuery, &queryData, sizeof(UINT64), 0) )	
-            {	
-            }	
-            

When using a query that does not require a call to Begin, it still requires a call to End. The call to End causes the data returned by GetData to be accurate up until the last call to End.

Windows?Phone?8: This API is supported.

-
- - ff476578 - ID3D11Query - ID3D11Query -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a query description.

-
-

Pointer to a query description (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476579 - void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc) - ID3D11Query::GetDesc -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The query description. - The newly created object. - - - -

Get a query description.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476579 - GetDesc - GetDesc - void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc) -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The query description. - The newly created object. - - - -

The rasterizer-state interface holds a description for rasterizer state that you can bind to the rasterizer stage.

-
- -

To create a rasterizer-state object, call . To bind the rasterizer-state object to the rasterizer stage, call .

Windows?Phone?8: This API is supported.

-
- - ff476580 - ID3D11RasterizerState - ID3D11RasterizerState -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets the description for rasterizer state that you used to create the rasterizer-state object.

-
-

A reference to a structure that receives a description of the rasterizer state.

- -

You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

Windows?Phone?8: This API is supported.

-
- - ff476581 - void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc) - ID3D11RasterizerState::GetDesc -
- - -

Create a rasterizer state object that tells the rasterizer stage how to behave.

-
- The device with which to associate the state object. - A rasterizer state description - -

4096 unique rasterizer state objects can be created on a device at a time.

If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.

-
- ff476516 - HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState) - ID3D11Device::CreateRasterizerState -
- - -

Gets the description for rasterizer state that you used to create the rasterizer-state object.

-
- -

You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

Windows?Phone?8: This API is supported.

-
- - ff476581 - GetDesc - GetDesc - void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc) -
- - -

A render-target-view interface identifies the render-target subresources that can be accessed during rendering.

-
- -

To create a render-target view, call . To bind a render-target view to the pipeline, call .

A rendertarget is a resource that can be written by the output-merger stage at the end of a render pass. Each render-target should also have a corresponding depth-stencil view.

Windows?Phone?8: This API is supported.

-
- - ff476582 - ID3D11RenderTargetView - ID3D11RenderTargetView -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the properties of a render target view.

-
-

Pointer to the description of a render target view (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476583 - void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc) - ID3D11RenderTargetView::GetDesc -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. - ID3D11Device::CreateRenderTargetView - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. - A structure describing the to be created. - ID3D11Device::CreateRenderTargetView - - - -

Get the properties of a render target view.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476583 - GetDesc - GetDesc - void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc) -
- - -

The sampler-state interface holds a description for sampler state that you can bind to any shader stage of the pipeline for reference by texture sample operations.

-
- -

To create a sampler-state object, call .

To bind a sampler-state object to any pipeline shader stage, call the following methods:

You can bind the same sampler-state object to multiple shader stages simultaneously.

Windows?Phone?8: This API is supported.

-
- - ff476588 - ID3D11SamplerState - ID3D11SamplerState -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Gets the description for sampler state that you used to create the sampler-state object.

-
-

A reference to a structure that receives a description of the sampler state.

- -

You use the description for sampler state in a call to the method to create the sampler-state object.

Windows?Phone?8: This API is supported.

-
- - ff476589 - void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc) - ID3D11SamplerState::GetDesc -
- - - Constructs a new based on the specified description. - - The device with which to associate the state object. - The state description. - The newly created object. - ff476518 - HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState) - ID3D11Device::CreateSamplerState - - - -

Gets the description for sampler state that you used to create the sampler-state object.

-
- -

You use the description for sampler state in a call to the method to create the sampler-state object.

Windows?Phone?8: This API is supported.

-
- - ff476589 - GetDesc - GetDesc - void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc) -
- - -

Sets which direction to perform scans in.

-
- -

SetScanDirection sets the direction and will performed scans in.

-
- - ff476857 - ID3DX11Scan - ID3DX11Scan -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets which direction to perform scans in.

-
-

Direction to perform scans in. See .

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

SetScanDirection sets the direction and will performed scans in.

-
- - ff476857 - HRESULT ID3DX11Scan::SetScanDirection([In] D3DX11_SCAN_DIRECTION Direction) - ID3DX11Scan::SetScanDirection -
- - -

Performs an unsegmented scan of a sequence.

-
-

The type of element in the sequence. See for more information.

-

The binary operation to perform. See for more information.

-

Size of scan in elements.

-

Input sequence on the device. Set pSrc and pDst to the same value for in-place scans.

-

Output sequence on the device.

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

-
- - ff476856 - HRESULT ID3DX11Scan::Scan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pDst) - ID3DX11Scan::Scan -
- - -

Performs a multiscan of a sequence.

-
-

The type of element in the sequence. See for more information.

-

The binary operation to perform. See for more information.

-

Size of scan in elements.

-

Pitch of the next scan in elements.

-

Number of scans in the multiscan.

-

Input sequence on the device. Set pSrc and pDst to the same value for in-place scans.

-

Output sequence on the device.

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

-
- - ff476855 - HRESULT ID3DX11Scan::Multiscan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In] unsigned int ElementScanPitch,[In] unsigned int ScanCount,[In] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pDst) - ID3DX11Scan::Multiscan -
- - - Creates a scan context. - - The the scan is associated with. - Maximum single scan size, in elements (FLOAT, UINT, or INT) - Maximum number of scans in multiscan. - HRESULT D3DX11CreateScan([In] ID3D11DeviceContext* pDeviceContext,[None] int MaxElementScanSize,[None] int MaxScanCount,[Out] ID3DX11Scan** ppScan) - - - -

Performs a segmented scan of a sequence.

-
- -

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

The format of the resource view to which the pSrcElementFlags parameter points must be .

-
- - ff476859 - ID3DX11SegmentedScan - ID3DX11SegmentedScan -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets which direction to perform scans in.

-
-

Direction to perform scans in. See .

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

SetScanDirection sets the direction will performed scans in.

-
- - ff476860 - HRESULT ID3DX11SegmentedScan::SetScanDirection([In] D3DX11_SCAN_DIRECTION Direction) - ID3DX11SegmentedScan::SetScanDirection -
- - -

Performs a segmented scan of a sequence.

-
-

The type of element in the sequence. See for more information.

-

The binary operation to perform. See for more information.

-

Size of scan in elements.

-

Input sequence on the device. Set pSrc and pDst to the same value for in-place scans.

-

Compact array of bits with one bit per element of pSrc. A set value indicates the start of a new segment.

-

Output sequence on the device.

-

Returns one of the return codes described in the topic Direct3D 11 Return Codes.

- -

You must point the parameters pSrc and pDst to typed buffers (and not to raw or structured buffers). For information about buffer types, see Types of Resources. The format of these typed buffers must be , , or DXGI_FORMAT_R32_INT. In addition, the format of these typed buffers must match the scan data type that you specify in the ElementType parameter. For example, if the scan data type is , the buffer formats must be .

The format of the resource view to which the pSrcElementFlags parameter points must be .

-
- - ff476859 - HRESULT ID3DX11SegmentedScan::SegScan([In] D3DX11_SCAN_DATA_TYPE ElementType,[In] D3DX11_SCAN_OPCODE OpCode,[In] unsigned int ElementScanSize,[In, Optional] ID3D11UnorderedAccessView* pSrc,[In] ID3D11UnorderedAccessView* pSrcElementFlags,[In] ID3D11UnorderedAccessView* pDst) - ID3DX11SegmentedScan::SegScan -
- - - Creates a segmented scan context. - - Pointer to an interface. - Maximum single scan size, in elements (FLOAT, UINT, or INT). - HRESULT D3DX11CreateSegmentedScan([In] ID3D11DeviceContext* pDeviceContext,[None] int MaxElementScanSize,[Out] ID3DX11SegmentedScan** ppScan) - - - -

A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, and a texture.

-
- -

To create a shader-resource view, call .

A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling , or .

Windows?Phone?8: This API is supported.

-
- - ff476628 - ID3D11ShaderResourceView - ID3D11ShaderResourceView -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the shader resource view's description.

-
-

A reference to a structure to be filled with data about the shader resource view.

- -

Windows?Phone?8: This API is supported.

-
- - ff476629 - void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc) - ID3D11ShaderResourceView::GetDesc -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. - ff476519 - HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) - ID3D11Device::CreateShaderResourceView - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. - A structure describing the to be created. - ff476519 - HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) - ID3D11Device::CreateShaderResourceView - - - - Create a shader-resource view from a file. Read the characteristics of a texture when the texture is loaded. - - A reference to the device (see ) that will use the resource. - Name of the file that contains the shader-resource view. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX11CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file. - - A reference to the device (see ) that will use the resource. - Name of the file that contains the shader-resource view. - Identifies the characteristics of a texture (see ) when the data processor is created. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX11CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in memory. - - A reference to the device (see ) that will use the resource. - Pointer to a memory location that contains the shader-resource view. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in memory. - - A reference to the device (see ) that will use the resource. - Pointer to a memory location that contains the shader-resource view. - Identifies the characteristics of a texture (see ) when the data processor is created. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in a stream.. - - A reference to the device (see ) that will use the resource. - Pointer to the file in memory that contains the shader-resource view. - Size of the file to read from the stream - Returns a reference to the shader-resource view (see ). - HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - - Create a shader-resource view from a file in a stream.. - - A reference to the device (see ) that will use the resource. - Pointer to the file in memory that contains the shader-resource view. - Size of the file to read from the stream - Identifies the characteristics of a texture (see ) when the data processor is created. - Returns a reference to the shader-resource view (see ). - HRESULT D3DX11CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX11_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX11ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) - - - -

Get the shader resource view's description.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476629 - GetDesc - GetDesc - void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc) -
- - -

Note??The interface and its methods are not supported in Direct3D 11.

-
- - ff476630 - ID3D11SwitchToRef - ID3D11SwitchToRef -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Note??The interface and its methods are not supported in Direct3D 11.

-
- No documentation. -

Reserved.

- - ff476632 - BOOL ID3D11SwitchToRef::SetUseRef([In] BOOL UseRef) - ID3D11SwitchToRef::SetUseRef -
- - -

Note??The interface and its methods are not supported in Direct3D 11.

-
-

Reserved.

- - ff476631 - BOOL ID3D11SwitchToRef::GetUseRef() - ID3D11SwitchToRef::GetUseRef -
- - -

Note??The interface and its methods are not supported in Direct3D 11.

-
- - ff476631 - GetUseRef - GetUseRef - BOOL ID3D11SwitchToRef::GetUseRef() -
- - -

A 1D texture interface accesses texel data, which is structured memory.

-
- -

To create an empty 1D texture, call . For info about how to create a 2D texture, which is similar to creating a 1D texture, see How to: Create a Texture.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

Windows?Phone?8: This API is supported.

-
- - ff476633 - ID3D11Texture1D - ID3D11Texture1D -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the properties of the texture resource.

-
-

Pointer to a resource description (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476634 - void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc) - ID3D11Texture1D::GetDesc -
- - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - ff476520 - HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) - ID3D11Device::CreateTexture1D - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - ff476520 - HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) - ID3D11Device::CreateTexture1D - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - ff476520 - HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) - ID3D11Device::CreateTexture1D - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - ff476520 - HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) - ID3D11Device::CreateTexture1D - - - - - - -

Get the properties of the texture resource.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476634 - GetDesc - GetDesc - void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc) -
- - -

A 2D texture interface manages texel data, which is structured memory.

-
- -

To create an empty Texture2D resource, call . For info about how to create a 2D texture, see How to: Create a Texture.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

Windows?Phone?8: This API is supported.

-
- - ff476635 - ID3D11Texture2D - ID3D11Texture2D -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the properties of the texture resource.

-
-

Pointer to a resource description (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476636 - void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc) - ID3D11Texture2D::GetDesc -
- - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - ff476521 - HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) - ID3D11Device::CreateTexture2D - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - ff476521 - HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) - ID3D11Device::CreateTexture2D - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - ff476521 - HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) - ID3D11Device::CreateTexture2D - - - - - - - Converts a height map into a normal map. The (x,y,z) components of each normal are mapped to the (r,g,b) channels of the output texture. - - The device used to create the normal map. - The source height map texture. - The destination texture. - One or more flags that control generation of normal maps. - One or more flag specifying the source of height information. - Constant value multiplier that increases (or decreases) the values in the normal map. Higher values usually make bumps more visible, lower values usually make bumps less visible. - A object describing the result of the operation. - - - - Projects a function represented in a cube map into spherical harmonics. - - A reference to an object. - A reference to an that represents a cubemap that is going to be projected into spherical harmonics. - Order of the SH evaluation, generates Order^2 coefficients whose degree is Order-1. Valid range is between 2 and 6. - An array of SH Vector for red, green and blue components with a length Order^2. - HRESULT D3DX11SHProjectCubeMap([In] ID3D11DeviceContext* pContext,[In] unsigned int Order,[In] ID3D11Texture2D* pCubeMap,[Out, Buffer] float* pROut,[Out, Buffer, Optional] float* pGOut,[Out, Buffer, Optional] float* pBOut) - - - -

Get the properties of the texture resource.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476636 - GetDesc - GetDesc - void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc) -
- - -

A 3D texture interface accesses texel data, which is structured memory.

-
- -

To create an empty Texture3D resource, call . For info about how to create a 2D texture, which is similar to creating a 3D texture, see How to: Create a Texture.

Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

Windows?Phone?8: This API is supported.

-
- - ff476637 - ID3D11Texture3D - ID3D11Texture3D -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get the properties of the texture resource.

-
-

Pointer to a resource description (see ).

- -

Windows?Phone?8: This API is supported.

-
- - ff476636 - void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc) - ID3D11Texture3D::GetDesc -
- - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - - - - Initializes a new instance of the class. - - The device with which to associate the texture. - The description of the texture. - An array of initial texture data for each subresource. - - - - - - -

Get the properties of the texture resource.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476636 - GetDesc - GetDesc - void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc) -
- - -

A view interface specifies the parts of a resource the pipeline can access during rendering.

-
- -

To create a view for an unordered access resource, call .

All resources must be bound to the pipeline before they can be accessed. Call to bind an unordered access view to a compute shader; call to bind an unordered access view to a pixel shader.

-
- - ff476639 - ID3D11UnorderedAccessView - ID3D11UnorderedAccessView -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Get a description of the resource.

-
-

Pointer to a resource description (see .)

- - ff476640 - void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc) - ID3D11UnorderedAccessView::GetDesc -
- - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the UnorderedAccess flag. - ID3D11Device::CreateUnorderedAccessView - - - - Creates a for accessing resource data. - - The device to use when creating this . - The resource that represents the render-target surface. This surface must have been created with the UnorderedAccess flag. - A structure describing the to be created. - ID3D11Device::CreateUnorderedAccessView - - - -

Get a description of the resource.

-
- - ff476640 - GetDesc - GetDesc - void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc) -
- - -

A vertex-shader interface manages an executable program (a vertex shader) that controls the vertex-shader stage.

-
- -

The vertex-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

To create a vertex shader interface, call . Before using a vertex shader you must bind it to the device by calling .

This interface is defined in D3D11.h.

Windows?Phone?8: This API is supported.

-
- - ff476641 - ID3D11VertexShader - ID3D11VertexShader -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - - Initializes a new instance of the class. - - The device used to create the shader. - The compiled shader bytecode. - A dynamic class linkage interface. - - - -

The interface represents a device context which generates rendering commands.

-
- -

Windows?Phone?8: This API is supported.

-
- - ff476385 - ID3D11DeviceContext - ID3D11DeviceContext -
- - - Initializes a new instance of the class. - - The native pointer. - - - - Performs an explicit conversion from to . (This method is a shortcut to ) - - The native pointer. - - The result of the conversion. - - - - -

Sets the constant buffers used by the vertex shader pipeline stage.

-
-

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

-

Number of buffers to set (ranges from 0 to - StartSlot).

-

Array of constant buffers (see ) being given to the device.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the VSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

-
- - ff476491 - void ID3D11DeviceContext::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void** ppConstantBuffers) - ID3D11DeviceContext::VSSetConstantBuffers -
- - -

Set a vertex shader to the device.

-
-

Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476493 - void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::VSSetShader -
- - -

Set a vertex shader to the device.

-
-

Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

-

A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

-

The number of class-instance interfaces in the array.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The maximum number of instances a shader can have is 256.

Windows?Phone?8: This API is supported.

-
- - ff476493 - void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) - ID3D11DeviceContext::VSSetShader -
- - -

Bind an array of shader resources to the vertex-shader stage.

-
-

Index into the device's zero-based array to begin setting shader resources to (range is from 0 to - 1).

-

Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (range is from 0 to - StartSlot).

-

Array of shader resource view interfaces to set to the device.

- -

If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

For information about creating shader-resource views, see .

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476494 - void ID3D11DeviceContext::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer] const void** ppShaderResourceViews) - ID3D11DeviceContext::VSSetShaderResources -
- - -

Set an array of sampler states to the vertex shader pipeline stage.

-
-

Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

-

Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Pointer to an array of sampler-state interfaces (see ). See Remarks.

- -

Any sampler may be set to null; this invokes the default state, which is defined to be the following.

 //Default sampler state:	
-             SamplerDesc;	
-            SamplerDesc.Filter = ;	
-            SamplerDesc.AddressU = ;	
-            SamplerDesc.AddressV = ;	
-            SamplerDesc.AddressW = ;	
-            SamplerDesc.MipLODBias = 0;	
-            SamplerDesc.MaxAnisotropy = 1;	
-            SamplerDesc.ComparisonFunc = ;	
-            SamplerDesc.BorderColor[0] = 1.0f;	
-            SamplerDesc.BorderColor[1] = 1.0f;	
-            SamplerDesc.BorderColor[2] = 1.0f;	
-            SamplerDesc.BorderColor[3] = 1.0f;	
-            SamplerDesc.MinLOD = -FLT_MAX;	
-            SamplerDesc.MaxLOD = FLT_MAX; 

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

Windows?Phone?8: This API is supported.

-
- - ff476492 - void ID3D11DeviceContext::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer] const void** ppSamplers) - ID3D11DeviceContext::VSSetSamplers -
- - -

Sets the constant buffers used by the vertex shader pipeline stage.

-
-

Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

-

Number of buffers to set (ranges from 0 to - StartSlot).

-

Array of constant buffers (see ) being given to the device.

- -

The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

The Direct3D 11.1 runtime, which is available starting with Windows?8, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

If the application wants the shader to access other parts of the buffer, it must call the VSSetConstantBuffers1 method instead.

Windows?Phone?8: This API is supported.

-
- - ff476491 - void ID3D11DeviceContext::VSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) - ID3D11DeviceContext::VSGetConstantBuffers -
- - -

Get the vertex shader currently set on the device.

-
-

Address of a reference to a vertex shader (see ) to be returned by the method.

-

Pointer to an array of class instance interfaces (see ).

-

The number of class-instance elements in the array.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476489 - void ID3D11DeviceContext::VSGetShader([Out] ID3D11VertexShader** ppVertexShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) - ID3D11DeviceContext::VSGetShader -
- - -

Get the vertex shader resources.

-
-

Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

-

The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

-

Array of shader resource view interfaces to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476490 - void ID3D11DeviceContext::VSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) - ID3D11DeviceContext::VSGetShaderResources -
- - -

Get an array of sampler states from the vertex shader pipeline stage.

-
-

Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

-

Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

-

Arry of sampler-state interface references (see ) to be returned by the device.

- -

Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

Windows?Phone?8: This API is supported.

-
- - ff476488 - void ID3D11DeviceContext::VSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) - ID3D11DeviceContext::VSGetSamplers -
- - -

Describes an HLSL class instance.

-
- -

The structure is returned by the method.

The members of this structure except InstanceIndex are valid (non default values) if they describe a class instance aquired using . The InstanceIndex member is only valid when the class instance is aquired using .

-
- - ff476098 - D3D11_CLASS_INSTANCE_DESC - D3D11_CLASS_INSTANCE_DESC -
- - -

The instance ID of an HLSL class; the default value is 0.

-
- - ff476098 - unsigned int InstanceId - unsigned int InstanceId -
- - -

The instance index of an HLSL class; the default value is 0.

-
- - ff476098 - unsigned int InstanceIndex - unsigned int InstanceIndex -
- - -

The type ID of an HLSL class; the default value is 0.

-
- - ff476098 - unsigned int TypeId - unsigned int TypeId -
- - -

Describes the constant buffer associated with an HLSL class; the default value is 0.

-
- - ff476098 - unsigned int ConstantBuffer - unsigned int ConstantBuffer -
- - -

The base constant buffer offset associated with an HLSL class; the default value is 0.

-
- - ff476098 - unsigned int BaseConstantBufferOffset - unsigned int BaseConstantBufferOffset -
- - -

The base texture associated with an HLSL class; the default value is 127.

-
- - ff476098 - unsigned int BaseTexture - unsigned int BaseTexture -
- - -

The base sampler associated with an HLSL class; the default value is 15.

-
- - ff476098 - unsigned int BaseSampler - unsigned int BaseSampler -
- - -

True if the class was created; the default value is false.

-
- - ff476098 - BOOL Created - BOOL Created -
- - -

Information about the video card's performance counter capabilities.

-
- -

This structure is returned by .

-
- - ff476104 - D3D11_COUNTER_INFO - D3D11_COUNTER_INFO -
- - -

Largest device-dependent counter ID that the device supports. If none are supported, this value will be 0. Otherwise it will be greater than or equal to . See .

-
- - ff476104 - D3D11_COUNTER LastDeviceDependentCounter - D3D11_COUNTER LastDeviceDependentCounter -
- - -

Number of counters that can be simultaneously supported.

-
- - ff476104 - unsigned int NumSimultaneousCounters - unsigned int NumSimultaneousCounters -
- - -

Number of detectable parallel units that the counter is able to discern. Values are 1 ~ 4. Use NumDetectableParallelUnits to interpret the values of the VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, and OTHER_GPU_PROCESSING counters.

-
- - ff476104 - unsigned char NumDetectableParallelUnits - unsigned char NumDetectableParallelUnits -
- - -

Describes a counter.

-
- -

This structure is used by , and .

-
- - ff476103 - D3D11_COUNTER_DESC - D3D11_COUNTER_DESC -
- - -

Type of counter (see ).

-
- - ff476103 - D3D11_COUNTER Counter - D3D11_COUNTER Counter -
- - -

Reserved.

-
- - ff476103 - unsigned int MiscFlags - unsigned int MiscFlags -
- - -

Stencil operations that can be performed based on the results of stencil test.

-
- -

All stencil operations are specified as a . The stencil operation can be set differently based on the outcome of the stencil test (which is referred to as StencilFunc in the stencil test portion of depth-stencil testing.

This structure is a member of a depth-stencil description.

-
- - ff476109 - D3D11_DEPTH_STENCILOP_DESC - D3D11_DEPTH_STENCILOP_DESC -
- - -

The stencil operation to perform when stencil testing fails.

-
- - ff476109 - D3D11_STENCIL_OP StencilFailOp - D3D11_STENCIL_OP StencilFailOp -
- - -

The stencil operation to perform when stencil testing passes and depth testing fails.

-
- - ff476109 - D3D11_STENCIL_OP StencilDepthFailOp - D3D11_STENCIL_OP StencilDepthFailOp -
- - -

The stencil operation to perform when stencil testing and depth testing both pass.

-
- - ff476109 - D3D11_STENCIL_OP StencilPassOp - D3D11_STENCIL_OP StencilPassOp -
- - -

A function that compares stencil data against existing stencil data. The function options are listed in .

-
- - ff476109 - D3D11_COMPARISON_FUNC StencilFunc - D3D11_COMPARISON_FUNC StencilFunc -
- - -

Specifies the subresources of a texture that are accessible from a depth-stencil view.

-
- -

These are valid formats for a depth-stencil view:

A depth-stencil view cannot use a typeless format. If the format chosen is , then the format of the parent resource is used.

A depth-stencil-view description is needed when calling .

-
- - ff476112 - D3D11_DEPTH_STENCIL_VIEW_DESC - D3D11_DEPTH_STENCIL_VIEW_DESC -
- - -

Resource data format (see ). See remarks for allowable formats.

-
- - ff476112 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

Type of resource (see ). Specifies how a depth-stencil resource will be accessed; the value is stored in the union in this structure.

-
- - ff476112 - D3D11_DSV_DIMENSION ViewDimension - D3D11_DSV_DIMENSION ViewDimension -
- - -

A value that describes whether the texture is read only. Pass 0 to specify that it is not read only; otherwise, pass one of the members of the enumerated type.

-
- - ff476112 - D3D11_DSV_FLAG Flags - D3D11_DSV_FLAG Flags -
- - -

Specifies a 1D texture subresource (see ).

-
- - ff476112 - D3D11_TEX1D_DSV Texture1D - D3D11_TEX1D_DSV Texture1D -
- - -

Specifies an array of 1D texture subresources (see ).

-
- - ff476112 - D3D11_TEX1D_ARRAY_DSV Texture1DArray - D3D11_TEX1D_ARRAY_DSV Texture1DArray -
- - -

Specifies a 2D texture subresource (see ).

-
- - ff476112 - D3D11_TEX2D_DSV Texture2D - D3D11_TEX2D_DSV Texture2D -
- - -

Specifies an array of 2D texture subresources (see ).

-
- - ff476112 - D3D11_TEX2D_ARRAY_DSV Texture2DArray - D3D11_TEX2D_ARRAY_DSV Texture2DArray -
- - -

Specifies a multisampled 2D texture (see ).

-
- - ff476112 - D3D11_TEX2DMS_DSV Texture2DMS - D3D11_TEX2DMS_DSV Texture2DMS -
- - -

Specifies an array of multisampled 2D textures (see ).

-
- - ff476112 - D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray - D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray -
- - -

Specifies the subresource from a 2D texture that is accessible to a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - ff476243 - D3D11_TEX2D_DSV - D3D11_TEX2D_DSV -
- - -

The index of the first mipmap level to use.

-
- - ff476243 - unsigned int MipSlice - unsigned int MipSlice -
- - -

Specifies the subresources from an array of 1D textures to use in a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - ff476225 - D3D11_TEX1D_ARRAY_DSV - D3D11_TEX1D_ARRAY_DSV -
- - -

The index of the first mipmap level to use.

-
- - ff476225 - unsigned int MipSlice - unsigned int MipSlice -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476225 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures to use.

-
- - ff476225 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Specifies the subresource from a 1D texture that is accessible to a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - ff476229 - D3D11_TEX1D_DSV - D3D11_TEX1D_DSV -
- - -

The index of the first mipmap level to use.

-
- - ff476229 - unsigned int MipSlice - unsigned int MipSlice -
- - -

Specifies the subresources from an array 2D textures that are accessible to a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - ff476239 - D3D11_TEX2D_ARRAY_DSV - D3D11_TEX2D_ARRAY_DSV -
- - -

The index of the first mipmap level to use.

-
- - ff476239 - unsigned int MipSlice - unsigned int MipSlice -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476239 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures to use.

-
- - ff476239 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Specifies the subresource from a multisampled 2D texture that is accessible to a depth-stencil view.

-
- -

Because a multisampled 2D texture contains a single subtexture, there is nothing to specify; this unused member is included so that this structure will compile in C.

-
- - ff476236 - D3D11_TEX2DMS_DSV - D3D11_TEX2DMS_DSV -
- - -

Unused.

-
- - ff476236 - unsigned int UnusedField_NothingToDefine - unsigned int UnusedField_NothingToDefine -
- - -

Specifies the subresources from an array of multisampled 2D textures for a depth-stencil view.

-
- -

This structure is one member of a depth-stencil-view description (see ).

-
- - ff476233 - D3D11_TEX2DMS_ARRAY_DSV - D3D11_TEX2DMS_ARRAY_DSV -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476233 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures to use.

-
- - ff476233 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Describes buffer requirements for an FFT.

-
- -

The structure is initialized by a call to one of the create-FFT functions (for example, ). For more create-FFT functions, see D3DCSX 11 Functions.

Use the info in to allocate raw buffers of the specified (or larger) sizes and then call the method to register the buffers with the FFT object.

Some FFT algorithms benefit from precomputing sin and cos. The FFT object might store precomputed data in the user-supplied buffers.

-
- - ff476308 - D3DX11_FFT_BUFFER_INFO - D3DX11_FFT_BUFFER_INFO -
- - -

Number of temporary buffers needed. Allowed range is 0 to D3DX11_FFT_MAX_TEMP_BUFFERS.

-
- - ff476308 - unsigned int NumTempBufferSizes - unsigned int NumTempBufferSizes -
- - -

Number of precompute buffers required. Allowed range is 0 to D3DX11_FFT_MAX_PRECOMPUTE_BUFFERS.

-
- - ff476308 - unsigned int NumPrecomputeBufferSizes - unsigned int NumPrecomputeBufferSizes -
- - -

Minimum sizes (in FLOATs) of temporary buffers.

-
- - ff476308 - unsigned int TempBufferFloatSizes[4] - unsigned int TempBufferFloatSizes -
- - -

Minimum sizes (in FLOATs) for precompute buffers.

-
- - ff476308 - unsigned int PrecomputeBufferFloatSizes[4] - unsigned int PrecomputeBufferFloatSizes -
- - -

Describes an FFT.

-
- - ff476311 - D3DX11_FFT_DESC - D3DX11_FFT_DESC -
- - -

Number of dimension in the FFT.

-
- - ff476311 - unsigned int NumDimensions - unsigned int NumDimensions -
- - -

Combination of flags indicating the dimensions to transform.

-
- - ff476311 - D3DX11_FFT_DIM_MASK DimensionMask - D3DX11_FFT_DIM_MASK DimensionMask -
- - -

flag indicating the type of data being transformed.

-
- - ff476311 - D3DX11_FFT_DATA_TYPE Type - D3DX11_FFT_DATA_TYPE Type -
- - -

Length of each dimension in the FFT.

-
- - ff476311 - unsigned int ElementLengths[32] - unsigned int ElementLengths -
- - -

Describes compute shader and raw and structured buffer support in the current graphics driver.

-
- -

Direct3D 11 devices () are required to support Compute Shader model 5.0. Direct3D 10.x devices (, ) can optionally support Compute Shader model 4.0 or 4.1.

-
- - ff476126 - D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS - D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS -
- - -

TRUE if compute shaders and raw and structured buffers are supported; otherwise .

-
- - ff476126 - BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x - BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x -
- - -

Describes double data type support in the current graphics driver.

-
- -

If the runtime sets DoublePrecisionFloatShaderOps to TRUE, the hardware and driver support the following Shader Model 5 instructions:

  • dadd
  • dmax
  • dmin
  • dmul
  • deq
  • dge
  • dlt
  • dne
  • dmov
  • dmovc
  • dtof
  • ftod

Note??If DoublePrecisionFloatShaderOps is TRUE, the hardware and driver do not necessarily support double-precision division.

-
- - ff476127 - D3D11_FEATURE_DATA_DOUBLES - D3D11_FEATURE_DATA_DOUBLES -
- - -

Specifies whether double types are allowed. If TRUE, double types are allowed; otherwise . The runtime must set DoublePrecisionFloatShaderOps to TRUE in order for you to use any HLSL shader that is compiled with a double type.

-
- - ff476127 - BOOL DoublePrecisionFloatShaderOps - BOOL DoublePrecisionFloatShaderOps -
- - -

Describes which resources are supported by the current graphics driver for a given format.

-
- - ff476128 - D3D11_FEATURE_DATA_FORMAT_SUPPORT - D3D11_FEATURE_DATA_FORMAT_SUPPORT -
- - -

to return information on.

-
- - ff476128 - DXGI_FORMAT InFormat - DXGI_FORMAT InFormat -
- - -

Combination of flags indicating which resources are supported.

-
- - ff476128 - D3D11_FORMAT_SUPPORT OutFormatSupport - D3D11_FORMAT_SUPPORT OutFormatSupport -
- - -

Describes which unordered resource options are supported by the current graphics driver for a given format.

-
- - ff476129 - D3D11_FEATURE_DATA_FORMAT_SUPPORT2 - D3D11_FEATURE_DATA_FORMAT_SUPPORT2 -
- - -

to return information on.

-
- - ff476129 - DXGI_FORMAT InFormat - DXGI_FORMAT InFormat -
- - -

Combination of flags indicating which unordered resource options are supported.

-
- - ff476129 - D3D11_FORMAT_SUPPORT2 OutFormatSupport2 - D3D11_FORMAT_SUPPORT2 OutFormatSupport2 -
- - -

Describes the multi-threading features that are supported by the current graphics driver.

-
- -

Use the structure with the method to determine multi-threading support.

-
- - ff476130 - D3D11_FEATURE_DATA_THREADING - D3D11_FEATURE_DATA_THREADING -
- - -

TRUE means resources can be created concurrently on multiple threads while drawing; means that the presence of coarse synchronization will prevent concurrency.

-
- - ff476130 - BOOL DriverConcurrentCreates - BOOL DriverConcurrentCreates -
- - -

TRUE means command lists are supported by the current driver; means that the API will emulate deferred contexts and command lists with software.

-
- - ff476130 - BOOL DriverCommandLists - BOOL DriverCommandLists -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX11_DEFAULT for any of these parameters will cause D3DX to automatically use the value from the source file.

-
- -

When initializing the structure, you may set any member to D3DX11_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.

This structure can be used by APIs that:

  • Create resources, such as and .
  • Create data processors, such as D3DX11CreateAsyncTextureInfoProcessor or - D3DX11CreateAsyncShaderResourceViewProcessor.

The default values are:

 Width = D3DX11_DEFAULT; Height = D3DX11_DEFAULT; Depth = D3DX11_DEFAULT; FirstMipLevel = D3DX11_DEFAULT; MipLevels = D3DX11_DEFAULT; Usage = () D3DX11_DEFAULT; BindFlags = D3DX11_DEFAULT; CpuAccessFlags = D3DX11_DEFAULT; MiscFlags = D3DX11_DEFAULT; Format = DXGI_FORMAT_FROM_FILE; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT; pSrcInfo = null;	
-            

Here is a brief example that uses this structure to supply the pixel format when loading a texture. For the complete code, see HDRFormats10.cpp in HDRToneMappingCS11 Sample.

 * pCubeRV = null;	
-            WCHAR strPath[MAX_PATH];	
-             LoadInfo; DXUTFindDXSDKMediaFileCch( strPath, MAX_PATH,  L"Light Probes\\uffizi_cross.dds" ); LoadInfo.Format = ; hr = ( pd3dDevice, strPath,  &LoadInfo, null, &pCubeRV, null );	
-            
-
- - ff476317 - D3DX11_IMAGE_INFO - D3DX11_IMAGE_INFO -
- - -

The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.

-
- - ff476317 - unsigned int Width - unsigned int Width -
- - -

The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.

-
- - ff476317 - unsigned int Height - unsigned int Height -
- - -

The depth of the texture. This only applies to volume textures.

-
- - ff476317 - unsigned int Depth - unsigned int Depth -
- - -

The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.

-
- - ff476317 - unsigned int ArraySize - unsigned int ArraySize -
- - -

The maximum number of mipmap levels in the texture. See the remarks in . Using 0 or D3DX11_DEFAULT will cause a full mipmap chain to be created.

-
- - ff476317 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Miscellaneous resource properties (see ).

-
- - ff476317 - D3D11_RESOURCE_MISC_FLAG MiscFlags - D3D11_RESOURCE_MISC_FLAG MiscFlags -
- - -

A enumeration indicating the format the texture will be in after it is loaded.

-
- - ff476317 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

The access permissions the cpu will have for the texture resource. See .

-
- - ff476317 - D3D11_RESOURCE_DIMENSION ResourceDimension - D3D11_RESOURCE_DIMENSION ResourceDimension -
- - -

Miscellaneous resource properties (see ).

-
- - ff476317 - D3DX11_IMAGE_FILE_FORMAT ImageFileFormat - D3DX11_IMAGE_FILE_FORMAT ImageFileFormat -
- - - Retrieves information about a given image file. - - File name of image to retrieve information about. - If the function succeeds, returns a filled with the description of the data in the source file. else returns null - HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) - - - - Retrieves information about a given image file from a memory location. - - an array to the image in memory - If the function succeeds, returns a filled with the description of the data from the image memory. else returns null - HRESULT D3DX11GetImageInfoFromFileW([None] const wchar_t* pSrcFile,[None] ID3DX11ThreadPump* pPump,[None] D3DX11_IMAGE_INFO* pSrcInfo,[None] HRESULT* pHResult) - - - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Optionally provide information to texture loader APIs to control how textures get loaded. A value of D3DX11_DEFAULT for any of these parameters will cause D3DX to automatically use the value from the source file.

-
- -

When initializing the structure, you may set any member to D3DX11_DEFAULT and D3DX will initialize it with a default value from the source texture when the texture is loaded.

This structure can be used by APIs that:

  • Create resources, such as and .
  • Create data processors, such as D3DX11CreateAsyncTextureInfoProcessor or - D3DX11CreateAsyncShaderResourceViewProcessor.

The default values are:

 Width = D3DX11_DEFAULT; Height = D3DX11_DEFAULT; Depth = D3DX11_DEFAULT; FirstMipLevel = D3DX11_DEFAULT; MipLevels = D3DX11_DEFAULT; Usage = () D3DX11_DEFAULT; BindFlags = D3DX11_DEFAULT; CpuAccessFlags = D3DX11_DEFAULT; MiscFlags = D3DX11_DEFAULT; Format = DXGI_FORMAT_FROM_FILE; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT; pSrcInfo = null;	
-            

Here is a brief example that uses this structure to supply the pixel format when loading a texture. For the complete code, see HDRFormats10.cpp in HDRToneMappingCS11 Sample.

 * pCubeRV = null;	
-            WCHAR strPath[MAX_PATH];	
-             LoadInfo; DXUTFindDXSDKMediaFileCch( strPath, MAX_PATH,  L"Light Probes\\uffizi_cross.dds" ); LoadInfo.Format = ; hr = ( pd3dDevice, strPath,  &LoadInfo, null, &pCubeRV, null );	
-            
-
- - ff476317 - D3DX11_IMAGE_LOAD_INFO - D3DX11_IMAGE_LOAD_INFO -
- - - The default value for load options. - - - - -

The target width of the texture. If the actual width of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target width.

-
- - ff476317 - unsigned int Width - unsigned int Width -
- - -

The target height of the texture. If the actual height of the texture is larger or smaller than this value then the texture will be scaled up or down to fit this target height.

-
- - ff476317 - unsigned int Height - unsigned int Height -
- - -

The depth of the texture. This only applies to volume textures.

-
- - ff476317 - unsigned int Depth - unsigned int Depth -
- - -

The highest resolution mipmap level of the texture. If this is greater than 0, then after the texture is loaded FirstMipLevel will be mapped to mipmap level 0.

-
- - ff476317 - unsigned int FirstMipLevel - unsigned int FirstMipLevel -
- - -

The maximum number of mipmap levels in the texture. See the remarks in . Using 0 or D3DX11_DEFAULT will cause a full mipmap chain to be created.

-
- - ff476317 - unsigned int MipLevels - unsigned int MipLevels -
- - -

The way the texture resource is intended to be used. See .

-
- - ff476317 - D3D11_USAGE Usage - D3D11_USAGE Usage -
- - -

The pipeline stages that the texture will be allowed to bind to. See .

-
- - ff476317 - D3D11_BIND_FLAG BindFlags - D3D11_BIND_FLAG BindFlags -
- - -

The access permissions the cpu will have for the texture resource. See .

-
- - ff476317 - D3D11_CPU_ACCESS_FLAG CpuAccessFlags - D3D11_CPU_ACCESS_FLAG CpuAccessFlags -
- - -

Miscellaneous resource properties (see ).

-
- - ff476317 - D3D11_RESOURCE_MISC_FLAG MiscFlags - D3D11_RESOURCE_MISC_FLAG MiscFlags -
- - -

A enumeration indicating the format the texture will be in after it is loaded.

-
- - ff476317 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

Filter the texture using the specified filter (only when resampling). See .

-
- - ff476317 - D3DX11_FILTER_FLAG Filter - D3DX11_FILTER_FLAG Filter -
- - -

Filter the texture mip levels using the specified filter (only if generating mipmaps). Valid values are , , , or . See .

-
- - ff476317 - D3DX11_FILTER_FLAG MipFilter - D3DX11_FILTER_FLAG MipFilter -
- - -

Information about the original image. See . Can be obtained with , , or .

-
- - ff476317 - D3DX11_IMAGE_INFO* pSrcInfo - D3DX11_IMAGE_INFO pSrcInfo -
- - - Gets an ImageLoadInformation that is setup with all default values (). - - - - -

Debug message filter; contains a lists of message types to allow or deny.

-
- -

For use with an Interface.

-
- - ff476177 - D3D11_INFO_QUEUE_FILTER - D3D11_INFO_QUEUE_FILTER -
- - -

Types of messages that you want to allow. See .

-
- - ff476177 - D3D11_INFO_QUEUE_FILTER_DESC AllowList - D3D11_INFO_QUEUE_FILTER_DESC AllowList -
- - -

Types of messages that you want to deny.

-
- - ff476177 - D3D11_INFO_QUEUE_FILTER_DESC DenyList - D3D11_INFO_QUEUE_FILTER_DESC DenyList -
- - -

Allow or deny certain types of messages to pass through a filter.

-
- - ff476178 - D3D11_INFO_QUEUE_FILTER_DESC - D3D11_INFO_QUEUE_FILTER_DESC -
- - -

Number of message categories to allow or deny.

-
- - ff476178 - unsigned int NumCategories - unsigned int NumCategories -
- - -

Array of message categories to allow or deny. Array must have at least NumCategories members (see ).

-
- - ff476178 - D3D11_MESSAGE_CATEGORY* pCategoryList - D3D11_MESSAGE_CATEGORY pCategoryList -
- - -

Number of message severity levels to allow or deny.

-
- - ff476178 - unsigned int NumSeverities - unsigned int NumSeverities -
- - -

Array of message severity levels to allow or deny. Array must have at least NumSeverities members (see ).

-
- - ff476178 - D3D11_MESSAGE_SEVERITY* pSeverityList - D3D11_MESSAGE_SEVERITY pSeverityList -
- - -

Number of message IDs to allow or deny.

-
- - ff476178 - unsigned int NumIDs - unsigned int NumIDs -
- - -

Array of message IDs to allow or deny. Array must have at least NumIDs members (see ).

-
- - ff476178 - D3D11_MESSAGE_ID* pIDList - D3D11_MESSAGE_ID pIDList -
- - - Gets or sets the categories. - - - The categories. - - - - - Gets or sets the severities. - - - The severities. - - - - - Gets or sets the ids. - - - The ids. - - - - -

Type of data contained in an input slot.

-
- -

Use these values to specify the type of data for a particular input element (see ) of an input-layout object.

-
- - ff476179 - D3D11_INPUT_ELEMENT_DESC - D3D11_INPUT_ELEMENT_DESC -
- - -

Input data is per-vertex data.

-
- - ff476179 - const char* SemanticName - char SemanticName -
- - -

Input data is per-instance data.

-
- - ff476179 - unsigned int SemanticIndex - unsigned int SemanticIndex -
- - - No documentation. - - - ff476179 - DXGI_FORMAT Format - DXGI_FORMAT Format - - - - No documentation. - - - ff476179 - unsigned int InputSlot - unsigned int InputSlot - - - - No documentation. - - - ff476179 - unsigned int AlignedByteOffset - unsigned int AlignedByteOffset - - - - No documentation. - - - ff476179 - D3D11_INPUT_CLASSIFICATION InputSlotClass - D3D11_INPUT_CLASSIFICATION InputSlotClass - - - - No documentation. - - - ff476179 - unsigned int InstanceDataStepRate - unsigned int InstanceDataStepRate - - - - Initializes a new instance of the struct. - - The HLSL semantic associated with this element in a shader input-signature. - The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). - The data type of the element data. - Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. - An integer value that identifies the input-assembler. Valid values are between 0 and 15. - Identifies the input data class for a single input slot. - The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data. - - - - Initializes a new instance of the struct. - - The HLSL semantic associated with this element in a shader input-signature. - The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). - The data type of the element data. - Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. - An integer value that identifies the input-assembler. Valid values are between 0 and 15. - - - - Initializes a new instance of the struct. - - The HLSL semantic associated with this element in a shader input-signature. - The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). - The data type of the element data. - An integer value that identifies the input-assembler. Valid values are between 0 and 15. - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - - - - - - - Implements the operator ==. - - The left. - The right. - - The result of the operator. - - - - - Implements the operator !=. - - The left. - The right. - - The result of the operator. - - - - - Returns a value that can be used for the offset parameter of an InputElement to indicate that the element - should be aligned directly after the previous element, including any packing if neccessary. - - A value used to align input elements. - D3D11_APPEND_ALIGNED_ELEMENT - - - -

A debug message in the Information Queue.

-
- -

This structure is returned from as part of the Information Queue feature (see Interface).

-
- - ff476184 - D3D11_MESSAGE - D3D11_MESSAGE -
- - -

The category of the message. See .

-
- - ff476184 - D3D11_MESSAGE_CATEGORY Category - D3D11_MESSAGE_CATEGORY Category -
- - -

The severity of the message. See .

-
- - ff476184 - D3D11_MESSAGE_SEVERITY Severity - D3D11_MESSAGE_SEVERITY Severity -
- - -

The ID of the message. See .

-
- - ff476184 - D3D11_MESSAGE_ID ID - D3D11_MESSAGE_ID ID -
- - -

The message string.

-
- - ff476184 - const char* pDescription - char pDescription -
- - -

The length of pDescription in bytes.

-
- - ff476184 - SIZE_T DescriptionByteLength - SIZE_T DescriptionByteLength -
- - -

Query information about graphics-pipeline activity in between calls to and .

-
- - ff476192 - D3D11_QUERY_DATA_PIPELINE_STATISTICS - D3D11_QUERY_DATA_PIPELINE_STATISTICS -
- - - No documentation. - - - ff476192 - unsigned longlong IAVertices - unsigned longlong IAVertices - - - - No documentation. - - - ff476192 - unsigned longlong IAPrimitives - unsigned longlong IAPrimitives - - - - No documentation. - - - ff476192 - unsigned longlong VSInvocations - unsigned longlong VSInvocations - - - - No documentation. - - - ff476192 - unsigned longlong GSInvocations - unsigned longlong GSInvocations - - - - No documentation. - - - ff476192 - unsigned longlong GSPrimitives - unsigned longlong GSPrimitives - - - - No documentation. - - - ff476192 - unsigned longlong CInvocations - unsigned longlong CInvocations - - - - No documentation. - - - ff476192 - unsigned longlong CPrimitives - unsigned longlong CPrimitives - - - - No documentation. - - - ff476192 - unsigned longlong PSInvocations - unsigned longlong PSInvocations - - - - No documentation. - - - ff476192 - unsigned longlong HSInvocations - unsigned longlong HSInvocations - - - - No documentation. - - - ff476192 - unsigned longlong DSInvocations - unsigned longlong DSInvocations - - - - No documentation. - - - ff476192 - unsigned longlong CSInvocations - unsigned longlong CSInvocations - - - -

Query information about the reliability of a timestamp query.

-
- -

For a list of query types see .

-
- - ff476194 - D3D11_QUERY_DATA_TIMESTAMP_DISJOINT - D3D11_QUERY_DATA_TIMESTAMP_DISJOINT -
- - -

How frequently the GPU counter increments in Hz.

-
- - ff476194 - unsigned longlong Frequency - unsigned longlong Frequency -
- - -

If this is TRUE, something occurred in between the query's and calls that caused the timestamp counter to become discontinuous or disjoint, such as unplugging the AC cord on a laptop, overheating, or throttling up/down due to laptop savings events. The timestamp returned by for a timestamp query is only reliable if Disjoint is .

-
- - ff476194 - BOOL Disjoint - BOOL Disjoint -
- - -

Describes a query.

-
- - ff476195 - D3D11_QUERY_DESC - D3D11_QUERY_DESC -
- - -

Type of query (see ).

-
- - ff476195 - D3D11_QUERY Query - D3D11_QUERY Query -
- - -

Miscellaneous flags (see ).

-
- - ff476195 - D3D11_QUERY_MISC_FLAG MiscFlags - D3D11_QUERY_MISC_FLAG MiscFlags -
- - -

Describes the blend state for a render target.

-
- -

You specify an array of structures in the RenderTarget member of the structure to describe the blend states for render targets; you can bind up to eight render targets to the output-merger stage at one time.

For info about how blending is done, see the output-merger stage.

Here are the default values for blend state.

StateDefault Value
BlendEnable
SrcBlend
DestBlend
BlendOp
SrcBlendAlpha
DestBlendAlpha
BlendOpAlpha
RenderTargetWriteMask

?

-
- - ff476200 - D3D11_RENDER_TARGET_BLEND_DESC - D3D11_RENDER_TARGET_BLEND_DESC -
- - -

Enable (or disable) blending.

-
- - ff476200 - BOOL BlendEnable - BOOL BlendEnable -
- - -

This blend option specifies the operation to perform on the RGB value that the pixel shader outputs. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

-
- - ff476200 - D3D11_BLEND SrcBlend - D3D11_BLEND SrcBlend -
- - -

This blend option specifies the operation to perform on the current RGB value in the render target. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

-
- - ff476200 - D3D11_BLEND DestBlend - D3D11_BLEND DestBlend -
- - -

This blend operation defines how to combine the SrcBlend and DestBlend operations.

-
- - ff476200 - D3D11_BLEND_OP BlendOp - D3D11_BLEND_OP BlendOp -
- - -

This blend option specifies the operation to perform on the alpha value that the pixel shader outputs. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

-
- - ff476200 - D3D11_BLEND SrcBlendAlpha - D3D11_BLEND SrcBlendAlpha -
- - -

This blend option specifies the operation to perform on the current alpha value in the render target. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

-
- - ff476200 - D3D11_BLEND DestBlendAlpha - D3D11_BLEND DestBlendAlpha -
- - -

This blend operation defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

-
- - ff476200 - D3D11_BLEND_OP BlendOpAlpha - D3D11_BLEND_OP BlendOpAlpha -
- - -

A write mask.

-
- - ff476200 - D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask - D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask -
- - - Initializes a new instance of the struct. - - The is blend enabled. - The source blend. - The destination blend. - The blend operation. - The source alpha blend. - The destination alpha blend. - The alpha blend operation. - The render target write mask. - - - -

Specifies the subresources from a resource that are accessible using a render-target view.

-
- -

A render-target-view description is passed into to create a render target.

A render-target-view cannot use the following formats:

  • Any typeless format.
  • DXGI_FORMAT_R32G32B32 if the view will be used to bind a buffer (vertex, index, constant, or stream-output).

If the format is set to , then the format of the resource that the view binds to the pipeline will be used.

-
- - ff476201 - D3D11_RENDER_TARGET_VIEW_DESC - D3D11_RENDER_TARGET_VIEW_DESC -
- - -

The data format (see ).

-
- - ff476201 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

The resource type (see ), which specifies how the render-target resource will be accessed.

-
- - ff476201 - D3D11_RTV_DIMENSION ViewDimension - D3D11_RTV_DIMENSION ViewDimension -
- - -

Specifies which buffer elements can be accessed (see ).

-
- - ff476201 - D3D11_BUFFER_RTV Buffer - D3D11_BUFFER_RTV Buffer -
- - -

Specifies the subresources in a 1D texture that can be accessed (see ).

-
- - ff476201 - D3D11_TEX1D_RTV Texture1D - D3D11_TEX1D_RTV Texture1D -
- - -

Specifies the subresources in a 1D texture array that can be accessed (see ).

-
- - ff476201 - D3D11_TEX1D_ARRAY_RTV Texture1DArray - D3D11_TEX1D_ARRAY_RTV Texture1DArray -
- - -

Specifies the subresources in a 2D texture that can be accessed (see ).

-
- - ff476201 - D3D11_TEX2D_RTV Texture2D - D3D11_TEX2D_RTV Texture2D -
- - -

Specifies the subresources in a 2D texture array that can be accessed (see ).

-
- - ff476201 - D3D11_TEX2D_ARRAY_RTV Texture2DArray - D3D11_TEX2D_ARRAY_RTV Texture2DArray -
- - -

Specifies a single subresource because a multisampled 2D texture only contains one subresource (see ).

-
- - ff476201 - D3D11_TEX2DMS_RTV Texture2DMS - D3D11_TEX2DMS_RTV Texture2DMS -
- - -

Specifies the subresources in a multisampled 2D texture array that can be accessed (see ).

-
- - ff476201 - D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray - D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray -
- - -

Specifies subresources in a 3D texture that can be accessed (see ).

-
- - ff476201 - D3D11_TEX3D_RTV Texture3D - D3D11_TEX3D_RTV Texture3D -
- - -

Specifies the subresource from a multisampled 2D texture to use in a render-target view.

-
- -

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

-
- - ff476237 - D3D11_TEX2DMS_RTV - D3D11_TEX2DMS_RTV -
- - -

Integer of any value. See remarks.

-
- - ff476237 - unsigned int UnusedField_NothingToDefine - unsigned int UnusedField_NothingToDefine -
- - -

Specifies the subresources from a an array of multisampled 2D textures to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - ff476234 - D3D11_TEX2DMS_ARRAY_RTV - D3D11_TEX2DMS_ARRAY_RTV -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476234 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures to use.

-
- - ff476234 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Specifies the subresource from a 1D texture to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - ff476230 - D3D11_TEX1D_RTV - D3D11_TEX1D_RTV -
- - -

The index of the mipmap level to use mip slice.

-
- - ff476230 - unsigned int MipSlice - unsigned int MipSlice -
- - -

Specifies the subresource from a 2D texture to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - ff476244 - D3D11_TEX2D_RTV - D3D11_TEX2D_RTV -
- - -

The index of the mipmap level to use mip slice.

-
- - ff476244 - unsigned int MipSlice - unsigned int MipSlice -
- - -

Specifies the subresources from an array of 1D textures to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - ff476226 - D3D11_TEX1D_ARRAY_RTV - D3D11_TEX1D_ARRAY_RTV -
- - -

The index of the mipmap level to use mip slice.

-
- - ff476226 - unsigned int MipSlice - unsigned int MipSlice -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476226 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures to use.

-
- - ff476226 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Specifies the elements in a buffer resource to use in a render-target view.

-
- -

A render-target view is a member of a render-target-view description (see ). Create a render-target view by calling .

-
- - ff476093 - D3D11_BUFFER_RTV - D3D11_BUFFER_RTV -
- - -

Number of bytes between the beginning of the buffer and the first element to access.

-
- - ff476093 - unsigned int FirstElement - unsigned int FirstElement -
- - -

The offset of the first element in the view to access, relative to element 0.

-
- - ff476093 - unsigned int ElementOffset - unsigned int ElementOffset -
- - -

The total number of elements in the view.

-
- - ff476093 - unsigned int NumElements - unsigned int NumElements -
- - -

The width of each element (in bytes). This can be determined from the format stored in the render-target-view description.

-
- - ff476093 - unsigned int ElementWidth - unsigned int ElementWidth -
- - -

Specifies the subresources from a 3D texture to use in a render-target view.

-
- -

This structure is one member of a render target view. See .

-
- - ff476247 - D3D11_TEX3D_RTV - D3D11_TEX3D_RTV -
- - -

The index of the mipmap level to use mip slice.

-
- - ff476247 - unsigned int MipSlice - unsigned int MipSlice -
- - -

First depth level to use.

-
- - ff476247 - unsigned int FirstWSlice - unsigned int FirstWSlice -
- - -

Number of depth levels to use in the render-target view, starting from FirstWSlice. A value of -1 indicates all of the slices along the w axis, starting from FirstWSlice.

-
- - ff476247 - unsigned int WSize - unsigned int WSize -
- - -

Specifies the subresources from an array of 2D textures to use in a render-target view.

-
- -

This structure is one member of a render-target-view description (see ).

-
- - ff476240 - D3D11_TEX2D_ARRAY_RTV - D3D11_TEX2D_ARRAY_RTV -
- - -

The index of the mipmap level to use mip slice.

-
- - ff476240 - unsigned int MipSlice - unsigned int MipSlice -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476240 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures in the array to use in the render target view, starting from FirstArraySlice.

-
- - ff476240 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Defines a 3D box.

-
- -

The following diagram shows a 3D box, where the origin is the left, front, top corner.

The values for right, bottom, and back are each one pixel past the end of the pixels that are included in the box region. That is, the values for left, top, and front are included in the box region while the values for right, bottom, and back are excluded from the box region. For example, for a box that is one pixel wide, (right - left) == 1; the box region includes the left pixel but not the right pixel.

Coordinates of a box are in bytes for buffers and in texels for textures.

-
- - ff476089 - D3D11_BOX - D3D11_BOX -
- - -

The x position of the left hand side of the box.

-
- - ff476089 - unsigned int left - unsigned int left -
- - -

The y position of the top of the box.

-
- - ff476089 - unsigned int top - unsigned int top -
- - -

The z position of the front of the box.

-
- - ff476089 - unsigned int front - unsigned int front -
- - -

The x position of the right hand side of the box.

-
- - ff476089 - unsigned int right - unsigned int right -
- - -

The y position of the bottom of the box.

-
- - ff476089 - unsigned int bottom - unsigned int bottom -
- - -

The z position of the back of the box.

-
- - ff476089 - unsigned int back - unsigned int back -
- - - Initialize a new instance of struct. - - Left coordinates (inclusive) - Top coordinates (inclusive) - Front coordinates (inclusive) - Right coordinates (exclusive) - Bottom coordinates (exclusive) - Back coordinates (exclusive) - -
    -
  • For a Width of 1 pixels, (right - left) = 1. If left = 0, right = Width.
  • -
  • For a Height of 1 pixels, (bottom - top) = 1. If top = 0, bottom = Height.
  • -
  • For a Depth of 1 pixels, (back - front) = 1. If front = 0, back = Depth.
  • -
-
-
- - -

Describes a sampler state.

-
- -

These are the default values for sampler state.

StateDefault Value
Filter
AddressU
AddressV
AddressW
MinLOD-3.402823466e+38F (-FLT_MAX)
MaxLOD3.402823466e+38F (FLT_MAX)
MipMapLODBias0.0f
MaxAnisotropy1
ComparisonFunc
BorderColorfloat4(1.0f,1.0f,1.0f,1.0f)
TextureN/A

?

-
- - ff476207 - D3D11_SAMPLER_DESC - D3D11_SAMPLER_DESC -
- - -

Filtering method to use when sampling a texture (see ).

-
- - ff476207 - D3D11_FILTER Filter - D3D11_FILTER Filter -
- - -

Method to use for resolving a u texture coordinate that is outside the 0 to 1 range (see ).

-
- - ff476207 - D3D11_TEXTURE_ADDRESS_MODE AddressU - D3D11_TEXTURE_ADDRESS_MODE AddressU -
- - -

Method to use for resolving a v texture coordinate that is outside the 0 to 1 range.

-
- - ff476207 - D3D11_TEXTURE_ADDRESS_MODE AddressV - D3D11_TEXTURE_ADDRESS_MODE AddressV -
- - -

Method to use for resolving a w texture coordinate that is outside the 0 to 1 range.

-
- - ff476207 - D3D11_TEXTURE_ADDRESS_MODE AddressW - D3D11_TEXTURE_ADDRESS_MODE AddressW -
- - -

Offset from the calculated mipmap level. For example, if Direct3D calculates that a texture should be sampled at mipmap level 3 and MipLODBias is 2, then the texture will be sampled at mipmap level 5.

-
- - ff476207 - float MipLODBias - float MipLODBias -
- - -

Clamping value used if or is specified in Filter. Valid values are between 1 and 16.

-
- - ff476207 - unsigned int MaxAnisotropy - unsigned int MaxAnisotropy -
- - -

A function that compares sampled data against existing sampled data. The function options are listed in .

-
- - ff476207 - D3D11_COMPARISON_FUNC ComparisonFunc - D3D11_COMPARISON_FUNC ComparisonFunc -
- - -

Border color to use if is specified for AddressU, AddressV, or AddressW. Range must be between 0.0 and 1.0 inclusive.

-
- - ff476207 - SHARPDX_COLOR4 BorderColor - SHARPDX_COLOR4 BorderColor -
- - -

Lower end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed.

-
- - ff476207 - float MinLOD - float MinLOD -
- - -

Upper end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed. This value must be greater than or equal to MinLOD. To have no upper limit on LOD set this to a large value such as D3D11_FLOAT32_MAX.

-
- - ff476207 - float MaxLOD - float MaxLOD -
- - - Returns default values for . - - - See MSDN documentation for default values. - - - - -

Describes a shader-resource view.

-
- -

A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read.

When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a resource can be viewed with one of these typed formats: , , and , since these typed formats are compatible with the typeless resource.

Create a shader-resource-view description by calling . To view a shader-resource-view description, call .

-
- - ff476211 - D3D11_SHADER_RESOURCE_VIEW_DESC - D3D11_SHADER_RESOURCE_VIEW_DESC -
- - -

A specifying the viewing format. See remarks.

-
- - ff476211 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

The resource type of the view. See D3D11_SRV_DIMENSION. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.

-
- - ff476211 - D3D_SRV_DIMENSION ViewDimension - D3D_SRV_DIMENSION ViewDimension -
- - -

View the resource as a buffer using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_BUFFER_SRV Buffer - D3D11_BUFFER_SRV Buffer -
- - -

View the resource as a 1D texture using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEX1D_SRV Texture1D - D3D11_TEX1D_SRV Texture1D -
- - -

View the resource as a 1D-texture array using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEX1D_ARRAY_SRV Texture1DArray - D3D11_TEX1D_ARRAY_SRV Texture1DArray -
- - -

View the resource as a 2D-texture using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEX2D_SRV Texture2D - D3D11_TEX2D_SRV Texture2D -
- - -

View the resource as a 2D-texture array using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEX2D_ARRAY_SRV Texture2DArray - D3D11_TEX2D_ARRAY_SRV Texture2DArray -
- - -

View the resource as a 2D-multisampled texture using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEX2DMS_SRV Texture2DMS - D3D11_TEX2DMS_SRV Texture2DMS -
- - -

View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray - D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray -
- - -

View the resource as a 3D texture using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEX3D_SRV Texture3D - D3D11_TEX3D_SRV Texture3D -
- - -

View the resource as a 3D-cube texture using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEXCUBE_SRV TextureCube - D3D11_TEXCUBE_SRV TextureCube -
- - -

View the resource as a 3D-cube-texture array using information from a shader-resource view (see ).

-
- - ff476211 - D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray - D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray -
- - -

View the resource as a raw buffer using information from a shader-resource view (see ). For more info about raw viewing of buffers, see Raw Views of Buffers.

-
- - ff476211 - D3D11_BUFFEREX_SRV BufferEx - D3D11_BUFFEREX_SRV BufferEx -
- - -

Specifies the elements in a buffer resource to use in a shader-resource view.

-
- -

The structure is a member of the structure, which represents a shader-resource view description. You can create a shader-resource view by calling the method.

-
- - ff476094 - D3D11_BUFFER_SRV - D3D11_BUFFER_SRV -
- - -

Number of bytes between the beginning of the buffer and the first element to access.

-
- - ff476094 - unsigned int FirstElement - unsigned int FirstElement -
- - -

The offset of the first element in the view to access, relative to element 0.

-
- - ff476094 - unsigned int ElementOffset - unsigned int ElementOffset -
- - -

The total number of elements in the view.

-
- - ff476094 - unsigned int NumElements - unsigned int NumElements -
- - -

The width of each element (in bytes). This can be determined from the format stored in the shader-resource-view description.

-
- - ff476094 - unsigned int ElementWidth - unsigned int ElementWidth -
- - -

Specifies the subresource from a cube texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - ff476251 - D3D11_TEXCUBE_SRV - D3D11_TEXCUBE_SRV -
- - -

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original TextureCube for which creates a view) -1.

-
- - ff476251 - unsigned int MostDetailedMip - unsigned int MostDetailedMip -
- - -

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

-
- - ff476251 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Specifies the subresource from a 1D texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

As an example, assuming MostDetailedMip = 6 and MipLevels = 2, the view will have access to 2 mipmap levels, 6 and 7, of the original texture for which creates the view. In this situation, MostDetailedMip is greater than the MipLevels in the view. However, MostDetailedMip is not greater than the MipLevels in the original resource.

-
- - ff476231 - D3D11_TEX1D_SRV - D3D11_TEX1D_SRV -
- - -

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture1D for which creates a view) -1.

-
- - ff476231 - unsigned int MostDetailedMip - unsigned int MostDetailedMip -
- - -

The maximum number of mipmap levels for the view of the texture. See the remarks.

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

-
- - ff476231 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Specifies the subresources from a multisampled 2D texture to use in a shader-resource view.

-
- -

Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

-
- - ff476238 - D3D11_TEX2DMS_SRV - D3D11_TEX2DMS_SRV -
- - -

Integer of any value. See remarks.

-
- - ff476238 - unsigned int UnusedField_NothingToDefine - unsigned int UnusedField_NothingToDefine -
- - -

Specifies the subresources from an array of cube textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - ff476250 - D3D11_TEXCUBE_ARRAY_SRV - D3D11_TEXCUBE_ARRAY_SRV -
- - -

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original TextureCube for which creates a view) -1.

-
- - ff476250 - unsigned int MostDetailedMip - unsigned int MostDetailedMip -
- - -

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

-
- - ff476250 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Index of the first 2D texture to use.

-
- - ff476250 - unsigned int First2DArrayFace - unsigned int First2DArrayFace -
- - -

Number of cube textures in the array.

-
- - ff476250 - unsigned int NumCubes - unsigned int NumCubes -
- - -

Specifies the subresources from a 3D texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - ff476248 - D3D11_TEX3D_SRV - D3D11_TEX3D_SRV -
- - -

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture3D for which creates a view) -1.

-
- - ff476248 - unsigned int MostDetailedMip - unsigned int MostDetailedMip -
- - -

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

-
- - ff476248 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Specifies the subresource from a 2D texture to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - ff476245 - D3D11_TEX2D_SRV - D3D11_TEX2D_SRV -
- - -

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture2D for which creates a view) -1.

-
- - ff476245 - unsigned int MostDetailedMip - unsigned int MostDetailedMip -
- - -

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

-
- - ff476245 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Specifies the subresources from an array of 1D textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - ff476227 - D3D11_TEX1D_ARRAY_SRV - D3D11_TEX1D_ARRAY_SRV -
- - -

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture1D for which creates a view) -1.

-
- - ff476227 - unsigned int MostDetailedMip - unsigned int MostDetailedMip -
- - -

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

-
- - ff476227 - unsigned int MipLevels - unsigned int MipLevels -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476227 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures in the array.

-
- - ff476227 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Specifies the subresources from an array of 2D textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - ff476241 - D3D11_TEX2D_ARRAY_SRV - D3D11_TEX2D_ARRAY_SRV -
- - -

Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture2D for which creates a view) -1.

-
- - ff476241 - unsigned int MostDetailedMip - unsigned int MostDetailedMip -
- - -

The maximum number of mipmap levels for the view of the texture. See the remarks in .

Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

-
- - ff476241 - unsigned int MipLevels - unsigned int MipLevels -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476241 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures in the array.

-
- - ff476241 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Specifies the subresources from an array of multisampled 2D textures to use in a shader-resource view.

-
- -

This structure is one member of a shader-resource-view description (see ).

-
- - ff476235 - D3D11_TEX2DMS_ARRAY_SRV - D3D11_TEX2DMS_ARRAY_SRV -
- - -

The index of the first texture to use in an array of textures.

-
- - ff476235 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

Number of textures to use.

-
- - ff476235 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Describes the elements in a raw buffer resource to use in a shader-resource view.

-
- -

This structure is used by to create a raw view of a buffer.

-
- - ff476090 - D3D11_BUFFEREX_SRV - D3D11_BUFFEREX_SRV -
- - -

The index of the first element to be accessed by the view.

-
- - ff476090 - unsigned int FirstElement - unsigned int FirstElement -
- - -

The number of elements in the resource.

-
- - ff476090 - unsigned int NumElements - unsigned int NumElements -
- - -

A -typed value that identifies view options for the buffer. Currently, the only option is to identify a raw view of the buffer. For more info about raw viewing of buffers, see Raw Views of Buffers.

-
- - ff476090 - D3D11_BUFFEREX_SRV_FLAG Flags - D3D11_BUFFEREX_SRV_FLAG Flags -
- - -

Description of a vertex element in a vertex buffer in an output slot.

-
- - ff476216 - D3D11_SO_DECLARATION_ENTRY - D3D11_SO_DECLARATION_ENTRY -
- - -

Zero-based, stream number.

-
- - ff476216 - unsigned int Stream - unsigned int Stream -
- - -

Type of output element; possible values include: "POSITION", "NORMAL", or "TEXCOORD0". Note that if SemanticName is null then ComponentCount can be greater than 4 and the described entry will be a gap in the stream out where no data will be written.

-
- - ff476216 - const char* SemanticName - char SemanticName -
- - -

Output element's zero-based index. Should be used if, for example, you have more than one texture coordinate stored in each vertex.

-
- - ff476216 - unsigned int SemanticIndex - unsigned int SemanticIndex -
- - -

Which component of the entry to begin writing out to. Valid values are 0 to 3. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.

-
- - ff476216 - unsigned char StartComponent - unsigned char StartComponent -
- - -

The number of components of the entry to write out to. Valid values are 1 to 4. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2. Note that if SemanticName is null then ComponentCount can be greater than 4 and the described entry will be a gap in the stream out where no data will be written.

-
- - ff476216 - unsigned char ComponentCount - unsigned char ComponentCount -
- - -

The associated stream output buffer that is bound to the pipeline (see ). The valid range for OutputSlot is 0 to 3.

-
- - ff476216 - unsigned char OutputSlot - unsigned char OutputSlot -
- - - Initializes a new instance of the struct. - - Zero-based, stream number - Name of the semantic. - Index of the semantic. - The start component. - The component count. - The output slot. - - - -

Query information about the amount of data streamed out to the stream-output buffers in between and .

-
- - ff476193 - D3D11_QUERY_DATA_SO_STATISTICS - D3D11_QUERY_DATA_SO_STATISTICS -
- - - No documentation. - - - ff476193 - unsigned longlong NumPrimitivesWritten - unsigned longlong NumPrimitivesWritten - - - - No documentation. - - - ff476193 - unsigned longlong PrimitivesStorageNeeded - unsigned longlong PrimitivesStorageNeeded - - - -

Describes a 1D texture.

-
- -

This structure is used in a call to .

In addition to this structure, you can also use the CD3D11_TEXTURE1D_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a texture description.

The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to (8192) when you create your 1D texture.

-
- - ff476252 - D3D11_TEXTURE1D_DESC - D3D11_TEXTURE1D_DESC -
- - -

Texture width (in texels). The range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476252 - unsigned int Width - unsigned int Width -
- - -

The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

-
- - ff476252 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Number of textures in the array. The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476252 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Texture format (see ).

-
- - ff476252 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

-
- - ff476252 - D3D11_USAGE Usage - D3D11_USAGE Usage -
- - -

Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR. For a 1D texture, the allowable values are: , and .

-
- - ff476252 - D3D11_BIND_FLAG BindFlags - D3D11_BIND_FLAG BindFlags -
- - -

Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

-
- - ff476252 - D3D11_CPU_ACCESS_FLAG CPUAccessFlags - D3D11_CPU_ACCESS_FLAG CPUAccessFlags -
- - -

Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.

-
- - ff476252 - D3D11_RESOURCE_MISC_FLAG MiscFlags - D3D11_RESOURCE_MISC_FLAG MiscFlags -
- - -

Describes a 2D texture.

-
- -

This structure is used in a call to .

In addition to this structure, you can also use the CD3D11_TEXTURE2D_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a texture description.

The device places some size restrictions (must be multiples of a minimum size) for a subsampled, block compressed, or bit-format resource.

The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to (8192) when you create your 2D texture.

-
- - ff476253 - D3D11_TEXTURE2D_DESC - D3D11_TEXTURE2D_DESC -
- - -

Texture width (in texels). The range is from 1 to (16384). For a texture cube-map, the range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476253 - unsigned int Width - unsigned int Width -
- - -

Texture height (in texels). The range is from 1 to (16384). For a texture cube-map, the range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476253 - unsigned int Height - unsigned int Height -
- - -

The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

-
- - ff476253 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Number of textures in the texture array. The range is from 1 to (2048). For a texture cube-map, this value is a multiple of 6 (that is, 6 times the value in the NumCubes member of ), and the range is from 6 to 2046. The range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476253 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Texture format (see ).

-
- - ff476253 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

Structure that specifies multisampling parameters for the texture. See .

-
- - ff476253 - DXGI_SAMPLE_DESC SampleDesc - DXGI_SAMPLE_DESC SampleDesc -
- - -

Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

-
- - ff476253 - D3D11_USAGE Usage - D3D11_USAGE Usage -
- - -

Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR.

-
- - ff476253 - D3D11_BIND_FLAG BindFlags - D3D11_BIND_FLAG BindFlags -
- - -

Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

-
- - ff476253 - D3D11_CPU_ACCESS_FLAG CPUAccessFlags - D3D11_CPU_ACCESS_FLAG CPUAccessFlags -
- - -

Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined by using a logical OR. For a texture cube-map, set the flag. Cube-map arrays (that is, ArraySize > 6) require feature level or higher.

-
- - ff476253 - D3D11_RESOURCE_MISC_FLAG MiscFlags - D3D11_RESOURCE_MISC_FLAG MiscFlags -
- - -

Describes a 3D texture.

-
- -

This structure is used in a call to .

In addition to this structure, you can also use the CD3D11_TEXTURE3D_DESC derived structure, which is defined in D3D11.h and behaves like an inherited class, to help create a texture description.

The device restricts the size of subsampled, block compressed, and bit format resources to be multiples of sizes specific to each format.

The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to (2048) when you create your 3D texture.

-
- - ff476254 - D3D11_TEXTURE3D_DESC - D3D11_TEXTURE3D_DESC -
- - -

Texture width (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476254 - unsigned int Width - unsigned int Width -
- - -

Texture height (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476254 - unsigned int Height - unsigned int Height -
- - -

Texture depth (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

-
- - ff476254 - unsigned int Depth - unsigned int Depth -
- - -

The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

-
- - ff476254 - unsigned int MipLevels - unsigned int MipLevels -
- - -

Texture format (see ).

-
- - ff476254 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

-
- - ff476254 - D3D11_USAGE Usage - D3D11_USAGE Usage -
- - -

Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR.

-
- - ff476254 - D3D11_BIND_FLAG BindFlags - D3D11_BIND_FLAG BindFlags -
- - -

Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

-
- - ff476254 - D3D11_CPU_ACCESS_FLAG CPUAccessFlags - D3D11_CPU_ACCESS_FLAG CPUAccessFlags -
- - -

Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.

-
- - ff476254 - D3D11_RESOURCE_MISC_FLAG MiscFlags - D3D11_RESOURCE_MISC_FLAG MiscFlags -
- - -

Note??The D3DX (D3DX 9, D3DX 10, and D3DX 11) utility library is deprecated for Windows?8 and is not supported for Windows Store apps.

Describes parameters used to load a texture from another texture.

-
- -

This structure is used in a call to .

The default values are:

 pSrcBox = null; pDstBox = null; SrcFirstMip = 0; DstFirstMip = 0; NumMips = D3DX11_DEFAULT; SrcFirstElement = 0; DstFirstElement = 0; NumElements = D3DX11_DEFAULT; Filter = D3DX11_DEFAULT; MipFilter = D3DX11_DEFAULT;	
-            
-
- - ff476327 - D3DX11_TEXTURE_LOAD_INFO - D3DX11_TEXTURE_LOAD_INFO -
- - -

Source texture box (see ).

-
- - ff476327 - D3D11_BOX* pSrcBox - D3D11_BOX pSrcBox -
- - -

Destination texture box (see ).

-
- - ff476327 - D3D11_BOX* pDstBox - D3D11_BOX pDstBox -
- - -

Source texture mipmap level, see D3D11CalcSubresource for more detail.

-
- - ff476327 - unsigned int SrcFirstMip - unsigned int SrcFirstMip -
- - -

Destination texture mipmap level, see D3D11CalcSubresource for more detail.

-
- - ff476327 - unsigned int DstFirstMip - unsigned int DstFirstMip -
- - -

Number of mipmap levels in the source texture.

-
- - ff476327 - unsigned int NumMips - unsigned int NumMips -
- - -

First element of the source texture.

-
- - ff476327 - unsigned int SrcFirstElement - unsigned int SrcFirstElement -
- - -

First element of the destination texture.

-
- - ff476327 - unsigned int DstFirstElement - unsigned int DstFirstElement -
- - -

Number of elements to load.

-
- - ff476327 - unsigned int NumElements - unsigned int NumElements -
- - -

Filtering options during resampling (see ).

-
- - ff476327 - D3DX11_FILTER_FLAG Filter - D3DX11_FILTER_FLAG Filter -
- - -

Filtering options when generating mip levels (see ).

-
- - ff476327 - D3DX11_FILTER_FLAG MipFilter - D3DX11_FILTER_FLAG MipFilter -
- - - Source texture box (see ). - - D3D11_BOX* pSrcBox - - - - Destination texture box (see ). - - D3D11_BOX* pDstBox - - - -

Specifies the subresources from a resource that are accessible using an unordered-access view.

-
- -

An unordered-access-view description is passed into to create a view.

-
- - ff476258 - D3D11_UNORDERED_ACCESS_VIEW_DESC - D3D11_UNORDERED_ACCESS_VIEW_DESC -
- - -

The data format (see ).

-
- - ff476258 - DXGI_FORMAT Format - DXGI_FORMAT Format -
- - -

The resource type (see ), which specifies how the resource will be accessed.

-
- - ff476258 - D3D11_UAV_DIMENSION ViewDimension - D3D11_UAV_DIMENSION ViewDimension -
- - -

Specifies which buffer elements can be accessed (see ).

-
- - ff476258 - D3D11_BUFFER_UAV Buffer - D3D11_BUFFER_UAV Buffer -
- - -

Specifies the subresources in a 1D texture that can be accessed (see ).

-
- - ff476258 - D3D11_TEX1D_UAV Texture1D - D3D11_TEX1D_UAV Texture1D -
- - -

Specifies the subresources in a 1D texture array that can be accessed (see ).

-
- - ff476258 - D3D11_TEX1D_ARRAY_UAV Texture1DArray - D3D11_TEX1D_ARRAY_UAV Texture1DArray -
- - -

Specifies the subresources in a 2D texture that can be accessed (see ).

-
- - ff476258 - D3D11_TEX2D_UAV Texture2D - D3D11_TEX2D_UAV Texture2D -
- - -

Specifies the subresources in a 2D texture array that can be accessed (see ).

-
- - ff476258 - D3D11_TEX2D_ARRAY_UAV Texture2DArray - D3D11_TEX2D_ARRAY_UAV Texture2DArray -
- - -

Specifies subresources in a 3D texture that can be accessed (see ).

-
- - ff476258 - D3D11_TEX3D_UAV Texture3D - D3D11_TEX3D_UAV Texture3D -
- - -

Describes an array of unordered-access 1D texture resources.

-
- -

This structure is used by a .

-
- - ff476228 - D3D11_TEX1D_ARRAY_UAV - D3D11_TEX1D_ARRAY_UAV -
- - -

The mipmap slice index.

-
- - ff476228 - unsigned int MipSlice - unsigned int MipSlice -
- - -

The zero-based index of the first array slice to be accessed.

-
- - ff476228 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

The number of slices in the array.

-
- - ff476228 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Describes the elements in a buffer to use in a unordered-access view.

-
- -

This structure is used by a .

-
- - ff476095 - D3D11_BUFFER_UAV - D3D11_BUFFER_UAV -
- - -

The zero-based index of the first element to be accessed.

-
- - ff476095 - unsigned int FirstElement - unsigned int FirstElement -
- - -

The number of elements in the resource. For structured buffers, this is the number of structures in the buffer.

-
- - ff476095 - unsigned int NumElements - unsigned int NumElements -
- - -

View options for the resource (see ).

-
- - ff476095 - D3D11_BUFFER_UAV_FLAG Flags - D3D11_BUFFER_UAV_FLAG Flags -
- - -

Describes a unordered-access 2D texture resource.

-
- -

This structure is used by a .

-
- - ff476246 - D3D11_TEX2D_UAV - D3D11_TEX2D_UAV -
- - -

The mipmap slice index.

-
- - ff476246 - unsigned int MipSlice - unsigned int MipSlice -
- - -

Describes a unordered-access 1D texture resource.

-
- -

This structure is used by a .

-
- - ff476232 - D3D11_TEX1D_UAV - D3D11_TEX1D_UAV -
- - -

The mipmap slice index.

-
- - ff476232 - unsigned int MipSlice - unsigned int MipSlice -
- - -

Describes an array of unordered-access 2D texture resources.

-
- -

This structure is used by a .

-
- - ff476242 - D3D11_TEX2D_ARRAY_UAV - D3D11_TEX2D_ARRAY_UAV -
- - -

The mipmap slice index.

-
- - ff476242 - unsigned int MipSlice - unsigned int MipSlice -
- - -

The zero-based index of the first array slice to be accessed.

-
- - ff476242 - unsigned int FirstArraySlice - unsigned int FirstArraySlice -
- - -

The number of slices in the array.

-
- - ff476242 - unsigned int ArraySize - unsigned int ArraySize -
- - -

Describes a unordered-access 3D texture resource.

-
- -

This structure is used by a .

-
- - ff476249 - D3D11_TEX3D_UAV - D3D11_TEX3D_UAV -
- - -

The mipmap slice index.

-
- - ff476249 - unsigned int MipSlice - unsigned int MipSlice -
- - -

The zero-based index of the first depth slice to be accessed.

-
- - ff476249 - unsigned int FirstWSlice - unsigned int FirstWSlice -
- - -

The number of depth slices.

-
- - ff476249 - unsigned int WSize - unsigned int WSize -
- - - Internal class used to initialize this assembly. - - - - - Initializes this assembly. - - - This method is called when the assembly is loaded. - - - - - Properties defining the way a buffer is bound to the pipeline as a target for stream output operations. - - - - - Initializes a new instance of the struct. - - The buffer being bound. - The offset to the first vertex (in bytes). - - - - Gets or sets the buffer being bound. - - - - - Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). - - - - - Properties defining the way a buffer (containing vertex data) is bound - to the pipeline for rendering. - - - - - Initializes a new instance of the struct. - - The buffer being bound. - The stride between vertex element (in bytes). - The offset to the first vertex (in bytes). - - - - Gets or sets the buffer being bound. - - - - - Gets or sets the stride between vertex elements in the buffer (in bytes). - - - - - Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). - - - - diff --git a/distribution/sharpdx_direct3d11_effects_x64.dll b/distribution/sharpdx_direct3d11_effects_x64.dll deleted file mode 100644 index a7ad51df31a86d701d944a78d4c27327f40f4caa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345600 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 z 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

wu_^#GBjQL^E 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 D)%o0& diff --git a/distribution/sharpdx_direct3d11_effects_x86.dll b/distribution/sharpdx_direct3d11_effects_x86.dll deleted file mode 100644 index 345872ec9a029aab9fd4db649c1434226843cad8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286208 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

  • 6&~kKx0u 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

    39SSR;7`w)i*oP*9G=Wrqxk7Fh{>6~)T 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 Date: Mon, 27 Jul 2015 13:23:40 -0700 Subject: [PATCH 06/21] commented out fps --- distribution/FFXIVAPP.Client.exe | Bin 1847808 -> 1847808 bytes distribution/FFXIVAPP.Hooker.dll | Bin 55296 -> 54272 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index 138463872662545e6284ff4e6eff23d74b4a1039..778ae6ab5adbeb79777ba566cee612f459c6b070 100644 GIT binary patch delta 404 zcmZp8Qqb_EU_u9z?BvF-)-J}aT}&d%Ok#2E3zV6*FHmM~Fc;8o^2~Vn%gSY4%|lPF zNB?JTH;86#j$kn{urQm>xQkh7`T-jW*7kdwnSq!Eh(T;NAZ7<*4j|?PVlE)&24Wr{ z<^^ItAm#^R0U#CxVj&LxaaR(n40nY@AqQ5OHw_XyICNwuZwqAr0wy4?1mZo*B^dT}N-zWky98G$ zshwH7)ylv5n~v+HefkOQ7dj?RBb b3>FM#+oKg_*1~zy`ITiH;ZotsGAsE2{AH7I delta 404 zcmZp8Qqb_EU_u9zeP3f&YZv3zE+!FWrsdJ?3zV6*FHmM~Fc-L&uKdG6e478%uTkm` zYIxMQ8$>fVN3a;1m>ExJ+{LUk{eX=GYx}*;%s|Wn#2_{s5VHd@2M}`tF&7YX12GQ} z^8zs+5c31E01yiTu@Ddo1F;AYivqFO_IsPfi^I??*j5_c5P zWq`_Ex9^LUxGRZOhPy(dkOQmCn+Ay;96I)W+d>(DfC-2zfq2hy35GqL5)47XF2UL> zBvdvW<#KL{_`mAdBK~>p7djV!Z diff --git a/distribution/FFXIVAPP.Hooker.dll b/distribution/FFXIVAPP.Hooker.dll index 837503b98b79ec8d520fd7bd19b7b90375110ab5..19f9dc6014e1fdb57b609f18aca27e9eb21a8164 100644 GIT binary patch delta 15563 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 Z$Lz1EcE10!Nt&8h?fUqPsB9MW{{Z@O>Zbqz delta 16153 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 JD)UQY{tr5*W+ngt From 67cfcced9ebf392591a9c041842cf05b886198f6 Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Tue, 28 Jul 2015 23:24:44 -0700 Subject: [PATCH 07/21] new build for dx9 hooking --- FFXIVAPP.Client/Initializer.cs | 3 ++- distribution/FFXIVAPP.Client.exe | Bin 1847808 -> 1847808 bytes distribution/FFXIVAPP.Hooker.dll | Bin 54272 -> 55296 bytes distribution/FFXIVAPP.Updater.exe | Bin 489472 -> 489472 bytes 4 files changed, 2 insertions(+), 1 deletion(-) diff --git a/FFXIVAPP.Client/Initializer.cs b/FFXIVAPP.Client/Initializer.cs index 9b1a4637..8511a3d6 100644 --- a/FFXIVAPP.Client/Initializer.cs +++ b/FFXIVAPP.Client/Initializer.cs @@ -51,6 +51,7 @@ using FFXIVAPP.Common.Core.Constant; using FFXIVAPP.Common.Helpers; using FFXIVAPP.Common.RegularExpressions; +using FFXIVAPP.Common.Utilities; using FFXIVAPP.Hooker; using FFXIVAPP.Hooker.Hook; using FFXIVAPP.Hooker.Interface; @@ -1020,7 +1021,7 @@ public static void HookDirectX() private static void HookInterfaceRemoteMessage(MessageReceivedEventArgs message) { - // DispatcherHelper.Invoke(() => MessageBox.Show(message.Message)); + Logging.Log(Logger, message.Message); } public static void UnHookDirectX() diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index 778ae6ab5adbeb79777ba566cee612f459c6b070..53ec0d1dd187f7c618dd7aa2cd00bd930a432294 100644 GIT binary patch delta 54602 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 K_LFA6!2bc>BQl); delta 54709 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 F{|Vg;xj_H` delta 17577 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 diff --git a/distribution/FFXIVAPP.Updater.exe b/distribution/FFXIVAPP.Updater.exe index 51795f4442289ccb99e19f6c1bf18768202995c2..906cb8b7d64ecc3a86040b626de63e78cdbf71ce 100644 GIT binary patch delta 186 zcmZqpAlvXkc0vbpK;e#!-GO2(=3)g)Ha`%n5EYngvG)1t9zBPRxp|qhCM9b$XXvzN z=r95?)AkG<<_+sXdZtU?VU`q-+AZ?L`M$DG<1W_J39LMq+FkB212GE_vu<~}!)7p* zyI_gA7y|<%1CZWcU&y|hk=L9-kHLh&h{1rtlEG}deKCgE^#3L7)~L#+KU8GgwVkny H{XZiBD7!q7 delta 186 zcmZqpAlvXkc0vbpX6Lqz-GO2(W@0vxn;(c(hzi8LzSMT+)ow1Dl GKO+G1z(7L) From eb1f1df31e2b9e9a90c251b38648e4725ec2371b Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Wed, 29 Jul 2015 20:06:44 -0700 Subject: [PATCH 08/21] display text with fadeout --- FFXIVAPP.Client/Initializer.cs | 13 +++++++++++++ distribution/FFXIVAPP.Client.exe | Bin 1847808 -> 1848320 bytes distribution/FFXIVAPP.Hooker.dll | Bin 55296 -> 58368 bytes distribution/FFXIVAPP.Updater.exe | Bin 489472 -> 489472 bytes 4 files changed, 13 insertions(+) diff --git a/FFXIVAPP.Client/Initializer.cs b/FFXIVAPP.Client/Initializer.cs index 8511a3d6..2c6ec7a4 100644 --- a/FFXIVAPP.Client/Initializer.cs +++ b/FFXIVAPP.Client/Initializer.cs @@ -39,6 +39,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Windows; +using System.Windows.Forms; using System.Xml.Linq; using FFXIVAPP.Client.Helpers; using FFXIVAPP.Client.Memory; @@ -1013,9 +1014,21 @@ public static void HookDirectX() var hookInterface = new HookInterface(); hookInterface.RemoteMessage += HookInterfaceRemoteMessage; HookProcess = new HookProcess(Constants.ProcessModel.Process, hookConfig, hookInterface); + var hookProcessSuccessTimer = new Timer + { + Interval = 250 + }; + hookProcessSuccessTimer.Tick += (sender, args) => + { + HookProcess.HookInterface.DisplayInGameText("FFXIVAPP -> [Hooked]"); + hookProcessSuccessTimer.Stop(); + hookProcessSuccessTimer.Dispose(); + }; + hookProcessSuccessTimer.Start(); } catch (Exception ex) { + Logging.Log(Logger, ex.Message, ex); } } diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index 53ec0d1dd187f7c618dd7aa2cd00bd930a432294..8518ca240a923cce45205fde3709f3b0e89d5ce1 100644 GIT binary patch delta 102290 zcmce<2Xq@%_CG!&$)je+mgUHfo!Cy1GjU5J!AT&!hlEscLV5_KKwgkS2vKC2-a^0` zKoENGH4u6ay@j?*4J>70VJW-pvMjLX|GD>#MtVwifBQY>f7a*t&AXp_-+g6X`OKTq zO#5f++rM0Y{+YezU+~~O&HnpX>!k(t0h+e8Lep+=GunJh$1R6-dH3cD?NE}RsL(#U zCVlml;c&3MyH*HfJXGl?Q)Nxoe7$erg0qpd7VuWX6@4Z>VvGkdat^oTcE<< zWc<6d0&VmbUE4a%rRk6>HO+YWIk&dy59!eAuJt=-x~j|ck9La4^Df=k+0yMgpZ<~c zVbArzX7u_~P!H{FXj(BuxjdQ?i2HOc5G@yec?jSTj0X`G`pP>_*B9>spnZa-d5m~5qS4x)Q6f=-XmWxJXoAB|1KAnzD>S$WK__8R zis;I{Wkqe{;lMA#5dG$2812>SHBB#pE3Ha9`EsqSKg6kQ<`QKvD`T_z7uzW7CcU1I zqAN7wSEM&1h)JxRunKG8pccKGb>X1dMkN7N);EKG88!(ej5d|mwM|5%(=e!vJ)n-Z zlg7juY7o_s0}UZV)KI!dQR|4PwR#>AJC%LS|=V*JG7D-(Qqe^pme>+vNr;w z)2Je!eGoT`;4SEFa+TM6ydp{_b=GSKl&|bdN)tiA;6&v?SEtcQEzZfhAQ^z)9H1CL z+hn!mUdp8&KBDcUG0}1jq5*Q)(+~)GM58rrNNuVKfM`Y#yRKGSZ}ul~0D{6jyV1Pn zKtz3F5W=QjZPU@Nv3p@=2q&4j2u&+ne(%KiBWQ}K&m0W<4U}FyMu1y9fkTm>TgrTz zdddN?@O#Bm)>lLBPj#n;qBCZgy-4{a0*@F16LG&=Gm;BYd?P_2Y+^s60B(;M3bnZ& znR~>6hz83FJ)#AX#v-(E532i4C=0!isxy+$yaoQyjkNFpx7H6w#6vr45B$`d8iuq1 zS7J8m81y#!ye>lw2UO3dRWLmerY?7UgtVKJV|S2Z*COo>mUeS<>_#ef!=&9PX_vyJ z;bc5oF&r)p$4JBZId)?eJ2m6ObL{?8#;wvW#Wns<86TG8@IPgYnZT*Yf6DlX9J|qa zDz~ZC8ZXQ-R5KnSTV|YW8T3Raj@`tJT?&(mrX4H|CrQI4Ifj!n zhHN)d+D(ymOLOd|Dt4o!-85;pEXVE;#cs4VhCA1EX}CPcaE4+yMmjuH+O5d3n`u2h z=A_gVbq?@R&z}Y3Xgg_=)Vp16Q&l5B8O>%R(j=*CyV|gjdvmVLsg?L+3ZM@Y)!G% zOx3D5n;&VCG=f}hvs9y!Y<{FkQZIJ3%~p*<+5AY8q%Q1go0Bz4(UMV`&5u+`>c6hG zxmhbR3X{=c+z6yeQs;HG%~Ora$mno3B2AKduB+`Z)u<~OwX)G+DYBw&>uNh(wTh6{ ze6}J@lKQNxtyMKDC!+;yM4BXZSXbM8)u@7uj$k9wB&oBy+7_@;t+Q@+BddjMMXDrq zRhPNQdVhSkDYV>(#R%$WxZJ$>xOwq2AIHRx8JQ;MD=`}B&(*d#ll>w@I*p#>cr2#& zX!~O8;0fI;mcWte)-}TgRst>}C;s>n>$nLKsr1@PkP%0D<%Ed7#M(9ClmWfrFkrMD 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 GY;qd-oZ5cM-A?aF%K(K%=+qs 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 delta 101901 zcmce<2Y4G*);>NX$s<{^W6QE-$4+dg$eFmMk;Eyacaji75}e*36><|Pgn%N;bO=en z3?Lws&|3&4^xl@Xz=pO<4J^CtQof~a0d~Rs-*fJ0q^o52_kGXvf7Z|AJNLZj+;hv^ z^3I*nO#5dW+yA)nqVsyr-t^F1&HnpX>!}6w{+hPELep+`GkWu_9kv5=jQ>vcz;XtI=9=ct+Z|$&@1WFHGiaBw>=bqBS2O)sVrR%sKKYVLlTrcY~|0HsS5!LHO? zqG|s6m)pp`Nw4RlC?>yUKS5tU#Gfgx+}z!tsK`gGuIql|#Cb>yIb4V&cBJdvjI zy0(dkbQ&HH3ReMjq@6S-nzTW5h3sz#8lsZYJ&v-5MU}Pbh-$r?b&!*4|+r&Yxm&VqzORuMG(EQ zR@-RSlh}Zu;J~wJU$YTWpJ+nZ)U#~{8a8?#%nacqGZ&+2Wz!#=6nhL!5%HPLu-{DS z#S;X$#Zx#G=5tG#zzxw47WrQBj5U17gUL#2C^}_^*^`t{Bk+j+FcA;BH6yVQ#W&&< z!Y29;6u|8f1E4lHB6E)zh-jd+z#|4B(pZQVuA;i{hqAy6sasm|nYY7VJ-Se+zgz2z zBjUmR8;AbEn>+$({jT_I)G^>~^m$!|7!0VMO{-u!6s9hBY>2cwHp_0PV%H+=TBO~a zEW2Tf-7sl4T-qfu%AJfyD2BtO;YevXKg;e&#ZJxmxGcN>lyR%HOLC3>Q^xbM9R8<_ zF@Bwj{HKf;X4#F$&NIM)+AdUty&dk@*_=xMv$v*mTJ@`lOJgk)Qeqh$EZd{nfyqTpf2oco1HOA z(vne}$&XYC>c6hGV>4D{6eOc#xDiN`pw8=Ro1+?)kkM>5B29vNuB&aXY7`=)W7%kK zlB}rPy4vQcR;6S$hpkAHpg!wrJ5Dt!Bcr)&M4AM3SXW!CY7{1;d2B?Q1a($d+k7^v zb=J*tvO12fNR^M~ochKXIL(sCo_BdDM0a`WQj=Ecu^5)(gWWSX3>#b~5ISKH!r z_KOhdG-}B4I85!4_QlrDiQOs|z>(?JHNyoi0R|x_{@4QR>4{;f^x8_W1V{Px#IU}= zGA5nbzXu%pjkc3ez_>sl7E6LfSU( z!@u|%fr(SV)}2OADlV-=fwm<`!^}cfq&BUIw3DX5x_WX=;lQ5SM)4-h3n`~LlSkPzg*SkEM&&0V+P?sg)EE2$nGQuWXIGZ$4pDmqZ9h^Bx zKgTLLdIQe(=|_hP<8T*oiETKTYpolPp3%!G6FKJONlsm!Xs6>4m$}9&opoaWL+wtt zbGd->Ji|_ea(Xb-&4hLLteL&o9|A7uPO>}4wma9c>v7E1|Sws2{-aG5P|)2Fh9 z%d^d{$QG{57Iu>`5pB#xy~Dy|9$UD;T6S!yp0G|n_88f~H`)qR zRZrZ+LV4n5I&!@~KlUj7Y-{kG9#yN;{dyH5okkP&VL837wl>Y_hDmbQoNiTXRI6sP zqFF7{zQ+31ocmX;OY7INmjM|sq)9x8j9q3gB%nze%R+h{ralMK!*h453WMV?jQKrn zZGAk~p3=cYSh+Y$*=3%s#EQvE%#2RTk@H&gHtXbhV4BuF^Y$InPC1{B0JD~9h%*pt ztTn`$IEu3n$Y?a&N81=Xo4|7r)bDZ$nm)xK)Wj{$MN|T%;yml_$Le*j@&kM?}ujdySJ1M~~OJ87?bMzKm=LL*7yQK`w z3#~B=BIP8Do1l{|0FF#8Fy7j>ptkqLaFNMMSdK^|H`?yPdU%QT)Pf$}CdhI-rOlKo zaViQFvEmCtT>_aLyy8-8{KCernMyTdQ@}|sF0;;CSl90o6(njS}_)0jpYIeNBP`HQ|X2Y9p7#%np#yUgR1qM2F8n^CVY!47DAnXf$ z+EE@{JX62iYFg5OaQ>3X2(P2~{#Tcb)F<-ldj*<`7Tbolgj(yPsMc3P8)+vEjq?Vx zHv+%Ol;}%jV_<2SxvVNVof}u;e+Ql*%4$gYuOzpT949pT1lnEpfZcE|h^TZO2x3Gg z4k7C_W>EH5LCL#G7`*7|ki6n*gmrWQ@6u2j4HrMbQkS>}=*i=;i{v+Gq`1Vj)=$g& zv^w1++#lVfgT};lG$wew6B{hw*+kdxA8VShp|lK81!2r^%=VV`RfF%dC31&r@H#0SL;jWK*=F zQoqrvU-3}Y>1ZDAlNdbcle02?@^tIx6*Qw)u58qAvL>(W4yJg*%3mFGW;(?goZ{F_ z3eqHggQ8?+Z*+rnr$I5y%OKLEj`MHCZU#~sj@@F#kN>THt2O(Ck%hMbs&6(iV;bUi zYxfBQtM35f6?+jD_!=vG;!ebvZx?#=&3)FFCrk<4MG#H0;%;lys=15qfxM#`%`fgn ztOd)f7Tb@QTik~*VB(w_E^nkMP-osxrl5$@v|*#vxjp6sq`;{qnik~8NgK*z2f;kS^`y=fGGb4_G!lD~!f0zTroE>qicQ9+aTL!W z2zku`XvS!piE*(3K`<}qHJ`PfT@xuLzZrMpIqQctb83HuL~Z9m!`0(9N z&$CWkJ3jORj0#$?m7)2>i-;G-TCHc+_E~)n%=5*~n6*QB`QlbOs)gK}DP&%zkm)Ks zXoq(77XUtUWT8bFS@rl_4FdW z%$Jzd_tQfFSWYf==TNgt0df_{}nehIk7hN5$KS zf$L+lu_5+bLUFnq0&cHJ{w{4}h<6aJr%b`0HSEX*W6Mx*+C1KYQfC}t)m%(cC^gEvCbhwdT z+}v8cl@L4LE)aQl%L46k3WTzpKxO$BF3m=irR^f{6n2hHL07Hieq{DPHSeYoAp}Iuv%heEKRBP!N%`0V)-~mDuo}1#D`RhIE5l$ zJrHZIDgbI0A`lcCgj-Ki?G|0EUt(2ykyW+1y15v-h9y3MMal5aFLaw!&X5OXqGKNB z@791(-s*4g*5JmPwR-cwz&dojyvdE%_(X|y8+%8<6e z=M`Zby`mf;D${mymC+SZQE6R!@}eZIh&MH3sjZ*pipKlmR!?T#ubi8I=wsRXB-fIljKSHC!98}nT%AUo_9P^yJ&V(g z=NJ)^V{~VZr=%-NP>$8CLtGJ(W3=lKBSLbF-gWXLib~y=5Vu2ElYTnydV_t=Zc1Ab zlCff=nzYeoTvBqg5t3=P0ggU>;t9#DvJItAK){~-p1qzzor4-e53lFw^`^yw&o?tG!j2CH-yP ztj2hCvOD4dZ;7kCqAF}|$1eDAY=LUt1GlD0lvxdnn@BA5nl*^$$Nz=}f5#}ynr1EJ zb**L(973LOD6e4>?nfQCMNLa$Yz(p&Jz*F0uov5CFbZe(%Jve>D{l?u1@qR)d^QZ+ zcd*pk)(s|RZv>54+9OtHym4|Jq{N?SRf^GmVB*glW%M(SqQ?Hj=M-(bI8AOknA`{= zHY;D@sbE&23HG1>E>UeZkxgH=Aq`znHHdo1{)Uht8W0J%;*`5r zG+N(n>pi~-P(jOHv@S02njsYCS9A@>`XQF+gk64IhCd^2VyD3$jtxL41|pEUa7DQo z1gUc82sC~q-1VxE2XRXzDoc(4UMJ0JwF6#F47PSBdX#QL`{s)wq~r?}WIfb6kT@<$ zrSUhc2koMw(4!*AQI-H`VTx4(j7ZkQ2T<9xtndm6o-n*5G#*empeJ8FuSRxWrW;HfajqO|5XtF*l_IUdolIf07*59AlYvoy^pbmE_gCay)jU2z%>AzwI@AM};v^SO~NZNy1$ z4n%J)3i*Tnrn#;-H9K(Ywf5dq9c`n#ob_Qxk91-(iuNJ4-n4@S!Td&V&_2Q5nu6B6 z0jR0Bveldd8*{2P;`Gtw)F)yIG)E{<8Y;l4*hZ&fn$>Z7S#l5j1p{$9G_42*VvA9) zh%8>5>XhJ$*#Ol&!3|&o)L^pJY=GK}8!bT|-Er!JwtIm`2>d~BQ{IPD+&Dj89zH`t zT|C~P(HiU$#xB8hvXF&|hjgUO6Egrcmgaynt%YawjhgIO7@J4nqz%W+lGNBbR9sS=_DBiM zIWP(ZOM)hD?E5h%(qHc}gY!PbG^M4BlU2#KOVLt%%_pbDDCIN{X(R2VF$W{ROyOIw zplIO`>Xqb^CL2Jyll4Z=^vh=Jn=Ti(kNI%T$0g=1|y}EeJwoC1vI!&eislDRHnQUXIqA zPc_S`m_)@)BtogAA_%*tV9+N;bCI>{tnTxnF$e4Q-kM_bcqA&Qz1OR0<>ldUxIA_O z04j%X%ZcVHJ8rHa8HHTf1weljN~jX8pnZ-HFUFe`RCl!f^|fh`Vy;(Dm_ z8q6ahBSD&=VUDH}#({x!mSVQvhA6hi zh)m>*$<|ZbyW=MI!R@t4B7|UKOf6*Q$J&`=7o2;guf!Mh#%b-8-7+5wW*bt;8Fc!G zV}|&>K`$?T4dr$Ty}W|r=}ub#mkA_kx)J2Y)fryrY+v>E3YlwpI#*C0DooHXl2m3& zXyW z99(e>T_`L@_p4tJeHzy{t~lkk;}~n|t{%od;{Rt^8+TQvqZehOcW0spc6CjDhRP@Y zMtQp9f2H_$h`ZxoAX>e`9sd%?R(Je=aHy$Rf!JRtR=lFs?~Z?t=mxZc5jz_#kocAp zehrWkeuE>-za?`{_#MTN5R=tch;Ar!<@;i1TWc`rA&L}0^JTtQ+o(fmyHC;P4{fX>UQavf$7uH0~%i#^Cv}cCSdI=4C4X)uK7Vv zM<~w~uZ9BiWcuu^m?VcD3~|3mw)zHcbt=5m>Stx^W2~pTIQomN<1cHN%C0UZQ=GfB zH+c@JJdX9QY;Q6*s-&Yo%X;UshV(>`pX!~Yty!Ksut&VKvA`QWyUD)!6fi0n=*R$- z3|yT7su{Q~1Jo2Va(@<5%gECX;*GwPiBF5Z3PHSq(c2jGM&yG7^M!?K1RA<~qi;Ie zVnFpbRr7=g^Z!*{k~W6i?;YF?;`(E2?$%!fiSKXS{-@^Ls8U3x6b=B&s+td2nSidu)zkPq%)z9gJ!T7P> zxdaF)4xqMJFwKb+Orqd9(92pkE`&@hr~VVoyRp|Lc3WMp?NNR;r7*G6;CHdDz(ufM z?6D?YTb*2u1u7b8Mz33nUeM$&Z_q0W46je%y2NjS_xQyP2#kmTG4aO=={eF6xn`7| z8mywnmi%pd)3vyRYjF|P0xg3@o;2nZlvJPr{6@4d@-)PBGz;zmlW+cwia_oC2S;F^ zgHN%ntbDWuR|-f5#;{T5Eu&mF8NJQww`XW~v?K2A1i}Rkm0n**p%ER1jPk)6aLfD- z>&!j78(gqRynqwvYTK7C?wwp*E7RztNxW$7y0xpd;=2C&Udy_!U(tFr7EQ%?T)-0s z^?m)imMPS?1d?+J4!hBy6yJf)isuU)Balb`qK2C6wPLIEb|0WgT;UgLyZS zM9fiWU$;@+x|TUoKSe#_KI_Ko=dQXRLhJ!Tg2qYWL5gtFVBUtxbu#Hg z*K9!j*?y=6lbtWc>cWxbg*a_iPOc>6D0Q&7r2pG`WF0aT;2>Y$Mw@r3t9CAQ2 z&KjQey|9sSAYHT$*L>tv;3} zZSw$3q#br=q}_yYsK5&Wc79o$kRx)L%0mSWg}$@}=T-pENMT*EcUtprkj|V=Ytbce z?iD190|-Ke4YX%R`AXfsxaBgmb(v;PUEV~xxe4)xN|Aa{kL}>eld6> z``mYCoqJ5(*)Ffnocjl?P5Vki>D7iD;M~*NV;$I6Vcos&3NQD8{5)&pE#)}ZYwl{n zxxVhMo+jaqmAM_GHH?ly-5bwdAq>Rcvc9~lYd$-fip_58>$}R}px50;592e9%{Y5o zjM}wkq&)v<&zdPRnvdur8TB`uf=x4wlRNINn$4*x$*fG0HBOS+cF^Z^s)k@dZpLvI zEgAa>j(rU_jI4@#j`VS@1_lePZ|<$^leNN}B;H1K_c|Higv#z;k z44USndwTr46ouI-3dK8CpL?CGy8NfCx@0HpBHp#`ymth$`uyI1n^jSEiX!ozHDG_K z_kEPtCqA&I?~nAy)R|trgW+|xxIERwKy*NHFiTN0W}O%S@Fek(b>055#0|Pa>!l{LV|&^Co@nUvQEFB zCdmW$AAXX=vwfLKvH+z_vnKGBY?s$%2FkvoUxX^y*h*m>5ckMwM&Y4`d_xjVnSwS$TC^^pp9euX1+ zb?0|Y3+Ct6;741NUm&@-06|dhZil??{GbJ8B(?FSR7EWL{^%7XUhRmtkl2pP8L7QP74K5TKdWL{ zKPByCMYL}K*K5|m$B&q;A!|eY6(JrM{TmL$9>6T@71&Plmy5px5dT0>Ad!j;Vtx;} zP{LiaVe6sC`y{E?6zgtZbYy?5Ew&V$27w>C4;ewDu_lOLIrepz^R*-!$_q7V-B9Fa z3|Hyt`#M0$t3_0F1?Fu>)2l-b>xnU|imPJZe!xk#@w z>_vLk(>)Dd$ZG86cGuI@n3(Q-x(2hrt51&&J%!TwY8T-y`vNAPg|Q#39?$ej{s`Rs zCxV7xNtgU!p>Kh_1^q8T!7lRAk)IH6!m}sAE)nrF;e{AQg~390H}J-wrwv(W7xp$P zY$q%u?W8ehqMMueRZl}GuRLThrxU+G-S$*cO?W#cl$;R-mYflH8eXFLh7*99W@mIq z#-23HF>Q7z?Qu1jZNE2TPa1P7JrEwsk1auALVkGwMuUq<9Rg(2zA$yXQZ(&VF2xOCQ^6|fmTs&COHDiwXN1ba z7)51X@wRo(b5-4GT{fRb(3Br6mkWH5e+@(nwe|UPqaFNvOv7*Mq&W@!slEr}Uz67-|A(RFYo&^&kyRR$}|=TCIw z^pxPAPE$|(H}toi1k22)QO$Q2Q!S`zlH8pM|at!W-7d&(~$8xq;I74xi@5tTbWks27T} z(%nqy@(-Wx)vR=7*0nD@RfQ`t+2L_EF-zS|9ex}(-y-cVSf{;smF~65Um6$kpwpl@{!s$bpi<-VcdYgF z%b_y)K$fbR0!`UrQv7Ir{&LSTXcI^(AT`}4!y^a5$>}VcI+f~~Bs(DjV zZ3nWm#=KI~cxaW6Cl`k+!vyPsS8C_l3D%lH6p0@iv|Ed(bi2vcnk7_V$4i#AeU{i7 zr)mmvGfOUhHN315YcoG|NISK-Icg5a+2l7x2`>P5jCzQNv-KXBja#|=YZ6W&JBntW zN9R9VS&bw&k*(J(wYI$ah+bw5cx`_buE1qq#`Qb;^8QR;e$D#jwO(cS0l-g!aBc00 zxDyzRFuLCw`kR_$7$r&IM-3kQ9HML_PH2hVS#}fViL9<$qI-8RR7-U`A7#Q1;g0sk zapmNx)rvK3X`|_le?Ss`n**uRmgxFvX%lv0DFZw~kG#BbY)5*$@%Ip#6>bk42Ca90 z)0FHAr9Xxzrs+01*^5db1uY;*^dw^ygu;AI7BcV)t!|Lz6BBZ)NYEh5XXm)f&vqqw zJkXkYncZO=@g zks4Xm!i1hxv^=jDmvS3;#dmPW^DFAz!!lpLxMUT&QX_tLLdS~5jR8DW`^xLf@b<2z zH->hjA?>jrj}08$>dLR2&%MyoYWB3+->9Cd8jNz~WNEAg9MkOIv>hXG-V&?Jk;Kna+S*17M^UIl#S0u9lUfLUYx;msj)osrB# zELez*2s(kS@`QA;Pe=iukdiL!OP-H_JRfJ{@rpoa_$=q~il7neYHfI{YZ;ZRP@WrE z1}c(u)mv}t#a8s~IS5~P`xJzuf16D5$yzAqs+#hhbdxc1pbvEpuvb5Bjf4vu#=G)G z1d@A@VffrvH8dD_ua$(%I^Z?^=U-B}0#JD?+d1H}H?G2^V4<(PwIJWc{bJyKc*5nN zQCEsk3wr9UBY$^P*FNwO@h854im*gnc3tG>+kPm_`3({41Xty`1_`J55ECNdWXM9aXQlb3U5J? zmE9whoxB_Kmi6ts)p(;!@q5jBgEjiSYQ51~@?N;C2_-Htup$SL)MuUqXQJ6U|Ggvh ze%2H3J&Ag?y-&LhSG`}|o9Mi`3KlN&1cWuE>-yt&Y_UeTz#}qLZBf7f;QPPT^(O27 z4+rAqf}efZu(UtaE^opQHJ@#x4Lf$(rF@u5iH!-+1=5(9lN)HO2&ACJCk7#c_s7wd zG3_|;qepam#~=NU=A9d?=)p<2+<5q4Gd3MQJGebL7`nDXIEoez#Kl)70x`tFdK0!x z#WoOjvx?nE*vBgN1!4F(bGE;M5ThHjFuVsUdK!V3XMw=3A?y(qdxo%2RO~atj3bmx zx9D!7jf52)BXgq03fGO30b9j9Vb2-~b;rxA9eitQ!rw~Qs7 zrv8G!iXloSEfAwiRP1=dE>f|p2>U?Az9OvKP{m(wh|ww8Ske=nN#KTT&=cK4*d7(z zOV}$a_7-8j7A2EXh|y6hHi58pDz=fZF&b5|ZG=6bV9DrH z1b(7`(Sn}9zEH96$Syom$)plubf${65_X!3wG;M$iakZxS4kE88-YWPR5FyKSjC<{CT zO5!gGEE=z1We}soRBSY1%T;VOVdtvYPQvb2u_p=pR~k#o-XE9%a3X@NA$BxjNfkSr zuzOVOLBbq|(%<)ll}%LqRY8o7R}SIIO;Q{Vh8R6T#Rm2SwqC`y z688LLCG8W0EuKO@0mVf*=dqNZ92nb~j-ktJs2Rz;+ex6kMc@C_CG zi442V%uZb292;s~@aHPY7P=gUEilGxp}&)oF=h*kRE*ie4i#gzaI=arTX-W2bJ)Tq zc+Zlo8)w37;fE|kFbHM~(~A{5W(%I96^z+JiHb2>=&xduElg8EW(&(yjM+j|#h5Kz zqGHSzZZ1*^!))Pt)sET1V~jCd;2P(!1;&^ye5EF4wqVRsGGVsRTg8|yOjj{x3#+oR zG+Wq~4ccsBhl(*<*jlS(%xvLi)sET1Gb+Yx;f!J>tz-)aR6}M9->4X~ghx+W6Tz` z1xm)u7U=zaS)GvC!rz+|jM)Oet0?1-*+OyJUs5(dvxVVlP-4s$7N{7rg^eo4Y{79T z(=uD2cgJNFkl8}JnpU!fT`I_IVV{aITX=e*;*infJR7Ptj-*aBm@Y=OZXw!l~p zTVO1QEijhD78uK63ykHm1qO520%JLBfw3I6z*r7jU@V6%F!m7|Dw@AYX~6|E(EqY1 z1RLH?Y$3xS7|UT0gb{HSUJeAs`(Ut1Bhf_EV(mb(kV81sr66ecM<2!l*4 zRyrkQjETjyD#pa(X%%B)@x6-iE<}b`u)iE$QIw<-GO_5pINdaC$i!lpiZQV`O2wF1 z#8r%lMRcc%F|W8&#lS0)8>3IFAQOwfs8|lM-~#3l3&xmO=u4D}C^az?i}fm&Lo7Hg6N}xd9q&Tiq++}a@o*MK{Evynn^_<*CKi8CF(wv)rAqB` zhy@phiA9xa$Gl>qiV?3!M$Ki4LnapURE&wml`6)>;x!dxV&Pw|_+wttU&WYL%wmlB zAD5bm#R}DsiN#hGV`6c$iZQWxN5yy-BEu^<58j3FugEGO_#YDsGaK|onOO8!F(wu> zRg8(nG8JQDv0cTOS6r`R%qxiiN)ut9TSVH)k?;^3-N=BF|T-ZO}1S!%EV&&+H5e&#A1tz zF|jCIr`Y8X3of8dEEGHD6@%5Zl2;_1WtI~&u^6u!GO?JUVmZWu(=xGGs@gHHxJkvB zSG;Ls;D4N$iN#-3LnanE4w+c!>y_FuvB+1kiL|@WOU0O19IIkUCKd-yR2(v~_(a8W zhy@oqhgdL{CKfjHVJwGNFlO@#tiM?+U=Fch!yID4SPrpZEQeSymcuI;Q+Y*FHh&JW zV8a|@!B`HlU@T`Fg0UP9!B`H5AgsPQDM)NCaa{B9^Ll%po?Z7;}hIR4iw6qS!_J zk4eN8sv(nzM^%hT#P3urXLEuJ$Q|j8s?A)w#(U^ zU@T{Ig0UP9!C2Pj1oJ-zb9N^fV-k_soM4Pegis5}93rzh!FD;D6O1v3$ZSpk1OLk* z5p0-4A{firoM0?xbAqv)%?ZYGHYXTk4w204PB5tMPP8$WvpK<7&gKMTIhzxV9N~8Rx4Yvjt1Vm@Vv9F=h*Qs2H<_`&Ep093E9M zCJWCp##0$LA+v?dLk^5FTliE>%xvK=D#mQ#M-^kX(EViPG%;D|n~kM!Wn>WdEj+Gb%obi!F(wPIsu+`nkCH0LY~fQCW47?EiZNTrJ4I<$$re`#d3BW zI1eTZ2h(;*+5F5F{+R|P#%v*HhGVu+8dq9|*@ELxre(I!Q?+BVV5*qBl`&8SnJvsx zF=h)dt60v14_vz(w!l~pSzs(p7SazsFqp#@7|US`jODNe#&XyKV>vqxjOCDpB!f9@ zfw3I6z*r7jU@V6%Fs85td*tMh1-8q5@PWY`wm=xMg_Q86=|ah2=mKL*7Y;aQi7}=N zu5IZq!x+DlDke7zcw04Oy6|TeW4iFYiZNXX zoURmx=|VphW4dsZg4uN8d4H!(rVCf77}JHjRE+7uS!c_9K^M6BbLawNOc!pq4Q)H#TsWX&yt(jC z6=S+keU4H&rVCS4OwxtFs~~SKTz;;SnCZd~D#mnS+n zg)!$V4w){@Rxzdv%T$c%!Uh#%x^S9`F{BtO5TB_SQ;1O)EB=^5Y*w)y7oUJ;ct8a|S_teN6=SZUS&Bp6m}pTkrW(r>jH$*) z#d^1j7Ca~saf@L%2>iy0;v*=Y`d6`DQ^&vE9V_8K;Ab9UoQ#hrlL<0D(VZF-)W;Xo zZ$fwAwlKCAI}~8TrDymGDX;{6NevRv0-sooPXe?6x z>wq`ny$~B)k6pda*@7Z?O9n?~ZQhn8G{KCl}9_V+?5*sMiuh=!KoKG4Z z>2yIuHnzb4(~dNi}<22b#7+GS|m*e1Yu)ggMa;VRGSiP6*(WqR*q3~Ic|a5E)7nc}XRRUKlB zjIHSqr^wj44zX3nPV5k;%Gibuahi;6>=1Doi*|@@GPb!xBxGz$hiH?rtsR0`EAlw4 zL$p&Y>8jb*Ax@WITZcG<-D-LkE1P(aB z75HWkRqrhaxl)?E;{dxQ@PPwdC4r9};A#o{M8H_8%rz3A-y2KdS_$Ay#5S-;0(h6N zmXs#fNu0b=l~B$V50*(D2HS1!0b2s9WXm_%BX}NuK>O^WlGcI^^{) zYd(|>@ZXyb?e))@57SfGe``7{=JhW#A3mQtSfjU;g1Y;QU3i56y-X4Z9kR9O!HU$l zTD@!XMMxf3&1QZprFcn7Tcz|eOHAM-@M{SWZxS!L&pCMhX|Q za6k%s$jLD@Wu7Qrmk=|tV;FfuB22|3@}@+XdJ!VtlE5Fy&jcEJZ%cq!M2GmT6nI5t z?e8S8jkWJc;Y?n$-i09ElL#$Q9pZf{>|)^qDeQqD^Z5{ftCkm0@=S3Mbk+qtuG*){ z$;CmL>S-1}lESkrd@P0MSV;a}O3$Rx(S1(s599*}`9cB*9pFm|eCz=KBZ1ats^(v$FrS65Y}0|r znj7_N3H*@&F3UF(_=W&JE6HyqQaT6-pVsdr@Ph;Vm4FEE7kI>xB=CNLyi)%gfC8C-M^p8N-h2_JyM@1yMNd1lePb^exE)=hwJuj+1(zzR_XRk>g;ac zl5gt*@})+@X;eT^} zjitv#Hilu5q>lYoHkck7HumpEN4ENN+29{!W9cE1jipCP7M2wDNb#9jBPE{&d!+QQ zPoD>Sq#Qv&_DC5+0H0=ipd3#?_CQ(V067EYq(euF5gw9{cg4^O&=By3hj{VwC=xv4 z9|&vFt3Dp&#S+1J$pxckBt9RX2Q6(4l@D^)R2O*UHr4k4eb|EH{is5$C|!#}uG%#N zG%Y_&xcO!3uXTE}y?d44LS#R^dxe*j=F{$#U){a(h#%k-UjX2pzgCLFL^jBLDLI>1 z_!=ZP!$OH?Z(`Alv=;;BO{^vK?Kvr8B{cBXNL#`shY`ZgQm}wu4P3}!7qJ8h?VYUv z?`+A2^r8l!W`{*;XHnWPcnPux%!BeOhn_0HJTFPD0@*0-mx7gXt3MiXd z0edscBaVhC%6%do@X8{3rMPeOn)F^)QR>&G9@c+MePZg%=TC-_+|!y$F}bHj3kmHo z(OALO6WQQE2E3<55xJ+8Z7BD&NGAwRjp?gb4b#EPl$(S@#fvn6qU|tAd+($d+HV9L+AX-0m%l~mTO=6i934wh z7f10qH$%|d;UeaEih4LYfueaF#m80*VQ_RdMZFxIPEj96r%^PYqjMiZ(qx0n*Q zlcwz#RsB*%{fjFV=%@D@rnwadFOx+D-scu+CyiM^FOcdAxv&ARimOC~zUpD%>-4GB z{q*CKi-6EqH=~ze8`)e8iN9EcPtv0g1UM|SUWM zJ%~UDFbZGgK?HTAoit`E4I*3)`9tM)FAG)JJ&Jp8(WUm-33ZJM}&{ zt5>C3hUh)L-B1gks7ftQ3;7VXL-3IXAM2<}-8V$Di_Gm<0mNeT7O^ziH&c&Z=nGHY>kiyjE;u!7iPPg0`OR`qvl zxZKikuOt|I4X563xD#%icWGz_aQ5->=ihLrNPRvG7dX8rX{f(PdkyKXrgXi59N39z zh~Ksvi$L@rSc`WvX5_$ub&6czZL5P>FSx*8%a|PlpcZ`qdE3l?r|1iXJ84_hLvV4N z=f~(QH~L`%z(QZ!EoiHJ(FnoU)v!5URJjAxC@%3d77l!dx=>FQj?n$d0kBMXXnbIw-Vi4sKr_8g&1BL@XceG zU$ZZU5Ozr|KGP|lL}AULkZt=GL^+#+=x>lHHVkrXID$f-c@*+!a_8eMndS&Wym_R5{WEGw zio^T68Skl@QF^65F*STt##8rF(^)1P%$RymU*Yik0r`K+# z(=rXHKkB+1+7e$YzXt&rb9Ki@ti<^imI5$C)) zkZ;}qY&fms`Q~w{SH|ew_14rEWAtA7{8X2*I4npFq{G70JRE|HkTlYcZB&oBgqFR< zsqJI+hBACn&mS@xhQ@HcV$j8K&=4=CULLF0=}S`Ij@7#rEu|9qTJZjJ4KE;Gmg+VR z`>X%|H3B}f;^$@v1-KpPy0)=47>LcGeDN^^Zi!FuZJhE zgrYG7@ckzEB1vGr#OE6vyEG&cc5;3Xn3GOQsomrC?iEgQ`YXFYBsv(k+lZV|bBGHi8fvy1 zsjf=#K~$$F&EjVQZB=K|%&Kd?EdVKEDu_!OyM;0}*p z)TU0HjEnEjX_fgu^sxC?{-1{#3P~S3aYmVeu7&Thp@JX8Qh_OYkv=a~HANrZlX_Rk z2l~zDk9rt41GXxB(JLt56{%CE=smhcp^3DQq;9r?hSwHiqk)D>Y;T;Bx^Id;Oka`u zYKmTtgE3X_tzVaFn5th~#Ftq`wFkWPDfn0{^~zMezGO3enI|L2;J#^keXE1hC!EYJ zFd&v{&P7%>+0e8hL(p9xMZusr1s1#vBfd2&z5)s4@_Z^#5l(HNrq}A>2k)4sx9Zgw z;!M;>-2xu~HC%D*+IcwI7Np(ic&f*AJv?k1($z0$!wlq!-$dVxj*ln11i`c2^kGdT z#r~ehYy*VZv^nO+T;D!1b=7peVo_gY;fgOH{Zce}{WMp6A*H9axk3;DP@r-NHOH#S z$0AtPPhw)^iZ7*P-%yuoCaPw%FH05A(8pJwK)%tj2nSa(+E-Dk<``Iz(Y`jdX@=e} zc_JXYR+J+qe6JSAEO#qS_+Sv=i>^crMn*WXi4Ly#NjQkJP)gB`B#9_Qz9_~!=rgL* zp(<#(10*X3o`R3mw$iPr2Z{D*=Nix=!fR7g z7jM+Kir%3w?w~YMa>|)JjBjbjBaDe0MxF6Qsc2$PS3=I(o3I4izuUsrfGTd< zVzfdp}1+T4>q6|9?P?6gZO0&p1QLXM z&Esiay$BWbHxwA6BX#y{y?L?YP&@(t-gXkrNT(nWXTrar#i)FKLBpIJg-=`z&F0A% zZ*+Zw$;k1Oed&=ZJ{B9$R;tgjdR%{E8fEincOX^yR?5`iUo>U%^Gz) z&I1FuF|}@j7*buqa|H#rw>+gZo z??RnW0$2PhCyf6K3RnDU0A@e9svm-CTuU$K5Vuenx1g{$AmWPefyuTKeEGp_MS(iq zbTvfA*HcnnugAIKV3hc{5v3$`a||nv(S8#^#4$Y^?YGD{W?!QnY?JT{DUK=LQ(xz< zZO3`)bk!%DV;G7?`<>DRebH#gy;e`X-;EULY)1QiQiZc)v_B~0D5%l?h>W8QMmv~; zr#{N}Yf+C|Q7ry6Pwg1oI^fT;!P#A8_`FPXFU4O)JXz1Z224iVN4>^{D&zA-#W-Z$ z{oRKKYr=ORT=4@)V@{*1SdPZ};7Zb*%kpnXbqu;xV~JF{;sjNgM>%SVcNzZ4XYJW|lG zy8?l^hCE_7qrqS%9?c{1L=L?rM11&^khqwB1=C4p9d8dN`+J(!bNlLqiy4-uv;w~6W5BRVq@Wx_T+z&Z?hUu%NwSNeA-ZvXSIk=`;?e6_NHp>Xe20s^mkIPs`s?z}QDnGJ|~>SfT(4ykKD;Q)Rr$-S{1vGB_uO(LaWE3#voNsY z1wxc!gf^ACd6zO5uP-NRkVN-H652Ku6cy;ze(VME?jjv&w~vmr14l>NE2}?8cAuv? zEuB|TC&VQ>6{i@p!iQ8~I;Hhj{+l(EPLj)fBsFA--aKl@%bM1!P1AnBQM(lJV>d_F zZdi>id0c& z2e^D{fQ)i#kK=fM>hmS~#z}_u0EeyPMyxN=PS`;B z`{Ul3Z)o`wD12=^g;#TYK8H~bS24b4T=PkO?TX_*N&2ps@DzDSJuPB=x)}Gw5cXC+kddl9(CEAxK|2PZnhYU)z%eGi3(9|N& zoD%KxYAW=b$5VLGsCMs!pKC9>l`+7*ox55zMn^#X(OlyjJ@z3JSBME+2O6t+InliS%$W>Xx-V( zTBY^%h0XMhc7(|v`OxbU5<(nKJ>$irOSD%T-`Z|ypRM_*e3CX`$C+s4F*~WLzg$G& zh@KQ)HT%k~U9?f?8GbD~_LF3ZcGng<_jjC0y<{lc+yWcF7C(l@8TOl|pv$4o8J&c4LLgOUGO8{S&4y*`%uO~Im%$_;JC3Dgp2Z=o=62_dC(J#)Nz z{Q^|oCHqIk5y{{#LwkKGotu6;m!DRmeKwT_+b!L8Pd2o-&!w=82hy25ElzmeT)^x;Fu@>G~eO*WTym=4Rq%7E&VAkU0`!CN(9-1c@;< zg$gmp5F#g$h$%wQn4&e-P?Vx*wWUH)T2os})l{w05~Zc3eb-uNM{fFUzistJ14h?lAMBx_QGhE0fjURwpc0Sd)$omTY5}$gr==&6?@k3P6tPbTu8nC zRfo>i9AR`yXPi5AaK@YAN(`kMI+)~-BS;=iqrtdwFfBy;htep?4>$Gng1K3^X6W$B z5L!AG4kdXCr5g+yNwIrA#iV4EnFueae`HccYB9*s1B8I6{`;KbNGY! z#jzpqO%EF9mY6jBVnVgX?gJg6QT}z^ACAnWCC(973paR@?3v*RyLd=;>$_r#8Fa52 z)W?;(eB<2}Dka9pHiEUdjQp;3!iH@G4|=prZv@STwoG>f*S=Ky$+_2cFF3S>!Z!=4 z4UVLcY}}I8$GnA9+!u$}$_Rl~uhh!$f|nL;?GONKhiL-?U`G>@iBq+KA+Q~_X1J;2 z?0179(`e}B_8l~}DbyXZs#{YCPo$;h>`eOxX2`+iC2sp93mAT|?I?kX0-GntW z!|j1IYtPT4zPyctE(F#((Uj|oQ_c-O?n@*25*|*>@EWgW15+rQ(u^pye;JF|751jY zV@D)$QHCZ_LD#c9>_Ow;R^wWD;E7m7?cI6sWt?|TJumC{=RsRiM~);}EiMF)0>`*j zdMuz>@U%I}Q!IbuneuTw#dtR*`5=fD;mr^w=FCuy-7dkB7L_xIyu3T2Ypnc9(Vr<&*=pw4e%EQ)I|{K`0$tu2*f(CtZpz7 zRqkkRg)IY;a_1xYpff8>7@m}y0M391YqWIJiL7)v52<-PQ6LNg;b#T^{z-FUC3{&oH!1g3(FNXP-A&f%$y`_~)L=J6l>NbZNx2R(6+D^3@=J9Gyd2@r z6zETs4Rx3-`G@sznF|3-d*%_%hG3=}Oob4}bb@IeL@@o#v{8pf*j83ZjUPTG0k%LB zrpip)Aet$bX&($>3Sl}9^O*WEorJ~gblSw$y@txu@EX&1OMd9{syGK*m?DP!&?f=T z!&`#daMQSgaS3n%^!>F(^RCkK$Tk*&xC@ z(1fXKK2a&OW;z!|^a$E9J?u;L3&b+5%p&?7x-czZFCe-yT}R6u;4G4uVrP)0r+8Un zxnV^2Z@W2YRm1?PQ})w1p)VrQOs2YGB%9XF>XGiC1&ML2^B5G2-85g(m>xuhVk+yL znh>oJ1x&k=h+Y%RnBHg0bz&X+T%`w3anLr3Z4#e`vBHOOWV)3Q>HS7T+r=(P{nQ>! z6X0!efSc`d1kpYu(j^o+Elj{pI?U+?XBc#ZEi;peJ`(4d>N6b|H<*Snofdd?6m%$(3mUxlrAk&W`hN*iCO7~Rs<8-Ts5P?kA zvN7G1mOuAS02eudsb?pmN^%mB4u@k2E6a3NzTK0^Dl?cyazaJt zACLgt0d1{haPQy;a(T1gI(xF#gF@ zO&((UkjYmbWje_8g8YQtoMEaV&vKn|QWjug{N#D2*!gcy3738npTEMfUW5yB0@Rh4 zG_9r;cHqG%0qV)iitwZB4_Lal+A&fK&1@(_2i@@;9cb4y1cY zK4sEPL~ZbvYf9G_i-1coUehSgzMYgN(goS!6Wj^VS5{#(684i-ZA|;i7g#p~n=%0g z$eK2~fwC6s+Hw{{WqljnFd1k=DKeBTTd|i^8NqZHi>)W%k62NRmt81}ak42>6|TiZ z*_;V~?m*oX`4UsK9Z|Y$%QPDgE(tJIwztV}nv7u`JsX(-nX@M#2u3_2QuNUL8zNA2Qy)FBNfPG z8!!3-In0FX2i!}>OMbFYrr0P8gl@k`rbf)oK-`D9n5%%FLcoi@KR!h8-?)fNL zE3=u5O01JPHa<7VnKrahm$Pkfvz%u`Z^{B2+9nHaXoq~&hIY#pHndm1W<&4FwKnv= ze8c331)batAY3bv`gR-TQMuhjZDEh6O%B>Ixzk2>iU<=L4g8thZKFFQ-{ExU(kR{M z@;%Pt1AKljT>BDVLQr=4Y`L1yi|4cTj7 z*pNlLU~O_={1N7PgqF$I_HMC~vG%N?>9V2IB{Qc_rwHv`5 zKfSgWEFNBnG6$tAq)#kDnLBYMN->SX$6Ax@I-2CY44wWsOSRlIbi>Q54RMonUo^nH@-)rjRUbM)6BoyR@#8t1EPJRj0>(CpqW#Z>g%_{}OFKtlcupe8T3tzYYeh!)6G^_$@du-}qvZg$ zv`@T_VY~G2Q2KMs0$IK}8eYWx4>es` zgHM@`H;qGLa%Gg;hj^g$PWC}LHn}>=Cdsu>79`h0`RkD27t1;#Vn~A*1^hgU8rd~x{z4Cwi^nFRtW)z9l$jKxLz6KSwTPp(v(Y$?>B}+C7L7yg zFN>$4^r=1*Wv_7yP@bx}9Hkhy4rTip+ps{6k$W*bvi5r@qw12pUx(zr7fHT@@vg9B zG}XJj!d{@eQ5lpDyjDSD5BOD_g z(FQw0=OI%G!EUM>%B`b(QO@UHoWwm>#PVS+>c#3D|1HOKU|HUmGy>{i+B!T7PRya6 zjz#GTUl!1`e6<~o|41Ga+gQ5eD8cdn6+4~DQEfPUmNRqVm_aNl8=RIe2GpT!LNObP zp>PC-PqU2&r?M?jZcdc4#2?(cL`h@5p#A7(7(Xu^r4Ad%x3AL(y5`5#G1N6-eb)q3 zFPJ|T=l#54H2Yf)>y0r-t5Hn0UlN8B1H0g}H+Sn(%*TNwZ`2)&i_C8kgOwivb*H_8 zmczS^L)nzWpJt|En2J~v9;9W~sR?>mFZy%Iha^-bS)1kZX_;vHC@&l37+=clJcl!* z^DxFUYhE2Qgk-*oa^UPtlsBeRxE+T_42bchDruDR9l>4SfNi$y7d;`OSu|PFp zQO`F~X6V(n`BKh55%D5F~V}{^ry2#>$dmF zI*D07vJ6N%iPp>)ASbJ{9nL2u6RwAn}AS7mav5`+Ug(Eq$^KB`-c^1hRXOqm0CfRNP$*685D|ILN zt_R6OEPrR2;zcoIS&nD9p5<1SFL4OGD*FzEB$HhMzW4O$#pCrux!coaN}fM zok=^1lkK!p*p5?u&N7Sbe_+{wQ_W$Z*f@Ie$lC`*-KGq`%k~xDHxLluc z1_4~GHtf1SJAH%Y?<}L)wct86<+Q7?Z~{K4PZRZXmN~U3ytp1oV^=Y?Kdpf0$A5vA zp}19{U4>461~Y{5rsF;RDyoh3Zc$It?(S7?W5l1TOEJ^ykvz)MFOb69INZJlEm>a{ z9Ko1VUKCHM%H~(U8dtHxFSC3SbyY{W(vq?)2>2G|HGfJxoiq5&pAx^r;T!c1)lSTE zPogQ><7J+x14-Uu`AIZ|hs~q94ypSC`l-)FX^4k)0nGwm#h84SqXQ`Xb}f?QF$UNF z?W|aVQDy6M5-+Q+0rzn34#7<(9!O$no%lZX2_~c3lv&nb%NZ>aR&;r{a9MT32!=ux#vRGFqck>J$Oh=2OgDGe{a0xUisI-EjEt(m20xjMO`#qc1YM zq5L>N!(^nem9Fs1xL$Qh4*rW=Q-2i3q~H)U?928)@9~~dG^NeiwFHvoo4E+#2jlBD zf~Fpm>w3X?Q-+RzhB#)RbgMKAWr8+~)r&A(Q_?w2Q;($>e$!NpvWtpYgW(X<8z{Rw z>_NH6-KF}Aec)MMrIsCMq;?gDNX&2Tt@+Mq`tih0wGq*s&G6f=u96m4)A znqiXj28?;jbqh+{RBySyg)uFBkDwnTo+M@eF6NadsOY`yK17?TI-XGCZ`CMCeL@w5 z!k?)y-aZjaHeWY9j|mRrvP#;Es2wh^pmfx5afO8o?^VJZ4kmw#vfJd_XjwhsCnd@L zXS5vR_?X+zp?+B*&YSc~2typbQTn;~qYQQ>DMbXz7whBrH!`?mxq|A^F68u1Ws*Z&Ne*z^i#7P5%UE3hYs?2NET-?WKNm=3+6i>pbwW{&-ex^L&`2W^X26#cAN|=q>g7)>c2ADz1 zbaKV}0a}tAnoXPQ@$D%*C7QxxIHqQc@{Mbrk7qz)R?Dg+!@Wtq$}w>q(~M&_am+A| ziNzTFJ#-50=gsf}@8lObzk}g7Dw8~7CF$cvvNCJ)Si6F?`&sM4+7q5M4nF8YhtwDH ztD@5ZJZpxtoZ5uO!P-V7-*TmSlr+Bv+Dvk;AAsGhdxT)^_d*29A`8hxmkIS~9JIu6 zo@j%nhZ88VGtZRJC0#Hkbjc`mWGe^Z)eTD39aEjPP&Sz(dIiM!;gv1Ov;5w}8?TJ_ zRy3fQvsu7ECOxmpuOo8o1WaK(3g;$!_-XK=qFa&Ig$W)iIveAPG#gKp$Z1uJH$FJD zP*Iy2&Sn!VGl+efU=Pe*vnR05|W1_d~Rr8ZfXz=U=w0nXs5NY8CIA)qqU zR=A^8W`H~NSM+-FY;4Y9Ow>*|9$+j}wxSnaB&S7iqh~9#4+Jn3!rcLj1AL&hqBav- znXADLMRQ|`n%ALph48-KZ)HF=NMpHvn!w`e8#lc zvO4{}fLic{q8+K>S}pLT+xuX##V_?B>H?XHEZZi2g4BSi(6V>pX{6>%x5UX@{Q0~# zq%vL;^|G5HO*BlaXd_#h>p(7(QC}=qC}oii4g9_cr~?^HMV4I=R|4w65~f=Yh1JiC zdT>(F2Bi8R!i;nWs$20#Y)_^_%0V{=LT$z(%agPl0fA7g$bRB&r1gqCC*BVTf_D}9 zPke$@qUi9{8v()49DfeSuCSb*dK;;&qSV$m0z%+`BE9u(q!LBu(KiD0P-x!3Na#8G zc0ee!RrF5AjesyXpy;EF+ejsfzMiTDhQn8iZcnX@^qrzbt$hO4}tsy=VfB&OF({{>`z-Z{Ll!;SDBMoHYQEGk(b~EK! z(ne1Wd_ob#$a|{4)*h}Zsx#FS+QZL^w)we= z4)D98cm1r;0j&5t3l(kKp!Wk~pa&A>pJ(}G&|$<^lrp8WtB8d$in8$j?N}&Q)DCqW zVZEa6sOt#$DIRtjJ@-UlCwQu;|J-v(X^joto0zUMWGMO&({+Z;L^@{wMkiOiD`lrr z?&)O38~?8;I*q!ncMDA`Aw}+8tCx?V8TR*QOZe}FcJDIdN{*X^n&Cv z8vih`7tB$lP52XO6;mNtx;X{)hU1EABK3W)yVKP@s6RYpov}Q>3_*B=2J01_NF{=3L$`#fzoNJ((j_a} znojgs(b7>wo!c1c?x*X7uPZz@ndr2l6$wPO+mdM^Y)V*ZKMZ1+ir|$At<0~$_lg=% zxFcQxYe&OrPR1QE9OwlnlOi{N4ykQGY$CH~p*q3gGQGjD9C5Z zh7WrA2aSdcirzupScvS&mX;rV1A@ls&`058->{%@Fp-J26z>I$hk1$)MnnaThb2t6 zL`tI;K@;$9W^!}Op~2#IK@*{~qFAI!fH%Fd?&-q#pviDRk+m>BXbL=3bnu0wpmflK z5)IQ!h*Ke1(SWfjLDQgE(L|&SIIqZDb7IhRaPDQKtAUgWZ50hfFFIr>nv9f%*AER# zmoX_p*>JZk9nuV_t@k#RqtQ(c^j9r;6OFFArJ>k^PKxb;oT8Duh%;&5#zsdPQ&6+!?eO?*vylAT0rp{(Stq<#2rL z`$4Zl=l+KB8d4GDD)N|dJZLE#P*fjj89ZbuJRqJptM1{K2+MP6fX1g(MtNLc@)A`?wtgPTejIp)Wp*TMN^!|4swt%gWNMM!I) zzoJyMTno91o}q3XY*qAl(QiTP;k=^K#UgkEJXLfYE#H9J126|2v+q9661)*Q6Cy=o z**4+DLxY}<^$gw&#fqY5)C}GNB}~Th{3d)em@JKL%A0V9DI3<>)eC+T{!nzz-~A>&9f}8;R$=d%9IW5Ux*HV2WBfeP$M>Y zA2_FwWi}*Lj}3ko)++ivCO-H8Twp4K(R!~t;se+>f=mlxO{+WNLr5M;L}zDaI0#Fa za^S62eS#0dY9`}U?IWl;iqr98T>`;OMzKqv8B;dY#G;izZzjX%QJBp{Ui7AL6b{-X zJoY@Hh6#_sX`6&60Pqzy2bm0~r{TVhHlvSxhvW1_yr$%b1Lz_a&TGL__Za z*i9gx#$M~94!(>=Exv+BOyuU3;IF_r&B*>}dMZ-5qD$$Mkzy2$8kG}#2}UWJF{%J5 zThVHqTbBX9OHLVD4&dCn42zWR7FOwN&{rts6RgwMuudtRamHQ&{A4dDtcf%B3hY+8 zFM=Y2zkvfv_j6EFq$5ga#SE{)DW$828D51ilx`CGyard4t`L1*gYWP|>i93uvKC8o z9quV*2^Qu$JT`PNJqCYXhjtUmvJl?ru_E{eq$qM|+{*kdWGVVCp6Gi;CkoaEe+$DW z8R@=7-FI+W(J|D02aPA|hH^k;EAws0onp{9CQG_O`}>eCS<#1GiJYgB&gkFU&{h%k z?+=j9Wc2SHSjc2_?_F3rjnYx~ZVA2%JErmRFV9kI&WXUgaGRBRmPT{VA=S%)$ zsQVF;6j|`J>PJ|nC>M1Ctq;)APvDR?WL8N2BL)KIz?u$vy>!#GB|uITh<2vfQg^!YP1 zQM%SRE*?U(()Gh}@en!^(fQvx98iy-yHf7M0rd#_sf1gx7Qes{r8|m)<`+m+IzPxM+m zO6QKd_s5X0D52|H!H?m9qT@J9p1?pgo;r^py2@mXk|$6li*mT-K%?Y0=)#n(^C{Qw zFo@AO06m3VCS%Y%g>wd3(n8(|ehQbEvMuvM4j|n$bTBU(A4-9+Y`}jsybcFHgBT_w z`)81)h_e3!_AsgA-=A=j(Z~=)qZLvSS#Kliy8eEvc7Va$eLhhKuNVhqzQ@nK6dxQZ;p6rKJN>?-=tU80@kerff8_((@${K^OXyV!IeYwV3$KKW5sEepAex}annN`GIqkC67P}N> zW4af`X{Kx#JuEWhMbUc^`OJnhcKE2G7|%o%Y#CBdEH%h7VAgdJBwp7IQ_JXCc%!J; zq?FW9!D5Hfm5glT87%fI-FmEjh&ZHlyRr5m;)K$jY&OXnD$Xk1PtDqRhKfr}MNqRz zo(vNY6+MXE?b$#SFXk1h2q#zjkO;AEF}H=~OKi3Xu}9Ib*rXBSn4;+eu8TN17kTCx|%S1G7Ccah5o3n|2Rdl_Pt7s-1UNvg*b0aG>6W)rRdAN$^qP`-F zCq9fPq7?OO>MB}@SVbe6TA_vLrKle2T8b1RI{r09WlJ$xDbJv?m6)UG8`QNDOBL-! zU2CyfQ3>i=i@l1pS-nD{#c@T;V*RyfaY@noSWk!+KPeiBx|alAi=+JWEMrjll5l6t zvvlw6ueA{`DoX9`32j7UMPE(!*V>AXitbJJgtj6{(aO30T01dD(Z;!+&`!)yTpYmfooBAoeTeNK|$ZCl$HR8W9pBt|;=GH5TcvqKpK*OfCLUG!HK= z#R})8MmN>M4(*69q&7&8!i&}-Owqh3yl5?2mg$~gZ+8-L3imc}6`k-skVe8!8(5)} z7^~YIrkuU1Hh~0`BqOObhNKqc@x{C9P*6670Dy}Q+ zipp-{p`sC}>n8BUw)hYCfvAfU9*QJh36B&0imKw3@OTlas3Gd&#Y>7Juu9!UPet9Z zO5Md^MLjy`{#p-_rZBaGC-e}r6m7wg-%~7Cv>!))PqEP;KK><$x0sCML4r8OR0PMO zCWj=5lgqi-Y?-Kz6~;j=QG~5v9VEoy`yUcT$w~v8<32x8Y%M0rhWFcLh9rt5s|-r1 zHZ!D`=)BILlYaBGXp3 zwB$`As;%fJAELI3Dpy6)MY6&ptjskCv)CCjNYvbBxVe$HFJ!Q&ujmj{xFWmg4^Y=c zQG)MvF<3+!gkDNe7pHU=_0u6kL~o{R;^2t=FhuAE=D{~3E}?QbD~(_5hltk|(U0rN z;(#LhaXnf5#$+7flZD(~)-q;D7Gck6OGvV~`Ib?MX#AmLn5eSDpqX8WB6Nj~yW9#H zCfX?aJ(ZNh6;YE86RQ<1#ot7RiDQaVyotV7biDZw=*4BHk;Rmrq^qsyo9UJOhKUA> z0y2qO@8siOo@F?fW}s41j}8-AiUwA@k4|SB#N&Bbh1w4jH=paapyj?@s=l*b#c**! zQGce#iu?wVuF7t8{AT@2UTaUL`HEVl5FJ!REi+s!+f!cO;o>btRP5nm zuOez+OlJ@e;NfE5JL>osjb$4lE+EoELnR#{9xDpQmKh@Ck?ga}ncS&R@-264-b z5dD-+jJS^JhA46xAz*|^Rg{amks^(Vj(-KH94V$NWo*!Okt${?>JcO$RTL<4PrNQh zi6TXQi2_E6*A=~kzoCv68x?(szoCv6?3Y{Q^ zDw?2ML({}4gLF%#?uD4Gl-s>r#Y8bj(E%@fG+nG_GS;g};({Vtt|kkY{Zts^)MbjO z$z)8*bkWry3$;wTNK`~ElP+-bz!hBX+8U^F6PNx#F0j&eLDDpDRu)>OH-7=v;A8(H*P5Hcwnr^sChq-;H3q zJm-ral!|TnMrl4EvS(FLJ?x#7=uE*7Q_s1k*6Jf?N%5)s3cXNj7%$Lm!Q zr>NbmC+@Eby^q4*QCTDgDYDLf;$9?1DB3)2kJnN$UeSSRPu!P^X^N%??eSVBauh8L zdg8uJ^715WvFN7g>zCVj7K`4BT*tQ$T_py7s8hl`OW=6V z;8h~UP}05(-`p@+5pBy}6SJAJp$Fdi^_p-#Na^r;MtXecYSH@;kukd0iiL`3O;{(6 zFd2h;y|~C^?58$}?+@|uFB`tl{Iw0jdX(H43&sX9fyt=T29eKXWRI2~lV!GLI@WNb zsG_I@JB4PdWEN|n9<7UyuP;%|JhN1lTpJhVwobU;hW+VlTpL1;u@1t!)@Ze(tRrZwQZuxC*>8~CZ-YTSc~Gt{X(~i z99CvqcH&Qk+eAK-QTy#;lcD3r-!6hqvKubw4$)K*6?BJ)VKNH3Lu4tUg6-K+E%FnQiHV&Amrh6^+EM*du%t zty?rG^c_)C(LVfT^c@kvl!xy>z;f>ujSU2<#a$WlbL*eCWd8MW9ijx!mR zcvoCdI%@8B#nms%Dq)3pMb!&sbj9gC(Vq#ge~xIr-SdFJ7rIa_U}n=2r}u^5WhTp( zaDVLsQCHFaa8LL^G-b-Oyqe=GJ`^u0-D*7Kd?AU!N5GZ|e`A{H7tZo?Asnj&h$60w!Z=%x}8 zc7=QzMLQ~nE8^>)AB$CtMw1>BJDH3oJuVI^-8tc}9T(2GxM;ZSyb^j`v}H0bGM*6m zh7K>bzY=;vz;|p3i#v@D{Y2DzP7^{;irI=jojzR;JtcNC7D7(98KIwwn@V}F?VQll z!t%Z0=9~EoLeGkNie7Lp3Oz646kT&J4*fz*QB>V^ZRiEDT9Iq++R(4WT}78-Hicdm zk+%(>_b0p+s(&Lg6bkpfq1VNFMMs?954|Z)Dspx`9C}MUEVD$X-;35i7;Yj`j)(pr zb}O3L;Eo>(F~*FcV$DzaDyD zq$@fY@jX(mvfMW8UTCS^E`XzM*rQ&@k)|k^jKZd3J~n`%{4avw`W}v0*}9Ry4hPbeKsFd}!#t zZQDJ}Eb$dc_>WqqPnbn|D>@i40LhOj&r&>fSeS!s$CPc^GIcCcDw9!rN4Z`R)!s>7 ze1z*im7C7?o#l_LG-~f6pBQf7ZHH-LF0%43WSM8lEpQc;q_?8{0xQ1B$4`-|ovWxU z>nW<#&Wf+~30IVqIU~#}n3s>B&@%&M7YbXtjvbh zY52}Z36CjZHpGox5aubnD7v@s^)PRl#$+_9kKC$=nzX9CrYxyNtI0=9MvMAN=O>2G zy>|YZue3fx((y9n6^_c$NGC#!D5)(ld6zP7s(|2I)75cr}_*|75&&hw` z{xClqDhYe>IrY!~G%VmbU5>gK79y8%7Db??-3p78xeYi&__b|mSR)w|K~w}a(w>Ax z$=xjs(i^3T@W%3H`!Z9P@Mdyg3{f7?JxtAInj*S~sfEl|ME5YYluH%SEljQCdPQ^# zQ)~IIBD#esT7Jw#)7LZnCHb|YgL*_Y#P1DL%eGAa@HTR2EN5@Y$s82gMvhXnEc3UZ zHgb|d;HZBd)K=ywqC3CZ$xVue;$2eh=N zb(Ah0joQcyKS*0s(cSrPnni{8lUEhxw~7huFI(e}FQnTM+cI2Fk{-PXjk3Kg{g{d%u~D1wmt|+B zJhH~w&f$Y)s-mgkJ;H~`0|xQ*O_n80MPM4-H#}Lc?rmh4)FU~3n7rGk zJik|T`IxZ?hAtWz{)!Bv_hn((W-gi#o+3Ldnz(3c_y{@7Aj=oy^ze}~gQ?JRYur4f zTxB_Q(X#MVc|g(3MXSR{%L|Ig%NY5 zzRTU#)Z$@l+SS9>)C#tiv6d4yS!{JaYeNSre`Q0Ltk-QQ)a?fw`d)W?V1tX@e?zj} z`7M_XRm-%ruNPcVw?f7!-3BwhC13Va6zfDZn#pMV6%~B0c;2F)fqqmgM`uS$Xq){C zIaN8`$64h67pKdVrH*$!tdM0BFA-nBy+W2KowF!vutJ_J^J($dwUrezTq(~h<+e(h zAuHuICZiUAwJci&K7*s^rEFHL(eSnO^2dLfPG2dXs0_QgQ$pL?uawnB8sqsxdl|7( zMk?y>2uC8cmn|-lt zi(ihREY4!~#j?MmF_`@-xmD2vY^PPSMA565#VUDhtdZ`%tBhDx!RKr8s?s$z&u;LV z)NM0-T|QLG?x=jdLc-P3Z=B)u7qg65EgLf#9kZr_<(lWi>kV;KTO-@5bc5`CA}U(0 zm7R5^d}`+^*2=i?l!f7RZ3U-mpF5@AUMu_mYfIY-u9d?%9WHuizX-~K&;N|$-#VGE zls-F`&?i1qS`P4*iqSZm|79EV1{BTJMrz$GTOr$c%Vb{-CI`!_0{Hp{vE@W?SsE4 zUsDNdn2RGS>OPcPmCnIwT|_y(Y+V;|@VV}7w{;PRD){_Jo>1vZDjl`^s7$BxhWW6( zpp@(FcSIbPx0#GyD=9N&%aZ3!>R>vG@9%u{FD&ol&?}Mnvm&;|Uw!Iyx?S#+CRd4c z`CC)N(uZ}ppM$*-C9;-{<&g>nJ@UMu)c567-!U`fhzu=DN7q09d%|Wa!{rVKBFfzy zcF7DmDqEJhK`%!uWPh|m_T`k1*&mf1pQpp;|NdRV+eZP|{CisxmFaDf)>VIoX)a4V}J>_(U#IG}`)Q#7X(FqIYmpda8n#Q}Tk+Eys7m zoRZ;F$V(C4LEOrGO6n~tV4Na4!9FE@)45Kt3hx3xCHGA&ui;;_C}CX=9E2MYr{q~h zuUl?JeENLvGr*;&!DsTSjhEB%H{Iqon$z;GO1MD$5P?b?-C6mk(uJCf8l0`5J0}}W zGg`*o{;1u#3cB;MtI|ESzaMeFg6<2MIE~N$a^R``ZxLTqP+pKPKTr5u#DxmFujDWr z-B%TKm*r@sE3(HgzsQA5#WthH@L=cc566`v>g$2P|6-#n84zmod@K4WA2{|}|kljq+j&Z234G>IR5|J45q}3TN#qFG*$&;J&5^_scTf@-^4$+q4ED5{$;pg zm;JSV6}A6w?S$k1PaOFY-_u5>7YeLaiEn-TYq-qm|1Pt?=`tPm;d46Wihs)B@8how z|NFF58Oh@SUonl#_TTw8rmOxN52$Xqj7WTm9GMzJjMNeyG@%&7v^*@qNL4A8wDl6o zEemH;I16XI29*ZU(d74mWOIKc$+A|o3F|hqe>WH9W0Y8w`Q##>SN`d z4EfIm{cnY^U3#N4sUzy>ye}(rS6)V2(=zRUx-PdjZ2m4)xy|2cD~$hg(;2w?6EHNb zTn?}CpV=ER<*EKnA&mWmA%{1^{cqWZ;zQh(3NV_*euxpK#n?9fC~q;MGi~Gleb|bx z;J?bp+kKHnDyvm5i~65B{cA!0xwDMcGNjRFD0O@>Bt?}=2_JCdQyWO=kK+ShM~H1> zQt^hRp?%Pw(w2ucxD#G6Mz9B|;{UU7IR4A~FO*k;|1`3Vu^mKIED1)Z*oMpO%RN__ zj$bE&pBqzUhTy(Izzojof{sxVL?(WI03PAmWP<7KCB7hbHXB{|S6cZz?ExMi_oK*X z9}H_S3lB&p=z|+nJN!np6|WB8tV!7$BcKjF|A#NbUSdR*D~=4O!7{C|TbPQSbkewrv0Z-xJ$5>?B;2B$VPD!H;nar`|QrWXVRt_t?A@<861B#sKfi zhdM**-!`BcJmqOqy&;9^G}}0}7C@)d_@$D{<!nvVE;zief0jnG8ZlJc#J)yR;cpu*IXsl6 zTRLN`7)7)lHyEbzZy4FSFuK5yMg!88QmO-zZIc3?o=Vurhvt71zR}){H|E*nhX@_; zzcYyCOS8YiM;@OnJ%xYtaoSK+JHW5_n;3rM2CohKpmc=#DCvWfB%82|W*N&eo@F1F zgHU?HIFwZ(onx|D7NYcrO!t}n{Y z?NY>M_^NrjD21N}W(rsFdUAod%~|>w#kHs3Q+&kL0c-IQ&0j}s#&EN)J5hd+yHC`& zA2Q^iXu>w(_HXF@j*4gnkA|NTXD~srIBudh7{zk@ag#OX5+*h$UB?HL4o$oz;_c~$ zoX1Uve9ds&^kJkK`q=l=pNT>CJ0c~1(CmP(gPenY=y{nhyIVQNOBRY1t!l_|=(CigUo6(xPh3zW*VunJcZZC(r}u(xw%;|^6Th+6a>)^l`Lw|a zxm8&PwzwpB;}eMZHLe5j@=R}hrkkGjX(C$t`{ECXxAD>9{bC8;c)4E;Ygb33ECaNi z_OtP=wxXoF9~oM)p$+|(C^w_lF7U#9yOXvgh8newW3#{L|BLf1h|ZN5>vXdfE2OLGt% z+Hb^12`KRy{H^S$cFlfj^RwC@`*o2QG=YtO0kav68BqK;+GQ@vO_q0AK4e)R2Q_|m zSf~Cl)t46%LQytrj4!6dUNPfGLu<^#=bPE6)IKb|k?D#372oD2VWG#1p4fNl(Z;mX zOwBGVd%AYSv`gp3n;a|@Q(u13wYRC%Jioy+@su-*WI7Zq%ff+4aQ69smi3VA|&#YyaVtFwq#BQ9$S8r%nTYRIBFyW_0 zDYHU(qU{j7Qd4+Ns@)*V;@k;#g)%%R!|o<_P>$VY*k16uoh#SFRqpYy;{CF3d6WFW zhvZ0nc*#|Ei6c3NWfseqQC?;bH`zm}`6ND1S!!OIeiS`->Y;yPcbCMU{#NSfL?n|pG6e~yn8{CJ(EWPB@gv?XIGmsCNm?qj)HSgf1V1P!qaR%GDMt-H)8;cok9P-wcJFJQm? zvFQ=>e(BJiW_fP(DRUqDR_)K4eL0mcJHm(5u!C|roG*Iz$gx|(F-tgxre$UOC0KzS zredzZe(8_T44=XA6kx9xb05>J4Yl_%dChYb(RN?QzGNS3{%l$o`$9{n9zE>WbK%fY z&JMYiGhS}-uQAd75O>ER8Jsv3!+KRuIL`&}>bH)d_@k_YuK4yBO z$$m4n*-owD0!PbEZQp3C~BnHkJY_%5FW^TWI~?V(~G5)P9F$zxE6* z_iOZY+N8eK366u{MVXaeNR= z(J?^^g1b{BE5>2CzEg7!r?XL84rgPyi&JL~&*Au<94^H0WT*ZdUXI~KPRSg0#(7^X zJXrd&tj#irWhBeyD6#+BGIVCylVyLF$t>%mQ!|`|rRlHR9WwnoVue$osR}O1u9{o^ z2Trcq*_aZi{g%>($DPLE;rN`B1KQLxIhdA4UvWwo)Ix=(S9{da&REtCs-s=xr$I~2 z!T4^FQuDVlKj==bn7|CzEHj(kcd9RE&3oo_QP3K<+5Y8d2j|W9hX#5=tf?^06MV4G zYB~Fen)&seQ!uk)v0v7h9qN4BlAN>B-a+hW73EyYLvOSFy_jg{Cmg-|}S-Vs2#g$-< zeNdB2c$}Ou>u2Xw9p~$xnD}D68BJ-;PZi-=0%!k~{OdRiM$f6`auPeDo#rDPvRb=% za0aF3nGHs{_;T1+(wY%(svKPhZ?R8_%5^CvJ=R=olhZS9)xXeNApDu;iT39iM zH)C$QTtpiyEXR(suas>$(Xw)-HTF;S`E4sT=d!d#i3db>blXIaS==_!0~Kw#sh2wp zYB;n~p`;i(kZh?m&eEa%zDlV)n>*vu>#dD*;LRMTI?jG}YA^OYRjDU??kVY8A#1q% z);M%tcpKvvF4XVgAG#Sw@PP8MyV~xLNO)Z)3PdOaP~AziYoiq(ev!7vP1jVu_(uUcT`T} za4y^AvrOY`isd&We68!TJ)F(!c^{R^!#0hjkDW(kGix|jHQMT9SGjkLRrj&8Pv~k* zMHl$BI+oNoL#)wgG~60%H??3aO47#K&FVh^!>cDxvR<@b>N^!>qo^!vyxsYB{#qYy zzj&0dV@#bzZ=j?%EXCW^$AeA0U9s;rj5(383njflDb~>HcD^`wW9{hmOM^K3QuDdV z$E?SB;GA*zBlem#Uhc;okpnM87qO2^oE)^#;kT_@+5VbClb4-bZ#&4iN+^f5aCg1t z5S~*N!{4^A!QtAjTX_soOnr0?U9=l(+k{oa}i@5FFLPf%gt^Nxf*vlzK`R|1s}LQ<+1gY z$IVlW&#^OU5$*78FeYr+H0`ORHOm>p#lltVn)TStN1HfOxO;HS8vAd0db*o5Q#)_8 zr18AQ{`CCD?zATewfDt%XESA!HSdE|9LHrw1|9W~c| z?yeaBp^ks@MxI1@u-Q3O^iR9!eh8cN8~5WVzjKe5OMOe-pRm&>T7JP33?CYN#p#LG zrXM!1HkcY&`@ZEL?vb2LtQbE&)Fa)o`-Fxb%{iv6MqSxiqZMK|cVbTt_h+r1%<5E* z>Z#Fw*GDVDdhh0jN@Jr8mKU)=^-LG-oZNr*nB#ah=64V3dk4>4_CULb>Yn*%X@-k- zm)kb;ylD5C^L3HWEkVN;UuIyTR22T*L*VAUji;-w1+~FY`;_I%>L+3{_B@!4iavfu1@K=+_OX9`K`te)=U3G2DhwhCH4w+b3= zTiNwij^F7xAS=piGk*al+j4I5E^DdzFrJ3))@o&q@jAejS!4gjf^4r6jXacSv~Hf{ z@NLb<-(S0}z2LbAwY9SJ!(QjH|GxCP%p>43kARz;*)^7Dv`X`zxS!!<*Rv~_) zN?2ZC`8~@huP5%;v|3(!yrQvRab}z8r5n*^s&TaWcdTBtnX-&F)3M_W?>BE!WpwSD z<~c6J`y$J&xF^Z6JLLF&!`(Cjvc`MIJAU6b-TSy>5zgRz?S-gzTE0dTHD9X}mFbx@>= zyhD|zT&(?aC_dww&mEV~9cMDp^m8`R^xH49nvAb<&9QWPT$O7MUapg@eRRhw?H5*w z#kFh&M%C=M2IUpsHC1jqg!G{GyhV?OuKBzz^WY=8hlv&zTH()Cp_9>eng?dE!{o~u zTywaHQ|`9IvJqAvUq0ih&GEHOG_ieIQrb$c*BrOCM@vWj?))h}rRJ}u&G2dBFmm`T zpRJr(5NDRceHmn;h7ID3BRM|EMC)24$Iy&#r$w5mYnr1L_tRYC&YW>gIkpDwl=yUI zocW5cW7To&^R^mW&-ALo{kEo6OV-Y4-qk4l0*7mHxITx!YaLegw)RWwMkr}O-PUMu zozYfTYk@JFspcVIcr0SNc_@zdbn~J`b-mNg=RJS+aB#YnG^=X1d14=bE!{k;k0)f~ zTqw}1x;n+-yUbjj{-4s$JwA%^-v7_c?Cd3bNp^B!Lw1v05+G6TgiE+?1jHy*?t*|M z0@WxW6jBWr_Zl@oxZ4p6HYrk#N-eE4a)i1mP>qGwD7K_xPa@cw9_$e*6<*@$`F=mM zNznezU%$LE@A=N>`97C<=DE#mcJgK!^MMJ>pVDI4ZC^)rwRtD9@uAmpLFb^_JCkQ= zoS$)Kd`@ks*f!Kqn=&Hv&faaxt(i0!qn_H7g;}f=^2o!EaZOUQr4X_rh0!`aEIWdtLoX`AZ2Qxf@xfMKH$@chM<{)rs2+{5W zbBA+)1H3+r?MGoR0k?p6fJ4C_frFQ@=Z;y-Eq5?$7jB|nz{7BBvZrvbX;l_jnVJ(e z6n$LiIJtg2?j*4`#GU8TFs9KVjqYc3$f;AKq<=YqBTpU8KGTuJOQGLVuh}<;{xPre zIL)7}%DK61Y=_#3chS7in(U%R=d9Vzai6-I87#RoL_4FW8hzC0om|PS$_(^WuIg4L zrH0R`b}RGmab^|l{~5{&{bB20iDT(OZL2boI%KPoij2!1=R*H%ER)BNR^|Q>+h0-V zY(<9;Rhzf$rhi4O9C?s=BYq{LRS9inw!?my>PP4+VuxwU_tzx@# zy^A<>7AtKVbI9g*0yQiAzQ|^U-=Nv7@cS^E6@Cq8v%)WAY*zR!l+7W9UqQ%A!I3#` zr4yCzhApaTaondAN(q38Af=U z!jBggSPHkiXU@Rmsv=p?eSeYcU((xq)SP(gSB?P9GPhU)w$Rku3rOO|(hRl|r;0Y~ zkLe+4t9ja#xT(!Lo9s4g6|u}dnYh6I?$lCmtNGN_GH<2*Fe#O$3Sz5y{D9fsYWv3{ zW_z>Ee9IQGbIK9By5#{Yj1P@{Ei>E9Z^7b^3erRiWq(+zwL538 z^|o3U1lN1lVZ7UjvwTfiI&r`EHHGK<*ObY(GdY7eLQf;~G(t}!^fW?uq7awx{BtXL z(j$NSvlB=98tiw+Lv%-Ozqnz%@38&P-a%w%jZYItDZ(V*UVGuTJBf!T%=ER`Kcf#4 zF4ID^&{SzzJHRb<%3{PlzU%Tk6BhgSAp3pb^WZDsYv5MQja!Y`5|i~YTuMoKXTk%a zT!|JJt8&}urlKnMBqH#tm!5Z+OXs1p2DyiTguebQc2RqoEb1{7;AH5&gjd6#gOYw-N1)EY1S zN!~xOh`52ITj^>4`+4h3{9K5O^@QA<@;gUZ{ng^ zZmButZC*v1c-_}v>6rNg*`)Fl5R=OPIrXr@k02asi0|ASDnIF_cb^fj+kZ`8cVHlD zopgtYzr7W=VE4&XYeelrsjkVADOGR~PJ2fS1&0Rn7U*Z>1`is^3YCiXm zLxIL2%VL$+ZVl%6wthqtJ`M86`9aII>Az81O#JR|7k!c^h!KfD8{IEe=gahwRdv2g zw92epms$Cm=n~5nAvCd98J@3+21OdK+pbCZp~(TOSY|3CK4|(5afN9%@io(Y;_Ifx z#ABxWi3!sK#FM5K#J5drh^I~8C%$XiKs;*-6VD-q^QIcI+fAE^7fsuVpPKd%FPZid zKQ}!`{D1sLiHkXfZ9nMqW+y&tX?6GR<9Aqsb3R=s@%saCaV_W9jb#kO?CGPS;Y)Biw@?f zImG#@pSVcvODtD!Audw~6CYHIi7V6+;%apQah*De_?UV}AD5_Bg|Lc^>U2`V>MUYh zy@&Xex`?<{tsw4Dzf0VsK1_T@T}|AlR`s!lM7_G64xU#-#23{#@fEd}_%n4I@ilcf z@pbhX;xTnUF`@pLcv5|V__q2A@w9rF_^$d(;#u_#;yE=zJg=T2wyW<@5j#-Ci|X%5 z`BXhiyri}fL!YaErrkf(3&d;cr{sDat~b=rND<~Qh$i!wM63A*(P5VI>7tm;#0;~Y z=rN}ez2;1!-`ty6V9ulV*4NCnQfMw9Wq`SeIK(`N^qtV_&BIA~K4j*G_M({^+AHS! z11@nG!Ec*KlWPm?)8_Hy`mXsl;#u=l;yLp);(7D;$^R4baS5A+86c*JDV7cSDPk_T z7+emn1gnTvQEeGbj95ZkiW)jd5p@WD8r%;a1P>9d;)sPk6PB68la_hJw=G=s(-!U* z?^?KDoV6^ZLVrMopdwnzsh_nW)_G*sZdp#DL#a|-VkOZg&RB0d}s-A$IPx^X(6jz7e5e zgvJs26hgP!9|%zU-(i1*oc7quD8e)Lb!6|euLuOhZgKzU{vsyk2L=hdC>l9Pq>Ew1 z95IuaFYYDYDjp#Y7q!H(VmomX^t;3XvS&kI2rd<8NO@TN3H%Do8#O3I(ru$SUeMjsHr5DP{p z5Za7TdYL{amoI%N9v&T(*e;cj4eT&@fR~6q3M>1RrZ6kO2-pBN6GQU@9XJqnc9K9p7yyG{ zDOe6xfMGBK)`JaT0&E7`!46PzaQY?(7cl_4lo<+C;Gh9)22X$;-~~`}a%2SzfcfAg zumW5P#=rw$Gk5}QasC&j(BkA;Y;j%@UzJ>d9_mCuCjvStKpmsFI5V4zBiLLV!RBH; zA9@k=BIre=JH||cUIx7kdKu}NW0pd%gkA}~lJwj$G3d3>YeNXArGS284j`b>^%Z5= z2)&W?p<_-!Z$X3>=q;o#3SNNT3I9&$ousb_DycYuR8Gg1iW5k^BK|csA9_(LpI8y} zqEvb**~GF*2q;5983M{ELhZ<<&?})=La&4#gI){07J4o81JE0xH$rcOegb+6^cLtX z&@ZH-{dc0Ioe1cpfN5n)8qOdMmmm#ikjB?6A9@k=BIre=_Zu?_dKvUG=wcar{Cnc~I? zxN!n*oPhg^c&02LdXbwiO%dxM+FcO`$|fP83=zr@p^Wr3cP@oqi3pX@D@k8}XAF8R z{A;1tlK$U!HNvwIN+T)Cv=i`bfoBW!7ScbQb^&^*69JtF=%j#)(-aM5*HCs1W!J8V z&!*)=FM?hKy$Jdw=w;B$pqG*U;k0t-OTkKnRwA?#vBJ<}A?#`qT#MjZ3a%Y_0D2?z zM(B;C_ZxEpdJFUx=q>QS09{GvqUVE?z@=aeJOEw*^E23UQU-k&Zhl}X4)QbEE(Irn z5%2(b0=xi9S?sBR0Wcpd1t)fyZ|b_ID-yQ@~|BM zOTh{-0ycmNuo-LzJ3x`maV5|X2EZU#PNeoo`auo-LzJ3!H!6ZL~ZuoNr@ z!(cs_0NX*4gIHie4%b1D?NFc`QW&fU6JR^o0SYh91N4IdFbI}{7!rAFKxxU^^&=vrhml2g6_k*bH`nQZYQiP$_ohU>J-SbAg&+M@Fz~ zd;}{EuoGZ2*a1o-ksLUABzsDupnwIVSSf{F0Y<4(I^uZ)ZCJ2EW60IT!}(!35Y2 zio4mz4+dw#9}Lf8yB-v?;R6Q2aw3iYVI0(h39ua$a}WUx&PAeN0&EAxJotd+U>K|i z6JR?i?tv#51nZfhKmrHtpqLLQFbLLz39ua$3*Z9=!E!JR)`JPK9TfM%9}I#CupJDE zg$M={U^^IG#Cig32gPD|fv0dN5&dC6WV! ztKhko83e_8C}0pQ2gL@A_8TxE!S*L@9{I+Soep_Q=oL%C z@|8uh7F(OF$E|N!KeMLWN^DDPHMW;+t+p?1zLZHRl_}d(UP<|N%7-amrl|HD`%wEt z`$BuAJ#KHXziPi|R~)I1`HmHiu;Ym1q~lMHzc|d!H0KCsg>$|0l(XI0%k`-1tZP8( z^wjFqrqusQHKz?rTbTA_+TOI+Luv1(eV#VW{a3e3%h4W6S2OO*_)Es$GQP}^Gd-Do zGbd(F&zzaLF!Pbjw=&x@|CZ^?8khB7Sz~(5?X|bpFM3V)%<-)9Jm%TtiF#^1FL(}l ze(gEu@n!eTzB_wf_R{Q?*;}*sXCKW@>%FJ<4}1T;_rRReoTqb&yu-ZrdN+Fydz-w0 zcf9X<|KL6E?eI3|ekbood9UQ1%lmWQKl1|q690Dp)BZ#HRj0f(^m%S4)tSKuchdtf zF<@s3@nfHhxO=rm>=(!)J`Sbi5mt6V`6-k&Q0|5D^{(C&`p@0D#O&NY#Cz8CBc2J| zLX_4FBHkXQFHa?N{5*71_BR*hW;^09rYF!hEC0VXeRojscLz;EpO-414E<}iiM~;_ zVyumrYh`+a>E=Y_CWs7Oco6zEM>~l<2=43t_JsPTWvcLOi>k?O2eR zy^8spjZ9_3ZNzti-yzOe#T+qfKJjvB<09Hc7e7FpFova7;FlxWUR$<;xOyt{%A?FJ zV_DxmirF%HHSx_E>xk#(aOk~{ttURUs)i^P?;su>^)&Iu+#eAiC^<;{=VOh;Th_lu z{FOh%((fx?C&s6-Jr6A3{426gz&?5x>$kvmfv0!8MaswXIEir+nZ3TlKCjMW{&+3N zT@TwFV`c2x_lPrn9}%Tuu1l%-0&)AmPxH3Q&fl^t&Ib95fNw#6qc>;2F_urt+Yc8KC(mGRsAG=B zDShwB0bQZ=ItK)NF_wcj#)c5Tf>Z4hc6vX`>_46P8SMAQk0kr)2-l6Xb}ZRj#&RWB z!~XOsR=ym`N>(Ow)fnak@B;WYXnC@fJVP&*aYAds)$`fD@+kA=&CJmcO(myCz=9{I zll}5sPHqe`+dhizuaV_@!`MCp`;T|BT>>5iSAk}JJ-|Z8k3{oHBGuQ>*Gl1=adCYrpUHgEm7IC6Rr!u0u?HT+*jEgBgZiVL-3q+oPNqn_U1wr2#je_?y<+w}(7$A@wTUtlmXeBPYVOnS@cw}?{lZ;6TTwh}8J{UemW z5P!P<67l_QTsPaNFxNf)Pf}h-Kl&xoA1)Q&AnEYqGJSb@-{YLw-`3d4{@a>f-{M;j z=9BWge??PimfYqr{rAipGxgkj`JvE%S~@LXSbAB%Z;e`Ot#>h)PN}85dm?pc&xF@+Q-D})Y_ZIgax2pYA z`>pnYc3xA{XQ%H;Z%EI}7@ILIV|K>AjDs1kX1t#9Rz_<^YG!ffcQfD2{3rcO;;iLa z)maC!Ue5Y`)`hIxUTK~@&qPnT=K;?<9!qvc_7AcTWuMRfBKv=`*Y#eU)0y){PQ<&z zd)zzFx6Bvw{nGcf@7CP=a-+F=Zhh`gbHB=6mDim2PTq|?lRw)(*uT(U>Hn+$hW~cS zZi#P_#O;#P^7Lrlr&{{#;C;xQG}0}L=&x-iNtu@Oqh#^QiyqNmHih{+#6pb9TJt>Z z=x1@9zfaurqXu;P((gAlSK#M&|GPGx-fi$rKQ&;QLv84rqARd)!oNGtn8lhxA7^*{ z^a|{zue($Gp|AIH5sjZ=_woLl12W4SSxw129_BR^#if^T8NN$JQD6c}Em77sLlnaT zYw3H~-^_SyU?$G^n`big->P+NU@I;O$LB)+ai#vJLElq$i0{$1mOg%5M_ZLh z72l`rQPE30COrD9{bc&15D}rTK}SVz`rI!^#D!PX(DnpvPtx|3@QGU5Hj7-bg|@A< z)rowuO%#glwC$j6CvCfE+fCaZF;YA&M$sDxON1^aif2SAeJ%Pn@hp8x_(L(7zGgf{ z>=(C-=fqU;Biiai;tu-8^c~{Iv>gz4is!{lages3(DnjtFVfa1=82bRds*BgUZL%f zxL5pCEEKPb#o}k;K5qVdX|vj#(jeOA(6*kodfI+N+a=nx6sI(rw)<#{r`YAQj(}2U&Zlj# zoaY>@&?evRER*Muz0g^$+@;#(yVO>3ms&^mBD(9b%Q>OcHsz(%R`Eeab*6oqU4C6VAuegJnr=;RrTr1wH<>Px)=0-i8D;X6j5^c387C;t6=|Q= zD)woE<>ri5(M(|r8w$_vGYT>vFD07jlMMGrjaLYAj`Pm9I>G zjeZZMlQ7SM#n~^PH{XtYfUL&fF@FQToR`b8QQqO{RrTp&u@i z_cblOMSfCkx-nRe-_cb2nEXYrrrkT_T?I{}j>v7cCik1Ny00m?P*T}ESM_ne_gB$A628pYJFaf{!B^r zdfl>{rs@BIYRSNp@$z9~K zx#OA1a)i&Bsr{^xWSd{sqD5Nth#p_6Y;p8;x!mz7e5Ua-o&L-{+iSJRTBJgYEH?>B z#`(JAGmR6StIu1ejFRf~ZOar7y}9CrWy-*5C$-22^fx+Mq|NLXK02^bVLK>|4`iIh z2b_4Ml~S3Fqj6g0Az+d^cW&7x?Lw_RGKq_;&$cAtiC?^9BwF3Io; zp_e7KgI)U`w}U;2H6}y5_dQ;XJzj^BUfug1uR}dvhm&51LtRFX+ukQ{9nTEvoX6CTjS@L5CN1(0{XZ&|Jo_~(owkdG8~Vjc zrKk{R6W>eYiPuQOO9eBh$h_lGDr)1Tq9%RBLrTG%A}Wf{<)i;+L3O*>MI%uBphSOC zsKpzpjnS+EA)QWvN|P>R*-DP_L-gykm@?gwfmG94bd3u|Kg{P9U85g*NXeVfLi3!{ zrNuV!_0ys&9dvBvtsqMqRLdObs^4~3PYL3KXSRK zv=Hi?t~KqA?e9Z;2i<62i_M z=RdjCqK$fFrIK$tszs0MFRoPjO7;5hRw_RZ#lLpfNbVYyFL_Kt(zG{LJ2f^QE8I0s zca2*n)9S9t^r=2I%}*D<$fsIK$kw7qys62?uZ3TuU$4yhyK86xM8jqS9hgEc`baWMJGAI0RvNdz<`n~t?KG^V3#+k|u<=sDmLe31-03%k3T3CF zJN)$V4u0GuOS>9Yr;ElAE!wGPuTh3e z)AZ?Ul-21}j?WaoFw?TqLTAanTYq?Fl70X7WrQFFfG){>d zvL%`3FiRG9ZYo?XphYgbQaB%*Etx%)fPZZ%2u&U(OCJmHnNny$&)LTUy)6!NcY?G; zOh)}o_pei?^TO5T;wGlW`s&r|l)KXh8adD;M{{3nAeT!2aGf$y8mQ+~DYr;#^xLbH z8TLI^BUg8HkKRzFE*T&1is4RqI3>odNu><(R}TBO2Q zt#n?o@kW-+SSg14noT&BnoZPD+%+^3auXIQ5mQpbguue(je>DK%)e8#*Y5jU6zp<7wc(5 z#DL?j*>9yG3yr30w6oE9>8+0{lk-Z9L6+y6HtNFHXq0isW*WVK488at2ZoB%wuo)W>KQLp=gFa1k1E9-#2$eA7nz3aV7T z7mN5X^qi!*lFC76$Jdgk^K=>~(v8BgkuG7eaTU&QcRO>FMF1E*jo^3nm#UQ|ea;xy z{sW^zX)Q|G)_jC3_6Zt7XVb0gmCvQX(#J3@<%)UT7M)m+DYZZyM~jOk9jd+y=vViMJ)?4>SAQF_`SD}8Ho)1*>y)}hq5470P5@_*ZEOBBqyV9kLwv%EkW@zk) zR?!jtVyYw$dh(DiQP+%3Z~Bi-%6t><&Khhq#v4yVx~;};>rl6KxZ66?Z5{2lj(1zl z-PWmYtEJmIL+hQjcNyf917UM!j=*u-)j7u7s zlMJ(=WX4?4V|KC&!5uxTPl+pEg%TWwwfQxAXaG}|$tiq|Jx?>vGR`yF31L_l$%@YG zj(d)yL`CwL7w3G;#fv%!kutWtUG9-GxYv;Ai`H?_kTfIf?mppSb+q15queHS>IF|I zcTAbV(j3No#-e0tRistU68+0cExIhJ+falDSz5tZ%~+=&enQDuzL6^+%tD;8)tStl z>zvbbM|UuuVeI2;Ve}#PeV*}J@=Rz5ML}PO4@OQ3j$CD*^G&xrsk|pit@_tbDZN7< z8B+(^e#1@n!JF*Ho9sh3*@thkkKAM*y~#d)lihrieaf)2k#WmS0cS8&MLP6XYZcFO zWBp)ApBcN$4jK)qaT`s@h-tJ*Bb;wxX-fORL`$O4JcdOj1VkkoKj_vz>NEC{p~>UE z`hd;K)ci7f{zD63y5Z%R%Zzn=5fZ2{5~$FBuvsbSMRyu@+@a77iWaT443Rj$HobMT zlHs60JQ1s-RknV4vyv$l>y|A_pTW&Y=@ii&ZQ=B22gx|$=oy}t!>?eGt3`|S`CF7> z&VBH>j7V2?eT%YUloMr%IW6QKano%!4Tip+wLs)L?w+ovxMP_dIl_^-gO1s%{Mr#t z5hf2$^3=?9Yn?J{NP}@|4XJ+PsUi9|Ex}W8OwEp_K&p;diB-_Ocyx!pxlZv<*kf}D zv(1xcl_{lXY$-IM@+yY9FcnLpo6M^y-e*45PWKy;PM=B+U16R2r*+E6&;sNfzD7Hq zqUnB(W>!qHlmsb!HF!?tdWl@M(Rx(2*#)gFlUJTzdE3(rlFprQ?!4Kr^Jc$JK9>l4 zNn9+wew%V$YS62;EA#KCa`2OYWTTjy+;b^u*zh7WQfBPhu#47FOYFH-qXSp>IAO#N z?{NBQ?kb`O(K~1u&`0f1`qQwnWQQ`VA7(#Fhn`u_q@{+-rQ*U}Br9GCj#2X6>%?PSwiQ*K}i-^82i&(~ZhgcFU+i z#lwb_jMN*Po<4f}c+bcue{n>i%|x3@o0&EXZC2WBw58Byr_Di|lQtJ^skEih=B7=f zEuFRu+A?X&YWl^IUK8hiGoQ2~kJ{vSc=Vy)(3>d#)WA0+on3Wuozisw63?Hq|F6JT zt39i%|5xCSsONR-fLUu^pUa<;@u!>oG3mJ%JmOrfN6eZ%d3Nt{d4*NqnRVy0x!1NX z>Kl1nU$@1xT&t!}n!A2>v+ds*$dYSbY*My*c1usXws~mFrmc6AYg^89yX|Y9AC<+Q z1=GH%Dd5#5=O{5q6pLYE2z|&ns%c@q_l0k1dTL+q*l)Sr)7N|0A-_1f>GIs{Hzhso Ix;E;60nU+``Tzg` diff --git a/distribution/FFXIVAPP.Hooker.dll b/distribution/FFXIVAPP.Hooker.dll index 725bd5984d6a539f1763f8bd7b0b0da4a6ce7e1b..8e2aba3acdb3c1ad663a12c5580a99b00bbb5e23 100644 GIT binary patch literal 58368 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 F{{r^s*#ZCn literal 55296 zcmeEvd0^Dlwg34p^UY+E30Wrr0!e^`AqmLl0-_KIfhbELfVhT`3}ht9gqZ}0Aqtf$ zwb)|o230FAEw-+8DOOuisn)8kR_pQ}M%vn{)z{W%ZS`s8_c`a@@62R@F7N%8KYpWg zzW1Da?!D)pd+xdSp6{Ko_?+Ej5s{7W(W68M@Z`@NfyW2ikeyNVgA95g_4$$m#-is- zRU`jUhjXU~+WXHiA^m)EWUJ%Sy#s2d~6gBr%6*Zhs2VXXqDyST>V9 zRJfjK^`%v_dYYt{0O??n86W5zVaWKJ;3aVrB>xgGw4A^WVYm@8%|^- zSc2bTJinLO%85o!_R=G01U<+ygV4CoQf#+_t|rc$<+-RL2uejStlNGe1HB85Ms1NI2E`0Y0HR>&2#!I@7aYq(*rm@2mI9`!Mnxg3X}*0+unZi1PArwh(GuRu(pbIdBsyY<&7DE3Zy{$mN{^guQkGVp z84wlqrI^8NRC5^J7JjIJQd22~*+#35l;bHCPBo)xEb4d^CgPfH! z*+UCZ9(8H`#U_BBmXeP=bCW zSp?4ECq%Q$$DosvXg7l}H>WaNm5H1n^{GNNwrRzD$X#aFMVPDn0#I6mlfl!UPLwm* zp-qq(Bb8;w;0Byt=+#!kZ`wihrJ@&g*k%vI$b4|brlO+K=qUzu*pX?Hp3CXrbfnX= zjpzzs!4rYV=n6~hB%nTLINOcSiJbx%2+jZ$yGx;59$v^GmSBGFw%aLY2XQ&~pI$)@bR5N3Twj&WX$cr;@DiG~H}| z^pzx*fgR|x%KE^FfwO~EC|uMWoQucdas$>yw4566r?G6$M6XiW-^k*bVS>Kn6++K> z{#pce%E#=1DcO}Js=t9~u1Ot{YL-{E!nv$A*1wuBUdkCs7Um%4OA0N=z{B{ntO#bC z;}cnfDDO*i$6^j@bjKoPVoLN1;1!5i$h3vSd@LkX?*RV$OSB7G>Q z(vi22%tu}@Cq4-*Pojz}U(zh#Iw&g@_Ex1AbIfddA7e2dw#FvTw*3_o^A8Cpwh#)9 z)dKW-A*0#DFmeX)@{`Q1SX1oanLx_Q?>2*rkWh;Y=Bv++ECCE+XW^S@=9VXAqoi^S zb;v6#A350|xFz{i~oew*)`otL*C=R+e18k0+a&J49t=G>qrtXyrMv zOz@KDh~1Rmeep2JJ8^XMG$`i<%(Pn^%I4}4s3 z0v@~^U_n#Mfh0h{a;6B9009#~5hQ_L=DE>3Z zdQ*Z>MTO5vnf4~Sc+7HGE&ic$DbgPHB+2c;@VGsuqCI=4_6C-d_Wpr#uoU!fWdHWy zy}3Q6qCL2_!TlRpPTD(eIS*l}APi_0tQOANiLHW8e2!&%oXA;7Vx)qYj1Kk&Cfm30 zT9MVr>VoBu^f{GY$BLZIthwdO&5O@LDiA1$or@Ynv-n= z&jT&?TQH@2&E9nedY0Q8!o!r6ICeg=d$EvW@<2>?IW)I2DR==gtym0&gS7yr_jBiW zc*YvI5G+|2Qk#)7GgoNd9#>`Ibfn^7hldI5}j_M|G`G&@`~Y< z&jcQWHk{x>MxFA%Xc^XmrSb%;veJsIM^2Jt!6weiHG5c+%5?R#BF&(dLmwt#=^~hd zw&RILc`iH<8*d~8p0q%EMM;WxuRm4n+UM~8$mzq%?eM0<=_4#P>E4vDgr~ml?iY(_ z*d+3y3fV70aNf_Oezs6uKPTh$k5TorJz~Hk74Zh(){+}|tz7wtBFa3WfBi5mZKt|^ zHqL?dv;A@X)8h4Gtv`PK7nw15SYIz&in}Xf12BW@;`)QvkPr65@Se_b_rn*OJ*dx~ zm}OOB+l-Nd9`k#dR6f8ri~?=2PhslueM+KSvQIf)IWU%@yr)>Lwj(#1GUE_6ciTI;+gDV zw~g742|wVx0+(|9@qw?0mr%Z55+J}F6+sd#GgqT!jz%xXLSzQvWSm`CE^zRG2XcZf zY#wo;dZ(if)9#(hReev3>IsIqo(wyPxrnESd%#DpWM){_fIhT>>9{rqk)<6xPjp3> z1PCX&1WACvZSfj-vYR0Z?j*OPJGsv6!JM%tW?GdXwQ)v%FH>-cQbr72K~96p@Wh4! z=O6S9-aB|99-TAc3DU6S=ce_+OFNG2mJg?(kO9*t92GP2$OHd`J$MS`j8MLhh1i%7 z0)u}F3((NjN0`wDS0ZfAxwfM62<*UzUBxz375gKrFV+o8?-{J{9)^*9Ozqi|ARrduL@wfT zx|S@rmM?NGA4)AfT+5kUNHb-+OqVm$UxjHaGr>mC6w6<^+KlcQC}Ou;ZU>ipTgvrv zIjr(-<;BP&m+vy>dr$Z-X1-dfpIhnI6(J&qvu816uB?I`tw6%;fdSc( zOQ1cKQ~YO?iEINt5wn4LBikiY_`bl&++HS|J?8)>Rm78ASHwAqig>kSimpibbVW=y zgAbzv9CzYp1XI#6bAvzNN1%5NGX#3;)B|fP+Pwg<@&vPookr5W)$GBVXGbn&5d*!< zl)S4{xoAak!HT#eT*B;G4ahnCjOZLrn?0*I2WNhMx;dOi181qnGWBS{!`-*OL4}{F zapf_%6JwUeW6;Aq6PH+l2<8ral@o#a`g$-&e7#G#7ERd61nIXXe2EFHf#hWaE)sOi zR;ktOJ5#H1DwbZ+BV382HtcJ;aw~{oboz1zYx!{BurxCzG6$`QSH&rm<3lDa=fwH0 zeYQ~1<#F?)8*ZRsu1&(ZP&WE^@fD~5vAW=w@hr1~yYPTbv3@3In^Av?>$II9dg$~G zOE+5ZhJPJ2>Zl5fIfKyD(9)e$)-TW!4a%-nmaTy z&PAD#ud-NXO3!XQd(UT83Ee_)mAsd?5RN& z{y>hMnr+K*N$0qRm27@#@X=0ca1H7@OjhLUc;4;qA%@CDH^C)<-{2frf;vu6zo z1iz;dt}}=^3>H;&@NOVkp4c}~w)br0nmyHk;`zj4Qq+LIVIi6~U{K!pE6V427}AkR?=T$Pe|0ZEj$NP2 zced~ycFNU0c_szwls_d2tlT&}pZ7))3iA*dIa3y|o6EIY+*@JkcZE>8)SD68a$Q9v4#nirG{Rabn)~n+Qd9=FC^|KaT zd<@yxue-A01>GXn#Vw-Q$j4f=g|29WGXH7G5^KP!4X$h+f|KPq8TK{LyUPle)mtG2 z0yDSa!49AI_-Y+Z>A|K#Euo;_&S_b2qklwcHQ&XZDi5NQ%&}`W+UIwg+Q}vz+u)U1 ztL~bgLlhJ2XIStdOD8gRL;iR&x~ewzh2Psj}Q8ifr(&wkEf|CPL#8KRCr zAP~HRc~>*9H97{@`u;wA3?PYBXs0&|6RJ5i-$9e4cuW^4M?X;9YMGyw(Wr_Y0VXDkRPB($~9=8!xyL8Z&y= zt2FivMsJHsr(-&l1_CdAqck6&H_X()OTDe~R7c1*P7jwib$ohrPm7xrxr!^>qS9Az zx?82^a{8jAG_0Dd5uRhJ?_t>Q1SbS6Zt-)k)Dl1UVn^o0 zQlyp#xRxl_V)h7A{M@^TnbL&mL1v0cQ!M|$bFY+(pL?(6a-Ra2v4^-^BvE<4bMN)c zcU1Vk&wL$HKey7aD?&(grH5th#~_3x29a>C$?md0qY#o9xxs!l2_eDozwO++8=Y1! zoR59(wdf8Lb4S*Pq;oINDg6S!XDiZjblr@E*~897A6+>oadhP~FjMr=Rrugn`RK@G zedZeC=o;{y@-m#G*~3o8xvKI+lh-5L+1qau%ihS@tB$OSGjK!l9@6Y#Kjs8(Fnbhh zC9bXLLOWOth2-91_OO$4_Hw>Tsne=LIG>%P%2z3!F9_!!OS;@!k_B?|SL4dX>{5PF z?XOs4_OJs_-CH@;O+^kstjNP68@usT`15$)4}>g5xJh0JP!=MqROAuK7bN$V)cn={ z)Pkuum|H{O3-rzcbknCMrDrFlPm8B7eiU`}&SAV~17PJs^$c97>WHM^u&79pA4#*! zl_b5p{7C7DNS@ovJZ8^@Tp!MR{8TdM_Hx?nVPCFIEWoinjuXIK_<=J&KQL^&e7;sQLUD?M-A4MM=jMkxva>uo`p_@JtE)VL?^I6LvEhaeSl^+lA7#$QsH~jvr-XN_6FCW9|&1w;RZ|u zi;@qq1fQudU+D0HQfBI29i$K?r{>=P&NMSCEiwnC+&~20x+cwxRG9>a!I*Alr6)6% zS6$6EMT9-0+|T?ep4c18hv}oB&=NdP$J3>A=9wBl3(qXz!(k#!zYX6v@ZFw7=X#j_ zCwy_gienW0KHmY2zivIFEeT2DZihw9ppQaU0HY~3um`==NlX|d+4g460h`&wrjr!K zc;2bB0u@F+RutL4_OK7wn;!6cv*m4_FE7W=%kellh%;CTQhVi`1~3i^pVqzl<-B6^=)Ukq|A$_d|SH**-ko z52T@N(3axM{A>&VKx{+&5n>y%(>a7H6S0lY&|4MTz=0_#ws94^t07_=%!T>Mk7L&d zH3{F@!uPMlHbi2?He?g`j2hRBB4hU}l87TF@{S~SEqlxTx8 z|7ppf!%Ws;9wo;%ZUCi#*Rf;AHe_wr0ghSReNBMv`g#+yScf`fJD@@x!q>w^RFFgA zTtaYF;P^og){UI~`EAtZE8LhzDs^L0juzi|%Dw1<-kMt4w@5YHQgqMy*ubsAE4SH_Rn` zaUsW0eQJ-VwtayM2eL$-VHUMPWGGunb1S>T2$nIQ(u2I9@0|l;ApMkIKurO^@{V5Z z)%|^*vV4CZrQ+lfJrSbF8me~4URB3dF8+C7EX+q1Pp^z!@Y#4H;=Q%rd2G+QFc5qW zx#)BYP`u;dEjC)zd*LDYBhM%C?^S(~wZQw;bR4auM}62U#HE+T=dj#?DwsW<6&dK2 zvsJ#@03UC8KqTrK%=V;M)mF%-4_eb*v%`{LbTO?oXVxEXl~tjX^~ z^&Iw6-Y9nto3tHu6{C*W%i#6}e+kGJ-p5y2WTSgdK(v?J4p5%Hij`e|U8*5wCwGGRwt!Q6Eiii8_ z{Nx{4NCJebU4kS)fZZz&Nq~UOwjxLZ1nlD!K@yOg@7%7&lRx_R71x8ujJ*kQda)se zofIO8gWCZ%-r)Bc_At-q&I+XY#}-Zm4p~#p($7<{$Z7ggq_EfR_xqM7LHm1mgm89K za!LY%-{=w~0m2PTm}ze1rxo<#{9T3%J{#fVSXY>6s=OpFG<&`Q0-T`yPN0_&MS?!_ zBPS@27XXJs-ppuPvlPYa#U*te+4}xexs1MBT-c3{w~3yCs29}Y|5H}f>^d# zgOOjOVBqvi6NKM@;H${TJHxlQ&ZIf`Ti_u74v&dP`ZBWV^8i+lk?OUv{>6o^RaKJi zR`PaI$@d19)J5I_50;{##}Hdx6%3O}#I`=2ZG9|_Tfo=PINd_Sx2rVKH)!<3s^2I_ z2Y#gH)lAC{zKd4Q3H~0iyxg<`wp=$teK~kXH5v6l$60ba3-6}h16P`zUXksXDc&G< z$_~Gh^2rpoJ*%g_<3#?0E2`1KF}N>FZgZeM9xtpt{C+uWm=U}Oh4HvUJ?>MF@2baL zc*NEK_*Czm2u?3f-w9Y2uf*7jR(9Gvbp!xaMyreTjZix?@63iSJdVxaut*3sq__`u2$)}oSvVQ zu1(^>QPnn~Pkgq`nIpfTV)OYUdeggt^Yqm>Oo^#L#eGQP|KJ@s>EHkLcL5^BvEBtN zgl_(+cL7{m;#~k%Lnl^%1wSmiW7X*SMBKspSK% zWhU36nd0vPu*f;FVqyAEW;#`xV)+NY3y{j=?*d-sa=2^(5kKT|CnqZJ_bvb{suRl< zzCSbHDN;YT(yuE*NOYx#W$nixgd_%$a4xRI4rCNU5+gU*uO=ZR82-1t3xE^;2i^rd zhS^=lb2|AB+yclf@qg?PG4MRkb^M=m`p5s7qT~O<_XTJf@qZ>CH~# zX9qGM{?Cpf9{(54f$@LE!7*~pyMtR-2*=Rb&8V=xO6jn^Ae_(cN#(1Q&KHF9l~9%V zy_QM^KSKT7oJQA3bAm8CdpNv~kONb}?9pnUzZgVp_Ysui2Y$H8kJ;+6NIjORN1b{s z=f_qAXzb7POsonz5`G4g`K02MPPED@JVEJeZt!_f-1qEPQ1N%%eVjuNL&aGa@trK~ZgWxRrfFSr`w5e+~`&Qf02l*(5y^#+W%z_UhGZF--oR}nUNpAG# z;2Jsd;=h0|_*VuW1C&*yz^T6s_Q64P$j@<<v>=t z9hT>qj*|Ho(r*7{5oRf#?Gs36MTWz7U~P6|5y8{kwr%3MGahXtjJ{3}{#Ec=+N$DV z^qRO~xMn&qj4ng#^vb}iDS=4wpqnWCa;aeIwdU4U=#<l{*-wO2?SQrDOJavTn4CxYt^0^RxwK5p7@JrZ1()aqV-oPtd`RK>Mr z*%DLdImk&Ip?S7u*;iGbrlty0Qv*4^tki6u4zO!x9j{RQ5@PqE<@l|@EQH(L5c|Nu zxl%N$c4O>3{jzKcvJZ@%<4oMkN*9s?pnp2~1xd0epNW|V3*k!CWx`+J zRw=1F;9dK{|yP({fH;^KC z4f~SselY{w?MW(d%eD zMV`g@0|eCTMcNxn1(babLVc`#y&iLnJ#nuvm3{-=APeiUe(@`tLR=6ORY(ub9`0N` zs4fh9<3aTlb;VHjXzq>@hhBJ6*)a}LQ&Iq3HjRk@I{QEze^6Ql&MGN#cP(@j}Sfoyt-e=F)5ti<%8fhidw-`4kGEl zKf%9NR=-NFL+xep`-#JbsW`{n`ZLgNEF$=%DY3xSNq_pA7#T7n7C19)!17iIbHrwBjBTX2qJXX1;q z4AtW6;LAKCbsEJH&*U zhpx$HxJlrw98UjP(tb(*MR=agdIe?Y3Or46v$CJgb*OG+!8nJ`$!54dtEa-D3(M{q z?od*g;s*rQHmhVT|%n_WvwIXeJHq8s}$#>}6`GsR0 z3I_M*X4AvDd-5-(&2S7px@y#J(7)?2{~tz9&vWRda+dR#W0(@l;dcKz{GQ<%RF}1L zv_sp`M~6Nel~>}>y24XOW>7tL88Vp~Q^flu+{oDkGS>b_>S&c#4$(E z8HHTW27_gO(*HN;ywk_}td?GU38UuF6hG_sy3ISAzK^xN2-+S&FZ;O{H;rM9tuH$Y{of5ekEWtwtg(~PyAkvqwk9kD(989WBYG3B&i~XV8Ikw!N1sSTpxk{CezYT8!35(@|m> z{*cM?7{fVzBkW`ZU5Ak!K^0;rht*hP-1);>Tb|wgUnXrXtr)#5jy*TBVsr@drbym3 z8uJQvzs6DpOAl~42eXK4sSYyc4ckVUbW#B6% z1HK|Bc#ZdmSexLbfxRj-hFrv zvr0H09m9DO7(?ENe$K0;2Fbe(?L9+Nfo;dK@F2=9qf@9|@&Xe$?-Yu_gJ#ktR(Ie7 zI+ePK`%stO9q6PgjWrBstck7=S+1wGWqBR#b<$K|Hv|6)YQZ_oc!RJx zpr^1P?F05(vd|vF`m~Hfg2DI0>HiSFL`SfiF!r8c5sm#(u)8((pvg-ZY`Fj(V1D zd&}HoF5C7jU*6IN;lXF@SUPD*z|t zPX{dVoCf&Q)Y)j=Up5tn#I0jAWn|ZlnTy=l$MYzBYBOXR49clE1N4nDI)5!&iu6lk zR{%a}b8UwvFz2nQOn+iD*Sth(d$o}1+%JQc4`X-PRQR6sQQ@P zFV&-+CHEosqLS|eb{9VaIJhsD3Ek}rb6z>-aX{50)t9?6Smt%2y{l7sbe_cM7<5zrj;NKec8XCG>OaSx{~s&11At^iz=kLK=MYm|p@eoA5?j7EPJ(OO$=a zVJk|u9JUi>KjY}biYI+G1;)M&o^RxS09a#lyTJ(`Aw4C9XIUua6S3I8!7{z6l)h@) zdASTLhB3UZfZ=7s8J3kWY{#G5T(xcWIEMRu4A)8e=aRc|BvZ~VVpukU;T(aVjODaF zp5YOJKOV*D-2(5& zh3Bs#{}$nSTPUvzY!u2F0`K*6sc#GPOZ~4&f1efjTY;|ynddoy2lF}ofWRE-i%;NL zX-r=saIe&MrNB!wncgXIR)Eus1x^z9s%YRDfjCznH&@_^!heRquL-)JKwgs`Rc>U_l|*eZ!hNbCo*1TGLBgSx66oM zBygVSXPv-R0$&vR0fEz`o)H2ONJDLiNdu0QcGCoYBIEm8fqSLJuL{hO+NKLE6?n6h z-6_zNI)5+e5`j2dq2`OEk8J`Q1*TL`I(uNY=Zgz$@a!#RxT>7tvI>Ul1a1g$`U;^R z5V%j^FpKFkB>mw8PQNN}iBLuWy7hZgy~sT;mtn;)hDXLTtg{&Ycof6mmNMM$V|Y;b zzc$W`n}^k2e|oZi8|bgH!E=88NWixP;{fO8PXwHhe-hyFeR8rl{?|O%(B2sS>KJ}( zp8o}SlC1*U;I~;nv(euQ-(0}w@)_=O815CgD3{aU%VhZ21cvj3^0ZK17q~Km>0cYq zuotCpIvl?M@S`#J`y6^d{eXiL61rm8N+x--5}T@V0plH z3wBw-Lq%t%;|@g$a~`6Zc+2Xc>jk^a`>c0mx`%GoSWW3U!1gN)<(Tuqe%KRntO1-a z#IX?M96N?vxXinuyfxiR6&kzTGs5uFG{Lreul3|%r#?$CC3PyT7VKII4cnNWN*Bhl zp7eCuAsF{zNBS`Gj+GYZoWdQre^NJ&vF-Hz0Crb&y~g$hzLK6txp?8jd2eE62+%1S zJ0w_*#-`BK=>dvrY!@_EK-)ByF4)To6HOG*VZpvm-QJth3%Gjhq^~XRPP;XIxW>L- zeD8$)>3s6wyssDUoN#YCHk%r|VZu#G*te{k(nphO;ZkX#nBG+_ct0NXKzcFd;Y9(_ z*S+Uw`~X;?#=;o~fsGT4^@3ds%~Y88$0MFjFQK^_dws-nz|Pdzcg+#T7^>IU_su-M zFNBXpTuZ7Uss;9xQIqzIble}2yr+z+wAa!(TEm=A87HT`m5%U*V5%HPc2r&sugh_) zD($`W1jgm~olT;>6XKjTX&5)~vB{wg*^;#_sW? z_)n(&8aoK=6gr}@U;F(28B`#GU*`QYu$fe+v5!4D{!?kE#xk88|13JFFuEZ)+Hc~2P8?g{uc5zc>{iUi zh4hKWrVU%-Ur47^aGl%fWgMz%>3WS#_xvKgmOj>4z4K8z{*tpOSXsfDv_&vA!_TDs z3KL&&CLL0oUe?kg`b=Z2rNuOTqV&Pbnpi@u8e>f?rF{ycrK1h1qlW}j^R|wDEZ9@@ zX6h?O9sNXewv7HLy^i`6Cic0EekYjnOE~X~A+Xd7{L868FeUX0TB!28KlHWXZ+p~f z>=|Dsu(LJxrhkQhB{gd7kN&fPT_~86Y!!72_7uIF+lG_)wTct%HTYN2opG$iznTsU zrdmIr(#0q*^Ilrm=|7)xHC8x&2L9qvpmgfO>lFnOZ zcl#UYbdB8w&IYQ{oZkm$11%LyNxjC^=N#7O8oEI8l+M=B7Qwa?+h8N@5bRp|R^cW7 zMtV7^mbLwASxdi3s%0&GE*NY6a(@%0PnK~9_7#6KjT201VjZnedEPH(T<>2;=V@$D z#^u058sq-0r#6i>*f#;&qA=8XyT65A5bTiG^tVx1+x%1Xb6hqG(`%CV6y2E5*x_j` z%OT>GD@^GeTE+~h!3pd_+I^zJ?k@YT|3d0GNnw8p-0yFtBN{U%96%d8Pf>XeW==c3 zATjanbR)ceJI$J@^1ht^n7^Gq)7Y~77yX@dCnDwCUVHu#e>W|hrLa@--}i5&w=_1( zI^e&Uc5qk&oEwS{_%ETYr!&U-yxqU8UvIZ_hO7^NEdR*Ay<#FGyp>c~9#(lq@4r+}1zL&NvQF+|=Z_uJ;jB($8W!^whg?Zo3 z&oIA97bWF=lWx>`uLeHz-$J)5j4X`%E%dy`j$jSHCGHi+NZ!YicP%Y1Ej4bTSSFiG#zm(Ct}1x6C^h4D+9lX!-V&?Re>+{R zv2tspc{|;xF`n<=qT4mb^Zi?Nx5jwBf14iC7|-`_(_!+{q%yyc=q2x zuW5{D{~h#}U^~QmzC#OFa39qC`z~z}?02ab<@z(eOWQQ|#oTOQU((n;*t^|HS842r z-rN0m(q4_d8!X7Ui*C`_N5PNM@1pwzJCw?^@oqXG*beUs|EP?+>7d41{9}MUqcL7@ z?_sgQEFNyu*oaAobq7z()3k~?VvB01~cxXc^X?e zW>UueR2Roi%y^J?33kX}OFlq1>%0RQr)4~>Eo2A%5-Y+FXck`q(ev+-e)I29dRFCm zmj>r$JW4NV?A%~2Ftz$BPxM1NEO}}+{*aEG!*#0J_(RG(moYUPe?;$}r!bz4KcW}T zR~XO6gS6-Zh4E~BobFu1n3|1G&})LJ+4v+CtmVAz#Ix~9dQD?I8=s+_O)8IPVCktSYT8<5zL)rCjNALHUpd?l zz(>jXq95U{Y*c90;eC!Nv4?KYzhob*#>^x+(cPR>NIFDh1)Xd{!z^Nr!k!F zly*N#che?4GJ%R&eoZNsWSmpUlMFZFP-)Uvq@F+;mtttr@AFs^&NUGKV3^Fwx#lr* zCrIBJ4pmQb>&H*;#u1)1nVD&cJgy`zouxV|+V(?EOY1~YRA27F$rDj|(UpQ~?2gs0 zl3ej5*OScu6`Q5HPR2Tsw(t%CKlZ_!3cmkw1Jds3Czn+>vZ886`c-$Hu9>+SYz!})3 zd>a(E71frK=PhW}q|Ys}5Yh1QB~)5Ho(%ufa{d&unRuJQ65c$Tdoh@@0OM#-GECO| z;I!)dV7j6xdsBK?EHmg;v4OFo`ExN34N~bf(6B{{qBL_A)Zo!IFsC_$A5&JXX4dgN-tqe7&X;4&L9RLF zn0-;LC+3<-s$X2n{yXv?PpW@pPW^vv|9@>C-+GUq>&PtopRsKdzpTeQ70i?_+!R`g z`#~#l*JmZ(DXhfb$=QkTO2o=n;$L#%9cmV!2Y3Hf^+lY4U!<;b+=-xB z#fMPC_r||O%fM;S+19s){~HZA_B%%a-_89UWr@sL#+?Q4(S4}lKWU?NQo(1m9sH?A zD(?6XGYn&@9WXvYZXWG1?eQZFZe@hAPa?S+t(t<-#s|hdg{8(Fh!oZ zap7#hlPl%|&I8;db$)<)78)PW!63A1Jvn|U>Nz=Mr7^)MLc5l)A&Za{P2?-YFXi`W-nVjN!(~6=RTFljb!a zH)c>QIh8_m~2*=Rm&ojQE8`7Y9VxH-(a9gcCwdr|Xo+#Q)Re1U$;ISeUCYgMyK6xP7$6)4W9*Pqd5zlGeG$fcy1j2l39t`eq~OlN{`o^CFyE` ziv+F^_^$CC96&!XE*?=}ePBEVO}=Z`ID}@IC*bJ&uEnEJV!m2dYGs+@3oES;Ao)~4 zZt(+)TdXo)&zoyinbp1-;M_ibfmKNyB}_G&tVWb7NpH7m&1Y~kro{a5sLfW1nVEhG z;B^JNtWDTbr#8lZ0)^%2@`Do5QT=8795#`%qDj-74Da6u4F34uQJ_ zUS<9!?SS2FzlEdzcAIthC6nQB*wT;e?e;sFPuf?Rx8R2qts*VYf&%L*SoNp&m(Z5s znP7iZ~+4BHBKR(0UW1oW- zAE3~L5ypL@hw0?U&tI;x3UdR-1bcLGio>wL87FOxBW~*%;&()^)6p@N&ZDB$Ljs=@ z__Dym0`IUM9({rHuszw+gL3nBqm` z6aVrSR+BQoT~qGvjy;Ga|7UQ zW;@`1b0grLW+&ji=4QYL%!>dIn7x3Hn%e*mnwJ6|GA{%CiTNeK=gc!b4!vORLi%O% ztAMYWUjsaBUITcDI%5nbxC#xz=NV1=bUQh1QP&i>;pkj`@D%Ic z0B2cm0M42^0@ro9y~*S-X>!2SYYq5Va`VtXgxIQz?hLHjF!mG)JDlkKYkr`y*7o?`C> zoMqn#ILE#ju-d*AaH0Jzz(w{QfOYnrfGg~K09V`J16*T22-s{N0Bo@z0c^E@1lVCe z4%lfQ0^DLh4Y<|*Dd0BydB7d^3xGTAmjHL!uK@10UkAL}J`8xh{U+eeHqVjUY@Q?g zZJr}{+B`?@wRw&_VDlU~VDlV#)aE&I(B?UE$Zp4sd(P(B_kzu{Z;_`gC6(5A3IUrv zC4enLY4ubf-662kGa2bEo)ZDLdS(J{^UMa^;i(4P>G`!cm3DdF2Hfp=-#Z@nxJyzd z;b)Kxb7&O)8NQKJ1~``H16I%yz-iP3c&fm86h`_?q1RI{(&q}jN#F*05|kMI2Vf8V z*RXx~ODZKPci=Bc%^!A9(vJ&#Mkv3Mw1szTB`IT#?^1Qf!hS$Ebun(lc??HRH;+o5rO2BdeRuq5x7R+HkD3i`Zj?#3p^;0@a7eo z6nN0j8ooJ$DF+1}5lF+B(wNO~yTE+{9~by5MakjZ#|0MWae9uxH3GK@yjkEufky;V zfH{i=&JlP-AmuZCo4}h@dN@;V7Fbor=^6AL-)Z=Ian}04YvNbbSEZWtIG`b+;sAaz zup7TXu#IvfZ0t5}GVV0~U{soO%*AGldAXTmjj~R*mRNUNFIm5{{%Cz-<=ZRl`|KC( zKiGcHMV>Ev9{0TK@jIiO@y=@JV&_KZPUrVd2I5=82*D!i^YDd(Pkohu=R4Em6i%Dq zauCr;MfB2#b6^HiSxDi+C{BS{_-kr8xEq#>Q(qo_R}w(DJs+pSLfpI>gZ~iXp`Uvn z$sqh5>>%LQ@*e~4_52j@vr#_-?9F%?@Qo4w2Kb1{^jY?sfEj7O0sPSaHsIxj?=yWo z)342Ac&YsX;IopxG2^dsisR=}3ci>BH>7XOH;3VOf7bD8xH{Jh9)Bv!SvBV0- z^@6el5EojZSKO=z^wLu37r$)*G@-*Zz_G|NpiMv0Wf(OBf3;y4(m{*>_S=9a?tA4R zeKMd)XJa%BItS3Cb1@ELzXxd2gV3Kr4~Z7P56u~L0MNvF|1_k30Ejm! zG#l_yssiPQfF}J2|E{Y^&(eIr=V$@w&jXtHtH8BL_W_#pCgJx;bOg}EIejtGzXs&L z^;QZkUJIB7c}k(VCjj&49l%l4VwBRsg69j~FL=Z_YUG&P%-7A|n;)8=nwFJjJ!>`N zym6Ji$KGe(VV~()?b+e^rss3dWakuTj*CI2gv4@oX+PT7OE z6#e;pDT^eREmSH-eoo3;%m(cw(~d&S{$)RQYB5{XhozoXf?vBrqvPNqN?~hd_>RXn zi0=e^%i$#|@U6smBEFOGJpmRt8Fn@W->LXc!*@Eq+|pF~n|UhUnm6Hl2Yne)jXn5& z+ZbhBX!RJ+*^e7p<&9D1~4t}Y8Qmlr#Ce;REJ|7t&QFDS{q}rsZ*J{AkBt)(zG3SJlp&->`W8iiJz78|E!txnzZ8%-=F(mNpIA)Y#e;YG@!a{_4=Ca8n4A zp)=G#+$tNQG${$!G`WXe9YUJd8fuJ63R(+(hBsXh$2;GdXXpEv(RWQ=g zEr}*K(adeN#hN0~*6>=Y?QCofH&Jb@wkgt%M7>fP%(fM?7S?0@m(!I(R{q9LTX z(_Bj^76Zo0PGIQaysl_8)ZUq(HFU(8x#;rH#;yp=@{B;(Q!N)Z3wrv>KYa{wl}wi<~4S3 z|Ft|iiw8z0tD0G)W~y&o7piUF6xk433(D@r(N-Q`4mLuE;KxO?+AslngU-7pkiqWPh6VHwfx+E}a$jnzb=O`*l% zcFg&Ufb!%XfHiK>c`)k*UEyY|QOX0HzM-LEZe!C1m~>4z)QSwYkHOTqjSkL=+uh)- zgzksP<56Wb49?Q#FgRlo%v@X73e3jA47%is?v5ccmxtD4rmu+T8U~lH3wJiP3?`oy zZtfg{?5;p?;xW`axSZD6;EaW#@cNd{!E|`!8u+}y8H>B%QwEV+&T7Zxh@BN~Z;rt6 z!wN#{qmeEU+d`c!5!gk|>e^LRb#;?u&O|50ElY_2-^ol5qj#gnoV1d*k#jCVV=~5bNmNg762&*YdTohUq zUKiq(pdL!V>PEHAn8e}E?&Tq@Q|L&DtHK|22{pFWN4hXCd3o!HFAO(_sHGZ?U5(sQ zC^O15c3$%$NGuP`FWiOQDLHNq^h(~_!^u(Lv~t!K7JHn%Tbdm+4-aEMPq`H(_c zYmhs#er{xo}iESN?(GWH;SU!QzZ*NvB0L{hZY}e^cD|lzhid@7KWq!M$wJdlfCh3KZ zv6fDk2|d9kRINRv7i#tZnu2N=!*-%gQ<~HQbyj1zQ&U83NjO_PFP+^%(mw zOwi|x85)O5tD1OYu^fG;0rDs1i0eqgxfhEuNtDt^`zVbmgXE>5zOx(EGV_wgwh+}| z%1DAKETAB*9jaVBhuwxC4LrWs9>sHNaQF~p0SuaJtct}#ZEIV*1!-qWb124(c1;ur zdv|GlfX5f}97y9GfE3`tTG}p#Gp{w=0cQXNQy_uB-s+pM(NpH8lCa6OVUXg}sXpAy z21CjPNK&+>j9GBZuLf=8f@?#U^kU52aIBF>O>lUcE|pTlfHP5NG}0=0(1tw4ZAvP> zGmVNL=!8>Ojsdk|QzZ(Rr_<3;Ok9kMvy=lCIpH5jgNxH^pgaC9s@&DoHZcrt_X@jwJnONEPu|&Ja<_x5SqYom7+fox z6y`}+6j>{x-Kw#~Y*1s=;EroG>Ru18K8QhF;xTjUR9o?U8Nw!*Rh$x^eyTwngQUj! zTaLq_Yfa+e0ji31w>Qb5h#j0(5b*Wtq{Q|*m^i;V3`>|BjcgYG7cZ_3LJCE}WE7Rx zixEcS+5K_M@+FaITVv~z2uA=mvD)<3aR4O=Ju4b!whnoqiFs;`)e_e=wuU-6|5zF9 z|KUBNa@azH%~hQ^nyl?Y8QzvAVSE~623`dd^~ScZA2>)mDOSZa0jJC!Y9WNn!V(kWK8Gv4zGd ziW*|>@wbY@b%Z4h0X&r+Dzef)t|BK&w$qh~j;)-7rZkLTE zxkolytWRsid`s8K?kThmlWL$L)U-CPSBry;zginqlHI1V3Uow~>Tt$$10U)n&IGl4 zWA>zMH`<|%k#o*!jJET0MMV9zLTZ-X7?ar3MAmg~#>Nf>IzwCZra~$_UY-iVxQ&S< zQby5P>5R(E283$~$yQi2zakn=AiR-M80%V&aiR>B>fmD?)gXk{Lf~oT&){tY{TXTyBX}4L#k)FtYNd9| zw6YyX_7Zy;R92i32?6%mZrf8>dO57jyw9?#2q?PIz z4Ae%yU9Y^5=uhE;nK~eoItFRP^_CzeABXS~BGfFj_=zY^!iZLFY7EP34!tE|PPXD& z1j(i6l29_j656{OTh&gEgK_n(;Wjo49DLhj>##XuyGS6iE$nFRPEhzg3eLf58;;sU z4Iw=FJW`L)-91q|XUOBg!mPWTRP)ESCQM_=fPICypVUpUyqfuB7AfJq|Cdlh4<^B0gJ)dK=?oe|WOP>TtzejOVeQ>>`GT;dDMhNm!N$AEeaWpUvZ~PhXf%T1!D6f?x?UX; zfj6~`fJcuDVsUX&{7|5llsFwC>UZBbPt&9(1?7QdlMmTE9*D2FQxJq^i2>JjM&lcJ zRLUp}ALkxKWmZHO#ijyFlU8qxDJ!uRS$K`-$nvF~SnFHWXdD&c$UeYR3^1k>ZHnlE&DQVYrA-$9RIeN$uEp3Q3mh##rq_ z(EE@$u7!1X=(4embQ~+&HMT+ddVa(ZrVJxat&W}UtU><=yrzJd*syelLovK=RZ}ZA zDe9)wc>p`G^}Lyi;YA?71LFW13J~UmJfQ#`jDU3ug}sdmPq>t0x0|%O#AU(xtSK6a z;h-}KivqSs>^Ri4gp$>?t6e%t*_$#_KF`Mnn1y%;nY0|dMK+tG9vEOOw|WPxkX0+z zwqn14-ZO8wd0MmDdb^V=DUV<7@?qC)5t7L21A>|$d|ZqX_U0Q@s(G_|>OdwAQ6Ws` zW^qJSQLwW1agI$8uzhUrlq|e@kKx|R^oEAcmT*kgo)zJy4QM;@>NX~QjVmX9=A6X4 z@K`)V7vBWUSQ>5SjddbR^>v2Z*<|&FZXi5+i{6e#IS`@ zbdBm7U57pi7j?pIGGI&e1dVqD3dbUjty;YA@luH>PCPH^5<+56vQ+jcQoT|FBD8|Z zP-4>}QsG1#Rm#_go+PSRl7vu`h#fE_4B=o(2ghYpbpup~*(`6qWM4KZzLduLxns6; z6@*4iT^eLhlprbe3~)3Ozymaf?o)G`}w3({~q!s2_&B

    I6AE9zF%1w=(IAyz` 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 I#{QoX0O6NC`~Uy| delta 186 zcmZqpAlvXkc0vbpK;e#!-GO2(=3)g)Ha`%n5EYngvG)1t9zBPRxp|qhCM9b$XXvzN z=r95?)AkG<<_+sXdZtU?VU`q-+AZ?L`M$DG<1W_J39LMq+FkB212GE_vu<~}!)7p* zyI_gA7y|<%1CZWcU&y|hk=L9-kHLh&h{1rtlEG}deKCgE^#3L7)~L#+KU8GgwVkny H{XZiBD7!q7 From d5b2faf7ccbc42ec92fb1ce65885a6520ebc9745 Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Wed, 29 Jul 2015 20:32:31 -0700 Subject: [PATCH 09/21] DisplayInGameText --- FFXIVAPP.Client/Constants.cs | 3 +++ FFXIVAPP.Client/Initializer.cs | 14 ++++++-------- FFXIVAPP.Client/PluginHost.cs | 16 +++++++++++++++- distribution/FFXIVAPP.Client.exe | Bin 1848320 -> 1848320 bytes distribution/FFXIVAPP.Hooker.dll | Bin 58368 -> 58368 bytes distribution/FFXIVAPP.IPluginInterface.dll | Bin 13824 -> 13312 bytes distribution/FFXIVAPP.Updater.exe | Bin 489472 -> 489472 bytes 7 files changed, 24 insertions(+), 9 deletions(-) diff --git a/FFXIVAPP.Client/Constants.cs b/FFXIVAPP.Client/Constants.cs index 54afbfbf..7ebd462f 100644 --- a/FFXIVAPP.Client/Constants.cs +++ b/FFXIVAPP.Client/Constants.cs @@ -36,6 +36,7 @@ using FFXIVAPP.Client.Models; using FFXIVAPP.Common.Core.Constant; using FFXIVAPP.Common.Helpers; +using FFXIVAPP.Hooker; namespace FFXIVAPP.Client { @@ -76,6 +77,8 @@ public static partial class Constants private static string _theme; private static string _uiScale; + public static HookProcess HookProcess { get; set; } + public static XDocument XSettings { get diff --git a/FFXIVAPP.Client/Initializer.cs b/FFXIVAPP.Client/Initializer.cs index 2c6ec7a4..b6b3695a 100644 --- a/FFXIVAPP.Client/Initializer.cs +++ b/FFXIVAPP.Client/Initializer.cs @@ -69,8 +69,6 @@ internal static class Initializer #endregion - private static HookProcess HookProcess; - ///

    /// public static void SetupCurrentUICulture() @@ -1013,14 +1011,14 @@ public static void HookDirectX() }; var hookInterface = new HookInterface(); hookInterface.RemoteMessage += HookInterfaceRemoteMessage; - HookProcess = new HookProcess(Constants.ProcessModel.Process, hookConfig, hookInterface); + Constants.HookProcess = new HookProcess(Constants.ProcessModel.Process, hookConfig, hookInterface); var hookProcessSuccessTimer = new Timer { Interval = 250 }; hookProcessSuccessTimer.Tick += (sender, args) => { - HookProcess.HookInterface.DisplayInGameText("FFXIVAPP -> [Hooked]"); + Constants.HookProcess.HookInterface.DisplayInGameText("FFXIVAPP :: [Hooked]"); hookProcessSuccessTimer.Stop(); hookProcessSuccessTimer.Dispose(); }; @@ -1039,13 +1037,13 @@ private static void HookInterfaceRemoteMessage(MessageReceivedEventArgs message) public static void UnHookDirectX() { - if (HookProcess == null) + if (Constants.HookProcess == null) { return; } - HookManager.RemoveHookedProcess(HookProcess.Process.Id); - HookProcess.HookInterface.Disconnect(); - HookProcess = null; + HookManager.RemoveHookedProcess(Constants.HookProcess.Process.Id); + Constants.HookProcess.HookInterface.Disconnect(); + Constants.HookProcess = null; } #region Declarations diff --git a/FFXIVAPP.Client/PluginHost.cs b/FFXIVAPP.Client/PluginHost.cs index a76dbdae..fbe315cf 100644 --- a/FFXIVAPP.Client/PluginHost.cs +++ b/FFXIVAPP.Client/PluginHost.cs @@ -254,7 +254,7 @@ public void PopupMessage(string pluginName, PopupContent popupContent) { return; } - var pluginInstance = App.Plugins.Loaded.Find(popupContent.PluginName); + var pluginInstance = App.Plugins.Loaded.Find(pluginName); if (pluginInstance == null) { return; @@ -269,6 +269,20 @@ public void PopupMessage(string pluginName, PopupContent popupContent) MessageBoxHelper.ShowMessageAsync(title, message, delegate { pluginInstance.Instance.PopupResult = MessageBoxResult.OK; }, cancelAction); } + public void DisplayInGameText(string pluginName, string message) + { + if (message == null) + { + return; + } + var pluginInstance = App.Plugins.Loaded.Find(pluginName); + if (pluginInstance == null) + { + return; + } + Constants.HookProcess?.HookInterface?.DisplayInGameText(String.Format("{0} :: {1}", pluginName, message)); + } + public event EventHandler NewConstantsEntity = delegate { }; public event EventHandler NewChatLogEntry = delegate { }; diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index 8518ca240a923cce45205fde3709f3b0e89d5ce1..397d38ec14944335ccc5a0b2616e91fe43096f49 100644 GIT binary patch delta 88287 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�%F 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 C`TH6G diff --git a/distribution/FFXIVAPP.Hooker.dll b/distribution/FFXIVAPP.Hooker.dll index 8e2aba3acdb3c1ad663a12c5580a99b00bbb5e23..072cf19e6121410acb596e56ee3918a1a9d7bb4f 100644 GIT binary patch delta 73 zcmV-P0Ji^t$OC}L1CWRUN|~{WY7GGyv-J(Lxe!Hju$j_5zd*YhRz6r&5dO2c$Al6B fN|}>B+8Pl2Ik^j#NJ2`bB88lA;2tBhXxf+wknbP3 delta 73 zcmV-P0Ji^t$OC}L1CWRUSCp}eY7GG!v-J(Lxe!=>yW?CzCPtB?r$c+TW45!n$Al6B fSCo@J+8Pks;oml-H3mU}n1g(V7{>;)Xxf+wx=$e# diff --git a/distribution/FFXIVAPP.IPluginInterface.dll b/distribution/FFXIVAPP.IPluginInterface.dll index 423702fc7afb6a093ec1600e1b8cbca7eeb5c2db..74a60bac0e92df8f6311852e1f7908ef2650cdb9 100644 GIT binary patch literal 13312 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 literal 13824 zcmeHN3ve6Pb-lX)NPrM2kosFc&@wIRLxhz0ksL}UMN$%NilRk|QexU72rMZ`AbGE_V>@+R*O~mrajTIgRuWI@D$Tg@r%fU`Q`zp+?q?d?P5O~qr>WB!E1gU{p3XGt zx%a(YEC@;&XQpkY<0WzSp8MXtd*6L;-@g6q`Q#JiAtEn+SFRAffIV*=g4c!_6j!Z& zsfwNpyk7f)(f4}o(BVWboXMsqveC(KESgHC^WiZooSjOA6RB|b-ofx>I&MWOD=Ti$ zt_OOE`V0@f*LY^XeYA^Y)&`9r(MD+eN_+Aa?8Eqt;ztw`*;H|}qKtvJQ}{v8n}}r(VLTy)WR}%qth)3Cp zP_SE~?3QV}fL%=l*r5T+PK1ITMiIAfmA1n$SJgy-9ePkHL@3zRD!Vn>4$W27M1WnD ztq`GLhtA~V)oVNCN7;!0JDeO!Awt1!gR*PTcIZ`AO$68>Z%QFT!LCu+ZPIoN>}n#w z4vAKFA{6XelwF&)TVz)g0d|XRg$M<^o0MI_tLCF-8MSzpcq*vR^C&d0 zc%FeA_Od)F_>y3`k2QDu;=VHag71E#iteeHtSF;rE1rPQ`XFm2f_sBy^u>Ai%qyew z^Uea_7W{?a!b;XO2<{Y&3f?35T;&%k%ji|XH$@Yyx(v-)!QQIYst4%~jM_4KtSVVm zMt>mq=fD~&pZ{ZM!t=RxE%WO*WxCDWiw5#vk4eoZGP9U44}3AZTbPf6!X6h^4n3Eh z5f-3D!oDXgNY@E_OIRhX7WPwN^XUd*SA&Ax9e1v{?U8^%hE$NM#V%cukU zv|{4LM<;a|dnu={YQ|p5>8xh##ZS*`#$Nn%PBD1trU1RE%h*eh{!ugb5~QDKw%@!J z=g4KvM$G}R4-|u!LpYbJY6;uJ(xUmaSTpuApH^%3ZSx3vbFF57VdlUZ6_XZK(@tH+ zu`Hl|&DhHVI-nW1XdxZaj9avj4l5>J7SVmWjJ+(Ohc#m_OXznsV=qhTOPaBlrF2R$ zczGNn>f5@Ey)38iYQ|oc(<_=C^n4lXm%r5Pi05grw-tkzmuV%vr_0#OYIOK|3I~Lqb_4FYbc@_ds#zmnl*Ue!MSv^X4}2*g6&oe zUOu2Yx>J|2m$fvm8GBhvY0d8PUctG4T(i%3y+%FFC z_Ko4p)~xbrU&7ezus;E7cGwSmIRjTg*)CMR3)bo|D!bQcbJ%jQEe_iXCYLX0E>sSH z;hHGhg~}sfA9vUc7%r5$?8&l6jBO4(3%1>1uY%p|upfeTIP5Z5r^BfH5zKRHyHL5X z{If=v!#*p

    ~UBKMc@^ziJ3zffL(dA+?)kSP&5!)0TEgZqu9<*F+SMaFGD-+%>_|n0Qc{?P7-oRqjq#pnc`k@Q2 zt-t81sjO7}_pYMLXC&lykERrIT_qTg^8{g$ifdrI_!(3o^*iQb*7|4;JxyimxX z-!Pf-;TJZ0HN6kwjzbp73z|Wb6@h#&?vl@8HTn0R2 z2B1G<){49i_=o0Jkxfb%kD0afIeNxiOJ4y-XprKb2<7N+fOpf6fL)@woxTov0o@3E zklq0=4hLf}?^_!5P5^1WyT`7CbL_QSg!=862A- z7#6G*>=5h}j0(;OJ|K8X@U-AL!SjL_1uqHyi}4iwv1yp>KP*@)*df>{I4T$woDqCL z@U-AL!SjL_1uqGbM`9KX3yuoT2%Zu=CrDm7x?qRksNgBVbAlHI$;UN21V;sD1WyTG z6r?ioCfFf3BX~;ioZv;laJhIB92J}q^ke<+@m66rz};E^H~h3bfZK4|5WsB)?GW5A zI1%7GtZBhV1V0~G49&BGFAKgIxDJ|s4d9lY-Vg9aK3IXfYFb{g9=NF@0^C`#31_^4 zRj~)FUmyO;5kmkN#5%ST(tO;lRf8?SG_?qtCD1H`WtGWS@$q*7^1R^GdByX#BZs{|cjQTL6%wO-zT{o!$iu#akf(!FCecH|yMT`c9|S%rcvA2y zf@cL^6g)5ZYVZ-$Pur1$5Z&x#!i3~O`#X@65Oo3#$&D#F^5agb4Eip)Tk|7VCVu6p z-;H00dVmJ97Jxp0KR@jR3(+pQ@2x~GP2`gEyBqru^#ToKwG#R&pr3BRK7{9cJQ8Y9 zVxkA;L*EB&i1y%TU`<{P{Q{t$`cW%Hdw~Y}X94t!fqoi5tq|P?G|*>@pkE5~(>|1k zXb@;%J-r0_3Tp*%$Ufd;LDg^Bg`GU$hKe;J|!Km%*#<`bg<8Jpyeb`#K~X4o0jBG^U^(6kC}MO}k#5^RTsi8+$* zT4S^s@|a*8b_Q8Mlg6nHI6+&1hfx>vG;ISOkuh=`Z^mWgedE6j zuNgFJ%w?F*)|wI1J0s6gXx-xH^%9uxq}3A;3~Fo!9fQWMbw<~^4r8~tUW<8vr-50v zKjuk+xAr~h_*Bx`PCIuV>>chL7>M)^B&Q}4soqrH%8o~4RwSNGQfDlm&i178iG0G! z?XxD+$EicLG?aoe!p${$Z>j}Am*N3Fc_)th3M>Fl(9B&8mRX7i4! z=-@>qF5g9Z<)kZ}%H^Y}d`^5%Yvti+zArri6^<#*8H#2n5DvFgYX*|hX-ljE4rTRNTr^t{}4ZR%<#ZIuY7crR_%#9om6J6J1A5u|YN^q)MB@ivPt9{8qb@8m@DgS#g(z4T3JT9i?0L40t zN;y`kw!K7E5-*@ z-08Q+G)Lqf+>)T#Ivyvpb?vhhB|&t#P7vkQtq_-PMZ3Fxi8J@PCC-Wz?5s%9?q(&< z+^3~DD^jqtB1OBKl{hP$(W>hT-0r$!O?wf&hC4Q&J+d+5TFD#@q%%_)(45fGq9`1Wap@GP*+u#a&{1|TF&upU&XD~mmQbE+~p;C zDK#v_W0%bi%hqR|E_R}`i)<6u#mN<$d$8N>ai2}DszqwstDczV>Q{SODwNG(lj2KL;V8xWInFOuxla}F;x6yxwG1wO#|s_m zsGRnxrnM-qV0Ple2#Z&G_Eq&jA{9>`&yk+)cBD`2vvO0(yqd*%R@7W3aThPT+VWbb zFCB{}ExGV(k+nN9GB9^e_v5(Y(-C@OSjcddZYvkdCNdnJ@UC=bI-8g{tYR3pvN^k? zKb=p+FeRUeS%vCDS*(k(D#2u(N?>XS6Ybf8Ba`1Wo4MoRXmxA zrlv~^2C}$kisefSobD+tLI=gI$!PXyX;Bx({#4c#yt*rh*ol!lv2mxkx5{M<8Bue(i!`#Wb}kcxk3=yknK=3 zmPn!ng;Lv{+%DlHbEQLv%Qey|OiQu=!^sJn!@x&_dQ*pSj|HQi6Pa|@)w4s>8E4el z38MWtjk1aH1h=*eO)CU}53s^=TfO4+1s4_XTh>&1!&Fo0L)Dr}PZ?-E zXoc;xrrNKZ)l>(xx0>p5@r5GgsHQrosxLAFHOm5AU!)2#5YZ0{RmvtJsiUvtqpy^s zuf)+;^3hkSqFOGhm7-b{)pAj-Dyrk6Iw`6{Q5_f6siJjUv`&iFp=cc!t#ifK;KbKZ zh_AtpuOVQ^*TC+oYMNB5Ta20;9I4)s<~dTcBl#Vv(UCSf(h5fkJJM1|TIfh2B#aNL zcJ*pEPwkr3j$=lZMz!0hb}Q5_taeM)ZlT(R{7v86GW=|7e+zO{y_IuRy;Zt*n^{$* z4$TtAQ59#gQ?j^)hm^^@2f2g+XGp5mqZ+c?X%JVb5`XuWvDcZ0SmTEy!^;nqSXndk zBv|*G2k!hMf6&qn>xR;Y*_ygNCXWIz@b;#HE9;4mE5Oc1psi zy9$pQuX;ctcX3!fr3yQbsqiI}JP%u7P}SgcDxQe(B+!=_w}|k(_XcNf4!`_NcvE9z zTetzcrk3!&>1Zl^Ad$>r9*~-i@wP3^(O6?c(^$NnI5ijWrh^$VM~$>6Ei%7&@HAa>tlC88K!)b&VM~Voxx0%)lGN z_A{f6VLQA085jOGhV=zxTgsZsXQRoD;en~KWFm&gI78{9R%+W=TU)dx*3#Ovb#t@T zxMk}iW5^5*9!+H63DX!7g*i}?=X{gOO(qL-)rZ?kZANYn7 zwGz-z%;Bj|>NMgliTZ2C8xG_EZ;$x>O&9!4;t%%~@WLO5?!@0gL^6!`8Uy$X?@TZmQwQEh*}gIo?=-R#6~7$oAWg$I4i7PDg$20}Y+S4fZ-O`$ zI}6>==1`N{lqqWS?ARiR#vL8!Z|>M^-@_7l4xa5iZo*fOjrg_T?NA%u{Y3CCsF^l_ zsV|&HvdSMu1nT$M!4~2H7TVP%^5oF89IzW z%(Oj2hk3(#poZyEcbKIFT!NfS>c6b;+SwX6Z_R<^tag_>%s|Wn#H`z0?ywn5<%;aL z5My9qWQgqFURTJzgOSsi!3+p38O*oa7qf3i;!poy!fua{p8imgao2XnGWP$B0DI*+ ARsaA1 delta 169 zcmZqpAlvXkc0vbJh2qAp5HY4h!J8k5Rfq~yxp~fP@7?CJ;q!Ezi`JXpHfQLxXXr2j zG1K-89p(+|naUNXOWk3X64?D#>x4kZGmja1o>PR}*&nsL++hY{79eKb?sA9CU@F(4 zU<)w@21bTM!Q1N!*>^B<8Zj6$m;j;CcKc%X?MVFT|4Z2I5z^BiDl+cc&RE9&pAi7# Cr8>_5 From 7a5619a5c3de74222d4305cf6e629d6adad92394 Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Wed, 29 Jul 2015 21:17:10 -0700 Subject: [PATCH 10/21] new hook --- distribution/FFXIVAPP.Client.exe | Bin 1848320 -> 1848320 bytes distribution/FFXIVAPP.Hooker.dll | Bin 58368 -> 58368 bytes distribution/FFXIVAPP.Updater.exe | Bin 489472 -> 489472 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index 397d38ec14944335ccc5a0b2616e91fe43096f49..7cfcf3df90459ba7d2a1750753723a39ac4d3952 100644 GIT binary patch delta 374 zcmZp8QPA+BU_uAewk3^StzC>;yO<8BFeOiI_fciq?xV`AVIh#N@Qr70zqiv|5$Z>FQIk3tkG)wH@00zW#sU8U_0Tzpc|4J+udv(V9%nx7u zt)bneM*@f?fmmw0OOJHMRIcQy7Gewx%nZp>w{KIFna9X(!C=H-!eG2TT3Kc-oHw0c ORmKr66|O3?k`Dl&iG&aU delta 348 zcmZp8QPA+BU_uAe@>z{ttzC>;yO<8BFhx&j_fciq?xV`AVIi=kN~mz*Dj&aAiM~av zEv2q+Z;54I9Kmd6X*yldUP5E~Ryzs9_U3KOK+FQftU$~L#Oy%K0mPg@%mu{UK+FTg zygb=jkOOJalJg|0R>&fp9?JhkMKr9Kw zQrlg6q%)>+MNhC0V_;xrh@P;0o1)A-Ms_m>O9oR0)9um9GHcHMlPj&P}PRhgB1 E0ITzSYybcN diff --git a/distribution/FFXIVAPP.Hooker.dll b/distribution/FFXIVAPP.Hooker.dll index 072cf19e6121410acb596e56ee3918a1a9d7bb4f..ef0c7b6ca0a4ceccf1a688ad97add54fea90606c 100644 GIT binary patch delta 66 zcmV-I0KNZ!$OC}L1CWRUw4||$9>)-SZu;ACp+iB01S-Yy5)d}CxW|MN0<@%)KH3@( YlRGcjNN^5Jv$Fwlt$$0$vuN6w3GU$?*#H0l delta 66 zcmV-I0KNZ!$OC}L1CWRUN|~{W9>)+xbFi7xJ-aKH3@( Y{5iP`mPkTMr6Pr#aNr&zvuN6w3Cs%|>i_@% diff --git a/distribution/FFXIVAPP.Updater.exe b/distribution/FFXIVAPP.Updater.exe index 61cd206029bf92a0d6df0b517c7ee7d9692da043..5574a2fb53f3f95d5781f10972c0d90ba417caf4 100644 GIT binary patch delta 163 zcmZqpAlvXkc0vbJ@Z61EA!1DHCvJWqRv{|Tw`^W(mg+*^898?kK6>Zm(43*uo}t4C z#7x^WbeK1+X9}7-UFr_Al)(R~AMU-qvdv?EVvFutZTrXVE_axLm<5Pgx4Yb7GnmS? zexijK0|O(&`ia}?3fXrtvYRs)F<3H~ZnrOH-wEeU|6juH2$P!rP?2%hcE&RH|BL`2 CwLUQb delta 163 zcmZqpAlvXkc0vc!;u#yeLd2LN`!_!js}L3V>vdSMu1nT$M!4~2H7TVP%^5oF89IzW z%(Oj2hk3(#poZyEcbKIFT!NfS>c6b;+SwX6Z_R<^tag_>%s|Wn#H`z0?ywn5<%;aL z5My9qWQgqFURTJzi;>-o!HmI@!F;=YG5bz9Z~Ffdc1M`h^oNR!yS6iyvHxcT06(BP Ay#N3J From 05bd9959adccbad94c411ce6855a03b35e1ebf78 Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Thu, 30 Jul 2015 12:20:32 -0700 Subject: [PATCH 11/21] new hook dll --- distribution/FFXIVAPP.Client.exe | Bin 1848320 -> 1848320 bytes distribution/FFXIVAPP.Hooker.dll | Bin 58368 -> 35840 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/distribution/FFXIVAPP.Client.exe b/distribution/FFXIVAPP.Client.exe index 7cfcf3df90459ba7d2a1750753723a39ac4d3952..79c4284de21c85d3c1a7ab48c5e1eb1e9cf8cea6 100644 GIT binary patch delta 415 zcmZp8QPA+BU_u9TkHfCU?$&O`t=&v}Rah*=`mEZ0RGGH>s4{C<2yk^|@oTU!dG6l+ zX4lRm&PCf>Vwo32uv_XGnpj#`PA}w>P@2BMPQt9cc^fkjvj8zG5VHX>I}mdKF((jn z0Wmia^8hg~5c2^sKM)H5u^2}uFf%X9wKEzNPA zbKvCZ89S|#+g*AjfLIcUrMA2DNM}st?z6HKV_;xr0MgsHE6Pk~3 ZgYD7EGRx7#rt_=HSfeQmSCv`G2LOlZidFys delta 415 zcmZp8QPA+BU_uA;wk10oyIZ>%w{|n_RbjCZOP<>9qsp}1N0nK_LLgn?8_(W;Z>PB; z+|TZO^M16wC6;+X1iOWvv4xR|(ey$-38m>9>?F+Eo3}9oF$)m00x=s9vjZ^)5OV@C z7Z7s;F%J;)0x=&D^8>K}5DNma5D*Iku?P^00z(3D`^{((ngx*>}A zcA)+IiYP+UK}x3smAY;>N|3lEiA%D+N+OQ~mt;b-#10Nn=uDUHk&qN%u{ijz#B#A$ zXS~n+@WtO6+Fg1ifLIcUrMA2DNM}stPM&HZ#=yYL0Hn8XSCpB~$ZNr%$6(B0!C=H- a!eG2TT3Kc}n%H!HRT*nEW#OtaEBOHMhl_3i diff --git a/distribution/FFXIVAPP.Hooker.dll b/distribution/FFXIVAPP.Hooker.dll index ef0c7b6ca0a4ceccf1a688ad97add54fea90606c..a7c77280e2903ff765794877fab8ca489756ed15 100644 GIT binary patch literal 35840 zcmeHwdwf*Ywf{Q%OwK$KLT2&~0VWV|3?T+V1r#MDJR+|^!b8P|A(_CG$xNJ?Kq5wy zN)>z2s-zkYsy z{64?mZ(zP>ueJAHd+oLNUi)#*nXJ9|Mly-Wh3|Xs5j}=0f0hcqKMW(faQfqg^oaMH zHIErB5&dolks(~7Z+s@(Cv4XHUKXqJ1d6s)sFKK6_qf^z$~AYESwBUE@(__| zkyup2N>m|9=t`!`hd5as(Ue9HeHkU7e7_1!K>|}J8$z;rD~0Z0U7n|Ti6xvhZwSri zQtAq1ah0omOqE@a`WPW_<_w{CyIz=#+J&Y`RncBxi+%>D*bysK>Qk<|-URKA}a35=94xy5$h#`IMLfU#4Sry1V zrBRXJwwx*x6P<9Y5Lmv~P;E&M6Oh+SZca8$SELSC5qPFb=Ci7^k)aMmI76JRl4zqo zGjtk96*uP5O5}$u+kUAK`1$VglGN!41PzRavJ{H+CFTHBnHeB=svf~1v1b|SE;Q?JOsPCbn`1$2z8k=1Q{;1k1>JzS*dvtG%LB#pgvdPObIXJ zaA-cl`2i!@0V=crgtV?CNu34KXH_Q7#??xl11t+I1WLbiQwcXObda8)-nGiPoJELF zEC%Sp%adCnxZLg$p>q*&@B?VRyAsQhT9u_Retbi)8A`Xq9csemwK@a6h-f2)zd$p&KNEeQX8)Z` z9vKS!{ofQZxtl(b%K+UPdLG1SMsGyI4}8TCT#iL zVlcnQ@4h&A0M?mTsg@=r0@_rj<0^PH;0((*Xrr0>3*%Hru=>@ zn{x5m_uhN2%;&IRTVH*JWA0m>@}~I~9zcUQVkA|mlj>zB)l}b{h*R$9B$HjX;?=%6 z%WOSIr&#NxnBtogw5ug4ik)Jvby8ILtcv-?O7l}YVB#U}2Xkg=PG#~dNa?hxbr23x z>86C$PPFJQWhU-MJ{?Zni(on8LdBUuVCH2-_i~0ANnK7fa%#tbRR?lTX*3A#NIr8)gKxqIN(a)`5LaiH1UKNTKXGF6?A-h(c(CcQ zLo|CfP3G}9O?ysE6CuoYmh_vt2d~5&=$bn%xdg^}0j?)!K1^+Z>|u_VM0HhHV)kN( zKP=bHDzp&^luR)e9P;Uq%F_WFM^6V503+ZqB(NfREy_|nXIY_kNT`D(p3+r$XfAlF zjHd&U1hus!2|yCurDjL~4ER6IkO1Zklb{AKhx}?E77{L>mG3q~@TR^ryre2nS1{M( z4#A{ze3pCuk724)=G*+=%!i2&<)IR}IYtv_cKB|nNrPks}?S$&tYj9DxLQ6` zk6o4zXHULNJK6HNaWe8}X!&e^pJgWIWeR8-UBD}KdTdRnqBBOzhtIOx#g@;FF;+g? zo8@B-VOIcE&#l0C`IoB{H1!Q(?cs7(6L3XX4Dk@G!~B}Njts$xSns=z{Gi&0Wv^?l z->k=Sa~ovL#$uaUbz{Z?Tt#jlv&Rr~-+v5c^W~1A_sggICf4A&<=K6cx$obnv-xuS z^tgN*)jrmt9%}`@N+&{xE*F#8yAxjtJkmbST3?{Ax~<^bw7FqDIE}H^V-~wI+bMRU z4d4_n#bs>!BrrDKzkT4@=CC+kR7(JidWRta-chj_Tjyl*$Kq5!0M+e0xh4v^d4uYkzBlw4 zl#=L1_(X}j-g3(t@HOo2EFGd$1aXs8@>-`@Z>HE&7MJQlo>{@5Ni?)mf?H9wpON=aue)hObjx2--aw>FBco*e6|$7Bc+$6d{Lwz=o^9! zu_e<*6*-9#oam?|igTjHBANBC->Q;tk5zHd$%hiH)Dg)C5x$|bv%-V>;WM3d5Nf3! zkaT^V?i`WNrHrbIFtSzI$GVP6AdH*@qTw>NkINmEP#8H0xxi5ggpo~=drbhR%bgDuk|V&6;b@o|6~43wNTcNOtk~3VjkR zS2Dtx*CElOClRAU2f^iyvsJ%Zg+9ha5-@{k_=0m59;?vQOzPrnn7Rie}cLFTYHawS7(c0EAD14XzwOUhK_7gSgH%Lzm-% znV)SqH=vRq&)C%pq2F1`($>NNvrbGdP##&x+hy59Yac|IiO(ZN9jt-XDp4tgmN;d* z={9f*ow5sXQo&{W%+M9Mz%NPJ)pnO0VqvblLRVp4p_RA~LVXac_FcdV7ASY}W!6yC zSusg@bJRHpW0X^sZyn;xspUE8E|PSwS#?G=>%5rC+O*CJ;aQ!84$uDCqHA!S4E?pW z9F41#9&J}oX?UD@Sp3S|l)?$!yQNE!FF@0ahDM-SfRZzjYzPAz;j+-xxDH_~GcojG zxt0&1>wqpFy4L1nM1!sxy3VFQBG(`eHE8Ic5VlfqMm}*}m=3w6Fs4|y?a+-s=nhN4 zMJMM==z649`<5YiQ3&e$Wb@i+)Y-{)!*5*Pa`CuiyDu5SDjQyt^AB-$G$#w>oiWEC z-|w0(sk=osBXBx6RDA(U#wl`s8~P}6eU{0g8xi7Vja)xs?<~!s7MAE5TF#feA#@lN z1;-=X%vGT3KCSlgwO%xp)cYjyK296DiM4Xlt+dmX4{=C^;QXw_%}7yxJ)D}6fWx-e zu&@Bk!JPm_H;pRr^R6SSmx*jb{n2Y?W zTam;Ug6opaP&aQ@QkX8RVwd0LO?(3U#O;8gcTg5{s+jmo4k4#xLx0WXe3EnB!3qBc zwuLngCODs*#AWtVw^)f!gNbIheQ60@)T`$`){prmr>^5?khLJUk{)Dm>RC1|ThG(q z-&ThqXLha}M<2GABj?K0ok%v!))sROU&tZhtwspv;EHNcPAQKmedrLn3pp?XLjR2G z&>Ez|ZU7@kdd6DL#EWnVpjWMP7!m+uy~B_I%ZJmXGLiowNU5JQssOc*OSmX>HwxRW zLKut|Pko@Xw%2DH?oB!FF7I~a5Gl^hWdF`-##(Q?tP?(_D_ z3F|Y|7{k%RL8)Bz>Iiw6nSgWT>Y;vlG*hg}t2DMynM%OZSjpwk(hU6z%$hyR&aM-u zPj}9*O?n#n%h5l~MPKGtksSaZSNh7%N3%JMBVhREl%rqX$1-mQ*xu!H2!ee-E^|+w zD8wvKRshYoWqhyMC-b&cEu_E^@<2|`UyjXbXL%55?5d4#{AScte1iZCVl05dut@Dn zUQTg%7gdhvFwrMz+EHC^v+nrvmno zJuB7-4hzG)@Cz=Cd8sS!lZG83~o4dy!z!vk9h z%yr^nr45(0Ux<4`2CFOgMfWUdXl$6@IDZ}wT-;fR0so9_GqEt}KAos>7Q*f6WHi1L zql4(sI-)fm@HVy6Np!s;@Mf;u)QUNSeg~R`&RiBtWX2uLwB@QVP4`Yl++U3O>>RlC zEAWMAg5xE)ae5A4h$U2p&{7n}SK-TPVGjxC;W`Q5Y51OpuM1yJgChB!h@`dbtJ}UZ zpXd#~jfIazpP9U1ibcU9#w!Z!e5tJw0$yTlc2kZ!(Wl`D}pacnj?j! zEJ4sC{NEO~`z<XUid(*MW3GDUuw|-Z-1$edP;^&i}DH=Oev&qPuo*v z(PzsgcIIs4JzC1)Cu_Z>0XnDV(PE3fTKxNJi%M%|`@!))T6`7ln}K$wCn|PAzAul{ zUr~MxdCO~A&reh{=lmir_g+XVq=v%7l@@iPjuur{c0lK^mp@-tNX?UGl@!vAg|kYa zn`n5vfb)JP$XFX-93;lyPi8Ed)L&XgAE>zxR=Szm%`!U2xDU-(=3zWz8sjT77^lv> zkE-ai!IxAO{lxo{Dx)`o%s(CcGWyqYmf$aE>kUn2e13ZAlmOKibA8|P^_TvTmSEPl zXr964HsZel6ouC6Q?s-6>Yho5Hp|w}kPMN|yf#vBP&HSFMZl?yh3~ z8)b}Zh4U$C$3IjZ^OsRmKG!r>&35?Y^p}){#}eAjDyk~r@UNhM70s+-`+SwyKHr$c zHpzp{tH@Q#oEN9Fgg_bNrL~Mf!46o`qHjqXeXW@7c3LUdcT?4De<3ycxRrlh%k}+w z?afoUuRpDG#s8 zjS_mOimAz{EBk@Vru=9MQ#E7+i|D@Ux2>Z{H%q8O|J&ADtmEd8QG>)aZ(C1d71Aiw zZ-SayAk=I-ZlUCx<7O$P80`iYO@FUtYAUS*g{L#h-nKqPLApp%4oi7;Od)Q2KF7_K z*}sTBL$?NY(R@&BiLY3<2G-J2x=g4z;W>;c*f!Z`RaX1D~R;^v^;q7wQF@@(Fbk)L~Tpe&i$iC8#{)JKsn2DNskq z1ocNavM1>soBFOzJs@#AZ0cd5?zE{d3U#$j9VG?Je;?E9T1a^kT3_ocgy8F3Pg(}~ ztBwIzx}ULXsK$B@*lT?QoUM5ryRYa4;FMV}0r!@0$~ObA08>bB(9Ym%z}-bBEk8X_ z`cvTN^WOw#i^cNY)~^wMBkyfstw>vvSE-zG_XYk4{?E)m1N%hI(=O#UDCo6-i5Whi z)==}AV_C1MO0{|T-^$;%HV;2Fo$>R;_v)n3491 zztFvTcxxGBuY^yp;_&a>h0tNK6>x7DK8kWT3?Bv>bX##b`1^{3z`Wwqf!mAE1gfyKCsN zO18`nk#Kf#hr5_csxJb*QWJLj>9LxNkau6rNu=3tvE;0^Ysrn4a?!7=cOy-uzaRLj z$t9-qxV`Sp;})5mHwgZxtRb<$2x{8x-Vc1ch;eoS<7Z14*OW3wrZ6rr7(LS%zw2Qv zlklG<_PsLZoKeO2wB&kC@W@o=%n35SA^7tO4$qt}DMij-%Q^fT!9V45_$9%o1@kJI z^LxqlXUTO?w7pXBO-VD`hW{Q-XFZiTz?h%|Sc}oNriu~(D=PLwn z5xl>KB_9?%QOx1*2rd?B^8~N(GJjCeEz`=O)1s!CQrYrQkb)Cj~16-y@d4UCM0}td(3vg0D)6-x54u zIGuuRf;}Q(o#1nV4+;Jck@;=G|CHMOLhyv(1-1J#{rOKcWfd!x6DbzEdNT^i>LWX)68qUNjmFODJ z-kFcNJv7IrcDt%@gg0NP5zpnWQmi4)6H06CrL98ULR$--bbIN88S3BN1+-r%uEPuN z$>fnO=r#0}@)z6zYOCe)M(E`LR?BpoO?@Ts19vHvoTlR@yDY4u7TVMwV8Jq4VN>(y zq`QogHnjsQoeCPZsRE&1(v(=Df?gBqWAw813pejea8rVA34Yr9TX&^ReJuFIj6b+} zO~i2@3m%&BS9f)Wx_8Dea;OWj>p$x@u}%u)H~XHxF=uJ)Xj zp?bUb0M*QK6w>324DH>mT7pZ4Ki?)G+h zme6*asswdD-DXoWW<)&~&;(QManI71u}9mACmy-B&k$R8D>Vu= zLSA^Hi)foo{bc%`o{MO^bmkE%DL&%4gkH0$BgGGTw$UBZwMQsXe9W_h*5LGs+x=ki zw>>-QO`F7Y%Gs9(Zr+V|)_(Mz}MIMh9? zdg+*^Jbx_yk?N!8a^m{vmrh*Zx1JRJUQ<+q+NNmAIjq?=^e%jID$|pfN?eP?-9q~^{^r?3uLz~rr1Xg&>1$xK5~E-+SGFYFFk`a ztSPbQAU!A4e(5iRv~V%kL654-X_ruMc>i2P-pi@arc8exs6m^`$Lzb0Mr^9meS>Eo zeMG2dyxi-qpqqr+?>X)Zc&?yN*wo9ua!_~K)MYB)J4E-{)SxN?^#z-{XJ(oAO8T-* zeQD+tP|w&Ddp_KAl+Uwy+;^{{A4{Ab9oabU$yd>vI-k`2Dyle_Gw!DbZxQ0Q3Z=*G zFm2-_I>h~WT8(#vcH7hi)u(x{rhyFA;QcT?BGd>ihnG5F_m}+1^7LYMXbR_YRxV zvl9;Y@zJx|w>`McV^cleP2RgQ)Hd%<@4wiT&UYjex7&Nf^SKPw<4t<+&rn<*PKohx z^n552x7&Nn^Z5+b;~nxonxQz~Q#Pf``${HmxA%vh;~A>Qd$af7G8F6i@1w@p^N2I( zNNnIe+EU0aybeqM*n56T91S94^bC z6BV5DL^X#W$HA^ay~w4*ivE2D1*HO-lN$y{>vOG0K32xLG-o`1b~=~x3z2`Wms2t- zIurVv#IXk559x-4os=A_P8q9pW}HaQcpXl~iRH6|Cg@<=cF-KHC)W;VJUMlINo@5M zLEUzzlB_kw)err#=UtvNd7R1fQOteDHaw8}w6t3<;qfiCJtnmo#b&2j1~nsCZf zrO|Q}wWE)jbPm?`4yOqmgSbQkrzR{R1vGJLGBM`|h&3n|bL*nRxiuOet2x@Xy1q&2 z3Dcz~zk_lWJtei);TW_vZH~65&YLSaw|Bjt9sWDE(rMh%Gd-v5d%6_1-gtXzj!Puu z*%COVnxKbk%j*_@|FQ6X^>SMCR6T?xyH8mcU3#`BU@S>!npyI0Xe-R0;IqS@~5}MOd0KE)r}KY!%!fc#&WjSV~a|UnV#x zcpb2cZUXYX0^U_WEa7@dcgUz( zMjO;I?^a-OZJ26|JAFGTtkz*25LNT1Uq+Xy-%u zH{5wAf&KnB$SXQ~jmJy)oO)H&f6%L{rQ~n)7Sel-%hY{ElZ|)it7e(;HeyTZ9W^Id zWpF7~2JW9=SNW>yD4Av$=9}fSj61Ogwou~r(-s?E^QYw(0Hd|bfc-$f$ui%9oK?Wv zYtT~WGr{$c^O5{bMvZX@b~xS8)`-?#V!WeHOs_I3&EJ~qjSbKniq}J%`Z&<4@vV59*|^f92IHL z8UpC%SgDSKQ>~iJ=PS=p1=Q@FuU?ci@7P$0lX<=1O zb6hD^E8%*<1%l@ZZZO$0Ve<^vCsfqj6a2I~VpPuf7d2=ms~!P<+d2yVs;Z~d>qbrB zMc{SV!5%k06#O3K^BVnCgny$JNVrz;Ji&TFL$Owd+JZBr5y<}{2dmc= zE)N}`)xd+)2E36r0T0o|z}u)3cn5U@4^tF)H^qUENvF4*>5q9s=HPd;$27u^hY3M~p8a{FreR_=NEU@R;!x;4{Y4 zz~_vw0>5EA2YkW!I`AdqTfkS07lE%CF9A;)-v|E8_yO=u<43?>87G0iGkyyEgYgFN z&&FH8zZt&*lKL&srTzoxQGWy$s6PXX)L(%m>Rn)kGV;(e$^{H6H?UUufFU&rSg(qJ zjj9;9K$QU(s!HH_sv5XdO$WB98NgL)7H|#Tt;Q*Yngi@m4Zy8x9&npl0Nk$50d}j! zz+GwyFs7CQ`&2V9tyTaBR4ecbwFWq>)&uvejlctH6Y!wg3cOKW0z9NX0K83wfp@5G z;9<2Bc(?i>@LtsmykGSJA5tmcBWe%uF*OK$LR|qormg}$qdo+DPJI~o4Rrwcg8C=m zOX>#TE9xfTYw8g2q`DROGj%)gP4y|@uhe1S@6~JVx#{Z*zI+ zA#(-r5py;0F|!T$gt-ZLOz;`=VuYVFJAvOYyMZs5QQ%8v9QcY^V0q~^(+@mpmRYCK z)fmwYluv*4HsD^i%hy0tXeMwb)dS~H6L7xZxwI1DX5p`FdB0 zz2dtQ&*86j9l^6NGkwP-d|dE(;k+(k)A%IP%ryR)X5`N_J||($wcTJG7CbCiqnOhq z7#186yi@R`Aeo#dDA*(z790^gF8I2j>H0V7%AYCNEZ8M@wcs%q%Q-1Xc_LFVEI2GU zB6wKvnBYmlu*KB#%fFTq?L-u-o%xq`%Y4vBw2p7bKsg7hEd1U2sJ3 zPQl}XuL}<6OSyu_1WyVM7YJW)X%UCF3l0k&7Ca_+QiuJV=A>XSz~QBW+XaUO4+|a> zTtr{Cmf-8bT6GFSH`3S0Wz-o7;}+v?;~C=>%WSY7!D@bUb|fqP~g13p^z3~*K1 z^T68_r}?(|E#Q1F$8OL64)97Jhqu&xANWr3kAPn;{t57@nVddXPOJY-a032c0i&XW z&iks5OSwb64Sam&pMbiQY)TKEkGdAo1wj6t4ik5kmclwkI9qpt!*{Mc_<0X_Icf$f z*uV`=8@{|l@PJbQ+ZcGN%nNEGtW|`Oibnux2Ga7geUlJd3sktP!PY+wsPI;_AK}x1 zit6DD3>;?{Biw*{PzId=RCs2k9N{HEg*8nj!j}RS-u#$?a3@ev7c8%+o2G*k0V?Vz zJSl+F$eF+o@zXQ#Ii^HAkIVAcdz=&IRXgAkH?RyFvE=`5EJxu*@C6 z0DTFFUSrIpZrM& z^LRYy&l1;t5*W?HPZ!u9)`nkZo{m}vFpXL%1F8`IuMB= zad#xyoQS8=;dpu(wV#5I^qV6|{FcuI877Wc+02DFN^p3^<`pcTFB2Cp(G#d8=_e{h zGE5vXaS5%bs9-B=G?5_5Fmc4rNV-$Ec~kQmmfITdiuI?^6Ks0Y zbjlb;Rup}(VPzy9Ng}GJKi);r_`1m6wj|zSwNqk5rK7!(hK-TlL>dn-H#G0UPj5wH zsfO0RF0o8&w_G?=B$Wci*2_}RxVb->jKtGfUT0q>ac44eS$_lrx|=p)C{uen(KqoZ zN7N}j05x@Ueq;~#L|Wr}61yX7p-gyZWMiZY#zhRqY$S=FvD(ey6pvg4qE3LD7(S)z zvVOQ6U4*=AIY{nOW2o?e9fuZK*&pqu^U(j!-`&}{EZnslEwLgRiGgW%#_6RHHtG0?HQ`jcIoy}-PewY>S;i-@b9M~&O%Un$D-8J*dgS=rE&a(b_to(+ zb{)q@!0>&s@ZbszmGO}s_<6MP+_n91wd2{gr123fvwz*zQIY+0__qz zmn8;-!L`v{Q%DwUj}2*5CoGn52=+PRejT6YIGxeVmdK9&olc%!?fuv=Q4K`)PYYd=ZLB0HmTJG`fZ7dl+cHPM~B(#zvQwzA5Jl!RA>Q@hemBGdtE zoK@j?H!|5X1&?u?12Ift!s@j-%lDv7wuGZ;Cl3q-b&$Iq9t{`A7c6Rz_V$5>{!Lvx zuWUp?BttZZ7W1J4X+6mH1~#SJklkZ@dJvg8@j8r1T7h0B0p_fT#xxP@)A=$nJfwu^ zWRqda%fzg}@=yp=P_9j>RHS!DY*2`}l)+EZT?B z0Rr7LOQ7A_yD($xX465m?T#o|nI704?PkN19x4(PQ|V42G*8lYXA#=&FcQ`l#sW2+ zOvHqPipq5(#s<8W9uWO8cKA}EW;>jWq-1D0v>xrv{W~J;EjhL3Y)-_ms&;tV(>Rn) z;ZR(%ofUR)g1SRSmWA76^k^C*YF#4P z8;-3@G+_<7heg`!moc1NvM(9cMcb=ETi3R5ERtpcnPuXb2zFc;qe)q&qNwhsG~S}y zfytV9Rg^>VI+hc#r_QoB#o@)HJyG^qqhrKj?u;bYCE}YfMNSmSnX;nB7&99I9XCf) z(NT#VpU@Fa=gP>ilh_3IhLgLqQuO*=y6N6TZiJJEeU-gP%I3o2q93Lm#5$uln&Jgi zHqOb2q1+SQX|JNjM`On8N=Ey5iIt7q6z>hk(Yd-;U|+ydZ3$T$WK-ytk(C+7V0b`6 zscgJcI^1%1e^+{ZM028VFv;^wHmWTQ$Jvxjh6l4eM-G=4j^{+!Gmh}n(H+qk%#h92 z-rvWrAeE^IH?U)^Y%S6wq(O%#+B}ZlI?A@dQ4<3?5!=IliFXF# zD%-I*%ot;4D2db6kRU1< zj!6g_+o4VIi6qE`Gf{*+&rA@Nou(#^%*;>{y*!*6l)x@FOh*{MS+zEtOzjHCxF?}K z;g1o9$Ipf{bBgrW_3#QjN+{t3?9&Km_%`6w278b`7UP^~^!6pUB52D>C3!^LV{jiQ zIeSTzN+jD7DX|~1pMwMCj))G*xoj8L6ytMn8Fi6v?D4Qo=h)Ub??e$=ftJsWu(M$^ zw=SXgNqR$;&FVPoEGLRRP%=w4C3j*8A5UjF+&DQ)3EmK5xb5aGG1(gew!EXWgfEUH z6Vx7yMEcm`E5p6L;f+{)a^158AAiRCB}MLjeFcsVIpH{-9GBWHn{%|yCFGLGnoDYD zs@qqexMw?oO=sHQrdvn(2y9_@!?1gBVvwX|@L$P69gnF4y$z0FR0?cTI3bkEPHeW) za#XFSx=|g}W^s?>RR$koV7P^`h7~8^gq@z%DkmU4QACe%GH{EsNRj=xZu%t8OjuXw zb4}D^U@#|w57XFfjN;o}me*Anz72Xkh{Dj|KweX0+C{ZxRIfv?-xIMHkz8wM#{=t( zSz_WBp=GH_aLx8iEe;y1v@Sk0O6^M6-dQ_JTAober|ozTg3Sd642!q#+hF%Y4P6@L z0@ux3BI=g&qqcMswg}@aB+bF59VurZ;@oCu9CwWA<`6iCsY=B^H<}AepXQDuC?${B->;pwp zNE_{*->sKXPKV3J>3+5%7T%en?!EeIpO0WI8bR0XmcatIml`#Cgu!PI_6W(Q;sx|L zCYA^BwB!l1q@BD_h<5ExNyRdqFSD3$;N?>)a}1H0KNqb}cJm4;8>K6@$f?<>;+GGM zOEIQLIXy6Qrw1FAK3T$K)N>q6Lo<$Vd!@bC*}XlZVG3h2p2nO$K38_Dnu*J~A(frA z*2^p=;&ttCk3lGDEKF;%Tf`j=<;)?})SphYz{V&PJ`6WOSgkm2;luX0 zbta6KgnipcA3*675PQlS#o~I(d}$|vv{Cd%K9^&Q%DFWgNe8l1>#7J_Q&iZZgRQBv z7c7gWsWaIh=Yv=3+{>8g>ukmGSF}rqmk-$CPZJ(y zEIo(f$QE4>cEOaz>m+!pJyG1cmGDjsd;1&=%OUBcIi|B+4Nc^Ku$7AUhhtJ-aW$N8 zl$+s47ShQ@eO$m%VSPK+slRh$B*!FZ0Q5D!hbGoS(F22gw>Fby)Xmxqx0Rh2m(XQj zxy9Bc_Hu17xa|9Odg;t{AJ0Qav7_V7z1`ezD1{R#*ed1hN0txRU44QZWtq4MZdHB+=bx!0CJ7NPEk=Q(8dov>=%rt!siUU>B6zjWP|E z8^`VD&>aam&(lvjpkUhD^!y-mEF! zy&~KjjSb=$2CEtLGpxOB+sX}2QBsa(_i$?ZLIP=h>eOeEHH=%#v=HKSA!raju7@6cu|Qf+m};94@yWP zRj*t*eK%5YNh}MBdE*H8f=B*7Nt4D;W7!;Y9nrbDdUIuhVkE8kSRGptzZgGt)ks4u zyQxWP*)RGHKrdZ;Erm7a=3(u)k-G5MA{&q;1Z^3#qy?p=5Xbi7T59XztORL#B!4eL zWA)G)&>Wqc>xBg{@^h{P@^QoK=1DWbO?8ak}na)|PIrCtn46i)P>%_yB8Ga^h4lk2-9v=V9;SYa&6DpX3 z5&Q6u&B_(w=3*nTVcB%^K?SA9C&eUe)_QPsGmKB!LTm6ZJ6>=qiO#`Yh$ZuQNyC(E z+8~|=4MHZD!&31a5u0^M6Exz^qPv~ef}1V@KBt;Uzj;!zc|?o;(cJ%Nx!frKc)56v z`ka46W4!#|{ExO?&R|)z9PR83DcvSKc)5+DXtfxS+h-MQ&z>nKXX^_5BFI*_lFfMP zxefmsGO2i&Hh{x&c>r_2isH(x%R?q5Ety2CbC~ce1U&e8;PP+|OKR=xdcjG74r1u= z5Q`yJyE}FP+>gT2k6=X%o6)(+ujOi;=Wz+8EzsDhON;bu*svR!P&?%0t+rQAM? zF?De32hp3_FhS7;r%KPQv&-&>JTp7EVR+0Sd^-Yu zKa+(FO6aD%pfU;zEsh(0SS}-ZczE5YMi!6DtqKc^iVRm^Q&FLRWENhO@Q>8Ed`93r z{8naQ-wWduTw%{-cfP+xRq)5- zQGqa+%A>3bR0v$1@j9sDEAmNgPv?ljLO0|VvIV%_)gHGQSit}A_C#R#Mg6~^$S|i- z(KNhhG7Yay8G!|ytdajQ)yULB{>Ripyr-eb;B=N2ZrAY4F6hLo2BgYjNf1ClY zdiqD6XZR)q-thE~yexeP1&$a{1HGXb@5gX^R-n(rqFYfv(<;V`GA8OPwU;jOI#+$F z$Lm&N3-liJ!0IBU8^KfT&eJv;J~TCOsV8u0VEB-2wc$hP$Y6??x40T3zxIHbibC9` zEscjPRFSHba>pMjMSJ<&ZiSFP3RUr!Ou5+$3-P0(rT&phi1B;zBWfH(n>j4>RdjMk zFoMVmeDv~dn=2Qbyw0*TLhzVOgjJ&(NhyWf9cQ_b5h-ln(=2F1YdlDL@Zf*OR^ z4FUME4E&ic2L7pQ*Ioe9Dg&d0lt~J2B%xeb1j7<<9>Jh^&j`b$fD~RYDkOy$i;76$ zm7)ONrzZT4nkplOw}&c7;k}_MQg~yiniSp`nnnum3Ss=>U7;DI@UBoTsad3ElfwH! zAyRlV2!EsnZwA$q!aG3?r0_OSBPqNMbS5dh2eg0`-T*qA6yE*83uAcqXE7ZF6 zyzhh8s_;(LQc_K%mXT^E)k11HsTHJFl3GQomDGi#R+GZ3-)l*&BekAX8>tPXHj-*5 z)j?_#sm-LeklKoOgh*XX>Jn1hNL@T>*cJgF;44UxK%)K#R0NsW;D z5UHz4?I-nN!b_cK82p3`x$wIxH2moXV|c%Pj_T}q8*&bL8yseqmwEoCKIpuwP#?ri z5WcUwgnvpM|LTMGUBe~uNPjvRj@1X-`gh=9Zgpg^0|&10B|FYJCwx}dS!d5%G=D*) zap9s;qeB(7?~e9C5+3=|M^2cc6#mSI71)IDdH7z6Zv@|de3#;jmt+Hj%JR9a!0-`< z2TaQ!#kWOS)n2RAKm0rinj-)?1DC^d#}AHHd2;aAW6S9p2ayEITAI1fHd z1I9ikqp-#E2?jIR5igkv;i5nV{?e2x^dKM^herwn_3R7+_1+--(oNNY;g4ess|p^- zaB-Ni{8wO*V)DZ5d_?d8conGm03>5dMOjjazeR$AfmQiI_}SxuRe|BJV#4O+$EASd z%;1E9kewuy;Vck-qu@fG4g72D=^g?2r)n;6jg%r7IFFs&@XK2M%Wl*czM9u0o(g}^ z@>ERr5C4(B6&3#BcM35vTaJx{wBoOu{j)v#`PN9M81ddCalFFKrs>K2w{qU;k* ze#$$*d4idkAkr>1XufkZ$+#35iq~?wckF)t#}i@ zF-O5nRh@eA?es|Uf2(FQ#}}sU;*<$pb=QMt__Q^(@PF2sKi4jOd=p?FBcjnbBMR{if@>XKgBZ=V%AluX*t{et03Zt+gw%3k5}z+gcJ`^0Z58+e*B= z(7$6_PtO3JeD3R;yNmDrCAW>~@7r)&Y}>%Xv$xqt=wss>`nq?}syk7b{n^3cphJzm zcI2cZ!kZ|`mRM|U7>`TI+!=|;BW0ZDy;+cfUy%Dh@xyQ2%ikaw9<3ca75se^-84B- z%*EUB_-;LhUxMUbX@8zE`JMgE*j;x5m*Whk9p^UdvGeZ4bscuz>m}uruHU|^--_0< zbQoK5TMjQgbGr?*Tktg?m3QDPuv6w;Kc67+SqXn?iF5I(2A|ZV5TA2SA}Jnn)$)V^ zop4tW68KDG0!fml5%t#p7T`n(HozO#G?)+OqJy7xZ`}N%4|V1m?8I40 z8fA~?1@UWJLAuaBdE@rr8wacjAE)c~3F5fA5qi%@TnK;lfzN8$ZhXqe=d(NH3~M7$ zpU-VU44(2tI+mvMo`v5L;J>@Y?U&V2_Y^+)?M2=s&K#ZAgqsq(the=NO}JK$U73=b z68}YeWbLz5+E<@b^64R;c4w{pU$^T5Y1h&D$F}a+wp}QBnouh~N$Q2AVq&ZRDj)Zg Z|Nr^F+yaO7-;_$@cEbPv{J&>`{|VKQ(uM#4 literal 58368 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 D-r(4j From 69f7ac9877f30d9571241cff9552a822ff15440c Mon Sep 17 00:00:00 2001 From: Ryan Wilson Date: Thu, 30 Jul 2015 22:59:50 -0700 Subject: [PATCH 12/21] added new settings to turn on/off directx hooking --- FFXIVAPP.Client/App.cs | 10 ++ FFXIVAPP.Client/Constants.cs | 8 +- FFXIVAPP.Client/Initializer.cs | 19 ++- FFXIVAPP.Client/Localization/Chinese.cs | 2 + FFXIVAPP.Client/Localization/English.cs | 2 + FFXIVAPP.Client/Localization/French.cs | 2 + FFXIVAPP.Client/Localization/German.cs | 2 + FFXIVAPP.Client/Localization/Japanese.cs | 2 + FFXIVAPP.Client/Localization/Russian.cs | 2 + .../Properties/Settings.Designer.cs | 28 +++- FFXIVAPP.Client/Properties/Settings.settings | 6 + FFXIVAPP.Client/Views/SettingsView.xaml | 134 +++++++----------- FFXIVAPP.Client/app.config | 6 + distribution/FFXIVAPP.Client.exe | Bin 1848320 -> 1849344 bytes distribution/FFXIVAPP.Client.exe.config | 6 + .../FFXIVAPP.Client.vshost.exe.config | 6 + distribution/FFXIVAPP.Hooker.dll | Bin 35840 -> 84992 bytes 17 files changed, 142 insertions(+), 93 deletions(-) diff --git a/FFXIVAPP.Client/App.cs b/FFXIVAPP.Client/App.cs index 6f355015..b99fbd5a 100644 --- a/FFXIVAPP.Client/App.cs +++ b/FFXIVAPP.Client/App.cs @@ -208,6 +208,16 @@ private static void SettingsPropertyChanged(object sender, PropertyChangedEventA Initializer.StopNetworkWorker(); } break; + case "EnableDirectXHook": + if (Settings.Default.EnableDirectXHook) + { + Initializer.HookDirectX(); + } + else + { + Initializer.UnHookDirectX(); + } + break; case "EnableHelpLabels": Constants.EnableHelpLabels = Settings.Default.EnableHelpLabels; break; diff --git a/FFXIVAPP.Client/Constants.cs b/FFXIVAPP.Client/Constants.cs index 7ebd462f..043f9544 100644 --- a/FFXIVAPP.Client/Constants.cs +++ b/FFXIVAPP.Client/Constants.cs @@ -42,6 +42,12 @@ namespace FFXIVAPP.Client { public static partial class Constants { + #region DirectX + + public static HookProcess HookProcess { get; set; } + + #endregion + #region Declarations public static readonly string[] Supported = @@ -77,8 +83,6 @@ public static partial class Constants private static string _theme; private static string _uiScale; - public static HookProcess HookProcess { get; set; } - public static XDocument XSettings { get diff --git a/FFXIVAPP.Client/Initializer.cs b/FFXIVAPP.Client/Initializer.cs index b6b3695a..6c1cae0c 100644 --- a/FFXIVAPP.Client/Initializer.cs +++ b/FFXIVAPP.Client/Initializer.cs @@ -998,6 +998,10 @@ public static void HookDirectX() { return; } + if (Settings.Default.EnableDirectXHook == false) + { + return; + } if (HookManager.IsHooked(Constants.ProcessModel.ProcessID)) { return; @@ -1007,7 +1011,7 @@ public static void HookDirectX() var hookConfig = new HookConfig { Direct3DVersion = Direct3DVersion.AutoDetect, - ShowFPS = true + ShowFPS = Settings.Default.DirectXShowFPS }; var hookInterface = new HookInterface(); hookInterface.RemoteMessage += HookInterfaceRemoteMessage; @@ -1041,9 +1045,16 @@ public static void UnHookDirectX() { return; } - HookManager.RemoveHookedProcess(Constants.HookProcess.Process.Id); - Constants.HookProcess.HookInterface.Disconnect(); - Constants.HookProcess = null; + try + { + HookManager.RemoveHookedProcess(Constants.HookProcess.Process.Id); + Constants.HookProcess.HookInterface.Disconnect(); + Constants.HookProcess = null; + } + catch (Exception ex) + { + Logging.Log(Logger, ex.Message, ex); + } } #region Declarations diff --git a/FFXIVAPP.Client/Localization/Chinese.cs b/FFXIVAPP.Client/Localization/Chinese.cs index 3acdc9c3..727fa20a 100644 --- a/FFXIVAPP.Client/Localization/Chinese.cs +++ b/FFXIVAPP.Client/Localization/Chinese.cs @@ -144,6 +144,8 @@ public static ResourceDictionary Context() Dictionary.Add("app_PlayerInfMSSLabel", "Player Info (YOU)"); Dictionary.Add("app_TargEnmMSSLabel", "Targets & Enmity"); Dictionary.Add("app_InvMSSLabel", "Inventory"); + Dictionary.Add("app_EnableDirectXHookLabel", "Enable DirectX Hook"); + Dictionary.Add("app_DirectXFPSDisplayLabel", "Enable DirectX FPS Display"); return Dictionary; } } diff --git a/FFXIVAPP.Client/Localization/English.cs b/FFXIVAPP.Client/Localization/English.cs index e9f6dd12..8f4a19bc 100644 --- a/FFXIVAPP.Client/Localization/English.cs +++ b/FFXIVAPP.Client/Localization/English.cs @@ -145,6 +145,8 @@ public static ResourceDictionary Context() Dictionary.Add("app_PlayerInfMSSLabel", "Player Info (YOU)"); Dictionary.Add("app_TargEnmMSSLabel", "Targets & Enmity"); Dictionary.Add("app_InvMSSLabel", "Inventory"); + Dictionary.Add("app_EnableDirectXHookLabel", "Enable DirectX Hook"); + Dictionary.Add("app_DirectXFPSDisplayLabel", "Enable DirectX FPS Display"); return Dictionary; } } diff --git a/FFXIVAPP.Client/Localization/French.cs b/FFXIVAPP.Client/Localization/French.cs index a1afe78c..f42a686d 100644 --- a/FFXIVAPP.Client/Localization/French.cs +++ b/FFXIVAPP.Client/Localization/French.cs @@ -144,6 +144,8 @@ public static ResourceDictionary Context() Dictionary.Add("app_PlayerInfMSSLabel", "Player Info (YOU)"); Dictionary.Add("app_TargEnmMSSLabel", "Targets & Enmity"); Dictionary.Add("app_InvMSSLabel", "Inventory"); + Dictionary.Add("app_EnableDirectXHookLabel", "Enable DirectX Hook"); + Dictionary.Add("app_DirectXFPSDisplayLabel", "Enable DirectX FPS Display"); return Dictionary; } } diff --git a/FFXIVAPP.Client/Localization/German.cs b/FFXIVAPP.Client/Localization/German.cs index 5491a2ec..173bfede 100644 --- a/FFXIVAPP.Client/Localization/German.cs +++ b/FFXIVAPP.Client/Localization/German.cs @@ -144,6 +144,8 @@ public static ResourceDictionary Context() Dictionary.Add("app_PlayerInfMSSLabel", "Player Info (YOU)"); Dictionary.Add("app_TargEnmMSSLabel", "Targets & Enmity"); Dictionary.Add("app_InvMSSLabel", "Inventory"); + Dictionary.Add("app_EnableDirectXHookLabel", "Enable DirectX Hook"); + Dictionary.Add("app_DirectXFPSDisplayLabel", "Enable DirectX FPS Display"); return Dictionary; } } diff --git a/FFXIVAPP.Client/Localization/Japanese.cs b/FFXIVAPP.Client/Localization/Japanese.cs index 29a1f709..a0e37454 100644 --- a/FFXIVAPP.Client/Localization/Japanese.cs +++ b/FFXIVAPP.Client/Localization/Japanese.cs @@ -144,6 +144,8 @@ public static ResourceDictionary Context() Dictionary.Add("app_PlayerInfMSSLabel", "Player Info (YOU)"); Dictionary.Add("app_TargEnmMSSLabel", "Targets & Enmity"); Dictionary.Add("app_InvMSSLabel", "Inventory"); + Dictionary.Add("app_EnableDirectXHookLabel", "Enable DirectX Hook"); + Dictionary.Add("app_DirectXFPSDisplayLabel", "Enable DirectX FPS Display"); return Dictionary; } } diff --git a/FFXIVAPP.Client/Localization/Russian.cs b/FFXIVAPP.Client/Localization/Russian.cs index c9a16b02..26def831 100644 --- a/FFXIVAPP.Client/Localization/Russian.cs +++ b/FFXIVAPP.Client/Localization/Russian.cs @@ -147,6 +147,8 @@ public static ResourceDictionary Context() Dictionary.Add("app_PlayerInfMSSLabel", "Информация о персонаже (Вы)"); Dictionary.Add("app_TargEnmMSSLabel", "Цели и Враждебность"); Dictionary.Add("app_InvMSSLabel", "Инвентарь"); + Dictionary.Add("app_EnableDirectXHookLabel", "Enable DirectX Hook"); + Dictionary.Add("app_DirectXFPSDisplayLabel", "Enable DirectX FPS Display"); return Dictionary; } } diff --git a/FFXIVAPP.Client/Properties/Settings.Designer.cs b/FFXIVAPP.Client/Properties/Settings.Designer.cs index 980f8e6d..e89c52d3 100644 --- a/FFXIVAPP.Client/Properties/Settings.Designer.cs +++ b/FFXIVAPP.Client/Properties/Settings.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34209 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -12,7 +12,7 @@ namespace FFXIVAPP.Client.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -557,5 +557,29 @@ public string UILanguage { this["UILanguage"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool EnableDirectXHook { + get { + return ((bool)(this["EnableDirectXHook"])); + } + set { + this["EnableDirectXHook"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool DirectXShowFPS { + get { + return ((bool)(this["DirectXShowFPS"])); + } + set { + this["DirectXShowFPS"] = value; + } + } } } diff --git a/FFXIVAPP.Client/Properties/Settings.settings b/FFXIVAPP.Client/Properties/Settings.settings index ffcb489a..9d791985 100644 --- a/FFXIVAPP.Client/Properties/Settings.settings +++ b/FFXIVAPP.Client/Properties/Settings.settings @@ -259,5 +259,11 @@ + + False + + + False + \ No newline at end of file diff --git a/FFXIVAPP.Client/Views/SettingsView.xaml b/FFXIVAPP.Client/Views/SettingsView.xaml index bd4ff16b..2c585925 100644 --- a/FFXIVAPP.Client/Views/SettingsView.xaml +++ b/FFXIVAPP.Client/Views/SettingsView.xaml @@ -26,12 +26,10 @@ - + - + - + - + - + - +

  • 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%0DYFn)L`?H5{M;3Rs>!Dlc@ip z2-1gsOaR*#ilDcakA4AdH2QZ_{twa9hl4D7yXVWGw+$b=$NysN^dTaP-Tt{k$ch3h zgdxwjSHT0tf+w`iB@dt;OL1`xDCiFkL0`{(l`Q#SoaU8EZX#M7diS8CPruRgQg$~A zk$zb2TK^%r5aw=lDfm49G0Ho29+o}2th%UiZ~}D>G)D|`kvzEKyYd-1>H%ntsY{pR zGO#EVdMr^>ob+KOeP=*t_Wr>7T%vm0;h;{jwdSjkq#WR6GrZChq+sJ+B!GG=+rV}L z8}$zA*=0{b)XX-j=s1u-$V6hZ{#-pf2=`3|Dm*j;Z0Y?OJI**rq45aY#&hulYOLci zFO*f{n3^Z4S@!Wb|7Hd&^CW}DL!u(K(--?9SRnLn5w8aLp$1R07PkG8J4W~H?W3p{ ze1*e?L-=}~?R)0$AZ-pE@%K||Rc`D<@Wm>3!7iudGJUGKt{83Lz-vdWnG9YLrGS8DOJ^y$08K>oAzs)nNNCrqvi3QFxBZ znqbUd;F%T!8W=7+DluQd?4%`}oYme9@PV<&s;CLpT4K2BsGwPn!hl3Os}ZiFdZ{ad zK+$ow3-qOLd4=$?f5Z-_N74YAkH^jxESM81!j4ucczrzR9P$#cNFa`P9 zquf!Lj!H>%{@Av{M~H1Gilvq?5UxTQwv+dvsd2#3$mCZ?XSXj!xDD+b)mgOtrx~My zq{VzTVg!bgf@~^m0(%XQ$Syl<4^k&N+i0+Ji00dl>QH>t94K>CV;2o(jy8~(>C>N1 zXEk(C<9C3Kql)I6j`l4>0)25@yFVghiAG|vPp8J{WvQ0X5zZN!~F@_1wyOetQLOyyu0WGHyeu6_Of=Ptf>~@J3RS7_67EY6bP5 zhEG>I;yQz>9{eiPX@SdC2!RNx!IuQOE89|*L5t^sIy$_P>DAdrLIjdaAyLz)-avhz>yD&0}$?W|9vCfwYFvJzV`iE;-%Niq&GH?7KAFycolBk2>fM{CqGFTTh7$kI}fi5cVM%W+NJ3oo z5QE5kbkE;kT}nBC zYfJgBc&J{>+CQ%`D)30VEIIHAIGZ#xRV>BLtknKMbI6B8i{&^pGL`p$y}3y?_({ zhY~vRks-U1VLaYVz={7BARa*BW5~b^@sqyE5bgq???4GZ4-n-K1WtzNg$(2IRsv4p ze+dxfr~O4_h(D8IJnkpp#Q(m8E|q7Jg#L@HPTY;U5Hu z`ltPIWGI{=4CC=;0#5vEC3ItuP0bG{=saB}|*Aj+?h@Q}XAkl%&?;vt+4!x80|w*N(NBSSo`8OG~>KX6fgY5Sig@DRVh zgnx~MF0GG~CG^e`{wu&m`6(-=DDZ_ZYy?_({Pk=rE z(!aF*AAx5w^qToaEmN5cMx@{|8I>#c+uKJqcYd!7C(qtbh~$uK-bgR)_IS@(cu!AzW-Xi2qH1 zsDCjW;xPlr5H8jW;y(%y^-p>rLp-?*<8iSZ68|R>x-`Aj5_%5-C;mSGqWseG)?dO; z`Mv`{@sbhsFY1}-#mt502^Vk*{}4dbzqI|&mhd;1@UNH9rTUyAp?8(=-vBPkPw|l< zc~Tk1<6=8W?n?op{s&8V#!K*M0Vn>`08#&9K2rF30uSLW1)TV|N$Aq_&Xmx5N%)@t zPXn;D3JorWNogWOxC4M>Cfo!NyaJ_&N|3(R&_{fl5$uJ)8Cg8+>8z9OrZU0H%WXP`zKx}``0~h5N>mBhF0>}{F ziebDyzXC4GFKrJq1s>w}lkl&W(53QBlF(m~@LvWl%1>dDA$t(Rc)XE-Q+gKyC~Z_8 zC>>;oe;mVjJW9Zc|2RM_Z`2NuA^zbEVE}rQU6VWlOdi0hVgiqfK&Ki07U&u+rtbAe-jD+N(o&i!6!=aP7?kLz(x64 z9mX@slPvHM?jhhL&pd#r|5$-eJYywzq<|Cu4*=2yh3yO=L;S-S#^V73PW&HB=+gQ= zRYH%G@ZSY4$}esI`$_n9z;^&BUNWNojr=2{kCxzV1f1mg8X)Rl+8z#(@Hdn2uanTF z?a3PwdKU@*b>O1>6dxIq^L2*tcw+%4_ay*P|AQqwWfHuDfD`{IfT(|I`#(~`A0pxZ zTtc^(;4>unYZCs)z|#P%>{#&*BtPkl4B?J|L;(PWiP-LZ@dk#9zfQ9`7#T?uocNCcME#Q<$PiC1!+1PUz=^+BLYJnuT0-w3;lBr5lwVrj z`b+p-f$soNyktcEi+Uz{F>~R0!Ude<`34~BU)ug>OZb~h_%}%CQhiR5(7Q_bZvq$P zr})T_JgE%haj~5w_qPF}{s&8V#!K*M0Vn=508#&9K2rF30uSLW1)TV|OXv+G_)H1j zOTdZ$DS+fB-BWu@dS^HuNY8{*yEjmzJMj7>Isvt_j312`)e*v}eWv=)=rQ%-%R!@Y zIiq86LwX?G7eM1hM)%>Vfix(ogB8G*ce>0!Y^# z0qKAVfSmv7Ao@nn1p2 zA=4{JZ*PHo$wH>Luom)V3z^=_dN&rhuUN=FQu0*`nclEkKKiCTL2@>yK{{|&X9$GC ztH?Cyr&JF{x!i{cySW5MEIl zjvtwcL@#Yyk9Mj@yA$fuAqS(6I70PKESaUP=|NH2g)F5WC&;VlD|g(vM(=6$=_FKR znYjm^+5T;YfY62r1#*v;4h0=kxcq|YR@eibjUdNj<1}*w6A2YC5$Z#M0%IyM7U9R# zNMK|PV2mL~*qzCy{7`bMkv5bsoV8p;=Zwa}ML=I+=oF%c0WCA&M_-J`WV*7I;@0Cp zX)SIt2{g*g#KKD=GqXhMUq_nMrX>94;etYJ`=9{Tc_qNv=?1E>uVgyYSUi?SkZ02s zu$Fctv|(u!Z{fQjdg{Pi(Xb#klbg<)I0m_O2sje-An}CQC(h=s^z4a!$=%4GK(LXy zJaH~1C-qn*JIT2na9k6jAA)$nOph|0#+8Rhowgx%Y?BbWFl%~T*~bnmG822G1~_1|k|N1LX6?_y0$xgC@_b^bxUThyDjz8^l_7d-{dkhu zrr=(J<@9M@$AM~WaiioZb#wjZHipK>6qB5GM3w83^F%3r?z z*{WSwB~$Cz);U|74D2fHbUw#&L}f^-E3P(;<{9bnOCA#MDr z*f@h%%?|UxM^M<@N7Y89t0%H!Wz~6~B4y3+#W$6fypwn+WknmJQX514@^LED&z1~x zD{u$VO{aXu`iP~L9$7Y_&C!$6gaRlJY9Mpfu>v8}4+T8{cWtmo+B+lTXicDy;`ysG zr?r$h6^{F+(n!(k^f?q3$tq)Gg?}RqK4l2Zl?5g2tvuM8ooK0P7^w95 z5(==P8c)eq>(TFP+tMIbB(W;5qcdojURY&6Ej;O=Jshg9i#`kwe2KEud8)@UGqql> zNg*-3Z|n@zuY?!=NyAij8rS9V;ixo5T;C!UG|;SSXe`!f15FL#hZ1kidOMx9IRp=^ zLhu#A+8n@KsWr&EOvTurwe)<;fDcSa-PStRTF9);BplzevS!V?J_pqejViS2vWB)A zUDQRi2=XA*CDsU=sSS?#oOa>qm~N>(wn9H6<9cw7via>1GHxYjzlon(QNDZ&o|DKI zc_Bu?xFUqb)Qq+FxO|$mj5-x-%<|5W*ed-fSk17hm{n~`mCQ_itiK&oor=jWW3nJq z_{UO`?6lgN*W=4{Eh(e*3Kx_;kxIqs5acO!;MgL`=aE>ktz{aa^MFq!AH`{orM(rU zy&KmklMS(fmvGM0__WKga^G+-kJAWz(K}oS#(Gv%@6qDXI-H}N4QI5fyw8wi72k~F z$QsH+)|P@qjVMSo#1UFjm5#Nf%~b458(rv46>BnsE~?yk2f50;9qc)!R7B{ACe#lZ zoAaR_I%1b9jZIR6y2{Knit)E$snx%SVwtxJKU!7el*UQ=_kk9iM=P!3KmWm4L5nNF z%VFu);ODej&8q?t@Mq||a>h7b4_aLS{;{Q!HAvCm#>w#D(~cEsm|a+Cg445B7as)6 zmD9M(qnt(`0dr(NG?)%^Da*nm!)0D<%Vg5507jF|LLBtHS0D!4r&(K&16I_WTv+D$ z_(3Dd@CCq;-wa;}92=Awz6dyN3bxTJlJ|OIs#`b9hiO)8iZ3G5KTzN*< zY7Rprp+m&jXO4y{{72ERYtqmOWMg+R4r>q7;A>Fp0X5Fn%>Nu`t=yko^p1_EIB6j% zIjI!ittr$&o}e$IlxXo0DieZtWi(;CcUc-DjqZZ4!yIieLSkFHHGwMrgaJ{MIYBo? zR4UZ~UMkVaHK`t(A4L(!GDNDN0>7fzB>4N@eYqJSV7yP&oX}#6o+n)r{FuZH-hc zm78(V6Pn`1fg0kcqC@+?tu8R2z7D@oVGUT(qp^)`r#t$f^OqVm!+`?wjL4H))1j0bOKwG)WI`11?+d_MdtzBE* z(%@oOR@z-_aE=xgd)H^A#5QrnMoD$l)-08)T$yjt3!S;es)|3WE0mEoOka*R*bw`? zlP&LLi*4mBWlW*?3>#`?#fVR(put&3gk&pb9nsG~8}6Evy_i=i^WvK1s2YmT4VF0C zK|xG#;r;`Olq9!XlqZV)3&Pm*!q^LbYp^R?Uq%hJBMuy+0=Fr;1S(F{t zLbxWeD?u?maFEK|OKJ+r zj9BgIGYS0!L^_l&GIGOic2_3757HuT9VTb4scBl7>tF{?<(i?DL*EWoy3k81*TE#{ zKNxYnLbOpG(5KY{tzAe#foCb8e|uqF2Ba6v^WlqOieZW2(3;49vM%yM#Q#GArJZC` z3;rA&oj8r!T7}~=6t;3ZnZ1>;B5H-3z!XX)T6&clMk5$&!Dyc|HqRN`e=v6cVC?@x z)8Ice*wNwW!8i+s^d>c=L#Yw=*jPSgdr+{1%3=Dz`2h3)ETyu&GBL2@0cikg zSIYs*06PF@0aEjPyc8$JM{A@M55?gFps-^AX@GLT4gd*V{%-_8>#bjtf0+8471Pj< zdV2}Wqu21DXG^c?L>5;~uUp6&L>7SJp2D4f?$nm{WCi)Qiwv*OA&Y{1- zXQ09OoCwx*yy~#R3JNY~nu(s+Mjb3`7=UFn8@WcMnR{e0eXpresFT8OssqCG9tcv# zZeX%J%z`gV^tAR$??T9UHz=nux3_b76%)LCDl8wCbJaxfDxU_cjBwYaGQyL}r{mYF zdncQ907y@ zJ^~Z~egkL$Qvq>+{eS?#8o)5X6@UleEkH8hCqN`%D_|_(Pk;*W2A~UorlidP?*WDY zeg)_NZvy%Ojsn^MJ^_pd`~k2B%mBOwI0Og*tOtw)+yFENECsv{I1T6k*aj#AJONk% zCIC7Db^?3>%K_rwPpcL>J;EWVFTUq0-K>+N&u=~RP4)%Ajjj)ZdH^JTn+XUML z`wr|oux()5z^;Z}4Z8>I9S%=6R_LCZU_5Q*q_2S!#2Zy2>T&yHEcEPDX^!&?h3mr?0vBJ!EO$_IqX%iSHaGP zoeldU?2E8nVY|Yf4|_iB{;>PQJ_h?3>~PrOuxnx0!Y+ng4ErAJd$1e8ZUB2G?3u88 z!R`h78`$5#ZV9_3>*iVW+}A1N#i@XxP!Px5M5J zdpzv%u%E(y3Y$iNF#sPx8o&V%4+sV112lkc06kzRzzvWDhyaWMC;+bj`~b96YoyIOo`MeQCF1guOWWz0A2t&z!_iz@C2v+O%;r6&X_&*5*U%&5q`pvBMh&~f zc^)2J%BVlol~L1QM(sK8^G#sXF4Mb;;po4AroM=7b(Zm0DB;WvhfE%|iRcIhW!VyV z2~#r*Z(D4Y8oWx0xQj4Uas|Etc96|Z!aZ3yH{k#4k2s+iw}N>)M9DGd#haMt5{!AO zzisdpRoP-F>~*c0w{7rts1EDCxWq6+l@`#?=QdWz%ZbJ3!-l{}yO!QNS!Q03XBrvs z7+cAu{Gxt63pN>?guDV=G9T0|j$QwWFJ99yiYWbn$o#8Q9lIkL>;7wrh93ESvK6K8 zu}4MeO0t!ut6v^Tbp<-h7zLNfKBbqu?CxjwMpIt{ z5#{__ZziQeIM9NmQL^P^dR@xI)z1U3@Wz}7{4%qcIFeCVYnJKhI?iB3%KWhlWb-zH zM8`l#NLxX&Q3n~-t|2W2Kk9<;*SY*aWkGvb1+niy#fOw0xfgl#Zz~TuO0s+Kdc&eK|HP}zH6%kFl=@PY^@qyXyHUXl zQ(UlXK{n_b_4D_7YYL|Pjf!8?s?LDz6aQ~(ehs}!%0vB^=3dNK&^E7;pw5y81WWWJ zuW-$&hfpl2(&U{$L25WMHHXecAs(!fwMU>jo++SUI#eT;Hp)=fm@JB;zQn{NTH=h1 zW=^cQ(Q6dlFr!sKV^(|V91BY^Y}~R`c&Y=JfNr74l_0EHJJ~OHC;`EF9L)gTWupnQIobFxa&$z?|_UEAny3By7iC(DT#evd; zCkw3sds)P^hvP6DH6e`)vQoKxM{5?LqvrX7hT|u+AuS5d5swYeqkW#IpjVox@PI=y z)-uti3)YxW3rCXkukizg!kzaKWNU^)0?8?W?s%rXXJmL~G4J!ibJ|y?UjSQXrmlcq zdQ*mrZ@CFSDZU@J<}{9&YQW&F6XS}3HpDxMagPbnaG4Gf`FU+Rcz;1#Y?_VPC>C#d z7MYoPB%LeEA=mtj-r0F`5P~{rn<{TE5Ic4$v9-<`SL1%d zN5|&TPAF;@5T8!#tz{)lh*7P><-I7}H*~Yl=(ribKSIgP!H`qS`bMg?ZpPPyd~^XB8(J1xV#N*~;^2!KzYj%HyNxd0Z^8)ZSY3rNipcqm~`!hY-`Ok^Ba$FZIC}?^)2WKSznY3yI%#l#8#P&J&@pM zM`bEDDpS$BZPubtNwhqKNgvo-Z;`Dfxd^wS3l{B-XomLYSCntbf|yorBWHV_SpRk! zZ3uQkpdxC~tO@Vg?KwM7ww%iLy4O3>ysqR-$TLnOTLUn9^6o--;7oUx^G!ff?~#Z)N)rN9M-`BBV=7ct;M0> zt_8)dTDVyXvFSH}FCbEQlIuUD$4;04F;V2MJmH8)Fz z5(qpF^)gAA%5kYUob#^2m2^bB&{1BdMWcfE--w~$WehGX8Xc+PFMQ`+C(m#Er919K zz>2;q;HZ!ijCCpN=6G*GAo2;p5mmrs`h7}#z%vxeTs9{_|HBL~ zPq3Ff2*VZ%hmIO2TipCgDLqY>W4?lnJQ=|6Pvf}e&Dmlq#+84i3rVkz9c=%^$NG5G z`oB;to7svx-)QYC#v(rn%hndKKE!7dOFK)cKwx82<1@}oHM(J9kW>FMW?DX?&RXOY z_SXHq2Ve4lF@+rOx7ayHj;!O=s&IClX%|YBjZCe754MVRueQ=bhDOk_iu3Rh`|`gH zXVt$Rj*NXz`Zcv}CVLcHt;*H3QxNBU*v|<9+4=ldb58D}EPNPvAN!IpR{u+3G?tlv zK&GKTGye#CNI)~0+(myHerfGU!Omm2jPPlu(2Hu=dZ=@(59cH9pl7I!OgF5Q!oi42 z&Cj?LLDtyi&W~!)29To$Z2;N$>Hsc!S_u4?_%*uFLlW^6`m-b+)?<%RjEZ!2tZeGp zdGf}Y>3mzKVBZm65#*j{kz1z?9E=+*ZRG0NXd#cnJ8rdO3HNr()TG;?u_G-s&fvqg zK07bHln8+>cn3Zv4bHU`IWu`qM}^3W15DAfhAkA*tQ68L%0=JKU8VfuWB0ejE>G8r zVG6OU#30dAk`R34@^l-KPl#J>;X~Ne&YOie0`r7ejDHu4u9daQhsN4TfmW6%16%z= zobaUoaS(KOJEFsW`CDz{7?B^vE3 zN%hE3d1Ue^XgGKt0%B!8wQ)w8s&OWdr-7acS16X^qJ0+EC@vqFOvWW^eH>yGRyHbi zs;$Z`182yl+WDaRSZT0*6#kB|b@Ocaxz7Ah@~3x04J)N0rL$3M8`}mpQn{wO8tovm z%=|sb>DoX{>oT=?mv98T$V1Nx+HJ@e0k!@Dils{b3x1adS_?$gQhXS61RDp|@;dQB zoHr1sj=nK!sGt~BD!F=Ix>n(u=^&%8h!nw>RFF@_zFX8X-atpWN~Tb#=IJj|=&X!+ z`-ENL!=!H=Zi3I-howO)*a(Q0dReu`wk|bh&Xf$CDXgHwk)5#VlFt2A;G|+YrjWhxC51oI`=OxklA)I?+!In>W_1b?QnPPdh5 zhOqjC=0>N#ia0Ps@bRgryDryXqo=9(PJ-kWzNAx>QWeDjn&g)0eYW>!Iv&j{1tyn^9589_e%vIykWXyU@WP^kto9?biV6$ThX?t@7iA338QdeQBq1+1Yh?S3@bL83gIl*Tv^BQM z3XN#n^u@@EMi%Cb$P#1kn}sO|nj8U!2>h=Uq!;Im%ns>3IB#T-&$GmTN32lekk&)O zhZqc*twYm|>79lxdJ8dftr4$_A70ZB#dZ@Dw!U=d24jQ4NOHq~j-qG>?hD_U4lSQw9Sp`qw7uqk1via&17$A^E$g}S(b3)}D<_-8#5 z@dwsVLNPS8!btpmdmLqH!*M=7!ZUU{?8SH4U}x?_l^i#+2_LH!=fmCIi{s;(i~fDM z_x(BU0Qv~tKc3;wrha)KE<-CPopn!62 z$BrFvK>vz=WIAu*m#)2rE_;tI-|*CnqRx1)@VtW zrn;)4sGa*e|L)&oU0!zH=x-pg2m2II- zqseSC(&&yE4fyMz$VJ7ls!Uj_6zNbzWp(wGx&;vnYByQr)R5XLA!7KZ`B49Sk>92Y z$*Qa{wKcjLBcN%Kt^qgFwFO#zT3Ov!k}i^e=1geS*e<%Ft;lav3Gu5<;l{ab4F*G9 zg-Ay@pw@0d_C|+0kE*lKD{GC;3y>{!;n9Zh`hsQS>>M3#YzukjMwsf!@Md;v=WMF2 zE$1Q(&(OK(V*WWo5)4HX5h2jqKFc3bE6|PkqBP8oSRm4$z;apV?exq{* zS@lM4h(NKFk8-tSBJYNZUTZYA4UMo=F2Rqn!nwp`GE_X9Tm%tO3*%}jBbF#k=E{4{ z#&XNE1!;};;U#2?dp+{>>3wh37CqwB%-+FalaHmjVnIPSbA=8 zjhOw&`_cbl`#v9D1Ho3`V$Vcs{h=tn} zzTI5BX>N51UmE2R=oL2gHI>w|%E8Ie>Kje9?J9*vL0(lorn-0mx|&cHyxd$_+16~F zTNPf;KUbU4nnpy_8F_bgE!y2`v#HuFgkOzTID9Vnh481;jj0WD<^|z%?}+iwk9IDutu@{j zl)-6Ob(C8gR*uzv$#Xjj*s9(=d={SNsNsTPijbScM~(?DpKp0?I|gWl#C;Q<>pM)& zWGd%0&h_qcRCtq-BH@kNIM-+h&levtY^koS?+-!NgwJ&@uXlbHds-g-^aij_DkT_qv)p$#za58A3FZ&eH8ykDCJM6*uzjccL4YR#ByE^{N<*c z3O5yO-oh`?f2o|y*$~CZ*;JdW&5Noy^_ESGK;mpL+Ns^LiBs3k-GTuC++o^PaPmbZ zwZ^$~IqL6gYd3N7@bI?bG_F$D(m!nQP$r@z@XsQ>ve-;?u3a_XV5^H4;Hezr+<$`e zGqGh%0%sfG3I=an0}x&RNlO~SqVX;>82?&~6)*xAg|jE8YNY3ET6g1YBYSan9TGVE zn0}mn=M>JVYbw{U%OK9LM+(=VTRP_uH<)wik;S>Zn#DQ1Hk51lS`O#YD~EH4&*dEZ zjNrU`596E?3pl6#MVwO-AbAYuJZLQEoHCAcNgdAxrIm1@S!G;A)>y7vZYk%IK7n(| zoXj=MuH@XZtGI?kt2o`TX`F7vOwKK5D(42=b>uA0edKJ;bJSd}Q9%vYxadu;sc9bP z3r#f{vyk%}yNGK#b}{V5T(faYxE8SWrAs;e_+?y3*)lGsXa?7!d^s01;TYaqZuDmovQaK4+|4&9$mp!x^jAa;>Y^a^cg~anY6UBUjdQ5!2UmkuyK! z+RfU?Ma}+*Yd>c*7hUr)7c=o~E`H)7uJ7cfTv8?CnfD3TX?`6SyI>3V%EGN&mqnj( zT^E1Obzk@?*KNr*u5ZnUT)($!xq%BeaRV29!lf+ym>V*84VOLd18z*sJ6zV%tz6vO zJGdUpc5*$J@8Vutv4`vR?iXDA%Dr5lRbO&_-~WnBSiPU?_rXD~-`cOa0qYNO13x^> z4choEm%90TE@$mmT>2+RxglGB;&Qf~;&OMK;YRE_$K~xg&yCu9fir!1kt_V_5?6BI z3ODZH6|QRCc5cGPz1)<|Uve|I9OTLmUFF_5e2uI6_8K?qyX)NCA8v5-kKN?n`tc^W z(BhgeRS>)xB2HgT-`6fbK8Es%k2bwap@24%gcXo2e01aj$FUb9l!a2 zJ9+B?cj4|s?$RF*xtsSN@rCWbzyH^00L|&kWf|YQk+q6G?ENP*zK@rKt+USE*Vot3 z-ZtZJ+0z^ybnbqBEn2XDzn%$(V62<|m1(OsRK~UpZfS^$P0Y;A%P%S_P7ZJ5fY$9L zX1t3-&tbzR=Mh_eVP0--c6LHxNq&A@OUW?B;;*;0UuJf0zIl3KZhl^FPIhKuZ2PF- zxV*f=++=Lse9ok~$7N^d7L}Bg%__?585?Er^L2N}=cREy!xM88dp^gFv)%G@@{3DK z%SuO2ifz%t*U#6_&o9`}CU*2NLvU2~i~NO!qf5+Y$elkqAu2XDu4iI$a&mS~PDx>M zEd0I@e)Xi{qWs)k#4$TBn^KxREIS!UabZqQ&yFwhPs$&bn_E;=S~jhwD0^5=PGVe? zAvoC24^a(EPIytC{G8l;h+jEv+O)(dq?VHF?(XZC7waC}^CkQ_MWfB7rRI{7qOzWp zU52QrjY?I`kW~#F_#n-6_uFF=H+MSkz@nfG09p^wH?6S$#vthEq798N`=kD$o5S0`4^86|)DV;RE zdg`RolF4zwhNzy2dHJQ2X4h2Bn$l6{7c1^+sgI^)(xk~|^XSo~(-+LDnLVqrY%D5R zPrulXi8WJWonDlGQt{}b(UWH{m}f4`j%pvp`?(E>3P&N5Q{S+5Xp1rWf z4BaP|#Zvi)iB&H2b9Qp|b4bpu7ev6y-m1<|XzA)ZKk@d*8p72jNfcStRB6G`IJaKG%oLV=X2p zj+VOnj&A>wrlj7N-{i!SXZQ=Ff~C*(oI?1Mp5xDpYWa8kekF-!sk?7ZR2%8@^WpoJ zB$i6ueUqbN|4u*dvCr`*w8{QEel&k&!IDVb<9ze~p1(z@q^XQ^H~8gB^IH-WL)!#2 zNX)Ho`wZ^7gxHwpnIz8>{A_*m;|2+oj=oBDsqX}d`wM75usl4sJs*Q1SSd^F`C`qI zdYafGSZ>HhA!zCs5UjRxAMHC)>ii-e6Q1bm+XeuA(pc-c4qTayO{o*ee6KaB{qr8M?JCch32C)2W{AUIOd@_ zY#!>;&t#d4HXcxHnUA`pnAx0^=A$m@6S;<2Z*ZPNXda3=DCV8w9Mp68bj};#o;REG z$e&}Ge;P+k9JGJoM6T1=8ZJPXgN6um zP?~>A=bmkZdFS)<%?@+<`DWKQR&d>>uHs&uv6_pYxrR%a{{COiIcdH*YVk&H?21~h z=$*P}=9Panr|kcdIpz5EyScQFe|TX|Db6R0_Frc6$q65P&Q+}4&Q05}gL|Xy5I67B z1KhlwKd?FFtV6%PFt2>soKl=mK0lYFdE|f1|9>^`%sh42t2$e3vyll+#dBJ*anc*2 zqoX66Ch6^7=n-FYw9e`h865?N=*)ybPw5B)Z+7iG6VghO`(mIS9T}36l+=aR8ZE{q zDkU{Nqa-e>jlL-krAg`ACN9C^2*fEPEiENwbd(`75)s7Zr+3jm$nQaDZHlG3va&0V8H^i91yy;9?vMm{s2)~BYYrKS`|w~301?%Jd8 zsEnwlUefrxCM6}MW{yiqNJ{M6qf2x~Qjf0BhM$x+q^Q{3C8~`<@8zXW>(R7Lrqq96 z`j80`P?Mn*?>>CxAe*2bf$)IBaWH8pcoSqe_}ONj5$H!~TUkh<$rGDnq|$07Vc zebc5PNnO1{o{>Lf$f*1w`R3HVNhxU=nJFph37*e}pMfdusO*f?w6uXqA=cJ*QE6$? z@RRe?44yX8J>q)w?Ge{T{Z#4Y@yudCbV#J#I0t=HmmY~pk$Ri)Zc@(-AE7sSit`DF z(Vj23b4}AM64_;1(0V?vBn#0l*@D))H;ry4KG?;*#NEqaDG?4)7FN*XO5A=eWJh-QBZC5by5qW_YG>@YIf|9K8tbt0 zT*3sGj8i&bJ=$u_dt6u3Os?IoxZd^SM{di@3z%SzMp7bGUwEW^=vA&FA`- zF5m{1E#O?IZQ&Zt-p2JSU%;hQEaJLVt>y;IUC#}lwTc@xcQt38zlJMXxSn%Z@+0Rn zZx`2O{vOV6;a;xAlKouZ+XuOzWnXil?|#b}SAEYJKRCvK1~z{V-q*<5cx z4h;y|I^h9y+*sGbu z-53@c+Rox%Cc{CH2wbaGVvjW$Z8)v7E1P0B95c4Uv)Fn)|LoAl5qwU~?F4?8)&Z_M zXMZ>BAmxp1%ZQdO+-${199OPYXav`PdS^-Q(s!1GOW#{o#lP0oPU}Gu+jZ~uN*{jm zhc}oiPzDveKLi@&y1&vfVa(!dpXbzM9!qTY=aS3zhOR??Nw}l`YL42k!P(wJK047R zW9(SX$qlcb81dnN4=-IPo1WA7)P_N8JAY@_YI;s=Zt#wgo3?%(7=PZnLOs04k7v6d zT|4KOKJ((%tU0)Ue~Vw+Ejjl%;@;`XFFk^;9dTHAyZgqlz@NMP@_F+c$FpzdjW>Iz zO|)*d;D7StmOAU=pNdaBW_W!%@7(=SM|ay!|91JAud*ZbSH~=0@#dQ&dv~4L_=o-v z8#Q0xvwIIWZhpk*YyJ8~p1F{6{N4PNH-EphD0BN=-O9T*gB#vdY7EI04%)#XOAj2s zGwJZ}Cqlb~UTl^9^PPl)TJ6m z8wb~hEpC5xN0Ix@s_@QRpN<}J@WAGN3AriVoLX$|osb)ARqmwi6w?0ty>1Sj(xy#l z?526uwzp5f(YPr!1z)$_e!_Ic+o{jf>&N@OJNom2{!s>%^SIgtZsp@;GrYE(wi?nX zF)gq68uRx>Hq$d!C%<14_}c10L%PpdcH(;4;1LZw9-dP3)t77Xrnx^jwP2^|_&4dX zhKyFWHEo(5P5#5Z;Rj0xw*9%=xGRsoKmN=7@eeY4YE<4Gb}D)~JIim4NVENN%IVr; z(<^e0-M-zf%lUnuby^qOT{k)jmtj(>KA6e7G z{o$HF)<3AVxqUu+d)2^Q*4d#uqm|C`eC4=XU%uXJ)BKzMx6hAXTkaa)CHIR?6N0b( z)Ybm;`>*C7Xt#4oK$j`s#_aRjvs1a})TYB9sbgZl7_qrcn^}7d$?J4mPlX&>nzCnX zU`K~xd#Y5GGUX1p2~9NtowesQF4dh|d3>kWjq~gC&Y7zn<0ku6EwAa*XLSdw*U zi?`|$61YKAFNGieNZv3g_JF;u?X;=OGi{ri4<~o*n$pePcgEng8`cdTm1EufwWYiJ zUTivP`71R;-3I$abX@tRA;tN}&*Q&1w4_~pz=QbY72l0)Y8(5?DBE>TP3PH9Yv#E= z`eDnE;R`lA-G8%eeYCY*vpT0{sx-~s@<*4=sfoW0`{jDa!%tg>T(Zqt{9vj2n>(SW z7VMjGO5OYP?SS~+^5usvbg)hyy?j?|H?N3WtxhcS?&!8_XpYlr z*@~~${Bdvlw^iFq{`Bhlw(Z;N42#n~3pH>pZftwpY}CD=&M)AE{TI-+3p%t?k~S^PYsH7iOMu z9qphfRdn?3wY2RN^UcS)rAgXvukNdKmd9BS>S#zb-TwT{rt;lW?3X16uQ+x+y>zhG z=dU+Ncj$C=Pq(a}zQ6QMc-4dcH+Rmg{mL(BL7MZArc&8A>PGDfOqVQ=VRua)iB`qWf7j5OVA8X6k8apd+Z@?q&fL7;&}~Ip^Kpx#H*1$?6@T|j zc*WbzQf{YnD@^iPOYOK3vGPtG7jowtExnk&rr+Mvr#3BE6W?l4>7J^IH8G7m*RJh4 z=E^ngu*3;t*G-IDIW=x&#&=Uyp{nm==B>Q;*e~n$((!-%HhKHgU*^yMc}3T^FYH`; zwxnu=r)=CgoA5i|r7r9+>Hb&W#CI7TIpaXwN~d3kTs*wsgjMa2TzUt6@o!0IJh*ZP zm4oW=!7`7S+#jQS(t0lLFmLOlWc%N_E;}zB46IAqx8g#4-N?0$-*#6lRA?%=1FrpU z&)aZ%X4j>cmU(v5Tj$&NOl<$z4Ri7N&Mn7T?Z4nO%`mh!IcZzI)v4FiyD%|mje}kH|DdYtZ*`%w z!+tIxrj6a)uTGAYzwcLWaN5fy`-cWh?Cmkh(dX;yyDwR}rnzkXw%_Ab{u9-O-QzBR$!QgvK+u!P87vEcv6%zA)Ypz@3*e){FtnOUHd&@Ju zyE|o+mU^8UZPR=4vMn3!ceZ_NT{ErHd)niR z9nk+=q`k)1VPb{Be!oWJKF)sHD^ATX6>c5#+qJgiE_-`_vG7j&NgJ({@weRVZ-kti zGX7S>1&c<+XzW+I9PQU{S4>{cO2{~H{EG>cK)zs@636vOy+qe*UhWrS8f4Ud~6>krKaxt zd5bA2s@fD`2$1gYW zFdB!p8WJBc&qpD@DC-oFcCc)SQ;$jM<##UjzxANyshQthjJ!1E=$9^06DvMFFy{IP zsnb6Hw0PIO(rycv{V@FJN56$dUT^br#DpUsozK6mo>M&jYWA6jX*Z8Q3TZZ`EbW9_ z`S9QNh1D%FydLZ_?%=_LX=UkFGX~0v;+CDWu$_T$kIwdVl6<{^MHt z&4-8MmVb9S?eZh1pRTvbIAEigbawof?l;@ldbL0O`PLO3cHZ$i(ZnYI;q~a|_m3=m z8vEYdGxti-hb>r?T7Gq2$0agu(ad9EF((JcuKM_muHI(F(_0tv&U$YvbLzGDRE$gW z1?$4DCBL7x=JkmeKXn*XZcxSLjO4b>RS&kEX3!iux7B`4mU?~Vw>RPzcR2P%ZR6;f zeOGG3zT9c4_$a^rGJYBxHtsq0%CjJ@ydo>u+V zP4m!J9t)N%nv$xYpl#rzh`iCXDtTz$+H?1BcfEbQ<;m#}yYfL8s%M2w z${&;;cXo@+_+8f8wIh8r{_lR$#b<_dP-@cdg9+9b3LFR3<$Jj%e*C_h+J5iZox0+i$K|d#H zK+3*DUPUf8A#TOzB0{2$b)4h3x;Z!d%U=>_?>fKz_p1*ZKfX2P?Zxk_YOOxmZ1v;7 z((cp$X!q1-(t_eaQxf(!y!K;y^XTP`;+kpxObH4JId|yOZEtKiWkwU$Y0~V84vKc! zUX6YVpFHei#W#0$w3V-{nD+e@x>F0i|LH@5No7{Nx@L~SXtL?Y8SIT2TC$0|I zSEOFE;H@>k&W#>?uf?V<_cM03xd;VKoTI&Z^{QsKzW+U|ihi$O{=Hw^<)j?1fORM0 zR)6R8>*h9pE)M&1@q_^h$)na4zQR3>ZqE^OURM(q z+D;2O^F~Z=#gM>Pw#3ALkmxhXWDm${l+9gBVzV~`j*I%Fnnx>z6VsFl)J*!XmxVgB{?WecSo_R9s_Dq z>&PW-8b?3y+g5NdXL#Z85$)5OKTVi^{wI0s@7H8$cJ}pOmhzQ*)~#_3J|5QaZi^2# z+}u1cDJA9OqI)^BXBvJQx^m@_tt;m}niT8#bjwdk9Xx|3|5i74)3`Gmyjv^!&sa6H z(au<#>hShQ0)IQRq2om9Q z?x}I%&QZ}DS4NdLXk5~Ly3Nhr`$qlRXkX`*$vYF)%_wvG`Se5Y9k=sZe|w|bp8c;m z?9{yX-B+m_5_hyc&^+3|jdv*bc-GHv44Nr%6^`So7+OMl3s z%Eo$CyEb{{t9egbtx(K!+MT<-IC|vP+vfOyV=?-QH?5MtZiXpX_EpuKr2T$R-mRHj zyY2j?cZZ~Xkbb}oN!W7y{AW)cLlzI5ls^VTp5K3OHSOCmw{~{Tzq#A>@Rj|a#msbA z*5}>2(c|5xUyj5eA->0bM+eNIg60{*+g0~jt#DX&;xdLNC57!$^y`*=92U1`WRnYC zqb?kNYQE9qUP{E+eYX{7hOB(L>gO*V56e$^|8Z*dp$5%;YK>hy5B}PC$^(_Y#kbd0 zWA5+q=(osFBdgi=XtkzGXuAvNzs{?(R@>WlvT`pTb?#AE$lCQuv9A8FelaBV?kA~_ ze_Szl?T(|n-t@7WZdGz=+kEfLtxp&28l|1#@P5LzsoUx{Ps{6&uk*Z~nfaURxQV%c z=7b<7Kk+J=H>ppb+?C(-jXM*O_}Q)H zZ$CIT{>*1r@9#Ihv+UEWAq!@fUPvg|o!g+p>jBpunLIY!RQo>Eubk*0n^@E6UByI` zOZ$mKns;$om9=mF!jC37bX(`}`=TE|%~nVCDv!77Gk$bZo&EFZy$AbqPVaP&-s9eU{nh130T?*_ynITpvnMAzeC04R z<(9_&+O5#&XyutZUHX;zM#NnR`}N|*-XW`Uc9)f3usLvPbY$gRML_qA)xRuB`RHob z=%Rb8dOdo0=ERtOzuzf7b@$yT_p`lkjQe%(>h0?_7pJ|kWua3Y#`jUNTxgebA8Ni{ zKPe&S&)=LH>=v^qXuR?XSpWAt+Wegh9*z2`fx$zF#B>+gNp>+?JBb-ht{{{9}D zADi5t(PqQA4m;f(wwU(4{@N1PutTdI8cptGmF|!>YLw%}H)H*7pDio$nz$uLedkVJ z{rwL5tYwpa4IIBZVb`ORjp8n7H5a=5toh)Bz)OXZqn#VHsCZ>fgU&UNfBCfR`V3?7 z$x&6GbojyS^BB6o#n|32j4st8P_?w1J^S) zR&Lo+QnUX;LO`PxKMa58hmlRIoWG2?(W9YPYtPT0K3wwjhIhL&GkzG~?Dmb~Gjk7@ zrfy5!^6{~KRf7y}iigv}?k}D4`Ts-HRfe_M1l!>5P~6?!-66QU6I_eCyHm8d6^a(O z;_gnkN!~j@pF??p`0|0EiRc34q__>peMP zczGAG#2j(Webb`{eylt8d@gPymfux}q5o^`I&voYrhI=7tmMuE0uad26T3ELra~yI zdoaTZsFO@vSYRU|g6GA`Gq>kPl*y1K*6Wfv*ba-eb3#vj(Q^kdifL$!do%iU34;?& z+_=p|W$5op|;d1*C1=>MX*=OULiqT0H{VSJNLk?Hxo$sq7hWmZ=0Ja|io&nf? zD>c=Van6VFIyU3Ggcf9=Q03M*(KbCf z-Y@}>fk=ceK|N&vV+kvHzHmd~s>V4_3>~^1x3@h?f9fklu4~(0dfxH$Oj7=@mJXK% z2u#C|NJ4%~YVwb~bY&M;3-T28zvm@WJNk2>7Pv!x`r=5$cYJ`omvP;|BY2YIwUcej zO{(s`ISy2{<|2K#W6Y56Ji1>)$zCF2nY_y~9}EB)zu`kHyVbMlM6x<8@utAWF_Htj zqry6ou88gFAjo2Il!fX;?(b1XsrrB6Zg}@#GW^t(>u6tTou&T?g9;n;fm@aLYu=TqV-d*?-9GlXAFD3T^n`V_{clU@xSUrH^$%g?h!%`4?+ zAxdx{nd{-t#^_=^8T<9m;IEoh>0Fe(^tf-PXC8l@-2||NX4o@ew;$G>F}3zS5iP1Y zlKUamX>525qA3h^PvJu&Y(s$U@Y6nlMC8z5z|uNhVl0FN6l#Vh9KsgUv2n!Y(*?iH zIm#v_rQal=<82Ci04JVWG0V(rYH+vtP!FvcUHGBk(Pgh-V4Y0~@2t>8ru zk&~dW5R2-AtUhhI(pp)#TcY~hi006^e>2C5je;CKm_AA%Mj@^J1uI4$=BZ+S{g+~w z4(LT&yq#O5$q?d-ipWr!ayj@PrYib$U5TBaGAn17?h9P4 zsHxxyU!qu-anv5)Xr$Or=yNb-gl$W|=S)W;#4#PgI=3PC0=?e_tb!k%&x1^$$BoyA zF)ij=TH@JmW2x==U<1OW^n8iLw4TWo$A$FCJCkkgjYN4N|HeBHHNP+RDy_Xr!as7E5IsX1t8UunxXIZt0zueV0$B zXG=DfDkN^)FYsi`-=kW=#JO`1RV(V#OJ<@xo_*L8B7pVA7|~n$jZ0@@fc4LkVMN6N64XZsRnc(XHr;f-FSjfF2WzF6aV_x z@uLL|5v!Uds#e365JMqu7kJ*e=j(Zm-Wl)dz0>p14>q;~p@z}j1&PDes?%dHm7az( zY$8|J3{X%gFSYb#hw;ED&yRYd1v}2Px9p&|5q>1V=dw)}+YPV?UV=3%b@_PXNUctd zUEw*XJq^_zIHkjS-vv^C4~MXbt>**~UbWF2Dv^bkEAi9-=u&L%v6~Jt(Ro1@sEHLm_H9M-x z;SVU5AV-zci zxO)kp10jXum0bA?w*2+P`f@8+yKWZ0$}t6M!5SV1;8~2GZ4!QgFEjtgFGoLj`Dli` z&4-*2394)~e%0%Anuduz;J{-I2@VUk`bMg5XIuJWs)}Ke{_yJQz1(@3qEGtaRs%AP z5D(r)Zsv$Eg$CMk84%kz_Ga~-opCWpLpa4TV9>(aSJ@}4uQJb@aU%A+ik3QS(F*nAnO7qNx}QW^yky>@xBI8$geBmSk->!wHUjB_Vs(~*dKSBGza(^ux=-3a z9X+s^G9%G@@Zrv5j4r#a6`Ff#f)Pp!JOLg@G4?Tm#^2ru?l5! zf6QRVF3(WK&x>*o%UQ%PLZ?k^AOE0L$A=a+INIkU0bd!n{bNW{-8R?2;fFyCV=o;W zaHr#0+m>qXNB3MJE&2bNqSyN3g{tfG;}y-O%;s>-zNRQm29Hn`2xcY7pXi?90P$|# z-DtgJ$E*^v%oW>^`nV)AbsK8(M1e0Lq?J?yi_brfUN)Mw?>{s-c!o=FOi{Or3d6y^ zE0Fb<8K9glld&R$4zIb+!x!^hc{vhXN~U%ZM&p|L54>efapK?HZaJ@}@3|cP)1CWDY zik!IT{fgRsBV$3c7_t{x|Jn~<^gJlr!KsWMZW>;wecc;59>A$;<+jYE6o8Kbx^BdXz1B$h47m>chutdOOwFf-jOOMTz$oR%$!T%mG;}AJWo+3dSZr zL=h8P2y(gel+iC)r8;3C?W}iSMU)cPIVa|ln95k{2!5Z;MENrLx`+*Cd$~332 zBOgwtW*uvYKu?fw)&i_A{68%K`!Jr+jAXkhCxi@CO|4Sqi94wj@Vt#7@?ReiD^WJL9%2SN+YrjaGXk>QHhI~bmGi!Ao zHW+YthGk;B42;r~=d#8QT%)d7*HJx&N0-=vkNinbnu`K0Ii)Q42%sz54h>TSGk_3f zW%4wpZ)_r9y+YX6|58W$=r%5G9;@qx0mPVkD60=8ZIqb~vc5L*nWLcWWDep#aJE@J*Jdhwq5Acu3%l z3qT&zzN$V3)oVh-hn$vP^stA)MH*`H*b&9gC3A#mjypgfJh-`X&%l)aDN`u%?T!S@!uD(5;2CskRSBr^YAT4voojsmg z#ejoBWihyX;8U?^4~A(guB1#B;Oa@iMibC>&=r}Qx@n1TV}0f3n`jsf%^bML`J-UA zZ@kW3`$3@>ChF+fr$EdCxtK3<2@@7JZ3RJPHDks2>$-XMWXqq})fQuHLwN5%2zB7( zE163ibNB~jSxeD39s%N!5OUKrKfy1aLSD4O zeO}@9902IS7C;m=fS7!n53*VFQ)Mg}F4*C+Q~YniJJ-7JjfScnFU+JMwb8MSfO{}R zF`qL3QoN;7PEA97M>>rhJI@w@$BQ)N8HAW)3@eOVRbiTBwEIA;!>-A0#*(BHBY7Bt z7;N85#=z__SuCXunACxQfH?BE%sfCCMzXK~pD18D>k+ArC_#*u z)znVgMYmjFc6-v(B^<0kN!V#N;6jhqXCsW)zxE0S6|}=G*FpX1OV22p*vMVK z9-g|J&Z&C`#yuS_vk){Y=6Y}|yM$WfSbzY*np*{k{_t))n%3x1_O^a(@q?cOZ*KpTqxz!a5QrbrJmjSrribEh{Q5{<_Urr6M#Yk`_z zJCRlr3U(dT^#uSN2$KBdI{klq3-}X3>}29mHnZ+TRp_zBYFuBJMle~#8d$(S>_i#Z z{NF!Du{eUTBmx|r*>1R4Rd8GtAJMkKFERc?7QYZP+IgBBWvG#05+=0f>suUL!4LlJ zh_eS+`Eewx^A>XA<=#M8!m8r!2<2dW;IT#qYNHKihS(znt|l*DL%t>mH< zNxB9_###1SUd_swr9P|^fCJv-6iqV70V1)$F!L2CJY`3GWWw%Vn(wup*l49lJy2DEtvHAFCY|Qt zm+MOHUK-4v~+1l+g>G z1g7DaonX?Q_J7YP^x35QLghq=?KhJ7}Ex0K+p9~L7`^97sP2+KiPA$4!2fgoBg z`J8b6+riqO6F(lCNV@pl>XYBSv`6wCoy(ffT|Y}?FONlUtv~;kbYrIux>^Cyh5xRj z**Sl{v~vju`3AfWWDaV}VmZOtk#K2bJdAi4DZrXVcE#Z0g;3ZH?@ zB$4aYt?U{?#^WQ?V5@bH&xtxd4+6l`+(-~W{w~iV;B<=uti9tmz>CLVZ&29-c(#B`H>K3~>vfWtnH4Iqv$iX0#9G(5;8n3<@5u^L5M=SsxF zpM5er69PCkfnFC~h&xGs^Q0D2P(o{IzdFT8`9W1VYSR4v;xkknCJ7sPqE!8^O1v#5 z3n7N0rSGh5=Cthk7lPQi6VnH+jeTYZ;SeH1D*n!X>b#jmQu%`!1CF{UF5N=3o+XTYD?Q73HUpy*B%g?HVJ@jw#4~MMYiU= zz*kPn8iO9q5B*bx8z=+fjK2dz-M{NOcH*{7{c5dPf08r91Um{Q8o+>kB6w`J_?7IK z&_unx@1!)4DBQR)VQ1D^cSQiamol`i8xG00!LEmvMru8_`*&6Z+%LX}d}-(sEosj7 zX`!$o>Yg0-7W08YCAPvfC~0HSn#hg8lAz_$k?Yi9i_jzC;bFiemtA1%>U36@5@QxV zd5cU;uY!X9t<0BT-0(hLc!as0BeZ%7>S>`~*MbCF(bv|Xr}qHhDrK54DM*5Ph;Y;A z2Ne>Hi*>(Ub0sP^UtNbuO|%9q|vdj8r$R6PK7=~8xhE;Dt&twg8$VZod9^NBk5&JKPwAT(uSF0XNdubVTySg64_9I?oFzXcoA|sk`(^Fgd8AI7QGv99uwlZw_)L^%KQQQ%Bx-zz5a6&2p-_PdDc|@dNNy|8V)Sj}j0S*IjrPH|cS~Q_;fk8rV^zFwZw#WK1-27)h8fOqp^` zHJp_TJ1tBh;f6-WicJNLO@oUF+RHwtO}=KzoSad<`aRre2RI8a@C0FI;P5I_L<54i zK8A3q6;q#Z>iotGj4P2#Df%&@SPob1d?>0Slz#+1X@14+(=@?M)bo#rAFs-@2u^zTe}%-J$~crq2%I zp;zxlO?iZ6k_lyM8l({8#r0=7Ev2F~gY;U+lHMD!O;42mfzy2jAx7Bk_a67zboqJ= zEa4fOrggFN9q2~Qg`W}6^9o)}e@wKQGU+V{7S{|33^1k4!Ygq5S+T*wN1^LM`m_m< zTp28{HBgM6T7$wxcTZU(Q!7k8eWVTFtRgKk4S~f_cVu$Xu;WIJZI~>46lIVtDY@pY z`|@Z+9axkGS%zJEdME=05L#B68B!Ji(u0#G3FKQmFl83+36mH6eXNS~;$n zFE}Iy)6=3)q_rLhtf=41kONe3Js#S_%gdTu_KO<6$G=(sW%&InDq7F%%jiTcwD+Ge z?qXy2-@C%Iaap*4t;8a1K@)wrfuwnX*LB6Oe`sA!HhcanaKyrbr^XC@zqWm^?FtEo z?x)M!(*R#1_FhMEcZIZcOA1Wc!+($+sMZiyqDV#JTb&Tp@(U~1ZMI3!is!l!p+Gns z-N(ByZQR6**m_X)>QA&Ka}&Nrp=7?)p@0T(hYz(htuUTkegGLz7=M7J$T!VAjHha6 zN*5rQ3QgS-ep*NC66YL=JkxV<4W|0*mZ2<=3qA&Zeu^U~c|Z4xbAPTC8V8wOHDq>G ztI)xaV{>`j!&&fsm)MABBAU%v`IxkspYXuR+xAJY{sXZ5w&j((e5OZ7@?KQX6);?5 zQqben1WgVtj&2Ih({68XU5Mcf;lYx<5j7`d9_{@8-LK(co$#8IJ2%iIN#Yf8QVi&e zVagqBc4C(JK=E+cFtlR5zyXaCGfOo2wvfgn?O$`+bYJ2ggopPT{l0vHYeO9;Og*as zGZQ+`eDVNYD69Cf0f>z5g7Qsh3vhllN(G^U62lH_W}1^@bqN93dL%ECGDntr$(5Hx zuHi;C_M#-<{fP2s>Qo7U)TpwD4+YrU+gB`~4&v>pw!25>y((ng_k5fMkiKUhz>#>n z=;JGCg4O)c{yZIPX)M%KDo|Ek5T?jY>dEwGS>HmjsJC@@@i_sHL2tN^a9xXAWzj+L zY{L)4-4FxcOdfDCY6GEMvBl|OW^Pr%+8DG@p=sFUI;JR8leiiGd*fWAvqDum3VBR# zhI2%rwC^37YtC-J3#br6$-p%yV%iz%Hmg>sX@0&V$z$f!&wyo*ol>j}xBPFBtFACx za0*>fOho8u6p0irP01hGWfFD&o0W!PO#%OaUKsJ?QCV12tN$Fs-0^n3uO zd@5Ni1(+49(yni7f?oCj(_=-=fs!)D<9L$HJvSPobw|bQMB`WZoD6T-@WI1`I*Wk6 zpVuaT>rx*~UPL;_uCcGX5Q|5DtdRIzw@FJFwTjdS?EiwNYQKAf*d zskev1k@%yt242TuM34(@!I4AfU+#6B8V9d$Hidq^XS*faAuRWp!VKd*!H{yK$fZ(w zOvrj6?dBeRlb}ym`S?bwvPU>Vsi=c*{MkWB9v(~yy-QW^)Q(PBkU~z09I>}g0uh`m z6>l-I0Q26>{Y5^t^P%6>0hyUv*Uo|C8k3ILl6qc#Xu(ZY{Sd2h{j|@qmHai1Z1M(a z=Y)6GNH9dXJd6xpl_gV6PWU?+cSZM6h+F>fIdr%#s+4WcUgq5{gXq2tXWl1`#s_{C zJQocP)~fw?(>E6_l-}upPL*`eEl8YvS(lwExqfbJEsQ)*!X#1fO)3w85c!wn$P!K8 zm74UKnOIrDS_ANVZ!)`l)`kmQwgs!_ZpY97{TSZ&RVHyVdusmI3M1F$pQo2s4Y*U= zFsyAPp>E(u!_C;#k)e@ks@Y*{w6V$y>~>?QPa8h3s(xJ0=NKc_G;?FSB2Vk)Z&HN! z%F{BNT6~@H*x}1~&g2M5oA<>zhK8%Iy1+%$j!M49x77uso*7dCTevzp(5xx)8)hVa z4Bzi-8T3eSg%(|6yZiNG;BWtBAN_g687sJXz|_YUVaf^%+;gE_0|`hZ4MJWvbVD~E z&BC`3i;Q0)Ta3zO!`~pgJ7$0VmKQRN1zsj>t*8K(a;H$h2k3<;uW$K1)E1MD?4O24I*d%b7e!Xa}QO0 zi;~qrO<`f@kue?jjM@x*ivoO%2?Qx0t-R9?Hn0P6@-&pev?~)+zl6dYyv}tKyk58~ zb0Grz4Eg7%Nh6i{tG*}{l+v_+o@-BoBO;MGPQMY#kPAJ{hS9GMqeJt!x&NCrdjhvS zJj(7WEH_q}6Agh?Ft`t&GreS4zrLwyGahwWRFCyG+&SeSf*DCnci=_1Wq)2)xNDj>DVF!-paP02{zGIEN5!1trA16Itlu-F3+r`HC70kQC0 zAj<#>N2~1~cW=1h4c_>x0+#Eo+T9n?C}TeySL`sP#KNr^TD_KH8rM*=e@DE!Eeuxl zZR$Uf0bmc!&sm`4TgF|Q2F4UuZ17B^q5n%eo|$)79~TmVP43(p@Nrtc6`OZk0Fuis zc<9BlCKd}V$}S*7nkFQqa`0jUWW1qRqyim?M)+4VL3kWcMQIYbH$>_{aNEr9ry*8? zxl6Pt(L{?FrD43-h|qhRG)Qu;f^9t@>$e*_$AeyV20Ch4o=-VqNI7cRaLoZ>7!j{m zG~jZT|I|I<=e3{n>z<0yl%IX5HLQ*>lBqi~PAmBUPUl)XimEZd?KIjTDL57}OAzI7 z+Vn)aCzie>**#yZ$yK!f{kE)t4bZ{XV01Quxnb7Nb!a|z~A8IPqSWF*Z zqO1@q84gC-bznClV}uj%56IV-misGy>RktfV0~PKL?Cm#`rvUh@}fSzHi?SPndg_9XlRVR<7xMB-+fz}PeAYu12c!ObGmz(Ys*d$oDcJxv5YpaidmYH1=fMA{YOmt8_1Z@H2V>*^4!$ zmAsf)kfk?O0_o51%i(6LPgrlU(}=Dio3#JkcN}k7v&m4(QyHwUc$Y1ml#m8)AkR>W+}`rB9@kZj(bspaK``}lMJu&p5xog61Y z+^1YVaQ>lGE%Oi&aKtNKEKEkk(}D%k%X&xBA>OXR*Wj$xv?v@O8?>RfYL*kH#gz@- zJ_Lbkvfq}s0#vTs2?zEq(?^%$Ag(HeaqhL`gODdmu&$2A`NPAVD z57aDoM|V|5!YV48U7dt>P#^5tD@C>tV)eNMLP^l zB1_4@TVXXWoa={tJ1W|KZ8wcBU8dAXkie5R{b?-@FOE6#9KNJ4$p8a{mm0UXge2uv z;zV_Z6u5aWbNal3CHLWBLxYKIfc~Y2@{@`V#GjPPYb~ForoKD7V?UdfFXL#3s1O&Y zYhW-Cfiw}CymZQURJSgCTC|NLVC*_mKNED7-g6sv`Bbpg5!-qQo!O^F1HoLPQt?fN zA-nXO`dW@5Bg(i#ypYQxrOO;#!qU0C4=33lm`B3G4a5q%kY5y1&upGOH@x*x?a3RQ z(d$VRYu@n2>|hy!WYuD*I%4A9ewC|szXH5?*6@7JVqo@;X}mZMf)uc@JwJ*K9xU2q zdkk&uFYx2mY>IpsOWKavGZ{WPsl1mm#5LB($?C&T>{*Z>rE7+^6nJh-CMVe?9WPUN zqSCa}jnwfe!$!;=HuX*|8{GM2$p4Md+HPVmNhp+#$E6IK@1~#Lu^La#-u|~G1$mj` zLHF@=AE2}W%b1@3il;O*9;@1k%B9Pt)L)+l;Y|Xf&VOU7y&?`BG9%I&NKf_CrE6WxeJZwRx(J4hoWI}ny_o!2O*l{-gncq8UqM?P=zlNu^$M@Xe zJ44<&81UWQ(cc!Kka50%f;ipojb8L{J@@gl^Ntr;3(3dlMA zSMN1|7(?tAFDLk1cF4wR{h(E<$xSZry7xrbW~^-NCv|<&Qw%^?@Am#NPpzO(o(WbN z_Uj|5Si3reDT+hg`a~n=Fkad?NKr{?FGhn__BZoSu70ZArLM9^+Ut|oo;z!22=+Jn zk(>{ey0-JM&-df46f8poon=6ld-}3GF!%be5q2UT`E;7*wmDhLm=sH{n^aMrVn*q= zLXO~A?Y_S#;Gm6|mplxVocQe&#cugS=!dap)LFjx(a$9FgTEGFQR&Z&-U*MVfhxx$ z)zKMNO6an*jOuTguBnCfpHVU_>`o%FgJkoi(BzA9bXpG}*~G0lm=l+(k~`a1 z{NdJ7!Q&fNEqlU^szf}A8!JbgF1+A5})m4&-A9VaGP-f z7{-sIss@XLb4uLCSwZB@Xt$gJLFZoZf){$fx1wu68tvO8)3Z#tDr?%-OKpⅈJt~ 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ⅇ!XrnRrrn$6Z;4WJ<@&0(nNLUvP9Y26 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

    l`QdDw!a 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 k&`sr~D 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