פורסם 2005 בנובמבר 1020 שנים לא ניסיתי אבל אני יודע שבגרפיקה משתמשים תמיד בשכבה ניראת ושכבת עבודה וכל פעם אומרים לכרטיס מסך לעשות פליפ
פורסם 2005 בנובמבר 1020 שנים לא ברור לי עדיין אם ההבהוב שיש אצלך זה בגלל חוסר vsync, או פשוט בגלל שאתה מוחק ומצייר מחדש. (בדיקה פשוטה יחסית - תנסה את זה על מסך LCD)האמת שאף פעם לא עבדתי עם ה- BGI, הוא היה ישן עוד לפני 8 שנים אבל נראה לי שקצת קשה לממש בו page flipping או double buffering.שלא לדבר על מצבים גרפיים נורמאליים.את ההבהוב שנגרם מזה שאתה מוחק ומצייר אתה יכול לפתור פשוט ע"י זה שלא תמחק שטח שאתה הולך לצייר עליו.אתה ההבהוב שנובע מחוסר vsync קצת יותר קשה לפתור ב- BGI עד כמה שאני יודע. אתה יכול להקטין אותו אם תצייר רק עם קוים אופקיים (וכאמור, הוא לא קיים על מסכי LCD)עוד דרך לפתור את שני סוגי ההבהובים זה באמת זה עם טכניקות של page-flipping (קצת ארכאי) או double-buffering (עדיין בשימוש). עד כמה שאני יודע קצת קשה לממש את זה עם ה- BGI, אבל לעומת זה עם Allegro זה מאוד קל.
פורסם 2005 בנובמבר 1020 שנים יש לי מסך LCDאני דיברתי על ההבהוב של מחיקת מסך מלאה ואחריי התחלת הציור מה שיוצר דיליי מסויים בין פריים לפריים הניראה לעין כהבהוב
פורסם 2005 בנובמבר 1120 שנים מחבר אולי מישהו יכול להביא לי את הקטע של התוכנית?אני צריך להבין את הנושא
פורסם 2005 בנובמבר 1120 שנים הבעיה היא שאין את האפשרויות האלה בBORLAND C(לפחות לא לפי קובצי העזרה שלהם).הדבר הדומה ביותר לזה הוא שימוש בIMAGE. תחפש בעזרה חומר על זה.אם אתה רוצה בניתי כמה פונ שעוסקות בשמירה של קבצים עם הפורמט הזה ופתיחה, ואף בניתי צייר פשוט של זה. אם אתה רוצה אני אשלח.
פורסם 2005 בנובמבר 1120 שנים מחבר אתה ממש לא בכיוון שלי אח שלי...אנחנו לא אמורים לבנות תוכנה...תנסה להריץ את הקוד הזה בתוכנת ה- C שלך:#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>int main(void){ /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int xmax, ymax; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); setcolor(BLUE); xmax = getmaxx(); ymax = getmaxy(); /* draw a diagonal line */ line(350, 200, xmax, ymax); /* clean up */ getch(); closegraph(); return 0;}אז הוא יראה לך קו באמצע המסך נראה לי...עכשיו אני צריך שהוא יזוז שמאלה או ימינה עם הפונקציה DELAYאיך אני עושה זאת?
פורסם 2005 בנובמבר 1220 שנים אתה צריך לממש דבר שנקרא event-loop או game-loop.זו לולאה שבכל ריצה שלה קורים 3 דברים:קלט מהמשתמש (בהיעדר פונקציות לקלט א-סינכרוני אתה יכול לעשות את זה עם kbhit() ו- getch()עדכון של מבנה הנתונים (עדכון המיקום של הקו)עדכון המסך. במקרה שלך הדבר הכי מוצלח יהיה כנראה לצייר את הקו החדש ולמחוק את השאריות של הישן (הסדר דווקא כן משנה אם אתה רוצה למנוע בעיות vsync, הסדר של הציור/מחיקה צריך להיות מימין לשמאל).
פורסם 2005 בנובמבר 1220 שנים מומלץ קודם למחוק את הקו, לשנות את המיקום שלו, ואז לצייר אותו מחדש בגלל אותן בעיות שהוצגו קודם לכן.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.