Presentation is loading. Please wait.

Presentation is loading. Please wait.

גרפיקה ממוחשבת: מבוא ל-OpenGL

Similar presentations


Presentation on theme: "גרפיקה ממוחשבת: מבוא ל-OpenGL"— Presentation transcript:

1 גרפיקה ממוחשבת: מבוא ל-OpenGL

2 גרפיקה ממוחשבת: מבוא ל-OpenGL
OpenGL, GLU, GLUT – התקנה הורידו את הקבצים GlutInstallation.zip מהאתר. הוסיפו את הקובץ: GLUT.H לספרייה (אם הספרייה gl אינה קיימת אז צרו אותה): C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\gl\ הוסיפו את הקובץ GLUT32.libלספריה: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\ הוסיפו את הקובץ: GLUT32.dllלספרייה: C:\Windows\System32\ הסברים נוספים תוכלו למצוא בקישור הבא: גרפיקה ממוחשבת: מבוא ל-OpenGL

3 OpenGL (Open Graphics Library)
תוכנה שפותחה ע"י Silicon Graphics ב-1992, המאפשרת גישה לחומרה הגרפית (API). החומרה הגרפית מכילה יכולות גרפיות רבות: טרנספורמציות, תאורה, חומר, טקסטורה, z-buffer, rasterization ועוד. מכילה כ- 250 פקודות המאפשרות אפליקציות: גרפיות, אינטראקטיביות, תלת-ממדיות. ממשק בלתי תלוי בחומרה ומערכת הפעלה (cross platform). אינה מכילה פקודות חלונאות או פקודות קלט מהמשתמש. מכילה רק אובייקטים גיאומטריים בסיסיים כגון: נקודה, ישר, פוליגון. גרפיקה ממוחשבת: מבוא ל-OpenGL

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

5 GLU (OpenGL Utility Library)
מורכבות יותר, כגון: עקומי ומשטחי NURBS. מכילה פונקציות מעטפת לחלק מפונקציות OpenGL, כגון פונקציות צפייה והטלה. גרפיקה ממוחשבת: מבוא ל-OpenGL

6 GLUT (OpenGL Utility Toolkit)
ערכת כלי פיתוח המאפשרת עבודה עם חלונאות למטרות גרפיקה. בלתי תלויה במערכת חלונאות. ערכה לכתיבת תוכנית הפועלת לפי מאורעות (event driven). מכילה אובייקטים גיאומטריים מורכבים יותר כגון: ספירה, טורוס, וקומקום. מתאימה לאפליקציות קטנות המבוססות על OpenGL. גרפיקה ממוחשבת: מבוא ל-OpenGL

7 גרפיקה ממוחשבת: מבוא ל-OpenGL
OpenGL, GLU, GLUT חומרה גרפית OpenGL GLU מערכת חלונות GLUT תוכנית גרפית גרפיקה ממוחשבת: מבוא ל-OpenGL

8 גרפיקה ממוחשבת: מבוא ל-OpenGL
מבנה כללי של תוכנית main() { initialize window // GLUT functions initialize drawing // OpenGL and GLUT functions connect between events and callbacks // GLUT functions update window and check for events // GLUT functions } זרימת התוכנית היא עפ"י מאורעות (event driven) גרפיקה ממוחשבת: מבוא ל-OpenGL

9 גרפיקה ממוחשבת: מבוא ל-OpenGL
תוכנית בסיסית void init(void) { … // Initial definitions of the drawing } void display(void){ … // definition of all objects to be drawn } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutMainLoop(); } גרפיקה ממוחשבת: מבוא ל-OpenGL

10 תוכנית בסיסית – אתחול חלון
glutInit – אתחול GLUT glutInitDisplayMode– אתחול התצוגה (מודל צבע, סוג החוצץ,...) glutInitWindowSize – אתחול גודל החלון (בפיקסלים) glutInitWindowPosition– אתחול מיקום החלון (ביחס לפינה השמאלית עליונה של החלון) glutCreateWindow – יצירה של חלון (החלון יוצג רק אחרי הפקודה glutMainLoop) גרפיקה ממוחשבת: מבוא ל-OpenGL

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

12 תוכנית בסיסית – קישור בין מאורעות לפונקציות callback
glutDisplayFunc – טיפול בצורך לצייר מחדש, כלומר, קישור לפונקצית ציור glutReshapeFunc – טיפול בשינוי גודל החלון glutKeyboardFunc – טיפול בלחיצה על כפתור המקלדת glutMouseFunc – טיפול בלחיצה על כפתור העכבר glutMotionFunc– טיפול בתזוזת העכבר glutIdleFunc – טיפול במקרה שאין מאורעות גרפיקה ממוחשבת: מבוא ל-OpenGL

13 גרפיקה ממוחשבת: מבוא ל-OpenGL
תוכנית בסיסית – ציור void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); // Select a clear color } void display(void) { glClear (GL_COLOR_BUFFER_BIT); /* clear all pixels */ /* draw a white polygon (rectangle) with corners at (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */ glColor3f (1.0, 1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glFlush (); /* don't wait! start processing buffered OpenGL routines */ } גרפיקה ממוחשבת: מבוא ל-OpenGL

14 גרפיקה ממוחשבת: מבוא ל-OpenGL
תוכנית בסיסית – ציור glClearColor – הגדרת צבע רקע glClear – מחיקת החוצץ הגרפי glColor3f – הגדרת צבע (עבור אובייקטים שיוגדרו אחרי פקודה זו) glBegin, glEnd – הגדרת אובייקט glVertex3f – הגדרת קודקוד של אובייקט glFlush - הוצאת פקודות הציור לפועל (אחרת התוכנית עלולה להמתין לפקודות ציור נוספות) גרפיקה ממוחשבת: מבוא ל-OpenGL

15 גרפיקה ממוחשבת: מבוא ל-OpenGL
תוכנית בסיסית – ציור גרפיקה ממוחשבת: מבוא ל-OpenGL

16 תוכנית בסיסית – מכונת מצבים
תוכנית ב- OpenGL מתפקדת כמכונת מצבים: כל פקודה מכניסה את המערכת למצב מסוים. למשל, הגדרת צבע (glColor3f) היא תקפה עד להגדרה של צבע חדש. משתני מצב נוספים: תאורה, חומר, פרמטרים של מצלמה, הטלה וכדומה. לכל משתנה מצב יש ערך ברירת מחדל: קביעת ערך של משתנה מצב מתבצעת ע"י קריאה לפונקצית OpenGL מתאימה (מהסוג שמופיע למעלה) קריאת ערך של משתנה מצב נעשית ע"י הפונקציה glget**. הפעלה או כיבוי של מצב: glEnable(), glDisable() גרפיקה ממוחשבת: מבוא ל-OpenGL

17 תוכנית בסיסית – פונקצית צפייה
void winReshapeFnc (GLint newWidth,GLint newHeight) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(WORLD_MIN_X,WORLD_MAX_X, WORLD_MIN_Y,WORLD_MAX_Y); } gluOrtho2D – מגדיר הטלה דו-ממדית פשוטה (אורתוגרפית) מחלון בעולם שמימדיו נתונים ע"י הפרמטרים המועברים לפונקציה לבין חלון המסך. שלוש הפקודות האלו אחראיות על הגדרת החלון בעולם שיותאם לחלון במסך. גרפיקה ממוחשבת: מבוא ל-OpenGL

18 תוכנית בסיסית – אנימציה
הצגת אנימציה 'חלקה' מתבצעת ע"י חוצץ כפול (double buffers). לצורך זה צריך להוסיף ולשנות את הפקודות הבאות: int main(int argc, char** argv) { : glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); // change here glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); } void display(void) { glFlush(); glutSwapBuffers(); // add here גרפיקה ממוחשבת: מבוא ל-OpenGL


Download ppt "גרפיקה ממוחשבת: מבוא ל-OpenGL"

Similar presentations


Ads by Google