Du bist nicht angemeldet.

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!

Werbeanzeige

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

1

08.07.2006, 20:51

2D Position in 3D

Hi. Ich hab versucht meine eigene Sprite klasse ohne D3DX zu machen. (Also 2D in Direct3D) Dabei wollte ich dann auch Bildschirmkoordinaten als Position angeben. Dazu müsste ich die 2D Position allerdings in 3D umrechnen. Stimmt doch oder lieg ich da vollkommen falsch? Wenns stimmt, würd ich mich über einen Tipp freuen, der mich in die richtige Richtung lenkt ;) (Nagut, wenns net stimmt, dann erst recht :lol:)

schonmal thx

Olko

Frischling

  • Private Nachricht senden

2

08.07.2006, 23:57

Ist zwar nicht die einzige Möglichkeit, aber man kann 2D-Grafik mit transformierten Vertices machen.

Falls du das nicht willst, brauchst du halt eine entsprechende Projektionsmatrix.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

09.07.2006, 00:06

In Davids Buch Kapitel 2 letzter Punkt:
2.16
o.ä müsste das sein oder

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

4

09.07.2006, 14:39

Hmm... also das Buch hab ich nicht.
Ich hab jetzt die Projektionsmatrix gesetzt.
Dann die vertices in den VertexBuffer. Translationmatrix gesetzt usw...
Das eigentliche Problem ist, dass wenn ich die Bildschirmposition angeben will, dann muss ich die ja von 2D in 3D umrechnen.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

5

09.07.2006, 15:56

Ich versteh nicht ganz wieso du die in 3D umrechnen willst... Bei solchen HUD-Sprites (so nenne ich sie halt immer ;-)) arbeitet man mit transformierten Vertizen, demnach muss man einen 2D-Vektor angeben, und ihn NICHT mehr durch die Transformationspipline schicken...

Für "normale" Sprites (oder Billboards) definiere ich immer nur einen 3D-Vektor als Bildmittelpunkt, und dort wird dann der Sprite gerendert... ganz normal, einfach ein Quad an dieser Stelle... Ich wüsste gar nicht, wie ich das mit 2D-Koords handhaben sollte!?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

6

09.07.2006, 17:08

Ich poste mal den Code, so wie ich es versucht habe:
Ich hab das Tutorial von Patrick zur Hilfe genommen.

C-/C++-Quelltext

1
// Ausgeschniten, weil es eh falsch war...


Ich will damit halt 2D Spielchen mit machen. Also will ich wissen, wie groß das Sprite auf dem Bildschirm dargestellt wird(Pixel) und wo. Damit ich dann auch vernünftig damit umgehen kann.
Ich habs jetzt schon etwas hinbekommen, allerdings sind die Werte sehr ungenau.

Ich glaub ich geh da vollkommen falsch ran. Naja...

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

7

13.07.2006, 20:14

Hat keiner ne Ahnung. Ich habs ja schon soweit hinbekommen, dass die Werte in etwa stimmen. Aber dann fehlen trotzdem 4 pisel beim y-Wert.

Olko

Frischling

  • Private Nachricht senden

8

13.07.2006, 22:28

Wie schon gesagt, am besten nimmst du transformierte Vertices.
Da kannst du dann direkt Bildschirmkoordinaten angeben und sparst dir die ganzen Matrizen.

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

9

13.07.2006, 22:46

Man sollte das aber auch mit untransformierten Verticen hinkriegen. Wollte das eigentlich nicht machen, aber anders werd ich das wohl jetzt net hinkriegen.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

13.07.2006, 22:51

du kannst auch DirectDraw oder Surfsaces nehmen, allerdings kannst du diese nicht drehen. (jedenfalls nicht so einfach wie hier)

Werbeanzeige