לא בדיוק מורידים OpenGL, אלא רק את הinterface שלו (זאת אומרת קבצי H כאשר מדובר בC++).
הimplementation נמצא חלקית במערכת ההפעלה וחלקית בdriverים של הכרטיס מסך (עזוב, זה סיבוך אחד גדול).
השאלה העיקרית היא אם אתה רוצה להכין משחק, או שאתה רוצה לתכנת משחק.
הכוונה שלי היא שאם אתה רוצה פשוט ללכת על לוגיקה ומשחקיות ולא אכפת לך איך בדיוק מרנדרים מודל מקובץ X (סתם דוגמא), או איך מפעילים shaders, אז תלך בכיוון של ספריית משחקים\גרפיקה (עוד על זה למטה).
אם, לעומת זאת, אתה רוצה ללמוד יותר לעומק ולהבין איך גרפיקה פועלת, אז תלך על API כלשהוא.
אם בחרת ללכת על ספרייה, אז יש כל מיני שילובים. יש ספריות שממש בנויות להכנת משחקים (שלהן לפעמים קוראים "מנועים"), עם הדוגמאות הבולטות של Unreal Engine ו Cry Engine, ספריות שעולות מיליון דולר או משהו כזה... (תבדוק את זה, אף פעם לא הלכתי ובאמת הסתכלתי על הפרטים \ גרסאות \ תשלום).
כמובן שיש גם ספריות חינמיות, אבל הם מן הסתם יהיו פחות טובות (מה שלרוב מתבטא בעיקר בכלי העריכה שמביאים למתכנת).
אפשרות שנייה היא לחבר ספריות שונות שכל אחת מטפלת באלמנט אחר של המשחק.
לדוגמא: Ogre3D היא ספריית גרפיקה, ואליה אתה יכול לחבר נאמר את FMOD או SDL_mixer בשביל מוזיקה, ואת wxWidgets בשביל UI.
במקרה הזה, יש פחות או יותר אין סוף שילובים, ותצטרך לגגל מה מתאים לך יותר.
במקרה שאתה בחרת API, תאלץ לשים לב שבתור מתחיל - הרבה יותר קשה להכין מוצר גמור כלשהו בOpenGL.
DirectX הוא לא API של גרפיקה, אלא של הכנת משחקים (הקטע התלת מימדי הוא למעשה חלק קטן ממנו שנקרה Direct3D), מה שאומר שיש לך תמיכה built-in למוזיקה, תמונות, קבצים של מודלים תלת מימדיים, ועוד כל מיני דברים.
הפלוס של OpenGL הוא שהספרייה פועל פחות או יותר על כל מכונה קיימת (כל מחשב, מערכת הפעלה, פלאפון, קונסולה, וכולה), וDirectX פועל רק על Windows, ועל Xbox (דהיינו, מוצרים של Microsoft), ככה שזאת עוד נקודה למחשבה - לאיזה קהל המשחק שלך מיועד.
במקרה שאה כן בוחר ללכת על OpenGL, אני ממליץ לך בכלל לא להתחיל לגעת בדברים שהם platform-specific (הכנת context ו system events בעיקר) וישר ללכת על ספרייה כלשהיא שתעשה את זה.
דוגמאות מרכזיות לספריות כאלה הן SDL ו GLFW.
דבר שני זה שתשתמש בספריות מוכנות. אל תבזבז זמן על להכין פונקציות לטעון תמונות, או מודלים, או כל דבר אחר. תשתמש בדברים שקיימים כבר (הדוגמא הכי בולטת היא להשתמש בDevIL בשביל להכניס קבצי תמונות לOpenGL בתור תקסטורות).
ועכשיו בלי קשר לאיזה ספרייה, API או כל דבר אחר אתה בוחר - תתחיל קטן. אל תחשוב אפילו להכין משחק רציני עדיין, כי אתה לא יכול (בלי שום נימת זלזול).
אני אישית חושב שהדבר הכי קשה בהכנת משחקים (ולמעשה בכל תוכנה רצינית שעוברת את הכמה אלפים של שורות קוד) הוא דווקא העיצוב של הקוד - איך כל החלקים מתחברים ופועלים אחד עם השני ליצור תוכנית גדולה אחת.
כמובן שצריך ללמוד איך להשתמש במה שבחרת קודם, אבל אני חושב שיעזור לך מאוד לחשוב מראש בדיוק מה אתה רוצה להכין ולדעת פחות או יותר איך הקוד שלך יראה (איזה מחלקות אתה צריך, איך כל מחלקה פועלת עם האחרות, וכולה).
לכן, אני מציע לך להתחיל מדברים קטנים - יותר קל לעצב אותם, והעיצוב שלהם לרוב יתאים (עם תוספות וקצת שינויים) לדברים יותר גדולים שקשה יותר לעצב מראש.
בנוסף, שים לב שיותר קל לעצב משחקים דו מימדיים, אבל שהעיצוב שלהם כמעט תמיד יכול לפעול עם שינויים מזעריים במשחק תלת מימדי (להוסיף ציר חדש לנוסחאות המתמטיות, פחות או יותר), ככה שאני גם ממליץ לא להתחיל עם משחקיות תלת מימדית (שים לב שזה לא אומר שאתה לא יכול לצייר גרפיקה תלת מימדית - אני מדבר רק על המשחקיות).
מקווה שהמידע הזה עוזר. (פשיייי, איזה בלוק של טקסט יצא לי פה)
נערך לאחרונה ע"י Dragonion בתאריך 23-10-2010 בשעה 21:38.
|