2010-11-13 16 views

Respuesta

4

Sí, puede escribir en gl_FragData, que es una matriz de resultados (el tamaño depende de su implementación). O con las versiones más recientes de GL, tanto gl_FragColor como gl_FragData están en desuso y usted declara sus propias variables out para que el sombreador de fragmentos escriba. Declare múltiples tales out vars para múltiples buffers de salida.

+0

Gracias. Me gustaría ver un ejemplo de código de cómo se haría esto en GLSL y tal vez algún pseudo código para la aplicación host si ese es el término correcto. – Moss

+1

En realidad, lo descubrí por mi cuenta. Solo tuve que decir "variando vec4 Color1, Color2", etc. en la parte superior y eso pareció vincularse automáticamente a la matriz de texturas que ya estaba pasando. Y luego establecer esas variables a algo en algún lugar dentro de void main(). – Moss

+1

¿Esto es compatible con OpenGLES 2.0? –

0

No sé si esto es exactamente lo que estás tratando de hacer, pero con Frame Buffer Objects (FBOs) puedes dibujar en múltiples memorias intermedias de color simultáneamente.

Sin embargo, dentro del sombreado seguirá siendo como si estuviera escribiendo un fragmento. Es decir, el sombreador no sabe cuántos archivos adjuntos tiene el FBO.

0

Sí. Podemos. PERO Tenga en cuenta que gl_FragData ya no es compatible con GLSL 4.0. Especificar la ubicación como:

glBindFragDataLocation(programHandle, 0, "FragColor"); 

.....

espero que se podía leer el libro de GLSL libro de cocina de la lengua 4.0 sombreado.

+0

Creo que las ubicaciones explícitas se prefieren sobre 'glBindFragDataLocation' – RecursiveExceptionException

Cuestiones relacionadas