无法通过几何着色器工作

3
我有一个包含点的VBO,使用顶点着色器和片段着色器可以正常渲染,但是如果加入一个“直通”的几何着色器,就看不到任何东西。我正在使用MRT进行发光,但在这个例子中我没有用到它。
从其他帖子中看到,可能存在从一个阶段传递值到另一个阶段的问题,因此我删除了所有varyings,但仍无法工作。
我在链接后设置了程序参数 - 希望这没问题。
为什么禁用几何着色器会产生白色粒子,而启用它则什么也看不到?
顶点着色器:
#version 120
attribute vec3 position;
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;

void main()
{
    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1);
}

片元着色器:

#version 120

void main()
{
    gl_FragData[0] = vec4(1.f, 1.f, 1.f, 1.f);
    gl_FragData[1] = vec4(0.f, 0.f, 0.f, 0.f);
}

几何着色器:

#version 120
#extension GL_EXT_geometry_shader4: enable

uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;

void main(void)
{
    for (int i = 0; i < gl_VerticesIn; i++)
    {
        gl_Position = gl_PositionIn[i];
        EmitVertex();
    }
        EndPrimitive();
}

参数设置(在程序链接后,程序是resources.particleprogram)

glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_INPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(resources.particleprogram, GL_GEOMETRY_VERTICES_OUT_EXT, 4);
1个回答

3

设置参数(程序链接后,程序是resources.particleprogram)

这些参数必须在链接之前设置。


1
完美地工作了,不知道为什么我没有先尝试一下。谢谢。 - starruler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接