ИзданиС на SDL 2.0.18 Media Library

Π‘Π΅ΡˆΠ΅ објавСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° SDL 2.0.18 (Simple DirectMedia Layer), со Ρ†Π΅Π» Π΄Π° сС поСдностави ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ³Ρ€ΠΈ ΠΈ ΠΌΡƒΠ»Ρ‚ΠΈΠΌΠ΅Π΄ΠΈΡ˜Π°Π»Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. SDL Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° Π°Π»Π°Ρ‚ΠΊΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС хардвСрски Π·Π°Π±Ρ€Π·Π°Π½ 2D ΠΈ 3D Π³Ρ€Π°Ρ„ΠΈΡ‡ΠΊΠΈ ΠΈΠ·Π»Π΅Π·, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π²Π»Π΅Π·ΠΎΠ²ΠΈ, Π°ΡƒΠ΄ΠΈΠΎ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π°, 3D ΠΈΠ·Π»Π΅Π· ΠΏΡ€Π΅ΠΊΡƒ OpenGL/OpenGL ES/Vulkan ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ напишана Π²ΠΎ C ΠΈ сС дистрибуира ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° zlib. ОбСзбСдСни сС врски Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° SDL способности Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ програмски Ρ˜Π°Π·ΠΈΡ†ΠΈ. ΠšΠΎΠ΄ΠΎΡ‚ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° сС дистрибуира ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° Π—Π»ΠΈΠ±.

Π’ΠΎ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:

  • Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдоставлСна информация ΠΎ вСрсии 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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€