"Üstte" veya 3B bir dünya oluşturulmuş bir 2B arabirim oluşturmamı gerektiren bir proje üzerinde çalışıyorum. Diğer bazı forumlarda, iş için "GluOrtho2D()" yi kullanabileceğinizi ve işiniz bittiğinde GluPerspective'a() dönebileceğinizi okudum. Tek şey, yazdığım test kodum, sadece 2D dünyayı değil, 3 boyutlu dünyayı gösteriyor. Bununla birlikte, 3B oluşturma kodunu devre dışı bıraktığımda, quad olması gereken yerde görünür. Kodu aşağıya yazdığım sadece açık ifadeleri açmak için kodu kısaltdım. Kod, Pyglet kütüphanesi kullanılarak Python'da yazılmıştır.3D openGL dünyasında 2B arabirim oluşturma ile ilgili sorun
sahne başlatma kodu:
glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/height, .1, 10000.)
glMatrixMode(GL_MODELVIEW)
glClearDepth(1.0)
glShadeModel(GL_FLAT)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
çerçeve oluşturma kodu. builder.buildMap() yapılan çağrı 3D sahneyi oluşturur ve glBegin-glEnd çifti 2 boyutlu dörtlü çizer:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
stage.set3DMode(window.width, window.height)
builder.buildMap()
stage.set2DMode(window.width, window.height)
glBegin (GL_QUADS)
glVertex2i(0, 0)
glVertex2i(0, 200)
glVertex2i(200, 200)
glVertex2i(200, 0)
glEnd()
stage.set3DMode fonksiyonu:
glDisable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, width, 0, height)
glMatrixMode(GL_MODELVIEW)
ve stage.set3DMode fonksiyonu :
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/float(height), .1, 10000.)
glMatrixMode(GL_MODELVIEW)
Umarım birisi benim hatama işaret edebilir! Ve bana yardımcı olduğunuz için teşekkür ederim :)
Mükemmel! Bu düzeltildi. Çok teşekkür ederim! – Bartvbl