QOpenGLTimeMonitor Class

QOpenGLTimeMonitor 클래스는 OpenGL 타이머 쿼리 객체 시퀀스를 래핑합니다. 더 보기...

Header: #include <QOpenGLTimeMonitor>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
상속합니다: QObject

공용 함수

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가 성공적으로 호출된 경우 반환되는 값은 실제 사용할 수 있는 샘플 포인트 수입니다.

샘플 개수의 기본값은 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()도 참조하세요 .

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