我想对某些对象使用着色器。我将这些对象命名为obj_1,obj_2,... obj_n。
一个对象的数据存储在一个vbo中。我将这些vbo命名为vbo_1,vbo_2,... vbo_n。
我需要为每个对象使用顶点着色器,几何着色器和片段着色器。
所有顶点着色器只是具有modelviewprojectoin矩阵的多个顶点。
所有片段着色器只需设置颜色即可。
但是,每个几何着色器都不相同。
这是我的计划A:
我创建一个程序。顶点着色器具有一个名为ModelViewProjection的统一变量。片段着色器具有一个名为color的统一变量。
在所有对象的循环中,我设置了顶点着色器的ModelViewProjection统一变量,并设置了片段着色器的颜色统一变量。
然后使用相应的GLSL代码更改几何着色器。
但是,我找不到改变程序中的几何着色器的方法,而没有更改顶点着色器和片段着色器。
所以我有一个计划B:
我创建的程序和对象一样多。这是可行的。
但是,这意味着重复varialbe着色器和片段着色器的对象数量最多。这是浪费空间,而且很难扩展。
所以我的问题是,我的案子有计划C吗?还是有一种方法可以在程序中更改几何着色器?