2011-09-22 7 views
7

जैसे अंतर्निहित वर्टेक्स गुणों पर मुझे glvxtexAttribPointer का उपयोग करके शेरटेड विशेषताओं को अंतर्निहित (gl_Vertex, gl_Color, आदि) के रूप में अपेक्षा करने वाले शेडर्स को भेजना होगा।glVertexAttribPointer gl_Vertex, gl_Normal

glVertexAttribPointer फ़ंक्शन प्रत्येक अंतर्निहित विशेषता के सूचकांक (या स्थान) को निर्दिष्ट करने की आवश्यकता है। मैं इसे एनवीडिया कार्यान्वयन पर कर सकता हूं क्योंकि प्रत्येक विशेषता का स्थान तय किया गया है ("कस्टम विशेषताओं" अनुभाग में http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/attributes.php देखें, हालांकि मुझे अति कार्यान्वयन में स्थानों के बारे में निश्चित नहीं है।

इसके अलावा, फ़ंक्शन glGetAttribLocation वापस आ जाएगा -1 जब साथ "gl_" शुरू करने की शुरुआत किसी भी विशेषता का स्थान प्राप्त करने के लिए।

मुझे लगता है कि मैं कुछ याद कर रहा हूँ कोशिश कर रहा है और इस एक छोटी सी समस्या है, लेकिन मैं नहीं अति के लिए सही समाधान मिल गया है।

+0

SO में आपका स्वागत है, मुझे उम्मीद है कि आपने [FAQ] (http://stackoverflow.com/faq) पढ़ लिया है। –

उत्तर

7

बिल्टिन विशेषता एरे glVertexAttribPointer के साथ सेट नहीं हैं, लेकिन glVertexPointer, glColorPointer, ... जैसे कार्यों के साथ। और आप इन्हेंपर कॉल करके सक्षम करते हैं GL_VERTEX_ARRAY, GL_COLOR_ARRAY, 0, glEnableVertexAttribArray की बजाय स्थिरांक के साथ।

जबकि एनवीडिया glVertexAttribPointer पर काम कर सकते हैं, अंतर्निहित विशेषताओं वाले कस्टम विशेषता इंडेक्स के उनके अलियासिंग के कारण, यह मानक अनुरूप नहीं है और मुझे यकीन है कि आप किसी अन्य हार्डवेयर विक्रेता पर इसकी अपेक्षा नहीं कर सकते हैं। इसलिए कस्टम गुणों के लिए glVertexAttribPointer और बल्टिन विशेषताओं के लिए glVertexPointer/glNormalPointer/... फ़ंक्शंस का उपयोग सुनिश्चित करने के लिए, मिलान सक्षम/अक्षम फ़ंक्शंस के साथ।

ध्यान रखें कि अंतर्निहित कार्यों के साथ अंतर्निहित विशेषताओं को किसी भी तरह से बहिष्कृत किया गया है। तो यदि आप आधुनिक ओपनजीएल कोड लिखना चाहते हैं, तो आपको वैसे भी अपने गुणों को परिभाषित करना चाहिए। लेकिन हो सकता है कि आपको विरासत के शेडरों का समर्थन करना पड़े या इस समय आगे संगतता की परवाह न करें।

+0

बढ़िया! यही वह था जिसे मैं संदेह कर रहा था। हालांकि, मैंने GlVertexAttribPointer का उपयोग करके इसे काम करने की कोशिश की क्योंकि ग्लो * पॉइंटर कॉल ओपनजीएल के नए संस्करणों में बहिष्कृत हैं। धन्यवाद!!! –

+4

@Pau बल्टिन विशेषताओं को वैसे भी बहिष्कृत किया जाता है, इसलिए यदि आप इनका उपयोग करते हैं, तो आप पहले से ही बहिष्कृत कार्यक्षमता का उपयोग करते हैं। और अगर जवाब मदद करता है, तो स्वीकार करने की सराहना की जाएगी। –

+0

धन्यवाद ईसाई, आपका जवाब वास्तव में बहुत उपयोगी रहा है। यह स्टैक ओवरफ्लो पर मेरा पहला सवाल था। –

संबंधित मुद्दे