【引用】 Cg(C for Graphic)语言语义绑定方法
2015-12-28 14:01
281 查看
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 语义绑定方法 入口函数输入\ 输出数据的绑定语义有4 四种方法(文献【3 】第260 页) 1. 绑定语义放在函数的参数列表的参数声明后面中: [const] [in | out | inout]<type><identifier> [ : <binding-semantic>][=<initializer>] 其中, const 作为可选项,修辞形参数据; in 、 out 、 inout 作为可选项,说明数据的调用方式; type 是必选项,声明数据的类型; identifier 是必选项,形参变量名;一个冒号 “ : ” 加上一个绑定语义,是可选项;最后是初始化参数,是可选项。如下代码所示。形参列表中的参数一、参数二绑定到输入语义;参数三、参数四绑定到输出语义;尽管参数一和参数 3 的绑定语义词一样,但前者是输入语义,后者是输出语义,所以这两个参数数据所对应的硬件位置是不一样的。 void mian_v(float4 position_obj : POSITION, float3 normal_obj : NORMAL, out float4 oPosition : POSITION, out float4 oColor : COLOR, uniform float4x4 modelViewProj) { ……………… } 2. 绑定语义可以放在结构体( struct )的成员变量后面: struct <struct-tag> { <type><identifier> [:<binding-semantic >]; }; 举例如下,结构 C2E1v_Outpu 中的 2 个成员变量分别绑定到语义 POSITION 和 COLOR ,然后在 C2E1v_green 顶点程序入口函数中输出,所以 C2E1v_Outpu 中的语义是输出语义。 struct C2E1v_Output { float4 position : POSITION; float3 color : COLOR; }; C2E1v_Output C2E1v_green(float2 position : POSITION) { C2E1v_Output OUT; OUT.position = float4(position,0,1); OUT.color = float3(0,1,0); return OUT; } 3. 绑定语义词可以放在函数声明的后面,其形式为: <type> <identifier> (<parameter-list>) [:<binding-semantic] { <body> } 如下代码所示,顶点入口函数的声明后带有“ COLOR ”语义词,表示该函数需要反馈一个颜色值,所以函数的返回类型为 float4 ,函数体也必须以 return 语句结束。 float4 main_v(float4 position: POSITION, out float4 oposition : POSITION, uniform float4x4 modelViewProj):COLOR { oposition = mul(modelViewProj,position); float4 ocolor = float4(1.0,0,0,0); return ocolor; } 4. 最后一种语义绑定的方法是,将绑定语义词放在全局非静态变量的声明后面。其形式为: <type> <identifier> [:<binding-semantic>][=<initializer>]; 这种形式的结构很不紧凑,也不利于代码的维护和阅读,所以并不常见,不建议读者使用。事实上,我在学习和研究过程中也很少碰到这种形式。
相关文章推荐
- 【引用】 Cg(C for Graphic)语言语义词与语义绑定详述
- 【引用】 Cg(C for Graphic)语言关键字
- 【引用】Cg(C for Graphic)语言表达式与控制语句
- 【引用】 Cg(c for graphic)语言的数据类型
- 【引用】Cg profiles,如何使用CGC编译Cg语言
- 【引用】Cg(C for Graphic)语言概述
- Android中BroadCastReceiver使用
- 【引用】 着色语言比较,以及HLSL VS GLSL VS CG
- java后台读取properties中的配置文件
- SQL 通用数据类型
- JAVA_DES 加密 解密 生成随机密钥
- Unity 自定义地形(可刷地形、材质和种树)(一)
- 你真的理解大数据吗?
- 文档的编码格式问题
- java类加载的先后顺序
- 属性动画要素(简记)
- 下拉刷新
- [leetcode] 21. Merge Two Sorted Lists 解题报告
- Caffe学习系列(11):图像数据转换成db(leveldb/lmdb)文件
- 一些移动开发的前端框架分享