QOpenGLTimeMonitor Class
QOpenGLTimeMonitor 클래스는 일련의 OpenGL 타이머 쿼리 객체를 래핑합니다. 더 보기...
| 헤더: | #include <QOpenGLTimeMonitor> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS OpenGL) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake: | QT += opengl |
| 상속: | QObject |
- 상속된 멤버를 포함한 모든 멤버 목록
- QOpenGLTimeMonitor는 3D 렌더링의 일부입니다.
공개 함수
| QOpenGLTimeMonitor(QObject *parent = nullptr) | |
| virtual | ~QOpenGLTimeMonitor() |
| bool | create() |
| void | destroy() |
| bool | isCreated() const |
| bool | isResultAvailable() const |
| QList<GLuint> | objectIds() const |
| int | recordSample() |
| void | reset() |
| int | sampleCount() const |
| void | setSampleCount(int sampleCount) |
| QList<GLuint64> | waitForIntervals() const |
| QList<GLuint64> | waitForSamples() const |
상세 설명
QOpenGLTimeMonitor 클래스는 렌더링 애플리케이션에서 요구하는 세분화 수준에 맞춰 GPU상의 시간 간격을 측정하는 데 사용되는 OpenGL 타이머 쿼리 객체 모음을 편리하게 감싸는 래퍼입니다.
OpenGL 타이머 쿼리 객체는 렌더링 코드에서 관심 있는 위치의 GPU 타임스탬프를 기록하기 위해 순차적으로 쿼리됩니다. 모든 타이머 쿼리 결과가 나오면 결과를 가져올 수 있으며, QOpenGLTimerMonitor가 기록된 시간 간격을 계산해 줍니다.
이 클래스의 일반적인 사용 사례는 애플리케이션의 렌더링 알고리즘을 프로파일링하거나, 동적인 성능/품질 균형을 위해 해당 알고리즘을 실시간으로 조정하는 것입니다.
렌더링 함수에서 QOpenGLTimeMonitor를 사용하기 전에 setSamples()를 호출하여 기록할 샘플 포인트의 수를 설정해야 합니다. N개의 샘플 포인트를 측정하면 N-1개의 시간 간격이 산출된다는 점에 유의하십시오. 샘플 포인트 수를 설정한 후에는 유효한 현재 OpenGL 컨텍스트를 사용하여 create() 함수를 호출하여 필요한 쿼리 타이머 객체를 생성해야 합니다. 이러한 단계는 일반적으로 초기화 함수에서 한 번만 수행됩니다.
recordSample() 함수를 사용하여 시간을 측정하고자 하는 OpenGL 명령이 포함된 코드 블록을 구분하십시오. isResultAvailable() 함수를 사용하여 결과 시간 샘플과 시간 간격의 사용 가능 여부를 확인할 수 있습니다. 계산된 시간 간격과 원시 타임스탬프 샘플은 각각 차단형 함수인 waitForIntervals() 및 waitForSamples()을 통해 가져올 수 있습니다.
결과를 가져온 후, 새로운 샘플링 라운드(예: 다음 프레임)를 시작하기 전에 반드시 reset() 함수를 호출하여 캐시된 결과를 지우고 타이머 인덱스를 첫 번째 타이머 객체로 재설정해야 합니다.
QOpenGLTimerQuery도 참조하십시오 .
멤버 함수 설명서
[explicit] QOpenGLTimeMonitor::QOpenGLTimeMonitor(QObject *parent = nullptr)
지정된 ` parent`를 사용하여 `QOpenGLTimeMonitor` 인스턴스를 생성합니다. 사용하기 전에 유효한 OpenGL 컨텍스트를 사용하여 ` create()`를 호출해야 합니다.
setSampleCount() 및 create()도 참조하십시오 .
[virtual noexcept] QOpenGLTimeMonitor::~QOpenGLTimeMonitor()
QOpenGLTimeMonitor 와 그 기반이 되는 모든 OpenGL 리소스를 삭제합니다.
bool QOpenGLTimeMonitor::create()
recordSample()을 연속적으로 호출하는 사이에 OpenGL 명령을 실행하는 데 소요된 시간을 추적하는 데 사용될 sampleCount() OpenGL 타이머 쿼리 객체를 인스턴스화합니다.
OpenGL 타이머 쿼리 객체를 생성할 수 있는 경우 true 를 반환합니다.
destroy(), setSampleCount(), recordSample()도 참조하십시오 .
void QOpenGLTimeMonitor::destroy()
이 인스턴스 내에서 사용 중인 모든 OpenGL 타이머 쿼리 객체를 삭제합니다.
create()도 참조하십시오 .
bool QOpenGLTimeMonitor::isCreated() const
기본이 되는 OpenGL 쿼리 객체가 생성된 경우 ` true `을 반환합니다. 이 함수가 ` true `을 반환하고 관련 OpenGL 컨텍스트가 현재 활성화된 상태라면, 이 객체를 사용하여 시간 샘플을 기록할 수 있습니다.
bool QOpenGLTimeMonitor::isResultAvailable() const
OpenGL 타이머 쿼리 결과를 확인할 수 있는 경우 true 를 반환합니다.
waitForSamples() 및 waitForIntervals()도 참조하십시오 .
QList<GLuint> QOpenGLTimeMonitor::objectIds() const
OpenGL 타이머 쿼리 객체의 객체 ID가 포함된 ` QList `를 반환합니다.
int QOpenGLTimeMonitor::recordSample()
OpenGL 명령 큐의 이 지점에서 OpenGL 타이머 쿼리를 발행합니다. 애플리케이션의 렌더링 함수 내에서 이 함수를 순차적으로 호출하면, 이 함수를 연속적으로 호출하는 사이에 OpenGL 명령을 실행하는 데 소요된 GPU 시간에 대한 세부 정보를 수집할 수 있습니다.
setSampleCount(), isResultAvailable(), waitForSamples(), waitForIntervals()도 참조하십시오 .
void QOpenGLTimeMonitor::reset()
타임 모니터를 초기화하여 다음 렌더링 프레임에서 사용할 수 있도록 준비합니다. 이전 결과를 확보한 후, 다음 프레임에서 처음으로 ` recordSample()`를 호출하기 전에 이 메서드를 호출하십시오.
recordSample()도 참조하십시오 .
int QOpenGLTimeMonitor::sampleCount() const
setSampleCount()를 통해 요청된 샘플 포인트의 개수를 반환합니다. setSampleCount() 호출 후 create()가 성공적으로 호출된 경우, 반환되는 값은 실제로 사용할 수 있는 샘플 포인트의 개수가 됩니다.
샘플 수(sample count)의 기본값은 2이며, 이는 단일 구간을 측정하게 됩니다.
setSampleCount()도 참조하십시오 .
void QOpenGLTimeMonitor::setSampleCount(int sampleCount)
샘플 포인트 수를 ` sampleCount`로 설정합니다. 이 함수를 사용하여 샘플 수를 설정한 후에는 ` create()`를 호출하여 기본이 되는 OpenGL 타이머 쿼리 객체를 인스턴스화해야 합니다.
새로운 sampleCount 값은 2 이상이어야 합니다.
sampleCount(), create(), recordSample()도 참조하십시오 .
QList<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const
recordSample() 호출로 구분된 시간 간격을 포함하는 ` QList `를 반환합니다. 결과 벡터에는 실제 타임스탬프 샘플이 아닌 중간 간격이 포함되므로 요소 수가 하나 적습니다.
이 함수는 OpenGL이 결과가 준비되었음을 알릴 때까지 대기합니다. isResultAvailable()를 호출하기 전에 결과의 준비 여부를 확인하는 것이 좋습니다.
waitForSamples() 및 isResultAvailable()도 참조하십시오 .
QList<GLuint64> QOpenGLTimeMonitor::waitForSamples() const
recordSample() 함수를 통해 기록된 GPU 타임스탬프를 포함하는 ` QList ` 객체를 반환합니다.
이 함수는 OpenGL이 결과가 준비되었다고 알릴 때까지 차단됩니다. isResultAvailable()을 호출하기 전에 결과의 가용성을 확인하는 것이 좋습니다.
참고: 이 함수는 OpenGL 3.3 이상 또는 ARB_timer_query 확장이 있는 시스템에서만 작동합니다. 자세한 내용은 QOpenGLTimerQuery 를 참조하십시오.
waitForIntervals() 및 isResultAvailable()도 참조하십시오 .
© 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.