我想在我的几何着色器中做这样的事情:
uniform int maxOutputVert;
layout(points) in;
layout(points, max_vertices=maxOutputVert) out;
但是我在编译时出错:
Error: error(#132) Syntax error: 'maxOutputVert' parse error
并且着色器不会编译。
我可以理解,如果该变量在每次着色器运行时都会发生变化,那么内存管理可能太难了,但在这里它会在单次绘图调用中保持不变,因为制服是不变的。如果我在着色器中定义一些整数常量并将其用作 max_vertices 计数,它也会失败:
const int a = 5;
layout(points, max_vertices=a) out;
产生同样的错误。那么有没有办法做到这一点,或者我只需在该调用中输入一个数字,否则它不会编译。如果是第二种情况,我如何确保不会超过在主进程中查询的最大输出数:
glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES, &maxoutput);
编辑:对不起,我忘了提到我正在使用 ATI/AMD,并且 Catalyst 版本是 2010.1105.19.41785(这是我尝试过的最稳定的版本......)