OpenGL

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

OpenGL ‏(Open Graphics Library) הוא ממשק תכנות יישומים ליצירת תוכנות שמייצרות גרפיקה תלת ממדית ממוחשבת (וגם דו-ממדית). הממשק מורכב מיותר מ־250 קריאות פונקציות שונות שיכולות לשמש לציור של סצנות תלת-ממדיות מורכבות מצורות פשוטות (פרימיטיבים). OpenGL פותחה במקור על ידי חברת סיליקון גרפיקס (Silicon Graphics Inc.) בשנת 1992, אך כיום המשך הפיתוח הוא בידי Khronos Group.

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

מבנה

ל-OpenGL שתי מטרות עיקריות:

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

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

דוגמאות לקריאות לפונקציות ב-openGL (שליחת משתנים למכונת המצבים):

  • סרטוט ציור המורכב ממשולשים -
glbegin(GL_TRIANGLES); //other modes: GL_POINTS, GL_LINES, GL_QUADS, GL_POLYGON 
glVertex3f(x-coordinate, y-coordinate, z-coordinate); //first vertex
glVertex3f(x-coordinate, y-coordinate, z-coordinate); //second vertex
glVertex3f(x-coordinate, y-coordinate, z-coordinate); //third vertex
glEnd();
  • הפעלת מקור אור בודד
glLightfv(GL_LIGHT0, GL_DIFFUSE, {R,G,B});
glLightfv(GL_LIGHT0, GL_POSITION, light position);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING); //enable the lighting
  • הפעלת אלגוריתמי הסרת הנסתר
glEnable(GL_DEPTH_TEST); //enable depth test
glDepthFunc(<comparison func>); //comparison functions: GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, and GL_ALWAYS

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

תיאור קצר של התהליך במכונת המצבים הוא:

  1. חישוב של הפונקציות שמתארות משטחים, ועקומות אם צריך.
  2. פעולות על קודקודים, טרנספורמציות שלהם, הארה שלהם בהתאם לתכונותיהם.
  3. הפיכת הנתונים לפיקסלים (רסטריזציה).
  4. פעולות על חלקים מהתמונה, כמו עדכון ערכים בהתאם להוראות.
  5. שליחת הנתונים אל תוך אוגר המסגרות.

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

ראו גם

קישורים חיצוניים

ויקישיתוף מדיה וקבצים בנושא OpenGL בוויקישיתוף


Crystal Clear app ktalkd.png ערך זה הוא קצרמר בנושא מחשבים. אתם מוזמנים לתרום למכלול ולהרחיב אותו.
Logo hamichlol 3.png
הערך באדיבות ויקיפדיה העברית, קרדיט,
רשימת התורמים
רישיון cc-by-sa 3.0