Випуск ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄Ρ–ΠΉΠ½ΠΎΡ— Π±Ρ–Π±Π»Ρ–ΠΎΡ‚Π΅ΠΊΠΈ 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

Π”ΠΎΠ΄Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ Π°Π±ΠΎ Π²Ρ–Π΄Π³ΡƒΠΊ