swift - Metal 中的 ASTC 纹理压缩——我应该使用什么作为每行的字节数?

标签 swift textures metal

我正在编写一个在 Metal 中使用压缩纹理的程序。我在使用 MTLTexture 的 replaceRegion() 函数时遇到了一些麻烦。参数 bytesPerRow 似乎没有意义。它说对于压缩纹理,“bytesPerRow 是从一行 block 的开头到下一行的开头的字节数。”

现在我使用 ASTC 和 4x4 block ,这意味着我有 8 bpp。那么4*4就是16,8位就是一个字节。所以我猜测每个 block 大小是 16 个字节。但是,当我输入 16 时,我得到一个失败的断言,要求最小值为 4096。这是怎么回事?

非常感谢。

最佳答案

bytesPerRow = texelsPerRow/blockFootprint.x * 16

关于swift - Metal 中的 ASTC 纹理压缩——我应该使用什么作为每行的字节数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995770/

相关文章:

swift - 如何在 Swift 中显示动态常量中的变量值?

swift - 如何使 swift 类符合要求其属性之一符合协议(protocol)类型的协议(protocol)?

java - 安卓OpenGL ES 2.0 : Text aren't showing up

3d - Crytek Sponza 漏洞

ios - 何时从 drawRect : to OpenGL/Metal? 切换

swift - 如何在 Swift 中按日期对 NSOrderedSet 进行排序

ios - iOS 中的导航栏按钮可见性问题

javascript - 在 Three.js 中旋转立方体纹理

macos - 调整 MTKView 的大小会在重绘之前缩放旧内容

ios - Metal Shading Language中 float 的比较