2009-06-07 13 views

Antwort

1

Wenn Sie OpenGL (oder Direct3D) nicht verwenden können, müssen Sie wahrscheinlich einen eigenen Rasterizer schreiben. Ich werde auch darauf hinweisen, dass dies eine schreckliche Idee ist, und wenn Sie OpenGL oder Direct3D verwenden können, sparen Sie sich eine Menge Arbeit, selbst wenn es wirklich schwer ist, diese Dinge mit Ihrer App zu arbeiten. Ja, Sie können OpenGL oder Direct3D verwenden, um in eine Textur zu rendern, ohne einen Bildschirmkontext zu erstellen.

Auf der theoretischen Seite wenden Sie eine perspektivische Projektion (siehe diesen Begriff) auf jeden Punkt auf Ihrem Quadrat an. Das ist jeder Punkt, nicht nur die Ecken, sondern alle dazwischen liegenden Punkte. Die Leute finden die Verzerrung akzeptabel, wenn Sie die Transformation nur auf die vier Punkte anwenden, also tun wir das stattdessen.

Sobald Ihre 3D-Punkte mithilfe einer perspektivischen Transformation in 2D-Punkte transformiert wurden, zeichnen Sie das Polygon und kopieren Pixel aus Ihrer Textur in Ihren Zielkontext. Sie sollten jedes Pixel im Ziel durchlaufen und berechnen, welches Quellpixel dort endet. Wenn es nur um die X-Achse gedreht wird, wie es auf dem Bild erscheint, werden Sie die Dinge viel einfacher machen, da jede Zeile im Ziel einer Zeile in der Quelle entspricht. Wolfenstein nutzte den gleichen Trick (außer der Y-Achse) für das perspektivische Rendern in Echtzeit auf einer 286, Doom auch.

Wenn du immer noch fortfahren willst, aber nicht weißt, was ich sage, dann schau in eines dieser alten Bücher, das dir erklärt, wie du deinen eigenen Doom-Klon erstellst. Diese Bücher haben den Code, nach dem Sie suchen. Ein oder zwei sind jetzt online verfügbar, gehen Sie zu this wiki und suchen Sie nach "Black Art von 3D-Spiele-Programmierung" oder "Tricks der Windows-Spiele-Programmierung Gurus". Ein oder zwei andere könnten da sein.

Verwandte Themen