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

📄 纹理 (textures).htm

📁 此文件是微软MSDN中d3d部分资料的翻译文件
💻 HTM
📖 第 1 页 / 共 5 页
字号:
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_BORDER成员表示,该寻址模式会使Microsoft&reg; Direct3D&reg;对于位于[0.0, 
1.0]范围之外的纹理坐标使用一个被称为边框颜色的指定颜色。<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_i1140 style="WIDTH: 283.5pt; HEIGHT: 189pt" type = "#_x0000_t75" 
coordsize = "21600,21600"><v:imagedata o:title="border" src = 
"Textures_files/image004.gif"></v:imagedata></v:shape><![endif]--><![if !vml]><img border=0 width=378 height=252
src="Textures_files/image004.gif" v:shapes="_x0000_i1140"><![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><SPAN 
lang=EN-US>IDirect3DDevice9::SetSamplerState</SPAN></U>方法设置边框颜色。在调用时要把第一个参数设为想要设置的纹理层的标识,把第二个参数设为<SPAN 
lang=EN-US>D3DSAMP_BORDERCOLOR纹理层状态值,并把第三个参数设为以RGBA形式表示的新的边框颜色。<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>IDirect3DDevice9::UpdateTexture</SPAN></U>方法更新。当创建纹理时,整个纹理被标记为无效的。只有以下几种操作可以改变纹理的无效状态。<SPAN 
lang=EN-US><o:p></o:p></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: l0 level1 lfo5"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">给一个纹理添加一个无效区域。<SPAN 
  lang=EN-US><o:p></o:p></SPAN></SPAN> 
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l0 level1 lfo5"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">锁定纹理中的一些区域。此操作会把被锁定的区域添加到无效区域中,如果应用程序明确知道哪些是真正的无效区域,那么也可以关闭对无效区域的自动更新。<SPAN 
  lang=EN-US><o:p></o:p></SPAN></SPAN> 
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l0 level1 lfo5"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">将纹理作为目标表面进行更新的话会把整个纹理标记为无效的。<SPAN 
  lang=EN-US><o:p></o:p></SPAN></SPAN> 
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l0 level1 lfo5"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">对纹理调用<B 
  style="mso-bidi-font-weight: normal"><SPAN 
  lang=EN-US>IDirect3DDevice9::UpdateTexture</SPAN></B>方法会清除该纹理的所有无效区域。<SPAN 
  lang=EN-US><o:p></o:p></SPAN></SPAN> 
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l0 level1 lfo5"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">为了得到设备上下文(<SPAN 
  lang=EN-US>device 
  context)而调用<U>IDirect3DDevice9::GetDC</U>。<o:p></o:p></SPAN></SPAN> </LI></UL>
<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>mipmap纹理而言,无效区域被设在最高一级的纹理上,为了最小化对mipmap纹理中每一级的纹理更新所需复制的字节数,<B 
style="mso-bidi-font-weight: normal">IDirect3DDevice9::UpdateTexture</B>方法可以扩展无效区域并沿mipmap链更新子纹理。注意子级中无效区域的纹理坐标被向上舍入,也就是说,它们的小数部分被向上取整到纹理中最近的像素。<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>
<UL type=disc>
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l15 level1 lfo6"><U><SPAN 
  lang=EN-US 
  style="COLOR: blue; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">IDirect3DCubeTexture9::AddDirtyRect</SPAN></U><SPAN 
  lang=EN-US 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"> 
  <o:p></o:p></SPAN>
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l15 level1 lfo6"><U><SPAN 
  lang=EN-US 
  style="COLOR: blue; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">IDirect3DTexture9::AddDirtyRect</SPAN></U><SPAN 
  lang=EN-US 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"> 
  <o:p></o:p></SPAN>
  <LI class=MsoNormal 
  style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt; mso-list: l15 level1 lfo6"><U><SPAN 
  lang=EN-US 
  style="COLOR: blue; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">IDirect3DVolumeTexture9::AddDirtyBox</SPAN></U><SPAN 
  lang=EN-US 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><o:p></o:p></SPAN> 
  </LI></UL>
<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: 宋体">把以上方法的<I><SPAN 
lang=EN-US>pDirtyRect</SPAN></I>或<I><SPAN 
lang=EN-US>pDirtyBox</SPAN></I>参数设置为<SPAN 
lang=EN-US>NULL会扩大无效区域并使之覆盖整个纹理。<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>D3DLOCK_NO_DIRTY_UPDATE标志,使用这个标志可以防止对纹理无效区域的改变。更多信息,请参阅<U>锁定资源</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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">如果在锁定操作时可以得到已改变区域的完整集合,那么应用程序应该使用<SPAN 
lang=EN-US>D3DLOCK_NO_DIRTY_UPDATE标志。注意,对纹理一个的子级的锁定或复制操作(也就是说,未对纹理的最高一级进行锁定或复制操作)不会更新该纹理的无效区域。当应用程序锁定了纹理的子级而没有锁定纹理的最高一级时,它同样有责任对无效区域进行更新。<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 lang=EN-US 
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">Microsoft 
DirectX&reg; 9.0中的Microsoft&reg; 
Direct3D&reg;通过一组与<U>IDirect3DDevice9</U>对象相关联的256色调色板支持调色板纹理(paletted 
texture)。通过调用<U>IDirect3DDevice9::SetCurrentTexturePalette</U>方法可以设置当前调色板。当前调色板用于对所有已激活的纹理层中的所有调色板纹理进行颜色转换。<U>IDirect3DDevice9::SetPaletteEntries</U>方法可以更新调色板中的全部256个颜色项。每个颜色项都是一个用D3DFMT_A8R8G8B8格式表示的<U>PALETTEENTRY</U>结构,默认值为0xFFFFFFFF。<o:p></o:p></SPAN></P>
<P class=MsoNormal 
style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><B 
style="mso-bidi-font-weight: normal"><SPAN lang=EN-US 
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">IDirect3DDevice9</SPAN></B><SPAN 
style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">的调色板包含了一个阿尔法通道。若设备设置了<SPAN 
lang=EN-US>D3DPTEXTURECAPS_ALPHAPALETTE能力位,则表示该设备支持调色板阿尔法,并可以使用该阿尔法通道。当纹理格式不含阿尔法通道时,就使用调色板阿尔法通道。若设备不支持调色板阿尔法,同时纹理格式也不含阿尔法通道,则使用0xFF作为阿尔法值。<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>65,536个调色板。因为调色板占用的内存资源与应用程序引用到的最大的调色板编号成正比,所以最好使用从零开始且连续的编号。<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 
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-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>立方体环境贴图</U>。数组中的每个颜色值被称为<SPAN 
lang=EN-US>texel。每个texel在纹理中有唯一的地址,可以认为这个地址是行和列的编号,它们分别被标记为u和v。<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>(0,0)点。当把纹理贴到三维空间中图元的表面时,纹理的texel必须先被映射到对象坐标系,然后再变换到屏幕坐标系,或像素的位置。<o:p></o:p></SPAN></SPAN></P>

⌨️ 快捷键说明

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