摘抄“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)语言语义绑定方法(转)的更多相关文章

  1. Cg(C for Graphic)语言语义词与语义绑定详述 (转)

    摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 语义词( Semantic )与语义绑定 ...

  2. 面向对象之(非)绑定方法,反射,isinstance与issubclass

    isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查obj是否是类 cls 的对象 class Foo(object): pa ...

  3. Python编程-绑定方法、软件开发

    一.绑定方法与非绑定方法 1.绑定方法 绑定给谁,谁来调用就自动将它本身当作第一个参数传入 (1)绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 类.boud_method( ...

  4. 完美的jquery事件绑定方法on()

    在讲on()方法之前,我们先讲讲在on()方法出现前的那些事件绑定方法: .live() jQuery 1.3新增的live()方法,使用方法例如以下: $("#info_table td& ...

  5. Python面向对象-类、实例的绑定属性、绑定方法和__slots__

    绑定属性 从之前的文章中,我们知道python是动态语言——实例可以绑定任意属性. 那如果实例绑定的属性和类的属性名一样的话,会是什么情况呢? >>> class Student(o ...

  6. python面向编程;类的绑定与非绑定方法、反射、内置方法

    一.类的绑定与非绑定方法 ''' 类中定义函数分为了两大类: 1. 绑定方法 特殊之处: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入 绑定给对象的方法: 在类中定义函数没有被任何 ...

  7. jQuery中的事件绑定方法

    在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...

  8. 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别

    一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...

  9. Python绑定方法,未绑定方法,类方法,实例方法,静态方法

    >>> class foo(): clssvar=[1,2] def __init__(self): self.instance=[1,2,3] def hehe(self): pr ...

随机推荐

  1. LINQ体验(18)——LINQ to SQL语句之视图和继承支持

    视图 我们使用视图和使用数据表类似,仅仅需将视图从"server资源管理器/数据库资源管理器"拖动到O/R 设计器上,自己主动能够创建基于这些视图的实体类.我们能够同操作数据表一样 ...

  2. set -- $variable

    1 set --的用途 给位置参数赋值. 2 $variable是如何赋值给位置参数的 假如variable=a b c?或者variable=a;b;c? 这里果然和IFS有关,默认情况下,vari ...

  3. __sizeof__()

    https://bugs.python.org/issue2898 https://bugs.python.org/file10353/footprint.patch Index: Python/sy ...

  4. 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 ...

  5. 基于MATLAB的滤波算法

    目前比较经典的图像去噪算法主要有以下三种: 均值滤波:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度  的平均值来代替每个像素的灰度.有效抑制加性噪声,但容易引起图像模糊,  可以对其进行改进, ...

  6. HDU3416 Marriage Match IV —— 最短路径 + 最大流

    题目链接:https://vjudge.net/problem/HDU-3416 Marriage Match IV Time Limit: 2000/1000 MS (Java/Others)    ...

  7. Android font

    ╔════╦════════════════════════════╦═════════════════════════════╗ ║ ║ FONT FAMILY ║ TTF FILE ║ ╠════ ...

  8. 【摘抄】u3d|unity学习教程与方法

    小编,因为下面这句话,还是决定,只摘链接地址(来自百度经验): http://jingyan.baidu.com/article/19192ad820f17be53e570715.html 经验内容仅 ...

  9. 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 ...

  10. HNOI2017 day1 T2 影魔

    题目大意: 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄. 每一个灵魂,都有着 ...