如何将着色器应用于特定对象

时间:2010-04-26 17:39:03

标签: c++ opengl glsl

我的场景中有几个物体。我想将我的着色器仅应用于其中一个。环境:OpenGL 2.0,C ++,GLUT,GLEW。

2 个答案:

答案 0 :(得分:6)

着色器程序仅在安装时才有效。只有在安装程序时进行的绘制调用才会使用着色器。您必须安装着色器,绘制对象,然后卸载着色器。

修改:通过“安装”着色器,我的意思是使用着色器的句柄glUseProgram。 “卸载”是指安装另一个着色器或使用glUseProgram参数调用0。见glUseProgram。我的“安装/卸载”术语来自那里。

答案 1 :(得分:2)

在你的drawcall中使用该着色器绘制该对象,并在没有它的情况下绘制其他对象..实际上不能比这更简单; P您可以在对象类中使用枚举,您可以在其中指定已启用的着色器那个对象只有当它们应该通过那个着色器时才传递它们..当然如果它是全屏像素着色器那么你就会遇到麻烦,因为它会处理每个像素并呈现一个新的图像。除非你有办法将对象作为参数和算法传递,只能在该对象的位置应用变更。