Auf dieser Seite

QRhiTexture Class

Textur-Ressource. Mehr...

Header: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Seit: Qt 6.6
Erbt von: QRhiResource

Öffentliche Typen

struct NativeTexture
(since 6.8) struct ViewFormat
enum Flag { RenderTarget, CubeMap, MipMapped, sRGB, UsedAsTransferSource, …, UsedAsShadingRateMap }
flags Flags
enum Format { UnknownFormat, RGBA8, BGRA8, R8, RG8, …, RGBA32SI }

Öffentliche Funktionen

int arrayRangeLength() const
int arrayRangeStart() const
int arraySize() const
virtual bool create() = 0
virtual bool createFrom(QRhiTexture::NativeTexture src)
int depth() const
QRhiTexture::Flags flags() const
QRhiTexture::Format format() const
virtual QRhiTexture::NativeTexture nativeTexture()
QSize pixelSize() const
(since 6.8) QRhiTexture::ViewFormat readViewFormat() const
int sampleCount() const
void setArrayRange(int startIndex, int count)
void setArraySize(int arraySize)
void setDepth(int depth)
void setFlags(QRhiTexture::Flags f)
void setFormat(QRhiTexture::Format fmt)
virtual void setNativeLayout(int layout)
void setPixelSize(const QSize &sz)
(since 6.8) void setReadViewFormat(const QRhiTexture::ViewFormat &fmt)
void setSampleCount(int s)
(since 6.8) void setWriteViewFormat(const QRhiTexture::ViewFormat &fmt)
(since 6.8) QRhiTexture::ViewFormat writeViewFormat() const

Neu implementierte öffentliche Funktionen

virtual QRhiResource::Type resourceType() const override

Ausführliche Beschreibung

Ein QRhiTexture-Objekt kapseln ein natives Texturobjekt, wie beispielsweise ein „ VkImage “ oder „ MTLTexture “.

Eine QRhiTexture-Instanz wird immer durch den Aufruf von ` the QRhi's newTexture() function` erstellt. Dabei werden keine nativen Grafikressourcen angelegt. Um dies zu tun, rufen Sie ` create()` auf, nachdem Sie die entsprechenden Optionen wie Format und Größe festgelegt haben, obwohl diese in den meisten Fällen bereits basierend auf den an ` newTexture()` übergebenen Argumenten voreingestellt sind.

Die korrekte Einstellung von ` flags ` ist unerlässlich, da andernfalls je nach dem zugrunde liegenden ` QRhi `-Backend und der Grafik-API verschiedene Fehler auftreten können. Wenn beispielsweise eine Textur aus einem Render-Durchgang über ` QRhiTextureRenderTarget` gerendert werden soll, muss die Textur mit gesetztem ` RenderTarget `-Flag erstellt werden. Ebenso muss, wenn die Textur mit ` read back` verwendet werden soll, das ` UsedAsTransferSource `-Flag im Voraus gesetzt werden. Bei Mipmap-Texturen muss das Flag „ MipMapped “ gesetzt sein. Und so weiter. Es ist nicht möglich, die Flags zu ändern, sobald „ create()“ erfolgreich ausgeführt wurde. Um das bestehende Texturobjekt freizugeben und ein neues natives Texturobjekt mit den geänderten Einstellungen zu erstellen, rufen Sie die Setter-Methoden auf und rufen Sie anschließend erneut „ create()“ auf. Dies kann unter Umständen ein rechenintensiver Vorgang sein.

Anwendungsbeispiel

So erstellen Sie eine 2D-Textur mit einer Größe von 512 × 512 Pixeln und legen deren Inhalt vollständig auf Grün fest:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, QSize(512, 512));
if (!texture->create()) { error(); }
QRhiResourceUpdateBatch *batch = rhi->nextResourceUpdateBatch();
QImage image(512, 512, QImage::Format_RGBA8888);
image.fill(Qt::green);
batch->uploadTexture(texture, image);
// ...
commandBuffer->resourceUpdate(batch); // or, alternatively, pass 'batch' to a beginPass() call

Häufige Anwendungsmuster

Ein Aufruf von ` create()` zerstört alle vorhandenen nativen Ressourcen, sofern zuvor ` create()` erfolgreich aufgerufen wurde. Wenn diese nativen Ressourcen noch von einem laufenden Frame verwendet werden (d. h., es besteht die Möglichkeit, dass sie noch von der GPU gelesen werden), wird die Zerstörung dieser Ressourcen automatisch aufgeschoben. Daher ist das folgende Muster sehr verbreitet und praktisch, um die Größe einer bereits vorhandenen Textur sicher zu ändern. In der Praxis wird dabei die zugrunde liegende native Texturressource verworfen und eine komplett neue erstellt, es handelt sich also nicht unbedingt um einen ressourcenschonenden Vorgang, aber er ist bequemer und dennoch schneller als die Alternativen, da durch das Nicht-Löschen des „ texture “-Objekts selbst alle Verweise darauf in anderen Datenstrukturen gültig bleiben (z. B. in jedem „QShaderResourceBinding“, von dem aus auf die „QRhiTexture“ verwiesen wird).

// determine newSize, e.g. based on the swapchain's output size or other factors
if (texture->pixelSize() != newSize) {
    texture->setPixelSize(newSize);
    if (!texture->create()) { error(); }
}
// continue using texture, fill it with new data

Hinweis: Hierbei handelt es sich um eine RHI-API mit eingeschränkten Kompatibilitätsgarantien; Einzelheiten finden Sie unter QRhi.

Siehe auch QRhiResourceUpdateBatch, QRhi und QRhiTextureRenderTarget.

Dokumentation zu den Mitgliedstypen

enum QRhiTexture::Flag
flags QRhiTexture::Flags

Flag-Werte zur Festlegung, wie die Textur verwendet werden soll. Werden die vor dem Aufruf von ` create()` gesetzten Flags nicht beachtet und wird versucht, die Textur auf eine Weise zu verwenden, die nicht im Voraus deklariert wurde, kann dies je nach Backend und der zugrunde liegenden Grafik-API zu nicht spezifiziertem Verhalten oder zu Leistungseinbußen führen.

KonstanteWertBeschreibung
QRhiTexture::RenderTarget1 << 0Die Textur soll in Kombination mit ` QRhiTextureRenderTarget` verwendet werden.
QRhiTexture::CubeMap1 << 2Die Textur ist eine Cubemap. Solche Texturen verfügen über 6 Ebenen, eine für jede Fläche in der Reihenfolge +X, -X, +Y, -Y, +Z, -Z. Cubemap-Texturen können nicht multisample sein.
QRhiTexture::MipMapped1 << 3Die Textur verfügt über Mipmaps. Die entsprechende Mip-Anzahl wird automatisch berechnet und kann auch über ` QRhi::mipLevelsForSize()` abgerufen werden. Die Bilder für die Mip-Stufen müssen in der hochgeladenen Textur enthalten sein oder über ` QRhiResourceUpdateBatch::generateMips()` generiert werden. Multisample-Texturen dürfen keine Mipmaps haben.
QRhiTexture::sRGB1 << 4Verwenden Sie ein sRGB-Format.
QRhiTexture::UsedAsTransferSource1 << 5Die Textur wird als Quelle für eine Texturkopie oder ein Readback verwendet, d. h., die Textur wird in QRhiResourceUpdateBatch::copyTexture() oder QRhiResourceUpdateBatch::readBackTexture() als Quelle angegeben.
QRhiTexture::UsedWithGenerateMips1 << 6Die Textur soll mit QRhiResourceUpdateBatch::generateMips() verwendet werden.
QRhiTexture::UsedWithLoadStore1 << 7Die Textur soll mit Bildlade-/Speicheroperationen verwendet werden, beispielsweise in einem Compute-Shader.
QRhiTexture::UsedAsCompressedAtlas1 << 8Die Textur hat ein komprimiertes Format, und die Abmessungen der hochgeladenen Teilressourcen stimmen möglicherweise nicht mit der Texturgröße überein.
QRhiTexture::ExternalOES1 << 9Die Textur sollte bei OpenGL das Ziel GL_TEXTURE_EXTERNAL_OES verwenden. Bei anderen Grafik-APIs wird dieses Flag ignoriert.
QRhiTexture::ThreeDimensional1 << 10Die Textur ist eine 3D-Textur. Solche Texturen sollten mit der Überladung von ` QRhi::newTexture()` erstellt werden, die zusätzlich zu Breite und Höhe eine Tiefe berücksichtigt. Eine 3D-Textur kann Mipmaps enthalten, darf jedoch nicht multisample sein. Beim Rendern in eine 3D-Textur oder beim Hochladen von Daten in eine solche bezieht sich die im Farb-Attachment des Renderziels oder in der Upload-Beschreibung angegebene „ layer “ auf eine einzelne Scheibe im Bereich [0..depth-1]. Die zugrunde liegende Grafik-API unterstützt möglicherweise 3D-Texturen zur Laufzeit nicht. Die Unterstützung wird durch das Merkmal „ QRhi::ThreeDimensionalTextures “ angezeigt.
QRhiTexture::TextureRectangleGL1 << 11Die Textur sollte bei OpenGL das Ziel „GL_TEXTURE_RECTANGLE“ verwenden. Bei anderen Grafik-APIs wird dieses Flag ignoriert. Genau wie „ExternalOES“ ist dieses Flag nützlich bei der Arbeit mit Plattform-APIs, bei denen native OpenGL-Texturobjekte, die von der Plattform empfangen werden, in ein „ QRhiTexture “ verpackt sind und die Plattform nur Texturen für ein Nicht-2D-Texturziel bereitstellen kann.
QRhiTexture::TextureArray1 << 12Die Textur ist ein Textur-Array, d. h. ein einzelnes Texturobjekt, das ein homogenes Array aus 2D-Texturen darstellt. Textur-Arrays werden mit ` QRhi::newTextureArray()` erstellt. Die zugrunde liegende Grafik-API unterstützt Textur-Array-Objekte möglicherweise zur Laufzeit nicht. Die Unterstützung wird durch die Funktion „ QRhi::TextureArrays “ angezeigt. Beim Rendern in ein Textur-Array oder beim Hochladen von Daten in ein Textur-Array wählt die im Farb-Attachment des Renderziels oder in der Upload-Beschreibung angegebene ` layer ` ein einzelnes Element im Array aus.
QRhiTexture::OneDimensional1 << 13Es handelt sich um eine 1D-Textur. Solche Texturen können erstellt werden, indem bei ` QRhi::newTexture()` eine Höhe und Tiefe von 0 übergeben werden. Beachten Sie, dass es je nach zugrunde liegender Grafik-API Einschränkungen bei eindimensionalen Texturen geben kann. Beispielsweise wird das Rendern in diese Texturen oder deren Verwendung mit mipmap-basierter Filterung möglicherweise nicht unterstützt. Dies wird durch die Feature-Flags „ QRhi::OneDimensionalTextures “ und „ QRhi::OneDimensionalTextureMipmaps “ angezeigt.
QRhiTexture::UsedAsShadingRateMap1 << 14 

Der Typ „Flags“ ist ein `typedef` für ` QFlags<Flag>`. Er speichert eine ODER-Kombination von `Flag`-Werten.

enum QRhiTexture::Format

Legt das Texturformat fest. Siehe auch ` QRhi::isTextureFormatSupported()` und beachte, dass ` flags()` das Format ändern kann, wenn ` QRhiTexture::sRGB ` gesetzt ist.

KonstanteWertBeschreibung
QRhiTexture::UnknownFormat0Kein gültiges Format. Dies kann nicht an ` setFormat()` übergeben werden.
QRhiTexture::RGBA81Vier Komponenten, vorzeichenlose normalisierte 8-Bit pro Komponente. Wird immer unterstützt. (insgesamt 32 Bit)
QRhiTexture::BGRA82Vier Komponenten, jeweils 8 Bit (vorzeichenlos und normalisiert). (insgesamt 32 Bit)
QRhiTexture::R83Eine Komponente, vorzeichenlos, normalisiert, 8 Bit. (insgesamt 8 Bit)
QRhiTexture::RG84Zwei Komponenten, vorzeichenlose, normalisierte 8-Bit-Werte. (insgesamt 16 Bit)
QRhiTexture::R165Eine Komponente, vorzeichenlos, normiert, 16 Bit. (insgesamt 16 Bit)
QRhiTexture::RG166Zwei Komponenten, vorzeichenlose, normalisierte 16-Bit-Werte. (insgesamt 32 Bit)
QRhiTexture::RED_OR_ALPHA87Entweder identisch mit R8 oder ein ähnliches Format, bei dem die Komponente je nach ` RedOrAlpha8IsRed` auf den Alpha-Kanal verschoben wurde. (insgesamt 8 Bit)
QRhiTexture::RGBA16F8Vier Komponenten, 16-Bit-Float. (insgesamt 64 Bit)
QRhiTexture::RGBA32F9Vier Komponenten, 32-Bit-Float. (insgesamt 128 Bit)
QRhiTexture::R16F10Eine Komponente, 16-Bit-Float. (insgesamt 16 Bit)
QRhiTexture::R32F11Eine Komponente, 32-Bit-Float. (insgesamt 32 Bit)
QRhiTexture::RGB10A212Vier Komponenten, vorzeichenlose normalisierte 10-Bit-R-, G- und B-Werte, 2-Bit-Alpha. Da es sich um ein gepacktes Format handelt, gilt die native Endianness. Beachten Sie, dass es kein BGR10A2 gibt. Dies liegt daran, dass RGB10A2 bei D3D auf DXGI_FORMAT_R10G10B10A2_UNORM, bei Metal auf MTLPixelFormatRGB10A2Unorm und VK_FORMAT_A2B10G10R10_UNORM_PACK32 bei Vulkan sowie GL_RGB10_A2/GL_RGB/GL_UNSIGNED_INT_2_10_10_10_REV bei OpenGL (ES). Dies ist die einzige universell unterstützte RGB30-Option. Die entsprechenden „ QImage “-Formate sind „ QImage::Format_BGR30 “ und „ QImage::Format_A2BGR30_Premultiplied “ (insgesamt 32 Bit)
QRhiTexture::D162116-Bit-Farbtiefe (normalisierte vorzeichenlose Ganzzahl)
QRhiTexture::D242224-Bit-Farbtiefe (normalisierte vorzeichenlose Ganzzahl)
QRhiTexture::D24S82324-Bit-Farbtiefe (normalisierte vorzeichenlose Ganzzahl), 8-Bit-Stencil
QRhiTexture::D32F2432-Bit-Farbtiefe (32-Bit-Float)
QRhiTexture::D32FS8 (since Qt 6.9)2532-Bit-Farbtiefe (32-Bit-Gleitkommazahl), 8 Bit Stencil, 24 Bit ungenutzt (insgesamt 64 Bit)
QRhiTexture::BC126 
QRhiTexture::BC227 
QRhiTexture::BC328 
QRhiTexture::BC429 
QRhiTexture::BC530 
QRhiTexture::BC6H31 
QRhiTexture::BC732 
QRhiTexture::ETC2_RGB833 
QRhiTexture::ETC2_RGB8A134 
QRhiTexture::ETC2_RGBA835 
QRhiTexture::ASTC_4x436 
QRhiTexture::ASTC_5x437 
QRhiTexture::ASTC_5x538 
QRhiTexture::ASTC_6x539 
QRhiTexture::ASTC_6x640 
QRhiTexture::ASTC_8x541 
QRhiTexture::ASTC_8x642 
QRhiTexture::ASTC_8x843 
QRhiTexture::ASTC_10x544 
QRhiTexture::ASTC_10x645 
QRhiTexture::ASTC_10x846 
QRhiTexture::ASTC_10x1047 
QRhiTexture::ASTC_12x1048 
QRhiTexture::ASTC_12x1249 
QRhiTexture::R8UI (since Qt 6.9)17Eine Komponente, vorzeichenloses 8-Bit. (insgesamt 8 Bit)
QRhiTexture::R32UI (since Qt 6.9)18Eine Komponente, vorzeichenloses 32-Bit. (insgesamt 32 Bit)
QRhiTexture::RG32UI (since Qt 6.9)19Zwei Komponenten, vorzeichenlos, 32 Bit. (insgesamt 64 Bit)
QRhiTexture::RGBA32UI (since Qt 6.9)20Vier Komponenten, vorzeichenlos, 32 Bit. (insgesamt 128 Bit)
QRhiTexture::R8SI (since Qt 6.10)13Eine Komponente, 8-Bit mit Vorzeichen. (insgesamt 8 Bit)
QRhiTexture::R32SI (since Qt 6.10)14Eine Komponente, 32-Bit mit Vorzeichen. (insgesamt 32 Bit)
QRhiTexture::RG32SI (since Qt 6.10)15Zwei Komponenten, 32-Bit mit Vorzeichen. (insgesamt 64 Bit)
QRhiTexture::RGBA32SI (since Qt 6.10)16Vier Komponenten, 32-Bit mit Vorzeichen. (insgesamt 128 Bit)

Dokumentation der Member-Funktionen

int QRhiTexture::arrayRangeLength() const

Gibt die Größe des freigegebenen Array-Bereichs zurück, als „ setArrayRange()“ aufgerufen wurde.

Siehe auch ` setArrayRange()`.

int QRhiTexture::arrayRangeStart() const

Gibt die erste Array-Ebene zurück, als „ setArrayRange()“ aufgerufen wurde.

Siehe auch setArrayRange().

int QRhiTexture::arraySize() const

Gibt die Größe des Textur-Arrays zurück.

Siehe auch „ setArraySize()“.

[pure virtual] bool QRhiTexture::create()

Erstellt die entsprechenden nativen Grafikressourcen. Falls aufgrund eines früheren Aufrufs von `create()` bereits Ressourcen vorhanden sind, für die kein entsprechender Aufruf von ` destroy()` vorliegt, wird zunächst implizit ` destroy()` aufgerufen.

Gibt bei Erfolg ` true ` zurück, bei einem Fehler bei einer Grafikoperation ` false `. Unabhängig vom Rückgabewert ist der Aufruf von ` destroy()` immer sicher.

[virtual] bool QRhiTexture::createFrom(QRhiTexture::NativeTexture src)

Ähnlich wie „ create()“, mit dem Unterschied, dass keine neuen nativen Texturen erstellt werden. Stattdessen werden die durch „ src “ angegebenen nativen Texturressourcen verwendet.

Dies ermöglicht den Import eines vorhandenen nativen Texturobjekts (das je nach Grafik-API zum selben Gerät oder Sharing-Kontext gehören muss) aus einer externen Grafik-Engine.

Gibt „true“ zurück, wenn das angegebene vorhandene native Texturobjekt erfolgreich als nicht-eigene „ QRhiTexture “ verpackt wurde.

Hinweis: „ format()“,„ pixelSize()“, „ sampleCount()“ und „ flags()“ müssen weiterhin korrekt gesetzt sein. Die Übergabe falscher Größen und anderer Werte an „ QRhi::newTexture()“, gefolgt von einem „createFrom()“-Aufruf in der Erwartung, dass das native Texturobjekt allein ausreicht, um solche Werte abzuleiten, ist falsch und führt zu Problemen.

Hinweis: ` QRhiTexture ` übernimmt nicht die Eigentumsrechte am Texturobjekt. ` destroy()` gibt weder das Objekt noch den damit verbundenen Speicher frei.

Das Gegenteil dieses Vorgangs – nämlich die Bereitstellung eines von QRhiTexture erstellten nativen Texturobjekts für eine fremde Engine – ist über nativeTexture() möglich.

Hinweis: Beim Importieren einer 3D-Textur, eines Textur-Array-Objekts oder – bei OpenGL ES – einer externen Textur ist es besonders wichtig, vor dem Aufruf dieser Funktion die entsprechenden Flags (ThreeDimensional, TextureArray, ExternalOES) über ` setFlags()` zu setzen.

int QRhiTexture::depth() const

Gibt die Tiefe für 3D-Texturen zurück.

Siehe auch setDepth().

QRhiTexture::Flags QRhiTexture::flags() const

Gibt die Textur-Flags zurück.

Siehe auch „ setFlags()“.

QRhiTexture::Format QRhiTexture::format() const

Gibt das Texturformat zurück.

Siehe auch „ setFormat()“.

[virtual] QRhiTexture::NativeTexture QRhiTexture::nativeTexture()

Gibt die zugrunde liegenden nativen Ressourcen für diese Textur zurück. Der zurückgegebene Wert ist leer, wenn die Offenlegung der zugrunde liegenden nativen Ressourcen vom Backend nicht unterstützt wird.

Siehe auch ` createFrom()`.

QSize QRhiTexture::pixelSize() const

Gibt die Größe in Pixeln zurück.

Siehe auch ` setPixelSize()`.

[since 6.8] QRhiTexture::ViewFormat QRhiTexture::readViewFormat() const

Gibt das beim Abtasten der Textur verwendete Ansichtsformat zurück. Wird diese Funktion nicht aufgerufen, wird davon ausgegangen, dass das Ansichtsformat mit dem von ` format()` übereinstimmt.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` setReadViewFormat()`.

[override virtual] QRhiResource::Type QRhiTexture::resourceType() const

Implementiert neu: ` QRhiResource::resourceType()` const.

Gibt den Ressourcentyp zurück.

int QRhiTexture::sampleCount() const

Gibt die Anzahl der Samples zurück. Der Wert 1 bedeutet, dass kein Multisample-Antialiasing verwendet wird.

Siehe auch setSampleCount().

void QRhiTexture::setArrayRange(int startIndex, int count)

Normalerweise sind alle Array-Ebenen sichtbar, und es obliegt dem Shader, die Ebene über die dritte Koordinate auszuwählen, die bei der Abtastung von ` sampler2DArray` an die GLSL-Funktion ` texture() ` übergeben wird. Wenn ` QRhi::TextureArrayRange ` als unterstützt gemeldet wird, bewirkt der Aufruf von `setArrayRange()` vor ` create()` oder ` createFrom()`, dass nur der angegebene Bereich ausgewählt wird: ` count ` Elemente, beginnend bei ` startIndex`. Die Shader-Logik kann dann unter Berücksichtigung dieser Tatsache geschrieben werden.

Siehe auch QRhi::TextureArrayRange.

void QRhiTexture::setArraySize(int arraySize)

Legt die Textur „ arraySize “ fest.

Siehe auch ` arraySize()`.

void QRhiTexture::setDepth(int depth)

Legt die „ depth “ für eine 3D-Textur fest.

Siehe auch depth().

void QRhiTexture::setFlags(QRhiTexture::Flags f)

Setzt die Textur-Flags auf „ f “.

Siehe auch flags().

void QRhiTexture::setFormat(QRhiTexture::Format fmt)

Setzt das angeforderte Texturformat auf „ fmt “.

Hinweis: Der festgelegte Wert wird erst beim nächsten Aufruf von ` create()` berücksichtigt, d. h. wenn die zugrunde liegenden Grafikressourcen (neu) erstellt werden. Andernfalls ist die Festlegung eines neuen Werts sinnlos und muss vermieden werden, da dies zu einem inkonsistenten Zustand führen kann.

Siehe auch ` format()`.

[virtual] void QRhiTexture::setNativeLayout(int layout)

Bei einigen Grafik-APIs, wie beispielsweise Vulkan, erfordert die Integration von benutzerdefiniertem Rendering-Code, der die Grafik-API direkt nutzt, besondere Sorgfalt hinsichtlich der Bildlayouts. Diese Funktion ermöglicht es, die erwartete „ layout “ zu übermitteln, in der sich das Bild befindet, das hinter dem „ QRhiTexture “ steht, nachdem die nativen Rendering-Befehle ausgeführt wurden.

Betrachten wir beispielsweise das direkte Rendern in ein VkImage eines „ QRhiTexture “ mit Vulkan in einem Codeblock, der von „ QRhiCommandBuffer::beginExternal()“ und „ QRhiCommandBuffer::endExternal()“ umschlossen ist, gefolgt von der Verwendung des Bildes für das Textur-Sampling in einem auf „ QRhi “ basierenden Render-Durchlauf. Um potenziell fehlerhafte Übergänge im Bildlayout zu vermeiden, kann diese Funktion verwendet werden, um anzugeben, wie das Bildlayout aussehen wird, sobald die in diesem Codeblock aufgezeichneten Befehle abgeschlossen sind.

Der Aufruf dieser Funktion ist nur nach QRhiCommandBuffer::endExternal() und vor einem nachfolgenden QRhiCommandBuffer::beginPass() sinnvoll.

Diese Funktion hat keine Auswirkung bei „ QRhi “-Backends, bei denen die zugrunde liegende Grafik-API kein Konzept von Bildlayouts bereitstellt.

Hinweis: Bei Vulkan ist ` layout ` ein ` VkImageLayout`. Bei Direct 3D 12 ist ` layout ` ein Wert, der sich aus den Bits von ` D3D12_RESOURCE_STATES` zusammensetzt.

void QRhiTexture::setPixelSize(const QSize &sz)

Legt die Texturgröße, angegeben in Pixeln, auf „ sz “ fest.

Hinweis: Der festgelegte Wert wird erst beim nächsten Aufruf von ` create()` berücksichtigt, d. h. wenn die zugrunde liegende Grafikressource (neu) erstellt wird. Andernfalls ist das Festlegen eines neuen Werts sinnlos und muss vermieden werden, da dies zu einem inkonsistenten Zustand führen kann. Dasselbe gilt auch für alle anderen Setter.

Siehe auch pixelSize().

[since 6.8] void QRhiTexture::setReadViewFormat(const QRhiTexture::ViewFormat &fmt)

Legt das Anzeigeformat der Shader-Ressource (bzw. das Format der Ansicht, die für die Texturabtastung verwendet wird) auf „ fmt “ fest. Standardmäßig wird dasselbe Format (und dieselbe sRGB-Einstellung) wie bei der Textur selbst verwendet, sodass diese Funktion in den meisten Fällen nicht aufgerufen werden muss.

Diese Einstellung wird nur berücksichtigt, wenn die Funktion „ QRhi::TextureViewFormat “ als unterstützt gemeldet wird.

Hinweis: Diese Funktionalität wird bereitgestellt, um ein „Casting“ zwischen Nicht-sRGB und sRGB zu ermöglichen, damit die Shader die impliziten sRGB-Konvertierungen entweder durchführen oder unterlassen. Andere Arten des Castings funktionieren möglicherweise oder auch nicht.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` readViewFormat()`.

void QRhiTexture::setSampleCount(int s)

Setzt die Anzahl der Samples auf „ s “.

Siehe auch sampleCount().

[since 6.8] void QRhiTexture::setWriteViewFormat(const QRhiTexture::ViewFormat &fmt)

Legt das Darstellungsformat des Renderziels auf „ fmt “ fest. Standardmäßig wird dasselbe Format (und derselbe sRGB-Farbraum) wie bei der Textur selbst verwendet, sodass diese Funktion in den meisten Fällen nicht aufgerufen werden muss.

Ein häufiger Anwendungsfall für die Angabe eines Schreibansichtsformats ist die Arbeit mit extern bereitgestellten Texturen, die – außerhalb unserer Kontrolle – ein sRGB-Format mit 3D-APIs wie Vulkan oder Direct 3D verwenden, wobei die Rendering-Engine jedoch bereits darauf vorbereitet ist, die Linearisierung und Konvertierung in sRGB am Ende ihrer Shading-Pipeline durchzuführen. In diesem Fall ist beim Rendern in eine solche Textur eine Render-Target-Ansicht (z. B. VkImageView) erwünscht, die dasselbe, jedoch kein sRGB-Format aufweist. (Wenn man z. B. aus einer OpenXR-Implementierung eine Textur im Format VK_FORMAT_R8G8B8A8_SRGB erhält, ist es wahrscheinlich, dass das Rendern in diese Textur über eine VK_FORMAT_R8G8B8A8_UNORM-Ansicht erfolgen sollte, sofern dies von der Pipeline der Render-Engine gefordert wird; in diesem Beispiel würde man diese Funktion mit einem „ ViewFormat “ aufrufen, dessen Format „ QRhiTexture::RGBA8 “ lautet und bei dem „ srgb “ auf „ false “ gesetzt ist).

Diese Einstellung wird nur berücksichtigt, wenn die Funktion „ QRhi::TextureViewFormat “ als unterstützt gemeldet wird.

Hinweis: Diese Funktionalität wird bereitgestellt, um ein „Casting“ zwischen Nicht-sRGB- und sRGB-Farbräumen zu ermöglichen, damit der Shader-Befehl die impliziten sRGB-Konvertierungen entweder nicht oder doch durchführt. Andere Arten des Castings funktionieren möglicherweise oder auch nicht.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` writeViewFormat()`.

[since 6.8] QRhiTexture::ViewFormat QRhiTexture::writeViewFormat() const

Gibt das Ansichtsformat zurück, das beim Schreiben in die Textur und bei der Verwendung mit „image load/store“ verwendet wird. Wird diese Funktion nicht aufgerufen, wird davon ausgegangen, dass das Ansichtsformat mit dem von ` format()` übereinstimmt.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` setWriteViewFormat()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.