ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ 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
