קיבלתי את השאלה הזו באיימיל :
לצבי שלום
אנו כותבים אפליקצית תלת מימד ב directx 11 ומעונינים להוסיף ל scene שלנו מראות .
איך אפשר לעשות את זה באופן פשוט ?
ובכן יש מספר שיטות להוספת מראות ל scene .
בדרך כלל אנו מקבלים מהגרפיקאי הגדרות של מיקום המראות בנוסף להגדרות shading של האוביקטים שצוירו במראה .
(הShading של התמונה במראה נועדה למנוע תחושה של השתקפות של 100% כמו מראה מושלמת אלא לבצע אפקטים שישנו את הדמות המשתקפת )
תפקידנו כתכנתים לדאוג להפיח חיים במראה כלומר לדאוג שלתהליך ההשתקפות הדינמי שכאשר דמות עוברת ליד המראה המראה תשקף אותה .
השיטה שאני אציג כאן מורכבת משלושה תהליכים מרכזים :
השלב הראשון הינו רינדור שטח המראה לתוך ה stencil buffer כלומר יצירת שטח ב stensil buffer אשר מיצג את שטח המראה .
השלב השני רינודר הscene מנקודת מבט של המראה .
השלב השלישי סידור הz – buffer וה Setnecil buffer של ה Scene כך שפעולות הציור הבאות התור לא ישנו דברים בדמות שצוירה במראה .
מכיוון שאנו עובדים עם Direct3d11 התהליך יכול להתבצע בdeffred context על מנת למקבל את תהליך הרינדור כמו כן יש לזכור שתהליך רינדור כל
ה scene בשביל ההשתקפות במראה הינו תהליך יקר מבחינת ביצועים בדרך כלל המראה יחסית למסך קטנה ויש מקום להרבה אפילו הרבה מאוד אופטימיזציות .
חשוב לא לרנדר מראות שלא מופיעות בscene ברגע נתון לעבוד עם back buffer culling נכון ועוד .
בדמו MultithreadedRendering11 אשר נמצא בsdk יש דוגמא לרנדור מראות בשיטה הזו .
הרינדור של המראות בDemo הזה מתבצע בפונקציה :RenderMirror אשר מקבלת את ה ID3D11DeviceContext
שעליו צריכים לצייר את המראות .
התרשים זרימה של הפונקציה הזו הינה :
בפוסטים הבאים אני אנסה לתאר לעומק את כל אחד משהלבים הן מבחינת Direct3d api והן מבחינה מתמטית של הscene
מיקרוסופט נכנסה לתחום של סלולאר בעמדה נחותה .בשוק ישנם כבר כמה שחקנים ראשים :אפל ואנדרואיד
שכשהם מסתכלים אחורנית הם לא רואים את מיקרוסופט בתחום .
הנקודה המאוד חזקה ואולי היחידה של מיקרוסופט לפי דעתי הינה כלי הפיתוח .
תכנת יכול בחינם להוריד את2010 Visual studio express מאוד בקלות להתקין את התוספים לצורך פיתוח ב Windows phone 7 התכנות בsilver light הינו קל פשוט תוך פרק זמן מינימלי אפשר להרים אפליקציה בינונית. וגם אפליקציה מורכבת זה לא דבר מסובך.
הטעות הפטאלית שלצערי מיקרוסופט עושה זה שהיא מונעת בכל מחיר את הקשר הישיר בין המפתח לצרכן על ידי זה שהיא מחייבת שכל אפליקציה שמפותחת לwindows phone 7 תימכר לצרכן דרך Windows Phone Marketplace שלה תוך כדי שהיא גוזרת קופון . ומכתיבה תנאים לתוכן האפליקציה וכד .
הקשר הישיר בין המפתח לצרכן לפי דעתי זה מה שבנה את מיקרוסופט ללא המודל הזה ,אם על כל אתר אינטרנט שנכתב או כל אפליקציה שנכתבה לwindows היה המפתח מחויב למכור אותו דרך מיקרוסופט ,מיקרוסופט לא היתה מגיע לאן שהיא הגיע .
אומנם אפל עובדת באותה שיטה והיא מצליחה אבל מיקרוסופט צריכה להביא את הadd in value שלה על מנת להאבק בנחיתות החומרתית ובמספר האפליקציות שהמתחרים מציגים .
אם לי יש סוכנות של מוצר צריכה עם 4 עובדים משווקים ואני יכולתי לרכוש עבורם מכשיר נייד ולהשקיע מינימום שבמינימום בפיתוח אפליקציה שרובה hard coded ופעם בשנה לבצע עדכונים זה היה פותח שוק גדול בפני מיקרוסופט לפי דעתי .
לפי דעתי מפתחים ויזמים לא אוהבים את הרעיון שמישהו יפלטר אותם ויכתיב להם תנאים והגבלות הן לאפליקציה והן למודל העסקי .