无法通过几何着色器工作

时间:2012-02-12 21:52:36

标签: opengl glsl shader geometry-shader

我有一个带有点的VBO,我可以使用顶点和片段着色器进行精细渲染,但是当我添加一个遍历几何着色器时,我什么也看不见。我正在使用MRT进行发光,但在这个例子中我没有触摸它。

从我在其他帖子上看到的情况来看,将值从一个阶段传递到另一个阶段可能会出现问题,所以我删除了所有的变化,但它仍然不起作用。

我在链接后设置了程序参数 - 希望这没关系。

为什么禁用几何着色器的任何想法会产生白色粒子,但启用它什么都不显示?

VERTEX SHADER:

#version 120
attribute vec3 position;
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;

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

FRAGMENT SHADER:

#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);
}

GEOMETRY SHADER:

#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 个答案:

答案 0 :(得分:3)

  

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

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