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

Aktuelle Zeit: Mo Jul 14, 2025 19:36

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: png laden mit GlBitmap_load
BeitragVerfasst: Sa Feb 23, 2008 22:16 
Offline
DGL Member

Registriert: Di Jan 29, 2008 16:06
Beiträge: 5
Hi Leute ich bin noch nicht lange hier angmeldet und hab mich bis her auch noch nicht getraut ne Frage zu stellen. Mit dem Risiko jetzt eine Frage zu stellen die an einer anderen Stelle schon beantwortet wurde. Ich benutze den Textur loader GlBitmap_loader und im gegensatz zu SDL funktioniert das bei mir eigentlich ganz toll. (ich hätte auch nichts dagegen SDL zu benutzen aber ich bin damit einfach nicht zu rande gekommen und ganz ohne Fortschritte macht es dann kein Spaß mehr) Ok. Mein Problem ist nun Texturen mit Alpha kanal benutzen zu wollen. Man kann ja nun entweder gleich eine .png benutzen oder z.B. ein .bmp und dann den Alphakanal aus einem extra Bild laden. Also. Wenn mir jemand erklärt wie man eine PNGImage - Bibiothek benutzt dann wär ich dolle dankbar. Weil mit .png arbeite ich auch gerne. Und diese Bibliothek brauch ich ja um mit dem Loader png's laden zu können. Also was muss ich mir unter dieser Bibliothek, welche PNGImage heißen soll vorstellen und wie benutze ich sie richtig oder überhaupt?
Danke schon mal für die Antwort. =)

_________________
"Man könnte auch aus den Fehlern anderer lernen aber es scheint man lernt lieber aus seinen eigenen"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 22:29 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
also, ich will dir ja ni reinquatschen, aber wenn du 'nen alphakanal haben willst, sollteste lieber tga verwenden. bei png hast du nämlich einen qualitätsverlust durch das speichern und das kann man bei texturen eigentlich gar nicht gebrauchen.

falls dein loader kein tga laden kann, kannst du dir ja mal ne spezifikation raussuchen. ich hatte vor jahren mal bild-loader für turbo pascal implementiert. soweit ich mich erinnern kann, konnte man die bmp-lade-routine nahezu übernehmen. oder du nimmst gleich 'n loader , der tga kann.

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 22:38 
Offline
DGL Member

Registriert: Di Jan 29, 2008 16:06
Beiträge: 5
Danke für den Tipp. =)
Der loader kann auch tga laden ... das war mir soweit egal und jetzt wenn du das sagst nehm ich auch gern tga aber wenn ich mein Bild als tga speicher und dann lade. Hab ich ein weißes Viereck wenn ich die Textur verwende. =(

_________________
"Man könnte auch aus den Fehlern anderer lernen aber es scheint man lernt lieber aus seinen eigenen"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 22:43 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
dann kann es sein, dass dein loader keine komprimierten tgas liest. musste ma versuchen ohne kompression zu speichern. manche loader verkraften auch nur 32bit bilder. musste auch mal versuchen anzupassen.

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 22:44 
Offline
DGL Member

Registriert: Di Jan 29, 2008 16:06
Beiträge: 5
Ich hab jetzt eine neue Textur angelegt. Bist du dir sicher (sorry dass ich frag ... ich weiß wenn man keine Ahung hat soll man manchmal auch einfach mal die Fresse halten =)) aber da wo das bild Tranzparent ist da bekomm ich beim rendern weiße Stellen.

_________________
"Man könnte auch aus den Fehlern anderer lernen aber es scheint man lernt lieber aus seinen eigenen"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 22:46 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
hast du alpha-test und blending an?

mit welchem programm erstellst du denn die texturen?

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 22:53 
Offline
DGL Member

Registriert: Di Jan 29, 2008 16:06
Beiträge: 5
Wenn ich die Form erstelle aktiviere ich Blend und Alpha_Test ja

Code:
  1.  
  2. glEnable(Gl_ALPHA_TEST);
  3. glEnable(Gl_BLEND);
  4.  


Ich erstell die TExturen mit Photoshop. Und das Tga einen Alphakanal unterstüzt zweifle ich nicht mehr an. ^^

_________________
"Man könnte auch aus den Fehlern anderer lernen aber es scheint man lernt lieber aus seinen eigenen"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 22:54 
Offline
DGL Member

Registriert: Do Jun 28, 2007 17:58
Beiträge: 193
Programmiersprache: Pascal, C
Hallo,

PNG ist kein verlustbehaftetes Format. Daher ist es auch für 3D-Anwendungen super zu gebrauchen, und benötigt gleichzeitig noch weniger Speicherplatz als Formate wie zum Beispiel TGA.

Um Texturen mittels PNGImage zu laden, kannst du über die Pointer "Scanline" und "AlphaScanline" (die du vorher eventuell in einen gemeinsamen Speicherbereich kopieren musst) die Bilddaten direkt mittels glTexImage2D in eine Textur laden. Das könnte ungefähr so aussehen:

Code:
  1.  
  2.  
  3.   TRGBARec = packed record
  4.     r:byte;//<Red Value
  5.     g:byte;//<Green Value
  6.     b:byte;//<Blue Value
  7.     a:byte;//<Alpha Value
  8.   end;
  9.   TRGBARec = TAndorraColor;
  10.   PRGBARec = ^TRGBARec;
  11.  
  12.   TRGBRec = packed record
  13.     r:byte;//<Red Value
  14.     g:byte;//Green Value
  15.     b:byte;//Blue Value
  16.   end;
  17.   PRGBRec = ^TRGBRec;
  18.  
  19. procedure ImageFromPng(APNG:TPngObject);
  20. var
  21.   mem:Pointer;
  22.   p1:PRGBARec;
  23.   p2:PByte;
  24.   p3:PRGBRec;
  25.   x, y:integer;
  26. begin
  27.   GetMem(mem, APNG.Width * APNG.Height * 4);
  28.   p1 := mem;
  29.   for y := 0 to APNG.Height - 1 do
  30.   begin
  31.      p3 := APNG.Scanline[y];
  32.      p2 := APNG.AlphaScanline[y];
  33.      for x := 0 to APNG.Width - 1 do
  34.      begin
  35.        p1^.a := p2^;
  36.        p1^.r := p3^.r;
  37.        p1^.g := p3^.g;
  38.        p1^.b := p3^.b;
  39.        inc(p1); inc(p2); inc(p3);
  40.      end;
  41.   end;
  42.  
  43.   glTexImage2D(GL_TEXTURE_2D, 0, 4, APNG.Width, APNG.Height, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, mem);
  44. end;
  45.  

_________________
http://audorra.sourceforge.net//http://andorra.sourceforge.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 23:09 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
igel457 hat geschrieben:
Hallo,

PNG ist kein verlustbehaftetes Format. Daher ist es auch für 3D-Anwendungen super zu gebrauchen, und benötigt gleichzeitig noch weniger Speicherplatz als Formate wie zum Beispiel TGA.

tatsächlich. ich hab das mit jpg durcheinander gehauen, sorry :oops: . naja, ich bleibe trotzdem lieber bei meinem tga (ich verwende grundsätzlich nur dateiformate, die ich ohne weiteres verstehe und selber laden kann^^).

aber das weiß an den tranzparenten stellen ist mir trotzdem unerklärlich. was hasten für alpha-func gesetzt?

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 23:13 
Offline
DGL Member

Registriert: Di Jan 29, 2008 16:06
Beiträge: 5
also das png kein verlustbehaftetes Format ist hab ich mir fast schon gedacht. ^^ soweit kein Problem. An Igel 457. Jetzt würde ich gerne verstehen was du da geschrieben hast. Ich kenn mich mit Pointern und eigenen Klassen alles was so in die richtung geht noch nicht besonders aus. Ich programmier noch nicht sooo lang. Ich bin kein totaler anfänger aber mit sowas hab ich mich noch nicht beschäftigt.
An McWurscht. Ich hab für Alpha_func nichts gesetzt. Ich dachte wenn ich es auf seinen Grundeinstellungen lasse ist das erstmal ok. Und bei Tga gibt es doch nur Tranzparent, oder nicht Tranzparent oder? Also halbdurchsichtig und Tranzparenzstufen kann man damit nicht benutzen oder geht das mit tga auch?

_________________
"Man könnte auch aus den Fehlern anderer lernen aber es scheint man lernt lieber aus seinen eigenen"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 23:16 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
Blackmind hat geschrieben:
Und bei Tga gibt es doch nur Tranzparent, oder nicht Tranzparent oder? Also halbdurchsichtig und Tranzparenzstufen kann man damit nicht benutzen oder geht das mit tga auch?
bei tga hat der alpha-kanal genau dieselben werte-möglichkeiten, wie rot, grün und blau auch. du kannst also auch stufenweise transparenz in einer textur einbauen.

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 24, 2008 01:41 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Du benutzt die glBitmap.pas? Dann update mal die Version, denn diese sollte ohne Probleme Alphakanäle laden sollen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


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


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 15 Queries | GZIP : On ]