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

📄 像素着色器 (pixel shaders).htm

📁 此文件是微软MSDN中d3d部分资料的翻译文件
💻 HTM
📖 第 1 页 / 共 5 页
字号:
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/PixelShaders.htm#_确认对像素着色器的支持"><SPAN 
  style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">确认对像素着色器的支持</SPAN></A></SPAN></U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"> – </SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">提供了更为详细的说明,解释如何检测硬件对像素着色器的支持。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l2 level1 lfo7"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/PixelShaders.htm#_对纹理的一些考虑"><SPAN 
  style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">纹理操作的转换</SPAN></A></SPAN></U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"> – </SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">提供了一些把纹理操作转换为像素着色器指令的例子。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l2 level1 lfo7"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/PixelShaders.htm#_对纹理的一些考虑"><SPAN 
  style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对纹理的一些考虑</SPAN></A></SPAN></U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"> – </SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">详细说明了在像素着色器中被忽略的纹理层状态。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l2 level1 lfo7"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/PixelShaders.htm#_像素着色器示例"><SPAN 
  style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">像素着色器示例</SPAN></A></SPAN></U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"> – </SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">显示了更多的示例代码,添加纹理并把顶点颜色和纹理进行混合。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l2 level1 lfo7"><U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><A 
  href="http://www.gesoftfactory.com/developer/PixelShaders.htm#_调试"><SPAN 
  style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">调试</SPAN></A></SPAN></U><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"> – </SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">提供了有关调试的信息。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: 宋体">指令集的变化非常快。为避免在使用指令时出现问题,请查阅硬件开发商的网站。或者,也可以使用<U>高级着色器语言</U>,这样就可以得到由<SPAN 
lang=EN-US>Direct3D扩展(D3DX)编译得到的着色器指令。<o:p></o:p></SPAN></SPAN></P>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US>
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<H1><A name=_创建像素着色器></A><SPAN style="mso-fareast-language: ZH-CN">创建像素着色器<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></H1>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><SPAN lang=EN-US>
<HR align=center width="100%" SIZE=1>
</SPAN></DIV>
<P><SPAN 
style="mso-fareast-language: ZH-CN">本示例用像素着色器对一个四边形的漫反射色进行高洛德插值。示例显示了着色器文件的内容以及应用程序中所需的代码。<SPAN 
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P><SPAN style="mso-fareast-language: ZH-CN">以下是创建像素着色器所需的步骤:<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: l10 level1 lfo8"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN">1</SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">步:检查对像素着色器的支持。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l10 level1 lfo8"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN">2</SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">步:声明顶点数据。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l10 level1 lfo8"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN">3</SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">步:设计像素着色器。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l10 level1 lfo8"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN">4</SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">步:创建像素着色器。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><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: l10 level1 lfo8"><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">第</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN">5</SPAN><SPAN 
  style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">步:渲染输出像素。</SPAN><SPAN 
  lang=EN-US style="mso-fareast-language: ZH-CN"><o:p></o:p></SPAN> </LI></UL>
<P><A name=Step_1></A><SPAN 
style="mso-fareast-language: ZH-CN">如果读者已经知道如何构建并运行<SPAN 
lang=EN-US>Direct3D示例,那么可以从本示例中复制代码并粘贴到已有的应用程序中。<o:p></o:p></SPAN></SPAN></P>
<H2><SPAN style="mso-fareast-language: ZH-CN">第<SPAN 
lang=EN-US>1步<o:p></o:p></SPAN></SPAN></H2>
<P><SPAN style="mso-fareast-language: ZH-CN">要检查对像素着色器的支持,应该使用以下代码。这个例子检查<SPAN 
lang=EN-US>1.1版本的像素着色器。<o:p></o:p></SPAN></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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">D3DCAPS9 
caps;<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">m_pd3dDevice-&gt;GetDeviceCaps(&amp;caps);<SPAN 
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN><SPAN style="COLOR: blue">//</SPAN><SPAN style="COLOR: green"> 
使用m_pd3dDevice前要进行初始化</SPAN><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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">if( 
caps.PixelShaderVersion &lt; D3DPS_VERSION(1,1) )<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><SPAN 
style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN>return E_FAIL;<o:p></o:p></SPAN></P>
<P><SPAN lang=EN-US 
style="mso-fareast-language: ZH-CN">caps结构会返回硬件可用的能力。要用D3DPS_VERSION宏检查当前硬件支持的所有着色器版本。如果caps返回的版本小于1.1,那么这个调用会失败。反之,对所有大于或等于1.1的版本,调用会成功。如果硬件不支持被测试的着色器版本,那么应用程序将不得不退而使用别的渲染方法(也许可以使用一个较低版本的着色器)。<o:p></o:p></SPAN></P>
<H2><A name=Step_2></A><SPAN style="mso-fareast-language: ZH-CN">第<SPAN 
lang=EN-US>2步<o:p></o:p></SPAN></SPAN></H2>
<P><SPAN 
style="mso-fareast-language: ZH-CN">这个示例使用了一个四边形,由两个三角形组成。每个顶点的数据结构包含了位置和漫反射色数据。<SPAN 
lang=EN-US>D3DFVF_CUSTOMVERTEX宏定义了与顶点数据相匹配的数据结构。实际的顶点数据在全局数组g_Vertices中声明。四个顶点以原点为中心,每个顶点具有不同的漫反射色。<o:p></o:p></SPAN></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"><A 
name=Step_3></A><SPAN lang=EN-US 
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">// 
声明顶点数据结构。<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">struct 
CUSTOMVERTEX<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">{<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><SPAN 
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>FLOAT x, y, 
z;<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><SPAN 
style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>DWORD 
diffuseColor;<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">};<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><o:p>&nbsp;</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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">// 
声明自定义FVF宏。<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体">#define 
D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)<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-fareast-language: ZH-CN; mso-bidi-font-family: 宋体"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal 

⌨️ 快捷键说明

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