Ich aktualisiere meine Anwendung von QGLWidget mit Qt 5.3.2 auf QOpenGLWidget mit QT 5.6.0. Die Anwendung wird aktualisiert und läuft gut. Ich stecke jedoch fest, um meine Debugging-Tools zu erhalten. Meine Entwicklungsumgebung ist Visual Studio 2013, und obwohl die letzte Anwendung doppelt gepufferte Grafiken verwendet, habe ich für Debugging-Zwecke einige Methoden geschrieben, die ich interaktiv vom Debugger aufrufen, in Frontpuffer zeichnen und die Ausgabe auf dem Bildschirm sehen konnte. Diese Funktionen funktionieren nicht mehr, da QOpenGLWidget zum Framebuffer zeichnet. Außerdem, bevor ich versuche, beim Aufruf von glDrawBuffer (GL_FRONT) zu zeichnen, wird glError bis 1280 (ungültige Enumeration) generiert. Zusätzliches Datenelement - glGetIntegerv (GL_DRAW_BUFFER, & my_val) gibt 0x8ce0 zurück, was GL_COLOR_ATTACHMENT0 ist und mit GL 3.0 Sinn ergeben würde, obwohl meine Absicht darin bestand, GL-Features auf 2.0 zu beschränken.So zeichnen Sie mit QOpenGLWidget in den Frontpuffer
0
A
Antwort
0
Kredit für die Lösung geht @peppe. Sein Vorschlag erwies sich als nicht zu schwierig zu implementieren und erlaubte mir zu erreichen, was ich wollte. Durch den Wechsel von QOpenGLWidget zu einer Kombination aus QOpenGLWindows und seinem QWidget-Container konnte ich genau das erreichen, was ich wollte.
Ich leitete meine Klasse von QOpenGLWindow ab und erinnerte sie an einen Zeiger auf ein QWidget, das über QWidget :: createWindowContainer (my_class_pointer) erhalten wurde; Dann, wann immer ich QGLWidget-Methoden nutzte, die nicht in QOpenGLWidget vorhanden sind, leitete ich diese Aufrufe an den Container um.
QOpenGLWindow scheint mit meinen Debugging-Tools, die direkt in den Frontpuffer zeichnen, vollkommen zufrieden zu sein.
Verwandte Themen
- 1. So rendern Sie Text mit QOpenGLWidget
- 2. So zeichnen Sie zufällige Ebenen
- 3. So zeichnen Sie Zeitreihen in Python
- 4. So zeichnen Sie glattere Kurven in R
- 5. So zeichnen Sie bestimmte Zeilen in GNUplot
- 6. Wie verwende ich QPainter in QOpenGlWidget paintGL
- 7. So zeichnen Sie implizite Gleichungen
- 8. So zeichnen Sie diese Gleichung
- 9. So zeichnen Sie die Zeitreihendarstellung in R
- 10. So zeichnen Sie eine Interpolationsfunktion in Matlab
- 11. So zeichnen Sie ein Histogramm mit verschiedenen Farben in R
- 12. Fehler über QOpenGLWidget
- 13. So zeichnen Sie Linien zwischen mehreren Bildern
- 14. QOpenGLWidget und glReadPixels und Tiefenpuffer
- 15. QOpenGLWidget Größe ändert sich in falsche Ansichtsfenstergröße
- 16. So zeichnen Sie SVM-Klassifizierung Hyperebene
- 17. So zeichnen Sie Text vertikal mit Compact Framework
- 18. Qt OpenGL (QOpenGLWidget) - Einfaches Dreieck
- 19. chartjs: So zeichnen Sie ein mehrzeiliges Diagramm mit unregelmäßigen Intervallen
- 20. So zeichnen Sie Zeit vs Wert Diagramm mit Python
- 21. So aktualisieren Sie Bargraph in Highcharts ohne erneutes Zeichnen
- 22. So zeichnen Sie Ereignisse in der Google Tabellenkalkulation auf
- 23. So zeichnen Sie ein Vektorfeld mit Fehlerellipse mithilfe von Cartopy
- 24. So zeichnen Sie einen langen Pfad mit Virtual Earth
- 25. So zeichnen Sie mehrere zentrische Kreise in R
- 26. So zeichnen Sie transparente Kreise in Google Maps API
- 27. So zeichnen Sie mehrere Spalten in R für den gleichen X-Achsen-Wert
- 28. So erhalten Sie den Anwendungspfad mit Javascript
- 29. So verwenden Sie den Kontextmanager mit Ausnahmen
- 30. So erhalten Sie den Itemcount mit SOAP
QOpenGLWidget bezieht sich auf einen Intermediate FBO, benötigt daher OpenGL 3/OpenGL 2 + FBO/OpenGL ES 2 und bietet keinen Zugriff auf den Zeichenpuffer "GL_FRONT". Wenn Sie das wirklich brauchen, verwenden Sie stattdessen 'QOpenGLWindow' +' createWindowContainer'. – peppe
Danke für den Vorschlag. Es klingt, als würde es ziemlich viel Arbeit erfordern. – LRaiz
@peppes Vorschlag erwies sich (meistens) als gut. Es gibt immer noch ein Problem mit dem Tastaturfokus, aber ich bin nicht sicher, wie ich es überwinden soll. http://stackoverflow.com/questions/37196155/how-to-direct-keyboard-input-qopenglwindow-in-5-6 – LRaiz