QAbstractOpenGLFunctions Class

QAbstractOpenGLFunctions 클래스는 각 OpenGL 버전 및 프로필에 대한 모든 함수를 노출하는 클래스 패밀리의 기본 클래스입니다. 더 보기...

공개 함수

보호된 함수

상세 설명

다른 플랫폼의 OpenGL 구현은 해당 플랫폼의 OpenGL ABI에 따라 다양한 수의 OpenGL 함수에 연결할 수 있습니다. 예를 들어 Microsoft Windows에서는 빌드 시점에 OpenGL 1.1의 함수까지만 링크할 수 있습니다. 다른 모든 함수는 런타임에 해결해야 합니다. 이에 대한 기존의 해결책은 QOpenGLContext::getProcAddress() 또는 QOpenGLFunctions 을 사용하는 것이었습니다. 전자는 지루하고 오류가 발생하기 쉬우며 함수 포인터를 직접 처리해야 합니다. 후자는 OpenGL ES 2 및 데스크톱 OpenGL에 공통된 함수만 노출합니다. 그러나 실제 OpenGL 응용 프로그램을 작성할 때 유용한 새로운 OpenGL 기능이 많이 있습니다.

Qt는 이제 모든 핵심 OpenGL 함수를 해당 멤버 함수를 통해 노출하는 QAbstractOpenGLFunctions를 상속하는 클래스 패밀리를 제공합니다. OpenGL 버전과 프로파일의 모든 유효한 조합에 대한 클래스가 있습니다. 각 클래스는 명명 규칙을 따릅니다:

QOpenGLFunctions_<MAJOR VERSION>_<MINOR VERSION>[_PROFILE]

OpenGL 버전 1.0부터 3.0까지는 프로파일이 없으므로 클래스로 이어집니다:

클래스로 이어지는데, 각 클래스는 QAbstractOpenGLFunctions에서 상속합니다.

OpenGL 버전 3.1에서는 더 이상 사용되지 않는 많은 함수가 제거되어 훨씬 더 단순하고 일반적인 API가 되었습니다.

OpenGL 3.2에서는 프로파일이라는 개념이 도입되었습니다. 현재 OpenGL에는 코어와 호환성의 두 가지 프로필이 정의되어 있습니다.

코어 프로파일에는 OpenGL 3.1에서 제거된 함수가 포함되어 있지 않습니다. 호환성 프로파일에는 동일한 버전의 코어 프로파일에 있는 모든 함수와 OpenGL 3.1에서 제거된 모든 함수가 포함됩니다. 이러한 방식으로 호환성 프로파일 클래스를 사용하면 최신 OpenGL 기능을 사용할 수 있지만 레거시 OpenGL 코드를 계속 사용할 수도 있습니다. 새로운 OpenGL 코드의 경우 Core 프로파일을 선호해야 합니다.

일부 공급업체, 특히 Apple은 호환성 프로파일을 구현하지 않는다는 점에 유의하세요. 따라서 macOS에서 새로운 OpenGL 기능을 타겟팅하려면 QSurfaceFormat::setProfile()를 통해 코어 프로파일 컨텍스트를 요청해야 합니다.

Qt는 모든 버전과 Core 및 호환성 프로파일 조합에 대한 클래스를 제공합니다. OpenGL 버전 3.1부터 4.3까지의 클래스는 다음과 같습니다:

여기서 각 클래스는 QAbstractOpenGLFunctions에서 상속합니다.

사용 중인 OpenGL 버전 및 프로필에 해당하는 클래스의 객체에 대한 포인터는 QOpenGLVersionFunctionsFactory::get()에서 얻을 수 있습니다. 이 방법으로 얻은 경우 QOpenGLContext 이 객체의 소유권을 유지한다는 점에 유의하세요. 이는 인스턴스를 캐시하고 공유할 수 있도록 하기 위한 것입니다.

노출된 OpenGL 함수를 호출하기 전에 객체가 OpenGL 함수에 대한 함수 포인터를 해결했는지 확인해야 합니다. 이 작업은 초기화OpenGLFunctions()를 사용하여 인스턴스당 한 번만 수행하면 됩니다. 초기화되면 객체를 사용하여 해당 버전 및 프로필에 대한 모든 OpenGL 함수를 호출할 수 있습니다. 경우에 따라 초기화OpenGLFunctions()가 실패할 수 있으므로 반환값을 확인하세요. 초기화가 실패할 수 있는 상황은 함수 포인터를 확인하는 데 사용되는 컨텍스트의 일부가 아닌 함수가 포함된 버전 또는 프로필에 대한 함수 객체가 있는 경우입니다.

함수 객체만 사용하는 경우 해당 버전 및 프로필에 포함되지 않은 함수를 사용하려고 하면 컴파일 시간 오류가 발생합니다. 이는 런타임에 정의되지 않은 동작보다 디버깅하기가 훨씬 쉽습니다.

QOpenGLVersionFunctionsFactory::get()도 참조하세요 .

멤버 함수 문서

[protected] QAbstractOpenGLFunctions::QAbstractOpenGLFunctions()

QAbstractOpenGLFunctions 객체를 구축합니다.

[virtual noexcept] QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions()

QAbstractOpenGLFunctions 객체를 삭제합니다.

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