89 lines
2.7 KiB
C#
89 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
|
||
|
}
|
||
|
}
|