gpt4 book ai didi

c# - 对在 C# 中从 IntPtr 访问元素感到困惑

转载 作者:行者123 更新时间:2023-11-30 16:41:52 25 4
gpt4 key购买 nike

<分区>

我正在使用包含以下内容的 Kinect v2 CameraSpacePoint结构:

public struct CameraSpacePoint : IEquatable<CameraSpacePoint>
{
public float X;
public float Y;
public float Z;
}

CameraSpacePoint 还包含一些方法 EqualsGetHashCode 等,上面没有显示这些方法以保持帖子简洁明了。

好吧,我在类构造函数中定义cameraSpacePoints如下:

IntPtr cameraSpacePoints = Marshal.AllocHGlobal(512 * 424 * 4 * 3);

下面是对上述内存分配的解释:

  • 512:宽度
  • 424:高度
  • 4:单个'float'需要的字节数
  • 3:总共三个变量,即“X”、“Y”和“Z”

后来,我使用 CoordinateMapper 将值复制到 cameraSpacePoints如下:

coordinateMapper.MapDepthFrameToCameraSpaceUsingIntPtr(depthFrameData,
512 * 424 * 2,
cameraSpacePoints,
512 * 424 * 4 * 3);

看起来很完美。现在我想从 cameraSpacePoints 获取值。所以我在 unsafe block 中使用了以下代码:

float* cameraSpacePoint = (float*)cameraSpacePoints;
for (var index = 0; index < 512 * 424; index++)
{
float X = cameraSpacePoint[index];
float Y = cameraSpacePoint[index + 1];
float Z = cameraSpacePoint[index + 2];
}

我在想象它时意识到它似乎不起作用。在我看来,使用 IntPtr 从 cameraSapacePoints 访问元素时会出现一些困惑。这里缺少什么?有什么建议吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com