namespace AcDream.App.Rendering; internal static class TrackedTextureConstruction { public static uint Create( GlTextureConstructionTransaction transaction, Action initialize) { ArgumentNullException.ThrowIfNull(transaction); ArgumentNullException.ThrowIfNull(initialize); uint texture = transaction.Allocate(); initialize(texture); return texture; } public static uint Create( GlTextureConstructionTransaction transaction, Silk.NET.OpenGL.GL gl, string context, Action initialize) { ArgumentNullException.ThrowIfNull(transaction); ArgumentNullException.ThrowIfNull(gl); ArgumentException.ThrowIfNullOrWhiteSpace(context); ArgumentNullException.ThrowIfNull(initialize); uint texture = transaction.Allocate(); GlResourceCommand.Execute(gl, context, () => initialize(texture)); return texture; } }