GPUDevice: createTexture() Methode
        
        
          Limited availability
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createTexture() Methode des GPUDevice-Interfaces erstellt eine GPUTexture, um 1D-, 2D- oder 3D-Datenarrays wie Bilder zu speichern, die in GPU-Rendering-Operationen verwendet werden.
Syntax
createTexture(descriptor)
Parameter
descriptor- 
Ein Objekt mit den folgenden Eigenschaften:
dimensionOptional- 
Ein enumerierter Wert, der das Dimensionsniveau der Textur angibt. Mögliche Werte sind:
"1d": Die Textur ist eindimensional."2d": Die Textur ist zweidimensional oder ein Array aus zweidimensionalen Schichten."3d": Die Textur ist dreidimensional.
dimensionhat standardmäßig den Wert"2d", wenn der Wert ausgelassen wird. format- 
Ein enumerierter Wert, der das Format der Textur angibt. Siehe den Abschnitt Texturformate der Spezifikation für alle möglichen Werte.
Hinweis:
- Die 
depth32float-stencil8Funktion muss aktiviert sein, umdepth32float-stencil8-Format-GPUTextures zu erstellen. - Die 
texture-compression-bcFunktion muss aktiviert sein, um zweidimensionale (dimension: "2d") BC-komprimierteGPUTextures zu erstellen:bc1-rgba-unorm,bc1-rgba-unorm-srgb,bc2-rgba-unorm,bc2-rgba-unorm-srgb,bc3-rgba-unorm,bc3-rgba-unorm-srgb,bc4-r-unorm,bc4-r-snorm,bc5-rg-unorm,bc5-rg-snorm,bc6h-rgb-ufloat,bc6h-rgb-float,bc7-rgba-unormundbc7-rgba-unorm-srgbFormate. - Die 
texture-compression-bcundtexture-compression-bc-sliced-3dFunktionen müssen aktiviert sein, um dreidimensionale BC-komprimierteGPUTextures zu erstellen (die gleichenformat-Werte wie im vorherigen Punkt, aber mitdimensionauf3dgesetzt). - Die 
texture-compression-astcFunktion muss aktiviert sein, um zweidimensionale (dimension: "2d") ASTC-komprimierteGPUTextures zu erstellen:astc-4x4-unorm,astc-4x4-unorm-srgb,astc-5x4-unorm,astc-5x4-unorm-srgb,astc-5x5-unorm,astc-5x5-unorm-srgb,astc-6x5-unorm,astc-6x5-unorm-srgb,astc-6x6-unorm,astc-6x6-unorm-srgb,astc-8x5-unorm,astc-8x5-unorm-srgb,astc-8x6-unorm,astc-8x6-unorm-srgb,astc-8x8-unorm,astc-8x8-unorm-srgb,astc-10x5-unorm,astc-10x5-unorm-srgb,astc-10x6-unorm,astc-10x6-unorm-srgb,astc-10x8-unorm,astc-10x8-unorm-srgb,astc-10x10-unorm,astc-10x10-unorm-srgb,astc-12x10-unorm,astc-12x10-unorm-srgb,astc-12x12-unormundastc-12x12-unorm-srgbFormate. - Die 
texture-compression-astcundtexture-compression-astc-sliced-3dFunktionen müssen aktiviert sein, um dreidimensionale BC-komprimierteGPUTextures zu erstellen (die gleichenformat-Werte wie im vorherigen Punkt, aber mitdimensionauf3dgesetzt). - Die 
texture-compression-etc2Funktion muss aktiviert sein, um zweidimensionale ETC2-komprimierteGPUTextures zu erstellen:etc2-rgb8unorm,etc2-rgb8unorm-srgb,etc2-rgb8a1unorm,etc2-rgb8a1unorm-srgb,etc2-rgba8unorm,etc2-rgba8unorm-srgb,eac-r11unorm,eac-r11snorm,eac-rg11unormundeac-rg11snormFormate. - Siehe den Abschnitt Tier 1 und Tier 2 Texturformate für weitere Informationen über diese Texturformat-Sets und die Anforderungen, sie zu erstellen.
 
 - Die 
 labelOptional- 
Ein String, der ein Etikett bereitstellt, das verwendet werden kann, um das Objekt beispielsweise in
GPUError-Meldungen oder Konsolenwarnungen zu identifizieren. mipLevelCountOptional- 
Eine Zahl, die die Anzahl der Mip-Ebenen angibt, die die Textur enthalten wird. Wenn ausgelassen, ist der Standardwert 1.
 sampleCountOptional- 
Eine Zahl, die die Sampling-Anzahl der Textur angibt. Um gültig zu sein, muss der Wert 1 oder 4 sein. Wenn ausgelassen, ist der Standardwert 1. Ein höherer Wert als 1 zeigt eine multisample Textur an.
 size- 
Ein Objekt oder Array, das die Breite, Höhe und Tiefe/Array-Schichtebene der Textur angibt. Der Wert für die Breite muss immer angegeben werden, während die Höhe und die Tiefe/Array-Schichtebene optional sind und auf 1 voreingestellt sind, wenn sie ausgelassen werden.
Zum Beispiel, Sie können ein Array wie
[16, 16, 2]oder sein gleichwertiges Objekt{ width: 16, height: 16, depthOrArrayLayers: 2 }übergeben. usage- 
Die Bitmasken, die die erlaubten Nutzungen für die
GPUTexturedarstellen. Die möglichen Werte sind in derGPUTexture.usageWerttabelle zu finden.Beachten Sie, dass mehrere mögliche Nutzungen angegeben werden können, indem Werte mit bitwise OR getrennt werden, z.B.:
GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT.Hinweis:
- Die 
bgra8unorm-storageFunktion muss aktiviert sein, umSTORAGE_BINDINGNutzung für einbgra8unorm-formatGPUTextureanzugeben. - Die 
rg11b10ufloat-renderableFunktion muss aktiviert sein, umRENDER_ATTACHMENTNutzung für einrg11b10ufloat-formatGPUTextureanzugeben, ebenso wie sein Blending und Multisampling. 
 - Die 
 viewFormatsOptional- 
Ein Array von enumerierten Werten, das andere erlaubte Texturformate angibt, wenn
GPUTexture.createView()auf dieser Textur aufgerufen wird, zusätzlich zu dem imformat-Wert angegebenen Texturformat. 
 
Rückgabewert
Eine GPUTexture Objektinstanz.
Validierung
Die folgenden Kriterien müssen bei der Aufruf von createTexture() erfüllt sein, ansonsten wird ein GPUValidationError ausgelöst und ein ungültiges GPUTexture Objekt zurückgegeben:
- Eine gültige 
usageist angegeben. - Die in 
sizeangegebenen Werte (Breite, Höhe oder Tiefe/Array-Schichtebene) sind größer als 0. mipLevelCountist größer als 0.sampleCountist gleich 1 oder 4.- Wenn 
dimensionauf"1d"gesetzt ist:- Der 
sizeBreitenwert ist kleiner oder gleich derGPUDevicemaxTextureDimension1DGrenze. - Die 
sizeHöhen- und Tiefe/Array-Schichtebenenwerte sind gleich 1. - Der 
sampleCountist gleich 1. - Das 
formatist nicht gleich einem komprimierten Format oder Tiefen- oder Stencil-Format. 
 - Der 
 - Wenn 
dimensionauf"2d"gesetzt ist: - Wenn 
dimensionauf"3d"gesetzt ist:- Die 
sizeBreite, Höhe und Tiefe/Array-Schichtebenenwerte sind kleiner oder gleich derGPUDevicemaxTextureDimension3DGrenze. - Der 
sampleCountWert ist gleich 1. - Das 
formatist nicht gleich einem komprimierten Format oder Tiefen- oder Stencil-Format. 
 - Die 
 - Der 
sizeBreitenwert ist ein Vielfaches der Texel-Block-Breite. - Der 
sizeHöhenwert ist ein Vielfaches der Texel-Block-Höhe. - Wenn 
sampleCountgrößer als 1 ist:mipLevelCountist gleich 1.- Der 
sizeTiefe/Array-Schichtebenenwert ist gleich 1. usageenthält dasGPUTextureUsage.RENDER_ATTACHMENTFlag.usageenthält nicht dasGPUTextureUsage.STORAGE_BINDINGFlag.- Das angegebene Format unterstützt Multisampling.
 
 - Der 
mipLevelCountWert ist kleiner als oder gleich der maximalen Mip-Ebenenzahl. - Die in 
formatundviewFormatsangegebenen Formate sind kompatibel zueinander. - Wenn 
usagedasGPUTextureUsage.RENDER_ATTACHMENTFlag enthält:formatist ein renderbares Format (ein farbrenderbares Format oder ein Tiefen- oder Stencil-Format).dimensionist auf"2d"gesetzt.
 - Wenn 
usagedasGPUTextureUsage.STORAGE_BINDINGFlag enthält:- Das angegebene 
formatumfasst dieSTORAGE_BINDINGFähigkeit (siehe die Tabelle der einfachen Farbformate als Referenz). 
 - Das angegebene 
 
Tier 1 und Tier 2 Texturformate
Dieser Abschnitt beschreibt die WebGPU Tier 1 und Tier 2 Texturformate.
Tier 1
Die Tier 1 Sammlungen von Texturformaten sind entworfen, um Entwicklern eine Übertragung bestehender Inhalte auf das Web zu ermöglichen, ohne dass diese es neu schreiben müssen, um die niedrigeren Fähigkeiten von WebGPU zu nutzen. Um diesen Satz zu nutzen, aktivieren Sie die texture-formats-tier1 Funktion (siehe GPUSupportedFeatures).
Diese Funktion zu aktivieren, erlaubt:
- Die folgenden 
formate mitusagen vonRENDER_ATTACHMENT(inklusive misch- und multisamplingfähiger Fähigkeiten) undSTORAGE_BINDING(mitread-onlyundwrite-onlyaccess) zu verwenden:r16unormr16snormrg16unormrg16snormrgba16unormrgba16snorm
 - Die folgenden 
formate mit derRENDER_ATTACHMENTusage(inklusive misch- und multisamplingfähiger Fähigkeiten) zu verwenden:r8snormrg8snormrgba8snorm
 - Die folgenden 
formate mit derSTORAGE_BINDINGusage(mitread-onlyundwrite-onlyaccess) zu verwenden:r8unormr8snormr8uintr8sintrg8unormrg8snormrg8uintrg8sintr16uintr16sintr16floatrg16uintrg16sintrg16floatrgb10a2uintrgb10a2unormrg11b10ufloat
 - Das Verwenden der folgenden 
GPUTextureFormate im Ziel-texturevonGPUQueue.copyExternalImageToTexture()Aufrufen:r16unormrg16unormrgba16unorm
 
Hinweis:
Die Aktivierung der texture-formats-tier1 Funktion aktiviert automatisch die rg11b10ufloat-renderable Funktion, die es erlaubt, die rg11b10ufloat Textur mit der Nutzung RENDER_ATTACHMENT, inklusive Blending und Multisampling, zu verwenden.
Tier 2
Die Tier 2 Sammlungen von Texturformaten unterstützen Speichertexturformate, die in "Kern"-WebGPU keine Unterstützung haben und für fortgeschrittenen Einsatz benötigt werden. Um diesen Satz zu nutzen, aktivieren Sie die texture-formats-tier2 Funktion (siehe GPUSupportedFeatures).
Diese Funktion zu aktivieren, erlaubt die Verwendung der folgenden formate mit der STORAGE_BINDING usage (mit read-write access):
r8unormr8uintr8sintrgba8unormrgba8uintrgba8sintr16uintr16sintr16floatrgba16uintrgba16sintrgba16floatrgba32uintrgba32sintrgba32float
Hinweis:
Die Aktivierung der texture-formats-tier2 Funktion aktiviert automatisch die rg11b10ufloat-renderable und texture-formats-tier1 Funktionen.
Beispiele
Im WebGPU Beispiel Textured Cube sample wird eine Textur erstellt, die auf den Flächen eines Würfels verwendet wird, durch:
- Laden des Bildes in ein 
HTMLImageElementund Erstellen eines Bildbitmaps mitcreateImageBitmap(). - Erstellen einer neuen Textur mit 
createTexture(). - Kopieren des Bildbitmaps in die Textur mit 
GPUQueue.copyExternalImageToTexture(). 
// …
let cubeTexture;
{
  const img = document.createElement("img");
  img.src = new URL(
    "../../../assets/img/Di-3d.png",
    import.meta.url,
  ).toString();
  await img.decode();
  const imageBitmap = await createImageBitmap(img);
  cubeTexture = device.createTexture({
    size: [imageBitmap.width, imageBitmap.height, 1],
    format: "rgba8unorm",
    usage:
      GPUTextureUsage.TEXTURE_BINDING |
      GPUTextureUsage.COPY_DST |
      GPUTextureUsage.RENDER_ATTACHMENT,
  });
  device.queue.copyExternalImageToTexture(
    { source: imageBitmap },
    { texture: cubeTexture },
    [imageBitmap.width, imageBitmap.height],
  );
}
// …
Spezifikationen
| Specification | 
|---|
| WebGPU> # dom-gpudevice-createtexture>  | 
            
Browser-Kompatibilität
Loading…
Siehe auch
- Die WebGPU API