gpt4 book ai didi

ios - Apple 更改了 Metal 中允许的矢量格式

转载 作者:行者123 更新时间:2023-11-28 18:46:41 24 4
gpt4 key购买 nike

从 iOS 12.1.1 开始, Metal 着色器似乎以 (float4)(1,2,3,4) 的形式引用向量,它们会默默地解析为其他东西 - 想想 (1,1,1,1)。这适用于所有矢量格式。修复它的唯一方法是删除类型周围的括号。有些人会说括号从一开始就很费力。但是我们有很多代码可以正常工作,但由于这种切换,突然开始悄无声息地计算错误。

我的问题是,这是否是一个 Metal 错误,或者只是 Apple 的语法纳粹并无缘无故地收紧东西?

最佳答案

这从一开始就不应该起作用。

(float4)(1,2,3,4) 中以逗号分隔、带括号的值列表被视为 comma operator 的应用程序,而不是构造函数的参数列表,因为您也将类型括起来了。有许多方法可以从 1 个或 4 个组件初始化 float4。这些产生向量 { 1, 2, 3, 4 }:

float4 f = float4(1, 2, 3, 4);
float4 f(1, 2, 3, 4);
float4 f = (float4){ 1, 2, 3, 4 };
float4 f{1, 2, 3, 4};
float4 f = { 1, 2, 3, 4 };

这些产生向量 { 1, 1, 1, 1 }:

float4 f = { 1 };
float4 f(1);
float4 f = 1;
float4 f = (float4)1;

您的示例虽然在语法上有效,但没有产生预期的结果,因为该语法并不代表您认为的那样。

关于ios - Apple 更改了 Metal 中允许的矢量格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53779139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com