QOffscreenSurface Class

QOffscreenSurface 클래스는 기본 플랫폼에서 화면 밖의 표면을 나타냅니다. 더 보기...

Header: #include <QOffscreenSurface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
상속합니다: QObjectQSurface

공용 함수

QOffscreenSurface(QScreen *targetScreen = nullptr, QObject *parent = nullptr)
virtual ~QOffscreenSurface()
void create()
void destroy()
bool isValid() const
QNativeInterface *nativeInterface() const
QSurfaceFormat requestedFormat() const
QScreen *screen() const
void setFormat(const QSurfaceFormat &format)
void setScreen(QScreen *newScreen)

재구현된 공용 함수

virtual QSurfaceFormat format() const override
virtual QSize size() const override
virtual QSurface::SurfaceType surfaceType() const override

시그널

void screenChanged(QScreen *screen)

상세 설명

QOffscreenSurface는 QWindow 을 만들 필요 없이 임의의 스레드에서 OpenGL로 렌더링할 수 있도록 QOpenGLContext 과 함께 사용하기 위한 것입니다.

일반적으로 표면은 렌더링할 수 있지만 표면의 픽셀에는 액세스할 수 없습니다. QOffscreenSurface는 텍스처나 프레임버퍼 객체와 같은 OpenGL 리소스를 생성할 때만 사용해야 합니다.

일반적으로 애플리케이션은 메인 렌더링 스레드를 지연시키지 않기 위해 별도의 스레드에서 시간이 많이 걸리는 일부 작업을 수행하기 위해 QOffscreenSurface를 사용합니다. QOffscreenSurface의 컨텍스트에서 생성된 리소스는 기본 OpenGL 컨텍스트와 공유할 수 있습니다. 몇 가지 일반적인 사용 사례는 비동기 텍스처 업로드 또는 QOpenGLFramebufferObject 로의 렌더링입니다.

오프스크린 표면이 구현되는 방식은 기반 플랫폼에 따라 다르지만 일반적으로 픽셀 버퍼(pbuffer)를 사용합니다. 플랫폼이 오프스크린 서페이스를 구현하지 않거나 지원하지 않는 경우 QOffscreenSurface는 내부적으로 보이지 않는 QWindow 을 사용합니다.

참고: 일부 플랫폼에서는 QOffscreenSurface가 QWindow 에 의해 지원되므로 크로스 플랫폼 애플리케이션은 create()가 메인(GUI) 스레드에서만 호출되는지 확인해야 합니다. 그러면 다른 스레드에서 makeCurrent()와 함께 QOffscreenSurface를 안전하게 사용할 수 있지만 초기화 및 소멸은 항상 메인(GUI) 스레드에서 이루어져야 합니다.

참고: 지정된 컨텍스트 및 창과 호환되는 오프스크린 서페이스를 만들려면 컨텍스트 또는 창이 생성된 후 QOpenGLContext::format() 또는 QWindow::format()에서 반환된 QSurfaceFormat 형식을 컨텍스트 또는 창의 실제 형식, 즉 컨텍스트 또는 창으로 설정해야 합니다. QWindow::requestedFormat ()에서 반환된 형식을 setFormat()로 전달하면 기본 창 시스템 인터페이스가 창 및 p버퍼 표면에 대해 다른 구성 집합을 제공할 수 있으므로 호환되지 않는 오프스크린 표면이 발생할 수 있습니다.

참고: 일부 플랫폼에서는 사용 가능한 경우 서피스리스 컨텍스트 확장(예: EGL_KHR_surfaceless_context)을 사용할 수 있습니다. 이 경우 기본 네이티브 표면이 없습니다. QOffscreenSurface의 사용 사례(FBO에 렌더링, 텍스처 업로드)의 경우 이는 문제가 되지 않습니다.

멤버 함수 문서

[explicit] QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen = nullptr, QObject *parent = nullptr)

주어진 parent 을 사용하여 targetScreen 에 대한 오프스크린 서페이스를 만듭니다.

기본 플랫폼 서페이스는 create()가 호출될 때까지 생성되지 않습니다.

setScreen() 및 create()도 참조하세요 .

[virtual noexcept] QOffscreenSurface::~QOffscreenSurface()

화면 밖 표면을 파괴합니다.

void QOffscreenSurface::create()

오프스크린 서페이스와 관련된 플랫폼 리소스를 할당합니다.

이 시점에서 setFormat()를 사용하여 설정한 서피스 형식이 실제 네이티브 서피스로 확인됩니다.

필요한 경우 destroy()를 호출하여 플랫폼 리소스를 해제합니다.

참고: 일부 플랫폼에서는 이 함수를 메인(GUI) 스레드에서 호출해야 합니다.

destroy()도 참조하세요 .

void QOffscreenSurface::destroy()

이 오프스크린 표면과 관련된 기본 플랫폼 리소스를 해제합니다.

create()도 참조하세요 .

[override virtual] QSurfaceFormat QOffscreenSurface::format() const

재구현합니다: QSurface::format() const.

이 오프 스크린 서페이스의 실제 포맷을 반환합니다.

오프스크린 서페이스가 생성된 후 이 함수는 서페이스의 실제 서페이스 포맷을 반환합니다. 플랫폼에서 요청된 형식을 충족할 수 없는 경우 요청된 형식과 다를 수 있습니다.

setFormat(), create() 및 requestedFormat()도 참조하세요 .

bool QOffscreenSurface::isValid() const

이 오프스크린 서페이스가 유효하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

오프스크린 서페이스는 플랫폼 리소스가 성공적으로 할당된 경우에 유효합니다.

create()도 참조하세요 .

template <typename QNativeInterface> QNativeInterface *QOffscreenSurface::nativeInterface() const

서페이스에 대해 지정된 유형의 네이티브 인터페이스를 반환합니다.

이 함수는 QNativeInterface 네임스페이스에 정의된 대로 QOffScreenSurface의 플랫폼별 기능에 대한 액세스를 제공합니다:

QNativeInterface::QAndroidOffscreenSurface

안드로이드에서 오프스크린 서페이스에 대한 네이티브 인터페이스

요청된 인터페이스를 사용할 수 없는 경우 nullptr 이 반환됩니다.

QSurfaceFormat QOffscreenSurface::requestedFormat() const

이 오프스크린 서페이스의 요청된 서페이스 포맷을 반환합니다.

요청된 형식이 플랫폼 구현에서 지원되지 않는 경우 요청된 형식은 실제 오프스크린 표면 형식과 다를 수 있습니다.

setFormat()로 설정된 값입니다.

setFormat() 및 format()도 참조하세요 .

QScreen *QOffscreenSurface::screen() const

화면 외부 표면이 연결된 화면을 반환합니다.

setScreen()도 참조하세요 .

[signal] void QOffscreenSurface::screenChanged(QScreen *screen)

이 신호는 setScreen()로 명시적으로 설정하거나 창 화면이 제거될 때 자동으로 화면 밖 표면의 screen 이 변경될 때 발생합니다.

void QOffscreenSurface::setFormat(const QSurfaceFormat &format)

화면 밖 서페이스를 설정합니다 format.

서페이스 형식은 create() 함수에서 확인됩니다. create () 뒤에 이 함수를 호출하면 기본 서페이스의 서페이스 형식이 다시 확인되지 않습니다.

format(), create() 및 destroy()도 참조하세요 .

void QOffscreenSurface::setScreen(QScreen *newScreen)

오프스크린 서페이스가 연결될 화면을 설정합니다.

오프스크린 서페이스가 생성된 경우 newScreen 에 다시 생성됩니다.

screen()도 참조하세요 .

[override virtual] QSize QOffscreenSurface::size() const

재구현합니다: QSurface::size() const.

오프 스크린 표면의 크기를 반환합니다.

[override virtual] QSurface::SurfaceType QOffscreenSurface::surfaceType() const

재구현합니다: QSurface::surfaceType() const.

오프 스크린 서페이스의 서페이스 타입을 반환합니다.

오프 스크린 서페이스의 서페이스 유형은 항상 QSurface::OpenGLSurface 입니다.

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