ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ ΡΠ΅Π»ΠΈΠ· Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° SDL 3.4.0 (Simple DirectMedia Layer). ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ³ΡΠΈ ΠΈ ΠΌΡΠ»ΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΠΎ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π½Π° 2D ΠΈ 3D Π³ΡΠ°ΡΠΈΠΊΠ°, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π·Π²ΡΠΊ ΠΈ 3D ΠΈΠ·Ρ ΠΎΠ΄ ΡΡΠ΅Π· OpenGL, OpenGL ES, Metal, Direct3D ΠΈΠ»ΠΈ Vulkan. ΠΠΎΠ΄ΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ Π΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Zlib. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΠ΅ ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½ΠΈΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° SDL Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡΠΈ.
SDL 3.4.0 Π΅ Π²ΡΠΎΡΠ°ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π² ΡΠ΅ΡΠΈΡΡΠ° SDL 3.x β ΠΏΡΡΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ²Π΅Π½Π° Π² ΡΠ΅ΡΠΈΡ 3.2.x, Π° Π²Π΅ΡΡΠΈΡ 3.3.x ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΠΊΠ°ΡΠΎ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π°. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² SDL 3.4.0 ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ 3D GPU API ΠΈ API Π·Π° Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΠ°Π½Π΅, ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π² WebAssembly Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° 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_BOOLEAN Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° 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
