הוספתי קצת שיידרים

somebodddy

New member
הוספתי קצת שיידרים

http://www.freewebs.com/someboddy/SBE7.11.08-00-15.zip אם זה לא עובד תורידו ותתקינו את http://www.microsoft.com/downloads/...34-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en הוספתי שיידר ללייזר, ככה שיהיה לו אפקט של... טוב, לייזר. למען האמת השיידר עצמו די גרוע(בקושי השקעתי בו), אבל מה שחשוב לי כרגע הארכיטקטורה של המנוע - שאותה אתם כרגע לא יכולים לראות, אבל עכשיו היא מאפשרת לי להוסיף שיידרים בקלות, עם רשימה של משתני uniform(משתנים שנשלחים מהתוכנה לשיידר) לכל אובייקט בעולם המשחק שלי שיכולים להתעדכן בכל פריים.
 

De-Panther

New member
איך אתה מחשב פריימרייט נכון באופןג'יאל? איך..

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

somebodddy

New member
את הFrameRate אני מחשב עם SDL

עניין פשוט של לחסר את מספר התקתוקים בפריים הקודם ממספר התקתוקים בפריים הנוכחי. אאל"ט לOpenGL עצמה אין פונקציות של חישוב זמן, אבל לכל שפת תכנות שמכבדת את עצמה יש פונקציות כאלה, ואולי גם לפסקל. OpenGL עצמה מתעסקת אך ורק בגרפיקה, אבל יש המון ספריות שמשלימות אותה בתחומים של קלט, ניהול חלונות וכו', ולהן בטח יש פונקציות של זמן(אתה בכל אופן צריך להשתמש באחת אם אתה לא רוצה להתעסק עם הAPI של WIN32. לא יודע איך זה בפסקל אבל בC זה סיוט רציני) למה אתה מתכוון כשאתה אומר "פיקינג"? ומה זאת אומרת לעשות ספריית GUI משלך?
 

De-Panther

New member
יש דרך להוציא מאופןג'יאל ולעשות את החישוב, גם

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

somebodddy

New member
טוב, אז ככה

קודם כל אתה מוצא את הפונקציה שאומרת לך כמה תקתוקים עברו מאז הפעלת התוכנה(כל תקתוק זה מילישנייה). בדרך כלל הפונקציה תכלול את המילה Ticks או Time. אתה יוצר שני משתנים - now וlast. בנקודה קבועה בלולאת הפריים אתה מבצע מציב את הערך של now במשתנה last, ובתוך now אתה מציב את מספר התקתוקים שעברו מאז הפעלת התוכנה. now-last זה מספר התקתוקים שנמשך הפריים הנוכחי. חלק אותו ב1000 בשביל לקבל את הזמן בשניות שהפריים הנוכחי מתבצע בו. הFPS שלך כמובן יהיה 1000 חלקי now-last. לגבי הפיקינג, קודם כל אתה צריך דרך לבדוק עם העכבר נמצא בשטח האובייקט. אם האובייקט שלך זה מלבן או עיגול אז הבדיקה לא אמורה להיות בעיה. הכי חשוב בGUI זה לשמור את מצב כפתורי העכבר בפריים הקודם. אתה רוצה שאירועים מסויימים יתבצעו רק ברגע הלחיצה או השחרור, לא בכל פריים שהעכבר לחוץ בו. את הסליידרים עשיתי בצורה די פשוטה - ברגע שהמשתמש לוחץ על העכבר(כלומר בפריים הקודם הכפתור לא היה לחוץ ובפריים הזה כן), נשמרת הנקודה היחסית שבה הוא לחץ על האובייקט. כשהמשתמש מזיז את העכבר המיקום של הסליידר מתעדכן ככה שהנקודה היחסית נשארת קבועה. במקרה שלי אירועי עדכון נשלחים כל פריים שהעכבר לחוץ, כי אני רוצה שיהיה אפשר לראות את השינוי בלייזר בזמן אמת, אבל אפשר גם לשלוח אירוע פעם אחת ברגע שהמשתמש עוזב את הכפתור של העכבר(בפריים הקודם הוא היה לחוץ ובפריים הזה לא). אם תרצה אני אוכל להעלות לכאן את הקוד של הGUI במנוע שלי. לפונקציות שם יש שמות די ברורים ככה שלא צריך את שאר הקוד בשביל להבין מה הולך שם...
 

De-Panther

New member
הו! זה בערך מה שהסבירו לי, רק שבעברית זה יותר

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

voguemaster

New member
לגבי PICKING

כשאתה רוצה לבצע PICKING בתלת מימד בד"כ אתה לוקח את הנקודה שבה המשתמש הקליק עם העכבר ומבצע טרנספורמציה בחזרה לעולם התלת מימדי שלך. אם בד"כ יש לך טרנס' WORLD לכל אובייקט ואז טרנס' VIEW ו-PROJECTION, אתה צריך לבצע טרנס' הפוכה מ-VIEW ל-WORLD ואז (עדיף מבחינת דיוק) לבצע טרנס' ל-MODEL SPACE (או LOCAL SPACE, איך שתרצה לקרוא לזה) של האובייקט. ברגע שהפכת את הווקטור של מיקום הקליק ל-LOCAL SPACE, אתה צריך לבצע טרנס' מ-WORLD ל-LOCAL SPACE גם לנק' העין של המצלמה. ואז, יש לך ב-LOCAL SPACE את נק' העין ויש לך את נק' הקליק. אתה מותח ווקטור בין נק' העין אל נק' הקליק וזה הווקטור שאתה בודק אם הוא פוגע באובייקט. אם כן, האובייקט הוא PICKED. עכשיו, יש שיטות שונות ומשונות לבצע PICKING בהתאם לאיזה אלגוריתמים בשימוש במנוע מבחינת BROADPHASE אבל זה כבר משהו אחר.
 

somebodddy

New member
בשביל GUI זה די מיותר, לא?

פשוט לפני שמציירים את הGUI מזיזים את המצלמה כדי שלא יצטרכו לעשות את כל הטרנספורמציה הזאת.
 

voguemaster

New member
כן, חשבתי שהוא מדבר על PICKING באופן כללי

בשביל UI כללי אין באמת צורך בדברים מיוחדים.
 

De-Panther

New member
ויתרתי על העניין הזה../images/Emo3.gif סודרו כמה דברים עם...

המנוע שאני עובד איתו, אז עכשיו אני יכול להשתמש בVRML גם בשביל הGUI ושזה יעבוד כמו שצריך
 

somebodddy

New member
לעזאזל!

מסתבר שהכרטיס שלי לא תומך בFBO. טוב, אני אאלץ להשתמש בpBuffer. הוא אמנם יותר מיושן אבל נראה לי שהוא יעבוד...
 
למעלה