← GFXBench 图形测试的鸿蒙移植

代码示例

rate-example.cpp 是独立的 C++17 计分公式示例,展示实际帧数、测量耗时与名义场景时长怎样对应 FPS 和归一化帧数。

示例已通过 HarmonyOS ARM64 编译器的 C++17 语法检查。它只包含计分公式,不创建窗口、不运行渲染,也不包含原场景和模型资源。

正文中的 ArkTS XComponent 与 C++ 图形分流片段用于解释调用位置,依赖应用状态字段及原测试框架。

文件

rate-example.cpp 19 行 下载 ↓
#include <cmath>
#include <cstdint>
#include <optional>

struct Rates { double fps; double normalizedFrames; };

// Standalone illustration of the measurement formula, not a rendering runner.
std::optional<Rates> MakeRates(std::uint64_t frames,
                              double elapsedMs,
                              double nominalMs) {
    if (!std::isfinite(elapsedMs) || elapsedMs <= 0 ||
        !std::isfinite(nominalMs) || nominalMs <= 0) {
        return std::nullopt;
    }
    const double fps = static_cast<double>(frames) * 1000.0 / elapsedMs;
    const double score = static_cast<double>(frames) * nominalMs / elapsedMs;
    return Rates{fps, score};
}