QRhiColorAttachment Class

렌더링 대상의 단일 색상 어태치먼트를 설명합니다. 더 보기...

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

공용 함수

QRhiColorAttachment()
QRhiColorAttachment(QRhiRenderBuffer *renderBuffer)
QRhiColorAttachment(QRhiTexture *texture)
int layer() const
int level() const
(since 6.7) int multiViewCount() const
QRhiRenderBuffer *renderBuffer() const
int resolveLayer() const
int resolveLevel() const
QRhiTexture *resolveTexture() const
void setLayer(int layer)
void setLevel(int level)
(since 6.7) void setMultiViewCount(int count)
void setRenderBuffer(QRhiRenderBuffer *rb)
void setResolveLayer(int layer)
void setResolveLevel(int level)
void setResolveTexture(QRhiTexture *tex)
void setTexture(QRhiTexture *tex)
QRhiTexture *texture() const

자세한 설명

색상 어태치먼트는 QRhiTexture 또는 QRhiRenderBuffer 입니다. 전자의 경우, 즉 texture()가 설정된 경우 대부분의 경우 사용됩니다. QRhiColorAttachment는 일반적으로 QRhiTextureRenderTargetDescription 와 함께 사용됩니다.

참고: texture()와 renderBuffer()는 둘 다 설정할 수 없습니다(동시에 null이 아니어야 함).

대신 renderBuffer 을 설정하는 것은 멀티샘플링이 필요한 경우에만 권장됩니다. 멀티샘플 텍스처를 지원하지 않지만 멀티샘플 렌더버퍼를 지원하는 OpenGL ES 3.0에서 실행하는 경우와 같이 전자는 더 많은 런타임 구성에서 사용할 수 있으므로 실제로는 QRhi::MultisampleTexture 보다는 QRhi::MultisampleRenderBuffer 을 사용하는 것이 더 나은 선택입니다.

멀티샘플이 아닌 텍스처를 타깃팅할 때 layer() 및 level()은 타깃팅 레이어(큐브맵의 경우 얼굴 인덱스 0-5 )와 밉 레벨을 나타냅니다. 3D 텍스처의 경우 layer()는 렌더링할 슬라이스(3D 텍스처 내의 2D 이미지 하나)를 지정합니다. 텍스처 배열의 경우 layer()는 배열 인덱스입니다.

texture() 또는 renderBuffer()가 다중 샘플인 경우 resolveTexture()를 선택적으로 설정할 수 있습니다. 설정하면 렌더링 패스가 끝날 때 샘플이 해당(멀티샘플이 아닌) 텍스처로 자동 해상도 조정됩니다. 멀티샘플 렌더버퍼로 렌더링할 때 멀티샘플이 아닌 콘텐츠를 렌더링할 수 있는 유일한 방법입니다. 멀티샘플 텍스처는 셰이더에서 샘플링을 허용하므로 이 옵션은 하나의 옵션일 뿐입니다.

참고: 리졸브가 활성화되면 멀티샘플 데이터가 전혀 출력되지 않을 수 있습니다. 즉, 멀티샘플 texture()은 resolveTexture()이 설정된 경우 샘플링을 위해 셰이더와 함께 나중에 사용해서는 안 됩니다.

참고: 이 API는 호환성이 제한적으로 보장되는 RHI API이며, 자세한 내용은 QRhi 을 참조하세요.

QRhiTextureRenderTargetDescription참조하세요 .

멤버 함수 문서

[constexpr noexcept] QRhiColorAttachment::QRhiColorAttachment()

빈 색상 첨부 파일 설명을 작성합니다.

QRhiColorAttachment::QRhiColorAttachment(QRhiRenderBuffer *renderBuffer)

renderBuffer 을 연결된 색상 버퍼로 지정하는 색상 첨부 설명을 작성합니다.

QRhiColorAttachment::QRhiColorAttachment(QRhiTexture *texture)

texture 을 연결된 색상 버퍼로 지정하는 색상 첨부 설명을 작성합니다.

int QRhiColorAttachment::layer() const

레이어 인덱스(큐브맵 면 또는 배열 레이어)를 반환합니다. 기본값은 0입니다.

setLayer()도 참조하세요 .

int QRhiColorAttachment::level() const

밉 레벨을 반환합니다. 기본값은 0입니다.

setLevel()도 참조하십시오 .

[since 6.7] int QRhiColorAttachment::multiViewCount() const

현재 설정된 뷰 수를 반환합니다. 기본값은 0으로, 이 색이 첨부된 렌더 타깃이 멀티뷰 렌더링에 사용되지 않음을 나타냅니다.

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

setMultiViewCount()도 참조하십시오 .

QRhiRenderBuffer *QRhiColorAttachment::renderBuffer() const

이 첨부 설명이 참조하는 렌더버퍼를 반환하거나, 렌더버퍼가 없는 경우 nullptr 를 반환합니다.

실제로 멀티샘플 color 렌더버퍼를 통해 멀티샘플 렌더링을 설정한 다음 렌더 패스가 끝날 때 멀티샘플이 아닌 텍스처로 해결되는 경우 QRhiRenderBufferQRhiColorAttachment 을 연결하는 것이 가장 적합합니다.

setRenderBuffer()도 참조하세요 .

int QRhiColorAttachment::resolveLayer() const

현재 설정된 해상도 텍스처 레이어를 반환합니다. 기본값은 0입니다.

setResolveLayer()도 참조하세요 .

int QRhiColorAttachment::resolveLevel() const

현재 설정된 해상도 텍스처 밉 레벨을 반환합니다. 기본값은 0입니다.

setResolveLevel()도 참조하세요 .

QRhiTexture *QRhiColorAttachment::resolveTexture() const

이 첨부 파일 설명이 참조하는 리졸브 텍스처를 반환하거나, 없는 경우 nullptr 을 반환합니다.

어태치먼트가 멀티샘플 텍스처 또는 렌더버퍼를 참조하는 경우 null이 아닌 리졸브 텍스처를 설정할 수 있습니다. 그러면 resolveTexture()의 QRhiTexture 는 크기가 같지만 샘플 수가 1인 비멀티샘플 2D 텍스처(또는 텍스처 배열)가 됩니다. 멀티샘플 콘텐츠는 각 렌더링 패스가 끝날 때 이 텍스처로 자동 해결됩니다.

setResolveTexture()도 참조하세요 .

void QRhiColorAttachment::setLayer(int layer)

layer 인덱스를 설정합니다.

layer()도 참조하세요 .

void QRhiColorAttachment::setLevel(int level)

밉을 설정합니다 level.

level()도 참조하세요 .

[since 6.7] void QRhiColorAttachment::setMultiViewCount(int count)

보기를 설정합니다 count. 값을 1보다 크게 설정하면 이 색상이 첨부된 렌더링 대상이 멀티뷰 렌더링에 사용됨을 나타냅니다. 기본값은 0입니다. 2보다 작은 값은 멀티뷰 렌더링을 사용하지 않음을 나타냅니다.

count2 이상으로 설정된 경우 색상 어태치먼트는 2D 텍스처 배열과 연결되어야 합니다. layer() 및 multiViewCount()는 멀티뷰 렌더링 중에 타깃이 되는 텍스처 배열 요소의 범위를 함께 정의합니다.

예를 들어 layer0 이고 multiViewCount2 인 경우 텍스처 배열에는 2개 이상의 요소가 있어야 하며 멀티뷰 렌더링은 요소 0과 1을 대상으로 합니다. 셰이더의 gl_ViewIndex 변수의 값이 0 또는 1 인 경우 0 보기는 텍스처 배열 요소 0 에, 1 보기는 배열 요소 1 에 해당합니다.

참고: count 을 1보다 크게 설정하고, 텍스처 배열을 texture()로 사용하고, 이 색상이 첨부된 QRhiTextureRenderTarget 에서 beginPass()를 호출하면 전체 렌더링 패스에 대해 멀티뷰 렌더링이 수행됩니다. multiViewCount()는 멀티뷰 렌더링을 원하지 않는 한 설정해서는 안 됩니다. 2D 텍스처 배열 이외의 텍스처 유형에는 멀티뷰를 사용할 수 없습니다. (그래픽 API 및 백엔드에 따라 3D 텍스처가 작동할 수 있지만, 애플리케이션은 이에 의존하지 말고 멀티뷰 렌더링의 렌더링 대상으로 2D 텍스처 배열만 사용하는 것이 좋습니다).

멀티뷰 렌더링에 대한 자세한 내용은 GL_OVR_multiview를 참조하십시오. Qt OpenGL(ES)에서 실행하는 경우 GL_OVR_multiview2도 필요하다는 점에 유의하세요.

멀티뷰 렌더링은 isFeatureSupported()에서 MultiView 기능이 지원되는 것으로 보고된 경우에만 사용할 수 있습니다.

참고: 이식성을 위해 일부 그래픽 API의 멀티뷰 렌더링에 존재하는 제한 사항에 유의하세요. 멀티뷰 렌더 패스는 GL_OVR_multiview가 지원되지 않는 것으로 선언한 기능에 의존하지 않는 것이 좋습니다. 한 가지 예외는 gl_ViewIndex: 에 따라 gl_Position 이외의 셰이더 스테이지 출력입니다. QRhiGL_OVR_multiview2 도 존재하지 않으면 멀티뷰를 지원되는 것으로 보고하지 않으므로 (OpenGL을 사용하더라도) 신뢰할 수 있습니다.

참고: 일부 그래픽 API의 일부 구현에서는 멀티뷰 렌더링이 허용될 수 있지만 테셀레이션 또는 지오메트리 셰이더와 함께 멀티뷰 렌더링은 지원되지 않습니다.

이 기능은 Qt 6.7에 도입되었습니다.

multiViewCount()도 참조하세요 .

void QRhiColorAttachment::setRenderBuffer(QRhiRenderBuffer *rb)

렌더버퍼를 설정합니다 rb.

참고: texture()와 renderBuffer()는 둘 다 설정할 수 없습니다(동시에 null이 아니어야 함).

renderBuffer()도 참조하세요 .

void QRhiColorAttachment::setResolveLayer(int layer)

사용할 해상도 텍스처 layer 를 설정합니다.

resolveLayer()도 참조하세요 .

void QRhiColorAttachment::setResolveLevel(int level)

사용할 해상도 텍스처 밉 level 을 설정합니다.

resolveLevel()도 참조하세요 .

void QRhiColorAttachment::setResolveTexture(QRhiTexture *tex)

해상도 텍스처를 설정합니다 tex.

tex 는 2D 텍스처 또는 2D 텍스처 배열이 될 것으로 예상됩니다. 두 경우 모두 tex 의 단일 레이어(배열 요소)의 단일 밉 레벨을 대상으로 합니다. 밉 레벨과 배열 레이어는 resolveLevel() 및 resolveLayer()로 지정됩니다.

예외는 multiview: 색상 어태치먼트가 텍스처 배열과 연결되어 있고 다중 보기가 활성화된 경우 모든 보기에 대해 충분한 요소가 있는 텍스처 배열이어야 합니다. 이 경우 뷰에 해당하는 모든 요소가 자동으로 해결되며, 동작은 다음 의사 코드와 유사합니다:

for (i = 0; i < multiViewCount(); ++i)
    resolve texture's layer() + i into resolveTexture's resolveLayer() + i

멀티샘플 텍스처가 아닌 텍스처를 렌더 패스 마지막에 자동으로 멀티샘플 텍스처 또는 렌더버퍼를 해결하도록 설정하면 멀티샘플 텍스처로 작업하는 것보다(텍스처 해결을 설정하지 않는 것보다) 멀티샘플 텍스처에서만 작동하는 전용 조각 셰이더(sampler2DMS, texelFetch, 등)를 작성할 필요가 없고 오히려 애초에 멀티샘플링되지 않은 첨부 파일의 텍스처와 동일한 셰이더를 사용할 수 있으므로 선호되는 경우가 종종 있습니다. 이를 위해서는 추가 리소스(비멀티샘플 tex)가 필요합니다.

resolveTexture()도 참조하세요 .

void QRhiColorAttachment::setTexture(QRhiTexture *tex)

텍스처를 설정합니다 tex.

참고: texture()와 renderBuffer()는 둘 다 설정할 수 없습니다(동시에 null이 아니어야 함).

texture()도 참조하세요 .

QRhiTexture *QRhiColorAttachment::texture() const

이 첨부 파일 설명이 참조하는 텍스처를 반환하거나 텍스처가 없는 경우 nullptr 을 반환합니다.

setTexture()도 참조하세요 .

© 2025 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.