2016-03-27 7 views
0

ile ön arabelleğe nasıl çizilir Uygulamam QT 5.6.0 kullanarak Qt 5.3.2 QOpenGLWidget kullanarak QGLWidget yükseltme yapıyorum. Uygulama yükseltildi ve iyi çalışıyor. Ancak, hata ayıklama araçlarını korumaya çalışıyorum. Geliştirme ortamım Visual Studio 2013'tür ve son uygulama çift arabellekli grafik kullanıyor olsa da, hata ayıklama amacıyla hata ayıklayıcısından etkileşimli olarak çağırabileceğim, ön arabelleğe girebileceğim ve çıktıyı ekranda görebileceğim bazı yöntemler yazdım. QOpenGLWidget çerçeve arabelleğe çizdiği için bu işlevler artık çalışmıyor. Ayrıca, glDrawBuffer (GL_FRONT) çağırdığımda çizmeye çalışmadan önce bile 1280'e (geçersiz enum) glError oluşturur. Ek veri parçası - glGetIntegerv (GL_DRAW_BUFFER, & my_val), GL_COLOR_ATTACHMENT0 olan 0x8ce0 değerini döndürür ve amacım GL özelliklerini yalnızca 2.0 ile sınırlamak olsa da GL 3.0 ile anlam ifade eder.QOpenGLWidget

+0

QOpenGLWidget bir ara FBO'yu çizer, dolayısıyla OpenGL 3/OpenGL 2 + FBO/OpenGL ES 2 gerektirir ve "GL_FRONT" çizim arabelleğine erişim sunmaz. Eğer * gerçekten * buna ihtiyacınız varsa, yerine 'QOpenGLWindow' +' createWindowContainer' kullanın. – peppe

+0

Öneriniz için teşekkürler. Oldukça fazla iş gerektirecekmiş gibi geliyor. – LRaiz

+0

@peppe 'nin önerisi işe yaradı (çoğunlukla). Yine de, nasıl üstesinden geleceğimi bilmediğim bir klavye odağı sorunu var. http://stackoverflow.com/questions/37196155/how-to-direct-keyboard-input-qopenglwindow-in-5-6 – LRaiz

cevap

0

Çözüm için kredi @peppe'ye gider. Onun önerisinin uygulanması çok zor olmadı ve istediğimi elde etmeme izin verdi. QOpenGLWidget'ten QOpenGLWindows ve QWidget kapsayıcısının birleşimine geçmek istediğim şeyi tam olarak elde etmeme olanak verdi.

Sınıfımı QOpenGLWindow'dan türettim ve QWidget :: createWindowContainer (my_class_pointer) aracılığıyla elde edilen bir QWidget öğesinin işaretçisini hatırladım; Daha sonra, QOpenGLWidget'te bulunmayan QGLWidget yöntemlerinden yararlanırken, bu çağrıları kapsayıcıya yeniden yönlendirdim.

QOpenGLWindow, doğrudan ön arabelleğe çizim hata ayıklama araçlarımla mükemmel bir şekilde görünüyor.