首先 -子程序是否需要 GLSL 4.0+?所以它在 OpenGL ES 2.0 的 GLSL 版本中不可用?
我很明白什么是多通道着色器。
那么我的图片是什么:
- 使用一些着色器将一组东西(例如精灵)绘制到 FBO。
- 将 FBO 视为大屏幕四边形的大纹理,并使用另一个着色器,例如,将纹理颜色转换为灰度。
- 用灰度颜色将 FBO 纹理四边形绘制到屏幕上。
还是这叫别的?
所以多通道=使用另一个着色器输出到另一个着色器输入?所以我们渲染一个对象两次或更多?着色器输出如何到达另一个着色器输入?
例如
glUseProgram(shader_prog_1);//Just plain sprite draw
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, /*some texture_id*/);
//Setting input for shader_prog_1
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
//Disabling arrays, buffers
glUseProgram(shader_prog_1);//Uses same vertex, but different fragment shader program
//Setting input for shader_prog_2
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
任何人都可以以基本方式提供这个简单的例子吗?