Невозможно пройти через геометрический шейдер - PullRequest
3 голосов
/ 13 февраля 2012

У меня есть 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();
}

Настройкаparams (после связывания программы, программа является 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 голосов
/ 13 февраля 2012

Настройка параметров (после связывания программы, программа является resources.particleprogram)

Эти параметры должны быть установлены до связывания.

...