QQuickWindow::GraphicsStateInfo Struct
struct QQuickWindow::GraphicsStateInfobeginExternalCommands() 호출 시점의 RHI 그래픽 상태 중 일부를 설명합니다. 더 보기...
공개 변수
| int | currentFrameSlot |
| int | framesInFlight |
멤버 변수 문서
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 순서로 증가하다가 다시 0으로 돌아가는 값)를 파악해야 합니다. 전자는 ` framesInFlight ` 변수를 통해 노출됩니다. 후자인 현재 인덱스는 이 값입니다.
이러한 값을 실제로 사용하는 예시는 {씬 그래프 - QML 기반 Vulkan} 및 {씬 그래프 - Vulkan 텍스처 임포트} 예제를 참조하십시오.
int GraphicsStateInfo::framesInFlight
이 변수는 비행 중에 유지되는 최대 프레임 수를 저장합니다.
자세한 설명은 currentFrameSlot 을 참조하십시오.
© 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.