이 페이지에서

QQuickFramebufferObject Class

QQuickFramebufferObject 클래스는 프레임버퍼 객체(FBO)를 사용하여 OpenGL 렌더링을 Qt Quick 와 통합하기 위한 편의 클래스입니다. 더 보기...

헤더: #include <QQuickFramebufferObject>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
상속: QQuickItem

공개 유형

class Renderer

속성

공개 함수

QQuickFramebufferObject(QQuickItem *parent = nullptr)
virtual QQuickFramebufferObject::Renderer *createRenderer() const = 0
bool mirrorVertically() const
void setMirrorVertically(bool enable)
void setTextureFollowsItemSize(bool follows)
bool textureFollowsItemSize() const

재구현된 공용 함수

virtual bool isTextureProvider() const override
virtual void releaseResources() override
virtual QSGTextureProvider *textureProvider() const override

신호

상세 설명

경고: 이 클래스는 Qt Quick 가 OpenGL을 통해 렌더링할 때만 작동합니다. Vulkan이나 Metal과 같은 다른 그래픽 API와는 호환되지 않습니다. 이 클래스는 Qt 5 애플리케이션이 OpenGL에 의존하는 한 소스 호환성 문제 없이 작동할 수 있도록 하기 위해 존재하는 레거시 클래스로 간주되어야 합니다.

대부분의 플랫폼에서 렌더링은 전용 스레드에서 수행됩니다. 이러한 이유로 QQuickFramebufferObject 클래스는 항목 구현과 FBO 렌더링 간의 엄격한 분리를 강제합니다. QML에 필요한 속성 및 UI 관련 헬퍼 함수와 같은 모든 항목 로직은 `QQuickFramebufferObject` 클래스의 하위 클래스에 위치해야 합니다. 렌더링과 관련된 모든 내용은 ` QQuickFramebufferObject::Renderer ` 클래스에 위치해야 합니다.

두 스레드 간 경합 조건 및 읽기/쓰기 문제를 방지하려면 렌더러와 아이템이 공유 변수를 절대 읽거나 쓰지 않도록 하는 것이 중요합니다. 아이템과 렌더러 간의 통신은 주로 QQuickFramebufferObject::Renderer::synchronize() 함수를 통해 이루어져야 합니다. 이 함수는 GUI 스레드가 차단된 상태에서 렌더링 스레드에서 호출됩니다.

아이템과 렌더러 간의 통신에 큐에 저장된 연결이나 이벤트를 사용하는 것도 가능합니다.

렌더러와 FBO는 모두 내부적으로 메모리 관리가 이루어집니다.

FBO에 렌더링하려면 Renderer 클래스를 상속받아 Renderer::render() 함수를 재구현해야 합니다. Renderer 서브클래스는 createRenderer()에서 반환됩니다.

FBO의 크기는 기본적으로 항목의 크기에 맞춰 조정됩니다. 고정된 크기를 원할 경우, ` textureFollowsItemSize `를 ` false `로 설정하고 ` QQuickFramebufferObject::Renderer::createFramebufferObject()`에서 원하는 텍스처를 반환하십시오.

Qt 5.4부터 QQuickFramebufferObject 클래스는 texture provider 이며, ShaderEffects 및 텍스처 제공자를 사용하는 다른 클래스에서 직접 사용할 수 있습니다.

'씬 그래프(Scene Graph)' 및 '렌더링(Rendering)' 항목도 참조하십시오 .

속성 문서

mirrorVertically : bool

이 속성은 렌더링 시 FBO 내용의 크기를 수직으로 반전할지 여부를 제어합니다. 이를 통해 표준 규격에 따르지 않는 타사 렌더링 코드를 쉽게 통합할 수 있습니다.

기본값은 ` false`입니다.

액세스 함수:

bool mirrorVertically() const
void setMirrorVertically(bool enable)

알림 신호:

void mirrorVerticallyChanged(bool)

textureFollowsItemSize : bool

이 속성은 FBO의 텍스처 크기가 ‘ QQuickFramebufferObject ’ 항목의 크기를 따를지 여부를 제어합니다. 이 속성이 false로 설정된 경우, FBO는 처음 표시될 때 한 번 생성됩니다. true로 설정된 경우, 항목의 크기가 변경될 때마다 FBO가 다시 생성됩니다.

기본값은 ` true`입니다.

액세스 함수:

bool textureFollowsItemSize() const
void setTextureFollowsItemSize(bool follows)

알림 신호:

void textureFollowsItemSizeChanged(bool)

멤버 함수 문서

QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem *parent = nullptr)

parent 를 부모로 하는 새로운 QQuickFramebufferObject를 생성합니다.

[pure virtual] QQuickFramebufferObject::Renderer *QQuickFramebufferObject::createRenderer() const

이 함수를 재구현하여 FBO에 렌더링하는 데 사용되는 렌더러를 생성하십시오.

이 함수는 GUI 스레드가 차단된 상태에서 렌더링 스레드에서 호출됩니다.

[override virtual] bool QQuickFramebufferObject::isTextureProvider() const

QQuickItem::isTextureProvider() const를 재구현합니다.

[override virtual] void QQuickFramebufferObject::releaseResources()

QQuickItem::releaseResources()을 재구현합니다.

[override virtual] QSGTextureProvider *QQuickFramebufferObject::textureProvider() const

QQuickItem::textureProvider() const를 재구현합니다.

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