holopy3/Assets/Klak/Spout/Runtime/Internal/PluginEntry.cs
2020-12-10 15:25:12 +01:00

88 lines
2.7 KiB
C#

// KlakSpout - Spout video frame sharing plugin for Unity
// https://github.com/keijiro/KlakSpout
using UnityEngine;
using System.Runtime.InteropServices;
namespace Klak.Spout
{
static class PluginEntry
{
internal enum Event { Update, Dispose }
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR_OSX
internal static bool IsAvailable {
get {
return SystemInfo.graphicsDeviceType ==
UnityEngine.Rendering.GraphicsDeviceType.Direct3D11;
}
}
[DllImport("KlakSpout")]
internal static extern System.IntPtr GetRenderEventFunc();
[DllImport("KlakSpout")]
internal static extern System.IntPtr CreateSender(string name, int width, int height);
[DllImport("KlakSpout")]
internal static extern System.IntPtr CreateReceiver(string name);
[DllImport("KlakSpout")]
internal static extern System.IntPtr GetTexturePointer(System.IntPtr ptr);
[DllImport("KlakSpout")]
internal static extern int GetTextureWidth(System.IntPtr ptr);
[DllImport("KlakSpout")]
internal static extern int GetTextureHeight(System.IntPtr ptr);
[DllImport("KlakSpout")] [return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool CheckValid(System.IntPtr ptr);
[DllImport("KlakSpout")]
internal static extern int ScanSharedObjects();
[DllImport("KlakSpout")]
internal static extern System.IntPtr GetSharedObjectName(int index);
internal static string GetSharedObjectNameString(int index)
{
var ptr = GetSharedObjectName(index);
return ptr != System.IntPtr.Zero ? Marshal.PtrToStringAnsi(ptr) : null;
}
#else
internal static bool IsAvailable { get { return false; } }
internal static System.IntPtr GetRenderEventFunc()
{ return System.IntPtr.Zero; }
internal static System.IntPtr CreateSender(string name, int width, int height)
{ return System.IntPtr.Zero; }
internal static System.IntPtr CreateReceiver(string name)
{ return System.IntPtr.Zero; }
internal static System.IntPtr GetTexturePointer(System.IntPtr ptr)
{ return System.IntPtr.Zero; }
internal static int GetTextureWidth(System.IntPtr ptr)
{ return 0; }
internal static int GetTextureHeight(System.IntPtr ptr)
{ return 0; }
internal static bool CheckValid(System.IntPtr ptr)
{ return false; }
internal static int ScanSharedObjects()
{ return 0; }
internal static string GetSharedObjectNameString(int index)
{ return null; }
#endif
}
}