.[ ČeskéHry.cz ].
Podivné chování glBindFramebuffer

 
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
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 11. červen 2011, 22:38:11    Předmět: Podivné chování glBindFramebuffer Odpovědět s citátem

Momentálně jsem se setkal s jedním problémem s procedurou glBindFramebuffer, na linuxech. Pro informaci používám fglrx (ne OpenSource drivery) s driverem ve verzi 11.5 (ani na 11.4 neběží).

V čem je problém, především v tom, že po vytvoření framebufferu (glGenFramebuffers) zavolám předpokládaně glBindFramebuffers, s parametery GL_FRAMEBUFFER a id framebufferu které bylo vytvořeno v předchozí proceduře. Problém je, že obdržím error s GL_INVALID_ENUM, což má nastat pouze v případě, že první parametr NENÍ GL_FRAMEBUFFER. Takže velké WTF?

Vzhledem k rendereru který momentálně používám, deferred renderer - tak toto je sakra velký problém. Buď jsem tedy něco přehlédl, nebo že by znovu slavné AMD Drivery?

Zdroják generace fbo pro linux:
kód:

  glGenRenderbuffers( 1, &rbo );
  glBindRenderbuffer( GL_RENDERBUFFER, rbo );
  glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT, window_t->window_width, window_t->window_height );
  glBindRenderbuffer( GL_RENDERBUFFER, 0 );
 
  glGenFramebuffers( 1, &fbo );
  glBindFramebuffer( GL_FRAMEBUFFER, fbo );
  int e = glGetError(); printf("%d\n", e);
  glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, dynamic_tex, 0);
  glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rbo );
  GLenum status = glCheckFramebufferStatus( GL_FRAMEBUFFER );
  glBindFramebuffer( GL_FRAMEBUFFER, 0 );

V integeru e je chyba 1280, což je GL_INVALID_ENUM afaik.
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Marek



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

PříspěvekZaslal: 11. červen 2011, 22:53:34    Předmět: Odpovědět s citátem

Je GL_FRAMEBUFFER definovaný správně?

Funguje to na NVIDII?
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 11. červen 2011, 22:56:11    Předmět: Odpovědět s citátem

Podle všeho je, odpovídá adrese 0x8D40 což je stejné jako GL_FRAMEBUFFER_EXT.

Na NVidii nemám možnost kód ozkoušet, ale co je zajímavé, stejný kód funguje pod jiným OS, pod Windows XP, už léta.

EDIT: Zkusím napsat ještě nějaký sample čistě jen na offscreen rendering ... ale myslím že bude výsledek stejný.
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 11. červen 2011, 23:10:46    Předmět: Odpovědět s citátem

No jo, chyba nalezena a opravena ...

Ve skutečnosti to bylo v procedurách na získání extensionu (glXGetProcAddress, pod widlema wglGetProcAddress), problém v knihovně, kterou jsem dříve stavěl (variace na glew) a nedávno ji překompiloval pod linuxy a v úpravách nějaké typedefy přepsal. Takže adresa glBindFramebuffer neodpovídala proceduře glBindFramebuffer...

Nicméně díky, pomohlo mi to s tím zda GL_FRAMEBUFFER odpovídá skutečně té adrese (vzpomněl jsem si na extensiony).

Tak si jdu dát pár facek a na příště raději při kompilaci na jinou platformu ještě proletět kód, jestli jsem si někde s něčím omylem nepohrál...
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Marek



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

PříspěvekZaslal: 12. červen 2011, 00:58:18    Předmět: Odpovědět s citátem

Původně mě napadlo (což jsem ale považoval za nepravděpodobné), že bys mohl mít špatnou verzi libGL, což by mohlo právě způsobit to, že by pointery na některý funkce ukazovaly na jiný funkce a dostával bys GL errory. (stát se to může, když si někdo rozmrdá linux)
_________________
AMD Open Source Graphics Driver Developer
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