Π Π΅Π»ΠΈΠ· ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SDL 3.4.0

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

SDL 3.4.0 являСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ Π² сСрии SDL 3.x β€” ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ Π±Ρ‹Π»Π° объявлСна сСрия 3.2.x, Π° Π²Π΅Ρ‚ΠΊΠ° 3.3.x ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ. Π“Π»Π°Π²Π½Ρ‹Π΅ измСнСния Π² SDL 3.4.0 связаны с ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ пСрСносимости ΠΌΠ΅ΠΆΠ΄Ρƒ API 3D GPU ΠΈ API для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ отрисовки, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сборки Π² WebAssambly ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ компилятора Emscripten, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с графичСскими ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π°ΠΌΠΈ ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€ΡŒΡΠΌΠΈ, появлСнию встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ PNG.

Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй Π² SDL 3.4.0:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PNG, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_LoadPNG(), SDL_LoadPNG_IO(), SDL_SavePNG() ΠΈ SDL_SavePNG_IO(). Для опрСдСлСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (PNG ΠΈΠ»ΠΈ BMP) ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² качСствС повСрхностСй Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_LoadSurface() ΠΈ SDL_LoadSurface_IO().
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция SDL_RotateSurface() для создания ΠΏΠΎΠ²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ повСрхности.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция SDL_CreateAnimatedCursor() для создания Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… курсоров, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ SDL_HINT_MOUSE_DPI_SCALE_CURSORS для автоматичСского ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ курсоров Π² привязкС ΠΊ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ экрана.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() ΠΈ SDL_GetWindowProgressValue() для ΠΏΠΎΠΊΠ°Π·Π° прогрСсса ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прилоТСния Π² ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ‡.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ свойства для использования GPU API со старым ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ свойство SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER ΠΈ SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEA для настройки ΠΈ задСйствования возмоТностСй API Vulkan ΠΏΡ€ΠΈ создании устройств GPU.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция SDL_GetGPUDeviceProperties() для запроса ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± GPU.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_CreateGPURenderer() ΠΈ SDL_GetGPURendererDevice() для задСйствования GPU ΠΏΡ€ΠΈ 2D-отрисовкС, Π° Ρ‚Π°ΠΊΠΆΠ΅ SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() ΠΈ SDL_DestroyGPURenderState() для задСйствования Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΈ 2D-отрисовкС.
  • ΠŸΡ€ΠΈ 2D-отрисовкС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ GPU Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° YUV-тСкстур ΠΈ HDR. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° тСкстур с ΠΏΠ°Π»ΠΈΡ‚Ρ€Π°ΠΌΠΈ, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_GetTexturePalette() ΠΈ SDL_SetTexturePalette(). Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_GetPixelFormatFromGPUTextureFormat() ΠΈ SDL_GetGPUTextureFormatFromPixelFormat() для прСобразования Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² тСкстур, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER ΠΈ SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER для создания 2D-тСкстур ΠΈΠ· GPU-тСкстур. Для настройки тСкстур Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_RenderTexture9GridTiled(), SDL_GetDefaultTextureScaleMode(), SDL_SetDefaultTextureScaleMode(), SDL_GetRenderTextureAddressMode(), SDL_SetRenderTextureAddressMode().
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ SDL_SCALEMODE_PIXELART для использования ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ для пиксСльной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ события SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED, SDL_EVENT_SCREEN_KEYBOARD_SHOWN, SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE, SDL_EVENT_PINCH_END ΠΈ SDL_EVENT_AUDIO_DEVICE_ADDED, ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π³Ρ€Π°Π½ΠΈΡ†, появлСнии/скрытии экранной ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, экранных ТСстах ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ устройства.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SDL_PutAudioStreamDataNoCopy() ΠΈ SDL_PutAudioStreamPlanarData() для Π±ΠΎΠ»Π΅Π΅ эффСктивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Nintendo Switch 2, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· USB. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² 8BitDo, FlyDigi ΠΈ Hand Held Legend SInput.
  • Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ WebAssambly-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, собираСмых ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ компилятора Emscripten, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция SDL_SetWindowFillDocument() ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ SDL_WINDOW_FILL_DOCUMENT, SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING ΠΈ SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING.
  • На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Linux Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ использовании KMSDRM, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ свойства SDL_HINT_KMSDRM_ATOMIC. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTER для запроса устройства Π²Ρ‹Π²ΠΎΠ΄Π° wl_output, ассоциированного с экраном, Π² окруТСниях Π½Π° Π±Π°Π·Π΅ Wayland.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ