【问题标题】:How do I use the modf function in Metal Shading Language?如何在 Metal Shading Language 中使用 modf 函数?
【发布时间】:2021-06-16 16:03:07
【问题描述】:

我需要将float 的小数部分与整数部分分开。在 C 中,我可以使用 modf 来实现这一点。当我尝试在 Metal Shading Language 中使用相同的函数时,它返回以下错误:

没有匹配的函数调用'modf'

修复 metal_math

按“修复 metal_math”只会导致 metal_math 文件中出现更多问题。有什么方法可以使用modf 或替代方法来获取金属着色语言中的小数部分。这是我目前使用金属着色语言的代码。

float f = <some float of undetermined precision>;
float decimal;
modf(f, &decimal);

【问题讨论】:

  • 当您#include &lt;metal_math&gt; 时会发生什么?它有这个功能:METAL_FUNC float modf(float x, thread float &amp;intval) 所以它应该适合浮点数。

标签: c floating-point metal


【解决方案1】:

您应该通过引用而不是地址来传递您的值。 用这个替换你的代码:

modf(f, decimal);

【讨论】:

  • 感谢您的回答,它解决了问题。还有一个问题,有什么方法可以将小数部分作为整数?
  • @Todd 那是什么意思?如果您的输入值为 1.234,您会期望一个 234 的整数吗?如果是这样,如果您的输入是 1.23,会发生什么?
  • @TimRandall 是的,如果输入是 1.234,我想要一个 234 的整数。对于 1.23,它将是 23。
猜你喜欢
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 2016-04-24
  • 2020-01-05
相关资源
最近更新 更多