游戏开发

本类阅读TOP10

·DirectX 9.0 SDK 开发包下载(April 2005)
·完成端口的深入理解及一种变态用法
·初学者的福音:游戏开发新手入门指南
·linux下编写OpenGL程序的一些准备工作
·《学VC、编游戏》重点算法解疑·快一点
·Windows的消息机制与消息重定向技术
·《魔兽世界》的寻路体系和作弊原理分析
·《学VC、编游戏》重点算法解疑·再快一点
·5月新开传奇私服|6月新开传奇私服|传奇私服|新区
·《学VC、编游戏》重点算法解疑·狩猎谋生

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
着色器和效果——1.6 用户定义函数

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

1.6 用户定义函数

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

HLSL中的函数有下例属性:

n        函数使用类似C++的语法

n        参数总是按值传递

n        递归不被支持

n        函数总是inline

此外,函数还加上了一些用于其上的额外的关键字。例如,考虑一个写在HLSL中的下面这个函数:

bool foo(in const bool b,   // input bool

         out int r1,        // output int

         inout float r2)    // input/output float

{

     if( b )               // test input value

     {

          r1 = 5;          // output a value through r1

     }

     else

     {

          r1 = 1;          // output a value through r1

     }

 

     // since r2 is inout we can use it as an input

     // value and also output a value through it

     r2 = r2 * r2 * r2;

 

     return true;

}

函数几乎和C++函数是一样的,除了inoutinout关键字:

n        in——指定型参argument,特指传递给实参的变量)应该在函数开始前被拷贝给实参。传入参数不必强制指定,因为实参默认是in的。例如,下面两段是等价的:

float square(in float x)

{

     return x * x;

}

也可以不强制指定in

float square(float x)

{

     return x * x;

}

n        out——指定实参应该在函数返回时被拷贝给型参。这样可以通过参数返回值。out关键字是必须的,因为HLSL不允许传递一个引用或一个指针。我们要注意:如果实参标记为out,在函数开始前,型参就不拷贝给实参。换句话说,out实参仅可以被用于输出数据——它不能用于输入。

void square(in float x, out float y)

{

     y = x * x;

}

这里,我们输入了要被乘方的数x,并且通过参数y返回了x的乘方。

n        inout——这是一个指示实参既用于输入又用于输出的快捷方法。如果要使用实参同时用作输入和输出,就指定inout

void square(inout float x)

{

     x = x * x;

}

这里,我们输入了要被乘方的数x,同时又通过x返回了的x的乘方。

 

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

 




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有