Zurück zum Blog
Formate

KTX-Format: Die vollständige Anleitung zum Khronos-Texturcontainer

20 Min. gelesen

KTX (Khronos Texture) ist der offizielle offene Standard für Texturcontainerformate, der von der Khronos Group entwickelt und gepflegt wird. Als lizenzfreies, herstellerneutrales Format, das speziell für moderne Grafik-APIs wie OpenGL, OpenGL ES und Vulkan entwickelt wurde, bietet KTX eine standardisierte Möglichkeit, komprimierte Texturen über verschiedene Plattformen und Anwendungen hinweg zu speichern und zu transportieren. Mit zwei Hauptversionen – KTX1 für ältere OpenGL-Anwendungen und KTX2 für moderne Vulkan-basierte Workflows – dient KTX als Rückgrat für Textur-Asset-Pipelines in der professionellen Grafikentwicklung.

Was ist das KTX-Format?

KTX ist ein Containerformat, das darauf ausgelegt ist, Texturdaten so zu speichern, dass sie direkt von der Grafikhardware genutzt werden können. Im Gegensatz zu Bildformaten wie PNG oder JPEG ist KTX speziell für das Laden von GPU-Texturen optimiert und unterstützt verschiedene Komprimierungsformate, darunter ETC, ASTC, BCn und PVRTC. Das Format enthält wichtige Metadaten für die korrekte Texturinterpretation und eignet sich daher ideal für plattformübergreifende Grafikanwendungen.

Das Format wurde ursprünglich entwickelt, um die Fragmentierung in Texturkomprimierungsformaten über verschiedene Plattformen und APIs hinweg zu beheben. Vor KTX mussten Entwickler mit mehreren proprietären Formaten wie DDS für DirectX, PVR für PowerVR und verschiedenen plattformspezifischen Formaten umgehen. KTX bietet eine einheitliche Lösung, die über OpenGL, OpenGL ES und Vulkan hinweg funktioniert und direkte GPU-Ladefunktionen bietet.

KTX hat sich seit seiner Einführung erheblich weiterentwickelt, wobei KTX2 einen großen Fortschritt in Bezug auf Funktionen und Fähigkeiten darstellt. Die neuere Version bietet Unterstützung für Superkomprimierungsschemata wie Basis Universal, verbesserte Metadatenverarbeitung durch den Data Format Descriptor (DFD) und bessere Unterstützung für moderne Texturfunktionen wie Texturarrays, 3D-Texturen und Cubemaps.

Hauptmerkmale des KTX-Formats

Khronos-Standard

Offizieller Khronos Group-Standard, der eine breite Branchenakzeptanz und plattformübergreifende Kompatibilität gewährleistet

Formatunabhängig

Unterstützt praktisch jedes Texturkomprimierungsformat, einschließlich ETC, ASTC, BCn, PVRTC und unkomprimierte Formate

Umfangreiche Metadaten

Umfassende Metadatenunterstützung, einschließlich Ausrichtung, Farbraum, Komprimierungseinstellungen und benutzerdefinierten Schlüssel-Wert-Paaren

Vollständige Mipmap-Unterstützung

Native Unterstützung für Mipmap-Ketten, Textur-Arrays, 3D-Texturen und Cubemaps

Erweiterte Texturtypen

Unterstützung für Texturarrays, 3D-Texturen, Cubemaps und andere erweiterte Texturtypen

Plattformübergreifend

Funktioniert nahtlos auf Windows-, macOS-, Linux-, iOS-, Android- und Webplattformen

KTX-Versionsvergleich

Das Verständnis der Unterschiede zwischen KTX1 und KTX2 ist entscheidend für die Auswahl des richtigen Formats für Ihre Anwendung:

KTX1 (Legacy)

Das ursprüngliche KTX-Format, das für OpenGL- und OpenGL ES-Anwendungen entwickelt wurde. Einfache Struktur basierend auf OpenGL-Texturparametern.

KTX1 verwendet eine einfache Header-Struktur, gefolgt von Schlüsselwertdaten und dann Bilddaten. Es ist mit älteren OpenGL-Versionen kompatibel und bietet grundlegende Texturspeicherfunktionen. Obwohl es immer noch weitgehend unterstützt wird, fehlen ihm die erweiterten Funktionen von KTX2.

KTX2 (Modern)

Das moderne KTX-Format, das für Vulkan und Grafikanwendungen der nächsten Generation entwickelt wurde. Erweiterte Funktionen und Superkomprimierungsunterstützung.

KTX2 führt bedeutende Verbesserungen ein, darunter Basis Universal Supercompression, Data Format Descriptors (DFD), Level Index für effizienten Datenzugriff und bessere Unterstützung für Textur-Arrays und 3D-Texturen. Es ist die empfohlene Wahl für neue Projekte.

Unterstützte Komprimierungsformate

KTX dient als Container für verschiedene Komprimierungsformate und ist dadurch unglaublich vielseitig:

ETC (Ericsson-Texturkomprimierung)

Standardkomprimierung für mobile Geräte, mit ETC1 für RGB und ETC2 für RGBA-Komprimierung

ASTC (Adaptive Scalable Texture Compression)

Moderne, hochwertige Komprimierung, die verschiedene Blockgrößen von 4x4 bis 12x12 Pixel unterstützt

BCn (Blockkomprimierung)

DirectX-Komprimierungsformate einschließlich BC1-BC7 für Desktop-Gaming und Windows-Anwendungen

PVRTC (PowerVR-Texturkomprimierung)

PowerVR-spezifische Komprimierung für iOS und eingebettete Systeme mit 2bpp- und 4bpp-Varianten

Unkomprimierte Formate

Standardmäßige unkomprimierte Formate wie RGB8, RGBA8 und verschiedene HDR-Formate

KTX-Dateistruktur

KTX-Dateien folgen einem strukturierten Format mit drei Hauptkomponenten:

Dateikopf

Enthält Formatidentifikation, Versionsinformationen und grundlegende Texturmetadaten wie Abmessungen und Format

Schlüsselwertdaten

Metadatenabschnitt mit benutzerdefinierten Schlüssel-Wert-Paaren für zusätzliche Texturinformationen

Bilddaten

Tatsächliche komprimierte oder unkomprimierte Texturdaten, organisiert nach Mipmap-Ebenen und Array-Ebenen

KTX1-Header-Struktur

KTX1 verwendet einen 64-Byte-Header basierend auf OpenGL-Texturparametern:

Bezeichner (12 Byte)

„«KTX 11»\r\n\x1A\n“ – Dateiformat-ID zur Validierung

Endianness (4 Bytes)

Gibt die Bytereihenfolge an: 0x04030201 für Little-Endian, 0x01020304 für Big-Endian

glType (4 Bytes)

OpenGL-Datentyp (z. B. GL_UNSIGNED_BYTE) – 0 für komprimierte Formate

glFormat (4 Bytes)

OpenGL-Format (z. B. GL_RGB) – 0 für komprimierte Formate

glInternalFormat (4 Bytes)

Internes OpenGL-Format (z. B. GL_COMPRESSED_RGB8_ETC2)

glBaseInternalFormat (4 Bytes)

Basis-OpenGL-Format für Kompatibilität mit älteren OpenGL-Versionen

pixelWidth (4 Bytes)

Texturbreite in Pixel

pixelHeight (4 Bytes)

Texturhöhe in Pixel (0 für 1D-Texturen)

pixelDepth (4 Bytes)

Texturtiefe in Pixel (0 für 2D-Texturen)

numberOfArrayElements (4 Bytes)

Anzahl der Array-Elemente (0 für Nicht-Array-Texturen)

numberOfFaces (4 Bytes)

Anzahl der Flächen (6 für Cubemaps, 1 für reguläre Texturen)

numberOfMipmapLevels (4 Bytes)

Anzahl der Mipmap-Ebenen (1 für keine Mipmaps)

bytesOfKeyValueData (4 Bytes)

Größe des Schlüsselwert-Datenabschnitts in Bytes

Verbesserungen der KTX2-Struktur

KTX2 führt mehrere neue Strukturkomponenten für erweiterte Funktionalität ein:

Erweiterter Header

Verbesserte Header-Struktur mit Versionsinformationen, Formatkennungen und Datengrößenindikatoren

Level-Index

Effizientes Indexierungssystem für schnellen Zugriff auf bestimmte Mipmap-Ebenen und Texturdaten

Datenformatdeskriptor (DFD)

Umfassendes Formatbeschreibungssystem, das OpenGL-Formatkonstanten ersetzt

Schlüsselwertdaten

Erweitertes Metadatensystem mit Unterstützung für Internationalisierung und komplexe Datentypen

Globale Daten zur Superkomprimierung

Globale Daten für Superkomprimierungsschemata wie Basis Universal

Metadaten und Schlüsselwertdaten

KTX-Dateien können über den Schlüsselwertdatenabschnitt umfangreiche Metadaten enthalten:

Texturausrichtung

Gibt die Texturausrichtung (oben links, unten rechts usw.) für eine ordnungsgemäße Darstellung an

Formatinformationen

Details zum Komprimierungsformat, Qualitätseinstellungen und Kodierungsparametern

Informationen zum Autor

Informationen über das Tool oder die Anwendung, die die KTX-Datei erstellt hat

Komprimierungseinstellungen

Spezifische verwendete Komprimierungsparameter und Qualitätseinstellungen

Farbraum

Informationen zum Farbraum, einschließlich sRGB-, Linear- und HDR-Farbprofilen

KTX-Entwicklungsworkflow

Das Erstellen und Verwalten von KTX-Texturen umfasst die folgenden Schlüsselschritte:

1

Vorbereitung des Quell-Assets

Bereiten Sie hochwertige Quellbilder mit geeigneten Abmessungen und Farbprofilen vor

2

Formatauswahl

Wählen Sie das geeignete Komprimierungsformat basierend auf den Zielplattformen und Qualitätsanforderungen

3

Texturkomprimierung

Verwenden Sie Tools wie toktx oder Asset Pipelines, um Quellbilder in das KTX-Format zu komprimieren

4

Metadaten-Hinzufügung

Fügen Sie geeignete Metadaten hinzu, einschließlich Ausrichtung, Farbraum und benutzerdefinierten Eigenschaften

5

Dateivalidierung

Validieren Sie KTX-Dateien auf Kompatibilität und Korrektheit mit Zielplattformen

6

Anwendungsintegration

Integrieren Sie das Laden und Bearbeiten von KTX in Ihre Grafikanwendung

Hauptvorteile des KTX-Formats

Industriestandard

Der Standard der Khronos Group gewährleistet langfristige Unterstützung und breite Branchenakzeptanz

Formatflexibilität

Unterstützt nahezu jedes Komprimierungsformat und ist somit zukunftssicher und vielseitig

Umfangreiche Metadaten

Umfassendes Metadatensystem für die richtige Texturinterpretation und -verwaltung

Erweiterte Funktionen

Unterstützung für moderne Texturfunktionen wie Arrays, 3D-Texturen und Superkomprimierung

Plattformübergreifend

Funktioniert auf allen wichtigen Plattformen ohne Modifikation oder Konvertierung

Zukunftssicher

KTX2- und Superkomprimierungsunterstützung gewährleisten die Kompatibilität mit zukünftigen Grafiktechnologien

Häufige Anwendungsfälle

Vulkan-Anwendungen

Primärformat für moderne Vulkan-Anwendungen mit direkten GPU-Ladefunktionen

OpenGL-Anwendungen

Plattformübergreifendes Texturformat für OpenGL- und OpenGL ES-Anwendungen

WebGL-Anwendungen

Webbasierte Grafikanwendungen über KTX-Texturlader und WebGL

Spieleentwicklung

Professionelle Spieleentwicklung mit plattformübergreifenden Textur-Asset-Pipelines

VR/AR-Anwendungen

Virtual- und Augmented-Reality-Anwendungen erfordern ein effizientes Laden von Texturen

Mobile Entwicklung

iOS- und Android-Anwendungen mit optimierten Texturkomprimierungsformaten

KTX im Vergleich zu anderen Formaten

Verstehen, wie KTX im Vergleich zu anderen Texturformaten abschneidet:

KTX vs. DDS

KTX ist plattformübergreifend und API-unabhängig, während DDS DirectX-spezifisch und Windows-fokussiert ist

KTX vs. PVR

KTX unterstützt mehrere Komprimierungsformate, während PVR für PowerVR-GPUs und iOS optimiert ist

KTX1 gegen KTX2

KTX2 bietet gegenüber dem Vorgängermodell KTX1 Superkomprimierung, bessere Metadaten und moderne Funktionen

KTX vs. Basis Universal

KTX ist ein Containerformat, während Basis Universal ein Komprimierungsformat ist, das in KTX2 gespeichert werden kann

Entwicklungstools und Ressourcen

toktx-Tool

Offizielles Befehlszeilentool zum Erstellen und Konvertieren von KTX-Dateien aus verschiedenen Bildformaten

KTX-Tools-Paket

Komplette Suite von Tools, einschließlich toktx, ktxinfo, ktxcheck und anderen Dienstprogrammen

Vulkan SDK

Das offizielle Vulkan SDK umfasst KTX-Unterstützung und Ladedienstprogramme

OpenGL-Bibliotheken

Verschiedene OpenGL-Bibliotheken und Frameworks mit integrierter KTX-Unterstützung

Unity KTX-Unterstützung

Die Unity-Engine unterstützt das Laden von KTX-Texturen über Plugins und Asset-Pipelines

Unreal Engine KTX

Unreal Engine bietet KTX-Texturunterstützung durch Texturkomprimierungseinstellungen

Best Practices für die KTX-Entwicklung

Verwenden Sie KTX2 für neue Projekte, um die Vorteile moderner Funktionen und Superkomprimierungsfunktionen zu nutzen

Wählen Sie das geeignete Komprimierungsformat basierend auf den Zielplattformen: ETC für Mobilgeräte, BCn für Desktops

Integrieren Sie umfassende Metadaten, um eine korrekte Texturinterpretation auf allen Plattformen sicherzustellen

Validieren Sie KTX-Dateien auf der Zielhardware frühzeitig in der Entwicklung, um Kompatibilitätsprobleme zu vermeiden

Verwenden Sie geeignete Mipmap-Einstellungen, um die Rendering-Leistung bei unterschiedlichen Betrachtungsabständen zu optimieren

Erwägen Sie die Verwendung der Superkomprimierung Basis Universal für eine plattformübergreifende Bereitstellung mit optimalen Dateigrößen

Testen Sie die Texturladeleistung mit tatsächlichen Zielhardware- und Netzwerkbedingungen

Implementieren Sie geeignete Fehlerbehandlungs- und Fallback-Mechanismen für nicht unterstützte Formate oder Funktionen

Migrations- und Upgradepfade

Richtlinien für die Migration zu KTX oder das Upgrade zwischen Versionen:

Migration von KTX1 zu KTX2

Verwenden Sie toktx mit dem Flag --ktx2, um ältere KTX1-Dateien in das moderne KTX2-Format zu konvertieren

Konvertierung von DDS nach KTX

Verwenden Sie toktx oder Texturkonvertierungstools, um DirectX-Texturen in das plattformübergreifende KTX-Format zu migrieren

Konvertierung von PVR nach KTX

Konvertieren Sie iOS-spezifische PVR-Texturen in KTX für plattformübergreifende Kompatibilität

Hinzufügen der universellen Basiskomprimierung

Verwenden Sie toktx mit Basis Universal-Optionen, um Superkomprimierung zu KTX2-Dateien hinzuzufügen

Warum KTX2 wählen?

KTX2 bietet gegenüber KTX1 und anderen Formaten erhebliche Vorteile:

Basis Universal Support

Native Unterstützung für Basis Universal Supercompression, die eine universelle Texturbereitstellung ermöglicht

Verbesserte Komprimierung

Verbesserte Komprimierungsraten und -qualität durch moderne Komprimierungsschemata

Superkomprimierungsschemata

Unterstützung für verschiedene Superkomprimierungsformate über Basis Universal hinaus

Datenformatdeskriptoren

Umfassendes Formatbeschreibungssystem, das alte OpenGL-Konstanten ersetzt

Zukunftssicheres Design

Entwickelt für moderne und zukünftige Grafik-APIs und Komprimierungstechnologien

Abschluss

Das KTX-Format stellt den Industriestandard für die plattformübergreifende Texturverwaltung dar und bietet Entwicklern eine robuste, flexible und zukunftssichere Lösung für Textur-Asset-Pipelines. Ganz gleich, ob Sie das ältere KTX1 für OpenGL-Anwendungen oder das moderne KTX2 für die Vulkan-basierte Entwicklung verwenden, KTX bietet die Tools und Funktionen, die für die professionelle Grafikentwicklung erforderlich sind.

Da sich die Grafikbranche weiterhin in Richtung plattformübergreifender Entwicklung und fortschrittlicherer Komprimierungstechnologien weiterentwickelt, positioniert sich KTX2 mit seiner Unterstützung für Basis Universal-Superkomprimierung und modernen Funktionen als erste Wahl für das Texturmanagement. Das Verständnis des KTX-Formats und seiner Funktionen ist für jeden Entwickler, der mit modernen Grafikanwendungen arbeitet, von entscheidender Bedeutung.

Weiterführende Literatur und Ressourcen

Erweitern Sie Ihr Wissen mit diesen maßgeblichen Ressourcen:

Probieren Sie unsere Tools aus