📄 状态.htm
字号:
本例假设d3dDevice为指向IDirect3DDevice9接口的有效指针。</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">//</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
启用z缓存</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">d3dDevice-><SPAN
class=GramE>SetRenderState(</SPAN>D3DRS_ZENABLE,
D3DZB_TRUE);<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">应用程序也可以使用<U><SPAN
lang=EN-US>D3DRS_ZFUNC</SPAN></U>渲染状态控制<SPAN
lang=EN-US>Direct3D用于深度缓存的比较函数。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">Z偏移是把一个表面显示在另一个表面之前的一种方法,即使它们的深度值相同。可以将此技术用于多种效果。一个常用的例子是在墙上渲染影子,影子和墙具有相同的深度值,但是应用程序希望把影子显示在墙上,只要给影子赋一个z偏移值就可以让Direct3D正确地显示它们(请参阅<U>D3DRS_ZBIAS</U>)。<o:p></o:p></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1"><A
name=雾状态><B><SPAN
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt; mso-fareast-language: ZH-CN">雾状态<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></B></A></P><SPAN
style="mso-bookmark: 雾状态"></SPAN>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">雾效果可以赋予三维场景更强的真实感。</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">雾效果不仅可以用于模拟雾,也能减少远处场景的清晰度。这反映了真实世界中的情况,物体离用户越远,它们的细节就越模糊。</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">有关如何在应用程序中使用雾的更多信息,请参阅<U>雾</U>。<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">C++应用程序通过设备渲染状态控制雾。<U>D3DRENDERSTATETYPE</U>枚举类型包括许多状态,控制应用程序使用的是像素(查找表)雾还是顶点雾,雾是何颜色,系统使用的雾的公式,及公式的参数。<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">可以通过将<U><SPAN
lang=EN-US>D3DRS_FOGENABLE</SPAN></U>渲染状态设置为<SPAN
lang=EN-US>TRUE启用雾。雾的颜色可以使用<U>D3DRS_FOGCOLOR</U>渲染状态设置为指定颜色,雾的颜色的阿尔法分量被忽略。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><U><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">D3DRS_FOGTABLEMODE</SPAN></U><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">和<U><SPAN
lang=EN-US>D3DRS_FOGVERTEXMODE</SPAN></U>渲染状态控制雾计算使用的公式,它们也间接控制使用何种类型的雾。这两个渲染状态都可以被设置为<U><SPAN
lang=EN-US>D3FOGMODE</SPAN></U>枚举类型的成员。将任何一个渲染状态设置为<SPAN
lang=EN-US>D3DFOG_NONE相应地禁用像素雾或顶点雾。如果两个渲染状态都被设置为有效的模式,则系统只启用像素雾。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><U><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">D3DRS_FOGSTART</SPAN></U><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">和<U><SPAN
lang=EN-US>D3DRS_FOGEND</SPAN></U>渲染状态控制<SPAN
lang=EN-US>D3DFOG_LINEAR模式下雾公式的参数。<U>D3DRS_FOGDENSITY</U>渲染状态控制指数雾模式下雾的密度。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">更多信息请参阅<U>雾的参数</U>。<U><SPAN
lang=EN-US><o:p></o:p></SPAN></U></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1"><A
name=光照状态><B><SPAN
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt; mso-fareast-language: ZH-CN">光照状态<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></B></A></P><SPAN
style="mso-bookmark: 光照状态"></SPAN>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">使用<SPAN
lang=EN-US>Microsoft®
Direct3D®几何流水线的应用程序可以启用或禁用光照计算。只有包含顶点法向的顶点才能正确地计算光照,不含法向的顶点在所有光照计算中将使用零点积,因此没有法向的顶点得不到光照。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">更多信息请参阅<U>光照的数学</U>。<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">应用程序通过将<U><SPAN
lang=EN-US>D3DRS_LIGHTING</SPAN></U>渲染状态设置为<SPAN
lang=EN-US>TRUE启用Direct3D光照,这是默认的设置,应用程序通过将该渲染状态设置为FALSE禁用Direct3D光照。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">光照渲染状态与可以对顶点缓存中的顶点执行的光照计算完全无关。在进行顶点处理时<U><SPAN
lang=EN-US>IDirect3DDevice9::ProcessVertices</SPAN></U>方法接收自己的标志用于控制光照计算。<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1"><A
name=轮廓和填充状态><B><SPAN
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt; mso-fareast-language: ZH-CN">轮廓和填充状态<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></B></A></P><SPAN
style="mso-bookmark: 轮廓和填充状态"></SPAN>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P>没有纹理的图元会使用它们的材质指定的颜色进行渲染,或者如果为顶点指定了颜色,就使用顶点色。可以将<U><SPAN
lang=EN-US>D3DRS_FILLMODE</SPAN></U>渲染状态指定为<U><SPAN
lang=EN-US>D3DFILLMODE</SPAN></U>枚举类型的值以选择填充图元的方法。<SPAN
lang=EN-US><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">要启用抖动,应用程序必须把<U><SPAN
lang=EN-US>D3DRS_DITHERENABLE</SPAN></U>枚举类型值作为第一个参数传给<U><SPAN
lang=EN-US>IDirect3DDevice9::SetRenderState</SPAN></U>,并把第二个参数设置为<SPAN
lang=EN-US>TRUE,把第二个参数设置为FALSE则禁用抖动。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">有时,画一条线中的最后一个像素可能导致与周围图元的重叠。可以使用<U><SPAN
lang=EN-US>D3DRS_LASTPIXEL</SPAN></U>枚举值控制这种情况。但是,未经深思熟虑最好不要改变这个设置。在有些情况下,禁止渲染最后一个像素可能会导致图元之间的缝隙。<U><SPAN
lang=EN-US><o:p></o:p></SPAN></U></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">通过设置适当的画线模式可以画物体的轮廓。默认的画线状态是画实线。更多信息请参阅<U><SPAN
lang=EN-US>Direct3D扩展(D3DX)线段绘制</SPAN></U>渲染状态。<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1"><A
name=每顶点颜色状态><B><SPAN
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt; mso-fareast-language: ZH-CN">每顶点颜色状态<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></B></A></P><SPAN
style="mso-bookmark: 每顶点颜色状态"></SPAN>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P>当使用弹性顶点格式(<SPAN lang=EN-US>FVF)编码时,顶点可以同时包含顶点颜色和顶点法向的信息。默认情况下, Microsoft®
Direct3D®在计算光照时使用这些信息。要设置是否把顶点颜色用于光照计算,应该调用<U>IDirect3DDevice9::SetRenderState</U>方法,把<U>D3DRS_COLORVERTEX</U>作为第一个参数,把第二个参数设置为FALSE禁用顶点颜色光照,或TRUE启用之。<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">若每顶点颜色被启用,则应用程序可以配置系统从何处取得源顶点颜色信息。<U><SPAN
lang=EN-US>D3DRS_AMBIENTMATERIALSOURCE</SPAN></U>,<U><SPAN
lang=EN-US>D3DRS_DIFFUSEMATERIALSOURCE</SPAN></U>,<U><SPAN
lang=EN-US>D3DRS_EMISSIVEMATERIALSOURCE</SPAN></U>和<U><SPAN
lang=EN-US>D3DRS_SPECULARMATERIALSOURCE</SPAN></U>渲染状态控制相应环境反射色、漫反射色、放射色和镜面反射颜色成员的来源。每个状态可以被设置为<U><SPAN
lang=EN-US>D3DMATERIALCOLORSOURCE</SPAN></U>枚举类型的成员,该枚举类型定义了一些常数,通知系统是使用当前材质的颜色、顶点的漫反射颜色还是顶点的镜面反射颜色作为指定颜色成员的来源。<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P class=MsoNormal
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-outline-level: 1"><A
name=图元裁剪状态><B><SPAN
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt; mso-fareast-language: ZH-CN">图元裁剪状态<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></B></A></P><SPAN
style="mso-bookmark: 图元裁剪状态"></SPAN>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-fareast-language: ZH-CN">
<HR align=center w
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -