⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 纹理 (textures).htm

📁 此文件是微软MSDN中d3d部分资料的翻译文件
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P><SPAN lang=EN-US>Microsoft&reg; 
Direct3D&reg;应用程序可以把纹理坐标值赋给任何图元的任何顶点。更多细节,请参阅<U>纹理坐标</U>。一般来说,应用程序赋给顶点的u、v纹理坐标值在0.0到1.0范围内,闭区间。但是,通过把纹理坐标值赋为此范围外的值,应用程序可以创建某些特殊纹理效果。<o:p></o:p></SPAN></P>
<P>通过设置纹理寻址模式,应用程序可以控制当纹理坐标位于范围<SPAN lang=EN-US>[0.0, 
1.0]外时希望Direct3D执行何种操作。例如,应用程序可以设置寻址模式,使纹理平铺于图元表面。下面的主题包含了更多的细节。</SPAN></P>
<P><SPAN 
lang=EN-US>Direct3D使应用程序可以进行纹理环绕,很重要的一点是要注意把纹理寻址模式设为D3DTADDRESS_WRAP与进行纹理环绕并不相同。把纹理寻址模式设为D3DTADDRESS_WRAP会使源纹理的多个复本被贴到当前图元的表面,而启用纹理环绕则会改变系统对贴有纹理的多边形进行光栅化的方式。更多细节,请参阅<U>纹理环绕</U>。<o:p></o:p></SPAN></P>
<P>启用纹理环绕实际上使位于<SPAN lang=EN-US>[0.0, 
1.0]范围之外的纹理坐标无效,在这种情况下,对无效的纹理坐标进行光栅化操作将导致未定义的结果。当启用纹理环绕时,不会使用纹理寻址模式,同时应用程序应该注意不要给出小于0.0或大于1.0的纹理坐标。</SPAN></P>
<H2><SPAN 
style="FONT-FAMILY: 黑体; mso-fareast-language: ZH-CN; mso-ascii-font-family: Arial">设置寻址模式</SPAN><SPAN 
lang=EN-US style="mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></H2>
<P>应用程序可以通过调用<U><SPAN 
lang=EN-US>IDirect3DDevice9::SetSamplerState</SPAN></U>方法设置每个纹理层的纹理寻址模式,只需把纹理层的标识作为第一个参数,并把第二个参数设置为<SPAN 
lang=EN-US>D3DSAMP_ADDRESSU,D3DSAMP_ADDRESSV或D3DSAMP_ADDRESSW,就可以分别改变u,v或w寻址模式。<B 
style="mso-bidi-font-weight: normal">IDirect3DDevice9::SetSamplerState</B>方法的第三个参数决定要设置的模式,这是一个<U>D3DTEXTUREADDRESS</U>枚举类型值。要取得某一纹理层当前的纹理寻址模式,只需调用<U>IDirect3DDevice9::GetSamplerState</U>方法,把第二个参数设置为<U>D3DTEXTURESTAGESTATETYPE</U>枚举类型值,并把第三个参数设置为用于保存返回的寻址模式的变量的地址。<o:p></o:p></SPAN></P>
<H2><SPAN 
style="FONT-FAMILY: 黑体; mso-fareast-language: ZH-CN; mso-ascii-font-family: Arial">设备限制</SPAN><SPAN 
lang=EN-US style="mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></H2>
<P>虽然系统允许纹理坐标位于闭区间<SPAN 
lang=EN-US>0.0到1.0之外,但硬件限制通常会决定纹理坐标究竟可以超出该范围多少。当应用程序取得设备能力时,渲染设备通过<U>D3DCAPS9</U>结构的<B>MaxTextureRepeat</B>成员表明这个限制,这个成员的值描述了设备允许的纹理坐标的全部范围。例如,若这个值为128,则输入的纹理坐标必须保持在从-128.0到+128.0之间,若输入顶点的纹理坐标位于这个范围外,则纹理坐标是无效的。对自动生成的纹理坐标和由纹理坐标变换得到的纹理坐标也有同样的限制。<o:p></o:p></SPAN></P>
<P>对<B><SPAN lang=EN-US>MaxTextureRepeat</SPAN></B>的解释同时还受<SPAN 
lang=EN-US>D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE能力位的影响。若设置了这个能力位,则<B>D3DCAPS9</B>结构的<B>MaxTextureRepeat</B>成员的值正如前面描述的一样。但是,若没有设置该能力位,则纹理循环的限制还取决于纹理坐标寻址的那个纹理的大小。在这种情况下,<B>MaxTextureRepeat</B>必须除以当前mipmap中最大纹理的大小。例如,若纹理大小为32,而<B>MaxTextureRepeat</B>的值为512,则实际有效的纹理坐标的范围是512/32 
= 16,因此传给该设备的纹理坐标必须在范围-16.0到+16.0之间。</SPAN></P>
<P style="tab-stops: 281.35pt">以下主题包含了更多有关纹理寻址的信息:<SPAN lang=EN-US><SPAN 
style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></SPAN></P>
<UL type=disc>
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l11 level1 lfo4"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/Textures.htm#环绕纹理寻址模式"><SPAN 
  style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环绕纹理寻址模式</SPAN></A></SPAN></U> 

  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l11 level1 lfo4"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/Textures.htm#镜像纹理寻址模式"><SPAN 
  style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">镜像纹理寻址模式</SPAN></A></SPAN></U> 

  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l11 level1 lfo4"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/Textures.htm#截取纹理寻址模式"><SPAN 
  style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">截取纹理寻址模式</SPAN></A></SPAN></U> 

  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l11 level1 lfo4"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/Textures.htm#边框颜色纹理寻址模式"><SPAN 
  style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">边框颜色纹理寻址模式</SPAN></A></SPAN><SPAN 
  lang=EN-US><o:p></o:p></SPAN></U> </LI></UL>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US>
<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt">环绕纹理寻址模式</SPAN></B></A><B><SPAN 
lang=EN-US 
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt"><o:p></o:p></SPAN></B></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">
<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">环绕纹理寻址模式由<U><SPAN 
lang=EN-US>D3DTEXTUREADDRESS</SPAN></U>枚举类型的<SPAN 
lang=EN-US>D3DTADDRESS_WRAP成员表示,它会使Microsoft&reg; 
Direct3D&reg;在纹理坐标的整数边界重复使用该纹理。例如,设想应用程序创建了一个方的图元并把纹理坐标指定为(0.0,0.0), (0.0,3.0), 
(3.0,3.0)和(3.0,0.0),把纹理寻址模式设置为D3DTADDRESS_WRAP会使纹理在u和v方向都重复三次。<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><!--[if gte vml 1]><v:shapetype 
id=_x0000_t75 coordsize = "21600,21600" o:preferrelative = "t" o:spt = "75" 
filled = "f" stroked = "f" path = " m@4@5 l@4@11@9@11@9@5 xe"><v:stroke 
joinstyle = "miter"></v:stroke><v:formulas><v:f eqn = 
"if lineDrawn pixelLineWidth 0 "></v:f><v:f eqn = "sum @0 1 0 "></v:f><v:f eqn = 
"sum 0 0 @1 "></v:f><v:f eqn = "prod @2 1 2 "></v:f><v:f eqn = 
"prod @3 21600 pixelWidth "></v:f><v:f eqn = 
"prod @3 21600 pixelHeight "></v:f><v:f eqn = "sum @0 0 1 "></v:f><v:f eqn = 
"prod @6 1 2 "></v:f><v:f eqn = "prod @7 21600 pixelWidth "></v:f><v:f eqn = 
"sum @8 21600 0 "></v:f><v:f eqn = "prod @7 21600 pixelHeight "></v:f><v:f eqn = 
"sum @10 21600 0 "></v:f></v:formulas><v:path o:extrusionok = "f" 
gradientshapeok = "t" o:connecttype = "rect"></v:path><o:lock aspectratio="t" 
v:ext="edit"></o:lock></v:shapetype><v:shape id=_x0000_i1137 
style="WIDTH: 213pt; HEIGHT: 205.5pt" type = "#_x0000_t75" coordsize = 
"21600,21600"><v:imagedata o:title="wrap" src = 
"Textures_files/image001.gif"></v:imagedata></v:shape><![endif]--><![if !vml]><img border=0 width=284 height=274
src="Textures_files/image001.gif" v:shapes="_x0000_i1137"><![endif]><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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">这种纹理寻址模式的效果与镜像纹理寻址模式有些相似,却又明显不同。更多信息,请参阅<U>镜像纹理寻址模式</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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">
<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt">镜像纹理寻址模式</SPAN></B></A><B><SPAN 
lang=EN-US 
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt"><o:p></o:p></SPAN></B></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">
<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">镜像纹理寻址模式由<U><SPAN 
lang=EN-US>D3DTEXTUREADDRESS</SPAN></U>枚举类型的<SPAN 
lang=EN-US>D3DTADDRESS_MIRROR成员表示,它会使Microsoft&reg; 
Direct3D&reg;在纹理坐标的整数边界先对纹理进行镜像然后再重复使用。例如,设想应用程序创建了一个方的图元并把纹理坐标指定为(0.0,0.0), 
(0.0,3.0), 
(3.0,3.0)和(3.0,0.0),把纹理寻址模式设置为D3DTADDRESS_MIRROR会使纹理在u和v方向都重复三次,每一行和每一列的纹理都是相邻行和列的纹理的镜像。<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><!--[if gte vml 1]><v:shape 
id=_x0000_i1138 style="WIDTH: 213pt; HEIGHT: 205.5pt" type = "#_x0000_t75" 
coordsize = "21600,21600"><v:imagedata o:title="mirror" src = 
"Textures_files/image002.gif"></v:imagedata></v:shape><![endif]--><![if !vml]><img border=0 width=284 height=274
src="Textures_files/image002.gif" v:shapes="_x0000_i1138"><![endif]><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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">这种纹理寻址模式的效果与环绕纹理寻址模式有些相似,却又明显不同。更多信息,请参阅<U>环绕纹理寻址模式</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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">
<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt">截取纹理寻址模式</SPAN></B></A><B><SPAN 
lang=EN-US 
style="FONT-SIZE: 24pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-font-kerning: 18.0pt"><o:p></o:p></SPAN></B></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">
<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">截取纹理寻址模式由<U><SPAN 
lang=EN-US>D3DTEXTUREADDRESS</SPAN></U>枚举类型的<SPAN 
lang=EN-US>D3DTADDRESS_CLAMP成员表示,它会使Microsoft&reg; Direct3D&reg;把纹理坐标截取到[0.0, 
1.0]范围内,也就是说,这种模式只应用纹理一次,然后就重复使用纹理边缘处像素的颜色。例如,设想应用程序创建了一个方的图元并把纹理坐标指定为(0.0,0.0), 
(0.0,3.0), 
(3.0,3.0)和(3.0,0.0),把纹理寻址模式设置为D3DTADDRESS_CLAMP会使纹理只被应用一次,列的顶端和行的末端处像素的颜色被相应地延伸至图元的顶端和右边。<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">下图描绘了截取寻址模式。<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><!--[if gte vml 1]><v:shape 
id=_x0000_i1139 style="WIDTH: 267.75pt; HEIGHT: 180pt" type = "#_x0000_t75" 
coordsize = "21600,21600"><v:imagedata o:title="clamp" src = 
"Textures_files/image003.gif"></v:imagedata></v:shape><![endif]--><![if !vml]><img border=0 width=357 height=240
src="Textures_files/image003.gif" v:shapes="_x0000_i1139"><![endif]><o:p></o:p></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">
<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 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -