vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
DirectX9 +Direct3D+ Tileset 
Autor: bilbo
Datum: 01.06.06 17:39

Hallo!

Mit DirectDraw ist es ja kein Problem, ein Tileset zu machen.

Nun würde ich gerne das mittels Direct3D realisieren, wegen diverser Vorteile.

Aber wie mache ich das?
Ich lade eine Textur, und möchte dann einen Teil aus dieser Textur auf den Bildschirm bringen.

Zuerst der Code, mit dem das Vertex erzeugt wird:
    Private Sub SquareVertices(ByVal vertices As  _
      Direct3D.CustomVertex.TransformedTextured(), ByVal X As Single, ByVal Y _
      As Single, _
           ByVal Width As Integer, ByVal Height As Integer, ByVal ProzX1 As _
           Single, _
           ByVal ProzY1 As Single, ByVal ProzX2 As Single, ByVal ProzY2 As _
           Single)
        'ProzX1 = 0
        'ProzY1 = 0
        'ProzX2 = 1
        'ProzY2 = 1
 
        vertices(0) = CreateVertex(X, Y, 0, 1, ProzX1, ProzY1)            ' 
        ' Left-Top
        vertices(1) = CreateVertex(X + Width, Y, 0, 1, ProzX2, ProzY1)     ' 
        ' Right-Top
        vertices(2) = CreateVertex(X, Y + Height, 0, 1, ProzX1, ProzY2)     ' 
        ' Bottom-Left
        vertices(3) = CreateVertex(X + Width, Y + Height, 0, 1, ProzX2, ProzY2) _
          ' Bottom-Right
    End Sub   ' SquareVertices
 
    Private Function CreateVertex(ByRef X As Single, ByRef Y As Single, ByRef Z _
      As Single, _
                 ByVal rhw As Single, ByRef tu As Single, ByRef tv As Single) _
                 As Direct3D.CustomVertex.TransformedTextured
        CreateVertex.X = X
        CreateVertex.Y = Y
        CreateVertex.Z = Z
        CreateVertex.Rhw = rhw
        CreateVertex.Tu = tu
        CreateVertex.Tv = tv
    End Function   ' CreateFlexVertex
Hier mein Ansatz:
Ich rechne mit dem TU und TV Wert. Das klappt auch fast gut:
Ich denke mich erinnern zu können, daß ich wo gelesen habe, daß diese Werte dem Prozentwert entsprechen müssen, wo was als Textur verwendet werden soll.

Leider zeigt Direct3D dieses "Textur-Schnipsel" nicht 100% korrekt an, und verzerrt es irgendwie. Im groben stimmt die Darstellung schon, es ist unschön.
Das ist schwer zu erklären. Ich versuchs mal so: Stellt euch den Buchstaben H vor. Die Dicke der 3 Striche sind 2 Pixel dick und 10 Pixel Lang - im Idealfall. Bei meiner Ausgabe erscheint das H dann auch so - aber z.B. der Querstrich ist nur ein Pixel dick - aber alle ist sauber 10 Pixel lang.


Nu aber meine Fragen

1) gibt es eine bessere Lösung, als das, was ich mache?
2) was mache ich falsch?
3) gibt es einen Beispiel-Code, wo ich was daraus lernen kann?


Vielen Dank!!!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DirectX9 +Direct3D+ Tileset876bilbo01.06.06 17:39

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel