【问题标题】:VK_FORMAT_R16_UINT texture format in VulkanVK_FORMAT_R16_UINT Vulkan 中的纹理格式
【发布时间】:2017-03-08 14:55:01
【问题描述】:

Vulkan 没有像 OpenGL 那样的任何像素传输功能。但是VK_FORMAT_R16_UINT 格式是如何工作的呢?可以使用它从像素着色器中采样无符号短值吗?当我使用它时,我只能从采样器中得到零。我正在使用线性过滤。

如果我使用VK_FORMAT_R16_UNORM 格式而不是VK_FORMAT_R16_UINT 格式,我会得到0-1 之间的值,所以我猜Vulkan 在这种情况下会为我标准化这些值?

【问题讨论】:

  • 你在使用线性过滤吗? VK_FORMAT_R16_UNORM 不保证对此的支持。您是否检查过没有验证错误?
  • @Columbo 是的,我正在使用线性过滤,我没有验证错误。
  • 要在 VK_FORMAT_R16_UINT 上使用线性过滤,您需要首先使用 vkGetPhysicalDeviceFormatProperties 检查是否支持(检查 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)。你能验证它是否受支持吗?
  • @Columbo 不支持,我以为不支持验证层会告诉我的,谢谢。您能否在答案中写下您的评论,以便我将其作为正确答案。

标签: textures vulkan


【解决方案1】:

规范不保证支持VK_FORMAT_R16_UINT 格式的线性过滤。

VK_FORMAT_R16_UINT 上使用线性过滤之前,您需要首先使用vkGetPhysicalDeviceFormatProperties 检查支持(检查VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)。

令人惊讶的是,验证层没有报告滥用情况。提交增强请求以添加该检查是值得的。

【讨论】:

  • 我已经打开了一个问题来添加这个检查。
猜你喜欢
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 2022-08-17
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2016-07-01
相关资源
最近更新 更多