From ed9d8e2e69cab9bd374a65f2cebdaa7c7057d1dd Mon Sep 17 00:00:00 2001 From: zeromus Date: Wed, 29 Jan 2014 00:53:04 +0000 Subject: [PATCH] dont alloc and pin during GuiRenderer work --- .../BizHawk.Bizware.BizwareGL/GuiRenderer.cs | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/Bizware/BizHawk.Bizware.BizwareGL/GuiRenderer.cs b/Bizware/BizHawk.Bizware.BizwareGL/GuiRenderer.cs index cf4fd4823a..6204fb9cb0 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/GuiRenderer.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/GuiRenderer.cs @@ -253,12 +253,29 @@ namespace BizHawk.Bizware.BizwareGL unsafe void DrawSubrectInternal(Texture2d tex, float x, float y, float w, float h, float u0, float v0, float u1, float v1) { - float[] data = new float[16] { - x,y, u0,v0, - x+w,y, u1,v0, - x,y+h, u0,v1, - x+w,y+h, u1,v1 - }; + //float[] data = new float[16] { + // x,y, u0,v0, + // x+w,y, u1,v0, + // x,y+h, u0,v1, + // x+w,y+h, u1,v1 + //}; + float* pData = stackalloc float[16]; + pData[0] = x; + pData[1] = y; + pData[2] = u0; + pData[3] = v0; + pData[4] = x + w; + pData[5] = y; + pData[6] = u1; + pData[7] = v0; + pData[8] = x; + pData[9] = y + h; + pData[10] = u0; + pData[11] = v1; + pData[12] = x + w; + pData[13] = y + h; + pData[14] = u1; + pData[15] = v1; if (sTexture != tex) CurrPipeline["uSampler0"].Set(sTexture = tex); @@ -274,11 +291,8 @@ namespace BizHawk.Bizware.BizwareGL _Modelview.IsDirty = false; } - fixed (float* pData = &data[0]) - { - Owner.BindArrayData(pData); - Owner.DrawArrays(PrimitiveType.TriangleStrip, 0, 4); - } + Owner.BindArrayData(pData); + Owner.DrawArrays(PrimitiveType.TriangleStrip, 0, 4); } public bool IsActive { get; private set; }