Итак, как оказалось, проблема была не в коде шейдера вообще. По-видимому, при использовании версии 120 в геометрическом шейдере вы должны установить типы ввода и вывода следующим образом:
glProgramParameteriEXT(shaderProgramID, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(shaderProgramID, GL_GEOMETRY_VERTICES_OUT_EXT, GL_POINTS);
После этого все отлично сработало.