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

Aktuelle Zeit: Fr Jul 18, 2025 08:18

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



Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 11:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Also ich habe damit mal noch ein bissel rumgetestet, Es passiert woh, dass die festen Objkete nicht immer durchscheinen, manchmal garnicht,
user69 hast du noch ein bisschen rumgetestet?,
Außerdem: wenn ich NICHT den Materialmodus benutze, sondern den einfachen,dann isgarnix mehr mit Transparenz? PAssiert das bei dir auch oder is dasjetzt nen Einstellungsgfehler bei mir?

edit: wenn ich z.B. beim Rendenr der transparentehn Objekte das erste weglasse, sieht das Transparente Zeug gut aus, auf den ersten Blick fehlerfrei. Nur die festen Objekte stimmen dann nicht mehr. Ich würd bald denken irgendwo ist da ein Übersetzungsfehler und da fehlt noch was oder wurde falsch beschrieben

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 13:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
also da scheint ein Fehler in der dt. Version zu sein

Code:
  1.  
  2. var i     : integer;
  3. begin
  4.   backGround.alpha:= 0;
  5.   setBackground(backGround);
  6.  
  7.   //transparente Objkete zeichnen
  8.   glEnable(GL_BLEND);
  9.   i:= 0;
  10.   while (i <> m_dataBase.count) do
  11.     begin
  12.        if (TGeoObject(m_dataBase[i]).transparent = false) then
  13.          begin
  14.             inc(i);
  15.             continue;
  16.          end;
  17.        //
  18.        glDepthFunc(GL_GREATER);
  19.        glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA);
  20.        glDepthMask(GL_FALSE);
  21.  
  22.        //Zeichne Objekt i
  23.  
  24.        //
  25.        glDepthFunc(GL_LEQUAL);
  26.        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
  27.        glDepthMask(GL_TRUE);
  28.  
  29.         //Zeichne Objekt i
  30.  
  31.        inc(i);
  32.     end;


Damit werden die transparenten Objekte ziemich gut dargestellt. Auf den ersten BLick bei meinem Bsp würde ich sagen korrekt, schauts euch selber mal an.

Mein Problem jetzt: das Darstellen der soliden Objekte danach, wenn sie sich hinter einem transparenten Objekt befinden. Mit der zweiten Blendformel müssen die ja im ersten Durchlauf gerendert werden. Werden die auch, ABER der Destination-Alphawert scheint dort 1 zu sein, weil immer die Farbe vom Zielpixel0 ist und die des Dest-Pixel voll, also sieht es so aus, als würde nix gezeichnezt werden.
Das kann ich mir nicht so recht erklären hat da wer ne Idee zu?

2. Teil


Code:
  1.  
  2.   //solide Objekte zeichnen
  3.   i:= 0;
  4.   glDepthFunc(GL_GREATER);
  5.   glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA);
  6.   //glBlendFunc(GL_ZERO,GL_ONE);   //in diesem Bereich hauts ihn raus,
  7.   //die Func drüber verhält sich wie die hier auskommentierter VAriante,
  8.   // WARUM???
  9.   glDepthMask(GL_FALSE);
  10.   while (i <> m_dataBase.count) do
  11.     begin
  12.        if (TGeoObject(m_dataBase[i]).transparent = true) then
  13.          begin
  14.             inc(i);
  15.             continue;
  16.          end;
  17.        //
  18.        //zeichne Objket i
  19.  
  20.        inc(i);
  21.     end;
  22.  
  23.   //Alles ab hier arbeitet korrekt: Alle soliden Objekte
  24.   // welche weiter vorne als alle bisherigen sind
  25.   // können einfach ohne blenden gezeichnet werden
  26.   i:= 0;
  27.   glDisable(GL_BLEND);
  28.   glDepthFunc(GL_LEQUAL);
  29.   glDepthMask(GL_TRUE);
  30.   while (i <> m_dataBase.count) do
  31.     begin
  32.        if (TGeoObject(m_dataBase[i]).transparent = true) then
  33.          begin
  34.             inc(i);
  35.             continue;
  36.          end;
  37.        //
  38.  
  39.        //Objekt i Zeichnen
  40.  
  41.        inc(i);
  42.     end;
  43. end;

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » OpenGL


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