.[ ČeskéHry.cz ].
OpenGL frameBuffer[solved]

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 28. únor 2013, 22:03:59    Předmět: OpenGL frameBuffer[solved] Odpovědět s citátem

Zdar

Mam jeden problem. Vzrastol vo mne zaujem o openGL, implementoval som zakladnu forward lighting. Neskor som sa rozhodol pre deferred shading tak som sa zacal sturat vo framebufferoch aby som to pochopil poriadne odspodu Very Happy. Takze teraz mam vytvoreny frameBuffer, texturu v nom. Na zaciatku main loopu bindnem tento framebuffer spocitam transformacie a nasleduje render ktory by mal tym padom smerovat do daneho framebufferu.
potom bindnem defaultny buffer, kreslim cez neho jeden quad na ktory mapujem ony framebuffer. nejak ale nevidim vysledok, vobec netusim kde moze byt chyba. tu je kod main loopu:

kód:
 glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
      glUseProgram(programID);
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      angle += 0.3;
      float fAng = angle*3.1415/180.0;
      smgr.pLights[0]->setPosition(glm::vec3(sin(fAng)*7, 0.0, cos(fAng)*7));

      camera->update();
      glUniform1i(TextureU, 0);
      smgr.renderScene(camera);

      glBindFramebuffer(GL_FRAMEBUFFER, 0);
      
      glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

      glUseProgram(programOT);
      glActiveTexture(GL_TEXTURE0);
      glBindTexture(GL_TEXTURE_2D, renderedTexture);
      glUniform1i(TextureF, 0);
      
      glEnableVertexAttribArray(0);
      glBindBuffer(GL_ARRAY_BUFFER, quad_vertexbuffer);
      glVertexAttribPointer(
         0,                 
         3,                 
         GL_FLOAT,         
         GL_FALSE,         
         0,                 
         (void*)0           
      );

      
      glDrawArrays(GL_TRIANGLES, 0, 6);
      glDisableVertexAttribArray(0);

      root.captureMPF();
      glfwSwapBuffers();

pri glBindTexture(GL_TEXTURE_2D, renderedTexture); renderedTexture je ona texture toho mojho framebufferu. to kreslenie quadu by mohlo byt v nejakej metode ale to som zatial neriesil a len tak narychlo to tam placol Very Happy potreboval by som vediet ci nerobim nejaku chybu v postupnosti krokov pri renderovani... za mozne odpovede vopred dakujem


Naposledy upravil koso dne 1. březen 2013, 22:21:38, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1047

PříspěvekZaslal: 28. únor 2013, 22:33:42    Předmět: Odpovědět s citátem

otestuj ci je tvoje FBO kompletne pomocou glCheckFramebufferStatus(). taktiez mozes skust pouzit glBlitFramebuffer() kedy do GL_READ_FRAMEBUFFER bindnes FBO a do GL_WRITE_FRAMEBUFFER zase 0 teda defaultny framebuffer.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 28. únor 2013, 22:35:38    Předmět: Odpovědět s citátem

Napadá mě že by mohl být problém s tím jestli je/není k framebufferu připojený depth target (myslím, že je potřeba ho tam mít).
A taky by mohlo pomoci se podívat jestli je FB kompletní přes "glCheckFramebufferStatus(EXT)".
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 28. únor 2013, 23:00:42    Předmět: Odpovědět s citátem

buffer po vytvoreni kontrolujem glCheckFramebufferStatus(), a depth attachment ma taktiez... ono to bude nejaka uplna prkotina ako sa tak poznam (Nou's signature reference Very Happy), len som chcel vediet ci postupnost krokov pri rendrovani mam spravne
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 1. březen 2013, 00:33:10    Předmět: Odpovědět s citátem

Nezapomněl jsi nastavit glViewport pro ten vytvořený framebuffer?
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
michalferko



Založen: 29. 09. 2008
Příspěvky: 83

PříspěvekZaslal: 1. březen 2013, 09:28:12    Předmět: Odpovědět s citátem

Minimalne to prezen nejakym debugovacim softwareom, ci ten prvy prechod naplni G-Buffer rozumnymi datami. Viz napr. AMD CodeXL.

Ak je G-Buffer OK, ale nic nevidis, tak to moze byt napr. face-culling (skus ho vypnut), alebo aj nastavenie orezavacich rovin. Dalsie je to, ze sa pre G-Buffer nespravili mipmapy ale filtering si im nastavil na pracu s mipmapami. Iba ho nastav na LINEAR alebo NEAREST, nie ????_MIPMAP_????. Mozno najlepsie by bolo spravit to cez sampler object.

Toto boli moje najcastejsie chyby ked som to rozbehaval, hadam pomoze.
_________________
Moje minihry a ine projekty
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 1. březen 2013, 22:23:08    Předmět: Odpovědět s citátem

Dakujem za postrehy, aspon som sa uistil ze FBO magic som robil dobre Very Happy problem bol v malej chybicke ohladom vykreslovania toho quadu na ktory som buffer samploval.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna