Linux 上で Mono + SDL2 を使って C# でウィンドウを表示するシンプルなアプリを作るには、以下のような構成にできます。
🔧 必要なもの
- Mono (C# 実行環境)
- SDL2 ライブラリ(Linux にインストールされている必要があります)
- SDL2-CS(C# から SDL2 を扱うためのラッパー)
💾 フォルダ構成(例)
/SdlWindowApp ├── Program.cs // メインクラス ├── WindowManager.cs // SDL2ウィンドウを扱うクラス └── SDL2.dll // SDL2-CS バインディング
1. Program.cs(メインクラス)
using System;
namespace SdlWindowApp
{
class Program
{
static void Main(string[] args)
{
WindowManager window = new WindowManager();
window.Run();
}
}
}
2. WindowManager.cs(SDL2 ウィンドウクラス)
using System;
using SDL2;
namespace SdlWindowApp
{
public class WindowManager
{
private const int Width = 800;
private const int Height = 600;
private const string Title = "SDL2 Window";
public void Run()
{
if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) < 0)
{
Console.WriteLine("SDL_Init failed: " + SDL.SDL_GetError());
return;
}
IntPtr window = SDL.SDL_CreateWindow(
Title,
SDL.SDL_WINDOWPOS_CENTERED,
SDL.SDL_WINDOWPOS_CENTERED,
Width,
Height,
SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN
);
if (window == IntPtr.Zero)
{
Console.WriteLine("SDL_CreateWindow failed: " + SDL.SDL_GetError());
SDL.SDL_Quit();
return;
}
bool running = true;
SDL.SDL_Event e;
while (running)
{
while (SDL.SDL_PollEvent(out e) != 0)
{
if (e.type == SDL.SDL_EventType.SDL_QUIT)
{
running = false;
}
}
SDL.SDL_Delay(16); // 約60FPS
}
SDL.SDL_DestroyWindow(window);
SDL.SDL_Quit();
}
}
}
🧰 コンパイル方法(Linux + Mono)
mcs -r:SDL2.dll -out:SdlWindowApp.exe Program.cs WindowManager.cs
✅ 実行方法
mono SdlWindowApp.exe
🎉 結果
この構成で、SDL2 を使ったシンプルなウィンドウが表示され、×ボタンで閉じることができます。
何か追加したい機能(例:画像描画、イベント処理、描画ループなど)あれば気軽に言ってください!
