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를 렌더링해야 할 때 호출됩니다. 이 시점에서 프레임버퍼가 바인딩되고 glViewport 이 FBO 크기와 일치하도록 설정됩니다.

함수가 반환된 후 FBO는 자동으로 바인딩 해제됩니다.

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

참고: 반환하기 전에 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()를 사용합니다.

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