Qt OpenGL
Qt에는 UI 개발에 대한 두 가지 주요 접근 방식이 있습니다: Qt Quick 와 Qt Widgets. 이들은 서로 다른 유형의 사용자 인터페이스를 지원하기 위해 존재하며, 각 유형에 최적화된 별도의 그래픽 엔진을 기반으로 구축됩니다.
OpenGL 그래픽 API로 작성된 코드를 Qt에서 이 두 가지 사용자 인터페이스 유형과 결합할 수 있습니다. 이는 애플리케이션에 자체 OpenGL 종속 코드가 있거나 타사 OpenGL 기반 렌더러와 통합할 때 유용할 수 있습니다.
Qt OpenGL 모듈에는 이러한 유형의 통합을 더 쉽고 빠르게 할 수 있는 편의 클래스가 포함되어 있습니다.
Qt OpenGL 와 Qt Widgets
Qt Widgets 는 일반적으로 고도로 최적화되고 정확한 소프트웨어 래스터라이저에 의해 렌더링되며 최종 콘텐츠는 애플리케이션이 실행 중인 플랫폼에 적합한 방법을 사용하여 화면에 재생산됩니다.
그러나 또한 Qt Widgets 와 결합하는 것도 가능합니다. 이를 위한 주요 진입점은 QOpenGLWidget 클래스입니다. 이 클래스는 위젯 트리의 특정 부분에 대해 OpenGL 렌더링을 활성화하는 데 사용할 수 있으며, Qt OpenGL 모듈의 클래스를 사용하여 모든 애플리케이션 측 OpenGL 코드를 용이하게 할 수 있습니다.
Qt OpenGL 와 Qt Quick
Qt Quick 는 하드웨어 가속 렌더링에 최적화되어 있습니다. 기본적으로 대상 플랫폼에 가장 적합한 로우레벨 그래픽 API를 기반으로 빌드됩니다.
예를 들어 Windows에서는 기본값이 Direct3D
인 반면, macOS에서는 기본값이 Metal
입니다. 그러나 이 기능이 지원되는 플랫폼에서는 OpenGL을 활성 그래픽 API로 수동으로 선택할 수도 있습니다.
를 사용하여 OpenGL을 활성화하는 방법에 대한 자세한 내용은 Qt Quick을 사용하여 OpenGL을 활성화하는 방법에 대한 자세한 내용은 시나리오 렌더러 문서를 참조하세요.
모듈 사용
Qt 모듈의 C++ API를 사용하려면 모듈 라이브러리에 직접 또는 다른 종속성을 통해 링크해야 합니다. CMake 및 qmake를 비롯한 여러 빌드 도구가 이를 지원합니다.
CMake로 빌드하기
find_package()
명령을 사용하여 Qt6
패키지에서 필요한 모듈 컴포넌트를 찾습니다:
find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
자세한 내용은 CMake로 빌드 개요를 참조하세요.
qmake로 빌드하기
qmake로 빌드하도록 모듈을 구성하려면 프로젝트의 .pro 파일에 QT
변수의 값으로 모듈을 추가합니다:
QT += opengl
예제
참조
모듈 진화
Qt OpenGL 의 변경 사항에는 Qt 6 시리즈에 적용된 모듈 API 및 기능의 중요한 변경 사항이 나열되어 있습니다.
라이선스 및 상표
Qt OpenGL 모듈은 The Qt Company의 상용 라이선스에 따라 사용할 수 있습니다. 또한 무료 소프트웨어 라이선스에 따라 사용할 수 있습니다: GNU 약소 일반 공중 사용 허가서, 버전 3 또는 GNU 일반 공중 사용 허가서, 버전 2. 자세한 내용은 Qt 라이선스를 참조하십시오.
OpenGL®은 미국 및 기타 국가에서 Silicon Graphics, Inc.의 상표입니다.
© 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.