??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本电影在线,欧美成人自拍,欧美jizzhd精品欧美喷水 http://www.shnenglu.com/wc250en007/category/16924.html前进的\?/description>zh-cnThu, 05 Jan 2012 09:10:03 GMTThu, 05 Jan 2012 09:10:03 GMT60点着色器入门http://www.shnenglu.com/wc250en007/archive/2012/01/05/163612.htmlLet me see seeLet me see seeThu, 05 Jan 2012 02:45:00 GMThttp://www.shnenglu.com/wc250en007/archive/2012/01/05/163612.htmlhttp://www.shnenglu.com/wc250en007/comments/163612.htmlhttp://www.shnenglu.com/wc250en007/archive/2012/01/05/163612.html#Feedback0http://www.shnenglu.com/wc250en007/comments/commentRss/163612.htmlhttp://www.shnenglu.com/wc250en007/services/trackbacks/163612.html

点着色器(vertex shader)是一个在囑Ş卡的GPU上执行的E序Q它替换了固定功能管U?fixed function pipeline)中的变换(transformation)和光?lighting)阶段?q不是百分之癄正确Q因为顶点着色器可以被Direct3Dq行?Direct3D runtime)以Y件模拟,如果g不支持顶点着色器的话)。图17.1说明了管U中点着色器替换的部件?/p>

  

  从图17.1Q我们知道,点以局部坐标输入到点着色器Qƈ且必输出齐ơ剪裁空间的有颜色的点?l投q阵变换顶点后的空间称作齐ơ剪裁空?homogeneous clip space)。因此,要把一个顶点从局部空间变换到齐次坐标I间Q我们必d用下列变换序列:世界变换(world transformation)Q视囑֏?view transformation)和投影变?projection transformation)Q它们分别由世界矩阵Q视囄阵和投媄矩阵来完成?对于点元(point primitive)Q顶点着色器也被用于操作每个点的顶点大?/p>

  ׃点着色器是我?在HLSL?写的一个自定义E序Q因此我们在囑Ş效果斚w获得了极大的自由性。我们不再受限于Direct3D的固定光照算法。此外,应用E序操纵点位置的能力也有了多样性,例如Qcloth simulationQ粒子系l的点大操U,q有点混合/morphing。此外,我们的顶Ҏ据结构更自由了,q且可以在可~程线中包含比在固定功能管U中多得多的数据?/p>

  点着色器仍然是相Ҏ的特性,q且许多囑Ş卡不支持它们Q特别是?a style="font-family: Arial; color: rgb(31,58,135); text-decoration: underline" target="_blank">DirectX 9发布的较新版本的点着色器。通过查D3DCAPS9l构的VertexShaderVersion成员Q可以测试顶点着色器的版本。下列代码段展示了这一点:

 

以下是引用片D:
 // If the device's supported version is less than version 2.0 
  if( caps.VertexShaderVersion < D3DVS VERSION(2, 0) ) 
  // Then vertex shader version 2.0 is not supported on this device.
  我们看到D3D_VERSION的两个参数分别接收主和次版本受现在,D3DXCompileShaderFromFile函数支持点着色器版本1.1?.0?

  17.1点声明

  我们已经使用自由点格式(flexible vertex formatQFVF)来描q顶点结构中的各分量。但是,在可~程线中,点数据包含的数据比用FVF所能表辄多很多。因此,我们通常使用更具表达性ƈ且更强大的顶点声?vertex declaration)。注意:如果FVF能够描述我们的顶Ҏ式我们仍然可以在可编E管U中使用它?span style="color: red">不管用何U方法,只是Z方便Q同样FVF会在内部被{换ؓ一个顶点声明?/span>

  17.1.1 描述点声明

  我们一个顶点声明描qCؓ一个D3DVERTEXELEMENT9l构的数l。D3DVERTEXELEMENT9数组中的每个成员描述了一个顶点的分量。所以,如果你的点l构有三个分?例如Q位|、法Uѝ颜?Q那么其相应的顶点声明将描述3个D3DVERTEXELEMENT9l构的数l。这个D3DVERTEXELEMENT9l构定义如下Q?/p>

  

以下是引用片D:
typedef struct _D3DVERTEXELEMENT9 { 
  BYTE Stream; 
  BYTE Offset; 
  BYTE Type; 
  BYTE Method; 
  BYTE Usage; 
  BYTE UsageIndex; 
  } D3DVERTEXELEMENT9;
  Stream——指定与顶点分量相兌的流

  ffset——偏移Q按字节Q相对于点l构成员的顶点分量的开始。例如,如果点l构是:

  

以下是引用片D:
struct Vertex 
  { 
  D3DXVECTOR3 pos; 
  D3DXVECTOR3 normal; 
  };
  ……pos分量的偏UL0Q因为它是第一个分?normal分量的偏UL12Q因为sizeof(pos) = 12。换句话_normal分量以Vertex的第12个字节ؓ开始?

  Type——指定数据cd。它可以是D3DDECLTYPE枚Dcd的Q意成?完整列表请参见文。常用类型如下:

  D3DDECLTYPE_FLOAT1——点数?/p>

  D3DDECLTYPE_FLOAT2——2D点向量

  D3DDECLTYPE_FLOAT3——3D点向量

  D3DDECLTYPE_FLOAT4——4D点向量

  D3DDECLTYPE_D3DCOLOR—D3DCOLORcdQ它扩展为RGBA点颜色向量(r g b a)Q其每一分量都是归一化到区间[0, 1]了的?/p>

  Method——指定|格化方法。我们认个参数是高的,因此我们使用默认|标识为D3DDECLMETHOD_DEFAULT.?/p>

  Usage——指定已计划的寚w点分量的使用。例如,它是否准备用于一个位|向量、法U向量、纹理坐标等?有效的用途标识符(usage identifier)是D3DDECLUSAGE枚Dcd的:

  

以下是引用片D:
typedef enum _D3DDECLUSAGE { 
  D3DDECLUSAGE_POSITION = 0, // Position. 
  D3DDECLUSAGE_BLENDWEIGHTS = 1, // Blending weights. 
  D3DDECLUSAGE_BLENDINDICES = 2, // Blending indices. 
  D3DDECLUSAGE_NORMAL = 3, // Normal vector. 
  D3DDECLUSAGE_PSIZE = 4, // Vertex point size. 
  D3DDECLUSAGE_TEXCOORD = 5, // Texture coordinates. 
  D3DDECLUSAGE_TANGENT = 6, // Tangent vector. 
  D3DDECLUSAGE_BINORMAL = 7, // Binormal vector. 
  D3DDECLUSAGE_TESSFACTOR = 8, // Tessellation factor. 
  D3DDECLUSAGE_POSITIONT = 9, // Transformed position. 
  D3DDECLUSAGE_COLOR = 10, // Color. 
  D3DDECLUSAGE_FOG = 11, // Fog blend value. 
  D3DDECLUSAGE_DEPTH = 12, // Depth value. 
  D3DDECLUSAGE_SAMPLE = 13 // Sampler data. 
  } D3DDECLUSAGE;
  D3DDECLUSAGE_PSIZEcd用于指定一个顶点的大小。它用于点精灵,因此我们可以Z每个点控制其大。一个D3DDECLUSAGE_POSITION成员的顶点声明意味着q个点已经被变换,它通知囑Ş卡不要把q个点送到点处理阶段(变Ş和光??

  UsageIndex——用于标识多个相同用途的点分量。这个用途烦引是位于区间[0, 15]间的一个整数。例如,假设我们有三个用途ؓD3DDECLUSAGE_NORMAL的顶点分量。我们可以ؓW一个指定用途烦引ؓ0QؓW二个指定用途烦引ؓ1Qƈ且ؓW三个指定用途烦引ؓ2。按q种方式Q我们可以通过其用途烦引标识每个特定的法线?/p>

  点描述声明的例子:假设我们惌描述的顶Ҏ式由位置向量和三个法U向量组成。顶点声明可以指定如下:

 

以下是引用片D:
 D3DVERTEXELEMENT9 decl[] = 
  { 
  {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, 
  {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0}, 
  {0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 1}, 
  {0, 36, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 2}, 
  D3DDECL_END() 
  };
  D3DDECL_END宏用于初始化D3DVERTEXELEMENT9数组的最后一个顶点元素。同LQ注意法向量的用途烦引标{?

  17.1.2 创徏点声明

  一旦你描述了一个顶点声明ؓD3DVERTEXELEMENT9数组Q我们就可以使用下面的方法获得一个IDirect3DVertexDeclaration9接口指针Q?/p>

  

以下是引用片D:
HRESULT IDirect3DDevice9::CreateVertexDeclaration( 
  CONST D3DVERTEXELEMENT9* pVertexElements, 
  IDirect3DVertexDeclaration9** ppDecl 
  );
  pVertexElements——D3DVERTEXELEMENT9l构数组Q它描述我们惌创徏的顶点声明?

  ppDecl——用于q回创徏的IDirect3DVertexDeclaration9接口指针

  例子调用Q其中decl是一个D3DVERTEXELEMENT9数组Q?/p>

  IDirect3DVertexDeclaration9* _decl = 0;

  hr = _device->CreateVertexDeclaration(decl, &_decl);

  17.1.3 使用一个顶点声?/p>

  回忆一下:自由点格式是一个方便的Ҏƈ且在内部转换成了点声明。因此,当直接用顶点声明,我们不再需要调用:Device->SetFVF( fvf );

  相反Q我们调用:Device->SetVertexDeclaration( _decl );

  其中Q_decl是一个IDirect3DVertexDeclaration9接口指针?/p>

  17.2点数据用?/p>

  考虑q个点声明Q?/p>

  

以下是引用片D:
D3DVERTEXELEMENT9 decl[] = 
  { 
  {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, 
  {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0}, 
  {0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 1}, 
  {0, 36, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 2}, 
  D3DDECL_END() 
  };

我们需要一U方式,来定义一个顶点声明的元素到顶点着色器的Inputl构的数据成员的映射。我们在Inputl构中通过指定每个数据成员的语?: usage-type [usage-index])定义q个映射。语义通过元素的用途类型和用途烦引标识顶点声明中的一个元素。由数据成员的语义标识的点元素是得以映到数据成员的元素。例如,对应于前面的点声明的输入结构是Q?br /> 

 

以下是引用片D:
 struct VS_INPUT 
  { 
  vector position : POSITION; 
  vector normal : NORMAL0; 
  vector faceNormal1 : NORMAL1; 
  vector faceNormal2 : NORMAL2; 
  };
  注意Q如果我们遗漏了用途烦引,意味着用途烦引ؓ零。例如,POSITION和POSITION0是同一样东ѝ?

  q里decl中的元素0Q由用途POSITION和用途烦?标识Q它映射到position。decl中的元素1Q由用途NORMAL和用途烦?标识Q它映射到normal。decl中的元素2Q由NORMAL和用途烦?标识Q它映射到faceNormal1。decl中的元素3Q由用途NORMAL和用途烦?标识Q它映射到faceNormal2?/span>

  受支持的点着色器输入用?input usage)是:

  POSITION [n]——位置

  BLENDWEIGHTS [n]——混合权重

  BLENDINDICES [n]——混合索引

  NORMAL [n]——法线向量

  PSIZE[n]——点大小

  DIFFUSE [n]——散射颜色

  SPECULAR [n]——镜面颜色

  TEXCOORD [n]——U理坐标

  其中Qn是一个位于区间[0, 15]的可选整数?/p>

  此外Q对于输出结构,我们必须指定每个成员是用来做什么的。例如,数据成员应该被作Z|向量、颜艌Ӏ纹理坐标等对待?囑Ş卡没LQ除非你强制的告诉它。这也需要通过语法的语义来完成Q?/p>

 

以下是引用片D:
 struct VS_OUTPUT 
  { 
  vector position : POSITION; 
  vector diffuse : COLOR0; 
  vector specular : COLOR1; 
  };
  受支持的点着色器输出用途是Q?

  POSITION—位置

  PSIZE—点大小

  FOG—雾؜合?/p>

  COLOR [n]—点颜色。注意:可以有多个顶炚w色被输出Qƈ且这些颜色可以被混合在一起以产生最l的颜色?/p>

  TEXCOORD [n]—点U理坐标。注意:多个点U理坐标可以被输出?/p>

  其中Qn是一个位于区间[0, 15]的可选整数?/p>

原文q接Q?a href="http://www.shnenglu.com/lovedday/category/6620.html">http://www.shnenglu.com/lovedday/category/6620.html



Let me see see 2012-01-05 10:45 发表评论
]]>
高着色语aHLSL入门(?http://www.shnenglu.com/wc250en007/archive/2011/05/21/146846.htmlLet me see seeLet me see seeSat, 21 May 2011 00:08:00 GMThttp://www.shnenglu.com/wc250en007/archive/2011/05/21/146846.htmlhttp://www.shnenglu.com/wc250en007/comments/146846.htmlhttp://www.shnenglu.com/wc250en007/archive/2011/05/21/146846.html#Feedback0http://www.shnenglu.com/wc250en007/comments/commentRss/146846.htmlhttp://www.shnenglu.com/wc250en007/services/trackbacks/146846.html

 

高着色语aHLSL入门Q?Q?/strong>      摘要: 大多数函数已l重载以使其可以Ҏ有内建类型有意义。例如,absҎ有数值类型有意义Q所以它为所有这些数值类型进行了重蝲。又例如Q叉U的叉乘仅对 3D向量有意义,所以它Ҏ有类型的3D向量Q比如:intQfloatQdouble?D向量Q进行了重蝲。另一斚wQ线性插?#8212;—lerpQ对于数倹{?D?D?D向量有意义,因此重蝲了这些类型?nbsp;
 
高着色语aHLSL入门Q?Q?/strong>      摘要: HLSL有一个丰富的内徏函数的集合,它们?D囑Ş来说非常有用。下表是一个删减了的列表,注意Q要得到更多的参考,可以参看DirectX文中内建HLSL函数的完整列表?nbsp;
 
高着色语aHLSL入门Q?Q?/strong>      摘要: Z于参考,q里l出一个HLSL定义的关键字列表Q?/div>
 
高着色语aHLSL入门Q?Q?/strong>      摘要: HLSL支持下列数值类型(scalar typeQ:

bool—True or false value. Note that HLSL provides the true and false keywords.

int—32bit signed integer

half—16bit floating-point number

float—32bit floating-point number

double—64bit floating-point number

注意Q一些^C支持int, half, and doublecdQ这时我们?floatcd模拟?nbsp; 
 
高着色语aHLSL入门Q?Q?/strong>      摘要: 下一个方法就是设|常量的默认|q些默认值在声明时初始化。这个方法应该在应用E序建立QsetupQ期间被调用一?Qcalled onceQ?nbsp;
 
高着色语aHLSL入门Q?Q?/strong>      摘要: 每个着色器有一个常量表Q用来保存它的变量。D3DX库通过ID3DXConstantTable接口Q提供给应用E序讉K着色器的常量表。通过q个接口我们能够在应用程序中讄着色器源代码中的变量?

我们现在描述ID3DXConstantTable接口的方法列表的实现Q全部的列表h阅Direct3D文档?nbsp; 
 
高着色语aHLSL入门Q?Q?/strong>      摘要: 在我们写的程序里点和像素是很小的对象,它们由GPU来执行,是固定功能管U的一部分。用我们自己写的着色器E序替换一部分固定功能线Q在l制效果上我们获得很大的灉|性。我们不再局限于预定义的"固定"操作?

Z~写着色器E序Q我们需要一U高U着色器语言QHigh-Level Shading Language Q简UHLSLQ?。在DirectX 8中,着色器是用低着色器汇编语言~写的。幸q的是,我们不必再用汇编语言来写着色器了,DirectX 9支持一U高U着色器语言来写?/div>

 



Let me see see 2011-05-21 08:08 发表评论
]]>Direct3D9 Fx/HLSL的若q条有用的笔讎ͼ转)http://www.shnenglu.com/wc250en007/archive/2011/05/21/146845.htmlLet me see seeLet me see seeSat, 21 May 2011 00:02:00 GMThttp://www.shnenglu.com/wc250en007/archive/2011/05/21/146845.htmlhttp://www.shnenglu.com/wc250en007/comments/146845.htmlhttp://www.shnenglu.com/wc250en007/archive/2011/05/21/146845.html#Feedback0http://www.shnenglu.com/wc250en007/comments/commentRss/146845.htmlhttp://www.shnenglu.com/wc250en007/services/trackbacks/146845.html 

Direct3D中的Shader是这LQ?/p>

1. ASM Shader是最元老的也是DX8主要使用Shader

2. fxc~译器可以同时编译ASM,HLSL和fx脚本,其中HLSL和fx可以查看~译后的GPU汇编代码

3. D3D9中,fx?strong style="color: black; background-color: #99ff99">HLSL的一U渲染脚本,化了HLSL讄及常量绑定,q且附带RenderStateBlock及设|?/p>

但只能用于制作简单的Shader

4. DirectXSDK中有一个概忉|؜淆:C++例子中的BasicHLSL使用的其实还是fxQHLSLwithoutEffects例子才是真正的纯HLSL

5.fx?strong style="color: black; background-color: #99ff99">HLSLE序鉴别Q?/p>

使用fxE序必定含有QD3DXCreateEffectXXX pd函数Q?ID3DXEffect对象Q渲染中能看到SetTechniqueQBeginPassQEndPass之类的字?/p>

使用U?strong style="color: black; background-color: #99ff99">HLSLE序含有QD3DXCompileShaderQID3DXConstantTable对象QGetConstantByNameQGetConstantDesc之类的字?/p>

6. 在fx中包含有 VertexShaderQPixelShader代码及profileQentryQRenderState讄及简单的l制q程(pass)。一ơ编译后QVS,PS,Texture,Sampler及常量都是在ID3DXEffect对象中自动完成,无需手动讄?/p>

7. HLSL可以VS及PS代码写入1?hlsl文g。注意,以下q种代码可以?strong style="color: black; background-color: #99ff99">HLSL中编译过Q但实际没有M效果

   1:  sampler_state
   2:  {
   3:      Texture = <tex>;
   4:      MipFilter = LINEAR;
   5:      MinFilter = LINEAR;
   6:      MagFilter = LINEAR;
   7:  };
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

q点可以参考AMD RenderMonkey中只在shader中用sampler而忽略texture?/p>

8. fx中往shader讄U理使用的是ID3DXBaseEffect::SetTexture下的q个函数

   1:  HRESULT SetTexture(
   2:    D3DXHANDLE hParameter,
   3:    LPDIRECT3DBASETEXTURE9 pTexture
   4:  );
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

但是?strong style="color: black; background-color: #99ff99">HLSL中,q点变得很ȝQ需要手动设|,可以参考这?a href="http://www.shnenglu.com/liangairan/articles/57971.html">文章

Shader代码片段Q?/p>

   1:  sampler Samp0 = sampler_state
   2:  {
   3:      Texture = <Tex0>;
   4:      MipFilter = LINEAR;
   5:      MinFilter = LINEAR;
   6:      MagFilter = LINEAR;
   7:  };
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

~译HLSL代码后得到ConstantTableQ然后取出句柄:

   1:  ScalarHandle = pixelConstTable->GetConstantByName(0, "Scalar");
   2:   
   3:  Samp0Handle = pixelConstTable->GetConstantByName(0, "Samp0");
   4:   
   5:  Samp1Handle = pixelConstTable->GetConstantByName(0, "Samp1");
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

再从句柄取出symbol的描qͼ

   1:  UINT count;
   2:   
   3:  pixelConstTable->GetConstantDesc(Samp0Handle, & Samp0Desc, &count);
   4:   
   5:  pixelConstTable->GetConstantDesc(Samp1Handle, & Samp1Desc, &count);
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

通过上面的描qͼ纹理变量的寄存器偏UM为纹理的stage

8.  优化帔R讄速度的方法一般就是根据字W串取出句柄Q以后每ơ渲染时Q只通过句柄讄。但ID3DXConstantTable最后还是通过

IDirect3DDevice9::SetPixelShaderConstantX pd函数来实现的

   1:  HRESULT SetPixelShaderConstantF(
   2:    UINT StartRegister,
   3:    CONST float * pConstantData,
   4:    UINT Vector4fCount
   5:  );
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

9. HLSL一D包含VS和PS代码~译完成后,得到VS和PS两个单独的ID3DXConstantTable



Let me see see 2011-05-21 08:02 发表评论
]]> ˾þþƷһ| 99REþþƷﶼǾƷ| 97Ʒþ찴Ħ | Ůþþþþ| 99þֻƷ| þó˾ƷƵ| þۺϾþڹ| ˾ھƷþþþ| 69Ʒþþþ9999APGF| þ99Ʒþþþ| þþþúǿ׊| þþþŮ˾ƷëƬ| ޾ƷۺϾþ| 99ȶǾƷþþþþ| 2021ƷۺϾþ| av˾þۺɫ| þþþ97Һ| aaaƷþþùƬ| þ޾ƷƷ | þþƷƷ| 2021þùԲľƷ| þרƷ| þþþþþۺۺϺݺ| 91ƷѾþþþþþþ| 99þѹۺϾƷ| һһþۺϺݺ | þþþAV| þùƷþ| Ʒžžžþþž| þþžžƷ99Ʒ| ҹƷþþþþþ| þþƷAVӰԺ| þþþþƵ| þþþþþƷͼƬ | þþƷҹɫA| þþƷѹƬС| ƷŮٸaѾþ| þƵ6| ޹Ƶþ| ޡvþþ뾫Ʒ| þþŮһ|