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

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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);

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航