SDL 2.0.18 إصدار مكتبة الوسائط

تم إصدار مكتبة SDL 2.0.18 (Simple DirectMedia Layer)، بهدف تبسيط كتابة الألعاب وتطبيقات الوسائط المتعددة. توفر مكتبة SDL أدوات مثل إخراج الرسومات ثنائية وثلاثية الأبعاد المسرَّعة بالأجهزة، ومعالجة الإدخال، وتشغيل الصوت، والإخراج ثلاثي الأبعاد عبر OpenGL/OpenGL ES/Vulkan والعديد من العمليات الأخرى ذات الصلة. المكتبة مكتوبة بلغة C ويتم توزيعها بموجب ترخيص zlib. يتم توفير الارتباطات لاستخدام قدرات SDL في المشاريع بلغات البرمجة المختلفة. يتم توزيع رمز المكتبة بموجب ترخيص Zlib.

في الإصدار الجديد:

  • بالنسبة لكل وظيفة، يتم توفير معلومات حول إصدار SDL الذي تم تقديم الوظيفة فيه. تم ضمان المزامنة التلقائية لوثائق الويكي مع ملفات الرأس.
  • تمت إضافة ميزات جديدة:
    • SDL_RenderGeometry() وSDL_RenderGeometryRaw() لعرض الأشكال التعسفية باستخدام واجهة برمجة تطبيقات العرض ثنائية الأبعاد.
    • 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() للتحقق مما إذا كان وحدة التحكم في اللعبة وعصا التحكم تدعمان تأثير الاهتزاز التكيفي (الاهتزاز)
    • 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() لتقليل حمل وحدة المعالجة المركزية.
  • تم نقل واجهة برمجة التطبيقات hipapi إلى الفئة العامة ويمكن الوصول إليها الآن عبر ملف الرأس SDL_hidapi.h.
  • على نظام التشغيل Windows، تم تحسين اكتشاف حركة الماوس النسبية في Windows Remote Desktop. تمت إضافة علم SDL_HINT_IME_SHOW_UI لإظهار مكونات الواجهة الأصلية (مخفية بشكل افتراضي). بالنسبة لتطبيقات UWP، يتم استخدام WGI بدلاً من XInput لتحسين الدعم لوحدات التحكم في الإدخال.
  • بالنسبة لمنصة 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، تم تنفيذ دعم إخراج الصوت والتقاطه باستخدام واجهة برمجة التطبيقات AAudio. بشكل افتراضي، يتم تعطيل دعم Steam Controller (يتم اقتراح علامة SDL_HINT_JOYSTICK_HIDAPI_STEAM لتمكين ذلك).

التحديث: أعلن أحد المساهمين في SDL، Ryan Gordon (icculus)، عن خطط لإضافة واجهة برمجة تطبيقات ثلاثية الأبعاد بسيطة إلى SDL تدعم إمكانيات واجهة برمجة تطبيقات وحدة معالجة الرسومات الحديثة (Vulkan، Direct3D 3، Metal). سيتم تمويل هذا التطوير من قبل شركة Epic Games، كجزء من برنامج Epic Megagrant. تقدم جوردون بطلب للحصول على المنحة في مايو 12 وتلقى ردًا إيجابيًا قبل أسبوعين.

المصدر: opennet.ru