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

Aktuelle Zeit: Fr Jul 18, 2025 03:53

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: FBOs und Blending
BeitragVerfasst: So Jul 04, 2010 23:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich weiß grad nicht mehr weiter, deshalb frag ich mal wieder hier. Und zwar Render ich sowas wie Ziffernblätter in ein FBO. Erst das Blatt an sich und dann die Ziffer darüber. Nun will ich es so machen, das man für das Blatt und die Ziffern verschiedene Farben definieren kann. Für das Blatt funktioniert das 1a, nur wenn ich bei der Ziffer den Alpha-Wert runter schraub, dann wird das Blatt dahinter sichtbar. Ich möchte aber, das die Textur des FBOs dann an dieser Stelle durchsichtiger wird. Das sollte eig mit Blending ganz einfach zu lösen sein, ich weiß aber nicht welche Kombination der Parameter ich brauche, bzw in welcher Reihenfolge ich zeichnen soll. Hier mal der Code wie er zur Zeit ist:
Code:
      glClearColor(0, 0, 0, 0);
      glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
      //Blatt zeichnen
      glColor4fv(@fFaceColor[0]);
      FaceTex.Bind;
      glEnable(GL_BLEND);
      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
      glBegin(GL_QUADS)
        glTexCoord2f(0, 0); glVertex2f(       0,        0);
        glTexCoord2f(0, 1); glVertex2f(       0, TEX_SIZE);
        glTexCoord2f(1, 1); glVertex2f(TEX_SIZE, TEX_SIZE);
        glTexCoord2f(1, 0); glVertex2f(TEX_SIZE,        0);
      glEnd;
      FaceTex.Unbind;
      //Ziffer zeichnen
      glPushMatrix;
        glColor4fv(@fFontColor[0]);
        glTranslatef(0, -12, 0);
        tsSetParameteri(TS_ALIGN, TS_ALIGN_CENTER);
        tsTextBeginBlock(0, 0, TEX_SIZE, CHAR_HEIGHT, TS_BLOCKFLAG_WORD_WRAP);
          tsFontBind(FontID);
          Text := CHARS[i+1];
          tsTextOutA(@Text[1]);
        tsTextEndBlock;
        glDisable(GL_BLEND);
      glPopMatrix;

Ich hab schon versucht mir eine Schwaz-Weiße Maske zu erstellen, mit der ich dann den AlphaKanal füllen kann. Danach wollte ich mit glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_DST_COLOR); den AlphaWert mit den Werten der Farben füllen, hab aber dann gemerkt, dass der AlphaKanal trotzdem nur mit dem alten AlphaKanel (der 1 war) verrechnet wird.
Und jetzt dreh ich mich iwie im Kreis un es geht nich weiter. Kann mir da jmd helfen?

MfG & Thx Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FBOs und Blending
BeitragVerfasst: Di Jul 06, 2010 14:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn du willst, dass das FBO an der stelle durchsichtig wird, musst du Blending ausschalten. Und dann beim Rendern des FBOs das Blending allerdings wieder ganz normal (wahrscheinlich GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) aktivieren.

greetings

_________________
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: Re: FBOs und Blending
BeitragVerfasst: Di Jul 06, 2010 17:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich habs gelöst, ganz so einfach ear es allersings nicht, da die Ziffern nur aus einer Alpha-Maske bestanden haben. Wenn ich das Blending deaktiviert hätte, dann wäre im FBo nur ein viereckiges Loch^^
Hier mal noch die Lösung, wenns jmd interesiert:
Code:
      //Blatt zeichnen
      glColor4fv(@fFaceColor[0]);
      FaceTex.Bind;
      glEnable(GL_BLEND);
      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
      glBegin(GL_QUADS);
        glTexCoord2f(0, 0); glVertex2f(       0,        0);
        glTexCoord2f(0, 1); glVertex2f(       0, TEX_SIZE);
        glTexCoord2f(1, 1); glVertex2f(TEX_SIZE, TEX_SIZE);
        glTexCoord2f(1, 0); glVertex2f(TEX_SIZE,        0);
      glEnd;
      FaceTex.Unbind;

      //Ziffer-Maske zeichnen
      glColorMask(False, False, False, True);
      glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);
      glPushMatrix;
        glColor4f(0, 0, 0, 1-fFontColor[3]);
        glTranslatef(0, -fPosY, 0);
        tsSetParameteri(TS_ALIGN, TS_ALIGN_CENTER);
        tsTextBeginBlock(0, 0, TEX_SIZE, CHAR_HEIGHT, TS_BLOCKFLAG_WORD_WRAP);
          tsFontBind(FontID);
          Text := CHARS[i+1];
          tsTextOutA(@Text[1]);
        tsTextEndBlock;
      glPopMatrix;

      //Ziffer zeichnen
      glColorMask(True, True, True, True);
      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
      glPushMatrix;
        glColor4fv(@fFontColor[0]);
        glTranslatef(0, -fPosY, 0);
        tsSetParameteri(TS_ALIGN, TS_ALIGN_CENTER);
        tsTextBeginBlock(0, 0, TEX_SIZE, CHAR_HEIGHT, TS_BLOCKFLAG_WORD_WRAP);
          tsFontBind(FontID);
          Text := CHARS[i+1];
          tsTextOutA(@Text[1]);
        tsTextEndBlock;
        glDisable(GL_BLEND);
      glPopMatrix;


MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.007s | 14 Queries | GZIP : On ]