Vulkan 学习(7)---- vkImage 创建

Overview

VkImage 用于存储图像数据,支持 2D3D图像以及Multi LayerMulti MipLevel的图像,它可以用于纹理,渲染目标
VkImagevkBuffer更加复杂,因为它们是多维的,有独特的布局和格式信息,可以作为过滤,深度或者模板测试等复杂操作的源或者目标,和VkBuffer一样,一旦设备内存绑定到一个VkImage上,这个内存绑定就不能再次改变了

VkImage Create

VkImage的创建和VkBuffer类似,首先要确定图像的格式,用途,采样数等属性,然后通过 Vulkan 的内存分配机制来分配对应的内存

一般的创建过程如下:

  • 选择图像的格式和属性:根据应用需求选择合适的图像格式和维度
  • 创建图像:使用vkCreateImage函数创建一个VkImage对象
  • 查询内促要求:使用vkGetImageMemoryRequirements查询 VkImage的内存需求
  • 分配内存: 根据查询到的内存要求,使用 vkAllocateMemory分配内存
  • 绑定内存: 使用vkBindImageMemory将分配到的内存绑定到 VkImage 对象

其中的 vkCreateImage 的函数原型:

VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
    VkDevice                                    device, // 逻辑设备
    const VkImageCreateInfo*                    pCreateInfo, // createInfo
    const VkAllocationCallbacks*                pAllocator, // 内存分配器
    VkImage*                                    pImage); // Image 对象

其中的 VkImageCreateInfo 定义如下:

typedef struct VkImageCreateInfo {
   
   
    VkStructureType          sType;  // 必须是 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,表示该结构体的类型
    const void*              pNext;  // nullptr 或指向扩展结构体的指针,用于扩展
    VkImageCreateFlags       flags; // 用于拓展,一般为 nullptr
    VkImageType              imageType; // 一维 二维 还是三维的 类型
    VkFormat                 format; // 颜色格式 比如:VK_FORMAT_R8G8B8A8_SRGB
    VkExtent3D               extent; // 图像的宽度、高度和深度,使用 VkExtent3D 结构体指定
    uint32_t                 mipLevels; // mipmap 的层数,指定生产的 mipmap 级别数量
    uint32_t                 arrayLayers; // 指定图像数组的层数
    VkSampleCountFlagBits    samples; // 采样计数,指定 MSAA 的级别
    VkImageTiling            tiling; // 图像的 tiling 模式,比如:VK_IMAGE_TILING_OPTIMAL 和 VK_IMAGE_TILING_LINEAR
    VkImageUsageFlags        usage; // 图像的用途标志
    VkSharingMode            sharingMode; // 共享模式和独占模式
    uint32_t                 queueFamilyIndexCount; // queueFamily Index 的 count
    const uint32_t*          pQueueFamilyIndices; // queueFamily Index
    VkImageLayout            initialLayout; // 图像的初始布局
} VkImageCreateInfo;

其中 VkImageType ImageType 设置图像是几维的,可以选择为:

typedef enum VkImageType {
   
   
    VK_IMAGE_TYPE_1D = 0,
    VK_IMAGE_TYPE_2D = 1</
realesrgan-ncnn-vulkan-20211212-windows是一个基于ncnn框架和Vulkan图形API开发的图像超分辨率增强模型。它是由GitHub用户realsrgan开发的最新版本,最新发布日期为2021年12月12日,专为Windows操作系统而设计。 该模型的主要应用是图像超分辨率增强,通过提高图像的分辨率和细节,使图像看起来更加清晰和真实。它采用深度学习和卷积神经网络等先进的技术,能够将低分辨率的图像转换成高分辨率的图像,从而提升图像的质量和视觉效果。 realesrgan-ncnn-vulkan-20211212-windows的开发使用了ncnn框架和Vulkan图形API,这使得它能够在Windows系统上实现快速且高效的图像处理。ncnn是一个轻量级的深度学习框架,专注于在移动平台和嵌入式设备上实现高性能和低延迟的推理。而Vulkan图形API是一种跨平台的图形渲染和计算API,可以充分利用计算设备的性能,提供高效的图像处理和渲染能力。 realesrgan-ncnn-vulkan-20211212-windows的使用可以通过命令行或者图形界面进行,用户可以根据自己的需求和偏好选择适合的方式。该模型提供了训练好的权重参数,用户可以直接加载这些参数并进行图像超分辨率增强。此外,该模型还支持批量处理和视频处理,方便用户对多个图像进行处理。 总之,realesrgan-ncnn-vulkan-20211212-windows是一个高效、快速且易于使用的图像超分辨率增强模型,适用于Windows系统,并利用了ncnn框架和Vulkan图形API的优势,为用户提供了出色的图像处理效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值