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

Aktuelle Zeit: So Jul 20, 2025 05:50

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem - Blending
BeitragVerfasst: Mi Aug 17, 2005 20:30 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Noch ein Problem!

Diesesmal hat es mit Blending zu tun, was mir eben zum Hals raushängt.

Ich möchte folgendes machen:
- Rendern der Szene( Heute den Ganzen Tag ein Loader für ein Mapformat geschrieben ) in 2 Tiefenbuffer für Glowing, dabei wurde berücksichtigt, das Objekte auch nicht Geblendet werden können, d.h. sie werden nicht in den PixelBuffer geschrieben.
- Nochmaliges Rendern der Szene( Orginalszene )
- Drüberblenden des Pixelbuffers <--- Und genau da liegt das Problem

Nochmal:
Er Blendet es nicht, so wie ich will.
Weder Blendet er die Texturen übereinander, noch kann ich meine Orginalszene in den normalen device Rendern ohne das er diesen Nacher Logischerweisse löscht wenn ich glLoadIdentity; Aufrufe. Als lösung Renderte ich es in einen dritten Pixelbuffer, den ich drüber Blenden wollte, aber da das Blenden nicht möchte wie ich es will funktionierte das logischerweisse auch nicht! :cry:

Leider muss es wenn möglich heute( Edit: Morgen ) fertig werden, hier der Code:
Code:
  1. function TGLMainClass.OnRender:Boolean;
  2. var
  3.   i: integer;
  4. begin
  5. //  self.Objects[0].Rotate(1,1,1);
  6. //  self.Objects[1].Rotate(0.5,0.5,0);
  7.  
  8.   PixelBuffer.Enable;
  9.   glMatrixMode(GL_PROJECTION);
  10.   glLoadIdentity;
  11.   gluPerspective(45,PixelBuffer.Width/PixelBuffer.Height,nClip,fClip);
  12.   glMatrixMode(GL_MODELVIEW);
  13.   glLoadIdentity;
  14.   glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  15.   glTranslatef(-5,5,-20);
  16.   glScalef(0.5,0.5,0.5);
  17.   //
  18.   for i:=0 to high(self.Objects) do begin
  19.     if ( self.Objects[i].Mat.Glow ) then
  20.       self.Objects[i].Draw;
  21.   end;
  22.   // Rendert alle Objekte in den Pixelbuffer zum Glow'en, falls dies erwünsch
  23.   // ist.
  24.   //
  25.   PixelBuffer.Disable;
  26.  
  27.  
  28.   PixelBuffer2.Enable;
  29.   glMatrixMode(GL_PROJECTION);
  30.   glLoadIdentity;
  31.   gluPerspective(45,PixelBuffer2.Width/PixelBuffer2.Height,nClip,fClip);
  32.   glMatrixMode(GL_MODELVIEW);
  33.   glLoadIdentity;
  34.   glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  35.   glTranslatef(-5,5,-20);
  36.   glScalef(0.5,0.5,0.5);
  37.   // 2tes Glowrendering
  38.   for i:=0 to high(self.Objects) do begin
  39.     if ( self.Objects[i].Mat.Glow ) then
  40.       self.Objects[i].Draw;
  41.   end;
  42.   // Rendert alle Objekte in den Pixelbuffer zum Glow'en, falls dies erwünsch
  43.   // ist.
  44.   //
  45.   PixelBuffer2.Disable;
  46.  
  47.   PixelBuffer3.Enable;
  48.   glMatrixMode(GL_PROJECTION);
  49.   glLoadIdentity;
  50.   gluPerspective(45,PixelBuffer3.Width/PixelBuffer3.Height,nClip,fClip);
  51.   glMatrixMode(GL_MODELVIEW);
  52.   glLoadIdentity;
  53.   glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  54.   glTranslatef(-5,5,-20);
  55.   glScalef(0.5,0.5,0.5);
  56.   // 2tes Glowrendering
  57.   for i:=0 to high(self.Objects) do begin
  58.       self.Objects[i].Draw;
  59.   end;
  60.   // Rendert alle Objekte in den Pixelbuffer zum Glow'en, falls dies erwünsch
  61.   // ist.
  62.   PixelBuffer3.Disable;
  63.  
  64.  
  65.   self.LoadSettings();
  66. //  glTranslatef(-5,5,-20);
  67. //  glScalef(0.5,0.5,0.5);
  68. //  for i:=0 to high(self.Objects) do begin
  69. //    self.Objects[i].Draw;
  70. //  end;
  71.  
  72.   // Problemstelle fängt hier an
  73.  
  74.   glMatrixMode(GL_MODELVIEW);
  75.   glLoadIdentity;
  76.   glMatrixMode(GL_PROJECTION);
  77.   glLoadIdentity;
  78.   glOrtho(-1*self.yScale,1*self.yScale,-1,1,-1,1);      // *self.yScale
  79.   glDisable(GL_DEPTH_TEST);
  80.  
  81.   RenderBuffer(PixelBuffer3);
  82.   BlendBuffer(PixelBuffer2);
  83.   BlendBuffer(PixelBuffer);
  84.  
  85.   glEnable(GL_DEPTH_TEST);
  86.  
  87.   Result := True;
  88. end;
  89.  
  90. procedure TGLMainClass.BlendBuffer(const Buffer: TPixelBuffer);
  91. begin
  92.   Buffer.Bind;
  93.   glEnable(GL_Blend);
  94.   glBlendFunc(GL_ONE,GL_ONE);
  95.     glBegin(GL_QUADS);
  96.         glTexCoord2f(0, 0);
  97.         glVertex2f(-1, -1);
  98.         glTexCoord2f(1, 0);
  99.         glVertex2f(1, -1);
  100.         glTexCoord2f(1, 1);
  101.         glVertex2f(1, 1);
  102.         glTexCoord2f(0, 1);
  103.         glVertex2f(-1, 1);
  104.     glEnd();
  105.   glDisable(GL_Blend);
  106. end;
  107.  
  108. procedure TGLMainClass.RenderBuffer(const Buffer: TPixelBuffer);
  109. begin
  110.   Buffer.Bind;
  111.     glBegin(GL_QUADS);
  112.         glTexCoord2f(0, 0);
  113.         glVertex2f(-1, -1);
  114.         glTexCoord2f(1, 0);
  115.         glVertex2f(1, -1);
  116.         glTexCoord2f(1, 1);
  117.         glVertex2f(1, 1);
  118.         glTexCoord2f(0, 1);
  119.         glVertex2f(-1, 1);
  120.     glEnd();
  121. end;




Hoffe mir kann jemand (schnell) helfen!

thx & mfg

Speedmaster

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 19, 2005 18:20 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
So, ich bin mal wieder da. Das ganze hat sich so verschoben das es erst morgen weg kommt.

Erstmal ein Bild von meinem Entwicklungsstand:
Bild

4Tage ca. Entwicklungszeit, einen kompletten Modelloader im eigenen Format( Falls interesse besteht kann ich ihn am Montag hochladen ).

Jetzt meine Frage nochmal in Kurzform:
Wie Blende ich 3 Bilder die im Grafikspeicher sind( PixelBuffer ) übereinander, das der ganze Bildschirm ausgefüllt ist( Das ganze natürlich im 3D Modus wenns geht! ). Und erzeuge somit einen Glow Effekt( Shadowmapping soll heute auch noch irgendwie rein )!

thx

mfg

Speedmaster

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem - Blending
BeitragVerfasst: Sa Aug 20, 2005 09:29 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Hmm mir fällt jetzt nur auf, dass du hier

Code:
  1.  
  2.   glOrtho(-1*self.yScale,1*self.yScale,-1,1,-1,1);      // *self.yScale
  3.  


-1*self.yScale zu stehen hast, was du aber bei diesen:

Code:
  1.  
  2. procedure TGLMainClass.BlendBuffer(const Buffer: TPixelBuffer);
  3. begin
  4.   Buffer.Bind;
  5.   glEnable(GL_Blend);
  6.   glBlendFunc(GL_ONE,GL_ONE);
  7.     glBegin(GL_QUADS);
  8.         glTexCoord2f(0, 0);
  9.         glVertex2f(-1, -1);
  10.         glTexCoord2f(1, 0);
  11.         glVertex2f(1, -1);
  12.         glTexCoord2f(1, 1);
  13.         glVertex2f(1, 1);
  14.         glTexCoord2f(0, 1);
  15.         glVertex2f(-1, 1);
  16.     glEnd();
  17.   glDisable(GL_Blend);
  18. end;
  19.  
  20. procedure TGLMainClass.RenderBuffer(const Buffer: TPixelBuffer);
  21. begin
  22.   Buffer.Bind;
  23.     glBegin(GL_QUADS);
  24.         glTexCoord2f(0, 0);
  25.         glVertex2f(-1, -1);
  26.         glTexCoord2f(1, 0);
  27.         glVertex2f(1, -1);
  28.         glTexCoord2f(1, 1);
  29.         glVertex2f(1, 1);
  30.         glTexCoord2f(0, 1);
  31.         glVertex2f(-1, 1);
  32.     glEnd();
  33. end;


Nicht beachtest und somit nicht der ganze Bildschirm (oder zuviel) ausgefüllt wird, wenn yScale nicht =1 ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 20, 2005 13:08 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Das Problem ist gelößt, war ein kleiner Denkfehler, auf dem Screenshot sieht man allerdings das es funktioniert.

Hier mal das Program, Quelltext veröffentlich ich später!


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

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 20, 2005 13:08 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Speedmaster hat geschrieben:
Das Problem mit der Skalierung ist gelößt, war ein kleiner Denkfehler, auf dem Screenshot sieht man allerdings das es funktioniert. Allerdings heisst das nicht das das Blending funktioniert!

Hier mal das Program, Quelltext veröffentlich ich später!


Edit:

Doppelpost? Ich wüsste nicht woher!

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 25, 2005 16:23 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Es hat gelangt! Bewerbungsgespräch für die Games-Academy!!!

Ich werd das Prog bis dahin auf jedenfall noch erweitern( Letzten Tage Shader eingebaut, heute volle VBO unterstützung, morgen sehe ich weiter! )!

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


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


Wer ist online?

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