1
我想要做这样的事情在我的几何着色器:可变输出原语几何着色器GLSL算
uniform int maxOutputVert;
layout(points) in;
layout(points, max_vertices=maxOutputVert) out;
但是我得到的错误,而它编译:
Error: error(#132) Syntax error: 'maxOutputVert' parse error
和Shader不会编译。
我能理解,这可能是太硬了内存管理,如果这个变量将在每个着色器运行的变化,但在这里,它会不断深入单一绘图调用,因为校服是恒定的。产生
const int a = 5;
layout(points, max_vertices=a) out;
同样的错误:如果我定义着色器的一些整型常量的权利,并以此作为计数max_vertices它也失败。所以有办法做到这一点,或者我只需要在该调用中输入一个数字,否则将无法编译。如果第二个是这样,我怎么能保证我不会超过主进程中查询的最大输出页数:
glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES, &maxoutput);
编辑:对不起,我忘了提我使用的是ATI/AMD和Catalyst的版本是2010.1105.19.41785(这是最稳定的,我试过...)
你一定要明白这只是要传递的布局的最大数量。几何着色器仍然可以产生可变数量的输出原语的有条件的,只要它们是在规定范围内。 – kvark
这是真实的,但实际上是如何工作的呢?如果我定义max_vertices为1000,并创建只有20元,将它吃内存1000点或20的顶点及其varyings? – Raven
我敢肯定有这样的高估了点球,但我不知道到底。 – kvark