GraphicsStateInfo Struct

struct QQuickWindow::GraphicsStateInfo

beginExternalCommands() 호출 시점에 RHI의 그래픽 상태 중 일부를 설명합니다. 더 보기...

공용 변수

상세 설명

멤버 변수 문서

int GraphicsStateInfo::currentFrameSlot

이 변수는 프레임을 기록하는 동안 현재 프레임 슬롯 인덱스를 유지합니다.

시나리오 그래프가 Vulkan이나 Metal과 같은 하위 레벨 3D API로 렌더링될 때, 새 프레임을 시작하고 CPU가 이미 GPU보다 일정 프레임 앞서 있는 것을 발견할 때마다 (프레임 번호 current - FramesInFlight 에 제출된 명령 버퍼가 아직 완료되지 않았기 때문에) 블로킹을 보장하는 것은 Qt의 책임입니다. OpenGL 또는 Direct 3D 11과 같은 다른 그래픽 API의 경우 이 수준의 제어는 API 클라이언트에 노출되지 않고 그래픽 API 구현에서 처리합니다.

즉, 버퍼와 같은 리소스의 적절한 이중(또는 삼중) 버퍼링은 그래픽 API 클라이언트가 관리해야 한다는 의미이기도 합니다. 가장 일반적으로 프레임 간에 데이터가 변경되는 균일 버퍼는 다음 프레임을 녹화하기 시작할 때 프레임이 여전히 활성 상태("비행 중")일 수 있으므로 프레임을 제출할 때 단순히 내용을 변경할 수 없습니다. 파이프라인이 멈추는 것을 방지하려면 내부에 여러 버퍼(및 메모리 할당)를 두어 이러한 리소스에 대해 최소한 이중 버퍼 체계를 구현하는 것이 한 가지 방법입니다.

Vulkan과 같은 그래픽 API로 직접 렌더링을 수행하는 애플리케이션은 Qt 렌더링 엔진의 프레임 제출 프로세스와 호환되는 방식으로 자체 그래픽 리소스에 대해 유사한 이중 또는 삼중 버퍼링을 수행하고자 할 수 있습니다. 이를 위해서는 최대 인플라이트 프레임 수(일반적으로 2 또는 3)와 현재 프레임 슬롯 인덱스(0, 1, ..., FramesInFlight-1로 실행되는 숫자)의 값을 파악한 다음 래핑하는 작업이 필요합니다. 전자는 framesInFlight 변수에 노출됩니다. 후자인 현재 인덱스는 이 값입니다.

이 값을 실제로 사용하는 예제는 {Scene Graph - Vulkan Under QML} 및 {Scene Graph - Vulkan 텍스처 임포트} 예제를 참조하세요.

int GraphicsStateInfo::framesInFlight

이 변수는 비행 중 유지되는 최대 프레임 수를 보유합니다.

자세한 설명은 currentFrameSlot 을 참조하세요.

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