यह एक नोब सवाल हो सकता है। जैसा कि मैं इसे समझता हूं, glBindAttribLocation (..., एएए, ...) एएए की स्थान आईडी पर प्रोग्राम के भीतर एक विशेषता को बाध्य करेगा, जब तक एएए अद्वितीय है। अगर मैं निम्नलिखित कोड है:GLES2 क्या glbindAttribLocation() आवश्यक है?
glBindAttribLocation(..., 0, "XXX");
glBindAttribLocation(..., 1, "YYY");
इस स्थान आईडी 0 और 1. करने के लिए अपने दो चर के लिए बाध्य होगा मैं तो कहेंगे:
glBindBuffer(GL_ARRAY_BUFFER, VBId);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBId);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, 0);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void *) 0 + sizeof(float) * 3);
glEnableVertexAttribArray(1);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
इस बिंदु तक, मैं समझता हूँ कि की आईडी 0 और 1 को पहले पैरामीटर के रूप में glVertexAttribPointer() में पास किया गया है।
क्या यह मानना सुरक्षित होगा कि अगर मैंने glGetAttribLocation() कॉल के माध्यम से गुणों (उपर्युक्त) के स्थान आईडी प्राप्त की हैं, जैसे कि आईडी वापस लौटाए गए 0 और 1 के बजाय 5 और 6 थे, तो क्या मैं 5 पास कर सकता था और 6 में glvertexAttribPointer() और glEnableVertexAttribArray() 0 और 1 के बजाय ??