OpenGL Geometry Shader di Mac OS X
-
10-10-2019 - |
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.
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
.