Cg(C for Graphic)语言语义绑定方法(转)
摘抄“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)语言语义词与语义绑定详述 (转)
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 语义词( Semantic )与语义绑定 ...
- 面向对象之(非)绑定方法,反射,isinstance与issubclass
isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查obj是否是类 cls 的对象 class Foo(object): pa ...
- Python编程-绑定方法、软件开发
一.绑定方法与非绑定方法 1.绑定方法 绑定给谁,谁来调用就自动将它本身当作第一个参数传入 (1)绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 类.boud_method( ...
- 完美的jquery事件绑定方法on()
在讲on()方法之前,我们先讲讲在on()方法出现前的那些事件绑定方法: .live() jQuery 1.3新增的live()方法,使用方法例如以下: $("#info_table td& ...
- Python面向对象-类、实例的绑定属性、绑定方法和__slots__
绑定属性 从之前的文章中,我们知道python是动态语言——实例可以绑定任意属性. 那如果实例绑定的属性和类的属性名一样的话,会是什么情况呢? >>> class Student(o ...
- python面向编程;类的绑定与非绑定方法、反射、内置方法
一.类的绑定与非绑定方法 ''' 类中定义函数分为了两大类: 1. 绑定方法 特殊之处: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入 绑定给对象的方法: 在类中定义函数没有被任何 ...
- jQuery中的事件绑定方法
在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...
- 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别
一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...
- Python绑定方法,未绑定方法,类方法,实例方法,静态方法
>>> class foo(): clssvar=[1,2] def __init__(self): self.instance=[1,2,3] def hehe(self): pr ...
随机推荐
- LINQ体验(18)——LINQ to SQL语句之视图和继承支持
视图 我们使用视图和使用数据表类似,仅仅需将视图从"server资源管理器/数据库资源管理器"拖动到O/R 设计器上,自己主动能够创建基于这些视图的实体类.我们能够同操作数据表一样 ...
- set -- $variable
1 set --的用途 给位置参数赋值. 2 $variable是如何赋值给位置参数的 假如variable=a b c?或者variable=a;b;c? 这里果然和IFS有关,默认情况下,vari ...
- __sizeof__()
https://bugs.python.org/issue2898 https://bugs.python.org/file10353/footprint.patch Index: Python/sy ...
- android studio Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"
android studio运行会遇到Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Reques ...
- 基于MATLAB的滤波算法
目前比较经典的图像去噪算法主要有以下三种: 均值滤波:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度 的平均值来代替每个像素的灰度.有效抑制加性噪声,但容易引起图像模糊, 可以对其进行改进, ...
- HDU3416 Marriage Match IV —— 最短路径 + 最大流
题目链接:https://vjudge.net/problem/HDU-3416 Marriage Match IV Time Limit: 2000/1000 MS (Java/Others) ...
- Android font
╔════╦════════════════════════════╦═════════════════════════════╗ ║ ║ FONT FAMILY ║ TTF FILE ║ ╠════ ...
- 【摘抄】u3d|unity学习教程与方法
小编,因为下面这句话,还是决定,只摘链接地址(来自百度经验): http://jingyan.baidu.com/article/19192ad820f17be53e570715.html 经验内容仅 ...
- codeforces 673D D. Bear and Two Paths(构造)
题目链接: D. Bear and Two Paths time limit per test 2 seconds memory limit per test 256 megabytes input ...
- HNOI2017 day1 T2 影魔
题目大意: 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄. 每一个灵魂,都有着 ...