Выпуск ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SDL 2.0.18

Бостоялся Ρ€Π΅Π»ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SDL 2.0.18 (Simple DirectMedia Layer), Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠΉ Π½Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ написания ΠΈΠ³Ρ€ ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SDL прСдоставляСт Ρ‚Π°ΠΊΠΈΠ΅ срСдства ΠΊΠ°ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-ускорСнный Π²Ρ‹Π²ΠΎΠ΄ 2D- ΠΈ 3D-Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π²ΠΎΠ΄Π°, воспроизвСдСниС Π·Π²ΡƒΠΊΠ°, Π²Ρ‹Π²ΠΎΠ΄ 3D Ρ‡Π΅Ρ€Π΅Π· OpenGL/OpenGL ES/Vulkan ΠΈ мноТСство ΠΈΠ½Ρ‹Ρ… ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° написана Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ zlib. Для использования возмоТностСй SDL Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках программирования ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ. Код Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Zlib.

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС:

  • Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдоставлСна информация ΠΎ вСрсии SDL, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ данная функция появилась. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° автоматичСская синхронизация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² wiki с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
    • SDL_RenderGeometry() ΠΈ SDL_RenderGeometryRaw() для отрисовки ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ 2D Render API.
    • SDL_SetTextureUserData() ΠΈ SDL_GetTextureUserData() для привязки Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния ΠΊ тСкстурС.
    • SDL_RenderWindowToLogical() ΠΈ SDL_RenderLogicalToWindow() для прСобразования ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΠΎΠΊΠ½Π° ΠΈ логичСскими ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ отрисовки.
    • SDL_RenderSetVSync() для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ синхронизации Π²Ρ‹Π²ΠΎΠ΄Π° с ΠΊΠ°Π΄Ρ€ΠΎΠ²Ρ‹ΠΌ гасящим ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠΌ (vblank).
    • SDL_PremultiplyAlpha() для примСнСния прозрачности ΠΊ Π±Π»ΠΎΠΊΠ°ΠΌ пиксСлСй Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SDL_PIXELFORMAT_ARGB8888.
    • SDL_SetWindowMouseRect() ΠΈ SDL_GetWindowMouseRect() для ограничСния двиТСния курсора ΠΌΡ‹ΡˆΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ ΠΎΠΊΠ½Π°.
    • SDL_GameControllerHasRumble(), SDL_GameControllerHasRumbleTriggers(), SDL_JoystickHasRumble() ΠΈ SDL_JoystickHasRumbleTriggers() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΠΈ дТойстиком эффСкта Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ (rumble)
    • SDL_GetWindowICCProfile() для получСния Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ICC-профиля ΠΎΠΊΠ½Π° (для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ измСнСния профиля ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ событиС SDL_WINDOWEVENT_ICCPROF_CHANGED).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ: SDL_HINT_APP_NAME для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ свСдСний ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠΈ прилоТСния ΠΈ SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ прозрачности для ΠΎΠΊΠΎΠ½ EGL.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ событиС ΠΎΠΊΠ½Π° SDL_WINDOWEVENT_DISPLAY_CHANGED, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ гСнСрируСтся ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ экрана, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ показываСтся ΠΎΠΊΠ½ΠΎ.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² двиТСния колСса ΠΌΡ‹ΡˆΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠΎΠ»Π΅ΠΉ «preciseX» ΠΈ «preciseY» Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… события.
  • Ѐункция SDL_WaitEvent() ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° для сниТСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° CPU.
  • API hidapi ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступСн Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» SDL_hidapi.h.
  • На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ двиТСния ΠΌΡ‹ΡˆΠΈ Π² Windows Remote Desktop. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ SDL_HINT_IME_SHOW_UI для ΠΏΠΎΠΊΠ°Π·Π° Ρ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² интСрфСйса (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ). Для UWP-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ вмСсто XInput задСйствован WGI для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π²Π²ΠΎΠ΄Π°.
  • Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Linux Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ: SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME для привязки дСйствий, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ хранитСля экрана; SDL_HINT_LINUX_JOYSTICK_CLASSIC для Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· устройств (/dev/input/js* ΠΈΠ»ΠΈ /dev/input/event*) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для дТойстика; SDL_HINT_JOYSTICK_DEVICE для установки устройства, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ для дТойстика. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция SDL_LinuxSetThreadPriorityAndPolicy() для управлСния расстановки ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
  • Для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Π·Π°Ρ…Π²Π°Ρ‚Π° Π·Π²ΡƒΠΊΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ API AAudio. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Steam Controller (для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ SDL_HINT_JOYSTICK_HIDAPI_STEAM).

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Один ΠΈΠ· Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² SDL Π Π°ΠΉΠ°Π½ Π“ΠΎΡ€Π΄ΠΎΠ½ (icculus) сообщил, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² SDL простой 3D API, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ возмоТности API соврСмСнных GPU (Vulkan, Direct3D 12, Metal). Π€ΠΈΠ½Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΡƒΠ΄Π΅Ρ‚ компания Epic Games, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Epic Megagrant. Заявку Π½Π° Π³Ρ€Π°Π½Ρ‚ Π“ΠΎΡ€Π΄ΠΎΠ½ ΠΏΠΎΠ΄Π°Π» Π² ΠΌΠ°Π΅ 2021, Π° Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru