<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[RaymondKing的专栏]]></title><description><![CDATA[RaymondKing的专栏——专属游戏程序员的Blog！]]></description><link>https://blog.youkuaiyun.com/RaymondKing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; RaymondKing]]></copyright><item><title><![CDATA[着色器和效果——3.3 使用像素着色器的步骤]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/139227</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/139227</guid><author>RaymondKing</author><pubDate>Sat, 16 Oct 2004 20:19:00 +0800</pubDate><description><![CDATA[第三章 介绍像素着色器阅读此文表明您已同意文末的声明3.3 使用像素着色器的步骤下面的列表概述了创建和使用像素着色器的必要步骤：1.        编写并编译像素着色器2.        创建一个IDirect3DPixelShader9接口来代表基于已编译代码的像素着色器3.        用IDirect3DDevice9::SetPixelShader方法允许该像]]></description><category></category></item><item><title><![CDATA[着色器和效果——3.2 像素着色器输入和输出]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/37321</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/37321</guid><author>RaymondKing</author><pubDate>Thu, 08 Jul 2004 21:19:00 +0800</pubDate><description><![CDATA[3.2 像素着色器输入和输出 两样东西要输入到像素着色器：颜色和纹理坐标。两样都是以每像素为单位的。 注意：回想一下，顶点颜色是在图元的面（face of primitive）间进行插值的。 每个像素的纹理坐标就是简单的 (u , v) 坐标，它指定了像素正准备被映射到的纹理的纹理单元。Direct3D按每个像素来计算颜色和纹理坐标，从顶点颜色和顶点纹理坐标，在进入像素着色器之前。输入到像素着色器]]></description><category></category></item><item><title><![CDATA[着色器和效果——3.0 介绍像素着色器]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20338</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20338</guid><author>RaymondKing</author><pubDate>Fri, 11 Jun 2004 10:24:00 +0800</pubDate><description><![CDATA[第三章 介绍像素着色器阅读此文表明您已同意文末的声明像素着色器是在对每个像素进行光栅化处理期间在图形卡的GPU上执行的程序。（不像顶点着色器，Direct3D不会以软件模拟像素着色器的功能。）它实际上替换了固定功能管线的多纹理化阶段（the multitexturing stage），并赋予我们直接操纵单独的像素和访问每个像素的纹理坐标的能力。这种对像素和纹理坐标的直接访问使我们可以达成各]]></description><category></category></item><item><title><![CDATA[着色器和效果——3.1 多纹理化概览]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20339</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20339</guid><author>RaymondKing</author><pubDate>Fri, 11 Jun 2004 10:23:00 +0800</pubDate><description><![CDATA[3.1 多纹理化概览阅读此文表明您已同意文末的声明多纹理化（Multitexturing）可能是能用像素着色器实现的最简单的技巧了。此外，因为像素着色器替换多纹理化阶段，那么接下来我们应该对多纹理化“是什么”和“做什么”有一个最基本的理解。本节介绍多纹理化的简明概览。当我们一开始讨论纹理化（texturing）的时候（译者注：对纹理化的讨论不在译文范围内，具体可参照原书第六章，本文是原]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.6 小结]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20337</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20337</guid><author>RaymondKing</author><pubDate>Wed, 19 May 2004 22:32:00 +0800</pubDate><description><![CDATA[2.6 小结阅读此文表明您已同意文末的声明n          使用顶点着色器，我们可以替换固定功能管线的变换和光照阶段。通过用我们自己的程序（顶点着色器）替换此固定处理，我们可以在图形效果方面获得我们能够达到的极大的自由性。n          顶点声明用于描述顶点格式。它们和自由顶点格式相似，但是更加自由并允许我们描述FVF不能描述的顶点格式。注意，如果顶点可以用FVF描述，我们仍]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.5 样例应用程序：卡通渲染（下）]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20336</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20336</guid><author>RaymondKing</author><pubDate>Mon, 17 May 2004 23:05:00 +0800</pubDate><description><![CDATA[2.5 样例应用程序：卡通渲染（下）阅读此文表明您已同意文末的声明2.5.3 轮廓勾勒要完成卡通效果，我们还需要勾勒（outline）轮廓边（silhouette edge）。这比卡通着色复杂一点。2.5.3.1 边的表示法我们将一个网格的一条边表示为一个四元组（从两个三角形构建）——参见图2.5。图 2.5：表示边的四元组我们选择四元组有两个原因：我们可以通过调整]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.4 样例应用程序：散射光照（下）]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20334</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20334</guid><author>RaymondKing</author><pubDate>Mon, 17 May 2004 17:13:00 +0800</pubDate><description><![CDATA[2.4 样例应用程序：散射光照（下）阅读此文表明您已同意文末的声明既然我们已经看到了实际的顶点着色器的代码，那么就让我们改变方式来看看应用程序的代码。这个应用程序有下列相关的全局变量：IDirect3DVertexShader9* DiffuseShader = 0;ID3DXConstantTable* DiffuseConstTable = 0; ID3DXMesh* ]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.5 样例应用程序：卡通渲染（上）]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20335</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20335</guid><author>RaymondKing</author><pubDate>Mon, 17 May 2004 17:12:00 +0800</pubDate><description><![CDATA[2.5 样例应用程序：卡通渲染（上）阅读此文表明您已同意文末的声明作为第二个顶点着色器的例子，让我们编写两个顶点着色器，它们以卡通风格绘画的方式对网格着色（shade）和画轮廓（outline）。图17.2展示了这一点：图 2.2：（a）使用卡通着色法着色的对象（注意着色间的尖锐过渡）。（b）增强卡通效果，轮廓边（silhouette edge）被勾出。（c）使用标准散射光照着色的]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.4 样例应用程序：散射光照（上）]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20333</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20333</guid><author>RaymondKing</author><pubDate>Thu, 13 May 2004 12:33:00 +0800</pubDate><description><![CDATA[2.4 样例应用程序：散射光照（上）阅读此文表明您已同意文末的声明作为创建并使用顶点着色器的热身，我们写一个顶点着色器，它用一个方向（平行）光对每个顶点进行标准的散射光照。简而言之，散射光照根据顶点法线和光线向量（它指向光源方向）的角度计算顶点接收到的光线的数量。角度越小，则顶点接收到的光线就越多；而角度越大，则顶点接收到的光线就越少。如果角度大于等于90度，顶点就接收不到光线了。我们]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.3 使用顶点着色器的步骤]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20332</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20332</guid><author>RaymondKing</author><pubDate>Wed, 12 May 2004 17:05:00 +0800</pubDate><description><![CDATA[2.3 使用顶点着色器的步骤阅读此文表明您已同意文末的声明下面的列表概括了创建和使用顶点着色器的必须步骤。1.        编写并编译顶点着色器2.        创建一个IDirect3DVertexShader9接口以代表基于已编译着色器代码上的顶点着色器。3.        用IDirect3DDevice9:: SetVertexShader方法允许这个顶点着色器。]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.2 顶点数据用途]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20331</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20331</guid><author>RaymondKing</author><pubDate>Wed, 12 May 2004 17:04:00 +0800</pubDate><description><![CDATA[2.2 顶点数据用途阅读此文表明您已同意文末的声明考虑这个顶点声明：D3DVERTEXELEMENT9 decl[] ={{0,  0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_  POSITION, 0},{0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFA]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.1 顶点声明]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20330</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20330</guid><author>RaymondKing</author><pubDate>Sat, 01 May 2004 21:24:00 +0800</pubDate><description><![CDATA[2.1 顶点声明阅读此文表明您已同意文末的声明到现在为止，我们已经使用自由顶点格式（flexible vertex format，FVF）来描述顶点结构中的各分量。但是，在可编程管线中，我们的顶点数据可以包含比用FVF所能表达的多的多的数据。因此，我们通常使用更具表达性的并且更强有力的顶点声明（vertex declaration）。注意：我们仍然可以在可编程管线中使用FVF——如果我]]></description><category></category></item><item><title><![CDATA[着色器和效果——2.0 介绍顶点着色器]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20329</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20329</guid><author>RaymondKing</author><pubDate>Thu, 29 Apr 2004 20:53:00 +0800</pubDate><description><![CDATA[第二章 介绍顶点着色器阅读此文表明您已同意文末的声明[译者序]经过上一章对HLSL的知识梳理，现在的你应该只有两种状态，第一种是已经焦头烂额没有兴趣再读下去了；另一种是觉得前面说的太容易了，读起来索然无味。如果你是第一种情况，那么建议你先补习一下计算机图形学和C++的知识，然后再来学习；如果你是第二种情况，那就对了！我们将从现在开始学习这最激动人心的三章。这三张可以说是涵盖了实用的Dire]]></description><category></category></item><item><title><![CDATA[着色器和效果——1.8 小结]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20328</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20328</guid><author>RaymondKing</author><pubDate>Tue, 20 Apr 2004 23:22:00 +0800</pubDate><description><![CDATA[1.8 小结阅读此文表明您已同意文末的声明n        我们在ASCII文本文件中编写了HLSL程序，并且在我们的应用程序中使用D3DXCompileShaderFromFile函数编译了它们。n        ID3DXConstantTable接口允许我们在应用程序中对着色器程序中的变量进行设置。这种通信是必须的，因为被着色器使用的变量可以按一帧一帧的变化而改变。例如，如果应用]]></description><category></category></item><item><title><![CDATA[着色器和效果——1.7 内建函数]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20327</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20327</guid><author>RaymondKing</author><pubDate>Tue, 20 Apr 2004 23:17:00 +0800</pubDate><description><![CDATA[1.7 内建函数阅读此文表明您已同意文末的声明HLSL有一个丰富的内建函数的集合，它们对3D图形来说非常有用。下表是一个删减了的列表。在下两章中，我们会使用这些函数中的一些进行实践。而现在，熟悉它们就够了。注意：要得到更多的参考，可以参看DirectX文档中内建HLSL函数的完整列表，在Content页下，然后到DirectX Graphics/Reference/Shader Ref]]></description><category></category></item><item><title><![CDATA[着色器和效果——1.6 用户定义函数]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20326</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20326</guid><author>RaymondKing</author><pubDate>Tue, 20 Apr 2004 23:17:00 +0800</pubDate><description><![CDATA[1.6 用户定义函数阅读此文表明您已同意文末的声明HLSL中的函数有下例属性：n        函数使用类似C++的语法n        参数总是按值传递n        递归不被支持n        函数总是inline的此外，函数还加上了一些用于其上的额外的关键字。例如，考虑一个写在HLSL中的下面这个函数：bool foo(in const bool b,  ]]></description><category></category></item><item><title><![CDATA[着色器和效果——1.3 变量类型]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20323</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20323</guid><author>RaymondKing</author><pubDate>Tue, 20 Apr 2004 12:05:00 +0800</pubDate><description><![CDATA[1.3 变量类型阅读此文表明您已同意文末的声明注意：除了下列各小节中描述的类型外，HLSL还有一些内建的对象类型（如：纹理对象（texture object））。但是，由于这些对象类型主要用于效果框架，我们将对其延迟到第4章讨论。1.3.1 数值类型HLSL支持下列数值类型（scalar type）：n         bool——True或false值。注意，HLSL提供了t]]></description><category></category></item><item><title><![CDATA[着色器和效果——1.1编写HLSL着色器]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20321</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20321</guid><author>RaymondKing</author><pubDate>Tue, 20 Apr 2004 12:05:00 +0800</pubDate><description><![CDATA[1.1编写HLSL着色器阅读此文表明您已同意文末的声明我们可以直接把HLSL着色器代码作为一长串字符串编写进我们的应用程序源文件中。但是，更加方便和模块化的方法是把着色器的代码从应用程序代码中分离出来。因此，我们可以在记事本里编写我们的着色器代码，并将之保存进一般的ASCII文本文件中。然后再使用D3DXCompileShaderFromFile函数（1.2.2节）编译我们的着色器。作]]></description><category></category></item><item><title><![CDATA[着色器和效果——1.5 操作符]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20325</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20325</guid><author>RaymondKing</author><pubDate>Mon, 12 Apr 2004 12:45:00 +0800</pubDate><description><![CDATA[1.5 操作符阅读此文表明您已同意文末的声明HLSL支持很多类似C++的操作符。除了很少一些底下注释的例外以外，他们的用法和C++里的完全一样。下表列出了HLSL的操作符：[] >  > =! = = =!&& ?:++ =-- =*]]></description><category></category></item><item><title><![CDATA[着色器和效果——1.4 关键字、语句和强制转换]]></title><link>https://blog.youkuaiyun.com/RaymondKing/article/details/20324</link><guid>https://blog.youkuaiyun.com/RaymondKing/article/details/20324</guid><author>RaymondKing</author><pubDate>Mon, 12 Apr 2004 12:27:00 +0800</pubDate><description><![CDATA[1.4 关键字、语句和强制转换阅读此文表明您已同意文末的声明1.4.1 关键字为便于参考，这里给出一个HLSL定义的关键字列表：asmboolcompileconstdecldodoubleelseexternfalsefloatforhalfif]]></description><category></category></item></channel></rss>