تعمل مكتبة SDL 3.4 على تعزيز قابلية التشغيل البيني بين واجهة برمجة تطبيقات وحدة معالجة الرسومات ثلاثية الأبعاد وعرض الرسومات ثنائية الأبعاد.

  • تعمل SDL 3.4 على تعزيز قابلية التشغيل البيني بين واجهة برمجة تطبيقات وحدة معالجة الرسومات ثلاثية الأبعاد والعرض ثنائي الأبعاد، مع عارضات جديدة وحالات وحدة معالجة الرسومات ودعم YUV وHDR.
  • يضيف هذا الإصدار دعمًا أصليًا لملفات PNG، وخيارات جديدة لتغيير حجم وتوجيه الصور، ومؤشرات متحركة، وأحداث إدخال ونوافذ متقدمة.
  • يتضمن تحسينات محددة لأنظمة التشغيل Windows و macOS و Linux و Emscripten و iOS و visionOS، بالإضافة إلى دعم موسع لوحدات التحكم و HID و KMSDRM الذري.
  • تم تأسيس SDL 3.4 كإصدار ناضج من SDL3، مع استقرار أكبر وأداء أفضل وتكامل أعمق مع Steam وVulkan ومنصات الويب.

SLD 3.4

إذا كنت تعمل في مجال تطوير ألعاب الفيديو أو تطبيقات الوسائط المتعددة متعددة المنصات، فمن المحتمل أنك سمعت عن SDL. الوصول de إس دي إل 3.4تُحقق المكتبة قفزة نوعية في إمكانيات الرسومات، ودعم المنصات، وأدوات تحسين تجربة المستخدم، على أجهزة سطح المكتب، والويب، والأجهزة المحمولة. هذا ليس تحديثًا بسيطًا، بل يشمل كل شيء بدءًا من محرك عرض ثنائي الأبعاد وواجهة برمجة تطبيقات وحدة معالجة الرسومات ثلاثية الأبعاد، وصولًا إلى معالجة الصوت، وبرامج التشغيل، وإدخال القلم، وأنظمة لينكس الحديثة، وغير ذلك الكثير.

على الرغم من أن SDL 3 لا يزال يتطور، إلا أن الفرع يُقدّم الإصدار 3.4 نفسه كإصدار متين للغاية صُممت هذه النسخة لمساعدة المشاريع الجديدة والقائمة على الاستفادة من تحسينات الأداء، وواجهات برمجة التطبيقات الجديدة، والتكامل الأفضل مع بيئات مثل Emscripten وWayland وVision Pro، أو حتى PlayStation 2 في سياقات محددة للغاية. دعونا نلقي نظرة فاحصة على الجديد في SDL 3.4، ولماذا هو مهم لمشروعك القادم، وما هي التفاصيل التقنية التي يجب مراعاتها لتحقيق أقصى استفادة منه.

أهم الميزات الجديدة العامة في SDL 3.4

يركز خط العمل الرئيسي لـ SDL 3.4 على تحسين التوافق بين تقنية الأبعاد الثلاثية وتقنية الأبعاد الثنائيةيُعدّ هذا الأمر أساسيًا لمحركات الألعاب والتطبيقات التي تدمج واجهات ثنائية الأبعاد مع محتوى ثلاثي الأبعاد. وحتى الآن، كان دمج الطبقتين يتطلب جهدًا أكبر من المطور؛ ويُقدّم هذا الإصدار أدوات وخصائص جديدة تُسهّل هذه العملية.

بالإضافة إلى الرسومات، يتضمن التحديث دعم أصلي لصور PNGطرأت تحسينات ملحوظة على نظام الإدخال (الماوس، القلم الضوئي، الإيماءات، لوحة المفاتيح على الشاشة)، بالإضافة إلى مجموعة من التغييرات الخاصة بأنظمة ويندوز، وماك أو إس، ولينكس، وإمسكريبتن، وآي أو إس، وفيجن أو إس، وغيرها من المنصات الأقل شيوعًا. كما تم تحسين التكامل مع بيئة ستيم ووقت تشغيلها، وهو أمر بالغ الأهمية لألعاب لينكس وتطوير التطبيقات متعددة المنصات الموجهة للتوزيع عبر ستيم.

إس دي إل 3
المادة ذات الصلة:
SDL 3: العصر الجديد لتطوير Linux والألعاب عبر الأنظمة الأساسية

التوافق بين واجهة برمجة تطبيقات وحدة معالجة الرسومات ثلاثية الأبعاد وعرض الرسومات ثنائية الأبعاد

من نقاط قوة SDL 3.4 تعزيزها لـ التكامل بين الأبعاد الثلاثية والثنائيةتقدم المكتبة وظائف جديدة لإنشاء برامج عرض ثنائية الأبعاد تعتمد على وحدة معالجة الرسومات ولتبادل المعلومات بين نسيج وحدة معالجة الرسومات وتنسيقات البكسل التي تتعامل معها مكتبة SDL.

  • وتضيف SDL_CreateGPURenderer() لإنشاء برنامج عرض ثنائي الأبعاد يستفيد من واجهة برمجة تطبيقات وحدة معالجة الرسومات الأساسية.
  • مع SDL_GetGPURendererDevice() يمكنك استرداد جهاز وحدة معالجة الرسومات المرتبط بهذا المُعالج.
  • ينضمون SDL_CreateGPURenderState()، SDL_SetGPURenderStateFragmentUniforms()، SDL_SetGPURenderState() و SDL_DestroyGPURenderState() للعمل مع تظليل الأجزاء داخل عرض GPU ثنائي الأبعاد.
  • والآن تم قبولهم نسيج YUV ومساحات ألوان HDR في وحدة العرض ثنائية الأبعاد القائمة على وحدة معالجة الرسومات، وهو أمر مثير للاهتمام بشكل خاص للفيديو والمحتوى عالي الجودة.

كما أنها تتضمن ميزات مثل SDL_GetGPUDeviceProperties()يُعيد هذا خصائص جهاز وحدة معالجة الرسومات، بما في ذلك اسم الجهاز واسم برنامج التشغيل وإصداره، ومعلومات أخرى ذات صلة بالتوافق أو قرارات التشخيص. بالإضافة إلى ذلك، تُسهّل الدالتان `SDL_GetPixelFormatFromGPUTextureFormat()` و`SDL_GetGPUTextureFormatFromPixelFormat()` عملية التحويل بين تنسيقات نسيج وحدة معالجة الرسومات وتنسيقات بكسل SDL.

وبالتوازي مع ذلك، يتم تضمين الخاصية SDL_PROP_TEXTURE_CREATE_GPU_TEXTURE_POINTER لإنشاء نسيج ثنائي الأبعاد من نسيج موجود على وحدة معالجة الرسومات، يُستخدم SDL_PROP_TEXTURE_GPU_TEXTURE_POINTER للحصول على نسيج وحدة معالجة الرسومات المرتبط بنسيج ثنائي الأبعاد عند استخدام مُعالج العرض ثنائي الأبعاد على وحدة معالجة الرسومات. تُقلل هذه الطريقة بشكل كبير من التعقيدات عند دمج المحتوى المُنشأ في واجهة برمجة تطبيقات وحدة معالجة الرسومات مع مسار 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، حيث يؤدي تقليل عدد المكتبات المساعدة إلى فرق في كل من حجم الملفات الثنائية وتعقيدها.

المدخلات: الماوس، والقلم الضوئي، والإيماءات، ولوحة المفاتيح على الشاشة

يُحسّن الإصدار 3.4 من SDL بشكل كبير كل ما يتعلق بـ أجهزة إدخال متقدمةفي مجال الماوس، تم تقديم SDL_SetRelativeMouseTransform()، والذي يسمح بتطبيق تحويل مخصص على إدخال الماوس النسبي، وهو أمر مفيد لتقنيات التحجيم، أو عكس المحور، أو عمليات التعيين الخاصة.

فيما يتعلق بالأقلام الرصاص وأقلام اللمس، يبدو SDL_GetPenDeviceType()مما يسمح لك بالتمييز بين ما إذا كان القلم يعمل مباشرة على الشاشة أو على لوحة لمس منفصلة، ​​وهي تفاصيل مفيدة للغاية لتكييف تجربة المستخدم وفقًا لنوع الجهاز.

في الأجهزة المزودة بلوحة مفاتيح افتراضية، يضيف 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

يُحسّن الإصدار 3.4 من SDL بشكل كبير دعم وحدات التحكم وأجهزة HID، مما يُوسّع نطاق الأجهزة التي تعمل مباشرةً دون الحاجة إلى تكوين خارجي. وعلى وجه الخصوص، يُضيف تحسين دعم وحدات تحكم 8BitDoFlyDigi و Hand Held Legend SINput، مما يسهل على العديد من أجهزة التحكم بالألعاب التابعة لجهات خارجية العمل بشكل أكثر اتساقًا.

يتم دمجها أيضًا حامل سلكي لجهاز تحكم نينتندو سويتش 2 عند تجميع SDL باستخدام libusb، يُعدّ هذا الأمر مفيدًا للمستخدمين الذين يُفضّلون الاتصال المباشر على الاتصال اللاسلكي. على مستوى واجهة برمجة تطبيقات HID، يبدو أن الدالة SDL_hid_get_properties() تربط خصائص SDL بأجهزة HID، وتتيح الخاصية SDL_PROP_HIDAPI_LIBUSB_DEVICE_HANDLE_POINTER استرداد مُعرّف libusb المرتبط بجهاز SDL_hid_device عند فتحه باستخدام libusb.

وتأتي هذه التحسينات بالإضافة إلى حقيقة أن SDL 3.4 يتضمن دعم وحدة تحكم Steam الجديدة ضمن نظامها البيئي الأساسي، وهذا يتناسب تمامًا مع دورها داخل وقت تشغيل Steam والتركيز على الألعاب على نظام Linux والمنصات الأخرى.

الأحداث والنظام والمرافق العامة

إلى جانب الجوانب الرسومية وجوانب الإدخال، يُدخل SDL 3.4 سلسلة من التغييرات على نظام الأحداث والأدوات العامة التي يجدر معرفتها. على سبيل المثال، SDL_EVENT_WINDOW_EXPOSED يقوم الآن بتعبئة حقل البيانات 1 بالقيمة "صحيح" عند إرساله أثناء تغيير حجم النافذة المباشرة، مما يوفر سياقًا إضافيًا.

وتضيف 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"، فإن ذلك مخصص لتصحيح الأخطاء بشكل عميق في تهيئة المكتبة وسلوكها في السياقات المعقدة.

تحسينات محددة في نظام التشغيل ويندوز

في نظام ويندوز، يتضمن الإصدار 3.4 من SDL تغييرات جوهرية تؤثر على الصوت والفيديو ونظام الإدخال. ومن أبرز هذه التغييرات ميزة التلميحات. SDL_HINT_RENDER_DIRECT3D11_WARPيُتيح لك هذا تفعيل تقنية WARP (مُعالج الرسوميات النقطية البرمجي الخاص بـ D3D11). يُعد هذا مفيدًا على الأجهزة التي لا تحتوي على وحدة معالجة رسومية متوافقة أو في البيئات الافتراضية حيث لا يوجد تسريع مباشر ولكنك لا تزال ترغب في استخدام واجهة برمجة التطبيقات.

يستفيد برنامج تشغيل WASAPI من SDL_HINT_AUDIO_DEVICE_STREAM_ROLE لضبط فئة دفق الصوت، وهو تكامل مهم لضمان سلوك متسق للنظام (مثل صوت الألعاب والاتصالات وما إلى ذلك). ويعتمد أيضًا على SDL_HINT_AUDIO_DEVICE_RAW_STREAM لتحديد ما إذا كان ينبغي على برنامج التشغيل تطبيق معالجة إضافية أم لا.

يتم إدخال التلميح على جانب إدخال لوحة المفاتيح. SDL_HINT_WINDOWS_RAW_KEYBOARD_EXCLUDE_HOTKEYSيُتيح لك هذا تعطيل بعض اختصارات النظام عند استخدام الإدخال الخام، وهو أمر عملي للغاية للألعاب التي تحتاج إلى التقاط مجموعات المفاتيح دون تدخل النظام. وعلى مستوى واجهة برمجة تطبيقات 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 الآن يدعم مشاهد النوافذيحل هذا التحديث مشكلة التحذير "يتطلب عميل UIKit تحديثًا" ويجعل المكتبة متوافقة مع ممارسات UIKit الحديثة. تمت إضافة خاصية SDL_PROP_WINDOW_CREATE_WINDOWSCENE_POINTER لتحديد مشهد النافذة عند إنشاء نافذة SDL، مما يساعد على دمج التطبيق بشكل صحيح في نظام النوافذ في iOS.

في نظام التشغيل visionOS وأجهزة مثل Apple Vision Pro، يقوم SDL 3.4 بضبط سلوك النوافذ ومعدلات التحديث. معدل التحديث الافتراضي هو يرتفع إلى 90 هرتزمما يوفر تجربة أكثر سلاسة، و SDL_SetWindowSize() يغير حجم النافذة بشكل فعال على سماعات Vision Pro، مما يمنح مزيدًا من التحكم في التخطيط في بيئات الواقع المختلط.

لينكس، وايلاند، KMS/DRM وفولكان

في عالم لينكس، يأتي SDL 3.4 بالعديد من الميزات الجديدة. على سبيل المثال، يضيف دعم ذري لـ KMSDRMيُحسّن هذا من الاستقرار والتزامن من خلال العمل مباشرةً مع النظام الفرعي للرسومات في النواة. وفي هذا السياق، يسمح التلميح SDL_HINT_KMSDRM_ATOMIC بالتحكم فيما إذا كان KMSDRM سيستخدم هذه الوظيفة الذرية أم لا.

بالنسبة لمدينة وايلاند، تم تضمين ما يلي: SDL_PROP_DISPLAY_WAYLAND_WL_OUTPUT_POINTERتتيح لك هذه الميزة الحصول على مخرجات الشاشة (wl_output) المرتبطة بالشاشة، مما يُسهّل التكامل العميق مع برنامج إدارة النوافذ. بالإضافة إلى ذلك، تم إصلاح مشاكل الفأرة التي تحتوي على أكثر من خمسة أزرار، كما تم تحسين دقة التمرير في بيئة X11، مما يوفر تحكمًا أدق في التطبيقات التي تعتمد بشكل كبير على التمرير.

فيما يتعلق بـ Vulkan، يقدم SDL 3.4 معالجة الصور المجمعة بالإضافة إلى تحسينات أخرى لواجهات برمجة التطبيقات مثل Vulkan، مما يقلل من استدعاءات الرسم الزائدة ويحسن الأداء العام. كما يجري العمل على المنطق الذي يكتشف وحدة معالجة رسومات Vulkan أكثر قوة في الأنظمة التي تحتوي على وحدات معالجة رسومات متعددة، يساعد ذلك على اختيار الجهاز الأنسب تلقائيًا، خاصة في الأنظمة الهجينة أو أنظمة الكمبيوتر المحمول المزودة بوحدات معالجة رسومات مدمجة ومخصصة.

بالإضافة إلى ذلك، تمت إضافة الخاصية SDL_PROP_GPU_DEVICE_CREATE_VULKAN_OPTIONS_POINTER لضبط خيارات Vulkan عند إنشاء جهاز وحدة معالجة الرسومات، والخاصية SDL_PROP_GPU_DEVICE_CREATE_VULKAN_REQUIRE_HARDWARE_ACCELERATION_BOOLEAN لفرض تسريع الأجهزة عند إنشاء هذا الجهاز. وعلى مستوى النظام ككل، يتم وضع SDL أيضًا كـ مجموعة أدوات X11 مع تقديم X11TK كمجموعة أدوات X11 خاصة بها لـ SDL.

استخدام Emscripten والمتصفح

يُحسّن الإصدار 3.4 من SDL بشكل كبير من تكامله مع 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 الخاص بك دون الحاجة إلى الوصول إلى واجهة برمجة تطبيقات نظام التشغيل.

في مجال التصوير الفوتوغرافي، SDL_GetCameraPermissionState() الآن تُرجع قيمة من النوع SDL_CameraPermissionState بدلاً من استخدام عدد صحيح عام، مما يحسن من توافق الدلالات ويسهل إدارة الأذونات على منصات الهاتف المحمول وسطح المكتب.

في أنظمة يونكس، يتضمن 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.

تتيح هذه الميزة للمستخدم رؤية حالة عملية طويلة (التنزيلات، والتحميلات، والإصدارات الداخلية، وما إلى ذلك) حتى لو لم تكن النافذة في المقدمة. إنها طريقة أنيقة لتقديم الملاحظات دون الحاجة إلى تصميم واجهات مستخدم إضافية.

من ناحية أخرى، يسمح SDL_CreateAnimatedCursor() إنشاء مؤشرات ألوان متحركةيُضفي هذا لمسة جمالية على الألعاب أو الأدوات التي يُشير فيها المؤشر إلى حالات معينة (التحميل، إجراء محتمل، تنبيه، إلخ). وبالإضافة إلى التلميح الجديد SDL_HINT_MOUSE_DPI_SCALE_CURSORS، الذي يُضبط افتراضيًا على "0" لمنع تغيير حجم المؤشر بشكل غير متوقع في بيئات DPI المُعدّلة، فإنه يُوفر تحكمًا أكثر دقة في مظهر المؤشر.

مع هذه المجموعة من التغييرات - بدءًا من دمج وحدة معالجة الرسومات ثنائية وثلاثية الأبعاد، ودعم صور PNG الأصلي، وتحسينات الإدخال والصوت، وصولًا إلى الاهتمام بأنظمة Linux الحديثة وEmscripten وvisionOS ووحدات التحكم الكلاسيكية - يعزز SDL 3.4 مكانته كـ مجموعة أدوات متكاملة للغاية لتطوير التطبيقات متعددة المنصاتتقليل الاعتماد على الموارد الخارجية وتوفير أساس متين للتكرار دون قضاء اليوم بأكمله في تصحيح الأخطاء غير المتعلقة بالتعليمات البرمجية الخاصة بك.