美文网首页
5.2 数组类型

5.2 数组类型

作者: 代码咖啡 | 来源:发表于2018-08-26 16:37 被阅读7次

文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至简书平台,以此作为对自己读书的勉励。笔者用粗体斜体 标注了关键词句,望感兴趣的读者们一起学习共勉。猛戳这里查看更多!

5.2 数组类型

“General-purpose arrays can only be used as uniform parameters to a vertex program. The intent is to allow an application to pass arrays of skinning matrices and arrays of light parameters to a vertex program”(文献【3】的 Array 章节)。

在着色程序中,数组通常的使用目的是:作为从外部应用程序传入大量参数到 Cg 的顶点程序中的形参接口,例如与皮肤形变相关的矩阵数组,或者光照参数数组等。

简而言之,数组数据类型在 Cg 程序中的作用是:作为函数的形参,用于大量数据的转递

Cg 中声明数组变量的方式和 C 语言类似:例如:

float a[10]; //声明了一个数组,包含 10 个 float 类型数据
float4 b[10]; //声明了一个数组,包含 10 个 float4 类型向量数据

对数组进行初始化的方式为:

float a[4] = {1.0, 2.0, 3.0, 4.0}; //初始化一个数组

要获取数组长度,可以调用“.length”,例如:

float a[10]; //声明一个数组
int length = a.length; //获取数组长度

声明多维数组以及初始化的方式如下所示:

float b[2][3] = {{0.0, 0.0, 0.0},{1.0, 1.0, 1.0}}; 

对多维数组取长度的方式为:

int length1 = b.length;  // length1 值为 2
int length2 = b[0].length; // length2 值为 3

数组矩阵有些类似,但是并不是相同。例如 4*4 阶数组的的声明方式为:

float M[4][4];

阶矩阵的声明方式为:

float4x4 M。

前者是一个数据结构,包含 16 个 float 类型数据,后者是一个 4 阶矩阵数据。float4x4 M[4],表示一个数组,包含 4 个 4 阶矩阵数据。

进行数组变量声明时,一定要指定数组长度,除非是作为函数参数而声明的形参数组。并且在当前的 profiles 中,数组的长度和所引用的数组元素的地址必须在编译时就知道。

“Unsized arrays may only be declared as function parameters-they may not be declared as variables. Furthermore, in all current profiles, the actual array length and address calculations implied by array indexing must be known at compile time”(文献 【3】)。

由于形参数组的概念与函数的概念紧密结合,所以将在第 8 章的 8.1 函数章节中进行统一阐述。

相关文章

  • 5.2 数组类型

    文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至简书平台,以此...

  • JavaScript高级程序设计(第三版)5章

    Menu 第5章 引用类型5.1 Object类型5.2 Array类型5.4 RegExp 类型5.4.2 Re...

  • php版本进化

    以下只是简单记录:PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束PHP5.2:JSO...

  • 5.2 Array类型

    第2最常用类型。 特点: 数据的有序列表 数据的每一项可以保存任何类型的数据 数组的大小可以动态调整、自动增长 创...

  • 5.2 Array类型

    Array简介 创建Array的方式 使用构造器创建var colors = new Array();var co...

  • 1.数据类型-基本的数据类型

    布尔类型 数值类型 字符串类型 数组类型 ts定义数组有两种数组类型 元组类型 属于数组的一种: 可以给数组中的每...

  • Java中的二维数组

    1、声明数组并分配空间数组类型[][] 数组名 = new 数组类型[行数][列数];或数组类型[][] 数组名;...

  • flow中文文档(五)

    数组类型 快速语法 数组访问不安全 元组类型 Class类型 类泛型 数组类型 要创建数组类型,可以使用Array...

  • 10 C数组的使用

    1、why数组? 2、数组初始化 3、数组遍历 4、存储细节 5、使用中的注意点 5.1、基本注意点 5.2、和函...

  • Java 数组转List

    不使用流 原始类型数组转list: 包装类型数组转list: 使用流 原始类型数组转list: 包装类型数组转list:

网友评论

      本文标题:5.2 数组类型

      本文链接:https://www.haomeiwen.com/subject/uopoiftx.html