2013-12-11 12 views
9

Farklı görünümlere bir 3D sahne oluşturmak istiyorum. Bu görünüm alanları böyle kendi menüler "altpencerelere" dahildir: enter image description hereQt 5'li Birden Çok OpenGL Viewports

Her görüntü alanı olabilir:

  • olarak boyutu;
  • Gizli;
  • Tam ekranda gösteriliyor;
  • Uygulamanın başka bir bölümüne taşındı.

yüzden böyle bir şey olabilir: benim OpenGL widget'ı içeren bir Qt Widget içine her görünüm gömmek için daha iyi olduğuna inanıyoruz enter image description here

(doğru mu?). Yani 3D sahnemi birkaç Qt OpenGL Widget'ına nasıl aktarabilirim?

+0

Merak ediyorum, Qt parçacığı tüm "Görünüm", "Gölgelendirme", "Aydınlatma" seçeneklerini tek başına sağlıyor mu? Bu widget'ın adı nedir? – sonofrage

cevap

4

benim OpenGL widget'ı içeren bir Qt Widget içine her görünüm gömmek için daha iyi olduğuna inanıyoruz (doğru mu?). Bu yüzden birkaç Qt OpenGL Widget'lar içine benim 3D sahne işlemek nasıl?

initializeGL ve paintGL geçersiz kılma yanında QGlWidget's detailed description açıklandığı gibi

, ayrıca resizeGL yöntemini geçersiz kılmak gerekir. ResizeGL yönteminde, görünüm bağlantı noktasını ve önyüklemeyi ayarlamanız gerekir.

Bundan sonra, bu yalnızca widget'ları ekranda oluşturma ve yerleştirme meselesidir. Onlar birbirinden tamamen bağımsız olabilirler ve her biri için farklı bir şekilde frustum ayarlayabilirsiniz.

Bu widget'lar arasında opengl içeriğini paylaşmak istediğiniz için, OpenGL context sharing'a bakın. Bunu yapmak için, OpenGL bağlam nesnesini QGLWidget yapıcısının ilk parametresi olarak geçirmeniz gerekir.

+1

Senin anser için teşekkürler. Eğer 8 QGlWidget'im varsa, bir 3B sahneyi render edersem, o zaman OpenGL (VAOs, VBOs, vb.) 'I sadece bir kez başlatmalıyım. O zaman 8 farklı nesne arasında başlatmayı (ve oluşturmayı?) Nasıl "paylaşırım?" – Korchkidu

+3

@Korchkidu Ortak bir OpenGL bağlamı kullanarak. Bkz. Http://qt-project.org/doc/qt-5.0/qtgui/qopenglcontext.html#context-resource-sharing –

+0

@Korchkidu Ayrıca, belirli bir bağlam nesnesine sahip QGLWidget oluşturmalısınız: http: // qt-project .org/doc/qt-4.8/qglwidget.html # QGLWidget-2 –