Meine DirectX Tuts [3/5] online

    • VB.NET

    Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von Byte.

      Meine DirectX Tuts [3/5] online

      Hey Leute,
      ich stelle hier meine ganzen Tutorials zu DirectX rein,

      Tut 1 - Initialisieren von DirectX in VB, Download | PDF ~820 kb
      Tut 2 - Kamera und Vertex, Download | PDF ~750 kb
      Tut 3 - Vertex Teil II, Rotation Download | PDF ~ 153 kb
      Tut 4 - DirectInput, Tastatur Download | PDF ~190kb
      Tut 4 Teil 2 - DirectInput, Maus Download | PDF ~190kb

      Legende:
      Fertig
      Fast fertig(Noch nicht hochgeladen)
      Noch in Bearbeitung/Noch nicht Angefangen
      Nachbearbeitung

      Hier findet ihr immer Aktuelle News:
      Dateien

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Devtronic“ ()

      Tut 2: Timer Intevall = 40 ergibt ein FPS-Anzahl von 25 reicht doch noch für dein Auge, oder?...xD
      ich finde den Up-Vektor könntest du eigt. direkt angeben(man verwendet ja eigt. immer den selben)...
      den VertexBuffer brauchst du auch nicht bei jedem Rendervorgang neu erstellen, einmal reicht dabei völlig...

      sonst hab ich keine Fehler gefunden und ich finde es Super, dass hier dann alles so kompakt kommt ;)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      also den VertexBuffer erstellst du immernoch jedesmal neu->unperformant und unnötig...

      Matrix.Rotation X/Y/Z = Rotiert die zugehörige Achse um den Wert der in
      der Klammer steht.

      hierzu würde ich noch ergänzen, dass der angegebene Wert im Bogenmaß angegeben ist( Bogenmaß * 180 / PI = Grad umstellen sollte kein Problem sein...:P)

      der Rest ist eigt. wieder ganz gut(gibt aber auch nicht mehr wirklich viel :P)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      So bei mir bleibt der Inhalt die ganze Zeit grau.
      Ich habe auf jeden CPU-Typ umgestellt, das SDK installiert, ich hab genau deinen Code eingefügt er bleibt grau.
      Hast du ne Idee ?

      Da ich mich auch in C++ mit Direct3D beschäftige, weiß ich das es klappt, ich krieg da auch einen blauen Hintergrund hin : D
      also ich bins mal wieder :P

      du hast es irgendwie immer noch nicht geschafft den VertexBuffer nur einmal zu erstellen. Weißt du überhaupt, was ich damit gemeint habe?
      Aufbau:
      bei "Der komplette Code" sollte für die Überschrift alleine nicht eine Seite verwendet werden ;)

      an DirectInput hab ich nur noch auszusetzen, dass du das ganze nicht sauber schließt(es fehlt z.B. KeyBoard.Unaquire()...)

      was mir erst jetzt noch aufgefallen ist:

      Dev.RenderState.CullMode = Cull.Clockwise & Cull.CounterClockwise

      ich dachte das müsste wenn dann so heißen:

      VB.NET-Quellcode

      1. Dev.RenderState.CullMode = Cull.Clockwise Or Cull.CounterClockwise

      Or ist ein logischer Operator & ist ein Zeichenverkettungsoperator (bsp. 1 & 2 = 12 und ein solch hoher Wert ist in diesem Enumerator nicht mehr vorhanden)
      1 Or 2 = 3(wäre eher richtig ;))

      @Nibel:
      guck am besten mal, was dir das Output Fenster anzeigt beim Debuggen, dort werden oft Fehlermeldungen angezeigt...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Hallo,

      das ist jetzt das erste Mal, dass ich es geschafft habe, eine DirectX-Anwendung zu "schreiben", die auch wirklich mal etwas macht!

      Als Anregung für weitere Tutorials finde ich jedoch, dass einige Definitionen fehlen, um Fragen wie „Wie kann ich mein eigenes Spiel Realisieren“ oder „Wie benutze ich DirectX?“ (Wie du es ja ursprünglich vorhattest) zu beantworten.

      Nur als Beispiel:

      VB.NET-Quellcode

      1. Parameter.EnableAutoDepthStencil = True ' Autotiefe
      2. Parameter.AutoDepthStencilFormat = DepthFormat.D16 ' Format der Autotiefe

      Was ist den Autotiefe, wie verwende ich sie?

      Auserdem wird nirgends ausreichend erklärt was eine Matrix und ein Vertex oder VertexBuffer ist. (zumindest, für meine Verhältnise - wie gesagt, das sind nur Anregungen. Klar kann das der User selber nachgooglen. Aber ich denke, das ist doch ein wichtiger Bestandteil eines solchen Tutorials.)

      Ich finde es trotzdem klasse, dass du dir die Mühe machst, DirectX möglichst Einsteigerfreundlich zu erklären. Jedoch habe ich das Tutorial mehr oder weniger nur als Copy&Paste benutzen können. Ich versuche es trotzdem weiter, selbst noch etwas dazubauen zu können. :)
      (Was ist eigentlich das "Dev.Transform.World" - verzerre ich damit die "Welt" oder drehe ich das Rechteck?)

      Dim vertex As CustomVertex.PositionColored() = CType(VertexBuf.Lock(0, LockFlags.None),
      CustomVertex.PositionColored())
      vertex(0) = New CustomVertex.PositionColored(0, 1, 0, Color.Blue.ToArgb)
      vertex(1) = New CustomVertex.PositionColored(1, -1, 0, Color.Red.ToArgb)
      vertex(2) = New CustomVertex.PositionColored(-1, -1, 0, Color.Green.ToArgb)
      [...(World-Transformationen)]
      VertexBuf.Unlock()

      dieser Teil steht noch im Tick Event, dabei reicht es auch völlig aus, dies direkt beim Initialisieren zu übernehmen...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      @Nijn:
      Joa, deswegen schreibe ich z.Z. parallel noch ein Glossar zu DX
      ich dachte schon Intellisense erklärt den rest was zu unverständlich ist

      sry @ all...

      lg.
      EnalbeAutoDepthStencil legt fest, ob DepthStencil von Direct3D verwaltet werden soll, somit wird auch automatisch festgelegt, bis zu welcher Tiefe gelöscht werden soll(was bei jedem mal neu zeichnen Notwendig ist...)...

      diese Einstellungen lässt du am besten so stehen ;)

      was eine Matrix ist, lernt man ja eigt. auch in der Schule, zwar muss ich zugeben, hatten wir das auch noch nicht(RS halt), aber dank DirectX hab ich da schon etwas vorgearbeitet...
      de.wikipedia.org/wiki/Matrix_%28Mathematik%29

      der VertexBuffer setzt sich zusammen aus Vertex(de.wikipedia.org/wiki/Vertex, davon Rechnergrafik ;)) und dem Wort Buffer(Puffer was so viel heißt wie Zwischenspeicher)...hier werden also Punkte zwischengespeichert, welche ein Objekt ergeben, welches du dann später auf dem Bildschirm anzeigen kannst...

      Dev.Transform.Word->damit änderst du die Matrix der Welt, du kannst somit die Welt drehen, skalieren(somit auch verzerren) und positionieren...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---