Ich habe versucht, meine allererste Spiel-Engine (in OpenTK und Im stecken. Ich versuche, Animationen zu inkzeptieren und ich versuche, Sprite-Blätter zu verwenden, weil sie Dateigröße erheblich verringern würde.Sprite Sheet Animation in OpenTK
ich weiß, dass ich eine for-Schleife verwenden, müssen alle Sprites in Folge zu ziehen, aber ich nicht einen Anhaltspunkt über das, was ich tun sollte, um es mit spritesheets arbeiten zu lassen.
Hier ist meine aktuelle Zeichnung code:
//The Basis fuction for all drawing done in the application
public static void Draw (Texture2D texture, Vector2 position, Vector2 scale, Color color, Vector2 origin, RectangleF? SourceRec = null)
{
Vector2[] vertices = new Vector2[4]
{
new Vector2(0, 0),
new Vector2(1, 0),
new Vector2(1, 1),
new Vector2(0, 1),
};
GL.BindTexture(TextureTarget.Texture2D, texture.ID);
//Beginning to draw on the screen
GL.Begin(PrimitiveType.Quads);
GL.Color3(color);
for (int i = 0; i < 4; i++)
{
GL.TexCoord2((SourceRec.Value.Left + vertices[i].X * SourceRec.Value.Width)/texture.Width, (SourceRec.Value.Left + vertices[i].Y * SourceRec.Value.Height)/texture.Height);
vertices[i].X *= texture.Width;
vertices[i].Y *= texture.Height;
vertices[i] -= origin;
vertices[i] *= scale;
vertices[i] += position;
GL.Vertex2(vertices[i]);
}
GL.End();
}
public static void Begin(int screenWidth, int screenHeight)
{
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Ortho(-screenWidth/2, screenWidth/2, screenHeight/2, -screenHeight/2, 0f, 1f);
}
Vielen Dank im Voraus !!! :)
Danke !! Das hat gut für mich funktioniert und ich werde Ihren Rat beherzigen, keine feste Funktionspipeline zu verwenden. Danke noch einmal!! –
Schön, ich freue mich, Ihnen etwas Zeit zu sparen. –