cg資料型別

2021-09-23 07:33:23 字數 2074 閱讀 2208

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),分為6 類:sampler, sampler1d, sampler2d, sampler3d, samplercube,和samplerrect。directx profiles 不支援samplerrect 型別,除此之外這些型別被所有的pixelprofiles 和 nv40 vertex program profile 所支援(cgusersmanual 30 頁)。由此可見,在不遠的未來,頂點程式也將廣泛支援紋理操作;

7. string,字元型別,該型別不被當前存在的profile 所支援,實際上也沒有必要在cg 程式中用到字元型別,但是你可以通過cg runtime api 宣告該型別變數,並賦值;因此,該型別變數可以儲存cg 檔案的資訊。

cg還提供了內建的向量資料型別(built-in vector data types),內建的向量資料型別基於基礎資料型別。:向量最長不能超過4 元,即在cg 程式中可以宣告float1、float2、float3、float4 型別的陣列變數,但是不能宣告超過4 元的向量。

向量初始化方式一般為:

float4 array = float4(1.0, 2.0, 3.0, 4.0);

此外,cg 還提供矩陣資料型別,不過最大的維數不能超過4*4 階。

float4x4 matrix4;//表示4*4 階矩陣,這是最大的維數

矩陣的初始化方式為:

float2x3 matrix5 = ;

注意:cg 中向量、矩陣與陣列是完全不同,向量和矩陣是內建的資料型別(矩陣基於向量),而陣列則是一種資料結構,不是內建資料型別!這一點和c/c++中不太一樣,在c/c++中,這三者同屬於資料結構,陣列可以構建向量和矩陣。

陣列型別

在著色程式中,陣列通常的使用目的是:作為從外部應用程式傳入大量引數到cg 的頂點程式中的形參介面,例如與**形變相關的矩陣陣列,或者光照引數陣列等。

簡而言之,陣列資料型別在cg 程式中的作用是:作為函式的形參,用於大量資料的轉遞。

cg 中宣告陣列變數的方式和c 語言類似。

進行陣列變數宣告時,一定要指定陣列長度,除非是作為函式引數而宣告的形引數組。

結構型別

cg 語言支援結構體(structure),實際上cg 中的結構體的宣告、使用和c++非常類似(只是類似,不是相同)。結構裡面有變數和函式。

注意:在當前的所有的profile 版本下,如果結構體的乙個成員函式使用了成員變數,則該成員變數要宣告在前。此外,成員函式是否可以過載依賴於使用的profile 版本。

一般來說,cg 的源**都會在檔案首部定義二個結構體,分別用於定義輸人和輸出的型別,這二個結構體定義與普通的c 結構定義不同,除了定義結構體成員的資料型別外,還定義了該成員的繫結語義型別( binding semantics),所謂繫結語義型別是為了與宿主環境進行資料交換的時候識別不同資料型別的。目前cg 支援的繫結語義型別包括postion 位置),color(顏色),normal(法向量),texcoord(紋理座標)等型別。

型別轉換

cg 中的型別轉換和c 語言中的型別轉換很類似。c 語言中型別轉換可以是強制型別轉換,也可以是隱式轉換,如果是後者,則資料型別從低精度向高精度轉換。在cg 語言中也是如此。

cg 語言中對於常量資料可以加上型別字尾,表示該資料的型別。

常量的型別字尾(type suffix)有3 種:

f :表示 float;

h: 表示 half;

x: 表示 fixed

posted on 2016-12-30 18:07收藏

cg資料型別

cg 支援7 種基本的資料型別 float,32 位浮點資料,乙個符號位。浮點資料型別被所有的profile 支援 但是directx8 pixel profiles 在一些操作中降低了浮點數的精度和範圍 half,16 為浮點資料 int,32 位整形資料,有些profile 會將int 型別作為...

CG學習記錄(一)資料型別

1.float 32位浮點數,乙個符號位 2.half 16位浮點數 3.int 32位整型資料 4.fixed 12位定點數 5.bool 布林值 6.sampler 紋理物件控制代碼 包括sampler,sampler1d,sample2d,sample3d,samplecube,sampler...

資料型別基礎資料型別

資料型別 基礎型別 除八大基礎型別其他的都是引用型資料型別 引用資料型別 基礎資料型別 整型 byte 佔乙個位元組,範圍 128 127 short 佔兩個位元組,範圍 32768 32767 int 最常用 佔四個位元組,範圍 2147483648 2147483647 long 佔八個位元組 ...