☰
鸿蒙开发-XEngine的扩展常量有哪些?扩展定义速查手册
2026/10/17 13:07:38 网站建设 项目流程

XEngine 扩展定义速查:所有特性名称和参数宏一览

前面 14 篇文章分别介绍了 XEngine Kit 的各个特性。在实际开发中,你经常需要查阅各种扩展名称、参数宏定义。这篇文章把xeg_extension_defs.h里的所有宏定义整理出来,方便你快速查找。

可以把它当作一个"字典"来用。

扩展名称宏

下面是 XEngine 各类扩展的整体分类:

XEngine 扩展特性

超分类

着色率类

光线追踪类

高性能着色器类

空域 GPU 超分

空域 AI 超分

时域 AI 超分

自适应 VRS

RTGI 全局光照

RT ShadowAO 阴影和环境光遮蔽

RT Reflection 反射

HPS 基数排序

这些宏定义了各个 XEngine 特性的名称字符串。在查询扩展支持的时候需要用到它们。

超分类

宏名值说明
XEG_SPATIAL_UPSCALE_EXTENSION_NAME"XEG_spatial_upscale"空域 GPU 超分
XEG_SPATIAL_UPSCALE_VERSION1空域 GPU 超分版本号
XEG_NEURAL_UPSCALE_EXTENSION_NAME"XEG_neural_upscale"空域 AI 超分
XEG_NEURAL_UPSCALE_VERSION1空域 AI 超分版本号
XEG_TEMPORAL_UPSCALE_EXTENSION_NAME"XEG_temporal_upscale"时域 AI 超分
XEG_TEMPORAL_UPSCALE_VERSION1时域 AI 超分版本号

着色率类

宏名值说明
XEG_ADAPTIVE_VRS_EXTENSION_NAME"XEG_adaptive_vrs"自适应 VRS
XEG_ADAPTIVE_VRS_VERSION1自适应 VRS 版本号

光线追踪类

宏名值说明
XEG_RTGI_EXTENSION_NAME"XEG_rtgi"光线追踪全局光照
XEG_RT_SHADOW_AO_EXTENSION_NAME"XEG_rt_shadow_ao"光线追踪阴影和环境光遮蔽
XEG_RT_REFLECTION_EXTENSION_NAME"XEG_rt_reflection"光线追踪反射

高性能着色器类

宏名值说明
XEG_HPS_RADIX_SORT_EXTENSION_NAME"XEG_hps_radix_sort"高性能基数排序

特性开关宏

除了扩展名称,还有几个特性开关宏:

宏名值说明
XEG_spatial_upscale1空域 GPU 超分特性开关
XEG_neural_upscale1空域 AI 超分特性开关
XEG_temporal_upscale1时域 AI 超分特性开关
XEG_adaptive_vrs1自适应 VRS 特性开关

自适应 VRS 参数宏

这些宏用在HMS_XEG_AdaptiveVRSParameter(GLES)或者XEG_AdaptiveVRSDescription(Vulkan)里。

宏名值说明类型必选/可选
XEG_ADAPTIVE_VRS_INPUT_SIZE0x1U输入图像宽高GLsizei[2]必填
XEG_ADAPTIVE_VRS_INPUT_REGION0x2U输入图像区域GLuint[4]可选
XEG_ADAPTIVE_VRS_TEXEL_SIZE0x3U纹素大小,支持 [8,8] 和 [16,16]GLsizei[2]可选,默认 [8,8]
XEG_ADAPTIVE_VRS_ERROR_SENSITIVITY0x4U灵敏度阈值,[0,1]GLfloat*可选,默认 0.5
XEG_ADAPTIVE_VRS_FLIP0x5U是否翻转图像GLboolean*可选,默认 false

神经网络超分参数宏

用在HMS_XEG_NeuralUpscaleParameter(GLES)里。

宏名值说明类型必选/可选
XEG_NEURAL_UPSCALE_SCISSOR0x1U裁剪窗口 (x, y, w, h)GLuint[4]可选
XEG_NEURAL_UPSCALE_SHARPNESS0x2U锐化度,[0, 1]GLfloat*可选,默认 0.2
XEG_NEURAL_UPSCALE_INPUT_HANDLE0x4UOH_NativeBuffer handle指针必填

注意:XEG_NEURAL_UPSCALE_INPUT_HANDLE是必填的。神经网络超分的输入纹理必须由OH_NativeBuffer创建,且需要把对应的 handle 设置进去。

空域 GPU 超分参数宏

用在HMS_XEG_SpatialUpscaleParameter(GLES)里。

宏名值说明类型必选/可选
XEG_SPATIAL_UPSCALE_SCISSOR0x1U裁剪窗口 (x, y, w, h)GLuint[4]可选
XEG_SPATIAL_UPSCALE_SHARPNESS0x2U锐化度,[0, 1]GLfloat*可选

时域 AI 超分参数宏

用在HMS_XEG_TemporalUpscaleParameter(GLES)里。

宏名值说明类型必选/可选
XEG_TEMPORAL_UPSCALE_INPUT_SIZE0x1U输入纹理宽高GLuint[2]必填
XEG_TEMPORAL_UPSCALE_JITTER_NUM0x2U抖动周期数,[4, 16],推荐 8GLuint*必填
XEG_TEMPORAL_UPSCALE_DEPTH_REVERSED0x3U深度是否反转GLboolean*必填
XEG_TEMPORAL_UPSCALE_RESET_HISTORY0x4U是否重置历史帧GLboolean*必填
XEG_TEMPORAL_UPSCALE_STEADY_LEVEL0x5U稳定等级,[0, 1],默认 0.5GLfloat*可选

其他通用宏

宏名值说明
XEG_EXTENSIONS0x01UGLES 扩展查询的入参
XEG_MAX_EXTENSION_NAME_SIZE256扩展名最大长度

怎么用这些宏

下面是扩展查询和使用的整体流程:

GLES

Vulkan

是

否

确定需要使用的特性

查找对应的扩展名称宏

GLES 还是 Vulkan 环境?

HMS_XEG_GetString 查询扩展列表

HMS_XEG_EnumerateDeviceExtensionProperties

用 strstr 检查是否包含扩展名

遍历 properties 比较扩展名

支持?

查找对应的参数宏

使用替代方案或放弃

用参数宏设置特性参数

这些宏主要有两个用途:

1. 查询扩展支持时作为判断依据

// GLES 环境constGLubyte*extensions=HMS_XEG_GetString(XEG_EXTENSIONS);if(strstr((constchar*)extensions,XEG_SPATIAL_UPSCALE_EXTENSION_NAME)!=NULL){// 支持空域 GPU 超分}// Vulkan 环境if(strcmp(properties[i].extensionName,XEG_RTGI_EXTENSION_NAME)==0){// 支持 RTGI}

2. 设置参数时作为参数名

// 设置自适应 VRS 的输入尺寸HMS_XEG_AdaptiveVRSParameter(XEG_ADAPTIVE_VRS_INPUT_SIZE,inputSize);// 设置神经网络超分的 OH_NativeBuffer handleHMS_XEG_NeuralUpscaleParameter(XEG_NEURAL_UPSCALE_INPUT_HANDLE,&handle);// 设置时域超分的输入尺寸HMS_XEG_TemporalUpscaleParameter(XEG_TEMPORAL_UPSCALE_INPUT_SIZE,inputSize);

版本兼容性

  • 5.0.0(12) 版本引入的特性:超分(三种)、自适应 VRS、GLES/Vulkan 扩展查询
  • 6.0.0(20) 版本引入的特性:RTGI、RT ShadowAO、RT Reflection、HPS、Vulkan 通用模块

如果你的目标设备运行的是 5.0.0 系统版本,只能使用超分和 VRS 特性。光线追踪相关的特性需要 6.0.0 及以上版本。

速查小贴士

  1. 所有扩展名宏都以_EXTENSION_NAME结尾
  2. 所有版本号宏都以_VERSION结尾
  3. 参数宏的命名格式是XEG_特性名_参数名
  4. GLES 版参数用在HMS_XEG_xxxParameter函数里
  5. Vulkan 版参数用在XEG_xxxDescription结构体里

这篇文章可以作为日常开发的快速参考手册。当你不确定某个宏的值或者用法的时候,翻到这里查一下就行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询