QRhiColorAttachment 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부터 |
공개 함수
| 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 을 설정하는 것이 권장됩니다. 실제로는 QRhi::MultisampleTexture 보다 QRhi::MultisampleRenderBuffer 을 사용하는 것이 더 나은 선택입니다. 전자는 더 많은 런타임 구성에서 사용할 수 있기 때문입니다(예: 멀티샘플 텍스처를 지원하지 않지만 멀티샘플 렌더 버퍼를 지원하는 OpenGL ES 3.0에서 실행할 때).
멀티샘플링이 아닌 텍스처를 대상으로 할 때, ` layer()` 및 ` level()`는 대상 레이어(큐브맵의 경우 면 인덱스 ` 0-5 `)와 밉 레벨을 나타냅니다. 3D 텍스처의 경우 ` layer()`는 렌더링할 슬라이스(3D 텍스처 내의 하나의 2D 이미지)를 지정합니다. 텍스처 배열의 경우 ` layer()`는 배열 인덱스입니다.
texture() 또는 renderBuffer()가 멀티샘플인 경우, resolveTexture()를 선택적으로 설정할 수 있습니다. 이 값이 설정되면, 렌더링 패스가 끝날 때 샘플이 해당 (비멀티샘플) 텍스처로 자동으로 해결됩니다. 멀티샘플 렌더버퍼로 렌더링할 때, 이 방법이 해당 버퍼에서 해결된 비멀티샘플 콘텐츠를 추출할 수 있는 유일한 방법입니다. 멀티샘플 텍스처는 셰이더 내에서 샘플링이 가능하므로, 이 기능은 해당 텍스처에 대한 하나의 옵션에 불과합니다.
참고: 해상도 처리가 활성화된경우 , 멀티샘플 데이터가 전혀 출력되지 않을 수 있습니다. 즉, resolveTexture()이 설정된 상태에서는 이후 셰이더에서 샘플링을 위해 멀티샘플 texture()을 사용해서는 안 됩니다.
참고: 이는 호환성 보장이 제한된 RHI API입니다. 자세한 내용은 QRhi 를 참조하십시오.
QRhiTextureRenderTargetDescription도 참조하십시오 .
멤버 함수 설명서
[constexpr noexcept default] 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 `를 반환합니다.
실제로 QRhiRenderBuffer 를 QRhiColorAttachment 에 연결하는 것은, 멀티샘플 color 렌더 버퍼를 통해 멀티샘플 렌더링을 설정하고, 렌더 패스가 끝날 때 이를 비멀티샘플 텍스처로 변환할 때 가장 적합합니다.
setRenderBuffer()도 참조하십시오 .
int QRhiColorAttachment::resolveLayer() const
현재 설정된 해상도 텍스처 레이어를 반환합니다. 기본값은 0입니다.
setResolveLayer()도 참조하십시오 .
int QRhiColorAttachment::resolveLevel() const
현재 설정된 텍스처 미프 레벨을 반환합니다. 기본값은 0입니다.
setResolveLevel()도 참조하십시오 .
QRhiTexture *QRhiColorAttachment::resolveTexture() const
이 어태치먼트 설명이 참조하는 리졸브 텍스처를 반환하며, 참조하는 텍스처가 없는 경우 ` nullptr `를 반환합니다.
부착물이 멀티샘플 텍스처나 렌더 버퍼를 참조하는 경우, null이 아닌 resolve 텍스처를 설정할 수 있습니다. 이 경우 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보다 작은 값은 멀티뷰 렌더링이 없음을 나타냅니다.
count 가 2 이상으로 설정된 경우, 색상 어태치먼트는 2D 텍스처 배열과 연결되어야 합니다. layer() 및 multiViewCount()는 함께 멀티뷰 렌더링 중에 대상이 되는 텍스처 배열 요소의 범위를 정의합니다.
예를 들어, layer 이 0 이고 multiViewCount 이 2 인 경우, 텍스처 배열은 2개(또는 그 이상)의 요소를 가져야 하며, 멀티뷰 렌더링은 요소 0과 1을 대상으로 합니다. 이때 셰이더의 gl_ViewIndex 변수의 값은 0 또는 1 가 되며, 여기서 view 0 는 텍스처 배열 요소 0 에, view 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 이외의 셰이더 스테이지 출력입니다. QRhi 는 GL_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 tex 는 2D 텍스처 또는 2D 텍스처 배열이어야 합니다. 두 경우 모두, resolve는 의 단일 레이어(배열 요소)에 속한 단일 밉 레벨을 대상으로 합니다. 밉 레벨과 배열 레이어는 () 및 () 함수를 통해 지정됩니다. resolveLevel resolveLayer
단, multiview 의 경우는 예외입니다. 컬러 어태치먼트가 텍스처 배열과 연결되어 있고 멀티뷰가 활성화된 경우, resolve 텍스처 역시 모든 뷰를 처리할 수 있는 충분한 요소를 가진 텍스처 배열이어야 합니다. 이 경우 뷰에 해당하는 모든 요소가 자동으로 해결되며, 이 동작은 다음의 의사 코드와 유사합니다:
for (i = 0; i < multiViewCount(); ++i)
resolve texture's layer() + i into resolveTexture's resolveLayer() + i렌더 패스 종료 시점에 멀티샘플 텍스처나 렌더 버퍼를 자동으로 해결하도록 비멀티샘플 텍스처를 설정하는 것은, 멀티샘플 텍스처를 직접 다루는 것(그리고 resolve 텍스처를 설정하지 않는 것)보다 종종 더 바람직합니다. 이는 멀티샘플 텍스처 전용으로 작동하는 별도의 프래그먼트 셰이더(sampler2DMS, texelFetch, 등)을 위해 전용 프래그먼트 셰이더를 작성할 필요가 없으며, 애초에 어태치먼트의 텍스처가 멀티샘플이 아닌 경우와 마찬가지로 동일한 셰이더를 사용할 수 있게 해주기 때문입니다. 다만, 이를 위해서는 추가 리소스(비멀티샘플 tex)가 소요됩니다.
resolveTexture()도 참조하십시오 .
void QRhiColorAttachment::setTexture(QRhiTexture *tex)
tex 텍스처를 설정합니다.
참고: ` texture()`과 ` renderBuffer()`을 동시에 설정할 수 없습니다(동시에 null이 아닐 수 없습니다).
texture()도 참조하십시오 .
QRhiTexture *QRhiColorAttachment::texture() const
이 어태치먼트 설명이 참조하는 텍스처를 반환하며, 텍스처가 없는 경우에는 ` nullptr `를 반환합니다.
setTexture()도 참조하십시오 .
© 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.