2009-06-25 16 views
10

में गहराई बफर ओपनजीएल का उपयोग करके आयताकारों की एक श्रृंखला खींचने की कोशिश कर रहा हूं लेकिन कुछ आयत के नीचे दिखाई देने वाले कुछ दिखाई देते हैं।ओपनजीएल

गहराई समारोह मैं

glClearDepth(1.0f); 
glDepthFunc(GL_LESS); 
glEnable(GL_DEPTH_TEST); 

मैं प्रत्येक ड्रा की शुरुआत में gluLookAt उपयोग कर रहा हूँ का उपयोग कर रहा सक्षम करने के लिए। समस्या की एक छवि यहां दी गई है। नीले आयतों को हरे आयतों की तुलना में उच्च वाई मानों के साथ रखा जाता है।

alt text alt text

आप शीर्ष छवि हरी आयतों में से कुछ नीले ऊपर दिखाई देते हैं में देख सकते हैं। कोई विचार यह क्यों हो रहा है और इसे ठीक करने के लिए मैं क्या कर सकता हूं? क्या यह आदेश के साथ कुछ करने के लिए हो सकता है कि मैं आयतों को चित्रित कर रहा हूं?

उत्तर

12

जब आप अपना रंग बफर साफ़ करते हैं तो क्या आप गहराई बफर को भी साफ़ कर रहे हैं?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

क्या आप वाकई छवि सही नहीं है कर रहे हैं? उन हरे वर्गों में से कुछ वास्तव में
नीले रंग की तुलना में अधिक दिखते हैं।

7

क्या आपने जो भी विंडोिंग सिस्टम उपयोग कर रहे हैं उसमें गहराई बफर सक्षम किया था? उदाहरण के लिए, ग्लूट का उपयोग करने के लिए आपको इसकी आवश्यकता हो सकती है: glutInitDisplayMode (GLUT_DEPTH | ....);

+0

मैं अपने विंडोिंग टूलकिट के लिए qt का उपयोग कर रहा हूं। मुझे इस तरह के किसी भी समारोह से अवगत नहीं है। क्या आपको पता है कि अगर कोई है तो मुझे ग्लूट के फ़ंक्शन के साथ समान कॉल करना चाहिए। – DHamrick

+2

'QGLFormat' ऑब्जेक्ट में, आपको यह जांचने में सक्षम होना चाहिए कि गहराई बफर 'गहराई' और 'setDepth' विधियों के साथ सक्षम है या नहीं। – ravuya

+1

धन्यवाद। उस जवाब ने मेरा दिन बचाया। – hanno