דיון מרוכז- קריעת תמונה, V-Sync ונפילות FPS - עמוד 8 - כרטיסי מסך - HWzone פורומים
עבור לתוכן
  • צור חשבון

דיון מרוכז- קריעת תמונה, V-Sync ונפילות FPS


SyndromE

Recommended Posts

שלום לכולם.

יש לי שאלה על Triple Buffering.

הבנתי ש ה Triple Buffering מאפשר איכסון פריים שלישי בבאפר המוסף, כך שתמיד קיים פריים מוכן לתצוגה, אבל איך יתכן שהדבר פותר את בעיית נפילת הפרימריים של שילוב ה V-Sync וה Double Buffer?? כי הרי ההחלפה בין הבאפרים יכולה להתבצע אך ורק לאחר שהמסך סיים להציג תמונה שלמה, כלומר ההגבלה היא במסך ולא ביצירת עוד פרימיים בבאפרים נוספים.

אשמח להסבר מדוע ה Triple Buffering פותר את זה.

קישור לתוכן
שתף באתרים אחרים

  • תגובות 284
  • נוצר
  • תגובה אחרונה

שאלה טובה. זה פחות או יותר מה שהבנתי:

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

כי באפר A כבר תפוס עם תמונה מוכנה שממתינה למסך שיסיים עם באפר B.

במקרה של 3 באפרים, נגיד המסך לא הספיק להציג את באפר B ובבאפר A כבר יש תמונה חדשה ממתינה- היא תעבור לבאפר C כדי שהכרטיס יוכל

להמשיך לעבוד על התמונה הבאה בבאפר A. (כשהמסך יסיים להציג את B, התמונה מ-C תעבור אליו לתצוגה)

אז בעצם הבאפר המוסף C מהווה מרווח נשימה, ומאפשר לכרטיס להמשיך לרנדר ל-A.

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

קישור לתוכן
שתף באתרים אחרים

אתה אומר ש"בבאפר A הכרטיס מרנדר תמונה ואז היא עוברת לבאפר B אותו המסך מציג ".

לא הבנתי את דבריך, הרי כאשר יש תמונה בבאפר A היא נשלחת ישירות למסך, ובזמן שהיא נשלחת, תמונה נוספת מרונדרת בבאפר B ובסוף הרינדור גם היא נשלחת למסך, ואז התהליך חוזר חלילה לבאפר A שהוא כבר מוכן לרינדור התמונה הבאה ובגלל שיש שני באפרים נקרא הדבר Double Buffer.

וה Double Buffer מוגבל כתוצאה מקצב ריענון המסך.

אז שאלתי את השאלה איך ה Triple Buffering פותר את העניין אם בכלל המסך מגביל :s07: ניסתי להבין את דבריך אך לא הצלחתי.

קישור לתוכן
שתף באתרים אחרים

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

(בהעברת מידע מבאפר לבאפר התבססתי על פעולה מיידית שלא לוקחת זמן בכלל)

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

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

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

:xyxthumbs:

קישור לתוכן
שתף באתרים אחרים

אם ההמתנה עצמה היא שמעקבת FPS איך נפתר הדבר?

לפי ההגיון, לא אמור להיפתר הדבר, משום שהמסך הוא הגורם שמעקב.

בוא נסגור על ציטוטים רלוונטים מויקיפדיה:

Limitations of double buffering

If the system has two color buffers A and B, it can display buffer B while drawing a new picture (rendering) into buffer A. When it is done rendering into buffer A, the system needs to wait until buffer B is in the monitor's vertical blank period before swapping buffers. This waiting period could be several milliseconds during which neither buffer can be touched. At 60 frames per second, there are only 16.67 milliseconds in which to draw the frame, so this delay could waste valuable frame time. When the monitor is in vertical blank it can either swap buffers A and B and then start rendering into buffer B (page flipping) or copy buffer A into buffer B and render into buffer A.

Advantage of triple buffering

If the system has three color buffers A, B and C, it does not have to wait to swap buffers. It can display buffer B while rendering into buffer A. When done rendering into buffer A, it can start rendering into buffer C immediately. When the monitor is in vertical blank, it can display buffer A and make buffer B available for reuse.

Limitations of triple buffering

If the system always renders buffers in less time than it takes to display a buffer once on the monitor, the computer will wait for the monitor regardless of how many buffers there are. In this particular case triple buffering has no advantage over double buffering. The third buffer also uses additional memory, which could be used for other data (like textures).

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

ואגב, בגלל שהמסך הוא הגורם המעקב, קצב הפריימים לא יעלה על קצב הרענון.

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

קישור לתוכן
שתף באתרים אחרים

גם לי יש בעיה של דרופים שיחקתי the godfather2 מישהוא יודע למה התקיעות האלה? אי אפשר לשחק זה כמות ענקית של קירטועים אני עם e8400 וכרטיס מסך 9800gtx+ עידכנתי והכל! במשחק שיחקתי על רזולוצייה 1280X1024 הגדרות High ללא v sync אחשיו זה מתחיל ככה בהתחלה 75 fps פיתאום אני נוסע מיסתובב נוסע וזה יורד ל 42 בבת אחת וזה עושה מלא קירטועים וממשיך.גם ניסיתי להוריד הגדרות להכי נמוך וגם רזולוצייה ל 800x600 ועדיין קורה! יש אולי פאטץ?

גם ב x men זה קרה לי שהייתי עובר אזור ה doble buffer יכול לעזור במיקרה הזה? וחייב את התוכנה הזאת? כי מה כל משחק שאני ישחק אני יפעיל אותה?

קישור לתוכן
שתף באתרים אחרים

יש לי שאלה נוספת.

אני משתמש עם מסך LCD שקצב הריענון שלו הוא 60 Hertz.

נניח שאני משחק במשחק קל ואני מגיע איתו ל 80 FPS.

כלומר הכרטיס מסך מוציא 80 פריימים בשניה, והמסך מוציא 60.

האם המסך מגביל את הכרטיס, זאת אומרת יש לי בפועל 80 פריימים בשניה במסך או 60?

קישור לתוכן
שתף באתרים אחרים

אם 60HZ יוכלו להציג לך 60 FPS בלבד אז איך הדבר שנוצר קריעת תמונה?

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...