AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia OpenGL Tranzparenz in Textur Alpha-Blending
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL Tranzparenz in Textur Alpha-Blending

Ein Thema von luisk · begonnen am 20. Jul 2014 · letzter Beitrag vom 20. Jul 2014
Antwort Antwort
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#1

OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 18:02
Hallo,
hat jemand Erfahrung Transparenz und Alphablending ?
Ich will den weißen Hintergrund transparent Alpha= 0
alle anderen Farben sollen dargestellt werden Alpha=255
Übernahme der Pixel aus TBitmap über scanline
Delphi-Quellcode:
 ll_rgbQuad.rgbRed:= ll_ptr.rgbBlue;
         ll_rgbQuad.rgbGreen:= ll_ptr.rgbGreen;
         ll_rgbQuad.rgbBlue:= ll_ptr.rgbRed;
         ll_rgbQuad.Alpha:=255;

         if ( ll_rgbQuad.rgbRed + ll_rgbQuad.rgbGreen + ll_rgbQuad.rgbBlue =0 ) then begin
              ll_rgbQuad.rgbAlpha:=0;
         end;
Generierung der Textur
Delphi-Quellcode:
        glGenTextures ( 1, @l_textur_id );
        glBindTexture ( GL_TEXTURE_2D, cardinal(ar_Texture_ID[in_index]) );
        glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_linear );
        glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_linear );

        glTexImage2D ( GL_TEXTURE_2D, 0, 4, ll_b, ll_h, 0,
                        GL_RGBA, GL_UNSIGNED_BYTE, @texdata );
Ausgabe
Delphi-Quellcode:
  glEnable(GL_ALPHA_TEST);
   glAlphaFunc(GL_GREATER, 0);
   // Rendern
  glListBase(0);

   glpushmatrix();
   gltranslatef(-17,0,0);
       l_String:='aibg'+rightstr(inttostr(i),3);
         glCallLists (length(l_String), GL_UNSIGNED_BYTE, @l_String[1]);
      glpopmatrix();
Ausgabe funktioniert zwar, leider nicht transparent.

gibt es irgendwo ein Beispiel ?
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#2

AW: OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 18:36
Zitat:
gibt es irgendwo ein Beispiel ?
Hier
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#3

AW: OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 18:55
danke, das hatte ich schon gesehen.
Ich bräuchte es viel einfacher, da ich nur über den Alpha-Wert
Transparenz erreichen will:

entweder über
Delphi-Quellcode:
  glEnable(GL_ALPHA_TEST);
   glAlphaFunc(GL_Greater , 0);
oder
Delphi-Quellcode:
glEnable(GL_ALPHA_TEST);
   glAlphaFunc(GL_Less , 1);
sollte gehen, funzt aber nicht
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#4

AW: OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 19:05
wenn die Textfarbe Schwarz ist mit Alpha=0
und der Hintergrund weiss mit Alpha=255
geht es inzwischen.
Mit einer anderen SchriftFarben statt Schwarz
geht es leider nicht

Delphi-Quellcode:
   glEnable(GL_ALPHA_TEST);
   glAlphaFunc(GL_Greater, 0.1);
Die Textfarbe sollte doch mit dem Alpha-Wert gar nichts zu tun haben.

Geändert von luisk (20. Jul 2014 um 19:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 19:17
Delphi-Quellcode:
if ( ll_rgbQuad.rgbRed + ll_rgbQuad.rgbGreen + ll_rgbQuad.rgbBlue =0 ) then begin
              ll_rgbQuad.rgbAlpha:=0; //<-
         end;
Hast du mal geguckt, ob diese Zeile überhaupt ausgeführt wird?
Könnte nämlich auch an Gleitkommazahlen-Ungenauigkeit hängen. Beziehungsweise: Ist dein Weiß auch wirklich #000?
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#6

AW: OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 19:50
wird ausgeführt: Breakpoint spricht an.
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#7

AW: OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 20:52
so geht's:
Delphi-Quellcode:
   
if ( ll_rgbQuad.rgbRed + ll_rgbQuad.rgbGreen + ll_rgbQuad.rgbBlue < 3*255 ) then begin
    ll_rgbQuad.rgbReserved:=255;
end;

Geändert von luisk (20. Jul 2014 um 21:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#8

AW: OpenGL Tranzparenz in Textur Alpha-Blending

  Alt 20. Jul 2014, 20:54
next Problem:

kann man die Farben in einer Textur tauschen ?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz