QAbstractOpenGLFunctions Class
QAbstractOpenGLFunctions 클래스는 각 OpenGL 버전 및 프로필에 대한 모든 함수를 제공하는 클래스 군의 기본 클래스입니다. 더 보기...
| 헤더: | #include <qopenglversionfunctions.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS OpenGL) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake: | QT += opengl |
| 상속된 항목: | 27가지 유형QOpenGLFunctions_1_0, QOpenGLFunctions_1_1, QOpenGLFunctions_1_2, QOpenGLFunctions_1_3, QOpenGLFunctions_1_4, QOpenGLFunctions_1_5, QOpenGLFunctions_2_0, QOpenGLFunctions_2_1, QOpenGLFunctions_3_0, QOpenGLFunctions_3_1, QOpenGLFunctions_3_2_Compatibility, QOpenGLFunctions_3_2_Core, QOpenGLFunctions_3_3_Compatibility, QOpenGLFunctions_3_3_Core, QOpenGLFunctions_4_0_Compatibility, QOpenGLFunctions_4_0_Core, QOpenGLFunctions_4_1_Compatibility, QOpenGLFunctions_4_1_Core, QOpenGLFunctions_4_2_Compatibility, QOpenGLFunctions_4_2_Core, QOpenGLFunctions_4_3_Compatibility, QOpenGLFunctions_4_3_Core, QOpenGLFunctions_4_4_Compatibility, QOpenGLFunctions_4_4_Core, QOpenGLFunctions_4_5_Compatibility, QOpenGLFunctions_4_5_Core, 그리고 QOpenGLFunctions_ES2 |
공개 함수
| QAbstractOpenGLFunctions(const QAbstractOpenGLFunctions &) | |
| virtual | ~QAbstractOpenGLFunctions() |
| QAbstractOpenGLFunctions & | operator=(const QAbstractOpenGLFunctions &) |
보호된 함수
상세 설명
플랫폼마다 OpenGL 구현체는 해당 플랫폼의 OpenGL ABI에 따라 가변적인 수의 OpenGL 함수에 링크할 수 있습니다. 예를 들어, Microsoft Windows에서는 빌드 시점에 OpenGL 1.1에 포함된 함수까지만 링크할 수 있습니다. 그 외의 모든 함수는 런타임에 해결되어야 합니다. 이에 대한 기존의 해결책은 ` QOpenGLContext::getProcAddress()` 또는 ` QOpenGLFunctions`을 사용하는 것이었습니다. 전자는 번거롭고 오류가 발생하기 쉬우며, 함수 포인터를 직접 다루어야 한다는 단점이 있습니다. 후자는 OpenGL ES 2와 데스크톱 OpenGL에 공통된 함수들만 노출합니다. 그러나 실제 OpenGL 애플리케이션을 작성할 때 유용한 새로운 OpenGL 기능이 많이 있습니다.
Qt OpenGL은 이제 QAbstractOpenGLFunctions를 상속받는 일련의 클래스들을 제공하며, 이 클래스들은 대응하는 멤버 함수를 통해 모든 핵심 OpenGL 함수를 노출합니다. OpenGL 버전과 프로파일의 모든 유효한 조합에 대해 각각의 클래스가 존재합니다. 각 클래스는 다음과 같은 명명 규칙을 따릅니다:
QOpenGLFunctions_<MAJOR VERSION>_<MINOR VERSION>[_PROFILE]OpenGL 버전 1.0부터 3.0까지는 프로파일이 없으므로 다음과 같은 클래스가 있습니다:
- QOpenGLFunctions_1_0
- QOpenGLFunctions_1_1
- QOpenGLFunctions_1_2
- QOpenGLFunctions_1_3
- QOpenGLFunctions_1_4
- QOpenGLFunctions_1_5
- QOpenGLFunctions_2_0
- QOpenGLFunctions_2_1
- QOpenGLFunctions_3_0
여기서 각 클래스는 QAbstractOpenGLFunctions를 상속받습니다.
OpenGL 버전 3.1에서는 더 이상 사용되지 않는 많은 함수가 제거되어 훨씬 더 단순하고 일반적인 API가 되었습니다.
OpenGL 3.2에서는 프로파일 개념이 도입되었습니다. 현재 OpenGL에는 Core와 Compatibility라는 두 가지 프로파일이 정의되어 있습니다.
Core 프로필에는 OpenGL 3.1에서 제거된 함수가 하나도 포함되어 있지 않습니다. Compatibility 프로파일은 동일한 버전의 Core 프로파일에 포함된 모든 함수와 OpenGL 3.1에서 제거된 모든 함수를 포함합니다. 이러한 방식으로 Compatibility 프로파일 클래스를 사용하면 최신 OpenGL 기능을 활용할 수 있을 뿐만 아니라 기존 OpenGL 코드도 계속 사용할 수 있습니다. 새로운 OpenGL 코드를 작성할 때는 Core 프로파일을 우선적으로 사용해야 합니다.
일부 벤더(특히 Apple)는 호환성 프로파일을 구현하지 않는다는 점에 유의하십시오. 따라서 macOS에서 새로운 OpenGL 기능을 사용하려면 QSurfaceFormat::setProfile()를 통해 코어 프로파일 컨텍스트를 요청해야 합니다.
Qt는 모든 버전과 Qt Core 및 호환성 프로파일의 조합에 대한 클래스를 제공합니다. OpenGL 버전 3.1부터 4.3까지에 해당하는 클래스는 다음과 같습니다:
- QOpenGLFunctions_3_1
- QOpenGLFunctions_3_2_Core
- QOpenGLFunctions_3_2_Compatibility
- QOpenGLFunctions_3_3_Core
- QOpenGLFunctions_3_3_Compatibility
- QOpenGLFunctions_4_0_Core
- QOpenGLFunctions_4_0_Compatibility
- QOpenGLFunctions_4_1_Core
- QOpenGLFunctions_4_1_Compatibility
- QOpenGLFunctions_4_2_Core
- QOpenGLFunctions_4_2_Compatibility
- QOpenGLFunctions_4_3_Core
- QOpenGLFunctions_4_3_Compatibility
각 클래스는 QAbstractOpenGLFunctions를 상속받습니다.
사용 중인 OpenGL 버전 및 프로파일에 해당하는 클래스의 객체에 대한 포인터는 QOpenGLVersionFunctionsFactory::get()를 통해 얻을 수 있습니다. 이 방법으로 포인터를 획득한 경우, QOpenGLContext 가 해당 객체의 소유권을 유지한다는 점에 유의하십시오. 이는 인스턴스를 캐싱하고 공유할 수 있도록 하기 위함입니다.
노출된 OpenGL 함수를 호출하기 전에, 객체가 OpenGL 함수에 대한 함수 포인터를 올바르게 해결했는지 반드시 확인해야 합니다. 이는 initializeOpenGLFunctions()를 통해 인스턴스당 한 번만 수행하면 됩니다. 초기화가 완료되면, 해당 객체를 사용하여 해당 버전 및 프로필에 해당하는 모든 OpenGL 함수를 호출할 수 있습니다. initializeOpenGLFunctions()는 특정 상황에서 실패할 수 있으므로 반환 값을 확인해야 합니다. 초기화가 실패할 수 있는 상황은, 함수 포인터를 해결하는 데 사용되는 컨텍스트에 포함되지 않은 함수를 포함하는 버전이나 프로파일의 함수 객체가 있는 경우입니다.
함수 객체만을 사용하는 경우, 해당 버전 및 프로필에 포함되지 않은 함수를 사용하려고 하면 컴파일 시 오류가 발생합니다. 이는 런타임 시 발생하는 정의되지 않은 동작보다 디버깅하기가 훨씬 쉽습니다.
QOpenGLVersionFunctionsFactory::get()도 참조하십시오 .
멤버 함수 문서
[protected] QAbstractOpenGLFunctions::QAbstractOpenGLFunctions()
QAbstractOpenGLFunctions 객체를 생성합니다.
[delete] QAbstractOpenGLFunctions::QAbstractOpenGLFunctions(const QAbstractOpenGLFunctions &)
QAbstractOpenGLFunctions 의 인스턴스를 복사 생성합니다. 이 함수는 삭제되었습니다.
[virtual noexcept] QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions()
QAbstractOpenGLFunctions 객체를 파기합니다.
[delete] QAbstractOpenGLFunctions &QAbstractOpenGLFunctions::operator=(const QAbstractOpenGLFunctions &)
other 를 이 QAbstractOpenGLFunctions 인스턴스에 복사-할당합니다. 이 함수는 삭제되었습니다.
© 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.