查看: 1777|回复: 7

请教glsl的一个问题

[复制链接]

该用户从未签到

发表于 2011-4-21 18:21:04 | 显示全部楼层 |阅读模式
glsl中的类型限定符in,在fragment shader中好理解,那是vertex shader传递过来的,但是in如果在vertex shader中,那是哪里传给它的,难道也像uniform限定符一样,都是通过程序里传递的?还是系统默认的变量传递?

该用户从未签到

发表于 2011-4-22 09:38:05 | 显示全部楼层
in,out和inout通常用于函数参数,in类型的参数显然是从调用该函数的地方传进来的

该用户从未签到

 楼主| 发表于 2011-4-22 10:05:04 | 显示全部楼层
也就是跟uniform的使用方式一样的意思吧?

该用户从未签到

发表于 2011-4-22 18:55:22 | 显示全部楼层
这个是修饰函数传递参数的方向的,跟uniform不相干

该用户从未签到

 楼主| 发表于 2011-8-30 11:33:25 | 显示全部楼层
是不是用in限定符的变量就不需要自己像使用uniform限定的变量那样要在程序中赋值,不需要自己管理,还是说有的时候比如这个变量在顶点shader中的时候,自己在程序中需要设定一个值传入顶点shader中

该用户从未签到

发表于 2011-8-31 08:24:43 | 显示全部楼层
我完全不明白您这句话的意思,uniform和in有什么关系

该用户从未签到

 楼主| 发表于 2011-8-31 11:10:21 | 显示全部楼层
我是说用uniform变量要从程序中向shader传值,片段shader中in变量值是从顶点shader中传入,那么顶点shader中in变量是谁给他传值?程序中要不要给他传值,就像uniform变量那样在程序中赋值。我这样说您清楚了吗?您说是从是从调用该函数的地方传进来的,这个我不明白。

该用户从未签到

发表于 2011-9-1 09:15:13 | 显示全部楼层
我在2楼就已经说明了,in,out和inout属于函数参数,也就是修饰形式参数的限定符,从别的shader代码传入实际参数时才会起作用,和uniform根本就无关。如果您还不理解,请参考C语言中形参和实参的概念

不过看您的描述又好像在说varying,那么顶点着色器的varying自然是在顶点着色器中给他赋值的,和用户程序无关
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表