QSurfaceFormat Class
QSurfaceFormat 클래스는 QSurface 의 형식을 나타냅니다.. ..
헤더: | #include <QSurfaceFormat> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
공용 타입
enum | ColorSpace { DefaultColorSpace, sRGBColorSpace } |
enum | FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification, ProtectedContent } |
flags | FormatOptions |
enum | OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile } |
enum | RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG } |
enum | SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer } |
공용 함수
QSurfaceFormat() | |
QSurfaceFormat(QSurfaceFormat::FormatOptions options) | |
QSurfaceFormat(const QSurfaceFormat &other) | |
~QSurfaceFormat() | |
int | alphaBufferSize() const |
int | blueBufferSize() const |
const QColorSpace & | colorSpace() const |
int | depthBufferSize() const |
int | greenBufferSize() const |
bool | hasAlpha() const |
int | majorVersion() const |
int | minorVersion() const |
QSurfaceFormat::FormatOptions | options() const |
QSurfaceFormat::OpenGLContextProfile | profile() const |
int | redBufferSize() const |
QSurfaceFormat::RenderableType | renderableType() const |
int | samples() const |
void | setAlphaBufferSize(int size) |
void | setBlueBufferSize(int size) |
(since 6.0) void | setColorSpace(const QColorSpace &colorSpace) |
void | setDepthBufferSize(int size) |
void | setGreenBufferSize(int size) |
void | setMajorVersion(int major) |
void | setMinorVersion(int minor) |
void | setOption(QSurfaceFormat::FormatOption option, bool on = true) |
void | setOptions(QSurfaceFormat::FormatOptions options) |
void | setProfile(QSurfaceFormat::OpenGLContextProfile profile) |
void | setRedBufferSize(int size) |
void | setRenderableType(QSurfaceFormat::RenderableType type) |
void | setSamples(int numSamples) |
void | setStencilBufferSize(int size) |
void | setStereo(bool enable) |
void | setSwapBehavior(QSurfaceFormat::SwapBehavior behavior) |
void | setSwapInterval(int interval) |
void | setVersion(int major, int minor) |
int | stencilBufferSize() const |
bool | stereo() const |
QSurfaceFormat::SwapBehavior | swapBehavior() const |
int | swapInterval() const |
bool | testOption(QSurfaceFormat::FormatOption option) const |
QPair<int, int> | version() const |
QSurfaceFormat & | operator=(const QSurfaceFormat &other) |
정적 공용 멤버
QSurfaceFormat | defaultFormat() |
void | setDefaultFormat(const QSurfaceFormat &format) |
관련 비회원
bool | operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
bool | operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
상세 설명
이 포맷에는 빨강, 녹색, 파랑의 컬러 버퍼 크기, 알파 버퍼 크기, 깊이 및 스텐실 버퍼 크기, 멀티샘플링을 위한 픽셀당 샘플 수가 포함됩니다. 또한 렌더링을 위한 OpenGL 프로필 및 버전, 스테레오 버퍼 활성화 여부, 스왑 동작과 같은 표면 구성 파라미터도 포함되어 있습니다.
참고: 컨텍스트 또는 창 형식 문제를 해결할 때 로깅 카테고리 qt.qpa.gl
를 활성화하면 도움이 될 수 있습니다. 플랫폼에 따라 OpenGL 초기화 및 QSurfaceFormat이 매핑되는 네이티브 비주얼 또는 프레임버퍼 구성과 관련하여 유용한 디버그 정보를 출력할 수 있습니다.
멤버 유형 문서
enum QSurfaceFormat::ColorSpace
이 열거형은 창과 연결된 기본 프레임버퍼가 표준 선형 연산 대신 주어진 인코딩에서 업데이트 및 블렌딩을 수행할 수 있는지 여부를 제어하여 기본 색 공간을 지정하는 데 사용됩니다.
Constant | 값 | 설명 |
---|---|---|
QSurfaceFormat::DefaultColorSpace | 0 | 지정되지 않은 기본 색 공간입니다. |
QSurfaceFormat::sRGBColorSpace | 1 | 플랫폼에서 GL_ARB_framebuffer_sRGB 또는 GL_EXT_framebuffer_sRGB 을 지원하며 이 값을 설정하면 창이 sRGB 지원 기본 프레임버퍼로 생성됩니다. 일부 플랫폼에서는 명시적으로 요청하지 않아도 sRGB 지원 기본 프레임버퍼가 있는 창을 반환할 수 있습니다. |
열거형 QSurfaceFormat::FormatOption
플래그 QSurfaceFormat::FormatOptions
이 열거형에는 QSurfaceFormat 와 함께 사용할 포맷 옵션이 들어 있습니다.
Constant | 값 | 설명 |
---|---|---|
QSurfaceFormat::StereoBuffers | 0x0001 | 서피스 포맷으로 스테레오 버퍼를 요청할 때 사용됩니다. |
QSurfaceFormat::DebugContext | 0x0002 | 추가 디버깅 정보가 포함된 디버그 컨텍스트를 요청하는 데 사용됩니다. |
QSurfaceFormat::DeprecatedFunctions | 0x0004 | 더 이상 사용되지 않는 함수를 OpenGL 컨텍스트 프로파일에 포함하도록 요청하는 데 사용됩니다. 지정하지 않으면 더 이상 사용되지 않는 것으로 표시된 지원 기능 없이 앞으로 호환되는 컨텍스트를 가져옵니다. 이 기능을 사용하려면 OpenGL 버전 3.0 이상이 필요합니다. |
QSurfaceFormat::ResetNotification | 0x0008 | OpenGL 컨텍스트의 재설정에 대한 알림을 활성화합니다. 그러면 컨텍스트의 isValid() 함수를 통해 상태를 쿼리할 수 있습니다. 이 플래그를 설정하지 않아도 컨텍스트 상태 손실이 발생하지 않는다는 보장은 없습니다. 또한 일부 구현에서는 이 플래그와 관계없이 컨텍스트 손실을 보고하도록 선택할 수도 있습니다. 컨텍스트 손실 모니터링을 동적으로 활성화하는 것을 지원하는 플랫폼(예: WGL을 사용하는 Windows 또는 GLX를 사용하는 Linux/X11(xcb)은 makeCurrent()를 호출할 때마다 상태를 모니터링합니다. 이에 대한 자세한 내용은 isValid()를 참조하세요. |
QSurfaceFormat::ProtectedContent | 0x0010 | 보호된 콘텐츠에 대한 액세스를 활성화합니다. 이를 통해 GPU가 보호된 리소스(서피스, 버퍼, 텍스처)에서 작동할 수 있습니다(예: DRM으로 보호된 비디오 콘텐츠). 현재 EGL에만 구현되어 있습니다. |
FormatOptions 유형은 QFlags<FormatOption>에 대한 typedef입니다. FormatOption 값의 OR 조합을 저장합니다.
enum QSurfaceFormat::OpenGLContextProfile
이 열거형은 QSurfaceFormat::setMajorVersion() 및 QSurfaceFormat::setMinorVersion()와 함께 OpenGL 컨텍스트 프로필을 지정하는 데 사용됩니다.
프로필은 OpenGL 3.2 이상에서 노출되며, 제한된 핵심 프로필과 사용되지 않는 지원 기능을 포함할 수 있는 호환성 프로필 중에서 선택하는 데 사용됩니다.
핵심 프로필에는 더 이상 사용되지 않고 상위 버전에서 제거될 예정인 기능이 여전히 포함되어 있을 수 있습니다. 설정된 OpenGL 버전에서 코어 프로필의 사용 중단된 기능에 액세스하려면 QSurfaceFormat 형식 옵션 QSurfaceFormat::DeprecatedFunctions 을 사용할 수 있습니다.
상수 | 값 | 설명 |
---|---|---|
QSurfaceFormat::NoProfile | 0 | OpenGL 버전이 3.2보다 낮습니다. 3.2 이상의 경우 CoreProfile과 동일합니다. |
QSurfaceFormat::CoreProfile | 1 | OpenGL 버전 3.0에서 더 이상 사용되지 않는 기능을 사용할 수 없습니다. |
QSurfaceFormat::CompatibilityProfile | 2 | 이전 OpenGL 버전의 기능은 사용할 수 있습니다. |
enum QSurfaceFormat::RenderableType
이 열거형은 표면의 렌더링 백엔드를 지정합니다.
Constant | 값 | 설명 |
---|---|---|
QSurfaceFormat::DefaultRenderableType | 0x0 | 지정되지 않은 기본 렌더링 메서드입니다. |
QSurfaceFormat::OpenGL | 0x1 | 데스크톱 OpenGL 렌더링 |
QSurfaceFormat::OpenGLES | 0x2 | OpenGL ES 2.0 렌더링 |
QSurfaceFormat::OpenVG | 0x4 | 오픈 벡터 그래픽 렌더링 |
enum QSurfaceFormat::SwapBehavior
이 열거형은 QSurfaceFormat 에서 표면의 스왑 동작을 지정하는 데 사용됩니다. 스왑 동작은 대부분 애플리케이션에 투명하지만 렌더링 지연 시간 및 처리량과 같은 요소에 영향을 미칩니다.
Constant | 값 | 설명 |
---|---|---|
QSurfaceFormat::DefaultSwapBehavior | 0 | 플랫폼의 기본, 지정되지 않은 스왑 동작입니다. |
QSurfaceFormat::SingleBuffer | 1 | 단일 버퍼링을 요청하는 데 사용되며, 중간 오프스크린 버퍼 없이 화면에 직접 OpenGL 렌더링이 수행될 때 깜박임이 발생할 수 있습니다. |
QSurfaceFormat::DoubleBuffer | 2 | 이는 일반적으로 데스크톱 플랫폼의 기본 스왑 동작으로, 하나의 백 버퍼와 하나의 프론트 버퍼로 구성됩니다. 백 버퍼로 렌더링이 수행된 다음 구현에 따라 백 버퍼와 프론트 버퍼가 스왑되거나 백 버퍼의 콘텐츠가 프론트 버퍼로 복사됩니다. |
QSurfaceFormat::TripleBuffer | 3 | 이 스왑 동작은 렌더링 속도가 화면 재생률을 간신히 따라갈 때 프레임을 건너뛰는 위험을 줄이기 위해 사용되기도 합니다. 플랫폼에 따라서는 파이프라이닝 동작이 개선되어 GPU를 약간 더 효율적으로 사용할 수도 있습니다. 트리플 버퍼링은 추가 프레임의 메모리 사용량과 지연 시간이 발생하며 기본 플랫폼에 따라 지원되지 않을 수 있습니다. |
멤버 함수 문서
QSurfaceFormat::QSurfaceFormat()
초기화된 기본 QSurfaceFormat을 구축합니다.
참고: 기본적으로 OpenGL 2.0이 요청되는데, 이는 플랫폼과 OpenGL 구현 간에 가장 높은 수준의 이식성을 제공하기 때문입니다.
QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)
주어진 포맷으로 QSurfaceFormat을 options 으로 구축합니다.
QSurfaceFormat::QSurfaceFormat(const QSurfaceFormat &other)
other 의 복사본을 생성합니다.
[noexcept]
QSurfaceFormat::~QSurfaceFormat()
QSurfaceFormat 를 파괴합니다.
int QSurfaceFormat::alphaBufferSize() const
컬러 버퍼의 알파 채널 크기를 비트 단위로 가져옵니다.
setAlphaBufferSize()도 참조하세요 .
int QSurfaceFormat::blueBufferSize() const
색상 버퍼의 파란색 채널의 비트 단위 크기를 가져옵니다.
setBlueBufferSize()도 참조하세요 .
const QColorSpace &QSurfaceFormat::colorSpace() const
색 공간을 반환합니다.
setColorSpace()도 참조하세요 .
[static]
QSurfaceFormat QSurfaceFormat::defaultFormat()
글로벌 기본 서피스 형식을 반환합니다.
setDefaultFormat()가 호출되지 않으면 기본값으로 구성된 QSurfaceFormat 이 반환됩니다.
setDefaultFormat()도 참조하세요 .
int QSurfaceFormat::depthBufferSize() const
깊이 버퍼 크기를 반환합니다.
setDepthBufferSize()도 참조하세요 .
int QSurfaceFormat::greenBufferSize() const
색상 버퍼의 녹색 채널 크기를 비트 단위로 가져옵니다.
setGreenBufferSize()도 참조하세요 .
bool QSurfaceFormat::hasAlpha() const
알파 버퍼 크기가 0보다 크면 true
을 반환합니다.
이는 표면이 픽셀 단위 반투명 효과와 함께 사용될 수 있음을 의미합니다.
int QSurfaceFormat::majorVersion() const
주요 OpenGL 버전을 반환합니다.
기본 버전은 2.0입니다.
setMajorVersion()도 참조하세요 .
int QSurfaceFormat::minorVersion() const
부 OpenGL 버전을 반환합니다.
setMinorVersion()도 참조하십시오 .
QSurfaceFormat::FormatOptions QSurfaceFormat::options() const
현재 설정된 형식 옵션을 반환합니다.
setOption(), setOptions() 및 testOption()도 참조하세요 .
QSurfaceFormat::OpenGLContextProfile QSurfaceFormat::profile() const
구성된 OpenGL 컨텍스트 프로필을 가져옵니다.
요청된 OpenGL 버전이 3.2 미만인 경우 이 설정은 무시됩니다.
setProfile()도 참조하세요 .
int QSurfaceFormat::redBufferSize() const
색상 버퍼의 빨간색 채널의 비트 단위 크기를 가져옵니다.
setRedBufferSize()도 참조하세요 .
QSurfaceFormat::RenderableType QSurfaceFormat::renderableType() const
렌더링 가능한 유형을 가져옵니다.
데스크톱 OpenGL, OpenGL ES 및 OpenVG 중에서 선택합니다.
setRenderableType()도 참조하세요 .
int QSurfaceFormat::samples() const
멀티샘플링이 활성화된 경우 픽셀당 샘플 수를 반환하고, 멀티샘플링이 비활성화된 경우 -1
을 반환합니다. 기본 반환 값은 -1
입니다.
setSamples()도 참조하세요 .
void QSurfaceFormat::setAlphaBufferSize(int size)
원하는 size 을 컬러 버퍼의 알파 채널 비트 단위로 설정합니다.
alphaBufferSize()도 참조하세요 .
void QSurfaceFormat::setBlueBufferSize(int size)
원하는 size 을 컬러 버퍼의 파란색 채널 비트 단위로 설정합니다.
blueBufferSize()도 참조하세요 .
[since 6.0]
void QSurfaceFormat::setColorSpace(const QColorSpace &colorSpace)
기본값을 설정합니다 colorSpace.
예를 들어, 이를 지원하는 플랫폼에서 기본 프레임버퍼가 sRGB를 지원하는 창을 요청할 수 있습니다.
참고: 요청된 색 공간이 플랫폼에서 지원되지 않는 경우 요청은 무시됩니다. 창을 만든 후 QSurfaceFormat 에 쿼리하여 색 공간 요청을 적용할 수 있는지 여부를 확인합니다.
참고: 이 설정은 창의 기본 프레임버퍼가 주어진 색 공간에서 업데이트 및 블렌딩이 가능한지 여부를 제어합니다. 이 설정은 애플리케이션의 출력을 자체적으로 변경하지 않습니다. 애플리케이션의 렌더링 코드에서 표준 선형 연산을 사용하는 대신 지정된 색 공간에서 업데이트 및 블렌딩을 수행하도록 적절한 OpenGL 호출을 통해 선택해야 합니다.
이 기능은 Qt 6.0에 도입되었습니다.
colorSpace()도 참조하세요 .
[static]
void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)
글로벌 기본 표면을 설정합니다 format.
이 형식은 QOpenGLContext, QWindow, QOpenGLWidget 및 유사한 클래스에서 기본적으로 사용됩니다.
해당 클래스의 자체 setFormat() 함수를 사용하여 언제든지 인스턴스별로 재정의할 수 있습니다. 그러나 애플리케이션을 시작할 때 모든 창에 대한 형식을 한 번 설정하는 것이 더 편리한 경우가 많습니다. 또한 이 함수를 통해 포맷을 설정하면 모든 컨텍스트와 서페이스, 심지어 Qt에서 내부적으로 생성한 컨텍스트까지 동일한 포맷을 사용하도록 보장하므로 공유 컨텍스트가 필요한 경우 적절한 동작이 보장됩니다.
참고: Qt::AA_ShareOpenGLContexts 을 설정할 때는 QGuiApplication 또는 QApplication 을 구성하기 전에 이 함수를 호출할 것을 강력히 권장합니다. 그렇지 않으면 format 이 글로벌 공유 컨텍스트에 적용되지 않으므로 나중에 컨텍스트 공유에 문제가 발생할 수 있습니다.
defaultFormat()도 참조하세요 .
void QSurfaceFormat::setDepthBufferSize(int size)
최소 깊이 버퍼 크기를 size 로 설정합니다.
depthBufferSize()도 참조하세요 .
void QSurfaceFormat::setGreenBufferSize(int size)
원하는 size 을 컬러 버퍼의 녹색 채널 비트 단위로 설정합니다.
greenBufferSize()도 참조하세요 .
void QSurfaceFormat::setMajorVersion(int major)
원하는 major OpenGL 버전을 설정합니다.
majorVersion()도 참조하세요 .
void QSurfaceFormat::setMinorVersion(int minor)
원하는 minor OpenGL 버전을 설정합니다.
기본 버전은 2.0입니다.
minorVersion()도 참조하세요 .
void QSurfaceFormat::setOption(QSurfaceFormat::FormatOption option, bool on = true)
on 이 참이면 형식 옵션 option 을 설정하고, 그렇지 않으면 옵션을 지웁니다.
옵션이 준수되었는지 확인하려면 서피스/컨텍스트를 만든 후 실제 형식과 요청된 형식을 비교합니다.
setOptions(), options() 및 testOption()도 참조하세요 .
void QSurfaceFormat::setOptions(QSurfaceFormat::FormatOptions options)
형식 옵션을 options 로 설정합니다.
옵션이 준수되었는지 확인하려면 서페이스/컨텍스트를 만든 후 실제 형식과 요청된 형식을 비교합니다.
options() 및 testOption()도 참조하세요 .
void QSurfaceFormat::setProfile(QSurfaceFormat::OpenGLContextProfile profile)
원하는 OpenGL 컨텍스트를 설정합니다 profile.
요청된 OpenGL 버전이 3.2 미만인 경우 이 설정은 무시됩니다.
profile()도 참조하세요 .
void QSurfaceFormat::setRedBufferSize(int size)
원하는 size 을 컬러 버퍼의 빨간색 채널 비트 단위로 설정합니다.
redBufferSize()도 참조하세요 .
void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)
원하는 렌더러블을 설정합니다 type.
데스크톱 OpenGL, OpenGL ES 및 OpenVG 중에서 선택합니다.
renderableType()도 참조하세요 .
void QSurfaceFormat::setSamples(int numSamples)
멀티샘플링이 활성화된 경우 선호하는 픽셀당 샘플 수를 numSamples 으로 설정합니다. 기본적으로 멀티샘플링은 비활성화되어 있습니다.
samples()도 참조하세요 .
void QSurfaceFormat::setStencilBufferSize(int size)
기본 스텐실 버퍼 크기를 size 비트로 설정합니다.
stencilBufferSize()도 참조하세요 .
void QSurfaceFormat::setStereo(bool enable)
enable 이 참이면 스테레오 버퍼링을 활성화하고, 그렇지 않으면 스테레오 버퍼링을 비활성화합니다.
스테레오 버퍼링은 기본적으로 비활성화되어 있습니다.
스테레오 버퍼링은 왼쪽 눈과 오른쪽 눈 이미지를 생성하기 위한 추가 색상 버퍼를 제공합니다.
stereo()도 참조하세요 .
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
서페이스의 스왑 behavior 을 설정합니다.
스왑 동작은 단일, 이중 또는 삼중 버퍼링을 원하는지 여부를 지정합니다. 기본값인 DefaultSwapBehavior 은 플랫폼의 기본 스왑 동작을 제공합니다.
swapBehavior()도 참조하세요 .
void QSurfaceFormat::setSwapInterval(int interval)
기본 설정 스왑 간격을 설정합니다. 스왑 간격은 버퍼 스왑이 발생하기 전에 표시되는 최소 비디오 프레임 수를 지정합니다. 이 값은 창에 그리는 GL 그림을 화면의 세로 새로 고침에 동기화하는 데 사용할 수 있습니다.
interval 값을 0으로 설정하면 수직 새로 고침 동기화가 꺼지고, 0보다 큰 값은 수직 동기화가 켜집니다. interval 값을 더 높은 값(예: 10)으로 설정하면 모든 버퍼 스왑 사이에 10번의 수직 리트레이스가 수행됩니다.
기본 간격은 1입니다.
스왑 간격 변경은 기본 플랫폼에서 지원되지 않을 수 있습니다. 이 경우 요청은 자동으로 무시됩니다.
swapInterval()도 참조하세요 .
void QSurfaceFormat::setVersion(int major, int minor)
원하는 major 및 minor OpenGL 버전을 설정합니다.
기본 버전은 2.0입니다.
version()도 참조하세요 .
int QSurfaceFormat::stencilBufferSize() const
스텐실 버퍼 크기를 비트 단위로 반환합니다.
setStencilBufferSize()도 참조하세요 .
bool QSurfaceFormat::stereo() const
스테레오 버퍼링이 활성화된 경우 true
을 반환하고, 그렇지 않으면 false 를 반환합니다. 스테레오 버퍼링은 기본적으로 비활성화되어 있습니다.
setStereo()도 참조하세요 .
QSurfaceFormat::SwapBehavior QSurfaceFormat::swapBehavior() const
구성된 스왑 동작을 반환합니다.
setSwapBehavior()도 참조하세요 .
int QSurfaceFormat::swapInterval() const
스왑 간격을 반환합니다.
setSwapInterval()도 참조하세요 .
bool QSurfaceFormat::testOption(QSurfaceFormat::FormatOption option) const
option 형식 옵션이 설정되어 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
options()도 참조하세요 .
QPair<int, int> QSurfaceFormat::version() const
OpenGL 버전을 나타내는 QPair<int, int>를 반환합니다.
예를 들어 format.version() >= qMakePair(3, 2)와 같이 버전 확인에 유용합니다.
setVersion()도 참조하세요 .
QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)
이 개체에 other 을 할당합니다.
관련 비회원
[noexcept]
bool operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
두 개의 QSurfaceFormat 객체 lhs 와 rhs 의 모든 옵션이 같으면 false
을 반환하고, 그렇지 않으면 true
을 반환합니다.
[noexcept]
bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
두 개의 QSurfaceFormat 객체 lhs 및 rhs 의 모든 옵션이 같으면 true
을 반환합니다.
© 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.