<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Billedfilformater on File Format Blog</title>
    <link>https://blog.fileformat.com/da/tag/billedfilformater/</link>
    <description>Recent content in Billedfilformater on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>da</language>
    <lastBuildDate>Mon, 21 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/da/tag/billedfilformater/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Billedfilformater for spiludviklere DDS, TGA, PNG og KTX</title>
      <link>https://blog.fileformat.com/da/image/image-file-formats-for-gamevdevelopers-dds-tga-png-and-ktx/</link>
      <pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/da/image/image-file-formats-for-gamevdevelopers-dds-tga-png-and-ktx/</guid>
      <description>Opdag forskellene mellem DDS, TGA, PNG og KTX. Lær hvordan GPU-komprimering, VRAM-fodaftryk og pipeline-arbejdsgange påvirker spillets ydeevne.</description>
      <content:encoded><![CDATA[<p><strong>Sidst opdateret</strong>: 21 sept., 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/image-file-formats-for-gamevdevelopers-dds-tga-png-and-ktx.png#center"
         alt="Image File Formats for Game Developers: DDS, TGA, PNG, and KTX Compared"/> 
</figure>

<h2 id="billedfilformater-for-spiludviklere-dds-tga-png-og-ktx">Billedfilformater for spiludviklere: DDS, TGA, PNG og KTX</h2>
<p>I spiludvikling udgør teksturer den enkelt største del af både runtime-hukommelsesforbrug og installationsbygningens størrelse. Uanset om du bygger et indie‑stiliseret platformspil eller presser fotorealisme i et AAA open‑world RPG, bestemmer hvordan du gemmer, behandler og indlæser teksturdata direkte dine billedhastigheder, indlæsningstider og hardwarekompatibilitet.</p>
<p>En almindelig nybegynderfejl er at behandle spilteksturer som webgrafik – at antage at en let fil på disken svarer til let ydeevne i din spilmotor. I GPU‑verdenen er runtime‑realiteterne helt anderledes.</p>
<p>I denne dybdegående gennemgang nedbryder vi de fire mest kritiske tekstur‑ og billedfilformater i moderne spiludvikling: <strong>DDS, TGA, PNG og KTX</strong>. Vi vil undersøge, hvordan de fungerer, hvor de passer ind i asset‑pipelinen, og hvornår man skal bruge hver enkelt.</p>
<h2 id="den-gyldne-regel-disklager-vs-video-ram-vram">Den gyldne regel: Disklager vs. Video RAM (VRAM)</h2>
<p>Før man dissekerer individuelle formater, skal udviklere forstå den grundlæggende forskel mellem <strong>disklagringskomprimering</strong> og <strong>GPU‑hardwareblokkomprimering</strong>.</p>
<h3 id="1-diskkomprimering-png12-jpeg9-webw10">1. Diskkomprimering (<a href="https://docs.fileformat.com/image/png/">PNG</a>, <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a>, <a href="https://docs.fileformat.com/image/webp/">WebW</a>)</h3>
<p>Formater som PNG bruger tabsfri entropikodning (DEFLATE). Mens PNG sparer enorme mængder plads på en SSD eller downloadserver, kan moderne GPU&rsquo;er <strong>ikke sample PNG-filer direkte</strong>. Når din spilmotor indlæser en PNG:</p>
<ul>
<li>CPU&rsquo;en skal dekomprimere filen til rå, ukomprimerede 32-bit RGBA-pixels i systemhukommelsen.</li>
<li>Den ukomprimerede bitmap uploades til VRAM.</li>
<li>En 2048×2048 tekstur bruger cirka <strong>16 MB VRAM</strong>, uanset om PNG-filen var 1 MB eller 3 MB på disken.</li>
</ul>
<h3 id="2-gpu-blokkomprimering-bcn-astc-etc2">2. GPU-blokkomprimering (BCn, ASTC, ETC2)</h3>
<p>Dedikerede GPU-formater komprimerer faste blokke af pixels (typisk 4×4 pixelblokke) til mindre bitrepræsentationer. Grafikhardware sampler disse blokke direkte i VRAM uden CPU-side dekomprimering:</p>
<ul>
<li>Direkte VRAM-tilfældig adgang uden nogen runtime-dekomprimeringsomkostning.</li>
<li>Den samme 2048×2048 tekstur, der bruger BC7/ASTC, bruger kun <strong>omtrent 4 MB VRAM</strong> (en 75 % reduktion).</li>
<li>Mipmaps kan indlejres direkte i containerfilen.</li>
</ul>
<p>Containere som <strong>DDS</strong> og <strong>KTX</strong> er bygget specifikt til at indpakke disse GPU-native formater, mens <strong>PNG</strong> og <strong>TGA</strong> har forskellige roller tidligere i pipeline&rsquo;en.</p>
<h2 id="1-dds14-directdraw-surface">1. <a href="https://docs.fileformat.com/image/dds/">DDS</a> (DirectDraw Surface)</h2>
<p>Introduceret af Microsoft sammen med DirectX 7, er <strong>DirectDraw Surface (.dds)</strong>-formatet den ubestridte industriarbejds-hest for PC-, Xbox- og konsolspiludvikling.</p>
<h3 id="tekniske-egenskaber">Tekniske egenskaber</h3>
<ul>
<li><strong>Containertype:</strong> Indfødt GPU-teksturbeholder.</li>
<li><strong>Understøttet komprimering:</strong> BC1 gennem BC7 (Block Compression / DXT-familien), ukomprimeret RGBA, flydende formater (BC6H for HDR).</li>
<li><strong>Vigtige funktioner:</strong> Forudbagt mipmaps, cube maps, teksturarrays, volumen (3D)-teksturer.</li>
</ul>
<h3 id="hvorfor-udviklere-bruger-dds">Hvorfor udviklere bruger DDS</h3>
<p>DDS er i bund og grund en direkte hukommelsesdump af hvad grafikhardwaren har brug for. Når en DDS-tekstur med forudgenererede mipmaps indlæses, springer motoren CPU-dekomprimering helt over og udfører en direkte Direct3D- eller Vulkan-hukommelseskopiering til GPU&rsquo;en. Dette eliminerer CPU-flaskehalse under streaming og niveauindlæsning.</p>
<h3 id="fordele">Fordele</h3>
<ul>
<li><strong>Lynhurtige indlæsningstider:</strong> Nul dekomprimerings-CPU-cyklusser kræves ved kørsel.</li>
<li><strong>Forudbagt mipmaps:</strong> Offline mipmap-generering tillader kunstnerkontrolleret filtrering, skærpning og normalmap-normalisering på tværs af LOD&rsquo;er.</li>
<li><strong>VRAM-effektivitet:</strong> Anvender industri-standard BC-komprimeringsalgoritmer indfødt.</li>
</ul>
<h3 id="ulemper">Ulemper</h3>
<ul>
<li><strong>DirectX/Windows Bias:</strong> Historisk knyttet til Microsoft-økosystemer, men bredt understøttet på moderne desktop-motorer.</li>
<li><strong>Lossy Compression Artifacts:</strong> Blokkomprimering (især BC1 på normalmaps) kan introducere blokering, medmindre BC5/BC7 anvendes.</li>
<li><strong>Limited Mobile Support:</strong> Mobile GPU&rsquo;er foretrækker typisk ASTC eller ETC2 frem for desktop BC-formater.</li>
</ul>
<h2 id="2-tga16-truevision-targa">2. <a href="https://docs.fileformat.com/image/tga/">TGA</a> (Truevision Targa)</h2>
<p>Oprettet i 1984, <strong>TGA (.tga)</strong> er et ukomprimeret eller løbende længde‑kodet (RLE) rastergrafikfilformat, som har forblevet en pålidelig pipeline‑standard i over tre årtier.</p>
<h3 id="tekniske-egenskaber-1">Tekniske egenskaber</h3>
<ul>
<li><strong>Container Type:</strong> Ukomprimeret forfatter‑/udvekslings‑bitmap.</li>
<li><strong>Bit Depths:</strong> 8, 16, 24 og 32 bits per pixel (RGB + dedikeret 8-bit Alpha‑kanal).</li>
<li><strong>Compression:</strong> Ingen eller grundlæggende RLE (Run-Length Encoding).</li>
</ul>
<h3 id="hvorfor-udviklere-bruger-tga">Hvorfor udviklere bruger TGA</h3>
<p>TGA foretrækkes af tekniske kunstnere og motorprogrammerere for sin rene arkitektoniske enkelhed. I modsætning til PNG, som indlejrer en alfa‑kanal i komplekse filtrerings‑matricer, holder TGA farvedata og alfa‑kanaler helt adskilte og urørte.</p>
<p>Når du opretter brugerdefinerede masker (f.eks. pakker Roughness i rød, Metallic i grøn, Ambient Occlusion i blå og Height i alfa), sikrer TGA, at der ikke opstår subtile algoritmiske blandinger eller farveblødning mellem kanalerne.</p>
<h3 id="fordele-1">Fordele</h3>
<ul>
<li><strong>Uforstyrret datanøjagtighed:</strong> Bit-nøjagtig bevarelse af kanalværdier; ideel til kanal-pakkede ORM (Occlusion-Roughness-Metallic) teksturer.</li>
<li><strong>Triviel parsing:</strong> Interne pipeline-værktøjer, brugerdefinerede eksportører og automatiserede scripts kan læse og skrive TGA-filer med minimale kodelinjer.</li>
<li><strong>Universel DCC-understøttelse:</strong> Maya, 3ds Max, Blender, Substance 3D og Photoshop tilbyder indbygget, problemfri TGA-eksport.</li>
</ul>
<h3 id="ulemper-1">Ulemper</h3>
<ul>
<li><strong>Massive filstørrelser:</strong> Stor pladsforbrug i Git/Perforce-repositorier og langsomme downloadhastigheder for distribuerede teams.</li>
<li><strong>Uegnet til runtime:</strong> Kan ikke bruges direkte af GPU&rsquo;en som et komprimeret format; skal konverteres af motoren under kogning.</li>
</ul>
<h2 id="3-png12-portable-network-graphics">3. <a href="https://docs.fileformat.com/image/png/">PNG</a> (Portable Network Graphics)</h2>
<p><strong>PNG (.png)</strong> er verdens mest anerkendte tabsfrie billedformat, der bruger zlib/DEFLATE-kompression til at pakke rige 24-bit og 32-bit billeder i bemærkelsesværdigt små filer.</p>
<h3 id="tekniske-egenskaber-2">Tekniske egenskaber</h3>
<ul>
<li><strong>Containertype:</strong> Tabsfri forfatter- og leveringsformat.</li>
<li><strong>Bitdybder:</strong> Op til 16 bit per kanal (48-bit RGB, 64-bit RGBA).</li>
<li><strong>Komprimering:</strong> Tabfri DEFLATE-algoritme.</li>
</ul>
<h3 id="hvorfor-udviklere-bruger-png">Hvorfor udviklere bruger PNG</h3>
<p>PNG fungerer som det primære distributionsformat for UI‑assets, sprites, reklame‑materialer og mellemliggende kilde‑teksturer. For 2D‑spil lavet i Unity, Godot eller Unreal Engine giver PNG skarp pixel‑trofasthed med fejlfri gennemsigtighedsmasker.</p>
<h3 id="fordele-2">Fordele</h3>
<ul>
<li><strong>Kompakt lageraftryk:</strong> Reducerer projektets checkout‑størrelser betydeligt sammenlignet med ukomprimeret TGA.</li>
<li><strong>Tabfri farvekvalitet:</strong> Ingen komprimeringsartefakter på højkontrastkanter og vektor‑stil illustrationer.</li>
<li><strong>Indbygget alfa‑gennemsigtighed:</strong> Ren 8-bit alfa‑kanal support for komplekse gennemsigtige UI‑elementer og partikel‑ark.</li>
</ul>
<h3 id="ulemper-2">Ulemper</h3>
<ul>
<li><strong>Tung CPU‑dekodning:</strong> Dekomprimering af store PNG‑filer i runtime sænker billedhastigheden og får hukommelsesforbruget til at stige før GPU‑upload.</li>
<li><strong>Premultiplied Alpha-faldgruber:</strong> Nogle billedredigeringsprogrammer kasserer RGB‑data i fuldt gennemsigtige pixels, hvilket ødelægger tekstur‑blødning og forårsager mørke konturer omkring sprites.</li>
<li><strong>Zero VRAM Besparelser:</strong> Dekomprimeres til fuld 32-bit råhukommelse inde i GPU&rsquo;en, medmindre den indtages af motorens tekstur-cooker.</li>
</ul>
<h2 id="4-ktx-khronos-texture-og-ktx-20">4. KTX (Khronos Texture) og KTX 2.0</h2>
<p>Udviklet af Khronos Group—det styrende organ bag Vulkan, OpenGL og glTF—<strong>KTX (.ktx)</strong> og <strong>KTX 2.0</strong> repræsenterer den moderne åbne standard for tværplatform GPU-teksturer.</p>
<h3 id="tekniske-egenskaber-3">Tekniske egenskaber</h3>
<ul>
<li><strong>Containertype:</strong> Standardiseret åben GPU-teksturcontainer.</li>
<li><strong>Komprimeringsunderstøttelse:</strong> Basis Universal (ETC1S og UASTC), ASTC, BCn, ETC2.</li>
<li><strong>Nøglefunktioner:</strong> Universel teksturtranskodning, mipmaps, cubemaps, array-teksturer, glTF-integration.</li>
</ul>
<h3 id="hvorfor-udviklere-bruger-ktx">Hvorfor udviklere bruger KTX</h3>
<p>KTX 2.0 løser det fragmenterede tværplatform-komprimeringsdilemma. Traditionelt måtte udviklere levere DDS (BCn) til desktop/konsoller og ASTC/ETC2 til mobil/tabletter.</p>
<p>Med KTX 2.0 og <strong>Basis Universal</strong>:</p>
<ol>
<li>Du gemmer teksturer i et kompakt, universelt komprimerbart format.</li>
<li>Ved kørselstid transkoder klienthardwaren filen direkte til det blokformat, som den lokale GPU foretrækker (f.eks. BC7 på en GeForce RTX, ASTC på en iPhone, ETC2 på en ældre Android-enhed).</li>
<li>Superkomprimering (Zstandard) producerer filer, der er mindre end JPEG på disken, og som transkoderes til native VRAM-blokke på millisekunder.</li>
</ol>
<h3 id="fordele-3">Fordele</h3>
<ul>
<li><strong>Ægte tværplatformstandard:</strong> Kører problemfrit på Vulkan, WebGL, WebGPU og mobile enheder.</li>
<li><strong>Basis Universal Transcoding:</strong> En enkelt asset-build målretter desktop, mobil og browser uden duplikerede tekstureksport.</li>
<li><strong>Førsteklasses glTF-kompagni:</strong> Væsentlig for moderne 3D-weboplevelser, metavers-motorer og åbne renderings-pipelines.</li>
</ul>
<h3 id="ulemper-3">Ulemper</h3>
<ul>
<li><strong>Pipeline-værktøjsmodenhed:</strong> Kræver moderne build-kæder (såsom <code>toktx</code> fra KTX-Software-suiten); ældre proprietære motorer kan mangle integration klar til brug.</li>
<li><strong>Transcoder-overhead:</strong> Let runtime transcode-latens (selvom den er størrelsesordener hurtigere end fuld PNG-softwaredekodning).</li>
</ul>
<h2 id="sammenligning-side-om-side">Sammenligning side om side</h2>
<table>
<thead>
<tr>
<th style="text-align:left">Funktion / Kriterier</th>
<th style="text-align:left"><a href="https://docs.fileformat.com/image/dds/">DDS</a></th>
<th style="text-align:left"><a href="https://docs.fileformat.com/image/tga/">TGA</a></th>
<th style="text-align:left"><a href="https://docs.fileformat.com/image/png/">PNG</a></th>
<th style="text-align:left">KTX / KTX 2.0</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Primært anvendelsesområde</strong></td>
<td style="text-align:left">PC/Konsol runtime</td>
<td style="text-align:left">Kildeforfatning &amp; masker</td>
<td style="text-align:left">2D-sprites &amp; kildekunst</td>
<td style="text-align:left">Cross-platform &amp; web-runtime</td>
</tr>
<tr>
<td style="text-align:left"><strong>Direkte GPU-sampling</strong></td>
<td style="text-align:left">Ja (Native)</td>
<td style="text-align:left">Nej</td>
<td style="text-align:left">Nej</td>
<td style="text-align:left">Ja (Native eller transkodet)</td>
</tr>
<tr>
<td style="text-align:left"><strong>VRAM-komprimering</strong></td>
<td style="text-align:left">Ja (BC1–BC7)</td>
<td style="text-align:left">Nej (Ukomprimeret)</td>
<td style="text-align:left">Nej (Ukomprimeret)</td>
<td style="text-align:left">Ja (ASTC, BCn, Basis)</td>
</tr>
<tr>
<td style="text-align:left"><strong>Forudbagt Mipmaps</strong></td>
<td style="text-align:left">Ja</td>
<td style="text-align:left">Nej</td>
<td style="text-align:left">Nej</td>
<td style="text-align:left">Ja</td>
</tr>
<tr>
<td style="text-align:left"><strong>Diskstørrelse</strong></td>
<td style="text-align:left">Moderat</td>
<td style="text-align:left">Meget høj</td>
<td style="text-align:left">Lille</td>
<td style="text-align:left">Ekstremt lille (Basis + Zstandard)</td>
</tr>
<tr>
<td style="text-align:left"><strong>Økosystem</strong></td>
<td style="text-align:left">DirectX / Desktop-motorer</td>
<td style="text-align:left">DCC-software / Source-pipelines</td>
<td style="text-align:left">Universelle Web- og 2D-motorer</td>
<td style="text-align:left">Vulkan, WebGPU, glTF</td>
</tr>
</tbody>
</table>
<h2 id="praktisk-guide-byg-den-ideelle-asset-pipeline">Praktisk guide: Byg den ideelle asset-pipeline</h2>
<p>Hvordan bør du organisere disse fire formater i en kommerciel produktionspipeline? Sådan strukturerer topstudier deres tekstur‑pipelines:</p>
<pre tabindex="0"><code>[DCC &amp; Authoring]               [Engine Ingestion / Cook]            [Runtime GPU Target]
Substance / Photoshop / Blender           Unreal / Unity / Custom Toolset      VRAM Memory Blocks
 
   • TGA (Clean packed masks)    ──────►  Build Engine Texture Cooker  ──────►  DDS (DirectX / Windows / Xbox)
   • PNG (UI &amp; 2D Sprites)       ──────►  Generates Mipmaps &amp; Block    ──────►  KTX2 (Vulkan / WebGPU / Mobile)
   • PSD / EXR (HDR &amp; masters)   ──────►  Compression Automatically   
</code></pre><ol>
<li><strong>Kilde‑aktiver:</strong> Gem master‑filer og kanal‑pakker data i <strong>TGA</strong> eller <strong>PNG</strong> i dine projekt‑repositories for at sikre ukorrumperet farveinformation.</li>
<li><strong>PC‑ og konsol‑builds:</strong> Konverter dine kilde‑teksturer til <strong>DDS</strong>‑filer ved brug af BC7 til høj‑detalje albedo/normal‑maps og BC4/BC5 til enkelt‑ og dobbelt‑kanal‑masker.</li>
<li><strong>Cross‑platform, web‑ og mobil‑builds:</strong> Pak runtime‑3D‑aktiver i <strong>KTX 2.0</strong> for at udnytte universel transkodning på tværs af Android, iOS og WebGPU uden at vedligeholde separate kunst‑grene.</li>
<li><strong>Brugergrænseflader:</strong> Hold runtime‑UI‑teksturer enten i skarpe ukomprimerede formater eller tabsfri motor‑atlasser afledt af høj‑opløsnings‑<strong>PNG</strong>‑kildefiler.</li>
</ol>
<h2 id="ofte-stillede-spørgsmål-faq">Ofte stillede spørgsmål (FAQ)</h2>
<h3 id="q1-kan-en-spilmotor-hente-en-png-direkte-fra-videohukommelsen">Q1. Kan en spilmotor hente en PNG direkte fra videohukommelsen?</h3>
<p><strong>A1:</strong> Nej; GPU&rsquo;er kan ikke parse PNG‑komprimering, så motorer skal dekomprimere PNG‑filer til rå 32‑bit bitmap i hukommelsen før de uploades til VRAM.</p>
<h3 id="q2-hvorfor-foretrækker-tekniske-kunstnere-tga-frem-for-png-til-maskepakning">Q2. Hvorfor foretrækker tekniske kunstnere TGA frem for PNG til maskepakning?</h3>
<p><strong>A2:</strong> TGA gemmer ren, ukomprimeret kanaldata uden farveblødning eller destruktiv kantgennemsigtighedsfiltrering på tværs af individuelle RGB- og Alpha-kanaler.</p>
<h3 id="q3-hvilken-blokkomprimeringsalgoritme-skal-jeg-bruge-i-en-dds-beholder-til-normalmaps">Q3. Hvilken blokkomprimeringsalgoritme skal jeg bruge i en DDS-beholder til normalmaps?</h3>
<p><strong>A3:</strong> Brug <strong>BC5</strong> (to-kanals tangentrumkomprimering) til normalkort for at bevare ren overfladekurvatur uden standard BC1-blokartefakter.</p>
<h3 id="q4-hvad-gør-ktx-20-bedre-end-dds-til-tværplatformsspil">Q4. Hvad gør KTX 2.0 bedre end DDS til tværplatformsspil?</h3>
<p><strong>A4:</strong> KTX 2.0 understøtter Basis Universal, som gør det muligt for en enkelt fil at transkode on-the-fly til desktop BCn-formater eller mobile ASTC/ETC-formater ved opstart.</p>
<h3 id="q5-øger-forudbagt-mipmaps-i-dds--eller-ktx-filer-diskstørrelsen">Q5. Øger forudbagt mipmaps i DDS- eller KTX-filer diskstørrelsen?</h3>
<p><strong>A5:</strong> Ja, inklusion af fulde mipmap-kæder tilføjer cirka 33 % mere rådata til filen, men det eliminerer kørselstidsskumring, forbedrer cache-lokalitet og øger GPU-renderingsydelsen.</p>
<h2 id="se-også">Se også</h2>
<ul>
<li><a href="https://blog.fileformat.com/en/image/webp-vs-avif-vs-jpeg-xl-which-image-format-should-developers-choose-in-2026/">WebP vs AVIF vs JPEG XL: Bedste billedformat for udviklere i 2026</a></li>
<li><a href="https://blog.fileformat.com/image/difference-between-bmp-and-png/">Forskellen mellem BMP og PNG</a></li>
<li><a href="https://blog.fileformat.com/2021/08/19/apng-vs-bmp-which-image-file-format-is-better/">APNG vs BMP: Hvilket billedfilformat er bedre?</a></li>
<li><a href="https://blog.fileformat.com/2021/08/25/raster-vs-vector-images-a-brief-comparison/">Raster VS Vektor‑billeder: En kort sammenligning</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
