Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich mag qml, trotz seiner macken. Für eine indigogo Kampagne im januar brauchte ich schon beauty shots von der software. Oc2k1 arbeitet an der software mit qt widgets, da er ja professioneller qt entwickler ist und ich hab versucht mit qml die shots zu machen. Also zum prototypen ist es spitz, man kann funktionale ui basteln ohne c++ code zu brauchen, da ui bezogene logik in qml per javascript und default behaviour gelöst wird und die daten kann man auch in qml in entsprechenden Listmodel ablegen. Die einzigen c++ zeilen die ich hatte war der Stylesheet und die Farbpalette. Für die gleiche arbeit brauch ich mit wpf und co um mengen mehr zeit. Das Problem ist dann echte denn die reflection, die die c++ container binden soll steckt in den kinderschuhen, einfache qlist mit string kein problem aber für mehr ist man schnell dabei für jedes model ein provider zu schreiben und hier hat qml seine schwäche. Wpf z.b. Nutzt die reflection und generiert sämtlichen code selber und bei qwidget tu ich programmiertechnisch die daten manipulieren. Was soviel zeit braucht wie die model provider zu schreiben aber dafür ist der kram dann mvp konform. Ich hab z.b. Den vmbuilder für opengl in wenigen stunden auf den stand vom wpf und xamarin alternative gehabt, wo ich tage gesessen hab. Zur kommerziellen Lizenz kann ich nur sagen, dass ich davon nix bemerkt hab, es gibt Buisness komponenten aber die 5-6 stück sind so nutzlos. Das andere problem sind widgets, die gibt es quasi nicht, in der regel baut man die sich selbst aber das dauert nur minuten, wenn man nicht gerade bestimmte features braucht. Wir brauchen z.b. Qdockwidget und das gibt es im qml konzept nicht und hat auch noch keiner hin bekommen, an der Stelle merkt man dann, dass da Firmen intern was nicht richtig läuft.
Zurück zum thema opengl in qt ist generell ein krampf und nutz am besten ein kompatiblen extension loader oder lade sie selber, qt ist mit ihrem hinter her und verbugt, wie glew :/
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab mir mal den Code von beecksche genauer angeguckt und da sind einige Schwachstellen.
Als erstes benutzt du die OpenGL Befehle direkt, was aber nicht darfst, die müssen vom Context aufgerufen werden. Dazu musst du dein OpenGL Widget zusätzlich von QOpenGLFunctions ableiten. Sonnst musst du immer den aktuellen Context abfragen und mit dem den Call machen, also folgendes.
Aktuell rufst du die normalen OpenGL Befehle auf und kannst nicht mal sicher sein, dass der erstellte Kontext überhaupt auf dem thread gebunden ist und damit ins leere läuft.
2. QT kümmert sich zwar drum den Viewport an zu passen, wenn das fenster resized wird aber tut nicht deine Projektions Matrix korrigieren. Du solltest also in betracht ziehen noch im resize event die matrizen an zu passen. Da es Test code ist, würde ich mal die ortho matrix weg lassen, ledeglich die projektion auf identity lassen und dein mesh im x -1 bis 1 und y -1 bis 1 bereich zu skalieren. Wenn z 0 ist, dann hast du automatisch Ortho modus aber es wird die aspect ratio 1:1 verwendet. Zum testen ist das besser, weil man keine Fehler in den Matrizen beachten muss und auch nicht mit dem Mesh.
Ein Triangle mit -1,-1,0, 1,-1,0, 0,1,0 wird z.B. von unten links, nach unten rechts nach mitte oben gerendert. Das ist auch der einfachste Test, wenn man von OpenGL 1-2 auf 3-5 wechselt, wo man ja sich selber um die Matrizen kümmern muss. Post processing Passes macht man z.B. so, weil man sich die ganzen Matrix operationen sparen kann(im vertex shader wird die position 1zu1 durch geschleift) und der inhalt der Texturen schon die richtige Aspect Ratio hat.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.