+ case AT_PrintSPF:
+ {
+ // Using a (apparently) Soviet trick to calculate the stddev in one pass
+ // This was my favourite algorithm in my Physics honours project
+ // Ah the memories
+ // The horrible horrible memories
+ // At least things won't get that bad
+ // Right?
+ if (currentAction.loops <= 1)
+ {
+ double n = double(currentAction.iz);
+ m_spf_cpu_mean /= n;
+ m_spf_gpu_mean /= n;
+
+ m_spf_cpu_stddev = sqrt(m_spf_cpu_stddev / n - m_spf_cpu_mean*m_spf_cpu_mean);
+ m_spf_gpu_stddev = sqrt(m_spf_gpu_stddev / n - m_spf_gpu_mean*m_spf_gpu_mean);
+
+
+
+ printf("%d\t%f\t%f\t%f\t%f\n", currentAction.iz,
+ m_spf_gpu_mean, m_spf_gpu_stddev,
+ m_spf_cpu_mean, m_spf_cpu_stddev);
+ }
+ else
+ {
+
+ double spf_cpu = scr->GetLastFrameTimeCPU();
+ double spf_gpu = scr->GetLastFrameTimeGPU();
+
+ m_spf_cpu_mean += spf_cpu;
+ m_spf_gpu_mean += spf_gpu;
+
+ m_spf_cpu_stddev += spf_cpu*spf_cpu;
+ m_spf_gpu_stddev += spf_gpu*spf_gpu;
+ }
+ break;
+ }
+ case AT_PrintBounds:
+ {
+ printf("%s\t%s\t%s\t%s\t%s\t%s\n", Str(view->GetBounds().x).c_str(), Str(view->GetBounds().y).c_str(), Str(view->GetBounds().w).c_str(), Str(view->GetBounds().h).c_str(), Str(Log10(view->GetBounds().w)).c_str(), Str(Log10(view->GetBounds().h)).c_str());
+ break;
+ }
+ case AT_ProfileDisplay:
+ {
+ g_profiler.Enable(currentAction.iz);
+ break;
+ }