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

1

21.08.2008, 00:46

Schematischer Abriss - 3D und 2D Grafik in kombi.

Tach ihr Coder ^^

Ich steh wieder bisschen aufm Schlau. Und zwar geht es darum, wie ich 2D-Grafik in mein Programm bringe, das mir meine Modelle anzeigt.
Da ich jeweils nur ein Modell anzeigen will, hab ich einfach einen Vertex und Index Buffer angelegt, das FVF gesetzt und gerendert. Ich will eigetnlich dem Verständniss zuliebe erstmal keine weitern DX Funktionen einsetzen.
Ich les immerwieder von transformierten Vertices und kann mir aber nicht so recht vorstellen, was damit gemeint ist.
Leg ich da genau gleich einen Vertex-Buffer an?
Dann müsste ich ja foglich:

1) das FVF setzen
2) 3D-Grafik rendern
3) das FVF auf XYZRHW setzen
4) den zweiten Vertex Buffer rendern

Wenn ich Text oder Zahlen ausgebe, würde das ja heisst, das ich den zweiten Vertex-Buffer dauernd ändern müsste.
Es scheint mir fast so, das das darstellen eines Textes oder einer Zahl aufwändiger ist, als das rendern eines Modelles :)

Kann natürlich auch sein, das ich nen föllig falschen Ansatz nehme. :-X

Anonymous

unregistriert

2

21.08.2008, 08:50

Einfache Frage: Wozu willst du RHW-Vertices benutzen? Also ich fahre nicht sehr gerne mit nem Lambo wo ich dann während der Fahrt mal die Handbremse anzeihe.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

21.08.2008, 10:49

Zitat von »"unsigned long"«

Wozu willst du RHW-Vertices benutzen? Also ich fahre nicht sehr gerne mit nem Lambo wo ich dann während der Fahrt mal die Handbremse anzeihe.


schöne analogie :). aber damit wird er nix anfangen können^^.

@neptun: als stichwort sage ich dir orhtogonale projektionsmatrix, was das dilemma als mögliche idee lösen könnte.

Anonymous

unregistriert

4

21.08.2008, 11:25

TrommlBomml
Na ja, er wird sicherlich bemerkt haben das man für RHW-Vertices bei jeglicher Änderung den VertexBuffer neu locken, befüllen und end-locken muss. Sei es für eine Rotation, Transformation, Skalierung, usw. Da wird der Bus mit Nonsens regelrecht überfüllt.

Untransformierte Vertices haben den einfachen Vorteil das diese auf die gesetzten Matrizen greifen und so nicht non-stop in jedem Frame die Handbremse gezogen werden muss, um Daten zu ändern. So wie er es aktuell "plant", würde ggf. der 2D-Part mehr Performance fressen als der 3D-Part.

5

21.08.2008, 19:42

Ok das Leuchtet ein. Demnach ändere ich einfach die Projections Matrix um 2D Grafiken abzubilden? Ist es dann nicht sehr umständlich Grafiken Pixelgenau zu platzieren?
Ich würde mir eigentlich gerne ne einfache Bliting-Funktion schreiben. So das ich auch ein Ausschnitt aus einem Bild pixelgenau auf den Bildschirm setzen kann.
Wenn ich das mit normalen untransformierten Polygonen mache, habe ich ja das Problem, das ich da jeweils die Textur-Koordinaten ändern müsste, um einen anderen Ausschnitt darzustellen.
Oder sollte ich mich doch der DXSprite Funktion bedienen?

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

6

21.08.2008, 20:10

Zitat von »"neptun"«

Ok das Leuchtet ein. Demnach ändere ich einfach die Projections Matrix um 2D Grafiken abzubilden? Ist es dann nicht sehr umständlich Grafiken Pixelgenau zu platzieren?


Also bei OpenGL ist es in dem Fall dann so, dass die x- und y -Koordinaten Pixeln entsprechen, also ein Vertex an der Position (50,200,-2) würde dann auf dem Bildschirm genau diese Position in Pixeln haben. Wäre dann also sehr einfach zu verwenden, kann mir nicht vorstellen dass Direct3D das komplizierter machen sollte...

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

26.08.2008, 10:47

Du brauchst ja nur eine Transformationsmatrix -- sei es in Form einer Projektions- oder World-(View-)Matrix --, die die Objekte entsprechend transformiert. So kannst Du für Dich ja ein beliebiges Koordinatensystem verwenden, also auch eins, das die Bildschirmgröße oder die des Back-Buffers abbildet.
Kommen Sie nie mit einem Schwert zu einer Schießerei.

8

04.09.2008, 13:58

Ok, soweit so gut.
Nur wie mache ich es, wenn ich nur einen Ausschnitt der Textur darstellen will. Soll heissen, ich habe eine Textur, die die Zahlen von 0 - 9 enthält. Und nun möchte ich jeweils nur den entsprechenden Ausschnitt auf das Quad bringen. Geht das, ohne das ich im Vertex-Buffer rumwühlen muss?

Ihr habt euch doch bestimmt auch schon einen FPS Counter programmiert. Wie habt ihr die Zahlen auf den Bildschirm bekommen?

Werbeanzeige