Domanda

Sto cercando di ottenere un pass semplice attraverso geometry shader al lavoro in Mac OS X 10.6. Le compila codice e link senza problemi, ma per qualche ragione non geometria è in corso di definizione per lo schermo. Ecco il mio codice dello shader:

#version 120
#extension GL_EXT_geometry_shader4: enable

void main()
{
    gl_Position = gl_PositionIn[0];
    EmitVertex();

    EndPrimitive();
}

Se qualcuno potrebbe aiutare sarei grato.

È stato utile?

Soluzione

Quindi, come si è visto, il problema non era nel codice dello shader a tutti. A quanto pare, quando si utilizza la versione 120 in un geometry shader, è necessario impostare i tipi di ingresso e di uscita come segue:

glProgramParameteriEXT(shaderProgramID, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_POINTS);
glProgramParameteriEXT(shaderProgramID, GL_GEOMETRY_VERTICES_OUT_EXT, GL_POINTS);

Dopo che tutto ha funzionato alla perfezione.

Altri suggerimenti

A geometry shader opere intere primitive. Distinti sembra che sarebbe solo essere adatto per i punti. Se non si passa in punti è necessario elaborare tutti i vertici (COUNT) gl_VerticesIn.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top