SDL 2.0.18 Toleo la Maktaba ya Vyombo vya Habari

Maktaba ya SDL 2.0.18 (Simple DirectMedia Layer) ilitolewa, yenye lengo la kurahisisha uandishi wa michezo na programu za media titika. Maktaba ya SDL hutoa zana kama vile utoaji wa michoro ya 2D na 3D iliyoharakishwa kwa maunzi, usindikaji wa ingizo, uchezaji wa sauti, matokeo ya 3D kupitia OpenGL/OpenGL ES/Vulkan na shughuli nyingine nyingi zinazohusiana. Maktaba imeandikwa kwa C na inasambazwa chini ya leseni ya zlib. Vifungo vinatolewa ili kutumia uwezo wa SDL katika miradi katika lugha mbalimbali za programu. Nambari ya maktaba inasambazwa chini ya leseni ya Zlib.

Katika toleo jipya:

  • Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдоставлСна информация ΠΎ вСрсии 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, Π° Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚.

Chanzo: opennet.ru

Kuongeza maoni