refactor(lifetime): own render resource prefixes
Give terrain, sky, retained UI, portal preparation, and the update/render frame pair explicit single owners. Make shader, texture, text, bindless, and GL construction prefixes checked and retryable so partial failure cannot lose or replay resource ownership. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
fec0d94148
commit
c87b15303d
41 changed files with 3768 additions and 355 deletions
31
src/AcDream.App/Rendering/TrackedTextureConstruction.cs
Normal file
31
src/AcDream.App/Rendering/TrackedTextureConstruction.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
namespace AcDream.App.Rendering;
|
||||
|
||||
internal static class TrackedTextureConstruction
|
||||
{
|
||||
public static uint Create(
|
||||
GlTextureConstructionTransaction transaction,
|
||||
Action<uint> 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<uint> 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;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue