2012-06-22 20 views
28

में वर्दी बनाम विशेषताओं में मेरे पास कुछ पैरामीटर सीपीयू से GPU तक पारित किए जा रहे हैं जो सभी टुकड़ों के लिए स्थिर हैं लेकिन जो प्रत्येक फ्रेम पर बदलते हैं (मैं जीएलएसएल ईएस 1.1 का उपयोग कर रहा हूं)। क्या मुझे ऐसे मानों के लिए वर्दी या विशेषताओं का उपयोग करना चाहिए? गुण वर्टेक्स से वर्टेक्स में भिन्न हो सकते हैं, इसलिए मेरा अंतर्ज्ञान यह है कि पूरे फ्रेम में स्थिर मानों के गुणों का उपयोग अक्षम होगा। हालांकि, मैंने पढ़ा है कि वर्दी मूल्यों के लिए हैं जो "अपेक्षाकृत बार-बार" बदलती हैं, यह बताती है कि प्रत्येक फ्रेम पर वर्दी बदलना अक्षम हो सकता है।जीएलएसएल ईएस

हार्डवेयर के मामले में, मुझे आईफोन 4 एस के अनुकूलन में सबसे अधिक दिलचस्पी है।

+0

क्या आप अपनी कुछ रीडिंग सूचीबद्ध कर सकते हैं? – Luca

+1

रोस्ट और लिसा-केन द्वारा "ओपनजीएल छायांकन भाषा" और मुन्ची, गिन्सबर्ग और श्राइनर द्वारा "ओपनजीएल ईएस 2.0"। (जाहिर है पूर्व पूर्व ईएस के लिए विशिष्ट नहीं है) –

उत्तर

32

मैं वर्दी के लिए वोट देता हूं।

कारणों में से एक कारण पहले से ही आपके प्रश्न में समझाया गया है: वर्दी प्रत्येक चरम/टुकड़े के लिए स्थिरांक हैं।

अन्य कारणों से विशेषताओं के खिलाफ वर्दी को पसंद करते हैं होगा:

  • उपलब्ध स्लॉट की संख्या (आप 16 गुण अनुमति है, लेकिन कई और अधिक वर्दी)
  • GLSL compilers वर्दी मूल्य से निपटने का अनुकूलन कर सकते
  • लंबे vertex सरणी पर कम डेटा स्ट्रीमिंग, प्रति चरणीय कम विशेषता का मतलब बेहतर प्रदर्शन है।
  • वर्दी और टुकड़े के टुकड़े
  • वर्दी संरचनाओं और सरणी के बीच अलग-अलग विशेषताओं को परिभाषित किए बिना, टुकड़े टुकड़े के शेडर्स में वर्दी उपलब्ध हैं, जिससे अधिक पठनीय कोड हो सकता है।