2009-04-06 7 views
5

निम्न स्निपेट एक ग्रे वर्ग खींचता है।मैं ओपनजीएल में वर्टेक्स की अस्पष्टता कैसे सेट करूं?

glColor3b(50, 50, 50); 

glBegin(GL_QUADS); 
glVertex3f(-1.0, +1.0, 0.0); // top left 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 

मेरे आवेदन में, इस एकल वर्ग के पीछे एक रंगीन घन मौजूद है।

वर्ग (और केवल यह वर्ग) अपारदर्शी बनाने के लिए मुझे किस फ़ंक्शन का उपयोग करना चाहिए?

+0

संबंधित http://stackoverflow.com/questions/1617370/opengl-alpha-transparency –

उत्तर

9

प्रति रंग सेट कर सकते हैं init समारोह में, इन दो पंक्तियों का उपयोग करें:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

और अपने कार्य प्रस्तुत करना है, यह सुनिश्चित करें कि glColor4f है glColor3f के बजाय उपयोग किया गया, और 4 वें तर्क को अस्पष्टता के स्तर पर सेट किया गया।

glColor4f(1.0, 1.0, 1.0, 0.5); 

glBegin(GL_QUADS); 
glVertex3f(-1.0, +1.0, 0.0); // top left 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 
2

glColor4f (फ्लोट आर, फ्लोट जी, फ्लोट बी, फ्लोट अल्फा);
(आपके मामले में शायद clColor4b)
यह सुनिश्चित कर लें कि मिश्रण मिश्रण सक्षम है।

2

उपयोग glColor4 बजाय glColor3 (आप गैर अल्फा afterwads करने के लिए रंग है, जो पुराने vertexcolor बचाने के लिए एक glGet * शामिल हो सकता है पुनर्स्थापित करने के लिए है)। उदाहरण के लिए:

glBlendFunc(GL_SRC_ALPHA,GL_ONE); 
glColor4f(1.0f,1.0f,1.0f,0.5f); 
+0

धन्यवाद। हम्म, मेरे लिए काम नहीं कर रहा प्रतीत होता है, मैं गलत क्या कर सकता हूं? –

2

आप शीर्ष

glBegin(GL_QUADS); 
glColor4f(1.0, 0.0, 0.0, 0.5); // red, 50% alpha 
glVertex3f(-1.0, +1.0, 0.0); // top left 
// Make sure to set the color back since the color state persists 
glVertex3f(-1.0, -1.0, 0.0); // bottom left 
glVertex3f(+1.0, -1.0, 0.0); // bottom right 
glVertex3f(+1.0, +1.0, 0.0); // top right 
glEnd(); 
संबंधित मुद्दे