联系
我们
投稿
反馈
评论 返回
顶部

内容字号: 默认 大号超大号

段落设置: 段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

【原】OpenGL下多个sampler在shader中的使用

2017-05-16 11:57 出处:互联网 人气: 评论(
树大招风 看图猜成语 78 淘宝隐藏优惠券koumen.net site:fa78.cn 同城 素女经秘戏图本
you might also like

从声明上可以看出,这里用了三个变量分别控制是否在shader program中使用对应的sampler。比如,把enableBump设置为false,shader中就不用调用bumpTexture这个sampler2D。从而,在程序中就可以少调用glActiveTexture、glBindTexture、glEnable(GL_TEXTURE_2D)等。

假如baseTextue对应0, bumpTexture对应1,environmentMap对应2,那么如果把enableBump设置为false,不使用bumpTexture,也不为bump设置glActiveTexture,那其他两个unifrom应该设置何值?给bumpTexture设置何值?答案:0,1,2,即bumpTexture与environmentMap换位置了。从而可以得知,如果只使用environmentMap,应该为:environmentMap:0, baseTexture:1, bumpTexture:2,或者base与bump互换。

在OpenGL中,sampler2D/Cube等做为uniform可以在fragment shader中使用。结合glActiveTexture和glUniform1i,实现texture与sampler的绑定。

之前,我是这样认为的。经过实践发现,确实是这样的。当然,与sampler对应的uniform必须设置。

比如在fragment shader中声明了多个sampler:

至此,真相大白。

等等,真的可以少调用glActiveTexture了吗?

(责任编辑:ioter)

另外一个问题,把enableBump设置为false后,sampler uniform的值需要调整吗?

正常情况下的使用,可以参照各种GLSL教程里的例子。这里说一下非正常情况下在shader中使用多个sampler。

 【原】OpenGL下多个sampler在shader中的使用


分享给小伙伴们:
本文标签:

更多文章

相关文章

  • 蛮便宜网
  • 天猫内部优惠券网
  • Copyright © 2002-2011 版权所有