De los pocos ejemplos que he visto en la red, gl_FragData [0] se supone que es un buffer de color. He intentado encontrar el significado de cada índice en gl_FragData y me encontré con este pasaje del libro de lenguaje de sombreado de OpenGL (Libro Naranja)¿Gl_FragData [0] siempre es un buffer de color?
gl_FragData es una matriz que se pueden asignar valores que se escriben en uno o más fuera de la pantalla tampones . El tamaño de esta matriz es dependiente de la implementación y se puede consultar con glGet con la constante simbólica GL_MAX_DRAW_BUFFERS. Los búferes fuera de la pantalla que son modificados como resultado de escribir valores en gl_FragData dentro de un sombreador de fragmentos se especifican con glDrawBuffers. El valor escrito en gl_FragData [0] actualiza el primer búfer de la lista especificada en la llamada a glDrawBuffers, el valor escrito en gl_FragData [1] actualiza el segundo búfer en la lista, y así sucesivamente.
No se especifica que el valor 0 de gl_FragData es siempre el búfer de color. Si hay tal especificación, ¿dónde puedo encontrarla? Si no, ¿cuál es una práctica normal al escribir en gl_FragData?
supongo glDrawBuffers no está disponible en OpenGL ES. En ese caso, el FBO lo llama implícitamente en algún momento? – Jayesh
'glDrawBuffers' (no confunda con' glDrawBuffer', la elección de nombres muy inteligente ...) es parte de ARB_draw_buffers, que es el núcleo de OpenGL 2.0. Como OpenGL ES 2.0 se define en relación con OpenGL 2.0, debe incluir esa función. – Damon
@Damon: Técnicamente, ['glDrawBuffer'] (http://www.opengl.org/wiki/GLAPI/glDrawBuffer) se define en términos de' glDrawBuffers'; es simplemente una forma más restrictiva (establece el índice 0 en el búfer de entrega y todos los demás en 'GL_NONE'). Pero tampoco lo está en GL ES 2.0. –