diff --git a/OffScreenBrowser.cs b/OffScreenBrowser.cs index 914eb1e4..93ff0915 100644 --- a/OffScreenBrowser.cs +++ b/OffScreenBrowser.cs @@ -74,32 +74,29 @@ namespace VRCX { if (type == PaintElementType.View) { - using (var device = _texture.Device) - using (var context = device.ImmediateContext) + var context = _texture.Device.ImmediateContext; + var dataBox = context.MapSubresource(_texture, 0, MapMode.WriteDiscard, MapFlags.None); + if (dataBox.IsEmpty == false) { - var dataBox = context.MapSubresource(_texture, 0, MapMode.WriteDiscard, MapFlags.None); - if (dataBox.IsEmpty == false) + var sourcePtr = buffer; + var destinationPtr = dataBox.DataPointer; + var rowPitch = dataBox.RowPitch; + var pitch = width * 4; + if (rowPitch == pitch) { - var sourcePtr = buffer; - var destinationPtr = dataBox.DataPointer; - var rowPitch = dataBox.RowPitch; - var pitch = width * 4; - if (rowPitch == pitch) + WinApi.CopyMemory(destinationPtr, sourcePtr, (uint)(width * height * 4)); + } + else + { + for (var i = height; i > 0; --i) { - WinApi.CopyMemory(destinationPtr, sourcePtr, (uint)(width * height * 4)); - } - else - { - for (var i = height; i > 0; --i) - { - WinApi.CopyMemory(destinationPtr, sourcePtr, (uint)pitch); - sourcePtr += pitch; - destinationPtr += rowPitch; - } + WinApi.CopyMemory(destinationPtr, sourcePtr, (uint)pitch); + sourcePtr += pitch; + destinationPtr += rowPitch; } } - context.UnmapSubresource(_texture, 0); } + context.UnmapSubresource(_texture, 0); } } diff --git a/VRCXVR.cs b/VRCXVR.cs index 7f7a2bae..272514c3 100644 --- a/VRCXVR.cs +++ b/VRCXVR.cs @@ -41,7 +41,10 @@ namespace VRCX // 메모리 릭 때문에 미리 생성해놓고 계속 사용함 public static void Init() { - m_Device = new Device(DriverType.Hardware, DeviceCreationFlags.SingleThreaded | DeviceCreationFlags.BgraSupport); + m_Device = new Device( + DriverType.Hardware, + DeviceCreationFlags.BgraSupport + ); m_Texture1 = new Texture2D(m_Device, new Texture2DDescription() { Width = 512,