ΠΠ·Π΄Π°Π΄Π΅Π½Π° Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° SDL 2.0.18 (Simple DirectMedia Layer), ΠΊΠΎΡΡΠΎ Π΅ Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ³ΡΠΈ ΠΈ ΠΌΡΠ»ΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° SDL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° 2D ΠΈ 3D Π³ΡΠ°ΡΠΈΠΊΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²Ρ ΠΎΠ΄, Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π·Π²ΡΠΊ, ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° 3D ΡΡΠ΅Π· OpenGL/OpenGL ES/Vulkan ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ 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
