目次 - SDL 2.0の履歴

# SDL 2.0の履歴

## 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に対応

## 原文へのリンク

Mercurial > SDL / file revision