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 を使ったシンプルなウィンドウが表示され、×ボタンで閉じることができます。
何か追加したい機能(例:画像描画、イベント処理、描画ループなど)あれば気軽に言ってください!