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

Aktuelle Zeit: Fr Jul 04, 2025 10:05

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Targa selbst erstellen
BeitragVerfasst: Mo Feb 09, 2009 14:25 
Offline
DGL Member

Registriert: Sa Okt 18, 2008 11:59
Beiträge: 180
Guten Tag,

ich suche schon eine halbe Ewigkeit auf google nach den Aufbau einer TarGA-Datei, finde aber nichts und das was mir Wikipedia liefert versteh ich nur zum Teil.
Ich möchte ein Programm erstellen, mitdem ich für für OpenGL geeignete TGA-Bilder zeichnen und speichern kann (das ganze möglichst ohne 1000 zusätzliche vorgefertigte Bibliotheken), scheitere aber bereits bei der Suche nach einem gut erklärten und ausführlichen Aufbau.
(Mir ist bewusst, das es Programme zum erstellen von TGAs gibt (z.B.: GIMP).)

-->Problem 1: Wo kann ich nachlesen wie eine TGA-Datei aufgebaut ist (Hinweis: die englische Sprache ist mir nicht immer wohl gesonnen ;) )
-->Problem 2: Wie kann ich die TGA-Datei abspeichern (ohne vorgefertigte Bibliotheken, ich will selbst "irgendwie" die Bits auf die Festplatte verpflanzen ;) )?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 09, 2009 14:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also im Groben bestehen TGAs aus einem Header und den Bilddaten. Die Spezifikation kannst du bei Wotsit.org finden. Allerdings sind die nicht gerade einfach zu verstehen.

Alternativ kann ich dir den Code aus meiner glBitmap anbieten. Hätte ich jetzt verlinkt aber ist derzeit "offline", da ich meine Webseite komplett umstrukturiere. Die Download sind aber weiterhin verfügbar.

Zum Speichern brauchst du einen Header und ein paar Konstanten
Code:
  1. type
  2.   TTGAHeader = packed record
  3.     ImageID: Byte;
  4.     ColorMapType: Byte;
  5.     ImageType: Byte;
  6.     ColorMapSpec: Array[0..4] of Byte;
  7.     OrigX: Word;
  8.     OrigY: Word;
  9.     Width: Word;
  10.     Height: Word;
  11.     Bpp: Byte;
  12.     ImageDes: Byte;
  13.   end;
  14.  
  15. const
  16.   TGA_UNCOMPRESSED_RGB = 2;
  17.   TGA_UNCOMPRESSED_GRAY = 3;
  18.   TGA_COMPRESSED_RGB = 10;
  19.   TGA_COMPRESSED_GRAY = 11;


Für BGR(A)8 muss der Header wie folgt gefüllt werden.

Code:
  1.   FillChar(Header, SizeOf(Header), 0);
  2.  
  3.   Header.ImageType := TGA_UNCOMPRESSED_RGB;
  4.   Header.Bpp := 24;
  5.   Header.Width := Width;
  6.   Header.Height := Height;
  7.   Header.ImageDes := $20;
  8.  
  9.   if HasAlpha then
  10.     Header.ImageDes := Header.ImageDes or $08;
  11.  
  12.   Stream.Write(Header, SizeOf(Header));
  13.  
  14.   Stream.Write(ImageData, Size);


Das war es eigentlich schon. Damit könntest du dann BGR(A)8 speichern. Beim Lesen muss man allerdings ein bisschen mehr machen. Denn die Bilddaten könnten komprimiert sein bzw könnte sich der Aufbau leicht unterscheiden. Aber dazu solltest/kannst du dir die Unit anschauen. Methode SaveTGA und LoadTGA. Hoffe das ist nicht zu konfus.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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 | 15 Queries | GZIP : On ]