74 lines
1.7 KiB
Zig
74 lines
1.7 KiB
Zig
|
|
//! ----------------------------------------------------
|
||
|
|
//! ----------------------------------------------------
|
||
|
|
|
||
|
|
const std = @import("std");
|
||
|
|
const gtl = @import("gtl");
|
||
|
|
const Material = @import("../../common/component/material.zig");
|
||
|
|
const Handle = gtl.Handle;
|
||
|
|
const Self = @This();
|
||
|
|
|
||
|
|
// TODO:
|
||
|
|
const Mesh = struct {};
|
||
|
|
const Camera = struct {};
|
||
|
|
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
pub const DrawCMD = union(enum) {
|
||
|
|
draw: struct {
|
||
|
|
mesh: Handle(Mesh),
|
||
|
|
material: Material.Unique,
|
||
|
|
},
|
||
|
|
|
||
|
|
draw_indexed: struct {
|
||
|
|
mesh: Handle(Mesh),
|
||
|
|
material: Material.Unique,
|
||
|
|
},
|
||
|
|
|
||
|
|
begin_pass: struct {
|
||
|
|
camera: Handle(Camera),
|
||
|
|
color: [4]f32 = .{ 0, 0, 0, 255 },
|
||
|
|
},
|
||
|
|
|
||
|
|
end_pass,
|
||
|
|
};
|
||
|
|
|
||
|
|
//
|
||
|
|
// FIELDS
|
||
|
|
//
|
||
|
|
|
||
|
|
commands: std.ArrayList(DrawCMD),
|
||
|
|
alloc: std.mem.Allocator,
|
||
|
|
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
pub fn init(alloc: std.mem.Allocator) Self {
|
||
|
|
return .{
|
||
|
|
.commands = .empty,
|
||
|
|
.alloc = alloc,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
pub fn deinit(self: *Self) void {
|
||
|
|
self.commands.deinit(self.alloc);
|
||
|
|
}
|
||
|
|
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
pub fn clear(self: *Self) void {
|
||
|
|
self.commands.clearRetainingCapacity();
|
||
|
|
}
|
||
|
|
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
/// ----------------------------------------------------
|
||
|
|
pub fn draw(
|
||
|
|
self: *Self,
|
||
|
|
cmd: DrawCMD,
|
||
|
|
) !void {
|
||
|
|
try self.commands.append(
|
||
|
|
self.alloc,
|
||
|
|
cmd,
|
||
|
|
);
|
||
|
|
}
|