DrawPrimitive



  • Hi,

    das ist so weit korrekt, aber wenn man z.B. größere Reads regelmäßig durchführen muss, dann empfiehlt sich ein statischer Buffer und zusätzliche eine Kopie der Vertexdaten (evtl. ohne Textur-Koords usw.) im System RAM für das Lesen der Daten.

    Wenn man größere Writes regelmäßig durchführen muss, dann ist ein dynamischer Buffer oftmals besser geeignet. So weit kann man das pauschalisieren 😃

    Ciao,
    Stefan



  • Original erstellt von Stefan Zerbst:
    **Hi,

    ich sollte nicht mehr so oft übermüdet Posting lesen. Ich hab an DrawPrimitiveUP gedacht :D**

    Weil der Faker sich "UP" nennt?



  • Für TGGC ist jeder der eine Frage hat ein Faker. Geh doch bitte in ein Forum in dem keine Fragen gestellt werden.

    PS: ich bin nicht "up"



  • Original erstellt von <gast>:
    **Für TGGC ist jeder der eine Frage hat ein Faker. Geh doch bitte in ein Forum in dem keine Fragen gestellt werden.

    PS: ich bin nicht "up"**

    Nicht jeder, nur du und die anderen Faker.



  • Original erstellt von TGGC:
    Nicht jeder, nur du und die anderen Faker.

    Muhahaha... 😃



  • Ich finde das es eine berechtigte Frage ist. Ein Anfänger hat halt solche Fragen. Es kommt sogar vor das ein Anfänger nicht weiss warum das Colorkey bei ihn nicht funktioniert. Woher soll er wissen das er erst das Pixelformat ermitteln muss ect...
    Genauso bei Fragen wie ob man DrawPrimitive benutzen soll.

    @up
    DrawPrimitive benutzt man innerhalb einer 3D Szene. Effizienter ist das benutzen von indizierten Vertices.

    @Stefan Z.
    In deinem ersten Band benutzt du auch DrawPrimitive. Was sagst du heute zu deiner damaligen Wahl?



  • Hi,

    ich benutze dort DrawPrimitiveUP 😃

    Für den Anfang ist das die beste Wahl, da man keinen Initialisierungsoverhead für Vertex-Buffer hat, das macht Direct3D dort automatisch. Und die Verwendung von Vertex- und Index-Buffern setzt auch voraus, dass man sich dort mit den Flags auskennt und diese richtig verwendet.

    Für intermediate Anwendungen würde ich die UP Methoden aber nicht nutzen.

    Ciao,
    Stefan



  • Hallo Stefan, was heißt "intermediate Anwendungen".



  • um vertexbuffer verwenden zu können muss nicht viele flags kennen!

    wenn man ständige schreibzugriffe auf den buffer hat, dann empfielt sich SYSTEMMEM, da MANAGED beim locken extrem viel zeit benötigt.

    CreateVertexBuffer(x*sizeof(MyVertex),D3DUSAGE_WRITEONLY,MYVERTEXSHADER,D3DPOOL_SYSTEMMEM,&m_MyVertexBuffer,NULL)

    ansonsten wenn de puffer vollkommen statisch sind, dann ist MANAGED die beste wahl

    CreateVertexBuffer(x*sizeof(MyVertex),D3DUSAGE_WRITEONLY,MYVERTEXSHADER,D3DPOOL_MANAGED,&m_MyVertexBuffer,NULL)

    D3DUSAGE_DYNAMIC soll zwar bei vielen ständigen zugriffen einen geschwindigkeitszuwachs bringen (laut sdk-doku) bei meinen programmen konnte ich da aber keinen messbaren unterschied festellen. ich habe bei meiner fontklasse, wenn ich den kompletten bildschirm bei 1280x1024 mit 8-punkt-bifmap schrift zuschreibe, ca. 300 fps und bei D3DUSAGE_DYNAMIC auch!

    "locken" geht ohne falgs auch am besten:

    m_MyVertexBuffer->Lock(0,0,(void**)&Vertex,0);
    m_MyVertexBUffer->Unlock();

    @stefan zerbst

    wenn man kein waschechter NOOB ist, dann ist die verwendung von vertexbuffern nicht anspruchsvoll und leicht zu handhaben!



  • Hi,

    wie performant die jeweilige Variante ist hängt aber auch von der Hardware und den Treibern ab. Und nicht zuletzt von der Gesamtlast die auf der Grafikkarte lastet 😉

    Ciao,
    Stefan


Anmelden zum Antworten