begin process at 2010 02 09 19:10:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Multimédia

 > 

OpenGL

 > 

Frame Buffer OpenGL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Frame Buffer OpenGL

mardi 17 février 2009 à 15:01:15 | Frame Buffer OpenGL

roger000

Hi !

 

For a project, I need to render some part of my scene in 2 opengl frame buffer, and to merge them by depth buffer comparison.

 

So I tried to split this problem in 2 tasks:

  1. First:
    1. Render a part of the scene into a framebuffer
    2. Switch this framebuffer with the backbuffer
    3. Switch the back buffer with the framefuffer
  2. Second:
    1. Merge the 2 framebuffer

 

 

I implemented the first part:

 

************FBO SETUP PART ********

 

// Create 2 render buffer

int [] MyRenderBuffer = newint[2];

glGenRenderbuffersEXT(2, MyRenderBuffer);

 

// Bind the first render buffer

glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRenderBuffer[0]);

// Allocate memory for its: colorimetry buffer

glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,GL_RGBA, CV.width, CV.height);

 

// Bind the first render buffer

glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRenderBuffer[1]);

// Allocate memory for its: depth buffer

glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, CV.width, CV.height);

 

// Create a Frame Buffer Object & bind it

int [] MyFBO = newint[1];

glGenFramebuffersEXT(1, MyFBO);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFBO[0]);

 

// Attach the fist render buffer with the FBO "COLOR_ATTACHMENT0"

glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,GL_RENDERBUFFER_EXT, MyRenderBuffer[0]);

// Attach the fist render buffer with the FBO "DEPTH _ATTACHMENT0"

glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,GL_DEPTH_ATTACHMENT_EXT,GL_RENDERBUFFER_EXT, MyRenderBuffer[1]);

 

// Bind the OpenGL Standard framebuffer

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

 

// Check FBO Status

int status_fbo =glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);

int normal_status =GL_FRAMEBUFFER_COMPLETE_EXT;

 

 

 

 

 

************DRAW ********

// Bind the FBO

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);

 

// Draw my scene

Draw();

 

// Re bind the OpenGL Standard framebuffer

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

 

 

// Then SDL swaps buffers.

 

 

Results:

  • My status_fbo is equal to "GL_FRAMEBUFFER_COMPLETE_EXT" ! (good)
  • If I disable the line "glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);"  in the "Draw part", my scene is correctly shown on the screen. (good)
  • If I enable line "glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);"  in the "Draw part", nothing is shown (no good)

 

Question:

Please, is anyone could help me to identify the mistake? I think I don't really switch the back buffer with my FBO, but I don't know why...

mardi 17 février 2009 à 15:31:52 | Re : Frame Buffer OpenGL

krimog

Hi.
I'm sorry but I really don't have any knowledge in OpenGL with C#.
But if anyone wants me to translate something, maybe I can help, because I guess you can't speak french.

Je m'y connais pas du tout en OpenGL C#.
Cependant, si quelqu'un peut aider mais ne parle pas anglais, je peux toujours essayer de traduire ;)


Krimog :
while (!succeed = try()) ;

mardi 17 février 2009 à 16:55:18 | Re : Frame Buffer OpenGL

roger000

Oups.
Je ne sais pas où j'avais la tête en faisant ce post en anglais.  Désolé.

Donc, pour un projet, j'ai besoin de faire de visualiser 2 parties de ma scène dans 2 FBO, puis de fusionner le contenu des 2 FBO par comparaison de leur Depth Buffer.

J'ai décomposé mon travail en 2 tâches :

1. 
   a. Rendre une partie de ma scène dans un framebuffer.
   b. Echanger mon framebuffer avec le backbuffer
   c. Echanger le front buffer avec le back buffer.
2. fusionner le contenu de 2 FBO


J'ai implémenté 1.
Résultats :
le statuts de mon FBO est bien complet. (bien)
Si je commente la line "glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);"  dans la partie "draw", ma scène s'affiche correctement. (bien)
Si je la laisse telle qu'elle est : rien ne s'affiche (pas bien)

Question:
Est-ce que quelqu'un aurait une idée de ce que je fais mal ?
Je soupsonne que je switch mal mon FBO avec mon Back buffer, mais je ne trouve pas d'informations la dessus.
mardi 17 février 2009 à 17:09:22 | Re : Frame Buffer OpenGL

krimog

Ca y est : je suis donc officiellement inutile :)

Krimog :
while (!succeed = try()) ;

mardi 17 février 2009 à 17:26:04 | Re : Frame Buffer OpenGL

roger000

Merci quand même.
mercredi 18 février 2009 à 00:31:23 | Re : Frame Buffer OpenGL

bubbathemaster

Amha ta question a plus de chance de trouver preneur du cote de Nehe
http://nehe.gamedev.net/


Cette discussion est classée dans : buffer, gl, ext, framebuffer, mso


Répondre à ce message

Sujets en rapport avec ce message

Quel est le meilleur moyen de gerer un buffer ... [ par Hawkmoon ] Bon voila mon probleme : je connecte une socket sur un server irc mais avec le code suivant j'arrive pas a gerer les reponses du server dans un buffer a propos des transfers d'images [ par rachton ] salut !je m'explique ,j'ai une ptite carte qui permet d'envoyer des pages html sur un réseau .je desire maintenant envoye une image avec ma page .l'im envoyer une image [ par rachton ] salut §j'arrive pas a envoyer une image en entiere j'arrive seulement a envoyer une partie car le buffer est trop petit .j'ai deja essayer de coupe l' Comment vider le buffer clavier [ par oboudou ] Bonjour,J'aimerais savoir comment je peux vider le buffer clavier en C#. Je traite un événement clavier, et j'ai besoin de le vider à la fin de ma fon Maitriser les packets TCP [ par bucherb ] Hello!J'aurais besoin de qqun qui puisse répondre à ma question existentielle suivante:Mais bon sang, il faut faire quoi pour obtenir les seconds paqu Pb de connexion [ par EksTaZia ] jai une fonction:private void Envoi(NetworkStream str, string message) { try { if(str != null) { byte[] buffer = System.Text.Encoding.ASCII.GetBy TELECHARGER UN DOCUMENT STOCKE DS UNE BDD [ par epilog ] Bonjour,j'ai un document stocké ds une base de données SQL Server dans une colonne de type IMAGE et je souhaite ouvrir ce document après l'avoir récup Erreurs lors de la reception de trames sur une socket [ par djeauh ] Bonsoir à tous, je développe en ce moment une application cliente en c# qui communique avec un démon que j'ai crée sur UNIX. Dans mon appli j'ai une i Reseau + Au secours + Help... [ par emmanuel9 ] Bonjour à tous, Je voudrais envoyer un fichier sur le reseau par les socket mais tous le problèmes vient tu faite que le fichier que j'envoi est de ta Au secours ! réseau [ par emmanuel9 ] Bonjour,j'ai un petit problème reseau en faite je voudrais separé les données c'est a dire que le serveur recoive : "Bonjour", "Au revoir deux" chaine


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales