我想用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