3

我的场景中有几个对象。我只想将我的着色器应用于其中一个。环境:OpenGL 2.0、C++、GLUT、GLEW。

4

2 回答 2

6

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

编辑:通过“安装”着色器,我的意思是glUseProgram与着色器的手柄一起使用。“卸载”是指安装另一个着色器或glUseProgram使用0. 请参阅glUseProgram。我的“安装/卸载”术语来自那里。

于 2010-04-26T17:44:52.160 回答
2

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

于 2010-04-26T17:42:49.263 回答