네이티브 인터페이스
네이티브 인터페이스는 확장하는 클래스의 네이티브 또는 플랫폼별 API에 대한 액세스를 제공합니다.
인터페이스는 QNativeInterface 네임스페이스에 있으며 기본 네이티브 핸들에 액세스하거나 기존 네이티브 핸들을 채택하거나 플랫폼별 API를 제공하는 등의 사용 사례를 다룹니다.
사용 예
기본 네이티브 핸들에 액세스하기
네이티브 플랫폼의 기능이 Qt에 노출되지 않는 상황에서는 Qt에서 유지 관리하는 네이티브 핸들에 액세스하고 이를 사용하여 네이티브 API를 대신 호출하는 것이 유용할 수 있습니다.
예를 들어, macOS에서 QNativeInterface::QCocoaGLContext 네이티브 인터페이스를 통해 QOpenGLContext 의 기본 NSOpenGLContext에 액세스합니다:
using namespace QNativeInterface; if (auto *cocoaGLContext = glContext->nativeInterface<QCocoaGLContext>()) [cocoaGLContext->nativeContext() makeCurrentContext];
네이티브 인터페이스는 QOpenGLContext::nativeInterface() 접근자를 통해 액세스되며, 요청된 인터페이스가 사용 가능한지 확인하고 그렇지 않으면 nullptr
을 반환합니다. 그런 다음 nativeContext() 접근자를 통해 기본 NSOpenGLContext에 액세스합니다.
기존 네이티브 핸들 채택
창 임베딩 사용 사례와 유사하게, 네이티브 플랫폼이나 다른 툴킷에서 새로운 핸들을 만드는 대신 기존 핸들을 래핑하여 Qt에 전달하고자 하는 네이티브 핸들을 생성한 경우가 있습니다.
예를 들어, 기존 NSOpenGLContext를 채택하고 이를 사용하여 Qt에서 생성한 컨텍스트와 리소스를 공유하는 경우입니다:
using namespace QNativeInterface; QOpenGLContext *adoptedContext = QCocoaGLContext::fromNativeContext(nsOpenGLContext); anotherContext->setShareContext(adoptedContext);
채택된 컨텍스트는 QNativeInterface::QCocoaGLContext 네이티브 인터페이스의 플랫폼별 팩토리 함수에 의해 생성됩니다.
플랫폼별 API 액세스
어떤 API는 크로스 플랫폼 Qt 클래스에 포함하기에는 너무 플랫폼 특정적이지만 여전히 유용할 수 있습니다. 이러한 API는 기본 네이티브 핸들에 액세스할 때와 동일한 방식으로 nativeInterface() 접근자를 통해 사용하거나 네이티브 인터페이스의 정적 함수로 직접 사용할 수 있습니다.
예를 들어 Windows에서 OpenGL 모듈 핸들을 가져올 수 있습니다:
using namespace QNativeInterface; HMODULE moduleHandle = QWGLContext::openGLModuleHandle();
소스 및 바이너리 호환성
네이티브 인터페이스 API에는 소스 또는 바이너리 호환성이 보장되지 않으므로 이러한 인터페이스를 사용하는 애플리케이션은 해당 인터페이스가 개발된 Qt 버전에서만 작동하도록 보장됩니다.
사용 가능한 인터페이스
사용 가능한 모든 인터페이스 목록은 QNativeInterface 네임스페이스를 참조하십시오.
QOpenGLContext
QOpenGLContext::nativeInterface()를 통해 액세스합니다.
macOS의 NSOpenGLContext에 대한 네이티브 인터페이스 | |
EGL 컨텍스트에 대한 네이티브 인터페이스 | |
GLX 컨텍스트에 대한 네이티브 인터페이스 | |
Windows에서 WGL 컨텍스트에 대한 네이티브 인터페이스 |
QOffscreenSurface
QOffscreenSurface::nativeInterface()를 통해 액세스합니다.
Android에서 오프스크린 서페이스에 대한 네이티브 인터페이스 |
QSGTexture
QSGTexture::nativeInterface()를 통해 액세스합니다.
Direct3D 11 텍스처 오브젝트에 대한 액세스를 제공하고 채택을 활성화합니다. | |
Direct3D 12 텍스처 오브젝트에 대한 액세스를 제공하고 채택을 활성화합니다. | |
Metal 텍스처 오브젝트에 대한 액세스를 제공하고 채택을 활성화합니다. | |
OpenGL 텍스처 개체에 대한 액세스 및 채택을 활성화합니다. | |
Vulkan 이미지 오브젝트에 대한 액세스 및 채택을 활성화합니다. |
© 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.