fixed some validation issues
This commit is contained in:
parent
64c87ba3cc
commit
0ef96e65ac
|
|
@ -42,18 +42,36 @@ pub const Impl = struct {
|
|||
c.Imgui_SDL3_PrepareRender(@ptrCast(self.drawData), @ptrCast(cmd));
|
||||
}
|
||||
|
||||
pub fn postRender(p: *anyopaque, cmd: *gpu.GPUCommandBuffer, renderPass: *gpu.GPURenderPass) void {
|
||||
pub fn postRender(p: *anyopaque, cmd: *gpu.GPUCommandBuffer) void {
|
||||
const self: *@This() = @ptrCast(@alignCast(p));
|
||||
|
||||
//const renderpass = cmd.beginGPURenderPass(color_target_infos: [*c]const GPUColorTargetInfo, num_color_targets: u32, depth_stencil_target_info: [*c]const GPUDepthStencilTargetInfo);
|
||||
|
||||
var targetInfo: gpu.GPUColorTargetInfo = std.mem.zeroes(gpu.GPUColorTargetInfo);
|
||||
targetInfo.texture = rend.context().swapchainTexture;
|
||||
targetInfo.clear_color = .{ .r = 0.0, .g = 0.0, .b = 0.0, .a = 0.0 };
|
||||
targetInfo.load_op = .loadopDontCare;
|
||||
targetInfo.store_op = .storeopStore;
|
||||
const renderpass = cmd.beginGPURenderPass(&targetInfo, 1, null);
|
||||
// SDL_GPUColorTargetInfo target_info = {};
|
||||
// target_info.texture = swapchain_texture;
|
||||
// target_info.clear_color = SDL_FColor { clear_color.x, clear_color.y, clear_color.z, clear_color.w };
|
||||
// target_info.load_op = SDL_GPU_LOADOP_CLEAR;
|
||||
// target_info.store_op = SDL_GPU_STOREOP_STORE;
|
||||
// target_info.mip_level = 0;
|
||||
// target_info.layer_or_depth_plane = 0;
|
||||
// target_info.cycle = false;
|
||||
|
||||
c.ImGui_SDLGPU3_RenderDrawData(
|
||||
@ptrCast(self.drawData),
|
||||
@ptrCast(cmd),
|
||||
@ptrCast(renderPass),
|
||||
@ptrCast(renderpass),
|
||||
);
|
||||
|
||||
renderpass.endGPURenderPass();
|
||||
}
|
||||
|
||||
pub fn preTick(_: *@This(), _: f64) core.EngineDataEventError!void {
|
||||
core.engine_logs("imgui pretick");
|
||||
c.Imgui_SDL3_NewFrame();
|
||||
c.igNewFrame();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,12 +31,15 @@ pub const Renderer = struct {
|
|||
uploads: std.ArrayListUnmanaged(struct { ptr: *anyopaque, func: *const fn (*anyopaque, *gpu.GPUCopyPass) void }) = .{},
|
||||
uploadCleanup: std.ArrayListUnmanaged(struct { ptr: *anyopaque, func: *const fn (*anyopaque) void }) = .{},
|
||||
|
||||
postRenders: std.ArrayListUnmanaged(struct { ptr: *anyopaque, func: *const fn (*anyopaque, *gpu.GPUCommandBuffer, *gpu.GPURenderPass) void }) = .{},
|
||||
postRenders: std.ArrayListUnmanaged(struct { ptr: *anyopaque, func: *const fn (*anyopaque, *gpu.GPUCommandBuffer) void }) = .{},
|
||||
destroys: std.ArrayListUnmanaged(struct { ptr: *anyopaque, func: *const fn (*anyopaque) void }) = .{},
|
||||
preDraws: std.ArrayListUnmanaged(struct { ptr: *anyopaque, func: *const fn (*anyopaque, *gpu.GPUCommandBuffer) void }) = .{},
|
||||
|
||||
depthTexture: *gpu.GPUTexture = undefined,
|
||||
|
||||
// transients DO NOT TOUCH
|
||||
swapchainTexture: *gpu.GPUTexture = undefined,
|
||||
|
||||
pub var NeonObjectTable: core.EngineObjectVTable = core.EngineObjectVTable.from(@This());
|
||||
|
||||
pub const MaxObjectCount = 50000;
|
||||
|
|
@ -374,10 +377,9 @@ pub const Renderer = struct {
|
|||
interface.func(interface.ptr, cmd);
|
||||
}
|
||||
|
||||
var swapchainTexture: *gpu.GPUTexture = undefined;
|
||||
if (cmd.waitAndAcquireGPUSwapchainTexture(self.window, &swapchainTexture, null, null)) {
|
||||
if (cmd.waitAndAcquireGPUSwapchainTexture(self.window, &self.swapchainTexture, null, null)) {
|
||||
var targetInfo: gpu.GPUColorTargetInfo = std.mem.zeroes(gpu.GPUColorTargetInfo);
|
||||
targetInfo.texture = swapchainTexture;
|
||||
targetInfo.texture = self.swapchainTexture;
|
||||
targetInfo.clear_color = .{ .r = 0.1, .g = 0.1, .b = 0.1, .a = 1.0 };
|
||||
targetInfo.load_op = .loadopClear;
|
||||
targetInfo.store_op = .storeopStore;
|
||||
|
|
@ -420,13 +422,14 @@ pub const Renderer = struct {
|
|||
}
|
||||
}
|
||||
|
||||
renderpass.endGPURenderPass();
|
||||
|
||||
for (self.postRenders.items) |interface| {
|
||||
interface.func(interface.ptr, cmd, renderpass);
|
||||
interface.func(interface.ptr, cmd);
|
||||
}
|
||||
|
||||
// renderpass.drawGPUPrimitives(3, 1, 0, 0);
|
||||
|
||||
renderpass.endGPURenderPass();
|
||||
}
|
||||
|
||||
_ = cmd.submitGPUCommandBuffer();
|
||||
|
|
@ -439,6 +442,8 @@ pub const Renderer = struct {
|
|||
d.func(d.ptr);
|
||||
}
|
||||
self.uploadCleanup.deinit(self.allocator);
|
||||
self.preDraws.deinit(self.allocator);
|
||||
self.postRenders.deinit(self.allocator);
|
||||
self.uploads.deinit(self.allocator);
|
||||
self.destroys.deinit(self.allocator);
|
||||
self.allocator.destroy(self);
|
||||
|
|
|
|||
Loading…
Reference in New Issue