Vertexe neu anordnen, aber wie?



  • Hiho, ich bins mal wieder 🙂

    ich habe jetzt sehr sehr lange gegoglet und mir auch ein neues Buch gekauft, aber nichts hilft mir weiter ...

    Also, ich habe jetzt die Vertics so angeordnet (standard ... ^^)

    0-1-2
    |/|/|
    3-4-5
    |/|/|
    6-7-8

    Nun wird immer überall gezeigt wie sie neu angeordnet werden, wie ich das machen müsste ist mir ja bewusst:

    also dann müsste ich die vertics so zeichnen:

    0-1-3, 1-3-4, 1-4-2, 2-4-5, 3-4-6, 4-6-7, 4-7-5, 5-7-8 ...

    Aber wie ordne ich die denn nun neu an?


  • Mod

    aus welchem grund willst du sie ueberhaupt umordnen?



  • Kein Wunder, dass du beim googeln nix findest. Es heißt weder Vertexe noch Vertics, sondern Vertices.

    Ansonsten ist deine Frage absolut ungenau.



  • wie zeichnest du sie denn?
    als einzelne triangles oder als triangle_strip? oder anders?



  • Showball schrieb:

    0-1-3, 1-3-4, 1-4-2, 2-4-5, 3-4-6, 4-6-7, 4-7-5, 5-7-8 ...

    Vermische nicht CW (im Uhrzeigersinn) und CCW (gegen den Uhrzeigersinn).

    Showball schrieb:

    wie ich das machen müsste ist mir ja bewusst

    Showball schrieb:

    Aber wie ordne ich die denn nun neu an?

    Außerdem widersprichst du dir. 🙂



  • wie ich das machen müsste ist mir ja bewusst
    

    Damit meine ich wie ich sie anordnen müsste(in welcher rheinfolge)

    also, ich benutze Triangle-Strip, aber die "Vertices" werden dann ja trotzdem noch so gezeichnet:

    0-1-2, 3-4-5, 6-7-8

    und das sind dann ja nur un sichtbare linien^^

    Nun Frage ich ich wie ich die Punkte neu anordnen kann, dass auch dreiecke gezeichnet werden. Oder gibt es da nen kleinen trick?



  • Irgendwie kannst du dich echt nicht klar ausdrücken...

    1. Nimm eine TriangleList
    2. Wenns unbedingt ein TriStrip sein soll kannst du den Strip resetten. Dazu nach "degeneriertem Dreieck" googeln.



  • Ein strip ist doch wesentlich preformanter, oder etwa ncht? und bei einer List odnet der mir die automatisch net an oder wie?



  • Ein Strip ist nicht performanter, aber du kannst damit Speicher sparen.
    Ich benutze wann immer es geht indizierte TriangleLists.

    Showball schrieb:

    und bei einer List odnet der mir die automatisch net an oder wie?

    Lies dir nochmal genau durch was Lists und Strips sind. Einmal gibst du für jedes Dreieck 3 Vertices an und ein anderes mal wird jedes n-te (n>1) Dreieck aus einem Vertex + der Kante mit den letzten 2 Vertices des n-1-ten Dreiecks gebildet.



  • Ja, hab da gerade nen kleine erklärung über Lsts und Strips gefunden.

    Naja, auf jeden fall kann ich mein project nicht mehr dubuggen:

    Projekt : error PRJ0002 : Fehler "-1" wurde von "C:\WINDOWS\system32\cmd.exe" zurückgegeben.

    weiß jemand was das zu bedeuten hat?



  • lo, ich bekomme jetzt immer den fehler, egal welches project ich debugge???

    Helft mir bidde!





  • Ja ich habe jetzt einfach mal neustart gemacht, jetzt gehts wieder^^



  • So, da mein code nun zur verfügung steht, fange ich nochmal von vorne an, mit nur einem Dreieck^^

    Also, ich habe jetzt ein Dreieck, mit den folgenden Punkten:

    CUSTOMVERTEX t_vert[] =
        {
            { 320.0f, 50.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 0, 255), }, // punkt 1
            { 520.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 255, 0), }, // punkt 2
            { 120.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0), }, // punkt 3
        };
    

    Und mit einer TRIANGLELIST render ich es:

    d3ddev->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
    

    Nun zeichnet er das dreieck so, oder? :

    1-2-3

    ???

    Aber wenn ich die Punkte nun aus einer Heightmap hole, die so aufgebaut ist:

    1-2-3-4
    5-6-7-8
    9-a-b-c
    d-e-f-g

    zeichnet er soch nur unsichtbare linien oder?

    Oder habe ich da was falsch verstanden?



  • Unsichtbare Linien, hä? Du musst halt einfach die Vertices (abhängig vom Primitiventyp) richtig in den VertexBuffer packen. Bei einer Liste z.B. 125, 526 usw. Oder eleganter: Jeden Vertex einmal in den VB und dann nur noch per Indizes referenzieren.



  • Und wie mache ich das??^^ (jetzt bin ich wieder bei meiner eigentlichen Frage)



  • OK, die Frage war ein wenig kurz!

    Also, ich lade die Vertices im Moment so in den Vertex Buffer:

    t_buffer->Lock(0, 0, (void**)&pVoid, 0);
        memcpy(pVoid, t_vert, sizeof(t_vert));
        t_buffer->Unlock();
    

    Und wie Lade ich sie jetzt "richtig" in den Buffer?



  • In der DX Doku sind der Vertex- und IndexBuffer und seine Handhabung ausführlich beschrieben.


Anmelden zum Antworten