OpenGL
יש להשלים ערך זה: בערך זה חסר תוכן מהותי.
| ||
יש להשלים ערך זה: בערך זה חסר תוכן מהותי. | |
OpenGL (Open Graphics Library) הוא ממשק תכנות יישומים ליצירת תוכנות שמייצרות גרפיקה תלת־ממדית ממוחשבת (וגם דו-ממדית). הממשק מורכב מיותר מ־250 קריאות פונקציות שונות שיכולות לשמש לציור של סצנות תלת-ממדיות מורכבות מצורות פשוטות (פרימיטיבים). OpenGL פותחה במקור על ידי חברת סיליקון גרפיקס (.Silicon Graphics Inc) בשנת 1992, אך כיום המשך הפיתוח הוא בידי Khronos Group.
OpenGL פופולרית בתעשיית משחקי המחשב, שם המתחרה העיקרית היא Direct3D המפותחת על ידי חברת מיקרוסופט. שימוש נרחב ב־OpenGL ניתן למצוא בסביבות מציאות מדומה, סימולציות מדעיות, הצגת מידע, סימולטורים, מדמי טיסה ופיתוח משחקי מחשב.
מבנה
[עריכת קוד מקור | עריכה]ל-OpenGL שתי מטרות עיקריות:
- לפשט את התקשורת עם המעבד הגרפי בעזרת שימוש בממשק אחיד.
- להסתיר את ההבדלים בין פלטפורמות חומרה שונות.
הפעולה הבסיסית של 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 הייתה השפעה על מאיצי גרפיקת תלת-ממד, בכך שהיא עודדה הוספת תכונות שכיום נחשבות לנורמה בתחום.
תיאור קצר של התהליך במכונת המצבים הוא:
- חישוב של הפונקציות שמתארות משטחים, ועקומות אם צריך.
- פעולות על קודקודים, טרנספורמציות שלהם, הארה שלהם בהתאם לתכונותיהם.
- הפיכת הנתונים לפיקסלים (רסטריזציה).
- פעולות על חלקים מהתמונה, כמו עדכון ערכים בהתאם להוראות.
- שליחת הנתונים אל תוך אוגר המסגרות.
יש מאיצים גרפיים שמספקים תכונות מעבר לרשימה זו, אך הם בדרך כלל הרחבה של הרשימה ולא שינוי מהפכני שלה.
ראו גם
[עריכת קוד מקור | עריכה]קישורים חיצוניים
[עריכת קוד מקור | עריכה]- אתר האינטרנט הרשמי של OpenGL (באנגלית)