vulkan - Vulkan:使用 vkCmdCopyBufferToImage 上传非 pow-of-2 纹理数据
问题描述
有一个类似的线程(Loading non-power-of-two textures in Vulkan),但它与更新主机可见映射区域中的数据有关。
我想利用成熟的功能vkCmdCopyBufferToImage
将存在于主机可见缓冲区中的数据复制到设备本地图像。我的图像暗淡,不是 2 的幂(更具体地说,它们是 1280x720)。这样做时,我发现它在 NVIDIA 和 Intel 上运行良好,但在 AMD 上却不行,图像变得“失真”,这表明 rowPitch/padding 存在问题。我的主机可见缓冲区非常紧凑,因此与bufferRowLength
andbufferImageHeight
相同。imageExtent.width
imageExtent.height
这个函数不应该满足非 2 次幂纹理吗?或者也许我做错了?
我可以使用计算着色器实现一种解决方法,但我认为这个函数的目的是通用的。此外,使用计算着色器的缺点是无法在仅传输队列上执行复制操作。
解决方案
推荐阅读
- java - ClosureParams:如何在 groovy 中为闭包参数指定泛型类型
- django - 当我 PATCH 布尔字段时,更新会反映在数据库中,但不会反映在 JSON 输出中,为什么?(Django Rest 框架序列化器)
- git - gnu-make 可以保存已编译代码的 git 版本吗?
- java - 如何在 Spring Boot 应用程序中处理来自外部 api 的大响应
- python - Python 轮子文件的名称从何而来?
- azure - 将过滤后的消息保存在 Azure 服务总线主题订阅中
- php - 如何在 MySql 的 case 中编写子查询?
- c# - 如何绑定到 DataGridTemplateColumn 内的 Combobox
- asp.net-core - 我已经为身份用户创建了一个角色,但是当我使用它时说未授权
- swift - 设置 UINavigationController 标题中单个单词的字体