למה אתם צריכים לפתח עם OpenGL ולא עם DirectX

שיחה שהייתה לי עם אנשים רבים וחזרה על עצמה התחילה בוידוי שלי: "אני לומד פיתוח גרפיקה תלת-מימדית עם OpenGL"', התגובה של רבים מהאנשים הייתה "לא באמת, למה? DirectX טובה יותר. היא העתיד." אני מאמין שברוב המקרים התגובה נובעת מבורות ולאו דווקא מעמדות מוצקות ומבוססת של אותו אדם.

אז לפני שאני אפתח במלחמת הDirectX vs. OpenGL הנה הסבר קצר על כל אחד מהטכנולוגיות:

מהאודות של OpenGL באתר הרשמי כתוב כך: "..מאז נוסדה ב1992 הפכה OpenGL לפלטפורמת פיתוח הגרפיקה ב2D וב3D הנפוצה בעולם, כשהיא תומכת במגוון רחב של פלטפרמות (מערכות הפעלה)…". על פי ויקיפדיה לOpenGL שתי מטרות עיקריות, האחת היא לחסוך מהמשתמש את הכתיבה הכל כך קשה של קוד למנועי 3D שונים על ידי הצגת API יחיד שתואם לכולם, המטרה השניה היא לחסוך מהמפתח את כאב הראש שבהתחשבות ביכולות שונות של חומרות שונות על ידי תמיכה אחידה של החומרות בממשק הOpenGL. כיום, OpenGL מנוהל על ידי Khorons Group, מלכ"ר שעושה את עבודתו נאמנה. חשוב לציין, OpenGL תומכת בכל פלטפורמת משחקים קיימים, החל בווינדוס, מק, לינוקס, BSD, וגם בWII ובPLAYSTATION, באייפון ובמכשירי האנדרואיד והMaemo וכו' וכו'.. ובכן, היא תומכת כמעט בכל הפלטפורמות הקיימות, מלבד XBox שהסיבה לכך לדעתי ברורה, וזה מוביל לנושא הDirectX:

כבר מאז ימי הMS-DOS הותיקים הבינה מיקרוסופט שמשחקים על מחשב הוא אחד הדברים היותר חשובים למשתמשי המיינסטרים, לפיכך ב1995, עם יציאת מערכת ההפעלה הראשונה שלהם ב32BIT, הווינדוס 95, הם יצרו מערך ספריות שסייע ודירבן מפתחים לכתוב משחקים במיוחד למערכת הווינדוס 95 שלהם. הספריות הללו כללו את Direct3D, DirectInput וDirectSound, כאשר כל החבילה כאחד נקראה DirectX. כאשר מיקרוסופט נכנסה בכוחות עצמה לשוק הקונסולות היא קראה לקונסולה שלה DirectX BOX או בקיצור XBox.

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

למה לDirectX שימוש נרחב מאוד בקרב חברות פיתוח המשחקים?

כולם משתמשים בDirectX בגלל מעין לולאה של שימוש שהמשתמשים נכבלו אליה עקב כמה יתרונות לDirectX. הAPI יצא לווינדוס ולXBOX ואנשים החלו להשתמש בו, בעבר הפיתוח באמצעותו לווינדוס היה קל יותר מאשר פיתוח עם OPENGL (אני מאמין שהמצב משתנה היום), כך קרה שמחזור אחד השתמש בDirectX בגלל יתרונות אלו ומאז הוא צמח, אדם שלמד את הAPI הזה לא יטרח וילמד API אחר, מכיוון שהAPI היה מוכוון מערכת יחידה הרבה חברות חומרה האיצו את התמיכה שלהם בDirectX מתוך אמונה שזהו העתיד היחידי בעולם המשחקים וכך נכנסו לאותה לולאה ארורה, חברות החומרה ושאר חברות התמיכה בגרפיקה למשחקים מעדיפים לתמוך בDirectX, המשתמשים מעדיפים את DirectX כי כולם משתמשים בה וככה הולכת וגדלה הקהילה, שצמחה מתוך נקודה בזמן בה DirectX ליבלב, תקופה קצרה מאוד שהאיצה אותו קדימה, מעין מזל של הנסיבות הייתי אומר. כמובן, תוסיפו לזה את העוצמה האדירה שיש לחברה מסחרית חזקה כל כך כמו מיקרוסופט אל מול ארגון מלכ"רי ולא מסחרי וזאת התוצאה. מעין מצב שהיום לדעתי, מקיים מצב אבסורדי שמוצר נחות ממוצר אחר מצליח יותר בגלל שהוא מוכר יותר, מפורסם יותר ומקודם בעוצמה חזקה הרבה יותר. מעטים האנשים שיבחינו לבד במלכוד, שלמעשה המוצר האחר עדיף. גם מעורבים לדעתי מניעים פסיכולוגיים, אנשים מעדיפים להאמין שחברה מסחרית גדולה מסוגלת לפתח מוצר טוב יותר בכל מקרה מאשר ארגון מלכ"רי, וזה פשוט לא נכון, קחו את זה כסוג של "תימחור איכות", כשתלכו לקופת החולים ותוצע לכם תרופה ב10 שקל ותרופה ב60 שקל, אתם תלכו על זאת שב60 שקל, כי המניע הפסיכולוגי שלכם אומר שעל תרופות לא מתפשרים ולא קונים משהוא "בזול", למרות שיתכן שהוא זהה לחלוטין ואין לכם שום הבנה בתחום, זה לדעתי בדיוק מה שקורה כאן.

אז… למה OpenGL עדיף?

בהתחשב בכך שלOpenGL תמיכה מסחרית קטנה יותר, משומש מעט פחות במשחקים ומותקף כל הזמן על ידי מיקרוסופט, אין לו שיווק בקרב המתכנתים, למה להשתמש בו בכלל? DirectX לא משתלמת ועדיפה יותר? אז לא, OpenGL עוצמתית וחזקה יותר, תומכת בהרבה יותר פלטפורמות והכרחית לעתיד המשחקים.

OpenGL חזקה יותר

זה ידוע שOpenGL מהירה וטובה יותר ברינדור גרפיקה בזמן אמת, (הסתכלו במצגת שלNvidia אם אתם לא מאמינים), יש לה גישה לכל הפיצ'רים החדשים ביותר שקיימים בכל GPU דרך Vendor Extention. כלומר OpenGL מספקת לך גישה ישירה לכל הפיצ'רים הגרפיים בכל מערכת ופלטפורמה בעוד DirectX מספק רק את הגרסאות האחרונות כפי שהן נתמכות בווינדוס, כלומר יתכן שתחזיק חומרה חזקה מאוד אך היא לא תנוצל מכיוון שגרסת הDirectX שלך לא הכי עדכנית, או שבאופן כללי DirectX לא תומך באותו הפיצ'ר בגרסתו החדשה ביותר, בעוד שOpenGL מספק גישה ישירה ובכך מאפשר תמיד גישה לכל יכולות החומרה שבידי המשתמש.

מיקרוסופט אמנם עבדה קשה על DirectX בגירסאות 10 ו11 והם כמעט מהירות כמו OpenGL ואולי אף כמעט מציעות את כל הפיצ'רים שזאת מציעה, אך אפילו אם לא נתייחס לכך שDirectX מוגבל רק לפלטפורמות מיקרוסופט, גם בתוך הפלטפורמות האלו יש מלכוד, שהגרסאות החדשות לא עובדות עם Windows XP ולהזכירכם חצי מהגיימרים עדיין במערכת הזאת. אז פיתוח עם הגרסאות החדשות לא באות בחשבון מבחינת רוב המפתחים, כי פיתוח בDirectX כבר אין משמעות הריגת כל השוק הפוטנציאלי של שאר המערכות, אלא הריגת עוד חצי מהשוק הפוטנציאלי בווינדוס.

OpenGL חוצה פלטפורמותחוצה פלטפורמות

מיקרוסופט לבדה אכן מחזיקה אחוז נכבד מפלטפורמות המשחקים, הווינדוס והXBOX, אבל משמעותי יותר הוא הנתון שחלק נכבד מפלטפורמת המשחקים היא לא מחזיקה. ואפילו אם תיקח אותם בחשבון, אני אחזור ואומר מה שכבר אמרתי, חצי מהשחקנים בווינדוס הם משתמשי ווינדוס XP כך שתאבד אחוז אדיר מהשוק בשימוש בגרסאות הDirectX האחרונות, אז בדיעבד גם תפסיד פיצ'רים וחדשנות וגם תפסיד את כל הפלטפורמות הפוטנציאליות אליהן אתה לא מפתח. זהו מצב של הפסד משתי הכיוונים, אבל באמצעות OpenGL תוכל להנות מהפיצ'רים החדשים והעדכניים ביותר ולא להשאר מאחור טכנולוגית, וגם להצליח לפנות לכל פלג שוק אפשרי. מצב של ניצחון מכל הכיוונים. חשבו על זה, האם אתם באמת רוצים לקצור את הענף עליו אתם יושבים? האם אתם באמת רוצים לכבול את עצמכם לחברה מסחרית? מה יהיה אם המגמה הנוכחית תמשיך ומיקרוסופט תמשיך לאבד נתח שוק, גם בתחום הקונסולות וגם בתחום מערכות ההפעלה? ההחלטה הנבונה לטעמי היא ברורה, OpenGL מספקת את הטכנולוגיה החדישה ביותר על כל מערכת ועובדת על כל מערכת, DirectX עובדת רק על מערכות מיקרוסופט ובכך מצמצמת את נתח השוק באופן דרמטי, ואם זה לא מספיק על מנת לקבל תמיכה בטכנולוגיה החדישה ביותר עליך לוותר על עוד חצי מנתח השוק המסורס ממילא, או להתפשר על טכנולוגיה מיושנת.

OpenGL היא טכנולוגיה שעדיף להשען עליה, היא טובה לעתיד

OpenGL היא פרויקט קוד פתוח, הארגונים שמנהלים את הפיתוח שלו הם מלכ"רים והתרומה לקוד נעשית על ידי המוני מפתחים. OpenGL היא מושא חזק מאוד לתרומות, בין אם תרומות במובן של תרומות כספיות מצד חברות מסחריות בעלות אינטרס ובין אם תרומות קוד משמעותיות ממפתחים שונים. לאף אחד אין בעלות פרטית על OpenGL והיא עומדת בפני עצמה, היא לעולם תשאר חופשית ושלמה. לעומת זאת ישנה את DirectX של חברת מיקרוסופט, שאחרי הכל, היא חברה מסחרית והמוצר מסחרי. מיקרוסופט ביום בהיר אחד יכולה למרר את חייכם, לבצע החלטות לא ברורות מתוך החלטות מסחריות נטו שנועדו לקדם אותה (ראו למשל אי פיתוח DirectX 10 לווינדוס XP על מנת שיותר משתמשים יעברו לויסטה) והיא עלולה לבצע גם החלטות שיורידו לטמיון את כל עבודת חייכם. האם אתם באמת מוכנים להיות תלויים בטכנולוגיה כזאת?

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

לסיכום…

נכון שכרגע OpenGL פחות בשימוש מאשר DirectX, אבל זה לא אומר שהיא פחות טובה. רוב הישראלים נוהגים במזדה 3, האם זה אומר שהיא טובה יותר ממכוניות פורשה? ההחלטה בין OpenGL לבין DirectX היא בסופו של דבר אישית. אני מאמין שחלק נרחב מהמפתחים בוחרים בDirectX מתוך עצלנות, הם מאמינים שבגלל שמיקרוסופט עומדת מאחורי המוצר והיא מפתחת לו כלים הפיתוח יהיה קל יותר ומשמעותי יותר, דבר שהוא לחלוטין לא נכון. אם תצליחו להיות מיחידי הסגולה שמצליחים לבחור במוצר שעומד כמעט וללא פרסום שיווקי, לעומת מוצר שהפרסום השיווקי ומסחרי שלו הוא עצום ומושקעים בו עשרות מיליוני דולרים, אתם ראויים להערכה. תנסו להסתכל מעבר למה שמפרסמים לכם, לשם שינוי, להסתכל על העובדות ולעשות החלטה עצמאית ונבונה, ולא החלטה שחברה מסחרית גדולה גורמת לכם להחליט על ידי פרסום ושיווק בכמויות אדירות.

אמנם לא נגעתי בעובדה הזאת במאמר אבל אני חייב להתייחס אליה בסיכום, מיקרוסופט מאמנת כיום מאין צבא של מתכנתים הכבולים לה, בעיקר באמצעות C#, אני לא אומר שC# היא לא שפה מעולה, אבל שימו לב לכבילה שהיא גורמת לכם. ובכלל זאת, רוב בתי הספר בארץ מלמדים C#, ולמיטב הבנתי רוב הסטודנטים למדעי המחשב בארץ מתחילים בC# ורק אחר כך מתעסקים בC++ ושאר השפות. תלמיד מוכשר שמגלה עניין, או סטונדנט שרוצה להמשיך ללמוד בעצמו, או סתם אדם שנכבל לC# יבחר באופן אוטומתי לפתח עם DirectX וXNA. אני רק מנסה להגיד לכם, תפקחו עיניים, תראו מה קורה מסביבכם לפני שתישאבו לאותו הכלא שלא יאפשר לכם יציאה, שתהיו בו כל כך עמוק שכל נסיון בריחה יעלה לכם הרבה יותר מכפי שאתם מסוגלים או רוצים לשלם.

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

הערות:

  1. התייחסתי לOpenGL כאל קוד פתוח בעוד שלמעשה זהו סטנדרט פתוח, ההבדלים בין השניים לא משנים במאומה לתוכן המאמר.
  2. התוכן למאמר נאסף ממקורות רבים ברשת. אם מישהוא מעוניין ברשימת המקורות אתם מוזמנים לפנות אליי.
  3. OpenGL מיועדת ליצירה גרפית בלבד, ולכן ההשוואה הישירה היא מן הסתם לDirect3D או Direct2D.

25 responses to this post.

  1. Posted by Adar on ינואר 16, 2010 at 6:28 pm

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

    והייתי רוצה לראות את המקורות שלך על ההשאווה בין DX 11 ל OGL

    להגיב

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

    להגיב

  3. Posted by Adar on ינואר 16, 2010 at 6:38 pm

    וכל המפתחי שאני מכיר יודעים שDX היא הרבה יותר מסובכת מOGL,
    רובם אפילו מפחדים להתחיל עם DX, ניסית פעם לקרוא את התיעוד שלה? p:

    להגיב

  4. Posted by שניר דוד on ינואר 16, 2010 at 6:40 pm

    אדר, מקור לדוגמה הוא: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=261881
    ובדיעבד, אני חושב שזה עניין של טעם וריח על מה יותר מסובך. אין לי ניסיון מעמיק עם DX אבל יש לי בכל מקרה ניסיון קטן איתה, אני מאמין שכיום OGL היא אכן פשוטה יותר, כפי שכתבתי בפוסט, אבל בעבר המצב היה די הפוך.

    להגיב

  5. Posted by אלון on ינואר 16, 2010 at 7:23 pm

    פוסט מעולה

    להגיב

  6. Posted by יורם on ינואר 16, 2010 at 8:12 pm

    כמי אין על המחשב שלו אפילו תכנה אחת מבית מיקרוסופט, אני חייב להעיר שהפוסט הזה מלא טענות מופרכות.
    הדוגמא עם המזדה והפורשה לא מחזיקה מים, שם זו שאלה של מחיר כספי, במקרה של וOPENGL DX זה היה אמור להיות הפוך…
    הטענה שOPENGL מרנדרת מהר יותר מDX מגוחכת, כיוון שOPENGL זה רק API ומהירות הרינדור תלויה במימוש (חומרתי ותוכנתי כאחד), OPENGL לא מרנדרת מהר, היא לא מרנדרת בכלל.

    להגיב

    • Posted by שניר דוד on ינואר 16, 2010 at 8:27 pm

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

      להגיב

  7. Posted by דניאל on ינואר 16, 2010 at 9:03 pm

    אחלה פוסט שניר,
    אני מסכים איתך. כלומר אם אני בתור מפתח יכול כמו שקראת לזה "להרוויח מכל הצדדים" למה לא בעצם?
    חבל שהמצב הנוכחי ככה אבל אפשר להסתכל על עוד כמה תחומים בהם המצב דומה. לפחות הכל בר שינוי 🙂

    להגיב

  8. Posted by Adiel666 on ינואר 16, 2010 at 9:10 pm

    רגע, אתה זה שכתב את המאמר באנגלית כאן:
    http://www.bspcn.com/2010/01/08/why-you-should-use-opengl-and-not-directx/

    ?

    להגיב

    • Posted by שניר דוד on ינואר 16, 2010 at 9:54 pm

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

      להגיב

  9. Posted by טל on ינואר 16, 2010 at 9:19 pm

    פוסט יפה!
    "מעין מצב שהיום לדעתי, מקיים מצב אבסורדי שמוצר נחות ממוצר אחר מצליח יותר בגלל שהוא מוכר יותר, מפורסם יותר ומקודם בעוצמה חזקה הרבה יותר. מעטים האנשים שיבחינו לבד במלכוד, שלמעשה המוצר האחר עדיף."
    -זה כל כך נכון, וזה מתקיים בטווח רחב של מוצרים, לדוגמא iPhone.

    "רוב הישראלים נוהגים במזדה 3, האם זה אומר שהיא טובה יותר ממכוניות פורשה?"
    -לא, היא פשוט זולה יותר.
    (היית צריך להשוות במקרה הזה למכונית אחרת שלא פופלארית, שנמצאת באותה קבוצת רישוי. 🙂

    -למורים למדמ"ח יש את האפשרות לבחור באיזה שפה הם בוחרים, ולא מתקיימת העדפה למי שבוחר C# על פני Java.
    אצלי בבית ספר שאני לומד בו, למשל, יש מורים שמעדיפים Java, ואחרים C#.

    מחכה לעוד פוסטים בסגנון בעתיד :-]

    להגיב

  10. לפני שבכלל תגיע לעניין האופן ג'יאל או דיירקט איקס, אם אתה רוצה לפתח משחק, תשתמש במנוע.
    זו טעות מאוד נפוצה בקרב המון ישראלים, כנראה בגלל דעות קדומות, דברים שקיימים יותר זמן ברשת, העניין שרוב האנשים בארץ חושבים שפיתוח משחק מדבר על תכנות(כי יש הרבה מתכנתים), וכו' וכו'…
    אבל פיתוח משחקים זה לא תכנות, ולכן להגיד שאתה מפתח משחק באופןג'יאל או דיירקט איקס זו טעות.
    אתה יכול להגיד שאתה מפתח מנוע עם אופןג'יאל.
    או שאתה מפתח משחק במנוע שמשתמש באופןג'יאל.
    וגם אם אתה מפתח משחק ישירות עם האופןג'יאל(איפשהו בדרך אתה מפתח מנוע בעצמך, ככה בלי להבין שזה מה שאתה עושה).

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

    אישית, אני בעד תקנים פתוחים, קוד פתוח, והאפשרויות להמיר משחקים בקלות לפלטפורמות שונות, זה למה אני משתמש במנוע שמאפשר את זה

    להגיב

  11. שניר , ראיתי שם רק שתי תגובות, איפה הדיונים?

    ולשאר, אחרי שמבינים את האחד, לא קשה להתרגל לאחר, חוץ מהעובדה שOGL הוא StateMachine, לא לוקח כמעט זמן להתרגל לזה.
    בכל מקרה מימשתי SSAO פשוט בשניהם ויצא שבD3D זה נתן FPS יותר גבוה, מישהו יכול להסביר למה?

    משתמשים באחד על השני בגלל צרכים אישיים, אני לא חושב שאתה יכול להביא הוכחות שOGL יותר "טובה"(שונא את הביטוי הזה) מD3D.

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

    ומה עם יוניטי? ועם פלאש? אפשר להשתמש בOGL גם איתם, OGL כבר היה באינטרנט הרבה זמן, אני לא חושב שWebGL יעשה לו שינוי דראסטי.

    להגיב

  12. Posted by Adiel666 on ינואר 17, 2010 at 1:00 am

    adarg1:
    WebGL בשונה משאר הטכנולוגיות שציינת לא תצריך התקנה של פקד ActiveX בשביל להציג תוכן שנבנה איתה – ככה שזה יהיה אפילו יותר נגיש מפלאש.

    להגיב

  13. שלום לך,
    OGL כבר איבדה את היתרון שלה מאז גרסה 1.6 מתוך הזנחה, בזבוז זמן עד לצאת גרסה 2.0, שבעצם לא חידשה הרבה מעבר לעדכון הגרסה הישנה ותיקון באגים.
    לעומת זאת DXD (דיירקט-איקס) צמחה והתפתחה צמוד למיינסטרים, שוק מנועי תלת-מימד,
    דרייברים מעודכנים, תמיכה בדחיסה של טקסטורות HDR, תמיכה ב-K16 טקסטורות בפריים-באפר.
    תמיכה במולטי-תרד רנדר, תמיכה במיפוי סאב-פולי, ועוד…
    אין לי מושג לפי מה קבעת את פרמטר המהירות רנדר…?
    אין לי מושג איך קבעת שקל יותר לפתח ל-OGL, כאשר יש לך תמיכה רחבה יותר בעולם ה-DXD במיוחד שמיקרוסופט מעוניינת לעודד את המפתחים.
    לא רק במשחקים DXD התפתח, למעשה חברת Autodesk מפתחת התוכנות מאיה, ו-D3 מקס-
    הטמיעה בתוכנות תמיכה מוחלטת ב-DXD בעיקר, עד כדי הבדל באיכות תצוגת המודלים דרך ה-view-ports
    שורה תחתונה:
    המצב כרגע לא מחמיא ממש עבור OGL, אולי בעתיד…?
    כם גרסה 3.0 לא מחדשת הרבה.

    להגיב

  14. Posted by adarg1 on ינואר 17, 2010 at 11:09 am

    עדיאל, לכולם כבר יש פלאש מותקן, WebGL נכנסה מאוחר מדי 😐 ושוב, היא לא תשנה הרבה.
    OGL קיבלה קלות שימוש, אבל זה דבר שבסופו של דבר גם פוגע לה בביצועים- צריך לעבוד הרבה יותר קשה מאשר בDX כדי להשיג תוצאות דומות בשני הAPI-ים, במהירות ובזכרון.

    להגיב

  15. Posted by Adiel666 on ינואר 17, 2010 at 2:40 pm

    חייב להסכים עם Uri.
    בתור מישהו שעבד עם OGL3 בעבר(בJava), מאוד הפריע לי שלא ניתן לקרוא לצביעה למסך מאף Thread אחר מלבד הThread הייעודי של OGL.
    אני לא מתיימר להגיד שאני מכיר את DX ואת המגבלות היחיודיות שלו אבל במידה וזה אפשרי לצבוע למסך ממספר Threads שונים במקביל בDX, אז כאן צוואר הבקבוק של OGL וזה מה שתמיד יחזיק אותה בעבר.

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

    בחירה חכמה תהיה מראש להשתמש במנוע שעוטף את 2 הספריות הללו וניתן לייצא ממנו גרסאות בהתאמה(deployment לWindows דרך הrendering pipeline של DX ולשאר מערכות ההפעלה עם OGL).

    מנועי הOpen Source המובילים עובדים בשיטה שציינתי, כדוגמת Ogre3D, Irrlicht ועוד.

    דוגמה מהשטח –
    UT – חברת הפיתוח של Unity החליטה שרנדרינג לסביבת Windows יעשה דרך DX במקום OGL החל מגרסה 2.0 של המנוע.
    http://unity3d.com/company/news.html
    הPOST של ה-5 לנובמבר 2007 מדבר על זה.
    הם היו יכולים להשתמש כבר ב-OGL מכיוון שכל המנוע הזה נבנה ופותח מראש לMac, אבל לבסוף החליטו להשתמש בDX לסביבת WINDOWS – ואם הם עשו את זה, יש סיבה.

    להגיב

  16. Posted by adarg1 on ינואר 17, 2010 at 2:45 pm

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

    להגיב

  17. Posted by el.il@doom.co.il on ינואר 19, 2010 at 5:57 pm

    במקרה נתקלתי בפוסט, ויש לי שאלה:
    אם DirectX מוגבל רק לWindows ולXBOX, איך יכול ליהיות שחברת EA Games מוציאה משחקים זהים לחלוטין למק ולחלונות (עד כדי כך זהים ששתי הגרסאות באות באותו דיסק התקנה)?
    נראה לי שיש גרסה של DirectX גם למק.

    להגיב

  18. Posted by adarg1 on ינואר 20, 2010 at 4:21 pm

    Eli1, דבר ראשון OpenGL רץ גם על ווינדוס וגם על מאק,
    וברוב המשחקים לווינדוס יש אפשרות להחליף בין OpenGL ל DirectX
    במאפייני הוידאו.
    במקרה של משחקים שהם רק למאק, אלא אם הם משתמשים רק בOpenGL, יבואו בדיסק נפרד, או התקנה נפרדת, או התקנה שמזהה אוטומאטית את המערכת, אבל במקרה האופטימאלי זה בדיסק נפרד.
    למשל כל משחקי Blizzard נעשו 100% בOGL.

    להגיב

  19. Posted by el.il on ינואר 20, 2010 at 5:45 pm

    ב(רוב ה)משחקים של EA אין אפשרות להחליף. זה ממש מוזר. אם המשחק יודע לפעול עם OpenGL למה הם לא משחררים גרסה ללינוקס, או מאפשרים לשנות בהגדרות? הרי אם היה אפשר לשנות בהגדרות שישתמש בOpenGL היה אפשר להריץ כל משחק ממש בלי בעייה על לינוקס, גם אם רק על Wine (אני לא מצפה מהם לקמפל ELF טבעי). הרי התמיכה של Wine בOpenGL יותר טובה מהתמיכה שלו בDirectX. צריך לבדוק את הנושא.

    אגב, זה el.il (שים לב לנקודה) ולא Eli (אני לא אוהב את העובדה שהבלוג שלך משנה את האות הראשונה לגדולה – זה אמור ליהיות קטן, אבל לא משנה). el.il זה כינוי שאני משתמש בו שנים. el=elad, il=israel.

    להגיב

  20. Posted by שניר דוד on ינואר 20, 2010 at 5:58 pm

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

    להגיב

  21. Posted by תמיר on ינואר 28, 2010 at 3:21 pm

    ישנן כמה סיבות להעדפת OpenGL על DirectX.
    קודם כל היא Cross Platform והסיבה השנייה היא שקריאות הציור יותר פשוטות ומכאן נובע שהתכנות לOpenGL הוא פחות מורכב מאשר תכנות עם DirectX.

    לגבי פיתוח לווינוס, מומלץ להשתמש בDirect3D מפני שיש לה האצת חומרה גם למשחקים דו-מימדיים וגם בגרסא החדשה (Direct3D 11) יש תמיכה בטכנולוגייה המכונה "Adaptive Tessellation" שבעצם משכפלת משולשים ליצירת אובייקט מפורט יותר.

    להגיב

  22. Posted by אדר on פברואר 12, 2010 at 3:11 pm

    נכון שמשחקי OGL יכולים לעבודבקלות על Wine אם הם מקומפלים לווינדוס, אבל משחקי DX עובדים בלי כל הכנה מיוחדת, על wine.

    להגיב

כתיבת תגובה