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

Aktuelle Zeit: Sa Jul 19, 2025 21:04

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



Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: RenderPass & Texturen + AlphaKanal
BeitragVerfasst: Mi Nov 04, 2009 22:12 
Offline
DGL Member
Benutzeravatar

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

ich hab n Problem bei nem Projekt von mir. Und zwar will ich in ne Textur rendern, aber mit AlphaKanal...
Hier mal der Code:
Code:
  1. //Textur erstellen
  2.   GetMem(pTexData, fTexWidth*fTexHeight*3);
  3.   glGenTextures(1, @fOffScreenTex);
  4.   glBindTexture(GL_TEXTURE_2D, fOffScreenTex);
  5.   glTexImage2D(GL_TEXTURE_2D, 0, 3, fTexWidth, fTexHeight, 0,
  6.                GL_RGBA8, GL_UNSIGNED_BYTE, pTexData);
  7.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  8.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  9.   FreeMem(pTexData);
  10.  
  11. //in Texture koieren
  12.   glBindTexture(GL_TEXTURE_2D, fOffScreenTex);
  13.   glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, fTexWidth, fTexHeight, 0);
  14.  
  15. //Textur rendern
  16. glEnable(GL_BLEND);
  17.   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  18.   glEnable(GL_TEXTURE_2D);
  19.   glBindTexture(GL_TEXTURE_2D, fOffScreenTex);
  20.   glPushMatrix;
  21.     glColor4f(1, 1, 1, 1);
  22.     glTranslatef(0,0,0);
  23.     glBegin(GL_QUADS);
  24.       glTexCoord2f(0,0); glVertex2f(-250,-250);
  25.       glTexCoord2f(0,1); glVertex2f(-250, 250);
  26.       glTexCoord2f(1,1); glVertex2f( 250, 250);
  27.       glTexCoord2f(1,0); glVertex2f( 250,-250);
  28.     glEnd;
  29.   glPopMatrix;
  30.   glDisable(GL_TEXTURE_2D);
  31.   glDisable(GL_BLEND);


die teile, die durchsichtig sein sollten sind aber nicht durchsichtig...
ClearColor hab ich auch auf (0,0,0,0). ich find einfach kein Fehler. Blickt da jmd durch?

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  
BeitragVerfasst: Mi Nov 04, 2009 23:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Du benutzt ja kein FBO sondern kopierst aus dem regulären Framebuffer. Daher musst du deinen Framebuffer so erstellen das er auch Alpha kann. Die bessere Alternative ist natürlich ein FBO zu benutzen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 04, 2009 23:59 
Offline
DGL Member
Benutzeravatar

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

hab grad versuch alles auf FBO umzubauen. Ich hab jetzt beides Laufen und kann mit ner Boolean Variable umschalten. Aber es macht nich das was es machen soll. Es soll so aussehen wie auf dem Bild, das geht aber nur mit der Textur (siehtman ja is net durchsichtig). Mit dem FBO kommt immer nur 1 Ring -.-

€: Textut hab ich aber auch shcon auf AlphKanal abgeändert:
Code:
  1.   //erstellen
  2.   GetMem(pTexData, fTexWidth*fTexHeight*4);
  3.   glGenTextures(1, @tex);
  4.   glBindTexture(GL_TEXTURE_2D, tex);
  5.   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, fTexWidth, fTexHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData);
  6.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  7.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  8.   FreeMem(pTexData);
  9.   //copy
  10.   glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, fTexWidth, fTexheight, 0);
  11.  


MfG Bergmann


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 05, 2009 15:24 
Offline
DGL Member
Benutzeravatar

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

habs jetzt mit glBitmap gemacht. Aber das GrabScreen dauert sehr lang...Ich hab zwar jetzt gewünschten Effekt, es wär mir aber trotzdem lieb wenn ich das FBO noch zum laufen bekomm...

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  
BeitragVerfasst: Do Nov 05, 2009 16:19 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Trägt nicht zur Problemlösung bei, aber: Sieht hübsch aus :)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 05, 2009 16:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Vielleicht zeigst du mal den Code wo du dein FBO erzeugst und benutzt.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 05, 2009 17:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Nichts gegen meine Unit. Allerdings ist die Funktion GrabScreen auch wirklich nur dazu da um ein ScreenShot zu erstellen. Entsprechend darf sie auch total langsam sein. Und für deinen Fall ist sie alles Andere als zu empfehlen.

Sonst kann ich Coolcat nur zustimmen. Zeig uns mal deinen FBO Code. Also die Erstellung des FBOs und das Zeichnen in das FBOs. Du musst beim Befüllen deines FBOs darauf achten, dass du dessen bisherigen Inhalt nicht löscht sondern in das Resultat mit einbeziehst. Ansonsten kann es natürlich passieren, dass du ständig nur mit einem Ring da stehst.

Kleine Anmerkung zu deinem Code von oben.
- Beim Erstellen einer leeren Textur musst nicht immer einen Buffer angeben. Wenn du den Inhalt sowieso überschreiben willst genügt ein NIL als Buffer. Die Textur wird trotzdem normal erstellt. Größe und Format sind bekannt. Und das ist das Wichtigste. Das Erstellen und Übertragen eines ungenutzen Buffers ist nur schwer zu handhaben und kostet nur Leistung. Was es aber nicht müsste.
- Du hattest ja von 3 auf 4 umgestellt. Deine Textur war vorher schon RGBA. Nur die übergebenen Daten haben sich geändert. Coolcat meinste da aber was anderes. Und zwar dein FrameBuffer/RenderKontex. Der muss auch über einen Alphakanal verfügen. Das muss beim Erstellen des RenderKontexes berücksichtigt werden. Und nach dem Erstellen muss das auch überprüft werden. Da der Treiber immer noch das letzte Wort dabei haben kann. Bei FBOs ist das anders. Entsprechend sollten FBOs auch immer vorgezogen werden. Unter anderem sind FBOs auch um ein vielfaches besser auf moderen Hardware zugeschnitten.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 05, 2009 17:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Trotz den berechtigten Hinweisen auf FBO will ich noch kurz anmerken, dass du glCopyTexSubImage2D nehmen solltest, statt glCopyTexImage2D. Letzteres erstellt die Textur nämlich komplett neu (deshalb musst du auch das Format noch mal neu angeben), was die Leistung ebenfalls extrem drückt. Die andere Funktion belässt das Format der Textur wie es ist (und erlaubt auch keine Größenänderung) und überschreibt wirklich einfach nur den Inhalt, also das, was du willst.

Ansonsten, nochmal der Hinweis, du führst nicht zufällig glClear mit den GL_CLEAR_COLOR_BITS auf deinen Hauptpuffer aus, womit du den vorherigen Inhalt natürlich killst?

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  
BeitragVerfasst: Do Nov 05, 2009 17:53 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Wenn du das FBO in einer Schleife benutzt, musst du außerdem beachten, dass du nicht gleichzeitig in die Textur rendern und sie auf eine Fläche auftragen kannst.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 05, 2009 18:08 
Offline
DGL Member
Benutzeravatar

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

@LossyEx:
Code:
  1. RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
ColorBits sind auf 32 also is Alpha vorhanden, oder?
ich denke es liegt an dem was Schläfer gesagt hat, deshlab machichmir jetzt m,al nich die mühe un stückel den FBO Code hier rein, ich versuch das Problem erstma so zu lösen un dann guckmer weiter...
 
@LordHorazont: so ruf ich meni glClear auf:
Code:
  1. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

aber danch zeichne ich das neu, was in die Textur soll...
ich probier das jetzt aber nochma mit glCopyTexSubImage2D...

@Schläfer: stimmt das wusst ich nich, aber erscheint logisch ^^
also muss ich die Textur vom FBO erst in ne andere Textur kopieren, wie mich ich das? Und ist das von der Rechenzeit kleiner als das GrabScreen der glBitmap? sonst lohnt sich der Aufwand ja nich...

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  
BeitragVerfasst: Do Nov 05, 2009 18:37 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Ob man das Bild aus einem FBO kopieren kann (ohne das der Alphakanal verschwindet) weiß ich nicht, kann aber gut möglich sein. Es gibt aber noch eine andere Möglichkeit mit 2 FBOs:

Man bindet immer die Textur des jeweils anderen und wechselt bei jedem Durchlauf das FBO in das man zeichnet hin und her.
Das verbraucht natürlich mehr Speicher, aber normalerweise soll in ein FBO rendern, schneller sein als das Bild nachträglich in eine Textur zu kopieren.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 05, 2009 18:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
gut dann mach ich das ma so...
ich glaub aber das wird jetzt nix mehr muss erstma los. entweder ich mach das heut nacht noch oder morgen. ich meld mich...

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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 05, 2009 23:21 
Offline
DGL Member
Benutzeravatar

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

ich habs jetzt mit 2 FBOs hin bekommen. Aber im Vergleich zu der Lösung mit der Textur sieht es nicht so schön aus (siehe Bild). Die Stellen die es sanft ausblenden sollte (AlphaBlending mit Alpha 1-0) werden jetzt nach einigen Durchläufen komplett schwarz. Ich glaub das liegt irgendwie daran, wie ich die Textur des FBOs erstell, bzw wie ich das zeichne, denn ich muss jetzt mit den Alpha-Werten auch ganz vorsichtig umgehen.

FBO Code:
Code:
  1. type
  2.   FrameBufferException = class(Exception);
  3.   TFrameBufferObject = class(TObject)
  4.   private
  5.     //das eigentliche FrameBufferObject (Index von OpenGL)
  6.     //|                 der TiefenBuffer (Index von OpenGL)
  7.     //|                 |             die Texture in die gerendert wird
  8.     fFrameBufferObject, fDepthBuffer, fTexture    : gluInt;
  9.     //Breite und Höhe der Texture, bzw. des gesammten FBOs
  10.     fWidth, fHeight                               : Integer;
  11.     procedure ErrorCheck;                      //Prüft das neu erstellte FBO auf Fehler
  12.   public
  13.     procedure Bind;
  14.     procedure Unbind;
  15.     procedure BindTexture;                     //Bindet die Texture, das man sie benutzen kann
  16.     constructor Create(Width, Height: Integer);//erzeugt einen neuen FBO
  17.     destructor  Destroy; override;             //gibt den FBO wieder frei
  18.   end;
  19.  
  20.  
  21. //Prüft das neu erstellte FBO auf Fehler
  22. procedure TFrameBufferObject.ErrorCheck;
  23. //ErrorCode
  24. var Error: glEnum;
  25. begin
  26.   Error := glCheckFrameBufferStatusEXT(GL_FRAMEBUFFER_EXT);//ErrorCode besorgen
  27.   case Error of                                            //je nach Code entsprechende Meldung ausgeben
  28.     GL_FRAMEBUFFER_COMPLETE_EXT:
  29.       exit;
  30.     GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
  31.       raise FrameBufferException.Create('FrameBufferObject: Incomplete attachment');
  32.     GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
  33.       raise FrameBufferException.Create('FrameBufferObject: Missing attachment');
  34.     GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
  35.       raise FrameBufferException.Create('FrameBufferObject: Incomplete dimensions');
  36.     GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
  37.       raise FrameBufferException.Create('FrameBufferObject: Incomplete formats');
  38.     GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
  39.       raise FrameBufferException.Create('FrameBufferObject: Incomplete draw buffer');
  40.     GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
  41.       raise FrameBufferException.Create('FrameBufferObject: Incomplete read buffer');
  42.     GL_FRAMEBUFFER_UNSUPPORTED_EXT:
  43.       raise FrameBufferException.Create('FrameBufferObject: Framebufferobjects unsupported');
  44.   end;
  45. end;
  46.  
  47. procedure TFrameBufferObject.Bind;
  48. begin
  49.   if (fFrameBufferObject = 0) then exit;
  50.   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fFrameBufferObject);  //FrameBuffer binden
  51.   glPushAttrib(GL_VIEWPORT_BIT);                                 //ViewPort speichern
  52. end;
  53.  
  54. procedure TFrameBufferObject.Unbind;
  55. begin
  56.   glPopAttrib;                                                   //Viewport laden
  57.   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);                   //FrameBuffer entbinden
  58. end;
  59.  
  60. //Bindet die Texture, das man sie benutzen kann
  61. procedure TFrameBufferObject.BindTexture;
  62. begin
  63.   glEnable(GL_TEXTURE_2D);                                       //Texturen aktivieren
  64.   glBindTexture(GL_TEXTURE_2D, fTexture);                        //Textur binden
  65. end;
  66.  
  67. //erzeugt das FBO
  68. constructor TFrameBufferObject.Create(Width, Height: Integer);
  69. begin
  70.   if not GL_EXT_framebuffer_object then                          //wenn nicht unterstützt, dann...
  71.     raise FrameBufferException.Create(
  72.       'FrameBufferObject: not supported');                       //neue Excetion auslösen
  73.  
  74.   inherited Create;                                              //erzeugen
  75.  
  76.   fWidth  := Width;                                              //Breite übernehmen
  77.   fHeight := Height;                                             //Höhe übernehmen
  78.  
  79.   glGenFramebuffersEXT(1, @fFrameBufferObject);                  //FrameBuffer erzeugen
  80.   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fFrameBufferObject);  //Frame Buffer binden
  81.  
  82.   if fFrameBufferObject = 0 then begin
  83.     ShowMessage('FBO: Fehler beim erstellen des FrameBuffers'); Halt;
  84.   end;
  85.  
  86.   glGenRenderbuffersEXT(1, @fDepthBuffer);                       //TiefenBuffer erzeugen
  87.   glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, fDepthBuffer);      //TiefenBuffer binden
  88.  
  89.   if fDepthBuffer = 0 then begin
  90.     ShowMessage('FBO: Fehler beim erstellen des TiefenBuffers'); Halt;
  91.   end;
  92.  
  93.   glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,                  //Breite & Höhe festlegen
  94.                            GL_DEPTH_COMPONENT,
  95.                            fWidth,
  96.                            fHeight);
  97.   glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,               //an den FrameBuffer binden
  98.                                GL_DEPTH_ATTACHMENT_EXT,
  99.                                GL_RENDERBUFFER_EXT,
  100.                                fDepthBuffer);
  101.  
  102.   glGenTextures(1, @fTexture);                                   //neue Textur erzeugen
  103.   if fTexture = 0 then begin
  104.     ShowMessage('FBO: Fehler beim erstellen der Textur'); Halt;
  105.   end;
  106.   glBindTexture(GL_TEXTURE_2D, fTexture);                        //Textur binden
  107.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);//Texturfilter einstellen
  108.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);//Texturfilter einstellen
  109.   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,  fWidth, fHeight,      //Textur erzeugen
  110.                0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
  111.  
  112.   glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,                  //Textur an den FrameBuffer übergeben
  113.                             GL_COLOR_ATTACHMENT0_EXT,
  114.                             GL_TEXTURE_2D,
  115.                             fTexture, 0);
  116.  
  117.   ErrorCheck;                                                    //auf Fehler prüfen
  118.   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);                   //den FrameBuffer entbinden
  119. end;
  120.  
  121. //gibt das FBO frei
  122. destructor TFrameBufferObject.Destroy;
  123. begin
  124.   glDeleteFrameBuffersEXT(1, @fFrameBufferObject);               //FrameBuffer freigeben
  125.   glDeleteRenderBuffersEXT(1, @fDepthBuffer);                    //TiefenBuffer freigeben
  126.   glDeleteTextures(1, @fTexture);                                //Textur freigeben
  127.  
  128.   inherited destroy;                                             //Object freigeben
  129. end;


RenderCode:
Code:
  1.   //[...] weiter oben wird das FBO gebunden
  2.   glEnable(GL_BLEND);
  3.   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  4.  
  5.   //Effekt rendern
  6.   if fShowEffect then
  7.     begin
  8.       glEnable(GL_TEXTURE_2D);
  9.       if fBindFBO1 then fFBO2.BindTexture
  10.                    else fFBO1.BindTexture;
  11.       glPushMatrix;
  12.         glColor4fv(@fFadeOffColor[0]); //hier hatte ich früher ein Alpha von 0.9 siehe Bild oben
  13.                                        //bei dem Bild jetzt hab ich n Alpha von 0.99
  14.         glBegin(GL_QUADS);
  15.           glTexCoord2f(0,0); glVertex2f(-MaxWidth*fEffectScale,-MaxWidth*fEffectScale);
  16.           glTexCoord2f(0,1); glVertex2f(-MaxWidth*fEffectScale, MaxWidth*fEffectScale);
  17.           glTexCoord2f(1,1); glVertex2f( MaxWidth*fEffectScale, MaxWidth*fEffectScale);
  18.           glTexCoord2f(1,0); glVertex2f( MaxWidth*fEffectScale,-MaxWidth*fEffectScale);
  19.         glEnd;
  20.       glPopMatrix;
  21.       glDisable(GL_TEXTURE_2D);
  22.     end;
  23.   glDisable(GL_BLEND);
  24.   //[...] weiter untern wird das FBO wieder entbunden


Das FBO einfach nicht zu leeren, um den Inhalt vom letzten Renderdurchgang zu behalten, hab ich auch probiert, aber da kann ich das alte Bild nicht verzerren, wie man das auf dem Bild sieht. Oder gibts da doch ne Möglichkeit? Weil beim Nicht-Löschen hatte ich auch nich das Problem mit den schwarzen Stellen...

MfG Bergmann


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Nov 06, 2009 01:18 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Ich versteh' immernoch nicht wie du das eigentlich zeichnest. Für mich sieht das (zumindest das erste Bild) so aus als ob mehrere male eine Textur übereinander geblendet wurde. Zuerst die Breiten und dann die Runderen drüber. Aber dazu brauch' man kein FBO. Außer die Textur ist aus einem FBO, dann bräuchte man aber nur eins.
Vielleicht kannst du dazu noch was schreiben, ansonsten ist das Ergebnis für mich genauso rätselhaft.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Nov 06, 2009 08:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Mich würde interessieren, wie du fFadeOffColor berechnest. Ich habe die Vermutung, dass du das zum ende hin schwarz werden lässt, was die Farbe erklärt, aber noch nicht den Effekt. Wegen dem Effekt scheint es mir so, als ob du die Textur, die das komplette Bild enthält, mit Alpha-Blending darauf zeichnest, immer und immer wieder. Das könnte zumindest eine Erklärung sein, sicher bin ich mir da auch nicht.
Denn so wie du das machst, braucht die Textur eigentlich gar keinen Alphakanal... Wenn ich mich jetzt nicht gewaltig irre zumindest.

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  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


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.011s | 14 Queries | GZIP : On ]