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