שאלה לגבי כרטיסי מסך ועיבוד 3D...

MotiAd

New member
שאלה לגבי כרטיסי מסך ועיבוד 3D...

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

Voxel

New member
חומרה

רוב הניסיון שלי הוא עם OpenGL, אבל מההיכרות השטחית שלי עם Direct3D, הם מאוד דומים בעבודה מול החומרה. ה GPUs על כרטיס המסך מכיל מעגלים מתוכננים אופטימלית למתמטיקה תלת מימדית, בעיקר מטריצות, כפל וקטורי, עבודה יעילה מאוד עם float ו double כמעט כל פעולה שנעשית דרך ה API ונתמכת בחומרה של הכרטיס שיש לך, "מואצת", משמע, מבוצעת על החומרה של הכרטיס. אם תכתוב פונקציה שמכפילה מטריצות, אתה עושה את זה על ה CPU בתוכנה ולכן מפסיד המון בזמן ריצה. כלל אצבע, כל המתמטיקה דרך ה API. בכל מקרה, מומלץ לקרוא על כל פונקציה שאתה מפעיל כדי לדעת את היתרונות והחסרונות. בהצלחה.
 

MotiAd

New member
תודה רבה...

ב-OpenGL הממשק מול החומרה שקוף כמעט לחלוטין. כל פעולה שאתה מבצע באמצעות ה-API נדרשת בעצם לביצוע הרינדור ואין גישה ישירה לנתונים ממש. ב-DX הממשק מול החומרה עדיין עובר דרך שכבה שקופה למשתמש אבל יש נגיעה בו במידה הדרושה. בכל אופן, תודה רבה :)
 
למעלה