
אם אתם עובדים בפיתוח משחקי וידאו או יישומי מולטימדיה חוצים פלטפורמות, סביר להניח ששמעתם על SDL. ההגעה de SDL 3.4הספרייה עושה קפיצת מדרגה משמעותית מבחינת יכולות גרפיקה, תמיכה בפלטפורמה וכלים לשיפור חוויית המשתמש, במחשבים שולחניים, באינטרנט ובמכשירים ניידים. זה לא עדכון קטן: הוא כולל הכל, החל ממנוע הרינדור הדו-ממדי וממשק ה-API של GPU תלת-ממדי ועד לטיפול באודיו, דרייברים, קלט עט, מערכות לינוקס מודרניות ועוד.
למרות ש-SDL 3 ממשיך להתפתח, הענף 3.4 מציג את עצמו כגרסה מוצקה מאוד נועד לסייע לפרויקטים חדשים ומתמשכים לנצל שיפורי ביצועים, ממשקי API חדשים ואינטגרציה טובה יותר עם סביבות כמו Emscripten, Wayland, Vision Pro או אפילו PlayStation 2 בהקשרים ספציפיים מאוד. בואו נבחן מקרוב מה חדש ב-SDL 3.4, מדוע הוא רלוונטי לפרויקט הבא שלכם, ואילו פרטים טכניים כדאי לזכור אם אתם רוצים להפיק ממנו את המרב.
התכונות החדשות הכלליות החשובות ביותר של SDL 3.4
קו העבודה העיקרי של SDL 3.4 מתמקד ב שיפור יכולת פעולה הדדית בין תלת-ממד לדו-ממדזהו מפתח למנועי משחקים ויישומים המשלבים ממשקים דו-ממדיים עם תוכן תלת-ממדי. עד כה, שילוב שתי השכבות עשוי לדרוש עבודה רבה יותר מהמפתח; גרסה זו מציגה כלים ומאפיינים חדשים המאפשרים תהליך זה.
בנוסף לגרפיקה, העדכון כולל תמיכה מקורית בתמונות PNGישנם שיפורים בולטים במערכת הקלט (עכבר, עט סטיילוס, מחוות, מקלדת על המסך) ומגוון שינויים ספציפיים עבור Windows, macOS, Linux, Emscripten, iOS, visionOS ופלטפורמות פחות נפוצות אחרות. שילוב עם המערכת האקולוגית של Steam וזמן הריצה שלה שוכלל גם כן, דבר חיוני למשחקי לינוקס ופיתוח חוצה פלטפורמות שמטרתו הפצת Steam.
יכולת פעולה הדדית בין ממשק ה-API של GPU תלת-ממדי לבין רינדור דו-ממדי
אחת מיתרונותיה של SDL 3.4 היא הדחיפה ל- אינטגרציה בין תלת-ממד לדו-ממדהספרייה מציגה פונקציות חדשות ליצירת עיבוד דו-ממדי מבוסס GPU ולהחלפת מידע בין טקסטורות GPU ופורמטי פיקסלים המטופלים על ידי SDL.
- זה מוסיף SDL_CreateGPURenderer() כדי ליצור רינדר דו-ממדי הממנף את ממשק ה-API של ה-GPU הבסיסי.
- עם SDL_GetGPURendererDevice() ניתן לאחזר את התקן ה-GPU המשויך לרינדור זה.
- הם מצטרפים SDL_CreateGPURenderState(), SDL_SetGPURenderStateFragmentUniforms(), SDL_SetGPURenderState() ו- SDL_DestroyGPURenderState() כדי לעבוד עם שיידרים של פרגמנטים בתוך רינדור GPU דו-ממדי.
- עכשיו הם מתקבלים טקסטורות YUV ומרחבי צבע HDR ברינדור דו-ממדי מבוסס GPU, שמעניין במיוחד עבור וידאו ותוכן באיכות גבוהה.
זה משלב גם תכונות כגון SDL_GetGPUDeviceProperties()פעולה זו מחזירה מאפייני התקן GPU, כולל שם התקן, שם וגרסה של מנהל ההתקן, ומידע נוסף הרלוונטי לתאימות או החלטות אבחון. בנוסף, `SDL_GetPixelFormatFromGPUTextureFormat()` ו-`SDL_GetGPUTextureFormatFromPixelFormat()` מקלים על המרה בין פורמטי מרקם GPU לפורמטי פיקסלים של SDL.
במקביל, הנכס כלול SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER כדי ליצור טקסטורה דו-ממדית ממרקם GPU קיים, ו-SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER כדי לקבל את מרקם ה-GPU המשויך למרקם דו-ממדי בעת שימוש ברנדרר GPU דו-ממדי. גישה זו מפחיתה משמעותית את החיכוך בעת ערבוב תוכן שנוצר ב-API של ה-GPU עם צינור ה-SDL הדו-ממדי הקלאסי.
שיפורים ברינדור דו-ממדי ובטיפול במרקמים
SDL 3.4 הולך מעבר לתוכנה הדדית בלבד ומוסיף פונקציות ספציפיות עבור כוונון עדין של האיכות והשליטה של רינדור דו-ממדילדוגמה, הוצגה פונקציה SDL_RenderTexture9GridTiled(), המאפשרת רינדור של 9 רשתות עם טקסטורות במצב "אריחים" במקום למתוח אותן, ובכך מונעת עיוותים באלמנטים או במסגרות של הממשק.
כדי לנהל את קנה המידה של טקסטורות, נוספו הפרטים הבאים SDL_GetDefaultTextureScaleMode() ו-SDL_SetDefaultTextureScaleMode(), המאפשר הגדרת מצב קנה מידה ברירת מחדל עבור טקסטורות חדשות. קשורים לכך הם SDL_GetRenderTextureAddressMode() ו-SDL_SetRenderTextureAddressMode(), יחד עם הקבוע SDL_TEXTURE_ADDRESS_WRAP, המספק תמיכה בעטיפת מרקם כאשר הרינדר מציין שהוא תומך בעטיפה (SDL_PROP_RENDERER_TEXTURE_WRAPPING_BOOLEAN).
תכונה חדשה ומעניינת מאוד למשחקים בעלי אסתטיקה רטרו היא SDL_SCALEMODE_PIXELART, אלגוריתם קנה מידה שנועד לאמנות פיקסלים, אשר מונע את הטשטוש הקלאסי של מצבי סינון אחרים, תוך שמירה על קצוות מוגדרים גם בעת הגדלה משמעותית של התמונה.
ישנה גם אפשרות לעבוד עם פלטות מרקמיםהפונקציות SDL_SetTexturePalette() ו-SDL_GetTexturePalette() מאפשרות לך להקצות ולבצע שאילתות על פלטות צבעים בתוך טקסטורות, וזה שימושי אם אתה יוצר מחדש סגנונות גרפיים ישנים או רוצה לייעל זרימות זיכרון ורוחב פס מסוימות.
מבחינת משטחים, SDL 3.4 משלב SDL_RotateSurface() כדי ליצור עותקים מסובבים של משטח, SDL_FLIP_HORIZONTAL_AND_VERTICAL נוסף כדי להפוך משטחים בו זמנית בשני הצירים. בנוסף, המאפיין SDL_PROP_SURFACE_ROTATION_NUMBER (שהוחלף מאוחר יותר על ידי SDL_PROP_SURFACE_ROTATION_FLOAT בשינויים הסופיים של המועמד) משמש כדי לציין את הזווית הנדרשת להצגה נכונה של תמונות מצלמה.
תמיכה ב-PNG מקורי וטעינה משטחית
אחד השיפורים המבורכים ביותר מבחינת הפרקטיות הוא ש-SDL 3.4 כולל תמיכה מקורית עבור PNG...במקרים רבים מבלי להסתמך על ספריות חיצוניות. זה מפשט הרבה פרויקטים קטנים ואבות טיפוס.
- SDL_LoadPNG() ו-SDL_LoadPNG_IO() מאפשרים טעינה ישירה של תמונות PNG כמשטחים.
- SDL_SavePNG() ו-SDL_SavePNG_IO() משמשים לשמירת משטחים בפורמט PNG.
- עם SDL_LoadSurface() הפונקציה SDL_LoadSurface_IO() מזהה אוטומטית האם הקובץ הוא BMP או PNG וטוען אותו על גבי משטח מבלי שתצטרכו לדאוג לפורמט.
תמיכה משולבת זו מתורגמת ל פחות תלויות ותצורות חיצוניותזה שימושי במיוחד בעת קומפילציה עבור פלטפורמות מרובות או שימוש ב-SDL בסביבות כמו Emscripten, שבהן צמצום מספר ספריות העזר משפיע הן על גודל הבינארי והן על מורכבותו.
קלט: עכבר, עט סטיילוס, מחוות ומקלדת על המסך
SDL 3.4 משפר משמעותית את כל מה שקשור ל התקני קלט מתקדמיםבתחום העכבר, מוצגת הפקודה SDL_SetRelativeMouseTransform(), המאפשרת החלת טרנספורמציה מותאמת אישית על קלט העכבר היחסי, שימושית לטכניקות קנה מידה, היפוך צירים או מיפויים מיוחדים.
לגבי עפרונות וסטילוסים, נראה סוג מכשיר SDL_GetPen()מה שמאפשר לך להבחין האם העט פועל ישירות על המסך או על משטח מגע נפרד, פרט שימושי מאוד להתאמת חוויית המשתמש בהתאם לסוג המכשיר.
במכשירים עם מקלדת וירטואלית, SDL מוסיף אירועים כגון SDL_EVENT_SCREEN_KEYBOARD_SHOWN ו-SDL_EVENT_SCREEN_KEYBOARD_HIDDEN, אשר מדווחים מתי המקלדת שעל המסך מוצגת או מוסתרת. זה נותן לך מרחב תמרון להתאים את הממשק, להזיז אלמנטים או למנוע כיסוי של שדות טקסט.
מערכת המחוות מורחבת גם עם אירועים SDL_EVENT_PINCH_BEGIN, SDL_EVENT_PINCH_UPDATE ו-SDL_EVENT_PINCH_ENDאשר מזהים מחוות צביטה לצורך זום ופעולות דומות. בנוסף, בסביבת Wayland, תוקנה התמיכה ביותר מחמישה לחצני עכבר, וגלילה מדויקת הוצגה ב-X11, מה שמשפר את החלקות של גלילה עדינה.
לבסוף, SDL 3.4 משלב SDL_GetEventDescription(), פונקציה לקבלת תיאור באנגלית של אירוע, המיועדת לרישום וניפוי שגיאות, משהו שימושי מאוד כשאתה עוקב אחר התנהגויות קלט נדירות על פני פלטפורמות מרובות.
אודיו: זרימות עבודה גמישות יותר וללא עיבוד מחדש של המערכת
גם תת-מערכת השמע מקבלת את חלקה הראוי בשיפורים, עם דגש חזק על עיבוד יעיל ובקרת צינורותראשית, SDL_EVENT_AUDIO_DEVICE_ADDED נשלח כעת גם במהלך האתחול עבור כל התקן שמע שזוהה, מה שמקל על גילוי ורישום התקנים מבלי להמתין לאירועים דינמיים.
שתי תכונות חדשות, SDL_PutAudioStreamDataNoCopy() ו-SDL_PutAudioStreamPlanarData(), נותנים אפשרויות נוספות בעת עבודה עם זרמי אודיו: הראשון נמנע מהעתקים מיותרים במקרים מסוימים, והשני מאפשר הזנת נתונים בפורמט מישורי במקום משולב, אידיאלי לזרמים מתקדמים או לשילוב עם ספריות עיבוד אודיו ברמה גבוהה.
בנוסף, הרמז SDL_HINT_AUDIO_DEVICE_RAW_STREAM תופס מקום מרכזי: רמז זה מציין שמערכת ההפעלה אסור לך להחיל עיבוד נוסף על האודיו. (כגון ביטול רעשים). זהו מפתח אם האפליקציה או המשחק שלכם כבר מטפלים בעיבוד ואתם לא רוצים שמערכת ההפעלה תתערב ותעוות את התוצאה. כמו כן, הוצג SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN, המאפשר לזרמים מסוימים לשרוד מעבר למחזור החיים של תת-מערכת השמע, דבר שימושי בארכיטקטורות מורכבות יותר.
בקרי ומכשירי HID
SDL 3.4 משפר משמעותית את התמיכה בבקרים והתקני HID, ומרחיב את מגוון החומרה שעובדת ישירות מהקופסה ללא צורך בתצורה חיצונית. בפרט, הוא מוסיף תמיכה משופרת בבקרי 8BitDoFlyDigi ו-Hand Held Legend SINput, מה שמקל על משחקי וידאו רבים של צד שלישי לעבוד בצורה עקבית יותר.
זה גם משולב מעמד בקר חוטי לנינטנדו סוויץ' 2 כאשר SDL עובר קומפילציה עם libusb, זה מעניין עבור משתמשים המעדיפים חיבור ישיר על פני מצב אלחוטי. ברמת ה-API של HID, נראה כי SDL_hid_get_properties() מקשר מאפייני SDL עם התקני HID, והמאפיין SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER מאפשר אחזור של ה-handle של libusb המשויך ל-SDL_hid_device לאחר שהוא נפתח עם libusb.
שיפורים אלה מתווספים לעובדה ש-SDL 3.4 כולל תמיכה בבקר Steam החדש בתוך המערכת האקולוגית הבסיסית שלה, וזה מתאים מאוד לתפקידה בתוך זמן הריצה של Steam וההתמקדות במשחקים בלינוקס ופלטפורמות אחרות.
אירועים, מערכת ותשתיות כלליות
מעבר להיבטים הגרפיים והקלט, SDL 3.4 מציג סדרה של שינויים במערכת האירועים ובכלי עזר כלליים שכדאי להכיר. לדוגמה, SDL_EVENT_WINDOW_EXPOSED כעת הוא ממלא את השדה data1 ב-true כאשר הוא נשלח במהלך שינוי גודל חלון בזמן אמת, מה שמספק הקשר נוסף.
זה מוסיף SDL_EVENT_DISPLAY_USABLE_BOUNDS_CHANGEDאירוע זה מופעל כאשר גבולות שולחן העבודה השמישים משתנים (לדוגמה, בעת הזזת סרגלי משימות או פאנלים). הוא משלב גם את SDL_EVENT_SCREEN_KEYBOARD_SHOWN/SDL_EVENT_SCREEN_KEYBOARD_HIDDEN ואת אירועי הצביטה שהוזכרו קודם לכן, ובכך מספק מערכת אקולוגית מקיפה יותר של אירועים עבור תרחישי ממשק משתמש דינמיים.
בצד הרווח, SDL_HINT_MAIN_CALLBACK_RATE כעת ניתן להגדיר אותו כערך נקודה צפה, מה שנותן דיוק רב יותר; SDL_AddAtomicU32() זה מוסיף תמיכה לתוספות אטומיות על מספרים שלמים לא חתומים של 32 סיביות; ו- SDL_GetSystemPageSize() מחזירה את גודל דף המערכת, שימושי למשימות זיכרון ברמה נמוכה.
כלול גם כן SDL_ALIGNED()מאקרו זה מציין כי נתונים מסוימים צריכים להיות בעלי יישור ספציפי, דבר הרלוונטי מאוד לאופטימיזציות ביצועים ולשימוש בהוראות SIMD. בינתיים, SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER מאפשר לך להגדיר פונקציית שחרור מותאמת אישית עבור הזיכרון בו משתמשות SDL_IOFromMem() ו-SDL_IOFromConstMem(), מה שנותן לך שליטה רבה יותר בעת שילוב SDL עם המקצים שלך.
שיפור מעניין נוסף הוא התמיכה ב- פלט יומן מפורט כאשר משתנה הסביבה DEBUG_INVOCATION מוגדר ל-"1", מיועד לאיתור ניפוי עמוק של אתחול והתנהגות ספרייה בהקשרים מורכבים.
שיפורים ספציפיים ב-Windows
ב-Windows, SDL 3.4 כולל שינויים משמעותיים המשפיעים על אודיו, וידאו ומערכת הקלט. אחת הנקודות המעניינות היא תכונת הרמז. SDL_HINT_RENDER_DIRECT3D11_WARPזה מאפשר לך להפעיל את WARP (מעצב הרסטר של התוכנה של D3D11). זה שימושי במכונות ללא GPU תואם או בסביבות וירטואליות שבהן אין האצה ישירה אך עדיין ברצונך להשתמש ב-API.
נהג ה-WASAPI מנצל את זה תפקיד_זרם_התקן_שמע_SDL_HINT_AUDIO_DEVICE כדי להתאים את קטגוריית זרם האודיו, שילוב חשוב להתנהגות עקבית במערכת (למשל, אודיו ממשחק, תקשורת וכו'). הוא מסתמך גם על SDL_HINT_AUDIO_DEVICE_RAW_STREAM כדי לציין האם על מנהל ההתקן להחיל עיבוד נוסף או לא.
הרמז מוזן בצד הקלט של המקלדת. SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYSזה מאפשר לך להשבית קיצורי דרך מסוימים במערכת בעת שימוש בקלט גולמי, וזה מאוד פרקטי עבור משחקים שצריכים ללכוד צירופי מקשים ללא הפרעה של המערכת. וברמת ה-API של GameInput, SDL_HINT_WINDOWS_GAMEINPUT הוא מושבת כברירת מחדל, מה שמפחית סכסוכים פוטנציאליים בסביבות מסוימות עד שהוא מוגדר במפורש.
זה גם נוסף SDL_PROP_DISPLAY_WINDOWS_HMONITOR_POINTER כדי להשיג את ה-HMONITOR המשויך למסך, משהו שימושי מאוד אם משלבים SDL עם קוד Win32 קלאסי וצריכים לתאם חלונות או מסכים.
macOS, iOS ו-visionOS
ב-macOS, SDL 3.4 כולל רמז מעשי מאוד: SDL_HINT_MAC_PRESS_AND_HOLDהגדרה זו קובעת האם לחיצה ממושכת על מקש תחזור על הקשה או תפתח את תפריט ההדגשות. זה מאפשר לך להתאים את התנהגות המקלדת עבור משחקים ויישומים הדורשים חזרה מהירה של מקשים במקום תפריט ההדגשות הרגיל של macOS.
ב-iOS, SDL עכשיו תומך בסצנות חלוןזה פותר את האזהרה "CLIENT OF UIKIT REQUIRES UPDATE" ומתאים את הספרייה לשיטות עבודה מודרניות של UIKit. המאפיין SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER מוצג כדי לציין את סצנת החלון בעת יצירת חלון SDL, ובכך מסייע לשלב כראוי את האפליקציה במערכת החלונות של iOS.
ב-visionOS ובמכשירים כמו Apple Vision Pro, SDL 3.4 מתאים את התנהגות החלון ואת קצב הרענון. קצב הרענון המוגדר כברירת מחדל הוא עולה ל-90 הרץמספק חוויה חלקה יותר, ו-SDL_SetWindowSize() משנה ביעילות את גודל החלון במשקפי Vision Pro, ומעניק שליטה רבה יותר על הפריסה בסביבות מציאות משולבת.
לינוקס, Wayland, KMS/DRM וולקן
בעולם הלינוקס, SDL 3.4 מגיע עם הרבה תכונות חדשות. ראשית, הוא מוסיף תמיכה אטומית עבור KMSDRMזה משפר את היציבות והסנכרון על ידי עבודה ישירה עם תת-המערכת הגרפית של הליבה. בהקשר לכך, הרמז SDL_HINT_KMSDRM_ATOMIC מאפשר שליטה האם KMSDRM ישתמש בפונקציונליות אטומית זו או לא.
עבור ויילנד, משולבים הדברים הבאים: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTERתכונה זו מאפשרת לך לקבל את ה-wl_output המשויך למסך, מה שמקל על אינטגרציות עמוקות עם המחבר. בנוסף, תוקנו בעיות עם עכברים עם יותר מחמישה כפתורים, וגלילה מדויקת תחת X11 שופרה, מה שמספק תחושת שליטה עדינה הרבה יותר ביישומים המסתמכים במידה רבה על גלילה.
בנוגע לוולקן, SDL 3.4 מציגה רינדור אצווה ושיפורים נוספים עבור ממשקי API כמו Vulkan, אשר מפחיתים קריאות מיותרות למשיכה ומשפרים את הביצועים הכוללים. כמו כן, נעשית עבודה על הלוגיקה שמזהה את כרטיס מסך Vulkan חזק יותר במערכות עם מספר מעבדים גרפיים (GPUs), זה עוזר לבחור באופן אוטומטי את ההתקן המתאים ביותר, במיוחד במערכות היברידיות או מחשבים ניידים עם מעבדים גרפיים משולבים וייעודיים.
בנוסף, המאפיין SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER נוסף כדי להגדיר אפשרויות Vulkan בעת יצירת התקן GPU, ו-SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN כדי לדרוש האצת חומרה בעת יצירת ההתקן האמור. ברמה מערכתית יותר, SDL ממוקם גם כ... ערכת כלים X11 עם הצגת X11TK כערכת כלים X11 משלו עבור SDL.
Emscripten ושימוש בדפדפן
SDL 3.4 משפר משמעותית את האינטגרציה שלו עם Emscripten וביצוע בדפדפני אינטרנטזהו מפתח אם אתם רוצים להעביר את המשחק או האפליקציה שלכם לאינטרנט מבלי לכתוב אותם מחדש מאפס. אחת התכונות החדשות מאפשרת לחלון SDL "למלא את המסמך" מבלי להיות בהכרח במסך מלא.
בגרסה קודמת, SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT הוצג, ובגרסה הסופית הוא מאורגן מחדש סביב הדגל SDL_WINDOW_FILL_DOCUMENT ואת הפונקציה SDL_SetWindowFillDocument(), יחד עם מספר מאפיינים קשורים. דוגמאות בולטות כוללות:
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING ו-SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID_STRING, כדי להגדיר ולבצע שאילתה על המזהה של הקנבס בו משתמש SDL.
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN ו-SDL_PROP_WINDOW_EMSCRIPTEN_FILL_DOCUMENT_BOOLEAN, כדי לציין ולבדוק אם החלון צריך לתפוס את כל המסמך.
- SDL_PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING ו-SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING, כדי לציין ולבצע שאילתה על האלמנט שאליו מקושר קלט המקלדת.
אפשרויות אלו מציעות שליטה עדינה מאוד על כיצד SDL משתלב עם ה-DOM וה-canvas?זה עוזר להימנע מפריצות ושכבות ביניים בעת עבודה עם Emscripten. זה גם מקל על הבטחת תאימות SDL עם מסגרות אינטרנט או אינטגרציות מורכבות יותר שבהן הקנבס הוא רק חלק אחד מהדף.
פלייסטיישן 2 ופלטפורמות פחות נפוצות אחרות
למרות שזה אולי מפתיע, SDL 3.4 שם לב גם ל- פלטפורמות ותיקות כמו פלייסטיישן 2נוספו רמזים לשליטה בפרמטרי התצוגה: SDL_HINT_PS2_GS_WIDTH, SDL_HINT_PS2_GS_HEIGHT, SDL_HINT_PS2_GS_PROGRESSIVE ו-SDL_HINT_PS2_GS_MODE, המאפשרים לך להתאים רזולוציה, מצב פרוגרסיבי והגדרות כלליות של סינתיסייזר הגרפיקה.
פרטים אלה מבהירים ש-SDL נותרה אופציה גמישה מאוד עבור פרויקטים של בנייה ביתית, אמולציה או מחקר בפלטפורמות ישנות יותר, מלבד המיקוד החזק שלה במחשבים אישיים מודרניים, ניידים ואינטרנט.
ניהול תהליכים, הרשאות מצלמה ומטא-דאטה של ELF
ברמת המערכת, SDL 3.4 מוסיף את המאפיין SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRINGזה משמש להגדרת ספריית העבודה של תהליכים חדשים שנוצרו מ-SDL. זה מפשט את הפעלת תת-תהליכים או כלים חיצוניים מיישום SDL שלך מבלי לגשת לממשק ה-API של מערכת ההפעלה.
בתחום הצילום, SDL_GetCameraPermissionState() כעת מחזירה ערך מהסוג מצב_הרשאת_מצלמה_SDL במקום מספר שלם כללי, יישור טוב יותר של סמנטיקה וקידום ניהול הרשאות בפלטפורמות ניידות ושולחניות.
במערכות יוניקס, SDL כולל הערות ELF המתארות את מתקני ספרייה שאינם חובה בהתאם לפורמט המתועד ב- systemd.io/ELF_DLOPEN_METADATA, הרעיון הוא שהפצות יכולות לנתח את ההערות הללו וליצור באופן אוטומטי תלויות אריזה באמצעות כלים כמו package-notes. SDL מספקת את המאקרו SDL_ELF_NOTE_DLOPEN כך שספריות ומשחקים אחרים יוכלו לעשות את אותו הדבר, מה שמאפשר ניהול תלויות נקי בהרבה.
התקדמות חלון וסמנים מונפשים
כדי לשפר את חוויית המשתמש, SDL 3.4 מוסיף תכונות שנועדו הצג התקדמות והעשיר את הממשקלדוגמה, הפונקציות SDL_SetWindowProgressState(), SDL_SetWindowProgressValue(), SDL_GetWindowProgressState() ו-SDL_GetWindowProgressValue() מוצגות כדי להציג סרגלי התקדמות על סמל החלון בשורת המשימות של Windows ו-Linux.
תכונה זו מאפשרת למשתמש לראות את מצב של מבצע ארוך (הורדות, העלאות, בניות פנימיות וכו') גם אם החלון אינו בקדמת הבמה. זוהי דרך אלגנטית למדי לספק משוב מבלי שיהיה צורך לעצב HUDs נוספים.
מצד שני, SDL_CreateAnimatedCursor() מאפשר צור סמני צבע מונפשיםזה מוסיף נגיעה של ליטוש ויזואלי למשחקים או כלים שבהם הסמן מתקשר מצבים (טעינה, פעולה אפשרית, התראה וכו'). בשילוב עם הרמז החדש SDL_HINT_MOUSE_DPI_SCALE_CURSORS, שכעת מוגדר כברירת מחדל ל-"0" כדי למנוע מסמנים לשנות גודל באופן בלתי צפוי בסביבות עם קנה מידה של DPI, זה מספק שליטה צפויה יותר על מראה המצביע.
עם קבוצת השינויים הזו - החל משילוב GPU תלת-ממדי/דו-ממדי, תמיכה ב-PNG מקורית, שיפורי קלט ואודיו, ועד תשומת לב ללינוקס מודרני, Emscripten, visionOS וקונסולות קלאסיות - SDL 3.4 מחזקת את מעמדה כ... ארגז כלים שלם מאוד לפיתוח חוצה פלטפורמותמזעור תלות חיצוניות ומציע בסיס איתן עליו ניתן לבצע איטרציות מבלי לבזבז יום שלם על ניפוי בעיות שאינן קשורות לקוד שלך.
