11月26日在華為Mate品牌盛典上,全新Mate70系列及多款全場景新品正式亮相。在遊戲領域,HarmonyOS NEXT加持下游戲的效能得到充分釋放。HarmonyOS SDK為開發者提供了軟硬協同的系統級圖形加速解決方案------Graphics Accelerate Kit(圖形加速服務),幫助遊戲應用快速整合超幀、GTX自適應穩態渲染和自適應重新整理率等渲染最佳化能力,並解決遊戲執行不流暢、卡頓掉幀等痛點體驗問題,讓接入HarmonyOS SDK的手遊,如《決勝巔峰》等,在Mate新機上的體驗實現大幅提升。
獨特大視野,推塔體驗細膩又流暢
《決勝巔峰》在HarmonyOS NEXT上首發,並且在Mate X6摺疊屏上首次以大視野和高幀率的形式呈現給MOBA類遊戲玩家。在Mate X6摺疊屏手機的超大視野下,《決勝巔峰》的可視畫面提升25%,能夠更全面地觀察戰場。透過超幀技術,將幀率突破到120幀,使得每一次技能釋放、每一次推塔,都顯得更加細膩、順暢,極大地提升了遊戲的沉浸感,為玩家帶來前所未有的對戰快感。
在對快速反應要求極高的MOBA類遊戲中,超幀技術帶來的120幀效果讓畫面更為流暢,幀率也更穩定,幫助玩家更好地掌控局勢,提升整體的遊戲體驗。在團戰中,華麗的技能和流暢的動畫結合,也使得戰鬥畫面更加震撼。
最佳化效能開銷,遊戲效果不 "打折"
透過結合《決勝巔峰》遊戲開發者主動提供的遊戲過程關鍵資訊,可以實現GTX自適應穩態渲染和自適應重新整理率等遊戲加速方案,幫助開發者打造高畫質、高流暢、低功耗的非凡遊戲體驗。
自適應穩態渲染可根據遊戲場景、GPU負載等資訊,動態調整渲染負載,減少遊戲掉幀,讓玩家獲得一個更加穩定的遊戲體驗。
自適應穩態渲染技術接入架構示意圖
自適應穩態渲染接入程式碼:
// 初始化ABR例項,配置Buffer解析度因子範圍屬性,結合具體遊戲解析度、畫質設定合適的範圍
// 例如設定ABR對Buffer解析度進行0.8~1.0倍的自適應調整
errorCode = HMS_ABR_SetScaleRange(context_, 0.8f, 1.0f);
if (errorCode != ABR_SUCCESS) {
GOLOGE("HMS_ABR_SetScaleRange execution failed, error code: %d.", errorCode);
return false;
}
// 啟用ABR上下文例項
errorCode = HMS_ABR_Activate(context_);
if (errorCode != ABR_SUCCESS) {
GOLOGE("HMS_ABR_Activate execution failed, error code: %d.", errorCode);
return false;
}
// 相機運動資料結構體,設定每幀實時相機運動資料
ABR_CameraData cameraData;
cameraData.position = static_cast<ABR_Vector3>(camera_.GetPosition());
cameraData.rotation = static_cast<ABR_Vector3>(camera_.GetRotation());
// 每幀相機運動資料更新
errorCode = HMS_ABR_UpdateCameraData(context_, &cameraData);
if (errorCode != ABR_SUCCESS) {
GOLOGE("HMS_ABR_UpdateCameraData execution failed, error code: %d.", errorCode);
return false;
}
//渲染前的準備,繫結目標幀緩衝索引,清空顏色緩衝 renderer_->BeginRenderTarget(fbo,BACKGROUND.x_, BACKGROUND.y_, BACKGROUND.z_, 1.0F);
//在Buffer渲染前呼叫,執行失敗不影響Buffer正常渲染
errorCode = HMS_ABR_MarkFrameBuffer_GLES(context_);
if (errorCode != ABR_SUCCESS) {
GOLOGE("HMS_ABR_MarkFrameBuffer_GLES execution failed, error code: %d.", errorCode);
}
//呼叫繪製方法進行渲染
opaqueLayer_Render(sceneDelta, camera_.GetviewMatrix() .lastViewProj_);
//獲取每幀的縮放資訊
float scale;
erorCode =HMS_ABR_GetScale(context_. &scale);
GOLOGD("Scale is %f, ". scale);
if (errorCode != ABR_SUCCESS) {
GOLOGE("HMS_ABR_GetScale execution failed, error code: %d.", errorCode);
}
//將幀緩衝索引繫結為預設值0
renderer_->EndRenderTarget();
點選檢視自適應穩態渲染接入教程
據統計,多數遊戲120FPS檔位下,其實約70%渲染場景是沒有變化的,因此主場景裡將近7成的渲染都並非是必要的。
自適應重新整理率可以根據遊戲場景、玩家操作、CPU負載、GPU負載、手機溫度等資訊,智慧地調整遊戲幀率與螢幕重新整理率,保證體驗基礎上實現降低功耗。在玩家休閒狀態、遊戲畫面變化幅度小的情況下,幀率可適當調低,節省電量、控制溫度;而在玩家操作劇烈、遊戲畫面急速變化時,幀率則提升到極致水平,保證玩家的遊戲體驗。
自適應重新整理率接入架構示意圖
自適應重新整理率接入流程示意圖
自適應重新整理率接入程式碼示意圖
點選檢視自適應重新整理率接入教程
除了圖形加速服務(Graphics Accelerate Kit),HarmonyOS SDK還提供更多圖形開放能力,為遊戲等過載應用的圖形渲染提供幫助,幫助開發者打造高幀率、高畫質、低功耗的使用者體驗。
探索更多
訪問圖形加速服務(Graphics Accelerate Kit),瞭解更多詳情開始使用。
*本文所提及資料均為內部實驗室測試結果
*本文引用素材來自三方授權,因版本/機型不同可能存在變化,以實際為準。