Lazily generate buffer in Sheet.
The managed byte buffer is created on demand, meaning a newly allocated sheet will not waste memory holding onto the buffer until some changes are actually required to be written. This avoids a newly allocated sheet wasting memory on buffers that do not differ from their backing texture.
This commit is contained in:
committed by
RoosterDragon
parent
e6852e2b50
commit
ff16690b86
@@ -61,7 +61,7 @@ namespace OpenRA.Widgets
|
||||
|
||||
var size = Math.Max(video.Width, video.Height);
|
||||
var textureSize = Exts.NextPowerOf2(size);
|
||||
var videoSheet = new Sheet(new Size(textureSize, textureSize), false);
|
||||
var videoSheet = new Sheet(new Size(textureSize, textureSize));
|
||||
|
||||
videoSheet.Texture.ScaleFilter = TextureScaleFilter.Linear;
|
||||
videoSheet.Texture.SetData(video.FrameData);
|
||||
@@ -89,7 +89,7 @@ namespace OpenRA.Widgets
|
||||
for (var y = 0; y < scaledHeight; y += 2)
|
||||
overlay[y, 0] = black;
|
||||
|
||||
var overlaySheet = new Sheet(new Size(1, Exts.NextPowerOf2(scaledHeight)), false);
|
||||
var overlaySheet = new Sheet(new Size(1, Exts.NextPowerOf2(scaledHeight)));
|
||||
overlaySheet.Texture.SetData(overlay);
|
||||
overlaySprite = new Sprite(overlaySheet, new Rectangle(0, 0, 1, scaledHeight), TextureChannel.Alpha);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user