Direct3D im Fenster



  • macht mir Probleme, denn wenn Direct3D den Backbuffer erstellt nimmt es dafür immer Größen wie 640x480, 800x600......
    Mein Fenster, in das reingerendert werden soll, hat aber nicht solche schönen Ausmaße, d.h. Direct 3D macht einen Stretch Blit beim Present(). Und dabei wird das Bild verfälscht, vor allem Linien wirken "geglättet". Wäre ja ein schöner Effekt, aber das Ergebnis ist nicht grade hübsch.

    Die Frage jetzt: Wie mache ich es richtig? So dass jeder Pixel 1:1 auf den Bildschirm kommt.
    Irgendwie kann man nicht festlegen in welchen Bereich des Backbuffers gerendert werden soll. Es gibt ja SetViewport(), aber das bezieht sich auf Fensterkoordinaten. Und der Scissor-Test scheint auch ungeeignet zu sein, da er den Ausschnitt nicht in der Größe ändert sondern Bereiche wegschneidet.

    😕



  • Guck mal, wie die DirectX-SDK-Samples das machen, wenn Du die Fenstergröße änderst. Sie ändern ganz einfach die Größe des Back-Buffers beim Erzeugen des Devices. Die Größe muss nämlich garnicht 640x480, 800x600 etc. sein! Das ist nur beim Vollbildmodus der Fall!



  • Was heisst Direct3D nimmt immer Größen wie bla, ich dachte, die gibt man selbst an? Könnte höchstens eine Einschränkung deiner GraKa bzw. des Treibers sein, wie sieht es denn in den Samples aus dem SDK aus?

    Bye, TGGC (Der Held ist zurück)



  • Danke, jetzt gehts.

    Der Fehler war, dass ich das Device bei der Nachricht WM_CREATE erzeugt habe, und zu dem Zeitpunkt ist das Fenster noch nicht maximiert sondern hat so eine Windows-Standardgröße.
    Hätte ich eigentlich schon früher drauf kommen können, so ein Blödsinn passiert mir irgendwie andauernd 🙄


Anmelden zum Antworten