Spout.NET
1.0.0
Spout.NET คือการใช้งาน C# .NET สำหรับ Spout2 ซึ่งเป็นระบบแชร์เฟรมวิดีโอสำหรับ Windows
คุณสามารถติดตั้ง Spout.NET จาก NuGet
Install-Package Spout.NET
โปรดทราบว่า Spout.NET
ต้องการ NuGet 3.3
หรือสูงกว่า (หรืออีกนัยหนึ่งคือ PackageReference
) หากโปรเจ็กต์ของคุณใช้ packages.config
โปรดย้ายแพ็คเกจของคุณไปที่ PackageReference
API ของไลบรารีการแมปนี้ สอดคล้องกับ Spout SDK อย่างสมบูรณ์ ดังนั้นคุณจึงสามารถอ้างอิงเอกสารประกอบ Spout SDK เพื่อการพัฒนาได้ คุณสามารถใช้ Marshal Class เพื่อหลีกเลี่ยงรหัสที่ไม่ปลอดภัย
สร้างโครงการคอนโซล .NET Framework
กำหนดเป้าหมายการกำหนดค่า build เป็น x64
อีกครั้ง
เพิ่มแพ็คเกจ nuget ต่อไปนี้
Install-Package Spout.NET
เปิด Allow Unsafe Code
ในการกำหนดค่าโปรเจ็กต์
ใส่โค้ดต่อไปนี้ลงใน Program.cs
using System ;
using System . IO ;
using System . Threading ;
using OpenGL ;
using Spout . Interop ;
namespace SpoutTest
{
class Program
{
static unsafe void Main ( string [ ] args )
{
using ( DeviceContext deviceContext = DeviceContext . Create ( ) ) // Create the DeviceContext
{
IntPtr glContext = IntPtr . Zero ;
glContext = deviceContext . CreateContext ( IntPtr . Zero ) ;
deviceContext . MakeCurrent ( glContext ) ; // Make this become the primary context
SpoutSender sender = new SpoutSender ( ) ;
sender . CreateSender ( "CsSender" , 640 , 360 , 0 ) ; // Create the sender
byte [ ] data = new byte [ 640 * 360 * 4 ] ;
int i = 0 ;
fixed ( byte * pData = data ) // Get the pointer of the byte array
while ( true )
{
for ( int j = 0 ; j < 640 * 360 * 4 ; j += 4 )
{
data [ j ] = i == 0 ? byte . MaxValue : byte . MinValue ;
data [ j + 1 ] = i == 1 ? byte . MaxValue : byte . MinValue ;
data [ j + 2 ] = i == 2 ? byte . MaxValue : byte . MinValue ;
data [ j + 3 ] = byte . MaxValue ;
}
Console . WriteLine ( $ "Sending (i = { i } )" ) ;
sender . SendImage (
pData , // Pixels
640 , // Width
360 , // Height
Gl . RGBA , // GL_RGBA
true , // B Invert
0 // Host FBO
) ;
Thread . Sleep ( 1000 ) ; // Delay
if ( i < 2 ) i ++ ;
else i = 0 ;
}
}
}
}
}
เอ็มไอที