Cg(CforGraphcis)语言基础.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Cg(CforGraphcis)语言基础

CG语言基础:(摘抄自《GPU编程与CG语言GPU-Programming-AndCgLanguage-Primer》)概述:Cg(C for Graphcis)语言,是NVIDIA 与Microsoft 合作研发,旨在为开发人员提供一套方便、跨平台(良好的兼容性),控制可编程图形硬件的高级语言。Cg 是一个可以被OpenGL 和Direct3D 广泛支持的图形处理器编程语言。数据类型:Cg 支持7 种基本的数据类型:1. float,32 位浮点数据,一个符号位。浮点数据类型被所有的profile 支持(但是DirectX8 pixel profiles 在一些操作中降低了浮点数的精度和范围);2. half,16 为浮点数据;3. int,32 位整形数据,有些profile 会将int 类型作为float 类型使用;4. fixed,12 位定点数,被所有的fragment profiles 所支持;5. bool,布尔数据,通常用于if 和条件操作符(?:),布尔数据类型被所有的profiles 支持;6. sampler*,纹理对象的句柄(the handle to a texture object)7. string,字符类型,该类型不被当前存在的profile 所支持,实际上也没有必要在Cg 程序中用到字符类型。向量:Cg 程序中可以声明float1、float2、float3、float4 类型的数组变量,但是不能声明超过4 元的向量。向量还可以通过较短的向量进行构建:float2 a = float2(1.0, 1.0);float4 b = float4(a, 0.0, 0.0);Cg 中向量、矩阵与数组是完全不同,向量和矩阵是内置的数据类型(矩阵基于向量),而数组则是一种数据结构,不是内置数据类型!矩阵:Cg 还提供矩阵数据类型,不过最大的维数不能超过4*4 阶。例如:float1x1 matrix1;//等价于float matirx1; x 是字符,并不是乘号!float2x3 matrix2;// 表示2*3 阶矩阵,包含6 个float 类型数据float4x2 matrix3;// 表示4*2 阶矩阵,包含8 个float 类型数据float4x4 matrix4;//表示4*4 阶矩阵,这是最大的维数。矩阵的初始化方式为:float2x3 matrix5 = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};数组:和C里基本一模一样。要获取数组长度,可以调用“.length”,例如:float a[10]; //声明一个数组int length = a.length;//获取数组长度结构体:结构体:目前的Cg 语言中的结构体以展现“封装”功能为主,并不支持继承机制。struct myAdd{ float val; float add(float x) { return val + x; }};myAdd s;使用符号“.”引用结构体中的成员变量和成员函数。例如:float a = s.value;float b = s.add(a);注意:在当前的所有的profile 版本下,如果结构体的一个成员函数使用了成员变量,则该成员变量要声明在前。此外,成员函数是否可以重载依赖于使用的profile 版本。struct VertexIn{float4 position : POSITION;float2 textureCoordinates : TEXCOORD0;};输入结构体,带有绑定语义:( Binding Semantics),所谓绑定语义类型是为了与宿主环境进行数据交换的时候识别不同数据类型的。目前Cg 支持的绑定语义类型包括POSTION 位置),COLOR(颜色),NORMAL(法向量),Texcoord(纹理坐标)等类型。表达式与控制语句:与C语言相同之处: ,=,!=,==,=,,,||,!,:*乘法;/除法;-取反;+加法;—减法;%求余;++;——;*=;/=;+=;-=注意:1.逻辑操作符也可以对向量使用,返回的变量类型是同样长度的内置bool向量。) 2.:Cg中的逻辑与()和逻辑或(||)不存在C中的短路现象(short-circuiting,即只用计算一个操作数的bool值即可),而是参与运算的操作数据都进行bool分析。 3.Cg语言对向量的数学操作提供内置支持,即所有数学操作都可以直接用在向量上。 4.求余操作符%。只能在int类型数据间进行 5.Cg语言中的移位操作符,功能和C语言中的一样,也可以作用在向量上,但是向量类型必须是int类型----不同的是: 1.Cg允许在向

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档