aboutsummaryrefslogtreecommitdiff
path: root/src/sfml/graphics/VertexArray.zig
blob: ea4ccb2c5cc36c76e9578e2d72ee6155a9f359c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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,