2011-06-06 9 views
13

जैसा कि शीर्षक कहता है, मैं वेबग्ल वर्टेक्स शेडर्स में vector_array[foo] (फू इन-रेंज और पूर्णांक मानता हूं) नहीं कर सकता, सही?वेबल शेडर्स में परिवर्तनीय सरणी अनुक्रमणिका संभव नहीं है?

क्या बनावट सबसे अच्छा विकल्प है, या क्या एक वर्कअराउंड या लुकअप टेबल की नकल करने के लिए कुछ बेहतर तरीका है?

उत्तर

11

http://www.khronos.org/registry/webgl/specs/latest/#DYNAMIC_INDEXING_OF_ARRAYS "वेबजीएल केवल निरंतर अभिव्यक्तियों, लूप इंडेक्स या संयोजन के साथ गतिशील अनुक्रमण की अनुमति देता है। केवल अपवाद वर्टेक्स शेडर्स में समान पहुंच के लिए है, जिसे किसी भी अभिव्यक्ति का उपयोग करके अनुक्रमित किया जा सकता है।"

क्या आपने इसे आजमाया? अगर यह काम नहीं करता है, तो कुछ विकल्प हैं।

यदि आपके पास मूल्यों की एक छोटी संख्या है, तो अन्यथा ठीक काम कर सकता है। AFAIK समान मूल्यों को किसी भी तरह से रजिस्टरों में लोड किया जा रहा है, इसलिए उन पर गणित के एक दर्जन चक्र करने से आपके शेडर को धीमा नहीं किया जा रहा है।

बड़ी संख्या में मूल्यों के लिए, बनावट आपकी सबसे अच्छी शर्त है।

+10

से किसी भी संकलन त्रुटि नहीं मिलता है एक समाधान नहीं है: '/ * सूचकांक चर दिया मैं है */के लिए (int x = 0; x

-1

मैं इसे परीक्षण नहीं किया है, लेकिन मैं निम्नलिखित

//index as a float 
attribute lowp float vColorIndex; 
//the array 
uniform vec4 Colors[16]; 

//type cast the float in an int 
int index = int(vColorIndex); 
//use index 
vec4 col = Colors[index]; 
वहाँ
+0

यह रनटाइम पर विफल रहता है। – jes5199

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