我目前正在玩,SharpGL
但无法弄清楚如何以正确的方式使用它的函数 GetBufferSubData。
public void GetBufferSubData(uint target,
int offset,
int size,
IntPtr data);
用例情况:我已经用一些数据填充了 VBO,现在想将它从那里取回托管对象。
我的尝试失败了FatalExecutionEngineError
,正如我所读到的,这对应于内存堆中的泄漏。但我不确定我是否有适合我需要的代码。
public virtual unsafe float[] GetFromBuffer(int offset, int length)
{
float[] output = new float[length];
Bind();
fixed (float* array = output)
{
var ptr = new IntPtr(array);
Gl.GetBufferSubData(Id, offset, sizeof(float) * length, ptr);
// Not needed code (fixed after answer)
//GCHandle handle = (GCHandle) ptr;
//output = (handle.Target as float[]);
}
return output;
}
我的问题是如何将数据返回到托管对象。