जैसा कि प्रलेखन में कवर किया गया है, त्रिकोण प्रशंसक Direct3D 10 या बाद में समर्थित नहीं हैं ।
क्यों? क्या त्रिकोण प्रशंसकों के साथ काम करने में अंतर्निहित कमियां हैं?
जैसा कि प्रलेखन में कवर किया गया है, त्रिकोण प्रशंसक Direct3D 10 या बाद में समर्थित नहीं हैं ।
क्यों? क्या त्रिकोण प्रशंसकों के साथ काम करने में अंतर्निहित कमियां हैं?
जवाबों:
एक दशक से भी अधिक समय से हार्डवेयर विक्रेता त्रिभुज स्ट्रिप्स, अनुक्रमित त्रिकोण सूचियों और अनुक्रमित त्रिकोण स्ट्रिप्स को सबसे तेज़ आदिम प्रकारों के रूप में उपयोग कर रहे हैं। क्यों? स्ट्रिप्स में बेहतर कैश लोकलिटी होती है (पिछले 2 वॉट्स को पुन: उपयोग करने के बजाए लगातार पहले जंप करने के लिए) और इंडेक्सिंग हार्डवेयर वर्टेक्स कैश को वास्तव में काम करने की अनुमति देता है, साथ ही डुप्लिकेट वर्ट्स को खत्म करने के लिए अधिक प्रभावी होता है।
यदि सभी हार्डवेयर विक्रेताओं का कहना है कि "इसे इस तरह से करें और आप तेज़ होने जा रहे हैं" तो बहुत अच्छा मौका है कि यदि आप इसे इस तरह से करते हैं तो आप वास्तव में तेज़ होंगे।
तो डी 3 डी 10 + सिर्फ इसे औपचारिक करता है; यदि वह तेज़ पथ है तो वह पथ जिसका आप उपयोग करने जा रहे हैं और अन्य पथ मौजूद नहीं होंगे। यह डी 3 डी 10 + के एक डिजाइन दर्शन के साथ है, जो आपको तेज पथ पर रखना है और आपको वहां रखना है।
मुझे नहीं पता कि यह वास्तव में विकास को कितना प्रभावित करता है लेकिन इस तरह के किसी भी बदलाव के साथ, यह बताया गया है कि वे चालक डेवलपर्स को बेहतर ड्राइवर लिखने देंगे। GPU ड्राइवरों की जटिलता अद्भुत है, लेकिन मुझे यकीन नहीं है कि यह सटीक परिवर्तन बहुत मदद करेगा।
या तो मामले में, अपनी अधिकांश आवश्यकताओं के लिए त्रिकोण प्रशंसकों को बदलना संभव है (जैसे उत्तल बहुभुज प्रतिपादन) स्ट्रिप्स के साथ, अक्सर बेहतर परिणाम के साथ।
// A simplified API interface is presented for the purposes of having readable pseudocode
// Push( pos ) - pushes position data to make a new vertex
// TRIANGLE FANS:
for( i = 0; i < vertices.count; ++i )
Push( vertices[ i ] );
// TRIANGLE STRIPS:
for( i = 0; i < vertices.count; ++i )
{
if( i % 2 == 0 )
vertex = i / 2;
else
vertex = vertices.count - 1 - i / 2;
Push( vertices[ vertex ] );
}
EDIT: उल्लेख करना भूल गया - यदि आपको घुमावदार आदेश बदलने की आवश्यकता है - तो उस "यदि" (== से =!) में परीक्षण को उल्टा कर दें।
(यह विशेष सवाल एक राय का वारंट :)
विशेष रूप से, मैं इसकी वास्तुकला अंतरिक्ष यात्रीता कहूँगा। OpenGLES ने बहुत सारे सामान को 'कम जटिल' बनाने के लिए फेंक दिया, जबकि वास्तव में केवल प्रत्येक और प्रत्येक डेवलपर पर विरासत कोड के साथ जटिलता को आगे बढ़ा रहा है।
बेशक, यहां तक कि जब हार्डवेयर मूल रूप से इसका समर्थन नहीं करता है, तो स्ट्रिप या त्रिकोण में परिवर्तित करके लोगों को त्रिकोण प्रशंसकों के अनुक्रमण के साथ संगतता प्रदान करना तुच्छ होगा।
WebGL रन-टाइम और ऐसे में हर समय मान्य बफ़र्स और इस तरह के ट्रैक का ध्यान रखना पड़ता है, और ड्राइवर आसानी से लोगों का प्रबंधन कर सकते हैं , बावजूद इसके वे इसका समर्थन नहीं करते।
तो FFP से पूरी तरह से बाहर फेंकने और इस तरह एक बड़ी झुंझलाहट IMO है।