Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 12:27

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Framebuffer
BeitragVerfasst: Di Feb 12, 2008 01:37 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich weiß nicht ob es daran liegt das ich übermüdet bin oder so, aber ich verzweifel grad an den Framebuffern (GL_FRAMEBUFFER_EXT)..
Ich hab sie schon tausendfach verwendet und nie probleme gehabt, aber grad im moment.. ka.. (wobei ich dazusagen muß, das was ich grad tue hatte ich nochnie versucht damit)

Also, es geht mir darum, ich habe mein OpenGL Fenster das sagen wir eine größe von 800x600 hat. Jetzt möchte ich gern einen Shader auf eine Textur anwenden die die maße 512x512 hat.
Ich erstelle also einen Framebuffer + Framebuffer-Textur mit den maßen 512x512.

Das Binde ich nun, zeichne ein Quad von 0,0 -> 512x512 im Orthomode und nehm dann die Textur vom Framebuffer und binde sie zum benutzen. So, das problem ist jetzt... die Textur die dabei enstanden ist, ist irgendwie "versetzt".. so also wäre das Quad, welches ich an die position 0,0 zeichne nicht wirklich an 0,0 sondern so, das seine rechte untere kante am rechten unteren rand meines Fensters ist = in der resultierenden textur ist nur die linke obere ecke von meiner eigentlichen textur drin.. :/

Ich gehe mal davon aus, das liegt daran das da noch irgendwie evtl der Viewport vom Fenster gesetzt ist beim Rendern in den Framebuffer etc.. aber selbst wenn ich den via glViewport auf 512x512 setze klappt es nicht.. (es wird anders, aber nicht wirklich besser).. auch mit glOrtho, glIdentity etc.. alles bringt nix..

Hat da jemand ne idee, woran das liegen kann?
Ich muß das rendern in den Framebuffer leider mitten im normalen zeichenablauf machen, also kann es nicht direkt als erstes machen.. Was muß ich da alles resetten etc, damit das klappt? ^^

Hilfe~
Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 12, 2008 14:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Eine Frage dazu: Wenn du die Textur renderst, ist sie während dessen im Framebuffer gebunden und ist dieser während dessen gebunden? Wenn ja, dann solltest du das ändern, z.B. durch eine Puffertextur.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 12, 2008 15:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
hab extra drauf geachtet das die framebuffer-textur wärend des renderns in den framebuffer nicht gebunden ist :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 14, 2008 21:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich verzweifel hier echt dran... :(

Wie istn das bei Framebuffern... kann ich bei denen auch ganz normal einfach via glOrtho meine Projektion einstellen?
Wenn mein Fenster jetzt 1024x768 groß ist und ich will ein Quad mit der größe 800x600 in einen 800x600 großen Framebuffer zeichnen...

im moment mache ich da jetzt:

Code:
  1. glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer);
  2. glViewport(0, 0, Width, Height);
  3. glMatrixMode(GL_PROJECTION);
  4. glLoadIdentity;
  5. glOrtho(0, Width, Height, 0, -5, 5);
  6. glMatrixMode(GL_MODELVIEW);
  7. glViewport(0, 0, Width, Height);
  8. glLoadIdentity;
  9.  
  10. glBegin(GL_QUADS);
  11.   glVertex2f(0, 0);
  12.   glVertex2f(0, 600);
  13.   glVertex2f(800, 600);
  14.   glVertex2f(800, 0);
  15. glEnd;


Aber wenn ich dann die Textur die vom Framebuffer generiert wurde (Das Color-Attachment vom Framebuffer) binde und einfach hinzeichne fehlt ein stück oben und links (ist einfach schwarz)... komischerweise exakt soviel, wie der unterschid zwischen Framebuffer größe (800x600) und Fenstergröße ist (1024x768)..

und egal was ich tue, es ändert sich zwar hier und da ein wenig, aber nie wird es richtig :(
lasse ich z.B. das glOrtho weg und ändere nur den Viewport fehlt am rechten rand aufeinmal auch ein stück (logisch, denn der viewport passt nichtmehr zur ortho größe)..

Hat da niemand irgendne idee was das sein kann? :(
Es muß dich möglich sein das der Framebuffer ne andere größe als das Fenster hat??

Aya~~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 15, 2008 11:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Habe mit FBOs bisher noch nicht gemacht. Aber im Tutorial wird vor dem Zeichnen in den Framebuffer der Viewport auf die Größes des Framebuffers gesetzt. In deinem Code sehe ich Width und Height. Ist das die Größe des Fensters oder des Buffers?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 15, 2008 11:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Lossy eX hat geschrieben:
Habe mit FBOs bisher noch nicht gemacht. Aber im Tutorial wird vor dem Zeichnen in den Framebuffer der Viewport auf die Größes des Framebuffers gesetzt. In deinem Code sehe ich Width und Height. Ist das die Größe des Fensters oder des Buffers?


oh, sorry vergessen dazu zuschreiben ^^ Width und Height ist in dem fall die größe des Framebuffers :)

PS: Das fiese ist ja, normal gehen die framebuffer bei mir problemlos... aber ich hab bisher auch nochnie versucht nen buffer zu machen, der kleiner ist als mein Fenster :/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 15, 2008 13:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
hmm... Hast du mal versucht, den Viewport so anzulegen, als ob der Framebuffer an der unteren rechten seite deines Fensters liegen würde?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 15, 2008 14:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Ne nochnicht probiert.. aber das wäre auch wenn eine lösung die mir sehr merkwürdig vorkäme.. :/ Linke untere ecke könnte ich noch so halb verstehen irgendwie... aber untere rechte ecke?

Werd ich aber heute abend mal testen.

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 16, 2008 02:23 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Boah.. da soll mal jemand drauf kommen.... ich hatte nen SCISSOR_TEST aktiviert... :twisted:

Jetzt geht's... :P


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 16, 2008 10:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
:D

ja, das sind diese kleinen netten Fehler, die einen in den Wahnsinn treiben :D

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.012s | 15 Queries | GZIP : On ]