【发布时间】:2021-03-31 13:34:28
【问题描述】:
我正在统一开发一个行进立方体计算着色器,在某些时候我需要找到一个索引,以便我可以通过连接这些边来制作顶点这是代码
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);
【问题讨论】:
标签: hlsl marching-cubes