Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Ich speile zur Zeit etwas mit DirectX herum und bin jetzt soweit dass ich eigentlich einen Würfel mit Farbe darstellen können sollte.
Der Code sieh gut aus, nur das Resultat nicht. -> Ich sehe den Würfel nicht.
Durch Graphics Debugging habe ich heraus gefunden, dass mit den Werten alles stimmt. Alles wurde richtig initialisiert, Vertex und Index Buffer haben auch die richtigen Werte.
Im Input Assembler sieht noch alles in Ordnung aus, im Vertex Shader ist der Würfel jedoch verschwunden:
Mein erster Gedanke war, dass etwas mit einer der 3 Matrizen nicht stimmen könnte. Hat jemand eine Idee wie ich deren Werte aus dem Vertex Shader herauslesen kann?
Wisst ihr was sonst vielleicht nicht stimmen könnte?
P.S.:
Hier ist noch meine Graphics Events List, darin stimmt doch alles oder?
Hast du die Matrizen transponiert, bevor du sie an den Shader gesendet hast?
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
@Legend: Hab ich schon probiert: Source information is missing from the debug information for this module.
Ich glaube dazu müsste ich den Shader vor Laufzeit kompilieren oder?
Stimmt, das kann gut sein, dass du die vorher kompilieren musst. Dann hast du eine Datei mit den nötigen Debuginformationen. Jetzt wäre das sehr praktisch, dort könntest du nachsehen was ankommt ...
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"
Ich hab mir jetzt mal kurz angeschaut wie man offline shader kompiliert.
Auf msdn gibt es nur ein Beispiel wie man ein .fx kompiliert und als .fxo ausgibt, jedoch nichts für hlsl.
Funktioniert das gleich? Ist der Output trotzdem ein .fxo oder ein .hlslo?
Gibt es vielleicht eine Möglichkeit etwas über meine Matrizen zu erfahren auch wenn ich den Shader zu Laufzeit kompiliere? (NVidia nSight, oder so?)
Edit: Hab ganz vergessen das ganze mal im Debug mode zu erstellen. Da bekomme ich nämlich ein 'Assertion Failed!'. Irgendwas mit XMScalarNearEqual bei der ViewMatrix so wie ich das verstanden habe.
Da versteh ich nicht. Das Seitenverhältnis ist doch Höhe/Breite oder?
Edit: Hab das mal getestet: GetHeight() = 600, GetWidth() = 800, GetHeight()/GetWidth() = 0.
Edit2: Verdammt hab vergessen das ganze zu einem float zu casten. Jetzt ist der Error weg. Aber immernoch kein Würfel am Bildschirm.
Edit3: Jetzt kommt was im Vertex Shader an! Aber irgendwie findet es den weg zum Output-Merger nicht.
Es funktioniert! Naja nicht wirklich.
Aber zumindest seh ich was.
Ich hab die Position der ViewMatrix mal von (0.0, 0.0f, -1.0) auf (10.0, 10.0, 0.0) und siehe da: