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

来源:互联网 发布:c与c加加 java 编辑:程序博客网 时间:2024/06/13 19:19

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

阅读此文表明您已同意文末的声明

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图形和游戏,并有一定图形编程经验的朋友来信交流。

 

原创粉丝点击