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

Aktuelle Zeit: So Jul 13, 2025 22:25

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Seltsames FBO-Verhalten
BeitragVerfasst: Mi Mai 27, 2009 14:59 
Offline
DGL Member

Registriert: Mo Mai 25, 2009 21:29
Beiträge: 30
Hi,

ich versuche gerade die Farbe einer Textur zu ändern.
Dabei wurde mir der Tipp mit einem FBO gegeben - was soweit auch gut zu funktionieren scheint.
Zumindest bei der ersten Textur.
Bei der zweiten wird mir nur das obere, rechte viertel angezeigt (vergrößert).
Bei der dritten wird dann wieder gezoomt, usw.

Mein Vorgehen:
Ich lade meine Textur (.tga) und übergebe sie folgender procedure:
Code:
  1. procedure InitTeamColorFBO(size_x, size_y, Color: Integer; fbo, depthbuffer  : GLUint; var tex : GLUInt);
  2. var newtex : GLUInt;
  3. c_Red, C_Green, C_Blue : Double;
  4. begin
  5.   C_Blue := (Color div (256*256))/256;
  6.   Color := Color mod (256*256);
  7.   C_Green := (Color div 256)/256;
  8.   C_Red := ((Color mod 256))/256;
  9.   glGenFramebuffersEXT(1, @fbo);
  10.   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
  11.   glGenRenderbuffersEXT(1, @depthbuffer);
  12.   glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer);
  13.   glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, size_x, size_y);
  14.   glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthbuffer);
  15.   glGenTextures(1, @newtex);
  16.   glBindTexture(GL_TEXTURE_2D, newtex);
  17.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  18.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  19.   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8,  size_x,size_y, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
  20.   glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D, newtex, 0);
  21.   CheckFBO;
  22.   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
  23.   glViewPort(0, 0, size_x, size_y);
  24.   glortho(0,1,0,1,0,128);
  25.   glClearColor(C_Red,C_Green,C_Blue,0);    
  26.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  27.   glBindTexture(GL_TEXTURE_2D, Tex);
  28.   glEnable(GL_BLEND);
  29.   glBlendFunc(GL_src_color ,GL_one);
  30.   glBegin(GL_QUADS);
  31.     glTexCoord2f(0,0); glVertex3f(0, 0, 0);
  32.     glTexCoord2f(1,0); glVertex3f(1, 0, 0);
  33.     glTexCoord2f(1,1); glVertex3f(1, 1, 0);
  34.     glTexCoord2f(0,1); glVertex3f(0, 1, 0);
  35.   glEnd;
  36.   glDisable(GL_Blend);
  37.   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
  38.   glDeleteTextures(1, @tex);  //alte Textur freigeben
  39.   tex := newtex;
  40. end;


Woher kommt dieses Verhalten und wie behebe ich es?

Mfg.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 27, 2009 15:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Versuche mal statt

Code:
  1.   glViewPort(0, 0, size_x, size_y);
  2.   glortho(0,1,0,1,0,128);


folgendes:

Code:
  1.     glMatrixMode(GL_PROJECTION);
  2.     glLoadIdentity();
  3.     glViewport(0, 0, size_x, size_y);
  4.     glOrtho(0, 1, 0, 1, 0, 128);
  5.     glMatrixMode(GL_MODELVIEW);
  6.     glLoadIdentity();
  7.  


Danach musst du das natürlich wieder zurücksetzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 27, 2009 15:49 
Offline
DGL Member

Registriert: Mo Mai 25, 2009 21:29
Beiträge: 30
Danke, klappt 8)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


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 ]