计算对象的字节大小

时间:2013-12-01 23:16:20

标签: c# directx slimdx

我开始在c#中使用directx和slimdx包装器。对于许多方法,有必要计算对象的大小,例如在缓冲区和绘制调用的情况下。特别是,“步幅”是连续元素之间的字节数。

到目前为止,我传递的数据是一个长度为12个字节的Vector3。因此,使用的缓冲区大小是元素数量* 12.在这个简单的情况下,很容易看出大小应该是多少。但是,如何计算更复杂的例子呢?例如:

struct VertexType
{
    public Vector3 position;
    public Vector4 color;
}

这是(12 + 16)大小?它是否在结构中排列的事实是否会添加任何元素的大小?

我尝试过使用sizeof,但这会引发一个错误,指出该对象不是预定的大小。什么是正确的方法?

1 个答案:

答案 0 :(得分:0)

尝试Marshal.SizeOf - http://msdn.microsoft.com/en-us/library/System.Runtime.InteropServices.Marshal.SizeOf(v=vs.110).aspx

using System.Runtime.InteropServices;

VertexType v = new VertexType;
Marshal.SizeOf(typeof(VertexType)); //For the type
Marshal.SizeOf(v); //For an instance