SDLPainter 1.2.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
sdl_painter::FrameStats Yapı(Struct) Referans

Bir karenin çizim maliyeti — profilleme ve ekran üstü gösterim için. Ayrıntılar...

#include <frame_stats.h>

Public Özellikler(attribute)

double cpu_frame_ms {0.0}
 Begin()End() arası CPU süresi (milisaniye).
double gpu_frame_ms {0.0}
 Karenin GPU süresi (milisaniye); ölçülemiyorsa 0.
uint32_t draw_calls {0}
 IRenderer'a giden çizim çağrısı sayısı (DrawTriangles + DrawTextured).
uint32_t batches {0}
 Geometri üreten batch (flush) sayısı.
uint32_t vertices {0}
 GPU'ya gönderilen toplam vertex sayısı.
uint32_t state_changes {0}
 Batch'lenemeyen GPU durum değişikliği sayısı.

Ayrıntılı tanımlama

Bir karenin çizim maliyeti — profilleme ve ekran üstü gösterim için.

Painter her karede doldurur; Painter::GetFrameStats ile okunur. Değerler son tamamlanan kareye aittir (End() çağrıldıktan sonra geçerlidir).

Bu sayaçların neden önemli olduğu examples/benchmarks/README.md içinde ölçümle anlatılır: aynı görüntüyü üreten iki çizim deseni arasında draw_calls farkı 20 kata varan kare süresi farkı yaratabiliyor.

Üye Veri Dokümantasyonu

◆ batches

uint32_t sdl_painter::FrameStats::batches {0}

Geometri üreten batch (flush) sayısı.

Not
Bugünkü tasarımda her flush tam olarak bir çizim çağrısı ürettiği için draw_calls ile aynıdır. Ayrı tutulur, çünkü ikisi farklı katmanı ölçer: biri batcher'ın, diğeri backend'in davranışıdır.

◆ gpu_frame_ms

double sdl_painter::FrameStats::gpu_frame_ms {0.0}

Karenin GPU süresi (milisaniye); ölçülemiyorsa 0.

OpenGL backend'de GL_TIME_ELAPSED timer query ile ölçülür. Sonuç bir kare gecikmeli okunur (senkronizasyon duraklaması yaratmamak için), yani gösterilen değer bir önceki kareye aittir. Vulkan backend'de şu an ölçülmez ve 0 kalır.

◆ state_changes

uint32_t sdl_painter::FrameStats::state_changes {0}

Batch'lenemeyen GPU durum değişikliği sayısı.

Scissor (clip) ayarları, projeksiyon ve model matrisi yüklemeleri. Renk ve transform bu sayaca girmez — ikisi de vertex verisinde taşındığı için durum değişikliği değildir.


Bu yapı(struct) için dokümantasyon aşağıdaki dosyadan üretilmiştir: