में समन्वय के रूप में इंडेक्स का उपयोग करें, मैं एक टाइमरीज़ व्यूअर को कार्यान्वित करना चाहता हूं जो उपयोगकर्ता को ज़ूम और आसानी से पैन करने की अनुमति देता है।ओपनजीएल
मैंने पहले कुछ तत्काल मोड ओपनएल किया है, लेकिन अब इसे वीबीओ के पक्ष में हटा दिया गया है। वीबीओ के सभी उदाहरण मैं प्रत्येक बिंदु के स्टोर XYZ निर्देशांक पा सकते हैं।
मुझे संदेह है कि मुझे पैन के दौरान एक फ़्रेमेट प्राप्त करने के लिए वीआरएएम में अपना सभी डेटा रखने की आवश्यकता है जिसे "चिकनी" कहा जा सकता है, लेकिन मेरे पास केवल वाई डेटा (आश्रित चर) है। एक्स एक स्वतंत्र चर है जिसे इंडेक्स से गणना की जा सकती है, और जेड स्थिर है। अगर मुझे एक्स और जेड स्टोर करना है तो मेरी मेमोरी आवश्यकताएं (बफर आकार और सीपीयू-> जीपीयू ब्लॉक ट्रांसफर दोनों) तीन गुना हैं। और मेरे पास लाखों लाखों डेटा बिंदुओं के माध्यम से उपयोगकर्ता पैन कर सकते हैं, इसलिए स्मृति उपयोग गैर-तुच्छ होगा।
क्या 1-डी वर्टेक्स सरणी ड्राइंग करने के लिए कुछ तकनीक है, जहां इंडेक्स को अन्य समन्वय के रूप में उपयोग किया जाता है, या 1-डी सरणी (शायद बनावट में?) संग्रहीत किया जाता है और उत्पन्न करने के लिए शेडर प्रोग्राम का उपयोग करता है XYZ? मैं इस धारणा के तहत हूं कि स्केलिंग और अनुवाद को लागू करने के लिए मुझे नए फिक्स्ड-फीचर-कम पाइपलाइन मॉडल के तहत एक साधारण शेडर की आवश्यकता है, इसलिए यदि मैं एक्स और जेड निर्देशांक की पीढ़ी और वाई के स्केलिंग/अनुवाद को जोड़ सकता हूं आदर्श।
क्या यह भी संभव है? क्या आप किसी भी नमूना कोड के बारे में जानते हैं जो यह करता है? या आप कम से कम मुझे कुछ छद्म कोड दे सकते हैं कि जीएल किस क्रम में कॉल करने के लिए काम करता है?
धन्यवाद!
संपादित करें: यकीन है कि यह स्पष्ट है करने के लिए यहां बराबर तत्काल मोड कोड है, और शिखर सरणी कोड:
// immediate
glBegin(GL_LINE_STRIP);
for(int i = 0; i < N; ++i)
glVertex2(i, y[i]);
glEnd();
// vertex array
struct { float x, y; } v[N];
for(int i = 0; i < N; ++i) {
v[i].x = i;
v[i].y = y[i];
}
glVertexPointer(2, GL_FLOAT, 0, v);
glDrawArrays(GL_LINE_STRIP, 0, N);
ध्यान दें कि v[]
दो बार y[]
का आकार है।
धन्यवाद। मुझे लगता है कि मैं अस्पष्ट हूं कि ओपनजीएल जानता है कि मैं वर्टेक्स की अनुक्रमणिका का मतलब 'coord_X' चाहता हूं। –
@ बेन वोगेट: मुझे याद आया कि शुरुआत में, क्षमा करें :) उत्तर अब तय किया गया है (gl_VertexID का उपयोग करके)। – kvark
धन्यवाद, जो अब बहुत अधिक समझ में आता है। और मैं इस गड़बड़ी को प्रस्तुत करने के लिए 'glDrawArrays' का उपयोग कर सकता हूं? मैं पूछ रहा हूं क्योंकि ['glDrawArrays'] के लिए मैनपेज (http://www.opengl.org/sdk/docs/man/xhtml/glDrawArrays.xml) कहता है "यदि GL_VERTEX_ARRAY सक्षम नहीं है, तो कोई ज्यामितीय प्राइमेटिव उत्पन्न नहीं होता है। " क्या यह ओपनजीएल 3 दुनिया में लागू नहीं होता है जहां शेडर द्वारा वर्टेक्स स्थान उत्पन्न होते हैं? –