DirectX XMMatrixOrthographicOffCenterLH macht Probleme
-
Hallo zusammen,
Ich möchte mit DirectX11 ein 2D sprite anzeigen...dazu benutze ich für die Projektions-Matrix XMMatrixOrthographicOffCenterLH aus der DirectXMath.h. Leider wird mir auf dem Bildschirm gar nichts angezeigt. Nutze ich eine perspektivische Projektion funktioniert alles einwandfrei.
Ich benutze Visual Studio 2012 und habe mal den mitgelieferten Graphic-Debugger (oder wie der heißt) genutzt und festgestellt, dass mein Sprite irgendwo zwischen VertexShader und PixelShader verloren geht. Leider weiß ich nicht warum ...
Gibt es eine Möglichkeit herauszufinden, warum DirectX glaubt die Pixel nicht rendern zu müssen?
Oder hatte jemand hier vielleicht schon einmal das gleiche Problem und hat eine Idee woran es liegen könnte, dass es mit XMMatrixOrthographicOffCenterLH nicht funktioniert?Ich bin echt ratlos warum XMMatrixOrthographicOffCenterLH solche Probleme verursacht
-
Vermutlich baust bzw. verwendest du deine Matrix falsch und deine Sprites landen irgendwo außerhalb des Bildschirms. Der Graphics Debugger kann dir eh anzeigen, wie deine Geometrie nach dem VertexShader genau aussieht. Du kannst sogar für jeden einzelnen Vertex durch den VertexShader steppen und schauen, wie genau das Ergebnis zustande kommt...
-
Im Debugger wird mir ein Ergebnis für den VertexShader angezeigt und auch eines für den PixelShader, aber dieser liefert keinen einzigen farbigen Pixel...
http://img32.imageshack.us/img32/5323/9vjp.png
Wenn der PixelShader offenbar noch aufgerufen wird, müsste das doch bedeuten, dass mein Sprite zumindest innerhalb des Bildschirms liegt, oder???
dot schrieb:
Du kannst sogar für jeden einzelnen Vertex durch den VertexShader steppen und schauen, wie genau das Ergebnis zustande kommt...
Die Frage ist jetzt vermutlich total blöde, aber wie geht das? Wenn ich unter "Vertex-Shader" auf den grünen Pfeil klicke läuft der VertexShader bei mir nur einmal durch, sodass ich nur das Ergebnis für einen einzigen Punkt bekomme
-
backface culling ausschalten
-
Nein, das war es auch nicht, aber ich hab den Fehler mittlerweile gefunden
Der Fehler lag beim VertexBuffer bzw. bei der World Matrix. Der Vertexbuffer war zu klein dimensioniert und ich hatte vergessen zu skalieren, sodass immer nur ein Pixel gerendert wurde und den hatte ich immer übersehen