NYXEngine/src/plugins/renderer/resource/renderer.zig

74 lines
1.7 KiB
Zig
Raw Normal View History

2026-07-28 23:30:07 +01:00
//! ----------------------------------------------------
//! ----------------------------------------------------
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,
);
}