i'm trying to write a game using raycast, and i want to transfer raycast calculations to the gpu, but for some reason it gives an outofresources error
My function in which the Kernel should be executed
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();
}