Direct3D Anfängerprobleme/-fragen



  • Zum einen kannst du es schon dem vorangestellten "I" enthnehmen, zum anderen habe ich es auch extra als solches deklariert. ID3D10Buffer ist ein Interface und ein Interface ist eine abstrakte Klasse mit ausschließlich pure virtual Methoden.

    Das ist bei IDIRECT3DVERTEXBUFFER9 auch der Fall. Richtig wäre also:

    ID3D10Buffer* pVertexBuf;
    

    oder eben

    LPD3D10Buffer pVertexBuf;
    

    was ein entsprechendes typedef ist.

    Das übergibst du dann an CreateVertexBuffer();



  • Ok vielen Dank. Ich hab jetzt den VertexBuffer mit 3 Punkten, so wie aus diesem msdn Sample: http://msdn.microsoft.com/en-us/library/bb205130(v=VS.85).aspx

    Wie kann ich das jetzt zeichnen?



  • Das geht mit der Methode DrawPrimitive der Geräteschnittstelle. (Unter DirectX9 was das zumindest so, weiss nicht, ob die Methode jetzt anders heißt).
    Ich würde mir an deiner Stelle ein Buch über 3D-Spiele/Grafikprogrammierung kaufen. Ich denke, dass es einfacher ist, sich das Wissen durch ein Buch anzueignen anstatt es sich stückweise aus dem Internet "zusammenzukratzen".
    Ist aber nur meine persönliche Meinung. Das Buch, das ich habe, war aus meiner Sicht eine gute Investition.

    MfG, Jochen



  • void ID3D10Device::IASetPrimitiveTopology(
      __in  D3D10_PRIMITIVE_TOPOLOGY Topology
    );
    
    void ID3D10Device::Draw(
      __in  UINT VertexCount,
      __in  UINT StartVertexLocation
    );
    

    Wie Jochen S. schon sagte, solltest du dir aber besser Lektüre über DirectX 10 anschaffen, denn ich bin nicht immer online um dir deine Fragen zu beantworten 😉

    Wenn du bereits vertraut mit DirectX 9 bist, dann reicht dir evtl. schon die Dokumentation die zum einen beim SDK mitgeliefert wird und zum anderen auf MSDN verfügbar ist.



  • Ich bin auch schon länger auf der Suche, aber ich finde kein deutsches für DX10... Kennt ihr eins?

    Danke nochmal für die Antworten!



  • Vielleicht verrät dir Jochen S. ja was für ein Buch er hatte, wenn er es schon lobt 😉

    Ein deutsches kann ich dir jedenfalls nicht empfehlen.



  • Ich habe das Buch "3D Spieleprogrammierung mit DirectX 9 und C++" (Hanser-Verlag). Das Buch ist auch deutsch.

    Allerdings wird dort nicht mit DirectX 10 gearbeitet, darum dürfte das Buch für dich wohl eher uninteressant sein. Allerdings finde ich, dass man auch mit DirectX 9 schöne Grafiken erzeugen kann. Das Buch jedenfalls schneidet auch fortgeschrittene Techniken wie Echtzeitschatten, Tiefenschärfe, Pixe-l/Vertex-Shader usw. an. Außerdem werden zwei komplette Spiele entwichekt. Dann habe ich noch das Buch "Game Programming Gems4", kann ich auch empfehlen, dort werden allerdings nur fortgeschrittene Techniken behandelt.

    MfG, Jochen



  • Das hab ich auch schon gefunden, aber leider such ich ja für DX10. Es gibt auch schon eins für DX11 aber das unterstützt meine Hardware leider nicht.
    Naja dann muss ich wohl ein englisches Buch suchen...



  • TheCrip schrieb:

    Das hab ich auch schon gefunden, aber leider such ich ja für DX10. Es gibt auch schon eins für DX11 aber das unterstützt meine Hardware leider nicht.

    Direct3D11 ist dank Feature Levels abwärtskompatibel und läuft sogar auf D3D9 und D3D10 Hardware, natürlich ohne die entsprechenden D3D11 Features. Ich würde heutzutage jedem dazu raten einfach gleich D3D11 zu lernen, die Unterschiede zu D3D10 sind zwar minimal aber wenn man schon was Neues lernt warum dann nicht gleich das aktuellste 😉



  • Ich programmiere mit DirectX 9, von daher weiss ich nicht, ob DirectX 10 oder 11 schwieriger zu handhaben ist oder nicht. Ich finde allerdings, dass man nicht unbedingt mit dem neuesten anfangen muss. Spiele wie z.B. Hitman oder Call of Duty haben bis jetzt auch nur DirectX 9 Grafik. Und an die Grafische Qualität dieser Spiele kommt man als alleiniger Programmierer sowiso nicht heran.
    Meine Meinung: Die neuen Features von DirectX 10 oder 11 dürften für Anfänger/Hobbyprogrammierer nicht allzu unverzichtbar sein.

    MfG, Jochen



  • also das tutorial auf directxtutorial.com ist eig komplett aufs dx9 ausgerichtet
    für die dx10 oder 11 version gibts da ja eigene rubriken, aber die kosten

    mache das auch grad... ist von der theorie eigentlichr echt einfach zu verstehen aber das umzusetzen ist schwerer, vor allem kommen oft irgendwelche fehler und man weiss nicht warum (unsichtbares dreieck weil die eck vertices in der falschen reihenfolge definiert wurden, abstürze des programms -> neu startend es pc erforderlich.... usw)

    aber macht spass und man erzeilt immer wieder ergebnisse dass es nicht frustriert...

    dein eines problem mit dem header hatte ich auch (nur für d3dx9.h) und das lag daran dass das dx sdk tatsächlich nicht eingebunden war, trotzdem aber die datei d3d9.h funktionierte + einfache spielereien

    statt d3dcolor kannst auch dword nehmen, lässt sich einfach so umcasten
    aber (!!!) die farben musst folgendermaßen setzen:
    RGB -> 0xFF, 0xFF, 0xFF
    Rot -> 0x FF 00 00 (aber als eine zeahl, kansnt im windows taschenrechner umrechnen)
    Grün -> 0x 00 FF 00
    Blau -> 0x 00 00 FF

    RGB 0x FF AA 00 wäre dann in DWORD also als Zahl
    DWORD = 16755200



  • Du musst da nichts im Windows-Taschenrechner unrechnen.
    Kannst das ja einfach so schreiben:

    DWROD dwColor = 0xFF8000 // Orange
    

    Allerdings wird auch viel mit Alphawerten (transparenz) gearbeitet. Der Alphawert wir im ersten Byte gespeichert:

    DWORD dwColor = 0xFF008000 // Dunkelgrün, völlig Opak.
    

    MfG, Jochen


Anmelden zum Antworten