From 6a2d132873ce7b40405a3dc000a12539fffd969b Mon Sep 17 00:00:00 2001 From: tslil clingman <> Date: Wed, 1 Sep 2021 12:59:50 -0400 Subject: Init --- src/sfml/graphics/VertexArray.zig | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/sfml/graphics/VertexArray.zig (limited to 'src/sfml/graphics/VertexArray.zig') diff --git a/src/sfml/graphics/VertexArray.zig b/src/sfml/graphics/VertexArray.zig new file mode 100644 index 0000000..ea4ccb2 --- /dev/null +++ b/src/sfml/graphics/VertexArray.zig @@ -0,0 +1,32 @@ +//! Define a set of one or more 2D primitives. + +const sf = @import("../sfml.zig"); + +// CONSTRUCTION ZONE + +const VertexArray = @This(); + +/// Creates a vertex array from a slice of vertices +pub fn createFromSlice(vertex: []const sf.graphics.Vertex, primitive: sf.graphics.PrimitiveType) !VertexArray { + var va = sf.c.sfVertexArray_create(); + if (va) |vert| { + sf.c.sfVertexArray_setPrimitiveType(vert, @enumToInt(primitive)); + sf.c.sfVertexArray_resize(vert, vertex.len); + for (vertex) |v, i| + sf.c.sfVertexArray_getVertex(vert, i).* = @bitCast(sf.c.sfVertex, v); + return VertexArray{ .ptr = vert }; + } else return sf.Error.nullptrUnknownReason; +} + +/// Destroys a vertex array +pub fn destroy(self: VertexArray) void { + sf.c.sfVertexArray_destroy(self.ptr); +} + +// Draw function +pub fn sfDraw(self: VertexArray, window: sf.graphics.RenderWindow, states: ?*sf.c.sfRenderStates) void { + sf.c.sfRenderWindow_drawVertexArray(window.ptr, self.ptr, states); +} + +/// Pointer to the csfml structure +ptr: *sf.c.sfVertexArray, -- cgit v1.3.1