Add TextureChannel.RGBA for RBGA sprites.

This commit is contained in:
Paul Chote
2018-05-31 21:54:07 +01:00
committed by reaperrr
parent c307b3e291
commit ba38878933
10 changed files with 28 additions and 27 deletions

View File

@@ -29,7 +29,7 @@ namespace OpenRA.Graphics
public Sprite GetImage(Sheet s) public Sprite GetImage(Sheet s)
{ {
return new Sprite(s, rect, TextureChannel.Alpha); return new Sprite(s, rect, TextureChannel.RGBA);
} }
public MiniYaml Save(string defaultSrc) public MiniYaml Save(string defaultSrc)

View File

@@ -54,7 +54,7 @@ namespace OpenRA.Graphics
public SheetBuilder(SheetType t, Func<Sheet> allocateSheet) public SheetBuilder(SheetType t, Func<Sheet> allocateSheet)
{ {
channel = TextureChannel.Red; channel = t == SheetType.Indexed ? TextureChannel.Red : TextureChannel.RGBA;
Type = t; Type = t;
current = allocateSheet(); current = allocateSheet();
sheets.Add(current); sheets.Add(current);
@@ -121,7 +121,7 @@ namespace OpenRA.Graphics
current.ReleaseBuffer(); current.ReleaseBuffer();
current = allocateSheet(); current = allocateSheet();
sheets.Add(current); sheets.Add(current);
channel = TextureChannel.Red; channel = Type == SheetType.Indexed ? TextureChannel.Red : TextureChannel.RGBA;
} }
else else
channel = next.Value; channel = next.Value;

View File

@@ -72,5 +72,6 @@ namespace OpenRA.Graphics
Green = 1, Green = 1,
Blue = 2, Blue = 2,
Alpha = 3, Alpha = 3,
RGBA = 4
} }
} }

View File

@@ -51,24 +51,24 @@ namespace OpenRA.Mods.Cnc
var res = r.Resolution; var res = r.Resolution;
bounds = new Rectangle(0, 0, res.Width, res.Height); bounds = new Rectangle(0, 0, res.Width, res.Height);
borderTop = new Sprite(sheet, new Rectangle(161, 128, 62, 33), TextureChannel.Alpha); borderTop = new Sprite(sheet, new Rectangle(161, 128, 62, 33), TextureChannel.RGBA);
borderBottom = new Sprite(sheet, new Rectangle(161, 223, 62, 33), TextureChannel.Alpha); borderBottom = new Sprite(sheet, new Rectangle(161, 223, 62, 33), TextureChannel.RGBA);
borderLeft = new Sprite(sheet, new Rectangle(128, 161, 33, 62), TextureChannel.Alpha); borderLeft = new Sprite(sheet, new Rectangle(128, 161, 33, 62), TextureChannel.RGBA);
borderRight = new Sprite(sheet, new Rectangle(223, 161, 33, 62), TextureChannel.Alpha); borderRight = new Sprite(sheet, new Rectangle(223, 161, 33, 62), TextureChannel.RGBA);
cornerTopLeft = new Sprite(sheet, new Rectangle(128, 128, 33, 33), TextureChannel.Alpha); cornerTopLeft = new Sprite(sheet, new Rectangle(128, 128, 33, 33), TextureChannel.RGBA);
cornerTopRight = new Sprite(sheet, new Rectangle(223, 128, 33, 33), TextureChannel.Alpha); cornerTopRight = new Sprite(sheet, new Rectangle(223, 128, 33, 33), TextureChannel.RGBA);
cornerBottomLeft = new Sprite(sheet, new Rectangle(128, 223, 33, 33), TextureChannel.Alpha); cornerBottomLeft = new Sprite(sheet, new Rectangle(128, 223, 33, 33), TextureChannel.RGBA);
cornerBottomRight = new Sprite(sheet, new Rectangle(223, 223, 33, 33), TextureChannel.Alpha); cornerBottomRight = new Sprite(sheet, new Rectangle(223, 223, 33, 33), TextureChannel.RGBA);
nodLogo = new Sprite(sheet, new Rectangle(0, 256, 256, 256), TextureChannel.Alpha); nodLogo = new Sprite(sheet, new Rectangle(0, 256, 256, 256), TextureChannel.RGBA);
gdiLogo = new Sprite(sheet, new Rectangle(256, 256, 256, 256), TextureChannel.Alpha); gdiLogo = new Sprite(sheet, new Rectangle(256, 256, 256, 256), TextureChannel.RGBA);
evaLogo = new Sprite(sheet, new Rectangle(256, 64, 128, 64), TextureChannel.Alpha); evaLogo = new Sprite(sheet, new Rectangle(256, 64, 128, 64), TextureChannel.RGBA);
nodPos = new float2(bounds.Width / 2 - 384, bounds.Height / 2 - 128); nodPos = new float2(bounds.Width / 2 - 384, bounds.Height / 2 - 128);
gdiPos = new float2(bounds.Width / 2 + 128, bounds.Height / 2 - 128); gdiPos = new float2(bounds.Width / 2 + 128, bounds.Height / 2 - 128);
evaPos = new float2(bounds.Width - 43 - 128, 43); evaPos = new float2(bounds.Width - 43 - 128, 43);
brightBlock = new Sprite(sheet, new Rectangle(320, 0, 16, 35), TextureChannel.Alpha); brightBlock = new Sprite(sheet, new Rectangle(320, 0, 16, 35), TextureChannel.RGBA);
dimBlock = new Sprite(sheet, new Rectangle(336, 0, 16, 35), TextureChannel.Alpha); dimBlock = new Sprite(sheet, new Rectangle(336, 0, 16, 35), TextureChannel.RGBA);
versionText = modData.Manifest.Metadata.Version; versionText = modData.Manifest.Metadata.Version;
} }

View File

@@ -47,8 +47,8 @@ namespace OpenRA.Mods.Common.LoadScreens
using (var stream = modData.DefaultFileSystem.Open(info["Image"])) using (var stream = modData.DefaultFileSystem.Open(info["Image"]))
sheet = new Sheet(SheetType.BGRA, stream); sheet = new Sheet(SheetType.BGRA, stream);
logo = new Sprite(sheet, new Rectangle(0, 0, 256, 256), TextureChannel.Alpha); logo = new Sprite(sheet, new Rectangle(0, 0, 256, 256), TextureChannel.RGBA);
stripe = new Sprite(sheet, new Rectangle(256, 0, 256, 256), TextureChannel.Alpha); stripe = new Sprite(sheet, new Rectangle(256, 0, 256, 256), TextureChannel.RGBA);
stripeRect = new Rectangle(0, r.Resolution.Height / 2 - 128, r.Resolution.Width, 256); stripeRect = new Rectangle(0, r.Resolution.Height / 2 - 128, r.Resolution.Width, 256);
logoPos = new float2(r.Resolution.Width / 2 - 128, r.Resolution.Height / 2 - 128); logoPos = new float2(r.Resolution.Width / 2 - 128, r.Resolution.Height / 2 - 128);
} }

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.LoadScreens
using (var stream = modData.DefaultFileSystem.Open(info["Image"])) using (var stream = modData.DefaultFileSystem.Open(info["Image"]))
{ {
var sheet = new Sheet(SheetType.BGRA, stream); var sheet = new Sheet(SheetType.BGRA, stream);
sprite = new Sprite(sheet, new Rectangle(0, 0, 1024, 480), TextureChannel.Alpha); sprite = new Sprite(sheet, new Rectangle(0, 0, 1024, 480), TextureChannel.RGBA);
} }
} }

View File

@@ -65,7 +65,7 @@ namespace OpenRA.Mods.Common.Widgets
vRange[1] = vMax - VTrim; vRange[1] = vMax - VTrim;
var rect = new Rectangle((int)(255 * sRange[0]), (int)(255 * (1 - vRange[1])), (int)(255 * (sRange[1] - sRange[0])) + 1, (int)(255 * (vRange[1] - vRange[0])) + 1); var rect = new Rectangle((int)(255 * sRange[0]), (int)(255 * (1 - vRange[1])), (int)(255 * (sRange[1] - sRange[0])) + 1, (int)(255 * (vRange[1] - vRange[0])) + 1);
mixerSprite = new Sprite(mixerSprite.Sheet, rect, TextureChannel.Alpha); mixerSprite = new Sprite(mixerSprite.Sheet, rect, TextureChannel.RGBA);
} }
public override void Initialize(WidgetArgs args) public override void Initialize(WidgetArgs args)
@@ -84,7 +84,7 @@ namespace OpenRA.Mods.Common.Widgets
var rect = new Rectangle((int)(255 * sRange[0]), (int)(255 * (1 - vRange[1])), (int)(255 * (sRange[1] - sRange[0])) + 1, (int)(255 * (vRange[1] - vRange[0])) + 1); var rect = new Rectangle((int)(255 * sRange[0]), (int)(255 * (1 - vRange[1])), (int)(255 * (sRange[1] - sRange[0])) + 1, (int)(255 * (vRange[1] - vRange[0])) + 1);
var mixerSheet = new Sheet(SheetType.BGRA, new Size(256, 256)); var mixerSheet = new Sheet(SheetType.BGRA, new Size(256, 256));
mixerSheet.GetTexture().SetData(front, 256, 256); mixerSheet.GetTexture().SetData(front, 256, 256);
mixerSprite = new Sprite(mixerSheet, rect, TextureChannel.Alpha); mixerSprite = new Sprite(mixerSheet, rect, TextureChannel.RGBA);
GenerateBitmap(); GenerateBitmap();
} }

View File

@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Widgets
using (var hueBitmap = new Bitmap(256, 256)) using (var hueBitmap = new Bitmap(256, 256))
{ {
var hueSheet = new Sheet(SheetType.BGRA, new Size(256, 256)); var hueSheet = new Sheet(SheetType.BGRA, new Size(256, 256));
hueSprite = new Sprite(hueSheet, new Rectangle(0, 0, 256, 1), TextureChannel.Alpha); hueSprite = new Sprite(hueSheet, new Rectangle(0, 0, 256, 1), TextureChannel.RGBA);
var bitmapData = hueBitmap.LockBits(hueBitmap.Bounds(), var bitmapData = hueBitmap.LockBits(hueBitmap.Bounds(),
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

View File

@@ -125,9 +125,9 @@ namespace OpenRA.Mods.Common.Widgets
previewOrigin = new int2((int)((rb.Width - previewScale * b.Width) / 2), (int)((rb.Height - previewScale * b.Height) / 2)); previewOrigin = new int2((int)((rb.Width - previewScale * b.Width) / 2), (int)((rb.Height - previewScale * b.Height) / 2));
mapRect = new Rectangle(previewOrigin.X, previewOrigin.Y, (int)(previewScale * b.Width), (int)(previewScale * b.Height)); mapRect = new Rectangle(previewOrigin.X, previewOrigin.Y, (int)(previewScale * b.Width), (int)(previewScale * b.Height));
terrainSprite = new Sprite(radarSheet, b, TextureChannel.Alpha); terrainSprite = new Sprite(radarSheet, b, TextureChannel.RGBA);
shroudSprite = new Sprite(radarSheet, new Rectangle(b.Location + new Size(previewWidth, 0), b.Size), TextureChannel.Alpha); shroudSprite = new Sprite(radarSheet, new Rectangle(b.Location + new Size(previewWidth, 0), b.Size), TextureChannel.RGBA);
actorSprite = new Sprite(radarSheet, new Rectangle(b.Location + new Size(0, previewHeight), b.Size), TextureChannel.Alpha); actorSprite = new Sprite(radarSheet, new Rectangle(b.Location + new Size(0, previewHeight), b.Size), TextureChannel.RGBA);
} }
void UpdateTerrainCell(CPos cell) void UpdateTerrainCell(CPos cell)

View File

@@ -72,7 +72,7 @@ namespace OpenRA.Mods.Common.Widgets
0, 0,
video.Width, video.Width,
video.Height), video.Height),
TextureChannel.Alpha); TextureChannel.RGBA);
var scale = Math.Min((float)RenderBounds.Width / video.Width, (float)RenderBounds.Height / video.Height * AspectRatio); var scale = Math.Min((float)RenderBounds.Width / video.Width, (float)RenderBounds.Height / video.Height * AspectRatio);
videoOrigin = new float2( videoOrigin = new float2(
@@ -93,7 +93,7 @@ namespace OpenRA.Mods.Common.Widgets
var overlaySheet = new Sheet(SheetType.BGRA, new Size(1, Exts.NextPowerOf2(scaledHeight))); var overlaySheet = new Sheet(SheetType.BGRA, new Size(1, Exts.NextPowerOf2(scaledHeight)));
overlaySheet.GetTexture().SetData(overlay); overlaySheet.GetTexture().SetData(overlay);
overlaySprite = new Sprite(overlaySheet, new Rectangle(0, 0, 1, scaledHeight), TextureChannel.Alpha); overlaySprite = new Sprite(overlaySheet, new Rectangle(0, 0, 1, scaledHeight), TextureChannel.RGBA);
} }
public override void Draw() public override void Draw()