我想用cg編寫着色器(用於ogre3d)。我似乎無法解析我想用作我自己代碼的起點的有效着色器。cg着色器參數
這裏的着色器的聲明:
void main
(
float2 iTexCoord0 : TEXCOORD0,
out float4 oColor : COLOR,
uniform sampler2D covMap1,
uniform sampler2D covMap2,
uniform sampler2D splat1,
uniform sampler2D splat2,
uniform sampler2D splat3,
uniform sampler2D splat4,
uniform sampler2D splat5,
uniform sampler2D splat6,
uniform float splatScaleX,
uniform float splatScaleZ
)
{...}
我的問題:
iTexCoord0顯然是一個輸入參數。爲什麼沒有宣佈統一? (oColor顯然是一個輸出參數毫無疑問)
covMap1 - splat6的紋理。這些參數或東西加載到圖形卡的內存(如全局變量)?着色器程序的怪物定義不會將它們列爲參數。
splatScaleX和splatScaleZ還有參數嗎?着色器程序的怪物定義也沒有列出這些參數。
從外部程序發送值時,聲明的順序是否意味着什麼?
我想float數組(高度圖)通過。我認爲這將是
uniform float splatScaleZ,
uniform float heightmap[1024]
)
{...}
如果我不通過將着色器只是沒有被執行的參數之一(和我的對象將是不可見的,因爲它沒有紋理)?
有沒有更好的方式來調試這些比只是命中/錯過和猜測?
它而努力學習這一點,我不會有詞彙來搜索答案發生在我身上。我不得不問,或者只是讀一些我能找到的東西,希望能夠找到答案。謝謝! – Jay 2012-03-06 12:57:52