HarmonyOS鸿蒙Next中在使用OH_ImageSourceNative_CreatePixelmapList解码时,如何设置预期alphaType
HarmonyOS鸿蒙Next中在使用OH_ImageSourceNative_CreatePixelmapList解码时,如何设置预期alphaType 使用OH_ImageSourceNative_CreatePixelmapList解码,返回OH_PixelmapNativ列表
Image_ErrorCode OH_ImageSourceNative_CreatePixelmapList(OH_ImageSourceNative *source, OH_DecodingOptions *options,
OH_PixelmapNative *resVecPixMap[], size_t size)
但是OH_DecodingOptions里没有能配置alphaType的东西,导致我直接拿这里的数据上传到opengl进行渲染,会出现一些透明度相关的问题
只能手动一个个用OH_PixelmapNative_ConvertAlphaFormat转吗?
更多关于HarmonyOS鸿蒙Next中在使用OH_ImageSourceNative_CreatePixelmapList解码时,如何设置预期alphaType的实战教程也可以访问 https://www.itying.com/category-93-b0.html
学习,
更多关于HarmonyOS鸿蒙Next中在使用OH_ImageSourceNative_CreatePixelmapList解码时,如何设置预期alphaType的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
哦不对,我认真测了一遍,OH_ImageSourceNative_CreatePixelmapList拿到的是预乘后的数据
显示有问题是因为我纹理用GL_RGB5_A1存的数据
在 OH_ImageSourceNative_CreatePixelmapList 解码时,通过 OH_DecodingOptions 的 alphaType 字段设置预期类型,可选值包括 OH_ALPHA_TYPE_UNKNOWN、OH_ALPHA_TYPE_OPAQUE、OH_ALPHA_TYPE_PREMUL、OH_ALPHA_TYPE_UNPREMUL。创建 OH_DecodingOptions 对象后,直接赋值该字段再传入解码接口即可。
OH_DecodingOptions 结构确实没有直接暴露 alphaType 设置。解码得到的像素图的 alpha 类型取决于源图的存储格式,默认可能是非预乘(straight)或预乘,导致直接上传 OpenGL 纹理时出现透明度问题。
你不需要手动遍历每个 pixelmap 单独转换,但逐个调用 OH_PixelmapNative_ConvertAlphaFormat 是目前最直接、可靠的方式,它能将待转换的 pixelmap 统一成你想要的 alpha 类型(例如 OH_PIXEL_MAP_ALPHA_TYPE_PREMUL)。如果你解码的图片源格式已知且固定,也可提前保证素材本身即为预乘 alpha,避免额外转换。否则在解码循环中直接转换是保证渲染一致性的标准做法。

