2011-01-24 13 views
6

Estoy considerando refaccionar una gran parte de mi código de representación y me vino a la mente una pregunta: ¿Es posible renderizar tanto en la pantalla como en una textura usando múltiples archivos adjuntos de color en un Objeto Buffer de Marco? No puedo encontrar ninguna información si esto es posible o no, a pesar de que tiene muchas aplicaciones útiles. Supongo que debería ser suficiente para unir mi textura como color attachment0 y renderbuffer 0 para attachment1?¿Es posible adjuntar el renderbuffer predeterminado a un FBO?

Por ejemplo, quiero hacer una aplicación interactiva donde pueda "dibujar" en un modelo 3D. Resuelvo dónde dibuja el usuario al convertir las coordenadas UV en una textura para que pueda buscar en las coordenadas del mouse dónde modificar la textura. En mi caso, sería más rápido tener un sombreador que atraiga los rayos UV a la textura y la textura real a la pantalla de una vez.

¿Hay mejores formas de hacerlo o estoy en el camino correcto?

Respuesta

6

No existe el "buffer de renderizado predeterminado" en OpenGL. Existe el sistema de ventana provisto por defecto frame buffer con el nombre reservado cero, pero que básicamente significa "no FBO habilitado". Así que no, desafortunadamente, OpenGL no proporciona ningún método para usar de alguna manera su buffer de color como un archivo adjunto de color a cualquier otro FBO. No estoy al tanto de ninguna extensión que pueda proporcionar esta característica.

Con búferes de representación también existe el nombre reservado cero, pero es solo una variable especial "ninguno" y permite desvincular búferes de representación.

+3

de hecho. La sección 4.4 de glspec dice: "Inicialmente, el GL utiliza el framebuffer predeterminado. El almacenamiento, las dimensiones, la asignación y el formato de las imágenes adjuntas a este framebuffer se gestionan en su totalidad por el sistema de ventanas. En consecuencia, el estado del framebuffer por defecto, incluyendo sus imágenes, no puede ser modificado por el GL, ni el GL puede borrar el framebuffer predeterminado. " –

+0

por lo que significa que ni siquiera puedes agregar tu propio renderbuffer al framebuffer predeterminado. para resolver su problema, dependiendo del caso de uso, puede intentar buscar "gluUnProject", que convierte las coordenadas de la ventana a las coordenadas del objeto –

+0

Gracias por las respuestas. Supongo que me confundí sobre el framebuffer predeterminado y el "renderbuffer predeterminado" que no existe. – Andos

Cuestiones relacionadas