Seite 1 von 1

QT4 und DirectX

Verfasst: 3. April 2006 16:57
von diavo
Hallo,
gibt es eine Möglichkeit, mittels eines Direct3D Devices in ein QWidget zu malen? Ich habe alles fehlerfrei initialisiert. Auch das Zeichenn mittels Direct3D funktioniert, allerdings wird das von Direct3D Gerenderte immer von dem QWidget überzeichnet.
Ich habe die paintEvent Methode des QWidgets überschrieben um von dort aus den Renderer aufzurufen. Sonst mach ich nicht in dem paintEvent.
Was könnte das schief laufen? Eventuell QTs neue paintEngine mit automatischem Backbuffer?
MfG Steffen

Verfasst: 3. April 2006 17:16
von Emperor_L0ser
warum nimmst du qt dafür?

der gedanke von qt ist cross-plattform, wenn du nun dort directx einbindest, läufts nur noch auf windows....

versuche sdl (http://www.libsdl.org) das ist ebenfalls plattform unabhängig und steuert von sich aus directx unter windows an.

Verfasst: 3. April 2006 19:07
von BartSimpson
oder besser gleich OpenGL. Das gibt es überall und wird auch von Qt unterstützt.

Verfasst: 4. April 2006 08:05
von diavo
Die OpenGL Unterstützung von QT kostet aber extra. Außerdem soll meine App nur Windows laufen. Aber funktionieren sollte das doch trotzdem...?

Verfasst: 4. April 2006 08:56
von BartSimpson
Kommt drauf an, welche Version du hast.

Verfasst: 4. April 2006 09:13
von diavo
Desktop Light Edition...

Verfasst: 4. April 2006 09:17
von BartSimpson
Achso, da hast du denn etwas den Zonk. Aber da haste du ja Support von Trolltech. Was sagen die denn dazu?

Verfasst: 4. April 2006 10:55
von Shadow
BartSimpson hat geschrieben:Achso, da hast du denn etwas den Zonk. Aber da haste du ja Support von Trolltech. Was sagen die denn dazu?
Ich empfehle OpenGL in Zusammenhang mit QT zu benutzen, da es direkt unterstützt wird und gleichermaßen plattformunabhängig ist, im Gegensatz zu DirectX.
(:?: Seit wann kostet das extra, wenn man bei QT die OpenGL Funktionen benutzt? Hab' ich ja noch nie gehört...du meinst sicherlich den Support von den Trolls).

Verfasst: 4. April 2006 11:25
von BartSimpson
nee. Wenn man die Komerzielle Version hat, ist Qt nur in der Qt Desktop verfügbar. Er scheint aber die eh fast unbrauchbare Qt Desktop Light Version zu nutzen.

Verfasst: 5. April 2006 08:03
von diavo
Der Trolltech Supprt hat weitergeholfen:
Man muss die paintEngine Methode überschreiben und dort immer 0 zurückgeben. Außerdem wird das WA_PaintOnScreen Attribut benötigt.
Jetzt funktioniert es.