واجهة جهاز الرسوميات

واجهة جهاز الرسوميات في بنية Windows NT
على سبيل المثال ، يستخدم GDK GDI .

واجهة جهاز الرسوميات ( GDI ) هي أحد مكونات Microsoft Windows القديمة المسؤولة عن تمثيل الكائنات الرسومية ونقلها إلى أجهزة الإخراج مثل الشاشات والطابعات . وقد حلت محلها واجهة برمجة تطبيقات DirectDraw وواجهة برمجة تطبيقات Direct2D لاحقًا . [ بحاجة لمصدر ] تستخدم تطبيقات Windows واجهة برمجة تطبيقات Windows للتفاعل مع GDI، لمهام مثل رسم الخطوط والمنحنيات، وعرض الخطوط ، والتعامل مع لوحات الألوان . يستخدم نظام Windows USER الفرعي واجهة برمجة تطبيقات Windows لعرض عناصر واجهة المستخدم مثل إطارات النوافذ والقوائم. تحتوي الأنظمة الأخرى على مكونات مشابهة لواجهة برمجة تطبيقات Windows؛ على سبيل المثال: يحتوي نظام التشغيل Mac OS على QuickDraw ، ويحتوي كل من Linux و Unix على بروتوكول أساسي لنظام X Window System .

ربما تكون أهم مزايا GDI مقارنة بالطرق الأكثر مباشرة للوصول إلى الأجهزة هي قدرتها على التوسع وتمثيلها المجرد للأجهزة المستهدفة. باستخدام GDI، من الممكن الرسم على أجهزة متعددة، مثل الشاشة والطابعة، وتوقع إعادة إنتاج سليمة في كل حالة. هذه القدرة هي جوهر معظم تطبيقات " ما تراه هو ما تحصل عليه " لنظام التشغيل Microsoft Windows.

قد تستخدم الألعاب البسيطة التي لا تتطلب عرض رسوميات سريع GDI. ومع ذلك، فإن GDI يصعب استخدامها نسبيًا للرسوم المتحركة المتقدمة، وتفتقر إلى فكرة المزامنة مع إطارات الفيديو الفردية في بطاقة الفيديو ، وتفتقر إلى التنقيح المادي للرسومات ثلاثية الأبعاد. تستخدم الألعاب الحديثة عادةً DirectX أو Vulkan أو OpenGL بدلاً من ذلك.

التفاصيل الفنية

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

يستخدم GDI خوارزمية رسم الخطوط الخاصة بـ Bresenham لرسم خطوط مستعارة. [1]

تاريخ الإصدار

الإصدارات المبكرة

كانت واجهة GDI موجودة في الإصدار الأولي من Windows. كانت برامج MS-DOS تتلاعب بأجهزة الرسومات باستخدام مقاطعات البرامج (أحيانًا عبر Video BIOS ) ومن خلال التلاعب بذاكرة الفيديو بشكل مباشر. يتوقع الكود المكتوب بهذه الطريقة أنه المستخدم الوحيد لذاكرة الفيديو، وهو ما لم يكن قابلاً للاستمرار في بيئة متعددة المهام ، مثل Windows. ناقشت مجلة BYTE ، في ديسمبر 1983، خطط Microsoft لنظام لإخراج الرسومات إلى كل من الطابعات والشاشات بنفس الكود في الإصدار الأول القادم من Windows. [2]

في أنظمة التشغيل Windows 3.1x و Windows 9x ، يمكن لـ GDI استخدام ميزات Bit blit لتسريع الرسومات ثنائية الأبعاد، إذا تم تثبيت برنامج تشغيل بطاقة الرسومات المناسب . [3]

ويندوز اكس بي

مع ظهور نظام التشغيل Windows XP ، استكملت GDI+ نظام GDI. وقد كُتبت GDI+ بلغة C++. وهي تضيف رسومات ثنائية الأبعاد مضادة للتعرج، وإحداثيات النقطة العائمة، وتظليل التدرج، وإدارة مسارات أكثر تعقيدًا، ودعمًا جوهريًا لتنسيقات ملفات الرسومات الحديثة مثل JPEG و PNG ، ودعمًا لتكوين التحويلات التآلفية في خط أنابيب العرض ثنائي الأبعاد. تستخدم GDI+ قيم RGBA لتمثيل اللون. ويظهر استخدام هذه الميزات بوضوح في مكونات نظام التشغيل Windows XP، مثل Microsoft Paint و Windows Picture and Fax Viewer وPhoto Printing Wizard وشاشة التوقف My Pictures Slideshow. ويساهم وجودها في طبقة الرسومات الأساسية في تبسيط تنفيذ أنظمة الرسومات المتجهة مثل Adobe Flash أو SVG إلى حد كبير . بالإضافة إلى ذلك، يوفر .NET Framework واجهة مُدارة لـ GDI+ عبر System.Drawing مساحة الاسم .

على الرغم من أن GDI+ مضمن مع نظام التشغيل Windows XP والإصدارات الأحدث، إلا أنه يمكن أيضًا شحن مكتبة GDI+ الديناميكية مع أحد التطبيقات واستخدامها في الإصدارات الأقدم من نظام التشغيل Windows. [4]

بسبب قدرات معالجة النصوص الإضافية واستقلال الدقة في GDI+، تتولى وحدة المعالجة المركزية تقديم النص. [5] والنتيجة هي أبطأ بمقدار مرتبة من حيث الحجم من GDI المعجل بالأجهزة . [6] نشر كريس جاكسون بعض الاختبارات التي تشير إلى أن جزءًا من كود تقديم النص الذي كتبه يمكن أن يقدم 99000 حرف في الثانية في GDI، لكن نفس الكود باستخدام GDI+ قدم 16600 حرف في الثانية.

يعتبر GDI+ مشابهًا (في الغرض والبنية) لنظام QuickDraw GX الفرعي من Apple ، ومكتبات libart و Cairo مفتوحة المصدر .

ويندوز فيستا

في نظام التشغيل Windows Vista، تعمل جميع تطبيقات Windows بما في ذلك تطبيقات GDI وGDI+ في محرك التركيب الجديد، Desktop Window Manager (DWM)، والذي يتم تسريعه بواسطة الأجهزة. وبالتالي، لم يعد GDI نفسه مسرعًا بواسطة الأجهزة. [7] [8] [9] ونظرًا لطبيعة عمليات التركيب، يمكن أن تكون تحركات النوافذ أسرع أو أكثر استجابة لأن المحتوى الأساسي لا يحتاج إلى إعادة عرضه بواسطة التطبيق. [8]

ويندوز 7

يتضمن Windows 7 تسريع الأجهزة GDI لعمليات التنقيط في Windows Display Driver Model v1.1 . يعمل هذا على تحسين أداء GDI ويسمح لـ DWM باستخدام ذاكرة الفيديو المحلية للتأليف، وبالتالي تقليل مساحة ذاكرة النظام وزيادة أداء عمليات الرسومات. لا تزال معظم عمليات GDI البدائية غير معجلة بالأجهزة، على عكس Direct2D . يستمر GDI+ في الاعتماد على العرض البرمجي في Windows 7. [10]

طابعات GDI

طابعة GDI أو Winprinter (مشابهة لـ Winmodem ) هي طابعة مصممة لقبول الإخراج من كمبيوتر مضيف يعمل بنظام Windows. يقوم الكمبيوتر المضيف بكل عمليات الطباعة: تقوم GDI بمعالجة الصفحة كخريطة نقطية، والتي يتلقاها برنامج تشغيل الطابعة ويعالجها ويرسلها إلى الطابعة المرتبطة. [11] [12] إن الجمع بين GDI والبرنامج ثنائي الاتجاه؛ حيث يتلقيان معلومات من الطابعة مثل ما إذا كانت جاهزة للطباعة أم نفد الورق.

تتطلب الطابعات التي لا تعتمد على GDI أجهزة وبرامج ثابتة وذاكرة لعرض الصفحات بينما تستخدم طابعة GDI الكمبيوتر المضيف لهذا الغرض. ومع ذلك، يمكن للطابعة التي تحتوي على لغة تحكم خاصة بها قبول الإدخال من أي جهاز مزود ببرنامج تشغيل مناسب، بينما تتطلب طابعة GDI جهاز كمبيوتر يعمل بنظام Windows. يمكن توفير طابعات GDI لأجهزة الكمبيوتر على الشبكة إذا كانت متصلة كطابعات مشتركة على جهاز كمبيوتر يعمل بنظام Windows. pnm2ppaتمت كتابة بعض برامج تشغيل GDI "العامة" مثل؛ تهدف إلى جعل طابعات GDI متوافقة مع أنظمة التشغيل غير Windows مثل FreeBSD ، لكنها لا تستطيع دعم جميع الطابعات. [11]

من أجل السماح بإنشاء برامج تشغيل أبسط لطابعات Winprinters، تم إنشاء برنامج تشغيل الطابعة العالمي من Microsoft . يتيح هذا لموردي الطابعات كتابة "برامج تشغيل صغيرة" لوصف الطابعة العامة (GPD)، والتي تصف قدرات الطابعة ومجموعة الأوامر في نص عادي، بدلاً من الاضطرار إلى تطوير برنامج تشغيل في وضع kernel.

ابتعدت شركة Microsoft عن نموذج الطباعة هذا باستخدام مواصفات ورق XML المفتوحة .

القيود

تستهلك كل نافذة كائنات GDI. ومع زيادة تعقيد النافذة، مع ميزات إضافية مثل الأزرار والصور، يزداد أيضًا استخدام كائنات GDI الخاصة بها. عندما يكون عدد الكائنات قيد الاستخدام كبيرًا جدًا، لا يتمكن Windows من رسم المزيد من كائنات GDI، مما يؤدي إلى سوء سلوك البرنامج وتجميد تشغيل البرنامج وعدم استجابته. [13] كما يتم ترميز العديد من التطبيقات بشكل غير صحيح وتفشل في إصدار كائنات GDI بعد الاستخدام، مما يزيد من المشكلة. [14] يختلف إجمالي كائنات GDI المتاحة من إصدار إلى آخر من Windows: كان لدى Windows 9x حد 1200 كائن إجمالي؛ يحتوي Windows 2000 على حد 16384 كائن؛ ويحتوي Windows XP والإصدارات الأحدث على حد قابل للتكوين (عبر السجل) يتم تعيينه افتراضيًا على 10000 كائن لكل عملية (ولكن الحد الأقصى النظري 65536 للجلسة بأكملها). [15] [16] يزيد Windows 8 والإصدارات الأحدث من حد كائنات GDI إلى 65536 لكل جلسة تسجيل دخول للمستخدم.

كانت الإصدارات السابقة من Windows مثل Windows 3.1 وWindows 98 تتضمن برنامج Resource Meter للسماح للمستخدم بمراقبة مقدار إجمالي موارد GDI المستخدمة في النظام. كان برنامج Resource Meter هذا يستهلك كائنات GDI بنفسه. يمكن للإصدارات اللاحقة مثل Windows 2000 وWindows XP الإبلاغ عن استخدام كائنات GDI لكل برنامج في Task Manager (إدارة المهام)، ولكنها لا تستطيع إخبار المستخدم بإجمالي سعة GDI المتاحة.

قد يؤثر تجاوز سعة GDI على نظام Windows نفسه، مما يمنع فتح نوافذ جديدة وعرض القوائم وظهور مربعات التنبيه. قد يكون من الصعب حل هذا الموقف وقد يتطلب إعادة تعيين النظام قسرًا، لأنه يمنع برامج النظام الأساسية من العمل. في Windows 8 و8.1، يحدث تسجيل الخروج القسري نتيجة تجاوز سعة GDI، بدلاً من إعادة التشغيل.

خليفة

Direct2D هو خليفة GDI وGDI+. شقيقه، DirectWrite ، يحل محل Uniscribe . تم شحنهما مع Windows 7 وWindows Server 2008 R2، وكانا متاحين لنظامي التشغيل Windows Vista وWindows Server 2008 (مع تثبيت Platform Update). في وقت لاحق، طورت Microsoft Win2D ، وهي مكتبة فئة مجانية ومفتوحة المصدر تشبه GDI. جمهور Win2D المستهدف هم المطورون الذين يستخدمون C++ وC# وVisual Basic.NET لتطوير تطبيقات Universal Windows Platform . [17]

انظر أيضا

الملاحظات والمراجع

  1. ^ ستيفن، وايت؛ ديفيد، كولتر؛ مايك، جاكوبس (31 مايو 2018). "مقارنة تسريع الأجهزة Direct2D وGDI". مطور ويندوز . مايكروسوفت .
  2. ^ بتلر، جون (ديسمبر 1983). "إخراج رسومي مستقل عن الجهاز لنظام التشغيل Microsoft Windows". BYTE . ص. 49. تم الاسترجاع في 20 أكتوبر 2013 .
  3. ^ https://www.dosdays.co.uk/media/cirrus_logic/CL-GD543X_Applications_and_Eratta_Book_Apr94.pdf. {{cite web}}: مفقود أو فارغ |title=( مساعدة )
  4. ^ منصة SDK قابلة لإعادة التوزيع: GDI+
  5. ^ "واجهات برمجة تطبيقات الرسم ثنائي الأبعاد في Windows -". مدونة مطوري DirectX . مدونات MSDN. 12 مايو 2009. تم الاسترجاع في 19 يوليو 2012 .
  6. ^ جاكسون، كريس. "أداء عرض النصوص باستخدام GDI مقابل GDI+". التوافق الدلالي لكريس جاكسون . مايكروسوفت.
  7. ^ MSDN: مقارنة تسريع الأجهزة Direct2D وGDI
  8. ^ ab GDI ليس مسرعًا بالأجهزة في Windows Vista
  9. ^ النوافذ ذات الطبقات...قد تكون البرامج أسرع من الأجهزة في بعض الأحيان. Avalite على مدونات MSDN.
  10. ^ توماس أولسن (29 أكتوبر 2008). "مقدمة إلى واجهة برمجة تطبيقات Microsoft Direct2D".
  11. ^ ab "Generic GDI Printer". Open Printing . The Linux Foundation . تم الاسترجاع في 21 يوليو 2021 .
  12. ^ "الطابعات المخصصة لنظام التشغيل Windows فقط". مشروع توثيق Linux . تم الاسترجاع في 29 أكتوبر 2019 .
  13. ^ مقالة قاعدة معارف Microsoft رقم 838283 - يتم عرض قوائم تطبيقات سطح المكتب بشكل غير صحيح إذا تجاوزت إحدى العمليات حصتها من كائنات GDI في نظام التشغيل Windows XP أو Windows 2000 http://support.microsoft.com/kb/838283
  14. ^ مدونة شبكة مطوري Microsoft - تسرب GDI في Outlook 2007 يسبب مشاكل عندما يصل استخدام GDI إلى 10000 كائن http://blogs.msdn.com/rgregg/archive/2007/09/03/outlook-2007-gdi-leak-hotfix.aspx
  15. ^ شبكة مطوري Microsoft - حدود كائنات GDI http://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx
  16. ^ مقالة قاعدة معارف Microsoft رقم 894500 - قد تتعطل برامج .NET المصممة على أنظمة تشغيل NT الأحدث في أنظمة التشغيل القديمة Win 95 / Win 98 / Win ME بسبب حدود استخدام GDI المنخفضة http://support.microsoft.com/kb/894500
  17. ^ "Win2D". microsoft/Win2D repo . Microsoft . تم الاسترجاع في 21 يوليو 2021 – عبر GitHub.com .
  • صفحة GDI+ الخاصة بشركة Microsoft
  • قائمة الأسئلة الشائعة حول GDI+ لـ Bob Powell
  • مقالة MSDN حول نظرة عامة على GDI
  • نشرة أمان Microsoft MS04-028
  • F-Secure: ثغرة أمنية خطيرة في نظام التشغيل MS Windows قد تؤدي إلى تصعيد التهديد الفيروسي
  • IGDI+ – مكتبة دلفي مفتوحة المصدر GDI+.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Graphics_Device_Interface&oldid=1225258513#GDI_printers"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate