把 GPX 路線動畫交給 GPU:Windows 原生工具的設計與輸出證據
從 GPX 路線、Windows 原生 GPU pipeline 到一段有明確限制的 HEVC MP4 記錄,說明 GPX Animator GPU 的產品範圍與證據邊界。
文章目錄
GPX 是用來保存 GPS 路線點的檔案格式;它很適合保存路線,卻不適合直接講故事:讀者看見的是一串座標,不是路線如何穿過地圖、距離如何累積,或爬升在哪裡發生。GPX Animator GPU Edition 是我做的 Windows 原生工具,讓這些資料在地圖上變成一段可以播放的動畫,再輸出成 MP4。
這篇是 GPX Animator GPU 的 Overview Article:Profile 負責快速說明 Project 身份與狀態,這裡則說清楚產品流程、上游能力、實際媒體證據,以及哪些數字只是某一次 recorded output,而不是通用 benchmark。
GPU 先解決哪一段問題?
路線的距離與高度仍然要先被整理;GPU 解決的是「把已整理的場景畫出來並輸出成影片」這一段。公開 repository 的主流程是 Windows native Rust desktop app:先用 D3D11/Direct2D(Windows 的繪圖 API)畫出地圖與路線,再放進 NVIDIA RTX texture(GPU 可直接讀寫的畫面緩衝),由 NVENC(NVIDIA 的硬體編碼器)轉成 HEVC(High Efficiency Video Coding,也就是 H.265)或 H.264,最後封裝成 MP4。
README 也明確說明它需要 Windows 10/11 x64、具備 NVENC 的 NVIDIA RTX GPU,且不接受 Intel、AMD、Microsoft WARP 或 CPU fallback。因此,「GPU-first」在這裡不是把任何電腦都宣稱成 GPU 輸出,而是把硬體前提寫進產品契約:不符合條件就拒絕輸出,讓執行路徑和證據保持一致。
載入一份 GPX 路線
以一段 0706 route run 為例,程式載入後會顯示:
- 路線長度:61.27 km
- 爬升:794 m
- GPS 點:4,161 個
- 程式會移除停留點
這些不是從畫面估算的數字:上游 repository 的固定路線基準測試(golden_0706 golden test)仍直接檢查 4,161 個來源點、61,270.092 公尺距離(允許誤差 0.5 公尺)與約 794 公尺爬升,並只保證有停留點被移除。畫面則補上程式如何把這些資料放回地圖、HUD 與海拔圖。

Windows 版工具載入 GPX 路線後的畫面:地圖上顯示行程軌跡、距離、高度和移除停留點後的結果。
這張圖的價值不是證明「每次都會得到相同畫面」,而是讓讀者看到輸入資料、可見統計與渲染結果在同一個 runtime 中對得上。
從載入到輸出,真正要對齊的是什麼?
實際流程是先載入一段路線,確認地圖上的路線與統計值,再選擇輸出設定。Follow camera(跟隨鏡頭)讓畫面沿著路線前進;Fit camera(完整路線鏡頭)則保留整段路線的空間關係。兩種模式都可以保留衛星地圖、HUD 與海拔圖,讓最後的影片不只是地圖上有一條線,而是能看出目前走到哪裡、爬升如何變化。
輸出設定
這次 0706 recorded output 使用的設定是:
- 畫面比例:16:9
- 解析度:1080p,也就是 1920×1080
- 影格率:30 FPS
- 編碼:H.265 / HEVC
- 影片秒數欄位:20 秒
- 品質:高畫質
GPU 負責把地圖動畫畫出來,HEVC 負責把畫面壓成 MP4。這裡的 30 FPS 是這次記錄的輸出設定,不是工具唯一支援的 frame rate;目前版本的 UI 也提供 4K、2.5K、1080p、720p 與 60 FPS 選項。

輸出設定畫面提供 4K 和 60 FPS 選項;這表示可以選擇該規格,不代表實際輸出一定能維持 4K60。

另一組可選設定:2.5K、鏡頭跟隨、HEVC 和 60 FPS。它和下方展示的 1080p 影片是不同設定。
按下輸出後,進度列會顯示 Rendering 和目前的處理速度。

輸出進行中,畫面顯示當前解析度、影格率和 HEVC 設定。進度上的 FPS 數字反映畫面繪製速度,不等於成品影片的播放速度。
輸出結果
作者保存的輸出記錄列出以下檔案資訊;記錄中說明它曾由 FFmpeg 讀取:
- 1920×1080,16:9
- 30 FPS
- HEVC Main
- 750 frames
- 實際長度 25 秒
介面上的秒數是輸入設定;成品影片的實際長度仍應以輸出檔案為準。
輸出影片會把紅色路線、目前公里數、海拔數字,以及右上角的海拔圖一起寫進畫面。

輸出影片畫面顯示紅色路線、目前里程與高度;地圖和高度圖保留了行程進度。
技術重點
程式會讓畫面留在顯示卡中處理,再交給硬體編碼成 MP4,避免把每一張完成的畫面都搬回處理器。這能減少資料搬動,但實際輸出速度仍要看完整影片測試。
對使用者來說,最後會看到的是一條可以跟著鏡頭移動的路線、同步更新的公里數與海拔,以及一個能正常播放的 MP4。GPU、HEVC 與 camera mode 是支撐這個流程的技術;真正重要的是它們是否能被測量、追蹤並在硬體不符合時拒絕假裝成功。
這次示範能告訴我們什麼?
這次測試使用一條 61.27 公里、4,161 個定位點的路線,爬升約 794 公尺;工具能把路線畫在地圖上、同步顯示距離與高度,並輸出一支 1920×1080、每秒 30 格、長 25 秒的影片。
這是一條路線和一台電腦上的完整操作示範,不代表所有路線和硬體都會得到相同畫質或速度。設定畫面雖然可以選 4K 和 60 FPS,但本文沒有宣稱它能在所有情況下即時完成這種輸出;進度上的 183.5 FPS 也只是繪製速度,不是成品影片的播放速度。
使用時需要知道的事
- 這是 Windows 原生工具;沒有符合 NVENC 的 NVIDIA RTX GPU 時,輸出會被拒絕,而不是靜默改用 CPU 或另一家 GPU 的 fallback。
- 第一次輸出可能會先下載地圖;之後會使用本機快取。離線時若缺少地圖,程式會用簡化底圖補上。
- 這段示範來自一條路線和特定硬體,只能展示當時的輸出效果,不能代表所有路線和電腦的速度或畫質。