VMWare und 3d Grafikprogrammierung von Marius Apetri



  • Hallo Zusammen,

    ich habe mir das oben genannte Buch gekauft und bin derzeit an den Beispielen angekommen.

    Wenn ich mein Beispielprogramm unter einer realen Windows XP Maschine laufen lasse, sehe ich den Bildschirmaufbau korrekt.
    (Z.B. langes Darstellen von Pixeln)

    Lasse ich das gleiche Programm unter Windows XP in einer VM-Ware laufen, so wird der Bildschirm nicht ständig neu gezeichnet.
    Bei dem Beenden des Programms wird kurz der korrekt letzte Zustand des Bildschirm dargestellt und dann beendet (weil Taste gedrückt, ist also korrekt).

    Das Programm dxdiag zeigt in der VMWare die korrekt Unterstützung von Direct X9 an. SDK ist installiert.

    3D Acceerate 3D grafics ist angewählt und die VMWare Tools sind installiert.

    Da ich eigentlich ein Linux-System betreibe, fahre ich Windows nur bei Bedarf in einer VM, da ich hier mehr Möglichkeiten habe.

    Also Beispiel geht jede Programm aus dem Buch:
    Z.B. http://www.c-plusplus.net/forum/264504

    Hat jemand eine Idee, woran das liegen kann ?

    Gruss R.



  • Scheinbar wird das direkte Schreiben in den Videospeicher von der VMWare Software nicht erkannt.

    Gibt es den eine API, wo ich ein Byte via dieser Funktion in den Videospeicher schreiben kann. Das wäre zwar langsamer, könnte dann aber für die Darstellung in der VMware förderlich sein.

    Gruss R.



  • DirectDraw garantiert dir wenn ich mich recht erinnere nicht, dass das was du von Lock() bekommst, ein direkter Zeiger auf die Video-Surface ist.
    Heisst: es kann sein dass Lock() die Daten von der Grafikkarte in einen Puffer im Speicher kopiert, und dir einen Zeiger auf diesen Puffer gibt.

    Erst bei Unlock() werden die Daten vom Puffer wieder zurück auf die Grafikkarte kopiert.

    Heisst also weiter: wenn du willst dass Änderungen sichtbar werden, musst du Unlock() aufrufen. Also in dem Beispiel die Funktion release_screen_pointer().

    ps: Lock() *darf* natürlich einen Zeiger auf die eigentliche Video-Surface zurückgeben. Daher funktioniert es auch auf nem "echten" Windows XP. Der VMware Garfikkarten-Treiber macht es aber anscheinend anders, daher funktioniert es dort nicht. Das Problem dabei ist aber nicht der VMware Treiber, sondern das Programm, das sich auf etwas verlässt, was DirectDraw nicht garantiert.



  • Vielen Dank für diese Antwort.
    Sie ist nachvollziehbar für mich, obwohl ich ein Anfänger in Sachen DirectDraw bin.

    Gruss R.



  • Das ganze läuft danach nicht wirklich gut.
    Ich habe mich entschieden, die Beispiele jeweils nach QT zu protieren...
    Ein kleines "dirty" Rahmenprogramm arbeitet hier für mich besser, als zu versuchen directx in der VM ans rennen zu bekommen.

    Mir gehts ja nur um die 3D mathe... nicht um direktx

    Danke nochmals fuer die Hilfe...

    Das Problem dabei ist aber nicht der VMware Treiber, sondern das Programm, das >sich auf etwas verlässt, was DirectDraw nicht garantiert.

    Die Beispiele in diesem Buch sind teilweise schon fragwürdig...

    Gruss R.


Anmelden zum Antworten