3 Stimmen

XNA 4.0 Benutzerdefinierte Vertex-Deklaration

Ich versuche gerade, eine benutzerdefinierte Vertex-Deklaration zu erstellen.

Eine, bei der eine Position, eine Farbe und eine ganze Zahl an den Effekt übergeben wird. Ich habe Probleme zu bestimmen, was enum für VertexElementUsage für die Übergabe einer ganzen Zahl verwendet werden würde und wie bestimmt man den Versatz bei der Deklaration von VertexElements als auch?

public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
{
    new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
    new VertexElement(12, VertexElementFormat.Color, VertexElementUsage.Color, 0),
    new VertexElement(?, VertexElementFormat.Byte4, ?, 0)
};

(Beachten Sie das ? im letzten VertexElement)

3voto

Wird die Größe von Vector2 + die Größe der Farbe sein. Im Grunde genommen kann man sich das so vorstellen,
In einem normalen Array gibt es nur eine Art von Objekten, so dass bekannt ist, wie weit man springen muss, um zum nächsten Element zu gelangen.
Dies hier ist anders, da sie alle unterschiedliche Größen haben.
Die Verwendung von sizeof() ist völlig in Ordnung, also wird es so sein:

public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
{
    new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
    new VertexElement(sizeof(Vector3), VertexElementFormat.Color, VertexElementUsage.Color, 0),
    new VertexElement(sizeof(Vector3)+sizeof(Color), VertexElementFormat.Byte4, ?, 0)
};

oder ähnlich.

Andernfalls können Sie die Größe eines Farbobjekts ermitteln und sie zur Größe des Vector3-Objekts addieren (das ist dann der Versatz).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X