微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一个 int 变量用作数组索引,但另一个不

如何解决一个 int 变量用作数组索引,但另一个不

我正在统一开发一个行进立方体计算着色器,我需要找到一个索引,以便我可以通过连接这些边来制作顶点,这里是代码

uint cubeIndex = 0;

for (int i = 0; i < 8; i++)
{
    if (cube[i].isInside == 1)
    {
        cubeIndex |= 1 << i;
    }
}

    return cubeIndex;

问题是当我使用“cubeIndex”作为数组索引时,它给了我这个错误: 程序“CSMain”,错误 X4505:内核 CSMain 中临时寄存器和可索引临时寄存器的总和超过 4096 的限制。

如果将数组索引更改为任何其他 int 代码有效!

这是我的主内核

 uint myCubeIndex = CubeInit(cube);
Edges midPoints = CalMidPoints(cube);

int edge = triTable[myCubeIndex][0];

float3 position = midPoints.midPoints[edge];

vertexArray.Append(position);

解决方法

我相信单位的位移要么进入负数,给你一个溢出。或者!!

How to use a huge array in HLSL (error X4505)

这个问题,因为这里有人也试图在 hlsl 着色器中放置太多顶点,试图使行进立方体工作,并且需要将其限制为 4096

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。