Cg語言中文說明文件(三)

2021-08-09 06:16:06 字數 1824 閱讀 9410

每個宣告中的宣告符可以選擇乙個指定的語法,語法指定了變數如何在程式執行時連線到環境。所有的語法都是profile指定的,雖然有一部分嘗試跨profile組成,但他們在不同的profile中擁有不同的意思。每個profile規範必須指定一系列profile可以理解的語法,以及當profile沒有指定的語法的時產生的行為

在c中函式宣告是必須的。沒有返回值的函式必須被宣告為void返回型別。沒有引數的函式可以使用兩種方式來宣告

functionname(void)

functionname()

函式可以宣告為靜態,如果是靜態的,他們可以不被編譯為程式,並且對外部是不可見的

函式過載和可選引數

cg支援函式過載。你可以定義多個同名的函式,實際被呼叫的函式在呼叫方使用的引數型別。最符合的將被呼叫。具有初始化的尾參是可選引數。定義乙個具有可選引數的函式,相當於過載了多個函式,區別在於有沒有多乙個可選的引數。初始化的值只在沒有對應引數的時候才會被使用,而如果有了該引數,初始化值就會被忽略

由profile過載函式

cg支援由編譯profile來過載函式。這個功能允許不同的profile實現不同版本的函式。因為不同的profiles可能支援不同的語言功能的子集,所以這個功能就非常有用。因為可能不能的profiles下,最有效率的函式實現是不同的。

profile名字必須置於函式宣告的返回型別之前。例如,為profilea和profileb定義兩個不同版本的myfunc函式

profilea float myfunc(float x){…}

profileb float myfunc(float x){…}

如果使用了typedef定義了乙個型別,其名稱和profile一樣,那麼這個識別符號在檔案接下來的任何位置,將被視為型別而非profile

如果乙個函式沒有包含乙個profile定義,函式將被認為是乙個open-profile函式,open-profile函式對所有profile可用

有幾種profile的萬用字元已經被定義了,va代表任何vertex的profile,pa可以通配任何fragmen或pixel的profile。ps_1,ps_2分別通配任何dx8的1.x版本的shader的profile,和dx9 2.x的shader的profile。類似的,vs_1和vs_2分別通配dx頂點shader1.x和2.x版本。其他可用的profile萬用字元名稱在各自的profile中定義

通常,最符合profile特性的過載函式被使用。在函式過載的部分提供更多的細節,但大致上,是按如下規則搜尋符合的函式的

1.擁有精確的profile過載的函式

2.擁有最匹配的profile萬用字元過載的函式

3.沒有profile過載的函式

這個搜尋過程允許乙個通用版本的函式,可以按硬體需要,被過載定義。

函式定義中引數的語法

函式宣告類似於c的風格,但在函式定義中的引數可能包含了乙個繫結的語法和乙個預設值

每個函式定義中的引數由如下形式

《修飾符》《型別》 識別符號 [:繫結語法][=《預設值》]

預設值是子編譯時可以得出乙個常量的表示式

只有uniform的引數,及非頂層函式的in引數可以有default值

函式呼叫

函式返回值是右值,因此,如果返回乙個陣列,陣列可以被讀取,但是不能寫入。例如

y = myfunc(x)[2]是可以的

myfunc(x)[2]=y是不允許的

表示式中有多個函式呼叫時,呼叫順序是不固定的。

hive hql文件 HIVE說明文件

sql 查詢功能,可以將sql 語句轉換為 mapreduce 任務進行執行,通過自己的 sql去查詢分析需要的內容,這套 sql簡稱 hive sql,使不熟悉 mapreduce 的使用者很 方便的利用 sql語言查詢,彙總,分析資料。hive 適用性 它與關係型資料庫的 sql略有不同,但支援...

Mantis安裝說明文件

在錯誤追蹤系統中,mantis絕對是個輕量級的工具,無論安裝還是配置或使用,正如它自己的目標中所宣稱的。但是,對乙個中小型的專案來言,功能夠用。mantis是乙個基於php mysql web的開源的錯誤追蹤系統,以下安裝教程假設系統已經安裝好了apache php mysql的執行系統,如何安裝這...

Vue 基礎說明文件

vue是乙個mvvm框架,model view viewmodel 例項出的物件 el 檢視模型,頁面節點 data 所使用的變數,或者初始值 裡面通常放屬性 methods dom渲染完執行,通常是放view中需要響應的函式 解析資料 變數,函式,表示式 一 指令 1,v html v text ...