目次 - SDL 2.0の履歴

# SDL 2.0の履歴

## 2.0.16の変更点

### 全般

- ユーザに注意を喚起するSDL_FlashWindow()の追加
- デバイスの推奨オーディオフォーマットを得るSDL_GetAudioDeviceSpec()の追加
- ウィンドウのSDL_WINDOW_ALWAYS_ON_TOPフラグを動的に変更するSDL_SetWindowAlwaysOnTop()の追加
- マウスとは独立してキーボードをグラブする機能をSDL_SetWindowKeyboardGrab()に追加
- 32ビットサーフェイスを双一次補間(biliner)で拡大するSDL_SoftStretchLinear()の追加
- ストリーミングNV12/21テクスチャを更新するSDL_UpdateNVTexture()の追加
- DualSenseコントローラにカスタムトリガーエフェクトを送信するSDL_GameControllerSendEffect()とSDL_JoystickSendEffect()の追加
- PlayStationとNintendo Switchコントローラのセンサーのデータレートを獲得するSDL_GameControllerGetSensorDataRate()の追加
- Amazon Lunaゲームコントローラに対応
- HIDAPIドライバ使用時のGoogle Stadiaコントローラで振動に対応
- Amazon LunaとGoogle Stadiaコントローラの値をSDL_GameControllerTypeに追加
- HIDAPIドライバ使用時のNintendo Switch Proコントローラでアナログ振動に対応
- SDL_WaitEvent()とSDL_WaitEventTimeout()の使用時のCPU負荷を軽減

### Windows

- ウィンドウメッセージを受信したとき呼ばれる関数を設定するSDL_SetWindowsMessageHook()の追加
- SDLレンダラに使われているD3D11ドライバを得るSDL_RenderGetD3D11Device()の追加

### Linux

- Waylandへの対応を大幅に向上
- Pipewireを使った音声出力とキャプチャを追加
- PulseAudioによる録音がモニタデバイスを含むか否かを選択するSDL_HINT_AUDIO_INCLUDE_MONITORSヒントの追加
- 音声コントロールパネルにアプリケーションの役割を記述するSDL_HINT_AUDIO_DEVICE_STREAM_ROLEヒントの追加

### Android

- AAudioを使用する音声出力と録音の追加
- 軽い注意喚起を行うSDL_AndroidShowToast()の追加

### iOS

- iOS 14.1以降でマウスの相対モードに対応
- XboxシリーズXコントローラへの対応を追加

### tvOS

- XboxシリーズXコントローラへの対応を追加

## 2.0.14の変更点

### 全般

- HIDAPIコントローラドライバにPS5 DualSenseとXbox Series X コントローラの対応を追加
- パドルと新しいボタンのためのゲームコントローラ定数の追加
- 新たな情報の獲得のためのゲームコントローラ関数の追加:
  - SDL_GameControllerGetSerial()
  - SDL_GameControllerHasAxis()
  - SDL_GameControllerHasButton()
  - SDL_GameControllerGetNumTouchpads()
  - SDL_GameControllerGetNumTouchpadFingers()
  - SDL_GameControllerGetTouchpadFinger()
  - SDL_GameControllerHasSensor()
  - SDL_GameControllerSetSensorEnabled()
  - SDL_GameControllerIsSensorEnabled()
  - SDL_GameControllerGetSensorData()
  - SDL_GameControllerRumbleTriggers()
  - SDL_GameControllerHasLED()
  - SDL_GameControllerSetLED()
- PS5コントローラ用HIDAPIを使用するか否かを選択するSDL_HINT_JOYSTICK_HIDAPI_PS5ヒントの追加
- 新たな情報を獲得するためのジョイスティック関数の追加:
  - SDL_JoystickGetSerial()
  - SDL_JoystickRumbleTriggers()
  - SDL_JoystickHasLED()
  - SDL_JoystickSetLED()
- アプリケーションが仮想ジョイスティックを生成するためのAPIの追加:
  - SDL_JoystickAttachVirtual()
  - SDL_JoystickDetachVirtual()
  - SDL_JoystickIsVirtual()
  - SDL_JoystickSetVirtualAxis()
  - SDL_JoystickSetVirtualButton()
  - SDL_JoystickSetVirtualHat()
- センサー一覧への排他的アクセスを保障するSDL_LockSensors()とSDL_UnlockSensors()の追加
- ハンドル型コントローラのエフェクト再生を行うSDL_HAPTIC_STEERING_AXISの追加
- マウスの相対移動量をディスプレイのDPIとレンダラーの論理サイズのどちらを基準にするかを決めるSDL_HINT_MOUSE_RELATIVE_SCALINGヒントの追加
- 現代的なウィンドウマネージャとの互換性を高めるため, SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSSのデフォルト値を偽とした
- アプリケーションの現在のロケールを設定するSDL_GetPreferredLocales()の追加
- アプリケーションのロケールのデフォルトを上書きするSDL_HINT_PREFERRED_LOCALESヒントの追加
- システムのデフォルトブラウザでURLを開くSDL_OpenURL()の追加
- サーフェイスがランレングス圧縮を使用しているかを得るSDL_HasSurfaceRLE()の追加
- SDL_SIMDAlloc()で得たメモリを再取得するSDL_SIMDRealloc()の追加
- スレッドセーフな方法で最後のエラーを得られるSDL_GetErrorMsg()の追加
- SDL_crc32(), SDL_wcscasecmp(), SDL_wcsncasecmp(), SDL_trunc(), SDL_truncf()の追加
- RGBのより明確な名称の追加. 例: SDL_PIXELFORMAT_XRGB8888, SDL_PIXELFORMAT_XBGR8888など

## 2.0.12の変更点

### 全般

- テクスチャで使用される拡大モードの獲得と設定を行うSDL_GetTextureScaleMode()とSDL_SetTextureScaleMode()の追加
- SDL_LockTexture()と似ているが, ロックされた領域がSDLサーフェイスとなるSDL_LockTextureToSurface()の追加
- 乗算ブレンドとαブレンドを同時に行うSDL_BLENDMODE_MULの追加
- ディスプレイ番号0のSDL_GetDisplayUsableBounds()の結果を上書きするSDL_HINT_DISPLAY_USABLE_BOUNDSヒントの追加
- SDL_TouchFingerEventにタッチしたウィンドウIDを追加
- ゲームコントローラの種類(Xbox 360, Xbox One, PS3, PS4, Nintendo Switch Pro)を戻すSDL_GameControllerTypeForIndex(), SDL_GameControllerGetType()の追加
- ゲームコントローラの種類の自動検知の結果を上書きするSDL_HINT_GAMECONTROLLERTYPEヒントの追加
- プレイヤー番号からデバイスを求めるSDL_JoystickFromPlayerIndex()とSDL_GameControllerFromPlayerIndex()の追加
- デバイスのプレイヤー番号を設定するSDL_JoystickSetPlayerIndex()とSDL_GameControllerSetPlayerIndex()の追加
- Nintendo Switch Proコントローラで, ボタンをラベル通りとするか, 配置レイアウトに合わせて交換するかを決めるSDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELSヒントの追加. デフォルトではラベル通りとする
- HIDAPIドライバによるNintendo GameCubeコントローラの対応を追加. 使用するか否かを決めるSDL_HINT_JOYSTICK_HIDAPI_GAMECUBEヒントの追加
- HIDAPIドライバによるXbox 360とXbox Oneコントローラの対応を改善
- 以下を含む多数のゲームコントローラの対応を追加:
  - 8BitDo FC30 Pro
  - 8BitDo M30 GamePad
  - BDA PS4 Fightpad
  - HORI Fighting Commander
  - Hyperkin Duke
  - Hyperkin X91
  - MOGA XP5-A Plus
  - NACON GC-400ES
  - NVIDIA Controller v01.04
  - PDP Versus Fighting Pad
  - Razer Raion Fightpad for PS4
  - Razer Serval
  - Stadia Controller
  - SteelSeries Stratus Duo
  - Victrix Pro Fight Stick for PS4
  - Xbox One Elite Series 2
- HIDAPIドライバを使用した場合の, ゲームコントローラの振動の呼び出しによるブロッキングを修正
- 配列の各要素を0にするSDL_zeroa()マクロの追加
- CPUにARM SIMD (ARMv6+)仕様がある場合に真を戻すSDL_HasARMSIMD()の追加

### Windows

- gccでビルドしたアプリケーションでrelease SDL DLLを使うとクラッシュする問題を修正
- 2.0.10のイベントハンドリングのパフォーマンス低下を修正
- SDL_SetThreadPriority()がUWPアプリケーションに対応

### Linux

- 新しいX11ウィンドウのビジュアルIDを指定するSDL_HINT_VIDEO_X11_WINDOW_VISUALIDヒントの追加
- デフォルトでX11がGLXとEGLのどちらを使用するかを指定するSDL_HINT_VIDEO_X11_FORCE_EGLヒントの追加

### iOS / tvOS / macOS

- 指定のウィンドウにCAMetalLayer-backed NSView/UIViewを生成してアタッチするSDL_Metal_CreateView()とSDL_Metal_DestroyView()の追加

### iOS/ tvOS

- Bluetooth Steamコントローラのゲームコントローラとしての対応を追加

### tvOS

- Apple TVのサラウンド対応を修正

### Android

- デバイスのAPIレベルを戻すSDL_GetAndroidSDKVersion()の追加
- OpenSL-ESを使用した録音の対応を追加
- Bluetooth Steamコントローラのゲームコントローラとしての対応を追加
- アプリがバックグラウンドになる, または終了するとき稀にクラッシュする問題の修正

## 2.0.10の変更点

### 全般

- SDL_RW*マクロは2.0.10以降は関数となる
- 現在のCPUのSIMD命令用にメモリを確保するSDL_SIMDGetAlignment(), SDL_SIMDAlloc(), SDL_SIMDFree()関数の追加
- SDLレンダリングAPIの引数を浮動小数点で指定するSDL_RenderDrawPointF(), SDL_RenderDrawPointsF(), SDL_RenderDrawLineF(), SDL_RenderDrawLinesF(), SDL_RenderDrawRectF(), SDL_RenderDrawRectsF(), SDL_RenderFillRectF(), SDL_RenderFillRectsF(), SDL_RenderCopyF(), SDL_RenderCopyExF()関数の追加
- タッチデバイスがタッチスクリーン, 相対座標または絶対座標のトラックパッドとなるかを得るSDL_GetTouchDeviceType()関数の追加
- パフォーマンス向上のため, SDLレンダリングAPIはバッチレンダリングをデフォルトとした
- ネイティブレンダリングとSDLレンダリングを混合して使っている場合に, バッチレンダリングコマンドを強制的に実行させるSDL_RenderFlush()関数の追加
- レンダリングAPIをバッチ処理するか否かを制御するSDL_HINT_RENDER_BATCHINGヒントの追加. レンダラーを生成するとき, 使用するドライバを指定しなければ, デフォルトは"1"である.
- デバッグ用にSDLイベントのログ出力を有効にするSDL_HINT_EVENT_LOGGINGヒントの追加
- ジョイスティックとゲームコントローラーをバインドするために読み込むファイルを指定するSDL_HINT_GAMECONTROLLERCONFIG_FILEヒントの追加
- SDLがタッチイベントとマウスイベントを統合して扱うか否かを選択するSDL_HINT_MOUSE_TOUCH_EVENTSヒントの追加
- 潜在的なセキュリティ上の脅威に対応するため, 不正なWAVEファイルとBMPファイルの処理を改善

### Linux

- Waylandを採用し, Mirビデオドライバを削除

### iOS / tvOS

- iOS 13とtvOS 13でXBoxとPS4の無線コントローラに対応
- Bluetoothキーボードを使ったテキスト入力に対応

### Android

- OpenSL ESを使用した低遅延オーディオの追加
- SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCHヒントの廃止 (SDL_HINT_MOUSE_TOUCH_EVENTSヒントとSDL_HINT_TOUCH_MOUSE_EVENTSヒントに置き換えられた)
  SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH = 1は, 2つのヒントを0とする設定と置き換えなければならない. SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH = 0は, 2つのヒントを1とする設定と置き換えなければならない.
- アプリがポーズされたときイベントループをブロックするか否かを選択するSDL_HINT_ANDROID_BLOCK_ON_PAUSEヒントの追加

## 2.0.9の変更点

### 全般

- 新しいセンサーAPIの追加. SDL_Init()でSDL_INIT_SENSORを使って初期化され, SDL_sensor.hで宣言されている
- センサーが更新されたとき送られるSDL_SENSORUPDATEイベントの追加
- 現在のディスプレイの向きを戻すSDL_GetDisplayOrientation()の追加
- ディスプレイの向きが変わったとき送られるSDL_DISPLAYEVENTイベントの追加
- Xbox, PS4, Nintendo Switch Proコントローラの環境を越えた一貫性のある対応のためのHIDAPIジョイスティックドライバの追加 (PS4とNintendo Switch Proコントローラへの対応に貢献したValveに感謝します)
- その他多数のゲームコントローラへの対応を追加
- ゲームコントローラのプレイヤー番号を得るSDL_JoystickGetDevicePlayerIndex(), SDL_JoystickGetPlayerIndex(), SDL_GameControllerGetPlayerIndex()の追加. XInputコントローラの場合はXInput indexを戻す.
- ハプティックAPIを使わずに単純な振動を起こせるSDL_GameControllerRumble(), SDL_JoystickRumble()の追加
- 開く前にゲームコントローラのマッピングを得られるSDL_GameControllerMappingForDeviceIndex()の追加
- マウスのダブルクリックの時間を制御するSDL_HINT_MOUSE_DOUBLE_CLICK_TIMEヒントの追加
- マウスのダブルクリックの半径をピクセル単位で制御するSDL_HINT_MOUSE_DOUBLE_CLICK_RADIUSヒントの追加
- サーフェイスが有効なカラーキーを持っているか否かを戻すSDL_HasColorKey()の追加
- CPUにAVX-512F仕様があるか否かを戻すSDL_HasAVX512F()の追加
- アプリケーションがタブレット上で実行されているか否かを戻すSDL_IsTablet()の追加
- スレッドを最高位の優先度にするSDL_THREAD_PRIORITY_TIME_CRITICALの追加

### Mac OS X

- Mac OS X Mojaveで黒い画面から始まる問題の修正

### Linux

- RealtimeKitを使って可能ならネイディブスレッドの優先度の設定するSDL_LinuxSetThreadPriority()の追加

### iOS

- アジア言語のIME入力の修正

### Android

- Googleの新しいApp Storeの要求に適合させるため, Android SDKでAPI 26が必要となった
- 有線USBのXbox, PS4, Nintendo Switch Pro ゲームコントローラへの対応の追加
- Android 7.0以降(Chromebook, Samsung Experience 9.0のDeXモードを除く)でマウスの相対モードへの対応を追加
- Android 7.0以降でカスタムマウスカーソルへの対応を追加
- 戻るボタンを押したときアプリ外に戻る(デフォルト)かSDL_SCANCODE_AC_BACKイベントを送るかを決めるSDL_HINT_ANDROID_TRAP_BACK_BUTTONヒントの追加
- Androidシステムの戻るボタンの振る舞いを引き起こすSDL_AndroidBackButton()の追加
- Chromebook Androidランタイムで実行されているか否かを戻すSDL_IsChromebook()の追加
- Samsung DeXドッキングステーションで実行しているか否かを戻すSDL_IsDeXMode()の追加

## 2.0.8の変更点

### 全般

- SDL_fmod()とSDL_log10()の追加
- SDL数学関数はそれぞれfloat版が利用可能になる
- YUV色空間に/から変換するとき使用される計算式を制御するSDL_SetYUVConversionMode()とSDL_GetYUVConversionMode()の追加. オプションはJPEG, BT.601, BT.709

### Windows

- Windows UWPでWASAPIへの対応を実装. 非推奨のXAudio2実装を削除
- Windows 7以降でWASAPIによるリサンプリングを追加

### Windows UWP

- アプリケーションが実行されているデバイスの種類を得るSDL_WinRTGetDeviceFamily()の追加

### Mac OS X

- MacにおけるVulkan SDKの対応を追加:
  - https://www.lunarg.com/lunarg-releases-vulkan-sdk-1-0-69-0-for-mac/
- 可能なときANGLEを使ったOpenGL ESへの対応を追加

### Mac OS X / iOS / tvOS

- Metal 2Dレンダーを追加
- Metalを使ってSDLレンダリングするとき, アプリケーションの描画を挿入するSDL_RenderGetMetalLayer()とSDL_RenderGetMetalCommandEncoder()の追加

### iOS

- iPhone Xでホームインジケーターバーを隠すか否かを制御するSDL_HINT_IOS_HIDE_HOME_INDICATORヒントの追加. デフォルトはフルスクリーンアプリケーションでは暗くして, ウィンドウアプリケーションでは表示する

### iOS / Android

- ソフトウェアキーボードのリターンキーはキーボードを隠すか, キーイベントを送るか(デフォルト)を制御するSDL_HINT_RETURN_KEY_HIDES_IMEヒントの追加

### Android

- SDLはAndroid StudioとGradleでのビルドにデフォルトで対応する
- SDLはビルドにはAPI 19 SDKが必要になる. しかし依然 API 14 (Android 4.0.1)をターゲットとする
- アプリケーションがAndroid TVで実行されているかを得るSDL_IsAndroidTV()の追加

### Android / tvOS

- TVリモコンはジョイスティックとしてリストに上げられるか(デフォルト), キーボードイベントを送るか制御するSDL_HINT_TV_REMOTE_AS_JOYSTICKヒントの追加

### Linux

- XサーバはSDLアプリケーションのコンポーザーをスキップするか否かを制御するSDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITORヒントの追加. デフォルトは"1"
- Raspberry PiとKMSDRMビデオドライバで, ダブルバッファリングまたはトリプルバッファリング(デフォルト)のどちらを使うかを制御するSDL_HINT_VIDEO_DOUBLE_BUFFERヒントの追加

## 2.0.7の変更点

### 全般

- オーディオストリーム変換関数の追加:
  - SDL_NewAudioStream()
  - SDL_AudioStreamPut()
  - SDL_AudioStreamGet()
  - SDL_AudioStreamAvailable()
  - SDL_AudioStreamFlush()
  - SDL_AudioStreamClear()
  - SDL_FreeAudioStream()
- SDLメモリ確保機能の問い合わせと設定を行う関数の追加:
  - SDL_GetMemoryFunctions()
  - SDL_SetMemoryFunctions()
  - SDL_GetNumAllocations()
- ジョイスティックとゲームコントローラーAPIへのマルチスレッドアクセスのためのロック関数の追加:
  - SDL_LockJoysticks()
  - SDL_UnlockJoysticks()
- 以下の関数がスレッドセーフになった:
  - SDL_SetEventFilter()
  - SDL_GetEventFilter()
  - SDL_AddEventWatch()
  - SDL_DelEventWatch()

## 2.0.6の変更点

### 全般

- SDL_vulkan.hによる多環境対応Vulkanグラフィックの追加:
  - SDL_Vulkan_LoadLibrary()
  - SDL_Vulkan_GetVkGetInstanceProcAddr()
  - SDL_Vulkan_GetInstanceExtensions()
  - SDL_Vulkan_CreateSurface()
  - SDL_Vulkan_GetDrawableSize()
  - SDL_Vulkan_UnloadLibrary()
  これにより全ての環境依存コードをSDL環境のVulkanへ移行する必要が生じる. test/testvulkan.cにサンプルがある.
- 2Dレンダリングのカスタムブレンドモードを生成するSDL_ComposeCustomBlendMode()の追加
- NEON命令に対応しているか否かを戻すSDL_HasNEON()の追加
- Nintendo Switch Proコントローラーを含む多くのゲームコントローラーへの対応を追加
- ゲームコントローラーで逆転やバラバラの方向のマッピングの追加
- 開く前にジョイスティックの情報を戻す関数の追加:
  - SDL_JoystickGetDeviceVendor()
  - SDL_JoystickGetDeviceProduct()
  - SDL_JoystickGetDeviceProductVersion()
  - SDL_JoystickGetDeviceType()
  - SDL_JoystickGetDeviceInstanceID()
- 開かれたジョイスティックの情報を戻す関数の追加:
  - SDL_JoystickGetVendor()
  - SDL_JoystickGetProduct()
  - SDL_JoystickGetProductVersion()
  - SDL_JoystickGetType()
  - SDL_JoystickGetAxisInitialState()
- 開かれたゲームコントローラーの情報を戻る関数の追加:
  - SDL_GameControllerGetVendor()
  - SDL_GameControllerGetProduct()
  - SDL_GameControllerGetProductVersion()
- 組み込まれたゲームコントローラーマッピングの一覧を得られるSDL_GameControllerNumMappings()とSDL_GameControllerMappingForIndex()の追加
- ファイルからメモリにロードするSDL_LoadFile()とSDL_LoadFile_RW()の追加
- サーフェイスのコピーを生成するSDL_DuplicateSurface()の追加
- JACKオーディオドライバの試作を追加
- 2のベキ乗でない再サンプリングの実装. libsamplerateの使用を選択できる
- 再サンプリングの質を決めるSDL_HINT_AUDIO_RESAMPLING_MODEヒントの追加
- SDL_RenderSetLogicalSize()の拡大方法を決めるSDL_HINT_RENDER_LOGICAL_SIZE_MODEヒントの追加
  - "0" または "letterbox" - 上下/左右を黒帯にして画面に合わせる (デフォルト)
  - "1" または "overscan" - 拡大して画面に合わせる. 画面からはみ出すことを認める
- マウスの速さの倍率を設定するSDL_HINT_MOUSE_NORMAL_SPEED_SCALEヒントとSDL_HINT_MOUSE_RELATIVE_SPEED_SCALEヒントの追加
- マウスイベントとタッチイベントを統合するか否かをを決めるSDL_HINT_TOUCH_MOUSE_EVENTSヒントの追加

### Windows

- Windowsのオーディオドライバのデフォルトを新たにWASAPIとした. ホットプラグインとデフォルトオーディオデバイスの変更に対応
- 古いXAudio2オーディオドライバは非推奨となった. 次のリリースで廃止される予定である
- SDL windowsでユーザのアイコンを指定するSDL_HINT_WINDOWS_INTRESOURCE_ICONヒントとSDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALLヒントの追加
- .NET言語と様々なWindowsデバッガに対応するためSDL_HINT_WINDOWS_DISABLE_THREAD_NAMINGヒントをデフォルトとした
- ゲームコントローラーマッピングのGUID形式の更新. 古いマッピングは読み込み時に自動的に変換される
- WindowsのSDL_WINDOW_ALWAYS_ON_TOPフラグを実装

### Linux

- 組み込み用のKMS/DRMビデオドライバの試作を追加

### iOS

- SDL_HINT_AUDIO_CATEGORYヒントによるオーディオカテゴリの操作を追加. サイレントスイッチが音声に影響を与えるか否かを決めるため

## 2.0.5の変更点

### 全般

- 一部の環境で録音に対応した
- キューから録音された音声を回収するSDL_DequeueAudio()の追加
- テキストをドラッグ&ドロップしたとき発生するSDL_DROPTEXTイベントの追加
- 複数の項目をドラッグ&ドロップしたとき発生するSDL_DROPBEGINイベント, SDL_DROPCOMPLETEイベントの追加
- デフォルトではクリックしてウィンドウをフォーカスしたときSDLアプリケーションにはイベントが伝わらないようになった. SDL_HINT_MOUSE_FOCUS_CLICKTHROUGHヒントを"1"にするとウィンドウのクリックイベントが伝わるようになる
- αチャネルのあるサーフェイスをBMPとして保存すると, αチャネルに対応した新しいBMP形式で保存される. SDL_HINT_BMP_SAVE_LEGACY_FORMATヒントを"1"にすると古い形式になる.
- ヒントの真偽値を得るSDL_GetHintBoolean()の追加
- レンダラーの拡大を, スムーズに行うか, ビューポートサイズの整数倍にするかを設定するSDL_RenderSetIntegerScale()の追加
- ピクセル形式を指定してSDLサーフェイスを生成するSDL_CreateRGBSurfaceWithFormat()とSDL_CreateRGBSurfaceWithFormatFrom()の追加
- ウィンドウが使える領域を戻すSDL_GetDisplayUsableBounds()の追加. 例えば, Mac OS Xではメニューバーとドックは領域から引かれる
- ウィンドウのクライアント領域の周りにある枠のサイズを戻すSDL_GetWindowBordersSize()の追加
- SDL_HITTEST_NORMALでは行われないヒットテストで発生するSDL_WINDOWEVENT_HIT_TESTイベントの追加 (例: タイトルバーやウィンドウ枠)
- ウィンドウのサイズを変えられるかを設定するSDL_SetWindowResizable()の追加
- ウィンドウの不透明度を設定/獲得するSDL_SetWindowOpacity()とSDL_GetWindowOpacity()の追加
- あるウィンドウが他のウィンドウに対してモーダルであるかを設定するSDL_SetWindowModalFor()の追加
- SDL_MixAudioFormat()がAUDIO_U16LSBとAUDIO_U16MSBに対応
- OpenGLレンダラーを使った場合, テクスチャを読み戻すとき画像が反転する問題の修正
- OpenGLレンダラーを使った場合のSDL_BLENDMODE_NONEでのテクスチャの色変調の問題の修正
- いくつかの場合でカラーキーのα値が無視される不具合の修正

### Windows

- スレッドに名前を付けたときデバッガ例外が発生することを防ぐSDL_HINT_WINDOWS_DISABLE_THREAD_NAMINGヒントの追加. この例外はデバッガ下で.NETアプリケーションを実行するとき問題を引き起こす
- WindowsもSDL_HINT_THREAD_STACK_SIZEヒントに対応
- XBoxのコントローラのトリガが開始時に自動的に引かれる問題の修正
- 実行ファイルの最初のアイコンをウィンドウのアイコンのデフォルトとする
- SDLがCライブラリ対応でビルドされたとき, SDLログメッセージが重複して表示される問題の修正
- SDLウィンドウがフォーカスを失ったときデッドキーをリセットする. よって, SDLアプリケーションで押されたデッドキーは他のアプリケーションの文字入力に影響しない

### Mac OS X

- ダミービデオドライバの選択の問題の修正
- Caps Lockキーイベントは, 押したときに押した/離したイベントがペアで発生するのではなく, 押したときに押したイベント, 離したときに離したイベントが発生するようになった
- Mac OS X 10.12でのマウスホイールイベントの問題の修正
- 音声ドライバは, 新しいバージョンのMac OS Xでより高い互換性のあるAVFoundationを使うように更新した

### Linux

- Fcitx IMEに対応
- SDLウィンドウがフォーカスを求めているかをウィンドウマネージャが尋ねたとき発生するSDL_WINDOWEVENT_TAKE_FOCUSイベントの追加
- 更新周期は切捨てではなく四捨五入となった. 例えば59.94Hzは, 59Hzではなく, 四捨五入され60Hzとなる
- Raspberry Piのスクリーンタッチに初期対応

### OpenBSD

- OpenBSDでもSDL_GetBasePath()に対応

### iOS

- iOS 8以降の動的ロードオブジェクトに対応

### tvOS

- Apple TVに対応
- Apple TV remoteのジョイスティックの軸を自動的に回転方向に合わせるかを設定するSDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATIONヒントの追加

### Android

- Androidスクリーンの解像度が変わったときウィンドウのサイズが変わらない問題の修正
- 加速度で伝えられたジョイスティックのZ軸を正しくなるように修正

### Emscripten (webブラウザ上で動作)

- 多数の不具合修正と実装

## 2.0.4の変更点

### 全般

- Emscriptenを使ったwebアプリケーションに対応. 詳細はdocs/README-emscripten.mdを参照すること
- Native Client (NaCl)を使ったwebアプリケーションに対応. 詳細はdocs/README-nacl.mdを参照すること
- コールバックを使わずにオーディオキューにデータを送信するAPIの追加:
  - SDL_QueueAudio(), SDL_GetQueuedAudioSize(), SDL_ClearQueuedAudio()
- オーディオデバイス ホットプラグ(活線挿抜)に対応するイベントの追加:
  - SDL_AUDIODEVICEADDED, SDL_AUDIODEVICEREMOVED
- SDL_PointInRect()の追加
- AVX2対応を検知するSDL_HasAVX2()の追加
- SDLウィンドウの一部分を標準的なウィンドウの装飾(例えばドラッグエリアやサイズ変更エリア)のように扱えるようにするSDL_SetWindowHitTest()の追加
- いかなる場合でも入力グラブのあるウィンドウを得られるSDL_GetGrabbedWindow()の追加
- レンダラーのクリップが有効か否かを知らせるSDL_RenderIsClipEnabled()の追加
- ウィンドウ内にマウスがない場合でもイベントを得られるようにするSDL_CaptureMouse()の追加
- SDLウィンドウの外にマウスカーソルを移動させるSDL_WarpMouseGlobal()の追加
- SDLウィンドウの外のマウスの状態を得るSDL_GetGlobalMouseState()の追加
- マウスホイールイベントに, フリップされている(方向が逆になっている)か否かを知らせるdirectionフィールドの追加
- GL_CONTEXT_RELEASE_BEHAVIOR GLアトリビュート([WGL|GLX]_ARB_context_flush_control extensionにマップされる)の追加
- 一部の環境でOpenGL ESバージョンの選択を認めるEGL_KHR_create_contextに対応
- OpenGLとOpenGL ES 2.0レンダラーのNV12とNV21 YUVテクスチャーに対応
- 様々なSoCで使われるVivanteビデオドライバの追加
- D3Dデバイスが失われAndroidイベントループがGLESコンテキストを再生成したときに発生するSDL_RENDER_DEVICE_RESETイベントの追加
- SDL組み込みのシグナルハンドラを無効にするSDL_HINT_NO_SIGNAL_HANDLERSヒントの追加
- SDLスレッドのスタックサイズを設定するSDL_HINT_THREAD_STACK_SIZEヒントの追加
- stdlibルーチンにSDL_sqrtf(), SDL_tan(), SDL_tanf()を追加
- 標準的でないチャンクを用いたWAVとBMPファイルの対応の改良
- 名称をSDL_assert_dataからSDL_AssertDataに, SDL_assert_stateからSDL_AssertStateに変更
- マウスカーソルが見えないときウィンドウを操作できないようにするSDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDENヒントの追加
- ディスプレイのDPI情報を得るSDL_GetDisplayDPI()の追加
- ジョイスティックのバッテリーレベルを得るSDL_JoystickCurrentPowerLevel()の追加
- イベントのインスタンスIDからSDL_Joystick*を得るSDL_JoystickFromInstanceID()の追加
- イベントのインスタンスIDからSDL_GameController*を得るSDL_GameControllerFromInstanceID()の追加
- (訳者による追記) 日本語106/109キーボードの一部キーが有効になった
  - _キー(右Shiftの左) = SDL_SCANCODE_INTERNATIONAL1
  - カタカナひらがなキー = SDL_SCANCODE_INTERNATIONAL2
  - \キー(Backspaceの左) = SDL_SCANCODE_INTERNATIONAL3
  - 変換キー = SDL_SCANCODE_INTERNATIONAL4
  - 無変換キー = SDL_SCANCODE_INTERNATIONAL5

### Windows

- Windows Phone 8.1とWindows 10/UWP (Universal Windows Platform)に対応
- タイマ分解能は1ミリ秒がデフォルトとなった. これはSDL_HINT_TIMER_RESOLUTIONヒントで変更できる
- SDLmainはCランタイムに依存しなくなった. これによりDebugとReleaseのどちらでも同じ.libを使えるようになった
- ウィンドウメッセージのたびにTranslateMessage()の前に呼ばれる関数を設定するSDL_SetWindowsMessageHook()の追加
- SDL_PumpEvents()でウィンドウメッセージループを処理するか否かを設定するSDL_HINT_WINDOWS_ENABLE_MESSAGELOOPヒントの追加
- マウスイベントのwhichフィールドがSDL_TOUCH_MOUSEIDであるかで本当のマウスかタッチイベントかを判別できるようになった
- SDL_SysWMinfoはウィンドウHDCを持つようになった
- Unicodeコマンドラインオプションに対応
- ALTと何らかのキーの同時押しによるビープ音の抑制
- SDL_SetTextInputRect()はOSが表示したIMEの表示位置を変えるようになった
- ALT+F4キーによるSDL_WINDOWEVENT_CLOSEイベントの発生を抑制するSDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4ヒントの追加
- XInputデバイスで古い軸とボタンのマッピングを使うSDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPINGヒントの追加 (将来的には廃止)

### Mac OS X

- ドラッグ&ドロップの実装
- ジョイスティック ホットプラグ検知の改良
- SDL_WINDOWEVENT_EXPOSEDウィンドウイベントが適切な状況で発生するようになった
- 相対マウスモードでアプリケーションのフォーカスが失われた/得られた場合の動作の修正
- Spacesフルスクリーンモードへの/からの移行に関連するバグの修正
- ディスプレイモードのリフレッシュレートの修正
- SDL_SysWMinfoはARC-compatibleとなった
- フォーカスしようとするアプリケーションがバックグラウンドプロセスになることを抑制するSDL_HINT_MAC_BACKGROUND_APPヒントの追加

### Linux

- MirとWaylandを使うビルドにデフォルトで対応
- IBus IMEに対応
- SDL_TEXTEDITINGイベントを送信する代わりにIBusがテキスト編集に使うか否かを制御するSDL_HINT_IME_INTERNAL_EDITINGヒントの追加
- _NET_WM_PINGプロトコルを無効にするSDL_HINT_VIDEO_X11_NET_WM_PINGヒントの追加
- Pulseaudioを使った複数オーディオデバイスに対応
- 相対マウスモードでのマウスイベントの重複の修正

### iOS

- iOS 8に対応
- SDL_WINDOW_ALLOW_HIGHDPIウィンドウフラグが有効になり高DPIに対応した. SDL_GL_GetDrawableSize()またはSDL_GetRendererOutputSize()でウィンドウの解像度をピクセル数で得られる
- SDL_GetWindowSize()とディスプレイモードサイズは, ピクセル数ではなく, 「DPIに依存しないポイント数」/「画面座標」座標空間となった (OS Xの挙動と一致)
- iPhone 6 Plus ネイティブ解像度に対応
- MFiゲームコントローラに対応
- SDL_HINT_ACCELEROMETER_AS_JOYSTICKヒントに対応
- iOS 7+でのsRGB OpenGL ESに対応
- SDL_DisableScreenSaver(), SDL_EnableScreenSaver(), SDL_HINT_VIDEO_ALLOW_SCREENSAVERヒントに対応
- SDL_SysWMinfoはウィンドウのアクティブGLESビューが使うOpenGL ESフレームバッファとカラーバッファを持つようになった
- 様々な回転と方向に関する問題の修正
- メモリリークの修正

### Android

- タッチイベントがマウスイベントとして扱われないようにするSDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCHヒントの追加
- SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSIONヒントとSDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSIONヒントの追加
- SDL_DisableScreenSaver(), SDL_EnableScreenSaver(), SDL_HINT_VIDEO_ALLOW_SCREENSAVERヒントに対応
- SDL_ShowMessageBox()とSDL_ShowSimpleMessageBox()に対応

### Raspberry Pi

- Raspberry Pi 2に対応

## 原文へのリンク

SDL/WhatsNew.txt