2012-02-06 11 views
5

यह Switch shader program in WebGL से संबंधित है, लेकिन मैं सवाल फिर से पूछना अब मैं इस समस्या का एक स्पष्ट विचार है और क्या मैं पूछना चाहता हूँ करना चाहते थे।glUseProgram के बाद कौन सा राज्य खो गया/रीसेट हो गया है?

मैं अलग शेडर कार्यक्रमों के बीच स्विच करने की कोशिश कर रहा हूँ, लेकिन मैं जब एक ही प्रस्तुत करना में शेडर कार्यक्रम स्विचिंग चीजों को सही ढंग से प्रस्तुत करने के लिए प्राप्त करने के लिए नहीं कर पा रहे। मुझे लगता है कि glUseProgram() पर कॉल करने के बाद राज्य खो गया है या रीसेट हो गया है।

क्या राज्य खो दिया है या कि कॉल के बाद रीसेट है? दूसरे शब्दों में, glUseProgram() के बाद मुझे फिर से बांधने की क्या ज़रूरत है?

उत्तर

0

यह संभव है कि आपके वर्टेक्स सरणी और वर्टेक्स अट्रिब सरणी के अन्य कार्यक्रमों (जैसे this.locATex) में अलग-अलग स्थान हों, उदाहरण के लिए बनावट बाइंडिंग और नमूना वर्दी के साथ समान समस्याएं हो सकती हैं। आपको उन अट्रिब स्थानों और 'बनावट इकाई वर्दी' से पूछने की ज़रूरत है, जिन्हें आपको प्रत्येक प्रोग्राम के लिए अलग-अलग शुरू करने की आवश्यकता है, ड्राइंग से पहले अपने सरणी और बनावट को बांधें। दूसरी छोर पर आगे की बाइंडिंग भी टूट सकती है, जैसे खंड डेटा स्थान। लेकिन मेरा सुझाव है कि नई समस्याओं का आविष्कार करने से पहले आप कुछ और कोड प्रदान करते हैं :-)।

+1

सलाह के लिए धन्यवाद, लेकिन मैं और अधिक सामान्य सलाह के लिए देख रहा था, वे अपने मूल्य को बनाए रखने की तरह मैं वर्दी फिर से निर्धारित करने की आवश्यकता है या क्या करते हो? क्या विशेषता या वर्दी स्थान एक दिए गए कार्यक्रम के लिए अपना मूल्य बनाते हैं? क्या टेक्स्टिंग को पुन: सक्षम करने की आवश्यकता है? और इसी तरह। – AshleysBrain

+0

प्रोग्राम कनेक्ट होने के बाद अटारी स्थान और वास्तविक वर्दी स्थान और मान बने रहते हैं। यद्यपि वर्दी बफर हालांकि अधिक कार्यक्रमों के लिए बाध्य किया जा सकता है। टेक्सचरिंग को पुन: सक्षम नहीं किया जाना चाहिए, क्योंकि आप निश्चित फ़ंक्शन पाइपलाइन का उपयोग नहीं कर रहे हैं। – Sam

+0

एक बनावट इकाई कई लगाव अंक हैं, तो आप एक 2 डी और उदाहरण के लिए एक 3 डी बनावट बाँध और एक उचित नमूना वर्दी का उपयोग कर उन्हें दोनों में से किसी का उपयोग कर सकते हैं। – Sam

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