2009-06-25 15 views
10

I OpenGL ama üstünde görünür bir dikdörtgenin altında görünmelidir bazılarını kullanarak dikdörtgenler bir dizi çizmek çalışıyorum. Derinlik Tampon OpenGL

Her beraberlik başında gluLookAt kullanıyorum

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

kullanıyorum derinlik işlevini etkinleştirmek için. İşte sorunun bir görüntüsü. Mavi dikdörtgenler yeşil dikdörtgenlerden daha yüksek y değerleri ile konumlandırılmıştır.

alt text

yeşil dikdörtgenler bazı maviler üstünde görünür üst resimde de görebileceğiniz gibi

alt text . Bunun neden olduğu ve bunu düzeltmek için neler yapabileceğimin bir fikri var mı? Dikdörtgenleri çizdiğim siparişle ilgisi olabilir mi?

cevap

12

Renk tamponunuzu temizlediğinizde, derinlik arabelleğini de temizler misiniz?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

görüntü düzeltmek olmadığından emin misin? Bu yeşil karelerden bazıları aslında
mavi olanlardan daha yüksek görünmektedir.

7

Kullandığınız pencere sistemlerinde derinlik arabelleğini etkinleştirdiniz mi? Örneğin, glut kullanarak şunları yapmanız gerekebilir: glutInitDisplayMode (GLUT_DEPTH | ....);

+0

Pencereleme araç takımım için qt kullanıyorum. Böyle bir işlevin farkında değilim. Simmilar'ı glut'un fonksiyonuna çağırmam gerektiğini biliyor musun? – DHamrick

+2

'QGLFormat' nesnesinde, derinlik arabelleğinin“ depth ”ve“ setDepth ”yöntemleriyle etkinleştirilip etkinleştirilmediğini kontrol edebilmeniz gerekir. – ravuya

+1

Teşekkürler. Bu cevap günümü kurtardı. – hanno