이 페이지에서

QQuickFramebufferObject::Renderer Class

class QQuickFramebufferObject::Renderer

보호된 함수

Renderer()
virtual ~Renderer()
virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size)
QOpenGLFramebufferObject *framebufferObject() const
void invalidateFramebufferObject()
virtual void render() = 0
virtual void synchronize(QQuickFramebufferObject *item)
void update()

상세 설명

QQuickFramebufferObject::Renderer 클래스는 QQuickFramebufferObject 의 렌더링 로직을 구현하는 데 사용됩니다.

멤버 함수 설명

[protected] Renderer::Renderer()

새로운 렌더러를 생성합니다.

이 함수는 GUI 스레드가 차단된 상태에서 씬 그래프 동기화 단계 중에 호출됩니다.

[virtual noexcept protected] Renderer::~Renderer()

QQuickFramebufferObject 항목에 대한 씬 그래프 리소스가 정리되면 렌더러가 자동으로 삭제됩니다.

이 함수는 렌더링 스레드에서 호출됩니다.

[virtual protected] QOpenGLFramebufferObject *Renderer::createFramebufferObject(const QSize &size)

이 함수는 새로운 FBO가 필요할 때 호출됩니다. 이는 초기 프레임에서 발생합니다. ` QQuickFramebufferObject::textureFollowsItemSize `가 true로 설정된 경우, 항목의 크기가 변경될 때마다 이 함수가 다시 호출됩니다.

반환되는 FBO는 어떤 부착 방식이든 가질 수 있습니다. ` QOpenGLFramebufferObjectFormat `가 FBO에 멀티샘플링이 적용되어야 함을 나타내는 경우, 렌더러의 내부 구현은 두 번째 FBO를 할당하고, 멀티샘플링된 FBO를 텍스처 표시에 사용되는 FBO로 블릿합니다.

참고: 일부 하드웨어에서는 FBO 크기가 작을 때 문제가 발생할 수 있습니다. ` size `는 이러한 점을 고려하므로, 크기를 고정된 값으로 재정의할 때는 주의해야 합니다. 최소 64x64 크기는 항상 정상적으로 작동합니다.

참고: ` size `는 디바이스 픽셀 비율을 고려하므로, 이미 올바른 배율로 곱해진 값을 반환합니다. ` QQuickFramebufferObject ` 항목이 포함된 창을 다른 설정을 가진 화면으로 이동할 경우, FBO가 자동으로 재생성되며 이 함수는 올바른 크기로 호출됩니다.

[protected] QOpenGLFramebufferObject *Renderer::framebufferObject() const

현재 렌더링이 진행 중인 프레임버퍼 객체를 반환합니다.

[protected] void Renderer::invalidateFramebufferObject()

synchronize() 실행 중에 이 함수를 호출하여 현재 FBO를 무효화하십시오. 그러면 createFramebufferObject()을 통해 새로운 FBO가 생성됩니다.

[pure virtual protected] void Renderer::render()

이 함수는 FBO에 렌더링해야 할 때 호출됩니다. 이 시점에서 프레임버퍼가 바인딩되어 있으며, FBO 크기에 맞춰 glViewport 가 설정되어 있습니다.

이 함수가 반환된 후에는 FBO가 자동으로 해제됩니다.

참고: 이 함수가 호출될 때 OpenGL 상태가 모두 기본값으로 설정되어 있다고 가정하거나, 호출 사이에서 상태가 유지된다고가정해서는 안 됩니다 . Qt Quick 렌더러와 사용자 정의 렌더링 코드 모두 동일한 OpenGL 컨텍스트를 사용합니다. 즉, 이 함수가 호출되기 전에 Quick에 의해 상태가 수정되었을 수도 있습니다.

참고: 반환하기 전에 ` QQuickOpenGLUtils::resetOpenGLState()`를 호출하는것이 좋습니다. 이렇게 하면 ` Qt Quick ` 렌더러가 사용하는 OpenGL 상태가 재설정되어, 이 함수 내의 렌더링 코드에 의해 발생한 상태 변경으로 인한 간섭을 방지할 수 있습니다.

[virtual protected] void Renderer::synchronize(QQuickFramebufferObject *item)

이 함수는 ` QQuickFramebufferObject::update()`의 호출 결과로 호출됩니다.

이 함수를 사용하여 항목에서 발생한 변경 사항을 렌더러에 반영하십시오. ` item `는 이 렌더러를 인스턴스화한 항목입니다. 이 함수는 FBO가 생성되기 전에 한 번 호출됩니다.

예를 들어, 아이템에 QML로 제어되는 색상 속성이 있는 경우, QQuickFramebufferObject::update()를 호출하고 synchronize()를 사용하여 새로운 색상을 렌더러에 복사해야 다음 프레임을 렌더링하는 데 사용할 수 있습니다.

이 함수는 렌더러와 아이템이 서로의 멤버를 안전하게 읽고 쓸 수 있는 유일한 곳입니다.

[protected] void Renderer::update()

FBO를 다시 렌더링해야 할 때 이 함수를 호출합니다.

이 함수는 ` render()`에서 호출하여 다음 프레임 전에 FBO가 다시 렌더링되도록 강제할 수 있습니다.

참고: 이 함수는 렌더러 내부에서 사용해야 합니다. GUI 스레드에서 항목을 업데이트하려면 QQuickFramebufferObject::update()를 사용하십시오.

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