../images/Emo4.gif שאלה דחופה ב-DirectX8
נתקלתי בבעייה: אני מנסה להשיג את הנתונים מה-ZBuffer שלי (אחרי הרינדור). אני משיג את הבאפר בעזרת IDirect3DDevice8::GetDepthStencilSurface ומנסה לנעול אותו כדי לקבל נתונים בעזרת IDirect3DSurface8::LockRect. אני מקבל תשובה מהדיבאגר שסוג ה-Surface חייב להיות D3DFMT_D16_LOCKABLE. זה כמובן לא הדיפולט של ה-Surface (הדיפולט הוא D3DFMT_D16). אז אני חוזר לשלב האתחול ויוצר Surface חדש משלי בעזרת IDirect3D::CreateDepthStencilSurface ומגדיר את הפורמט D3DFMT_D16_LOCKABLE כמו שצריך. עד כאן הכל בסדר, אבל כשאני מנסב לקבוע אותו כיעד לרינדור בעזרת IDirect3DDevice8::SetRenderTarget (פרמטר שני הוא פוינטר ל-Surface ה-DepthStencil) אני מקבל מהדיבאגר תשובה שהפורמט של ה-DepthStencil Surface (כזכור, D3DFMT_D16_LOCKABLE) לא תואם לפורמט ידע הרנדרינג הראשי (הפרמטר הראשון ל- SetRenderTarget). ניסיתי את כל הפורמטים האפשריים ל-RenderTarget הראשי, ואף אחד לא מקבל את ה-DepthStencil surface בפורמט הרצוי. אז איך מוציאים את נתוני ה-ZBuffer אם אי אפשר לנעול אותו? אולי יש דרך אחרת שאני לא יודע עליה? אנא עזרתכם!! תודה, ציףציפור.
נתקלתי בבעייה: אני מנסה להשיג את הנתונים מה-ZBuffer שלי (אחרי הרינדור). אני משיג את הבאפר בעזרת IDirect3DDevice8::GetDepthStencilSurface ומנסה לנעול אותו כדי לקבל נתונים בעזרת IDirect3DSurface8::LockRect. אני מקבל תשובה מהדיבאגר שסוג ה-Surface חייב להיות D3DFMT_D16_LOCKABLE. זה כמובן לא הדיפולט של ה-Surface (הדיפולט הוא D3DFMT_D16). אז אני חוזר לשלב האתחול ויוצר Surface חדש משלי בעזרת IDirect3D::CreateDepthStencilSurface ומגדיר את הפורמט D3DFMT_D16_LOCKABLE כמו שצריך. עד כאן הכל בסדר, אבל כשאני מנסב לקבוע אותו כיעד לרינדור בעזרת IDirect3DDevice8::SetRenderTarget (פרמטר שני הוא פוינטר ל-Surface ה-DepthStencil) אני מקבל מהדיבאגר תשובה שהפורמט של ה-DepthStencil Surface (כזכור, D3DFMT_D16_LOCKABLE) לא תואם לפורמט ידע הרנדרינג הראשי (הפרמטר הראשון ל- SetRenderTarget). ניסיתי את כל הפורמטים האפשריים ל-RenderTarget הראשי, ואף אחד לא מקבל את ה-DepthStencil surface בפורמט הרצוי. אז איך מוציאים את נתוני ה-ZBuffer אם אי אפשר לנעול אותו? אולי יש דרך אחרת שאני לא יודע עליה? אנא עזרתכם!! תודה, ציףציפור.