שאלות לגבי DirectX

tseliot

New member
אוקי אז ככה:

א. איך מתעסקים עם Alpha (לא של Sprites, של Vetrices)? יצרתי מעין פוליגון תלת מימדי שנראה ועובד סבבה, אבל כשאני משנה את הצבע שלו מ System.Drawing.Color.Fromargb(0,255,0,0) ל System.Drawing.Color.Fromargb(255,255,0,0) אני לא רואה שינוי... (כמובן שאחרי זה אני משתמש בפונקציה ToArgb() כדי להמיר את הצבע חזרה לint) ב. כדי ליצור צורות כמו עיגול אני למעשה צריך ליצור כמות גדולה של משולשים שיהיו "חתיכות עוגה" שביחד יצרו מעין מעגל? הכל-הכל בנוי ממשולשים? אין כמה פונקציות בילט-אין בשביל לעשות את החיים יותר קלים? תרחמו עלי, הHelp בSDK לא מי יודע מה...
 

voguemaster

New member
באיזה שפה אתה עובד ? ../images/Emo2.gif

בכל מקרה, תנסה ערכים שונים של Alpha, לאו דווקא 255 (אולי 255 זה דווקא opacity!). אם בצורה שאתה עובד שימוש באלפא הוא פשוט עד כדי קביעת הצבע אז סבבה אבל משהו אומר לי שזה לא כזה קליל. לא הבנתי אבל מה הקשר ל-vertices. וורטקסים יכולים לקבל מידע צבע זה נכון אבל השאלה היא האם אתה עובד עם וורטקסים שאתה מספק את הצבע בשבילם או שהמנוע מחשב את הצבע שלהם (בהתאם לכמה גורמים). בקיצור אולי אם תעלה לפה קצת קוד אנשים יוכלו לתת לך עצה בנושא.
 

pixelparts

New member
אתה צריך גם להשתמש בהם

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

misterG

New member
תשובה

הסיבה לכך היא, כמובן SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE,TRUE); SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA); הוספת שתי שורות אלו לאחר איתחול D3D תאפשר יצירת ערכי alpha נראים לעין. וכן, הכל בנוי ממשולשים. הכל-הכל. הסיבה לכך היא שלא ניתן להשתמש במערכות לינארית (מטריצות) על צורות גיאומטריות ממעלה גבוהה מ-1 (כמו עיגולים, פרבולות, עקומות bezier וכו'.)
 

tseliot

New member
לגבי המשולשים...

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

misterG

New member
אממ..

בעיקרון אין פונקציה מובנית ב-DX שעושה זאת (אבל אפשר למצוא באינטרנט מחלקות ופונקציות שעושות את זה). בחלק מהגרסאות של DX יש אפשרות ליצור כמה צורות פשוטות, הן נמצאות ב- DirectX Utility Library מה שנקרא גם D3DX. הסיבה לכך היא שכשעושים משחק גדול, בונים את האובייקטים בתוכנות כמו 3DS Max ואז טוענים אותם לתוך המשחק.
 
למעלה