QRhiGles2InitParams Struct
OpenGL 특정 초기화 매개변수. 더 보기...
Header: | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
이후: | Qt 6.6 |
상속합니다: | QRhiInitParams |
공용 함수
공용 변수
QSurface * | fallbackSurface |
QSurfaceFormat | format |
QOpenGLContext * | shareContext |
QWindow * | window |
정적 공용 멤버
QOffscreenSurface * | newFallbackSurface(const QSurfaceFormat &format = QSurfaceFormat::defaultFormat()) |
상세 설명
참고: 호환성이 제한적으로 보장되는 RHI API이며, 자세한 내용은 QRhi 을 참조하세요.
OpenGL 기반 QRhi 에는 QOpenGLContext 와 함께 사용할 수 있는 이미 생성된 QSurface 이 필요합니다. 가장 일반적으로는 QOffscreenSurface 을 사용합니다. 또한 선택 사항이지만 첫 번째 QRhiSwapChain 이 타깃팅할 QWindow 도 함께 전달하는 것이 좋습니다.
QOffscreenSurface *fallbackSurface = QRhiGles2InitParams::newFallbackSurface(); QRhiGles2InitParams params; params.fallbackSurface = fallbackSurface; params.window = window; rhi = QRhi::create(QRhi::OpenGLES2, ¶ms);
기본적으로 QRhi 은 자체적으로 QOpenGLContext 을 만듭니다. 이 접근 방식은 각 렌더링 스레드에 전용 QRhi 이 있는 스레드 시나리오를 포함한 대부분의 경우에 잘 작동합니다. 각 QRhi 에 대해 QOpenGLContext 이 있으므로 OpenGL 컨텍스트 요구 사항(컨텍스트는 하나의 스레드에서만 최신 상태일 수 있음)이 충족됩니다. 암시적으로 생성된 컨텍스트는 QRhi 과 함께 자동으로 소멸됩니다.
컨텍스트에 대한 QSurfaceFormat 은 format
에 지정됩니다. 생성자는 이를 QSurfaceFormat::defaultFormat()로 설정하므로 생성자가 실행되기 전에 적절한 설정으로 QSurfaceFormat::setDefaultFormat()을 호출하는 애플리케이션은 format
의 값을 변경할 필요가 없습니다.
참고: 렌더러가 깊이 또는 스텐실 테스트에 의존하는 경우 글로벌 기본값 QSurfaceFormat 또는 관련된 모든 QSurfaceFormat 인스턴스( format
, newFallbackSurface()에 전달된 형식 인수 및 QRhi 과 함께 사용되는 모든 QWindow 에서 별도로 깊이 및 스텐실 버퍼 크기를 24 및 8로 설정해야 합니다.
QSurface 는 fallbackSurface
에서 지정해야 합니다. 스레드 상황에서 실수를 방지하기 위해 QWindow 와 마찬가지로 QSurface 서브클래스의 인스턴스는 종종 gui/메인 스레드에서만 생성될 수 있으므로 QRhi 에 의해 자동으로 생성되지 않습니다.
편의를 위해 애플리케이션은 newFallbackSurface()를 사용하여 나중에 QRhi 에 의해 생성될 QOpenGLContext 과 호환되는 QOffscreenSurface 을 생성하고 반환할 수 있습니다. 반환된 QOffscreenSurface 의 소유권은 호출자에게 이전되며 QRhi 은 이를 파괴하지 않습니다.
참고: OpenGL 백엔드에서 QRhiSwapChain 는 표면 유형이 QSurface::OpenGLSurface 또는 QSurface::RasterGLSurface 로 설정된 QWindow 인스턴스만 대상으로 할 수 있습니다.
참고: window
은 선택 사항입니다. 다중 어댑터 및 다중 화면 시스템에서 문제를 방지하려면 가능하면 지정하는 것이 좋습니다. window
을 설정하지 않으면 첫 번째 QOpenGLContext::makeCurrent()이 fallbackSurface
과 함께 발생하며, 이는 일부 플랫폼(예: Windows)에서 보이지 않는 창이 될 수 있으며 경우에 따라 예기치 않은 문제를 유발할 수 있습니다.
기존 QOpenGLContext 과 리소스 공유가 필요한 경우 shareContext
을 기존 QOpenGLContext 으로 설정할 수 있습니다. 또는 Qt::AA_ShareOpenGLContexts 도 활성화된 경우 그대로 사용할 수 있습니다.
기존 OpenGL 컨텍스트로 작업하기
다른 그래픽 엔진과 상호 운용할 때 동일한 OpenGL 컨텍스트를 사용하는 QRhi 인스턴스를 가져와야 할 수 있습니다. 이는 QRhi::create()에 QRhiGles2NativeHandles 포인터를 전달하면 됩니다. 이때 QRhiGles2NativeHandles::context
을 null이 아닌 값으로 설정해야 합니다.
QOpenGLContext 다른 접근 방식은 다른 엔진의 컨텍스트를 사용하여 shares resources 을 만들고 QRhiGles2NativeHandles 을 통해 해당 컨텍스트를 전달하는 것입니다.
QRhi 은 QRhiGles2NativeHandles 을 통해 전달된 QOpenGLContext 의 소유권을 갖지 않습니다.
멤버 함수 문서
QRhiGles2InitParams::QRhiGles2InitParams()
새로운 QRhiGles2InitParams를 구축합니다.
format 은 QSurfaceFormat::defaultFormat()로 설정됩니다.
[static]
QOffscreenSurface *QRhiGles2InitParams::newFallbackSurface(const QSurfaceFormat &format = QSurfaceFormat::defaultFormat())
QRhiGles2InitParams 을 통해 전달하여 QRhi 과 함께 사용할 수 있는 새 QOffscreenSurface 을 반환합니다.
format 을 지정하지 않으면 기본값은 QSurfaceFormat::setDefaultFormat()을 통해 설정 가능한 글로벌 기본 형식입니다.
format 나중에 호환되지 않는 컨텍스트와 표면으로 인한 문제를 방지하기 위해 적절하게 조정됩니다.
참고: 이 함수는 GUI/메인 스레드에서만 호출해야 합니다.
참고: 연결된 QRhi 이 소멸된 후 반환된 QOffscreenSurface 을 gui/메인 스레드에서 소멸시키는 것은 애플리케이션의 책임입니다. QRhi 은 QOffscreenSurface 을 파괴하지 않습니다.
멤버 변수 문서
QSurface *QRhiGles2InitParams::fallbackSurface
format 과 호환되는 QSurface. 일반적으로 QOffscreenSurface. 제공은 필수입니다. QWindow 과 같은 QOffscreenSurface 은 QRhi 이 다른 스레드에서 생성되어 작동하더라도 메인(gui) 스레드에서만 생성 및 소멸되어야 한다는 점에 유의하세요.
QSurfaceFormat QRhiGles2InitParams::format
QSurfaceFormat 는 기본적으로 QSurfaceFormat::defaultFormat()로 초기화됩니다.
QOpenGLContext *QRhiGles2InitParams::shareContext
선택 사항으로 리소스를 공유할 QOpenGLContext 멤버( QRhi )는 자체 컨텍스트를 생성하고 이 멤버를 유효한 QOpenGLContext 로 설정하면 setShareContext()를 호출하게 됩니다.
QWindow *QRhiGles2InitParams::window
© 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.