ios - 金属着色器在缓冲区中插入值
问题描述
我需要将一个缓冲区传递给 Metal 片段着色器,它是一个包含 N 个浮点值的数组。但是如果绘制纹理的宽度超过 N 个像素,我希望着色器插入值。如果我使用纹理,很容易使用采样器并设置线性过滤,但不清楚是否可以在片段着色器中的任意缓冲区上设置插值。
解决方案
不,不可能让 Metal 为您在缓冲区中的值进行插值。Metal 无法知道缓冲区有关联的“几何”。例如,一个包含 N 个浮点值的数组可以是 N 个水平元素、N 个垂直元素、5 行 N/5 个元素等。插值需要知道哪些元素是给定元素的邻居,这需要几何知识。
当然,您可以在着色器中自己进行插值。
-newTextureWithDescriptor:...
您还可以使用/makeTexture()
方法从缓冲区创建纹理MTLBuffer
。然后你可以从那个纹理中取样。
推荐阅读
- ansible - Ansible 模块生成两个字符串之间的差异
- r - 更改 geom_raster 中的色带以更好地显示异常值
- swift - 如何在 RealmSwift 中声明一个二维数组
- c# - 检索 ListViewItem 的值
- scala - 通用嵌套类型推断适用于 arity-2,但不适用于柯里化
- r - 试图在 grid.arrange 和arrangeGrob 中平衡地块的底部。还试图移动 Y 轴标签
- chatbot - Bot press 聊天机器人工作正常是 botpres 编辑器,但在外部网站上失败
- intellij-idea - Intellij IDEA 告诉我“编译完成,出现 52 个错误和 0 个警告”
- c++ - boost::dynamic_bitset 结果与 std::vector 不一致
? - spring-batch - Spring批处理条件流配置错误