2013-03-21 10 views
6

C'è un modo per accedere agli ombreggiatori collegati a un programma? Cioè, dato un programma, posso fare qualcosa di simile:OpenGL Ottenere shader collegato al programma

vertexShader = getVertexShaderFromProgram(program); 

(vorrei registrare lo stato di compilazione dello shader all'interno della mia funzione che convalida il mio programma, ma continuo a solo un riferimento al programma, non gli shaders .)

risposta

8
  1. glGetAttachedShaders() per ottenere i nomi dei shader allegati al dato oggetto programma.

  2. glGetShaderiv(..., GL_SHADER_TYPE, ...) per ottenere il tipo (vertice, geometria, frammento) dello shader.

  3. glGetShaderiv(..., GL_SHADER_SOURCE_LENGTH, ...) su ogni nome dello shader per capire per quanto tempo è la sorgente.

  4. glGetShaderSource() per ottenere la stringa di origine per ogni shader collegato.

EDIT: Se tutto ciò che serve sono i nomi degli shader & tipi si può fermare dopo il passaggio 2.

+0

Cosa succede se gli oggetti di shader sono stati eliminati? – Ben

Problemi correlati