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

原创 2004年04月12日 12:27:00

1.4 关键字、语句和强制转换

阅读此文表明您已同意文末的声明<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.4.1 关键字

为便于参考,这里给出一个HLSL定义的关键字列表:

asm

bool

compile

const

decl

do

double

else

extern

false

float

for

half

if

in

inline

inout

int

matrix

out

pass

pixelshader

return

sampler

shared

static

string

struct

technique

texture

true

typedef

uniform

vector

vertexshader

void

volatile

while

 

 

 

 

下面的集合显示了被保留并且未使用但是将来可能成为关键字的标识符:

auto

break

case

catch

char

class

const_cast

continue

default

delete

dynamic cast

enum

explicit

friend

goto

long

mutable

namespace

new

operator

private

protected

public

register

reinterpret_cast

short

signed

sizeof

static_cast

switch

template

this

throw

try

typename

union

unsigned

using

virtual

 

 

 

1.4.2 基本程序流程

HLSL支持很多与C++相似的选择、重复、和一般程序流程语句。这些语句的语法和C++极为相似。

return语句:

return (expression);

ifif…else语句:

if( condition )

{

     statement(s);

}

 

if( condition )

{

     statement(s);

}

else

{

     statement(s);

}

for语句:

for(initial; condition; increment)

{

     statement(s);

}

while语句:

while( condition )

{

     statement(s);

}

do…while语句:

do

{

     statement(s);

}while( condition );

1.4.3 强制转换(casting

HLSL支持一种非常自由的强制转换设计。HLSL中强制转换的语法和C程序语言中的一样。例如要把float转换到matrix,我们写:

float f = 5.0f;

matrix m = (matrix)f;

从本书的例子中,你就能推断出这个转换语法的意思。但是,如果想要得到更详细的受支持的转换的信息,那么在DirectX SDK里,Content(内容)标签页下,看DirectX Graphics/Reference/Shader Reference/High Level Shading Language/Type就可以了。

 

[声明]:本文译自Frank Luna的《Introduction to 3D Game Programming with DirectX 9.0》,限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;本文仅用于学习交流与参考用途,不得用于任何形式的商业用途;如需转载需事先征得作者本人和译者的同意,保持文章的完整性,并注明作者、译者和出处,对于违反以上条款造成的后果,译者对此不负任何责任。我的邮箱地址是Raymond_King123@hotmail.com,欢迎热爱3D图形和游戏,并有一定图形编程经验的朋友来信交流。

 

SQL 表名 与关键字冲突

在用SQL创建数据库的表时,很多时候对于系统自带的关键字不是很在意,这意味着档我们创建表的时候,不太会在意一些潜在问题:比如 我想建一个用户表User 可是创建的时候,不通过,对于想建Group表  ...
  • mypurse
  • mypurse
  • 2010年07月24日 15:32
  • 3279

着色器和效果——0 概览

着色器和效果阅读此文表明您已同意文末的声明章节列表第一章:介绍高级着色语言第二章:介绍顶点着色器第三章:介绍像素着色器第四章:效果框架概览到现在为止,我们已经从修改设备状态的配置(如:矩阵变换,光照,...
  • RaymondKing
  • RaymondKing
  • 2004年04月07日 14:34
  • 2466

【《Unity着色器和屏幕特效开发秘笈》】学习整理:第一章

表面着色器学习整理
  • EverNess010
  • EverNess010
  • 2017年08月13日 12:07
  • 311

Java Volatile关键字和 Synchronized关键字的区别

在网上看了一些博客,在这里自己总结一下,以便以后自己可以看得懂。。 Volatile关键字的作用是不让线程在CPU缓存或者寄存器中进行写操作 因为线程在修改一个变量的时候  为了提高效率 通常会在寄...
  • u012760183
  • u012760183
  • 2016年04月29日 10:03
  • 231

介绍顶点着色器和像素着色器

目录:第一部分 顶点着色器第二部分 像素着色器第三部分 寄存器第四部分 教程(分别使用了D3D和OpenGL)第五部分 结论文档内容:第一部分 顶点着色器什么是顶点着色器?1 顶点着色器是一组指令代码...
  • leeeyupeng
  • leeeyupeng
  • 2010年12月29日 21:02
  • 1068

扭曲效果顶点着色器的实现(Shader特效5)

扭曲效果的实现 说在开始: 最近使用顶点着色器开发了一个扭曲的例子,在这里进行总结一些算法和开发过程。我都将我的代码放到了我的github上https://github.com/ModestB...
  • ModestBean
  • ModestBean
  • 2018年01月26日 13:30
  • 55

HLSL像素着色器

像素着色器替代了固定渲染管线的 多纹理化 阶段 实现步骤: 1.编写和编译像素着色器文件 2.创建像素着色器 3.设置像素着色器 //文本文件代码 //-----------------------...
  • lunweiwangxi3
  • lunweiwangxi3
  • 2015年04月03日 15:05
  • 797

使用着色器模拟雾效果

上一篇关于天空盒的blog谈到了雾效果,那么这次来讨论一下用着色器实现雾效果的具体实现方法. 雾在大自然中是一种常见的天气现象,比如清晨时分在山上就能看到这种效果.我们可以使用OpenGL轻松地...
  • zxx43
  • zxx43
  • 2014年11月18日 15:26
  • 910

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

1.2 编译HLSL着色器阅读此文表明您已同意文末的声明1.2.1 常量表每个着色器都有一个常量表(constant table),它用于存储着色器变量。D3DX库为我们提供了应用程序访问着色器常量表...
  • RaymondKing
  • RaymondKing
  • 2004年04月07日 14:59
  • 1975

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

第三章 介绍像素着色器阅读此文表明您已同意文末的声明像素着色器是在对每个像素进行光栅化处理期间在图形卡的GPU上执行的程序。(不像顶点着色器,Direct3D不会以软件模拟像素着色器的功能。)它实际上...
  • RaymondKing
  • RaymondKing
  • 2004年06月11日 10:24
  • 5229
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:着色器和效果——1.4 关键字、语句和强制转换
举报原因:
原因补充:

(最多只允许输入30个字)