Opengl 几何着色器bug?

最近在给一个球体写几何着色器,遇到了一个奇怪的bug
原来的代码:

#version 330 core

layout (triangles) in;
layout (line_strip, max_vertices = 128) out;

in gl_PerVertex
{
    vec4 gl_Position;
    float gl_PointSize;
    float gl_ClipDistance[];
} gl_in[];

uniform mat4 model;
uniform mat4 projection;
uniform mat4 view;
uniform vec3 center;
uniform float elevation;
uniform float lod_f;
uniform float vert_count;
uniform sampler2D bumpMap;

in vec3 _uv[];
in vec3 _normal[];
in vec3 _position[];

out vec3 uv;
out vec3 normal;
out vec3 position;
out float test;

vec3 worldPos_01;
vec3 worldPos_02;

vec3 uv_01;
vec3 uv_02;

struct pt
{
    vec3 world_pos;
    vec3 uv_coord;
};

pt getPoint(float coeff1, float coeff2)
{
    pt o;

    o.world_pos = _position[0] + worldPos_01 * coeff1 + worldPos_02 * coeff2;
    o.uv_coord = _uv[0] + uv_01 * coeff1 + uv_02 * coeff2;

    return o;
}

void emit(pt emt)
{
    gl_Position = projection * view * model * vec4(emt.world_pos, 1.0);
    uv = emt.uv_coord;
    normal = normalize(emt.world_pos);
    position = emt.world_pos;
    EmitVertex();
}

void main()
{
    float lod = lod_f;

    worldPos_01 = _position[1] - _position[0];
    worldPos_02 = _position[2] - _position[0];

    uv_01 = _uv[1] - _uv[0];
    uv_02 = _uv[2] - _uv[0];

    pt points[128];

    float index;

    index = 0.0;

    for(float i = 0.0; i <= lod + .1f; i++)
    {
        for(float j = 0.0; j <= i + .1f; j++)
        {
            vec2 gr = mix(vec2(i / lod, 0.0), vec2(0.0, i / lod), i == 0.0f ? 1.0f : j / i);
            points[int(index)] = getPoint(gr.x, gr.y);
            index ++;
        }
    }

    float count = 20.0;

    for(float q = 0.0; q < count; q++)
    {
        emit(points[int(q)]);
    }

    //test = lod_f;
    //emit(points[1]);
    //emit(getPoint(0.0f, 0.5f));
    //emit(getPoint(0.5f, 0.0f));

    EndPrimitive();
}

然后将

float count = 20.0;
改为
float count = vert_count;

的时候画面就失去了所有的输出
利用test变量我可以确认vert_count这个uniform是被成功地,正确地传递到了着色器里面。
这里是出了什么问题?

附上图片:
改之前(float count = 20.0;)

img


改之后 (float count = vert_count;)

img