이 페이지에서

QRhiTexture Class

텍스처 리소스. 더 보기...

헤더: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
다음부터: Qt 6.6부터
상속: QRhiResource

공개 유형

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 }

공개 함수

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

재구현된 공용 함수

virtual QRhiResource::Type resourceType() const override

상세 설명

QRhiTexture는 VkImage 이나 MTLTexture 와 같은 네이티브 텍스처 객체를 캡슐화합니다.

QRhiTexture 인스턴스는 항상 the QRhi's newTexture() function 를 호출하여 생성됩니다. 이 호출로는 네이티브 그래픽 리소스가 생성되지 않습니다. 리소스를 생성하려면 형식 및 크기와 같은 적절한 옵션을 설정한 후 create()를 호출해야 합니다. 단, 대부분의 경우 이러한 옵션은 newTexture()에 전달된 인자를 기반으로 이미 설정되어 있습니다.

flags 를 올바르게 설정하는 것은 필수적입니다. 그렇지 않으면 기본 QRhi 백엔드 및 그래픽 API에 따라 다양한 오류가 발생할 수 있습니다. 예를 들어, QRhiTextureRenderTarget 를 통해 렌더 패스에서 텍스처로 렌더링될 경우, 텍스처는 RenderTarget 플래그가 설정된 상태로 생성되어야 합니다. 마찬가지로, 텍스처가 read back 될 경우, UsedAsTransferSource 플래그를 미리 설정해야 합니다. 미프맵 텍스처의 경우 ‘ MipMapped ’ 플래그가 설정되어 있어야 합니다. 그 외의 경우도 마찬가지입니다. ` create()`이 성공적으로 완료된 후에는 플래그를 변경할 수 없습니다. 기존 텍스처 객체를 해제하고 변경된 설정으로 새로운 네이티브 텍스처 객체를 생성하려면, 세터 메서드를 호출한 후 ` create()`을 다시 호출해야 합니다. 이 작업은 처리 비용이 상당히 클 수 있습니다.

사용 예

크기가 512x512 픽셀인 2D 텍스처를 생성하고 내용을 모두 녹색으로 설정하려면:

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

일반적인 패턴

create()를 호출하면, 이전에 create()가 성공적으로 호출된 경우 기존 네이티브 리소스가 모두 파기됩니다. 해당 네이티브 리소스가 처리 중인 프레임에서 여전히 사용 중이라면(즉, GPU가 여전히 해당 리소스를 읽을 가능성이 있는 경우), 리소스 파기 작업은 자동으로 연기됩니다. 따라서 이미 존재하는 텍스처의 크기를 안전하게 변경하는 매우 일반적이고 편리한 패턴은 다음과 같습니다. 실제로 이 방법은 내부적으로 기존 네이티브 텍스처 리소스를 삭제하고 완전히 새로운 리소스를 생성하므로, 따라서 반드시 비용이 적게 드는 작업은 아니지만, texture 객체 자체를 파괴하지 않음으로써 다른 데이터 구조(예: QRhiTexture를 참조하는 모든 QShaderResourceBinding)에서 해당 객체에 대한 모든 참조가 유효하게 유지되므로, 다른 대안들보다 더 편리하고 여전히 빠릅니다.

// 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

참고: 이는 호환성 보장이 제한적인 RHI API입니다. 자세한 내용은 QRhi 를 참조하십시오.

QRhiResourceUpdateBatch, QRhi 및 QRhiTextureRenderTarget도 참조하십시오 .

멤버 유형 문서

enum QRhiTexture::Flag
flags QRhiTexture::Flags

텍스처 사용 방식을 지정하는 플래그 값입니다. ` create()` 호출 전에 설정된 플래그를 준수하지 않거나, 사전에 선언되지 않은 방식으로 텍스처를 사용하려고 시도할 경우, 백엔드 및 기본 그래픽 API에 따라 정의되지 않은 동작이 발생하거나 성능이 저하될 수 있습니다.

상수값설명
QRhiTexture::RenderTarget1 << 0QRhiTextureRenderTarget 와 함께 사용될 텍스처입니다.
QRhiTexture::CubeMap1 << 2텍스처는 큐브맵입니다. 이러한 텍스처는 6개의 레이어를 가지며, 각 레이어는 +X, -X, +Y, -Y, +Z, -Z 순서로 각 면을 나타냅니다. 큐브맵 텍스처는 멀티샘플링될 수 없습니다.
QRhiTexture::MipMapped1 << 3이 텍스처에는 밉맵이 있습니다. 적절한 밉 맵 수는 자동으로 계산되며, ` QRhi::mipLevelsForSize()`를 통해 확인할 수도 있습니다. 밉 레벨에 대한 이미지는 업로드된 텍스처에 포함되거나 ` QRhiResourceUpdateBatch::generateMips()`를 통해 생성되어야 합니다. 멀티샘플 텍스처에는 밉맵을 사용할 수 없습니다.
QRhiTexture::sRGB1 << 4sRGB 형식을 사용하십시오.
QRhiTexture::UsedAsTransferSource1 << 5이 텍스처는 텍스처 복사 또는 리드백의 소스로 사용되며, 즉 QRhiResourceUpdateBatch::copyTexture() 또는 QRhiResourceUpdateBatch::readBackTexture()에서 소스로 지정됩니다.
QRhiTexture::UsedWithGenerateMips1 << 6이 텍스처는 QRhiResourceUpdateBatch::generateMips()와 함께 사용될 예정입니다.
QRhiTexture::UsedWithLoadStore1 << 7텍스처가 이미지 로드/저장 작업(예: 컴퓨트 셰이더)에 사용될 예정입니다.
QRhiTexture::UsedAsCompressedAtlas1 << 8텍스처는 압축된 형식을 가지며, 서브 리소스 업로드의 크기가 텍스처 크기와 일치하지 않을 수 있습니다.
QRhiTexture::ExternalOES1 << 9이 텍스처는 OpenGL에서 GL_TEXTURE_EXTERNAL_OES 타깃을 사용해야 합니다. 이 플래그는 다른 그래픽 API에서는 무시됩니다.
QRhiTexture::ThreeDimensional1 << 10이 텍스처는 3D 텍스처입니다. 이러한 텍스처는 너비와 높이에 더해 깊이(depth)를 받는 QRhi::newTexture() 오버로드 함수를 사용하여 생성해야 합니다. 3D 텍스처는 밉맵을 가질 수 있지만 멀티샘플링은 지원되지 않습니다. 3D 텍스처에 렌더링하거나 데이터를 업로드할 때, 렌더 타겟의 색상 어태치먼트 또는 업로드 설명에 지정된 색상 슬라이스( layer )는 [0..depth-1] 범위의 단일 슬라이스를 가리킵니다. 기본 그래픽 API는 런타임에 3D 텍스처를 지원하지 않을 수 있습니다. 지원 여부는 QRhi::ThreeDimensionalTextures 기능으로 표시됩니다.
QRhiTexture::TextureRectangleGL1 << 11이 텍스처는 OpenGL에서 GL_TEXTURE_RECTANGLE 타깃을 사용해야 합니다. 다른 그래픽 API에서는 이 플래그가 무시됩니다. ExternalOES와 마찬가지로, 이 플래그는 플랫폼에서 받은 네이티브 OpenGL 텍스처 객체가 QRhiTexture 로 래핑되어 있고, 플랫폼이 2D가 아닌 텍스처 타깃에 대해서만 텍스처를 제공할 수 있는 플랫폼 API를 다룰 때 유용합니다.
QRhiTexture::TextureArray1 << 12이 텍스처는 텍스처 배열, 즉 2D 텍스처의 동질 배열로 구성된 단일 텍스처 객체입니다. 텍스처 배열은 ` QRhi::newTextureArray()`를 사용하여 생성됩니다. 기본 그래픽 API는 런타임에 텍스처 배열 객체를 지원하지 않을 수 있습니다. 지원 여부는 ` QRhi::TextureArrays ` 기능으로 표시됩니다. 텍스처 배열로 렌더링하거나 데이터를 업로드할 때, 렌더 타겟의 색상 어태치먼트 또는 업로드 설명에 지정된 ` layer `는 배열 내의 단일 요소를 선택합니다.
QRhiTexture::OneDimensional1 << 13이 텍스처는 1차원 텍스처입니다. 이러한 텍스처는 QRhi::newTexture()에 높이(height)와 깊이(depth)를 0으로 전달하여 생성할 수 있습니다. 기본 그래픽 API에 따라 1차원 텍스처에 제한이 있을 수 있다는 점에 유의하십시오. 예를 들어, 1차원 텍스처에 대한 렌더링이나 밉맵 기반 필터링과의 연동이 지원되지 않을 수 있습니다. 이는 QRhi::OneDimensionalTextures 및 QRhi::OneDimensionalTextureMipmaps 기능 플래그로 표시됩니다.
QRhiTexture::UsedAsShadingRateMap1 << 14 

Flags 유형은 QFlags<Flag>에 대한 typedef입니다. 이 유형은 Flag 값들의 OR 조합을 저장합니다.

enum QRhiTexture::Format

텍스처 형식을 지정합니다. ` QRhi::isTextureFormatSupported()`도 참조하십시오. 또한 ` QRhiTexture::sRGB `가 설정된 경우 ` flags()`이 형식을 변경할 수 있다는 점에 유의하십시오.

상수값설명
QRhiTexture::UnknownFormat0유효한 형식이 아닙니다. 이 값은 setFormat()에 전달할 수 없습니다.
QRhiTexture::RGBA814개의 구성 요소, 구성 요소당 부호 없는 정규화된 8비트. 항상 지원됩니다. (총 32비트)
QRhiTexture::BGRA824개의 성분, 각 성분당 부호 없는 정규화된 8비트. (총 32비트)
QRhiTexture::R83구성 요소 1개, 각 구성 요소당 부호 없는 정규화 8비트. (총 8비트)
QRhiTexture::RG842개의 구성 요소, 각 구성 요소당 부호 없는 정규화된 8비트. (총 16비트)
QRhiTexture::R165구성 요소 1개, 부호 없는 정규화된 16비트. (총 16비트)
QRhiTexture::RG1662개 구성 요소, 각 구성 요소당 부호 없는 정규화 16비트. (총 32비트)
QRhiTexture::RED_OR_ALPHA87RedOrAlpha8IsRed 에 따라 R8과 동일하거나, 성분이 알파로 스와즐링된 유사한 형식입니다. (총 8비트)
QRhiTexture::RGBA16F84개 성분, 16비트 부동소수점. (총 64비트)
QRhiTexture::RGBA32F94개 구성 요소, 32비트 부동 소수점. (총 128비트)
QRhiTexture::R16F101개 성분, 16비트 부동소수점. (총 16비트)
QRhiTexture::R32F11구성 요소 1개, 32비트 부동소수점. (총 32비트)
QRhiTexture::RGB10A2124개 구성 요소, 부호 없는 정규화된 10비트 R, G, B 및 2비트 알파. 이는 압축된 형식이므로 네이티브 엔디안성이 적용됩니다. BGR10A2 형식은 없다는 점에 유의하십시오. 이는 RGB10A2가 D3D에서는 DXGI_FORMAT_R10G10B10A2_UNORM, Metal에서는 MTLPixelFormatRGB10A2Unorm, Vulkan에서는 VK_FORMAT_A2B10G10R10_UNORM_PACK32로, OpenGL (ES). 이것이 유일하게 보편적으로 지원되는 RGB30 옵션입니다. 이에 상응하는 QImage 포맷은 QImage::Format_BGR30 및 QImage::Format_A2BGR30_Premultiplied 입니다. (총 32비트)
QRhiTexture::D162116비트 심도 (정규화된 부호 없는 정수)
QRhiTexture::D242224비트 색심도 (정규화된 부호 없는 정수)
QRhiTexture::D24S82324비트 색심도 (정규화된 부호 없는 정수), 8비트 스텐실
QRhiTexture::D32F2432비트 심도 (32비트 부동 소수점)
QRhiTexture::D32FS8 (since Qt 6.9)2532비트 색상 심도(32비트 부동소수점), 8비트 스텐실, 24비트 미사용 (총 64비트)
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)17하나의 구성 요소, 부호 없는 8비트. (총 8비트)
QRhiTexture::R32UI (since Qt 6.9)18구성 요소 1개, 부호 없는 32비트. (총 32비트)
QRhiTexture::RG32UI (since Qt 6.9)19두 개의 구성 요소, 부호 없는 32비트. (총 64비트)
QRhiTexture::RGBA32UI (since Qt 6.9)204개 구성 요소, 부호 없는 32비트. (총 128비트)
QRhiTexture::R8SI (since Qt 6.10)13구성 요소 1개, 부호 있는 8비트. (총 8비트)
QRhiTexture::R32SI (since Qt 6.10)14구성 요소 1개, 부호 있는 32비트. (총 32비트)
QRhiTexture::RG32SI (since Qt 6.10)15두 구성 요소, 부호 있는 32비트. (총 64비트)
QRhiTexture::RGBA32SI (since Qt 6.10)164개의 구성 요소, 부호 있는 32비트. (총 128비트)

멤버 함수 설명서

int QRhiTexture::arrayRangeLength() const

setArrayRange()가 호출되었을 때 노출된 배열 범위의 크기를 반환합니다.

setArrayRange()도 참조하십시오 .

int QRhiTexture::arrayRangeStart() const

setArrayRange()가 호출되었을 때의 첫 번째 배열 레이어를 반환합니다.

setArrayRange()도 참조하십시오 .

int QRhiTexture::arraySize() const

텍스처 배열의 크기를 반환합니다.

setArraySize()도 참조하십시오 .

[pure virtual] bool QRhiTexture::create()

해당 네이티브 그래픽 리소스를 생성합니다. 이전에 destroy() 호출 없이 create()를 호출하여 이미 리소스가 존재하는 경우, 먼저 destroy()가 암시적으로 호출됩니다.

성공 시 true 를 반환하고, 그래픽 작업이 실패한 경우 false 를 반환합니다. 반환 값과 관계없이 destroy()를 호출하는 것은 항상 안전합니다.

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

create()와 유사하지만, 새로운 네이티브 텍스처가 생성되지 않는다는 점이 다릅니다. 대신, src 로 지정된 네이티브 텍스처 리소스가 사용됩니다.

이를 통해 외부 그래픽 엔진에서 기존 네이티브 텍스처 객체(그래픽 API에 따라 동일한 디바이스 또는 공유 컨텍스트에 속해야 함)를 가져올 수 있습니다.

지정된 기존 네이티브 텍스처 객체가 비소유형 QRhiTexture 로 성공적으로 래핑된 경우 true를 반환합니다.

참고: format(), pixelSize(), sampleCount() 및 flags()는 여전히 올바르게 설정되어야 합니다. QRhi::newTexture()에 잘못된 크기 및 기타 값을 전달한 다음, 네이티브 텍스처 객체만으로도 이러한 값을 추론할 수 있을 것이라고 기대하며 createFrom()을 호출하는 것은 잘못된 방법 이며 문제를 야기할 수 있습니다.

참고: ` QRhiTexture `는 텍스처 객체의 소유권을 인수하지 않습니다. ` destroy()`는 해당 객체나 관련 메모리를 해제하지 않습니다.

이 작업의 반대, 즉 QRhiTexture 로 생성된 네이티브 텍스처 객체를 외부 엔진에 노출시키는 것은 nativeTexture()을 통해 가능합니다.

참고: 3D 텍스처, 텍스처 배열 객체 또는 OpenGL ES를 사용하는경우 외부 텍스처를 임포트할때는 , 이 함수를 호출하기 전에 setFlags()를 통해 해당 플래그(ThreeDimensional, TextureArray, ExternalOES)를 설정하는 것이 특히 중요합니다.

int QRhiTexture::depth() const

3D 텍스처의 깊이를 반환합니다.

setDepth()도 참조하십시오 .

QRhiTexture::Flags QRhiTexture::flags() const

텍스처 플래그를 반환합니다.

setFlags()도 참조하십시오 .

QRhiTexture::Format QRhiTexture::format() const

텍스처 형식을 반환합니다.

setFormat()도 참조하십시오 .

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

이 텍스처의 기본 네이티브 리소스를 반환합니다. 백엔드에서 기본 네이티브 리소스 노출을 지원하지 않는 경우, 반환 값은 비어 있습니다.

createFrom()도 참조하십시오 .

QSize QRhiTexture::pixelSize() const

크기를 픽셀 단위로 반환합니다.

setPixelSize()도 참조하십시오 .

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

텍스처 샘플링 시 사용되는 뷰 포맷을 반환합니다. 이 함수가 호출되지 않으면 뷰 포맷은 ` format()`와 동일한 것으로 간주됩니다.

이 함수는 Qt 6.8에서 도입되었습니다.

setReadViewFormat()도 참조하십시오 .

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

QRhiResource::resourceType() const를 재구현합니다.

리소스 유형을 반환합니다.

int QRhiTexture::sampleCount() const

샘플 수를 반환합니다. 1은 멀티샘플 앤티앨리어싱이 적용되지 않음을 의미합니다.

setSampleCount()도 참조하십시오 .

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

일반적으로 모든 배열 레이어가 노출되며, sampler2DArray 를 샘플링할 때 texture() GLSL 함수에 전달되는 세 번째 좌표를 통해 레이어를 선택하는 것은 셰이더의 몫입니다. QRhi::TextureArrayRange 가 지원되는 것으로 보고된 경우, create() 또는 createFrom()을 호출하기 전에 setArrayRange()를 호출하면 startIndex 부터 시작하는 count 개의 요소로 구성된 지정된 범위만 선택하도록 요청됩니다. 셰이더 로직은 이를 고려하여 작성할 수 있습니다.

QRhi::TextureArrayRange도 참조하십시오 .

void QRhiTexture::setArraySize(int arraySize)

arraySize 의 텍스처를 설정합니다.

arraySize()도 참조하십시오 .

void QRhiTexture::setDepth(int depth)

3D 텍스처의 depth 을 설정합니다.

depth()도 참조하십시오 .

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

텍스처 플래그를 f 로 설정합니다.

flags()도 참조하십시오 .

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

요청된 텍스처 형식을 ` fmt`로 설정합니다.

참고: 설정된값은 다음 create() 호출 시, 즉 기본 그래픽 리소스가 (재)생성될 때만 반영됩니다. 그 외의 경우에는 새 값을 설정해도 무의미하며, 상태 불일치를 초래할 수 있으므로 피해야 합니다.

format()도 참조하십시오 .

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

Vulkan과 같은 일부 그래픽 API의 경우, 해당 그래픽 API를 직접 사용하는 사용자 정의 렌더링 코드를 통합할 때 이미지 레이아웃에 각별한 주의를 기울여야 합니다. 이 함수를 사용하면 네이티브 렌더링 명령이 실행된 후 QRhiTexture 에 연결된 이미지가 layout 에 있는 예상 레이아웃을 전달할 수 있습니다.

예를 들어, QRhiCommandBuffer::beginExternal()과 QRhiCommandBuffer::endExternal()로 둘러싸인 코드 블록 내에서 Vulkan을 사용하여 QRhiTexture 의 VkImage에 직접 렌더링한 후, QRhi 기반 렌더 패스에서 텍스처 샘플링을 위해 해당 이미지를 사용하는 경우를 생각해 봅시다. 잠재적으로 잘못될 수 있는 이미지 레이아웃 전환을 방지하기 위해, 이 함수를 사용하여 해당 코드 블록에 기록된 명령이 완료된 후 이미지 레이아웃이 어떻게 될지 지정할 수 있습니다.

이 함수를 호출하는 것은 QRhiCommandBuffer::endExternal() 실행 후, 다음 QRhiCommandBuffer::beginPass() 실행 전에만 의미가 있습니다.

기본 그래픽 API가 이미지 레이아웃 개념을 노출하지 않는 QRhi 백엔드에서는 이 함수가 아무런 효과를 발휘하지 않습니다.

참고: Vulkan의경우 ` layout `은 ` VkImageLayout`입니다. Direct 3D 12의 경우 ` layout `는 ` D3D12_RESOURCE_STATES`의 비트 조합으로 구성된 값입니다.

void QRhiTexture::setPixelSize(const QSize &sz)

텍스처 크기를 픽셀 단위로 지정하여 ` sz`에 설정합니다.

참고: 설정된값은 다음 create() 호출 시, 즉 기본 그래픽 리소스가 (재)생성될 때만 반영됩니다. 그 외의 경우 새 값을 설정하는 것은 무의미하며, 상태 불일치를 초래할 수 있으므로 피해야 합니다. 이는 다른 모든 설정 메서드에도 동일하게 적용됩니다.

pixelSize()도 참조하십시오 .

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

셰이더 리소스 뷰 형식(또는 텍스처 샘플링에 사용되는 뷰의 형식)을 ‘ fmt ’로 설정합니다. 기본적으로 텍스처 자체와 동일한 형식(및 sRGB 설정)이 사용되므로, 대부분의 경우 이 함수를 호출할 필요가 없습니다.

이 설정은 QRhi::TextureViewFormat 기능이 지원된다고 보고된 경우에만 반영됩니다.

참고: 이 기능은 셰이더가 암시적 sRGB 변환을 수행하거나 수행하지 않도록 하기 위해, 비 sRGB와 sRGB 간의 “캐스팅”을 허용하기 위해 제공됩니다. 다른 유형의 캐스팅은 작동할 수도 있고 그렇지 않을 수도 있습니다.

이 함수는 Qt 6.8에서 도입되었습니다.

readViewFormat()도 참조하십시오 .

void QRhiTexture::setSampleCount(int s)

샘플 수를 s 로 설정합니다.

sampleCount()도 참조하십시오 .

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

렌더 타겟 뷰 형식을 fmt 로 설정합니다. 기본적으로 텍스처 자체와 동일한 형식(및 sRGB 설정)이 사용되므로, 대부분의 경우 이 함수를 호출할 필요가 없습니다.

쓰기 뷰 형식을 지정하는 일반적인 사용 사례 중 하나는, 우리 측에서 제어할 수 없는 외부에서 제공된 텍스처를 처리할 때입니다. 이러한 텍스처는 Vulkan이나 Direct 3D와 같은 3D API에서 sRGB 형식을 사용하지만, 렌더링 엔진은 셰이딩 파이프라인의 마지막 단계에서 선형화 및 sRGB 변환을 처리할 준비가 이미 되어 있는 경우입니다. 이 경우, 해당 텍스처로 렌더링할 때 필요한 것은 sRGB 형식이 아닌, 텍스처와 동일한 형식을 가진 렌더 타겟 뷰(예: VkImageView)입니다. (예를 들어, OpenXR 구현체에서 VK_FORMAT_R8G8B8A8_SRGB 텍스처를 얻는 경우, 렌더링 엔진의 파이프라인이 요구하는 경우, 해당 텍스처로 렌더링할 때는 VK_FORMAT_R8G8B8A8_UNORM 뷰를 사용해야 할 가능성이 높습니다. 이 예시에서는 형식이 QRhiTexture::RGBA8 이고 srgb 가 false 로 설정된 ViewFormat 를 사용하여 이 함수를 호출하게 됩니다.)

이 설정은 QRhi::TextureViewFormat 기능이 지원되는 것으로 보고된 경우에만 반영됩니다.

참고: 이 기능은 셰이더 작성 시 암시적인 sRGB 변환이 수행되지 않도록 하거나 수행되도록 하기 위해, 비-sRGB와 sRGB 간의 “캐스팅”을 허용하기 위해 제공됩니다. 다른 유형의 캐스팅은 작동할 수도 있고 작동하지 않을 수도 있습니다.

이 함수는 Qt 6.8에서 도입되었습니다.

writeViewFormat()도 참조하십시오 .

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

텍스처에 쓰기를 수행하거나 이미지 로드/저장 시 사용되는 뷰 형식을 반환합니다. 이 함수가 호출되지 않으면 뷰 형식은 format()과 동일한 것으로 간주됩니다.

이 함수는 Qt 6.8에서 도입되었습니다.

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.