GLSL中运用整数型易变变量【转】

17 篇文章 0 订阅
14 篇文章 0 订阅

Using Integer Varying Variables in GLSL

 

    We now can transfer varying variables between vertex shader and fragment shader in GLSL via 'GL_EXT_gpu_shader4' extension. But there's one thing important should be noticed: integer or unsigned integer(including according vectors and matrix) varying vaiables cannot be interpolated .

 

    If we declare an integer varying variable like this:


01.varying uvec4 polygonID; 

    We will get a shader program link error.

 

    So we should add a prefix 'flat' before to tell the shader do not interpolate them:

 

01.flat varying uvec4 polygonID; 


    We all know that we can use glShadeModel() to determine the flat color shade or smooth color shade. But this OpenGL API function can only affect the build-in varying variables like gl_FrontColor etc.. For user defined varying variables we shoud add 'flat' prefix in shader manually for the same purpose.

 

GLSL中运用整数型易变变量

 

    通过'GL_EXT_gpu_shader4'扩展,我们能够在GPU的顶点着色器和片元着色器之间传递整数型易变变量(包括有符号和无符号),但是在实际应用中,有一点特别需要注意:整数型易变变量在管线中是无法进行插值计算的。

 

    如果我们在shader中这样定义一个整型易变变量:


01.varying uvec4 polygonID; 


    我们会得到一个shader program 的连接错误(Link Error)。

 

    因此我们需要在shader中的整型易变变量前加上'flat'的前缀,老告诉shader不对其进行插值计算:


01.flat varying uvec4 polygonID;  

    我们都知道可以通过glShadeModel()来决定是单色渲染(GL_FLAT)还是平滑渲染(GL_SMOOTH),但是这个API函数只会影响内建的颜色相关易变变量,如 gl_FrontColor 等。而对于用户自定义的易变变量,则需要在shader中,易变变量前加上'flat'前缀来关闭其插值计算。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wwybj/archive/2010/06/09/5659624.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值