C# OpenCLTemplate资源不足
我正在尝试使用raycast编写一个游戏,我想将raycast计算传输到gpu,但由于某些原因,它会给出一个outofresources错误 内核应该在其中执行的函数C# OpenCLTemplate资源不足,c#,opencl,opentk,cloo,C#,Opencl,Opentk,Cloo,我正在尝试使用raycast编写一个游戏,我想将raycast计算传输到gpu,但由于某些原因,它会给出一个outofresources错误 内核应该在其中执行的函数 public unsafe void GpGPU_Ray(float px, float py, float[] angle, out float[] dists, out float[] offsets) { OpenCLTemplate.CLCalc.Program.Variable varPx
public unsafe void GpGPU_Ray(float px, float py, float[] angle, out float[] dists, out float[] offsets)
{
OpenCLTemplate.CLCalc.Program.Variable varPx = new OpenCLTemplate.CLCalc.Program.Variable(new float[1] { px });
OpenCLTemplate.CLCalc.Program.Variable varPy = new OpenCLTemplate.CLCalc.Program.Variable(new float[1] { py });
OpenCLTemplate.CLCalc.Program.Variable varAngle = new OpenCLTemplate.CLCalc.Program.Variable(angle);
OpenCLTemplate.CLCalc.Program.Variable varMap = new OpenCLTemplate.CLCalc.Program.Variable(NumberMap);
OpenCLTemplate.CLCalc.Program.Variable varWidth = new OpenCLTemplate.CLCalc.Program.Variable(new float[1] { Map.Width });
OpenCLTemplate.CLCalc.Program.Variable varDists = new OpenCLTemplate.CLCalc.Program.Variable(new float[angle.Length]);
OpenCLTemplate.CLCalc.Program.Variable varOffsets = new OpenCLTemplate.CLCalc.Program.Variable(new float[angle.Length]);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varPx, varPy, varAngle, varMap, varWidth, varDists, varOffsets};
var MaxWGSZ = OpenCLTemplate.CLCalc.CLDevices[0].MaxWorkGroupSize;
int[] workers = new int[1] { angle.Length };
RayCastKernel.Execute(args, workers);
//OpenCLTemplate.CLCalc.Program.Sync();
varPx.Dispose();
varPy.Dispose();
varAngle.Dispose();
varMap.Dispose();
varWidth.Dispose();
dists = new float[angle.Length];
offsets = new float[angle.Length];
//At this moment an exception occurs
varDists.ReadFromDeviceTo(dists);
varOffsets.ReadFromDeviceTo(offsets);
varDists.Dispose();
varOffsets.Dispose();
RayCastKernel.Dispose();
}