Ja da hast du wohl recht. Das
[u]"and can be noncontiguous[/u]" bezieht sich vermutlich auf folgende Situation:
|
C#-Quelltext
|
1
2
3
4
5
6
|
[StructLayout(LayoutKind.Sequential)]
public struct MyStruct
{
public byte a; // 1 byte
public int b; // 4 bytes
}
|
Hier würden nach byte a noch 3 Füllbytes kommen und somit eine Lücke bis zum nächsten Field int b. Das sizeof würde hier vermutlich 8 Bytes liefern.
Mit dem von dir vorgeschlagenen FieldOffsetAttribute kann man dies umgehen. Mit StructLayout.Pack kann man dies aber auch beeinflussen, per Default dürfte der Wert davon auf 0 stehen was Gerätespezifisch bedeutet und in den meisten Fällen 4 Byte Abstände liefert. Hier könnte man den Wert 1 wählen wenn man es denn braucht und das Ergebniss von sizeof wäre dann 5 Bytes.
Da alle Fields der VertexKlassen jeweils 4 Byte gross sind spielt das wohl auch kaum eine Rolle, wenn man allerdings irgendetwas extravagantes plant gut zu wissen.
Evtl wäre es gut daraus einen eigenen Thread zu erstellen.