gk::GLReadFramebuffer Class Reference

representation d'un (read) framebuffer. More...

#include <TPFramebuffer.h>

Inheritance diagram for gk::GLReadFramebuffer:
gk::GLRendertarget gk::GLResource

List of all members.

Public Member Functions

 GLReadFramebuffer ()
 constructeur.
 GLReadFramebuffer (const int w, const int h, const unsigned int buffer_bits)
 constructeur. cf GLRendertarget::GLRendertarget( ).
 ~GLReadFramebuffer ()
 destructeur.
int attachTexture (const unsigned int buffer, GLTexture *texture)
 associe une texture au framebuffer.
int validate ()
 verifie la configuration du framebuffer.
int bind ()
 utilisation interne. active le framebuffer.
int unbind ()
 utilisation interne. desactive le framebuffer.
int setReadbuffer (const unsigned int buffer, const unsigned int level=0)
 definit le buffer de lecture, cf BlitFramebuffer, par exemple. texture 2d.
int setFaceReadbuffer (const GLenum face, const unsigned int buffer, const unsigned int level=0)
 definit le buffer de lecture, texture cube.
int setLayerReadbuffer (const unsigned int layer, const unsigned int buffer, const unsigned int level=0)
 definit le buffer de lecture, texture 2d array.
int attachTexture (const unsigned int state, const unsigned int buffer, GLTexture *texture)
 associe une texture au framebuffer.
int createGLResource ()
 creation de l'objet opengl.
int releaseGLResource ()
 destruction de l'objet opengl.
int validate (const unsigned int state)
 verifie la configuration du framebuffer.
int bind (const unsigned int state)
 active le framebuffer.
int unbind (const unsigned int state)
 desactive le framebuffer.
GLuint name () const
 renvoie le nom de l'objet opengl.
int width () const
 renvoie la largeur du framebuffer. renvoie 0, si la largeur du framebuffer n'est pas definie.
int height () const
 renvoie la hauteur du framebuffer. renvoie 0, si la hauteur du framebuffer n'est pas definie.
GLTexturetexture (const unsigned int buffer)
 renvoie la texture associee a buffer (cf gk::COLOR0, gk::COLOR1, gk::DEPTH, etc.)
int setBuffer (const unsigned int state, const unsigned int draw_buffer, const unsigned int buffer, const unsigned int level=0)
 associe une texture du framebuffer ('buffer', gk::COLOR0) a un drawbuffer ('draw_buffer', gk::DRAW0). texture2d classique.
int setFaceBuffer (const unsigned int state, const GLenum face, const unsigned int draw_buffer, const unsigned int buffer, const unsigned int level=0)
 associe une face d'une texture cube au framebuffer. cf. GLTextureCube.
int setLayerBuffer (const unsigned int state, const unsigned int layer, const unsigned int draw_buffer, const unsigned int buffer, const unsigned int level=0)
 associe un layer d'un texture2DArray au framebuffer. cf. GLTexture2DArray.
int resetBuffer (const unsigned int state, const unsigned int draw_buffer)
 desactive un drawbuffer du framebuffer.
int updateBufferMipmap (const unsigned int buffer, const unsigned int unit=0)
 met a jour les mipmaps de la texture attachee au framebuffer apres un rendu.

Protected Attributes

std::vector< GLTexture * > m_textures
std::vector< GLenum > m_draw_buffers
int m_draw_buffers_count
int m_width
int m_height
unsigned int m_name

Detailed Description

representation d'un (read) framebuffer.


Member Function Documentation

int gk::GLRendertarget::attachTexture ( const unsigned int  state,
const unsigned int  buffer,
GLTexture texture 
) [inherited]

associe une texture au framebuffer.

buffer = gk::COLOR0 ou gk::DEPTH, etc. toutes les textures doivent avoir les memes dimensions.

attention: la texture n'est pas automatiquement associee a un draw buffer, utiliser

exemple d'utilisation :

    gk::GLFramebuffer framebuffer;            // cree un framebuffer "vide"
    framebuffer.attachTexture(gk::COLOR0, texture1);    // associe une texture couleur au framebuffer
    framebuffer.setDrawbuffer(gk::DRAW0, gk::COLOR0);           // associe la texture au draw buffer 0
    framebuffer.attachTexture(gk::DEPTH, texture2);     // associe une texture au z buffer.
    
    gk::setFramebuffer(&framebuffer);                                 // active le framebuffer et les textures associees.
int gk::GLRendertarget::setBuffer ( const unsigned int  state,
const unsigned int  draw_buffer,
const unsigned int  buffer,
const unsigned int  level = 0 
) [inherited]

associe une texture du framebuffer ('buffer', gk::COLOR0) a un drawbuffer ('draw_buffer', gk::DRAW0). texture2d classique.

exemple d'utilisation :

    gk::GLFramebuffer framebuffer;
    framebuffer.attachTexture(gk::COLOR0, texture1);
    framebuffer.attachTexture(gk::COLOR2, texture2);
    framebuffer.attachTexture(gk::DEPTH, textured);
    
    framebuffer.setDrawbuffer(gk::DRAW0, gk::COLOR0);
    framebuffer.setDrawbuffer(gk::DRAW1, gk::COLOR2);
    framebuffer.setDrawbuffer(gk::DEPTH, gk::DEPTH);
    
    gk::setFramebuffer(&framebuffer);

exemple avec un shader :

    gk::GLShaderProgram *program= ...;
    
    gk::GLFramebuffer framebuffer;
    framebuffer.attachTexture(gk::COLOR0, texture1);
    framebuffer.attachTexture(gk::COLOR2, texture2);
    framebuffer.attachTexture(gk::DEPTH, textured);
    
    framebuffer.setDrawbuffer(program->drawbuffer("color"), gk::COLOR0);
    framebuffer.setDrawbuffer(program->drawbuffer("normal"), gk::COLOR2);
    framebuffer.setDrawbuffer(gk::DEPTH, gk::DEPTH);
    
    gk::setFramebuffer(&framebuffer);

References gk::GLRendertarget::height(), gk::GLRendertarget::name(), gk::FramebufferState::setFramebuffer(), and gk::GLRendertarget::width().

Referenced by gk::GLFramebuffer::setDrawbuffer(), setReadbuffer(), and gk::GLFramebuffer::setReadbuffer().


The documentation for this class was generated from the following file:
 All Classes Namespaces Functions Variables Typedefs Friends
Generated on Thu Sep 22 16:34:00 2011 for gKitGL by  doxygen 1.6.3