d3d_model_vertex_texture Erklärung?

  • GM 8
  • d3d_model_vertex_texture Erklärung?

    Hallo,

    ich benutze die Funktion "d3d_model_vertex_texture", aber die Hilfe sagt mir nicht wirklich eindeutig wofür die letzten beiden Argumente stehen. Klar, sie haben was mit der Textur zu tun, aber was genau? Ich habe versucht eine Rennstrecke zu erstellen mit einer Textur mit dem folgenden Code: (pr_trianglelist ist an)

    x1, y1, z1, x2, y2, z1 sind die Koordinaten der Anfangslinie eines Streckensegments
    x3, y3, z2, x4, y4, z2 sind die Koordinaten der Endlinie eines Streckensegments

    GML-Quellcode

    1. //Face 1
    2. d3d_model_vertex_texture(model, x1, y1, z1, 0, 1);
    3. d3d_model_vertex_texture(model, x3, y3, z2, 0, 0);
    4. d3d_model_vertex_texture(model, x2, y2, z1, 1, 1);
    5. //Face 2
    6. d3d_model_vertex_texture(model, x4, y4, z2, 1, 0);
    7. d3d_model_vertex_texture(model, x2, y2, z1, 1, 1);
    8. d3d_model_vertex_texture(model, x3, y3, z2, 0, 0);


    Funzt auch einwandfrei. Nur will ich jetzt anstatt jedem Segment wie oben eine Textur zu geben, fünf Segmenten eine Textur zuordnen, sodass es praktisch über die Strecke hinweg gescaled wird. Nur wie mach ich das? Jeglich Versuche scheiterten.
    :| < Hallo. Nein ich bin nicht die Signatur, ich putze hier nur.
  • Die letzten 2 Parameter sind die UV-koordinaten eines jeweiligen Vertexes.



    Du gibst mit einem Wert von 0 bis 1 an, wo die UV Koordinate auf der Textur liegen sollte.
    Warum man das nicht in Pixeln angibt?
    Naja... stell dir vor du tauscht eine 256*256 Pixel große Textur gegen eine 1024*1024 PX textur aus.
    Die Werte von 0 bis 1 passen sich praktisch automatisch an die Texturauflösung an.

    Möchtest du nun z.B: eine Fläche haben wo die Textur auf der x-achse 5 mal vorkommt, so tausche die x-koordinaten der UV-textur (auf der Rechten seite des Rechteckes)
    gegen eine 5 aus. Vergiss davor aber nicht "texture_set_repeat(true);" zu aktivieren.

    Durch das überschreiten der 1, "überschreitest" du die grenzen der Textur. Mit "texture_set_repeat(true);" wird aber beim überschreiten der grenzen die Textur wiederholt gezeichnet.


    Bei dem Bild wird z.B: dass linke "Quad" ganz normal gezeichnet, während bei dem rechten Quad die Textur 2 mal auf der x-achse repeated wird um die doppelt so große Breite der "Wand" zu kompensieren.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von LEWA ()

  • Alter, danke! Sehr gute Erklärung und hat prima geholfen! Endlich hab ich das Problem lösen können :D Echt super, danke nochmal!
    :| < Hallo. Nein ich bin nicht die Signatur, ich putze hier nur.
  • Benutzer online 1

    1 Besucher