自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RaymondKing的专栏

RaymondKing的专栏——专属游戏程序员的Blog!

  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 着色器和效果——3.3 使用像素着色器的步骤

第三章 介绍像素着色器阅读此文表明您已同意文末的声明3.3 使用像素着色器的步骤下面的列表概述了创建和使用像素着色器的必要步骤:1.        编写并编译像素着色器2.        创建一个IDirect3DPixelShader9接口来代表基于已编译代码的像素着色器3.        用IDirect3DDevice9::SetPixelShader方法允许该像

2004-10-16 20:19:00 5850 1

原创 着色器和效果——3.2 像素着色器输入和输出

3.2 像素着色器输入和输出 两样东西要输入到像素着色器:颜色和纹理坐标。两样都是以每像素为单位的。 注意:回想一下,顶点颜色是在图元的面(face of primitive)间进行插值的。 每个像素的纹理坐标就是简单的 (u , v) 坐标,它指定了像素正准备被映射到的纹理的纹理单元。Direct3D按每个像素来计算颜色和纹理坐标,从顶点颜色和顶点纹理坐标,在进入像素着色器之前。输入到像素着色器

2004-07-08 21:19:00 5452 2

原创 着色器和效果——3.0 介绍像素着色器

第三章 介绍像素着色器阅读此文表明您已同意文末的声明像素着色器是在对每个像素进行光栅化处理期间在图形卡的GPU上执行的程序。(不像顶点着色器,Direct3D不会以软件模拟像素着色器的功能。)它实际上替换了固定功能管线的多纹理化阶段(the multitexturing stage),并赋予我们直接操纵单独的像素和访问每个像素的纹理坐标的能力。这种对像素和纹理坐标的直接访问使我们可以达成各

2004-06-11 10:24:00 6654

原创 着色器和效果——3.1 多纹理化概览

3.1 多纹理化概览阅读此文表明您已同意文末的声明多纹理化(Multitexturing)可能是能用像素着色器实现的最简单的技巧了。此外,因为像素着色器替换多纹理化阶段,那么接下来我们应该对多纹理化“是什么”和“做什么”有一个最基本的理解。本节介绍多纹理化的简明概览。当我们一开始讨论纹理化(texturing)的时候(译者注:对纹理化的讨论不在译文范围内,具体可参照原书第六章,本文是原

2004-06-11 10:23:00 4474

原创 着色器和效果——2.6 小结

2.6 小结阅读此文表明您已同意文末的声明n          使用顶点着色器,我们可以替换固定功能管线的变换和光照阶段。通过用我们自己的程序(顶点着色器)替换此固定处理,我们可以在图形效果方面获得我们能够达到的极大的自由性。n          顶点声明用于描述顶点格式。它们和自由顶点格式相似,但是更加自由并允许我们描述FVF不能描述的顶点格式。注意,如果顶点可以用FVF描述,我们仍

2004-05-19 22:32:00 3957

原创 着色器和效果——2.5 样例应用程序:卡通渲染(下)

2.5 样例应用程序:卡通渲染(下)阅读此文表明您已同意文末的声明2.5.3 轮廓勾勒要完成卡通效果,我们还需要勾勒(outline)轮廓边(silhouette edge)。这比卡通着色复杂一点。2.5.3.1 边的表示法我们将一个网格的一条边表示为一个四元组(从两个三角形构建)——参见图2.5。图 2.5:表示边的四元组我们选择四元组有两个原因:我们可以通过调整

2004-05-17 23:05:00 4549

原创 着色器和效果——2.4 样例应用程序:散射光照(下)

2.4 样例应用程序:散射光照(下)阅读此文表明您已同意文末的声明既然我们已经看到了实际的顶点着色器的代码,那么就让我们改变方式来看看应用程序的代码。这个应用程序有下列相关的全局变量:IDirect3DVertexShader9* DiffuseShader = 0;ID3DXConstantTable* DiffuseConstTable = 0; ID3DXMesh*

2004-05-17 17:13:00 4134

原创 着色器和效果——2.5 样例应用程序:卡通渲染(上)

2.5 样例应用程序:卡通渲染(上)阅读此文表明您已同意文末的声明作为第二个顶点着色器的例子,让我们编写两个顶点着色器,它们以卡通风格绘画的方式对网格着色(shade)和画轮廓(outline)。图17.2展示了这一点:图 2.2:(a)使用卡通着色法着色的对象(注意着色间的尖锐过渡)。(b)增强卡通效果,轮廓边(silhouette edge)被勾出。(c)使用标准散射光照着色的

2004-05-17 17:12:00 5371

原创 着色器和效果——2.4 样例应用程序:散射光照(上)

2.4 样例应用程序:散射光照(上)阅读此文表明您已同意文末的声明作为创建并使用顶点着色器的热身,我们写一个顶点着色器,它用一个方向(平行)光对每个顶点进行标准的散射光照。简而言之,散射光照根据顶点法线和光线向量(它指向光源方向)的角度计算顶点接收到的光线的数量。角度越小,则顶点接收到的光线就越多;而角度越大,则顶点接收到的光线就越少。如果角度大于等于90度,顶点就接收不到光线了。我们

2004-05-13 12:33:00 4306

原创 着色器和效果——2.3 使用顶点着色器的步骤

2.3 使用顶点着色器的步骤阅读此文表明您已同意文末的声明下面的列表概括了创建和使用顶点着色器的必须步骤。1.        编写并编译顶点着色器2.        创建一个IDirect3DVertexShader9接口以代表基于已编译着色器代码上的顶点着色器。3.        用IDirect3DDevice9:: SetVertexShader方法允许这个顶点着色器。

2004-05-12 17:05:00 5197

原创 着色器和效果——2.2 顶点数据用途

2.2 顶点数据用途阅读此文表明您已同意文末的声明考虑这个顶点声明:D3DVERTEXELEMENT9 decl[] ={{0,  0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_  POSITION, 0},{0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFA

2004-05-12 17:04:00 4835

原创 着色器和效果——2.1 顶点声明

2.1 顶点声明阅读此文表明您已同意文末的声明到现在为止,我们已经使用自由顶点格式(flexible vertex format,FVF)来描述顶点结构中的各分量。但是,在可编程管线中,我们的顶点数据可以包含比用FVF所能表达的多的多的数据。因此,我们通常使用更具表达性的并且更强有力的顶点声明(vertex declaration)。注意:我们仍然可以在可编程管线中使用FVF——如果我

2004-05-01 21:24:00 4597

原创 着色器和效果——2.0 介绍顶点着色器

第二章 介绍顶点着色器阅读此文表明您已同意文末的声明[译者序]经过上一章对HLSL的知识梳理,现在的你应该只有两种状态,第一种是已经焦头烂额没有兴趣再读下去了;另一种是觉得前面说的太容易了,读起来索然无味。如果你是第一种情况,那么建议你先补习一下计算机图形学和C++的知识,然后再来学习;如果你是第二种情况,那就对了!我们将从现在开始学习这最激动人心的三章。这三张可以说是涵盖了实用的Dire

2004-04-29 20:53:00 5803

原创 着色器和效果——1.8 小结

1.8 小结阅读此文表明您已同意文末的声明n        我们在ASCII文本文件中编写了HLSL程序,并且在我们的应用程序中使用D3DXCompileShaderFromFile函数编译了它们。n        ID3DXConstantTable接口允许我们在应用程序中对着色器程序中的变量进行设置。这种通信是必须的,因为被着色器使用的变量可以按一帧一帧的变化而改变。例如,如果应用

2004-04-20 23:22:00 3818

原创 着色器和效果——1.6 用户定义函数

1.6 用户定义函数阅读此文表明您已同意文末的声明HLSL中的函数有下例属性:n        函数使用类似C++的语法n        参数总是按值传递n        递归不被支持n        函数总是inline的此外,函数还加上了一些用于其上的额外的关键字。例如,考虑一个写在HLSL中的下面这个函数:bool foo(in const bool b,  

2004-04-20 23:17:00 3797

原创 着色器和效果——1.7 内建函数

1.7 内建函数阅读此文表明您已同意文末的声明HLSL有一个丰富的内建函数的集合,它们对3D图形来说非常有用。下表是一个删减了的列表。在下两章中,我们会使用这些函数中的一些进行实践。而现在,熟悉它们就够了。注意:要得到更多的参考,可以参看DirectX文档中内建HLSL函数的完整列表,在Content页下,然后到DirectX Graphics/Reference/Shader Ref

2004-04-20 23:17:00 4326

原创 着色器和效果——1.1编写HLSL着色器

1.1编写HLSL着色器阅读此文表明您已同意文末的声明我们可以直接把HLSL着色器代码作为一长串字符串编写进我们的应用程序源文件中。但是,更加方便和模块化的方法是把着色器的代码从应用程序代码中分离出来。因此,我们可以在记事本里编写我们的着色器代码,并将之保存进一般的ASCII文本文件中。然后再使用D3DXCompileShaderFromFile函数(1.2.2节)编译我们的着色器。作

2004-04-20 12:05:00 4837

原创 着色器和效果——1.3 变量类型

1.3 变量类型阅读此文表明您已同意文末的声明注意:除了下列各小节中描述的类型外,HLSL还有一些内建的对象类型(如:纹理对象(texture object))。但是,由于这些对象类型主要用于效果框架,我们将对其延迟到第4章讨论。1.3.1 数值类型HLSL支持下列数值类型(scalar type):n         bool——True或false值。注意,HLSL提供了t

2004-04-20 12:05:00 4011

原创 着色器和效果——1.5 操作符

1.5 操作符阅读此文表明您已同意文末的声明HLSL支持很多类似C++的操作符。除了很少一些底下注释的例外以外,他们的用法和C++里的完全一样。下表列出了HLSL的操作符:[] >  > =! = = =!&& ?:++ =-- =*

2004-04-12 12:45:00 4048 1

原创 着色器和效果——1.4 关键字、语句和强制转换

1.4 关键字、语句和强制转换阅读此文表明您已同意文末的声明1.4.1 关键字为便于参考,这里给出一个HLSL定义的关键字列表:asmboolcompileconstdecldodoubleelseexternfalsefloatforhalfif

2004-04-12 12:27:00 3882

原创 着色器和效果——1.2 编译HLSL着色器

1.2 编译HLSL着色器阅读此文表明您已同意文末的声明1.2.1 常量表每个着色器都有一个常量表(constant table),它用于存储着色器变量。D3DX库为我们提供了应用程序访问着色器常量表的接口ID3DXConstantTable。通过这个接口,我们可以在应用程序的代码中设置(set)着色器源代码中的变量。(译者注:这里的“设置”可以理解为“为…赋值”,比如上面一句也可以理

2004-04-07 14:59:00 2454

原创 着色器和效果——0 概览

着色器和效果阅读此文表明您已同意文末的声明章节列表第一章:介绍高级着色语言第二章:介绍顶点着色器第三章:介绍像素着色器第四章:效果框架概览到现在为止,我们已经从修改设备状态的配置(如:矩阵变换,光照,纹理,和渲染状态)得到了想要的效果。虽然这些多种多样的受支持的配置提供给了我们一些弹性,但是我们仍然受限于这些预定义的固定操作(因此被称作为“固定功能管线”)。这部

2004-04-07 14:34:00 2829

原创 着色器和效果——1.0 介绍高级着色语言

第一章       介绍高级着色语言阅读此文表明您已同意文末的声明概览在本章中,我们将描述高级顶点着色语言(High-Level Shading Language ,简称HLSL),我们用它编写以下三章的顶点和像素着色器。简单的说,顶点和像素着色器是我们编写并在图形卡的GPU(graphics processing unit)上执行小的自定义程序,它替换了固定功能管线的一部分。通过用我

2004-04-07 14:34:00 4155 2

C++ CLI In Acton

什么是 C++/CLI 个人感觉将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。C++ 既C++ 编程语言编程语言; CLI 即通用语言基础构造( Common Language Infrastructure ),这是一个支持动态组件编程模型的多层架构; 中间的斜线“ / ”,它往往为人们所忽略。其表示对 C++ 和 CLI 的一种绑定( binding ),它正是 C++/CLI 设计的焦点所在 据此,对于“什么是 C++/CLI ”这一问题可能的一种答案便是“它是对静态 C++ 对象模型和动态 CLI 组件模型的一种绑定”。

2008-11-18

C++ CLI In Action(1)

什么是 C++/CLI 个人感觉将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。C++ 既C++ 编程语言编程语言; CLI 即通用语言基础构造( Common Language Infrastructure ),这是一个支持动态组件编程模型的多层架构; 中间的斜线“ / ”,它往往为人们所忽略。其表示对 C++ 和 CLI 的一种绑定( binding ),它正是 C++/CLI 设计的焦点所在 据此,对于“什么是 C++/CLI ”这一问题可能的一种答案便是“它是对静态 C++ 对象模型和动态 CLI 组件模型的一种绑定”。

2008-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除