מה ההבדל בין OpenGL לבין DX? - כרטיסי מסך - HWzone פורומים
עבור לתוכן
  • צור חשבון

מה ההבדל בין OpenGL לבין DX?


HaVoC_850

Recommended Posts

רציתי לשאול מה ההבדל בין שני הדברים האלו (איך לקרוא להם בדיוק גם איני יודע - סוג של רנדר אולי)?

ואם אפשר קצת מידע על כל אחד מהם, שיסביר את אופן הפעולה של כל אחד מן הדברים האלו בכמה משפטים.

כמה יתרונות וחסרונות גם לא יזיקו =).

תודה.

קישור לתוכן
שתף באתרים אחרים

1)מה הם OpenGL ו-Direct3D?

שניהם מהווים הגדרות לפונקציות ומבני נתונים שונים המשמשים ליצירת גראפיקה תלת ממדית אינטראקטיבית. כל אחד מהם מגדיר באופן מדויק וחד משמעי מה משמעותה של כל פקודה, איזה קלט היא מקבלת, ומה התוצאה שיש לצפות ממנה. להגדרות אלה קוראים API.

OpenGL נולד אצל חברת Silicon Graphics שהגדירה אוסף של פקודות ומבני נתונים ששימשו ליצירת גראפיקה תלת ממדית על תחנות העבודה שלהם בתחילת שנות ה-90. על המחשבים הייתה מותקנת תוכנה שמממשת את הספציפיקציות האלה. (כלומר, התוכנה הייתה מקבלת פקודות בקלט, והייתה מחזירה תמונה כפלט). עם הזמן הטכנולוגיה התפתחה, והיום המימוש של הספציפיקציות נעשה באמצעות שילוב של שבב שמשמש כיחידת העיבוד ודריבר שמספק יצרן השבב/הכרטיס.

Direct3D נולד כרכיב בלתי נפרד של סביבת הפיתוח למשחקים, DirectX, של חברת Microsoft. כמו עבור OpenGL, כך גם עבור Direct3D הוגדרו ספציפיקציות מדויקות של פקודות ומבני נתונים שונים. נכון להיום המימוש שלהם נעשה על ידי שילוב של תוכנה מבית Microsoft (שאני מורידים אותה מדי פעם, וקוראים לה DirectX), שבב שמשמש כיחידת העיבוד, ודריבר.

תפקידם של מפתחי השבבים הוא לממש באופן מדויק וקפדני את הספציפיקציות של שני ה-APIs. מפתחי המשחקים ותוכנות התלת ממד עובדים לפי ההגדרות האלה, וסומכים על כך שהן ממומשות בדיוק כפי שהוגדר.

2)השאלה הנצחית: מי יותר טוב? OpenGL או Direct3D?

לשאלה זו אין תשובה חד משמעית מבחינת השחקן. בסופו של דבר, הביצועים של משחק מסוים אינם תלויים באופן ישיר בסוג ה-API שבו הוא משתמש. על הביצועים ואיכות התמונה משפיעים המיומנות והשליטה של מפתחי המשחק ב-API ואיכות המימוש של כל אחד מה-APIs על ידי יצרן החומרה. פרמטרים אלה משתנים ממחשב למחשב וממשחק למשחק.

מבחינת המ?פ?ת?ח? יש מספר יתרונות וחסרונות לכל אחד מה-APIs. מבחינת פורטביליות OpenGL לוקח בגדול. ההגדרות של OpenGL לא תלויות באף גורם של מערכת ההפעלה או המחשב עליו הוא ממומש. כתוצאה מכך פיתוח של תוכניות הוא אחיד וסטנדרטי לכל מערכת הפעלה שהיא.

בנוסף לכך OpenGL מאפשר הגדרה של הרחבות. אם ה-API לא תומך בתכונה מסוימת ניתן להרחיב אותו. את הבעייתיות בכך נדגים בדוגמא הבאה: עד לפני זמן לא רב OpenGL לא תמך בתכונה מאוד חשובה שכולכם בודאי שמעתם עליה - Shaders. כתוצאה מכך כל יצרן הגדיר הרחבה בכדי לתמוך בתכונה הזו. הבעיה הייתה שההגדרה של כל יצרן היא שונה מיצרנים אחרים. ולכן קשה היה לפתח משחקים שמשתמשים ב-Shaders באמצעות OpenGL. אפשר לומר שבתחום הזה OpenGL סופג מכה קשה, ונותן סיבה מאוד טובה לפתח באמצעות Direct3D. למרות זאת יש בכך יתרון קטן. אם חברה מסוימת המציאה פטנט חדש שפותר הרבה בעיות של פיתוח ורוצה לאפשר למפתחים לנצל אותו, כל מה שעליה לעשות הוא להגדיר הרחבה, לממש אותה בדיבר, ולתת למפתחים את ההגדרות בכדי שיוכלו להשתמש בה.

נלקח מהFAQ

http://hwzone.co.il/community/index.php?topic=39877.0

ננעל.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...