2012-07-21 16 views
14

मैं शेडर्स के साथ एक रेखा (संभावित रूप से रंगीन) कैसे बनाऊंगा? मैं प्रोग्राम करने योग्य पाइपलाइन का उपयोग कर रहा हूं और मैं ओपनजीएल के साथ शुरुआत कर रहा हूं। मुझे शेडर्स के साथ लाइनों को आकर्षित करने के बारे में एक उदाहरण नहीं मिल रहा है .. मुझे लगता है कि मुझे शेडर में वीएओ (वर्टिस एरे ऑब्जेक्ट) लोड करना होगा, लेकिन फिर क्या? मुझे किस काम का उपयोग करना चाहिए और कैसे?ओपनजीएल: शेडर्स के साथ लाइनें

+0

क्या आप त्रिकोण खींचने के बारे में जानते हैं? यह वास्तव में कोई अलग नहीं है, आप केवल GL_TRIANGLES के बजाय GD_LINES निर्दिष्ट करते हैं GlDrawArrays/glDrawElements – Tim

+0

कोई उदाहरण कोड? –

उत्तर

9

सबसे पहले, शेडरप्रोग्राम का उपयोग करें सेट करें। फिर मोड = GL_LINES या अन्य लाइन ड्राइंग मोड में से एक के साथ glDrawArrays (या यदि आपका डेटा अनुक्रमित किया गया है) का उपयोग करके लाइनें खींचे।

यहां प्रत्येक छोर में अलग-अलग रंग के साथ 2 डी लाइनों के लिए एक कोड उदाहरण है। यदि छायांकन मोड चिकनी करने के लिए सेट किया गया है, तो ओपनजीएल लाइन के साथ रंगों को अलग करेगा।

struct LineSegment_t 
{ 
    float x1, y1; 
    float r1,g1,b1,a1; 
    float x2, y2; 
    float r2,g2,b2,a2; 
}; 

int num_verts = lines.size()*2; 
glBindVertexArray(line_vao); // setup for the layout of LineSegment_t 
glBindBuffer(GL_ARRAY_BUFFER, LineBufferObject); 
glBufferData(GL_ARRAY_BUFFER, sizeof(LineSegment_t)/2 * num_verts, &lines[0], GL_DYNAMIC_DRAW); 
glDrawArrays(GL_LINES, 0, num_verts); 

आप अधिक लचीलेपन की जरूरत है, तो आप लाइन अंतिमबिंदुओं से एक आयत (4 अंक) बनाने के द्वारा त्रिकोण का उपयोग कर लाइनों आकर्षित कर सकते हैं। 2 डी में आप वांछित रेखा से लाइन सामान्य/लंबवत (-y, x) का उपयोग करके एंडपॉइंट्स का अनुवाद करके 4 अंक बना सकते हैं। 3 डी में आपको यह सुनिश्चित करने की ज़रूरत है कि त्रिकोण को बिलबोर्डिंग के रूप में कैमरे के साथ गठबंधन किया गया हो।

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