नहीं खींचता है मैं Vertex Arrays सामान को आजमा रहा हूं लेकिन किसी कारण से glDrawElements कमांड मेरे लिए कुछ भी नहीं खींचता है। मैं glBegin/glEnd और glDrawElements का उपयोग करके आकर्षित कर सकता हूं, लेकिन glDrawElements काम नहीं करता है।ओपनजीएल: glDrawElements
इन सरणियों निर्माता में स्थापित हो:
double points[100];
GLint indices[50];
for (int i=0; i < 50; i++){
points[2*i] = radius * cos(i*2*PI/50);
points[2*i + 1] = radius * sin(i*2*PI/50);
indices[i] = i;
}
कार्य glArrayElement के साथ ही अंक सरणी का उपयोग कर कोड: कोड स्निपेट है
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glBegin(GL_POLYGON);
for (int i=0; i < 50; i++){
glArrayElement(i);
}
glEnd();
}
भी काम कर कोड, अंक सरणी का उपयोग कर, सूचकांक सरणी के माध्यम से उपयोग किए गए विशिष्ट सूचकांक:
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glBegin(GL_POLYGON);
for (int i=0; i < 50; i++){
glArrayElement(indices[i]);
}
glEnd();
}
गैर-कार्य कोड , glDrawElements का उपयोग करने का प्रयास:
void GLCircle::draw()
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_DOUBLE, 0, points);
glDrawElements(GL_POLYGON, 4, GL_INT, indices);
}
कोई सलाह? यह पूरी तरह से आवश्यक मुझे इस बिंदु पर इसका इस्तेमाल करने के लिए नहीं है, लेकिन यह परेशान है कि यह काम नहीं करता है ...
प्रयास करें "4 [सूचकांक] पैरामीटर जहां सूचकांक जमा हो जाती है के लिए सूचक है।" NOOOOOO! सूचकांक को बफर में संग्रहीत किया जाना चाहिए जो वर्तमान में GL_ELEMENT_ARRAY_BUFFER से जुड़ा हुआ है। चौथा पैरामीटर इंडेक्स सरणी में ऑफ़सेट पॉइंटर है। – IceCool
मैं आधिकारिक दस्तावेज़ों का उद्धरण दे रहा था .. http://www.opengl.org/sdk/docs/man/xhtml/glDrawElements.xml – iKlsR
ओह हाँ, ठीक है। यह वास्तव में एक सूचक है जहां सूचकांक संग्रहीत किए जाते हैं।लेकिन सामान्य सी पॉइंटर के विपरीत, यह सिस्टम मेमोरी में डेटा को इंगित नहीं करता है, इसके बजाय यह तत्व बफर में डेटा को इंगित करता है (इसलिए 0x0 आईबी में पहला तत्व है)। – IceCool