Linux-mono-C#-SDL2-window

Linux 上で Mono + SDL2 を使って C# でウィンドウを表示するシンプルなアプリを作るには、以下のような構成にできます。


🔧 必要なもの

  1. Mono (C# 実行環境)
  2. SDL2 ライブラリ(Linux にインストールされている必要があります)
  3. 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 を使ったシンプルなウィンドウが表示され、×ボタンで閉じることができます。


何か追加したい機能(例:画像描画、イベント処理、描画ループなど)あれば気軽に言ってください!

よかったらシェアしてね!
目次