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

Stefan

Alter Hase

  • »Stefan« ist der Autor dieses Themas

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

1

11.01.2005, 21:26

VertexBuffer verändern!?

Hallo,

ich habe einen VertexBuffer mit der TriBaseEngine erstellt und möchte nun, einen bestimmten Vertex nachträglich verändern!
So ist meine Vorgangsweise:

C-/C++-Quelltext

1
2
3
4
5
SVertex4 Vertex;
        VerticesTOP->GetVertex(0,&Vertex);
        Vertex.dwColor = (DWORD)(tbColor(1.0f,1.0f,0.0f));
        VerticesTOP->SetVertex(0,&Vertex);
        VerticesTOP->Update();


Leider funktioniert das so nicht, irgendwie stimmen dann die gesammten Werte des VertexBuffers nicht mehr! Aber wenn ich es so mache, geht alles:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
for(int i = 0; i < VerticesTOP->GetMaxVertices(); i++)
        {
        SVertex4 Vertex;
        VerticesTOP->GetVertex(i,&Vertex);
        Vertex.dwColor = (DWORD)(tbColor(1.0f,1.0f,0.0f));
        VerticesTOP->SetVertex(i,&Vertex);
        }
        VerticesTOP->Update();



Was mache ich den nun falsch? Ich komm heute irgendwie nicht drauf...


cya,
Stefan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

11.01.2005, 22:16

Mit welchen Flags erstellt und mit welchen gelockt?

Stefan

Alter Hase

  • »Stefan« ist der Autor dieses Themas

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

3

11.01.2005, 23:34

so werden sie erstellt:

C-/C++-Quelltext

1
2
3
4
5
6
if(VerticesTOP->Init(1000 * sizeof(SVertex4), sizeof(SVertex4),
        D3DFVF_XYZ | D3DFVF_DIFFUSE, D3DUSAGE_DYNAMIC |D3DUSAGE_WRITEONLY,
        D3DPOOL_DEFAULT))
    {
        return TB_ERROR;
    }



hm, wie meinst du das mit locken, ich lock die nicht?


cya,
Stefan

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

12.01.2005, 18:34

naja, wenn du einen vertex buffer verändern willst, musst du ihn locken und bekommst dabei einen zeiger auf den speicherbereich in den du deine vertices reinkopierst.
wenn du fertig bist musst du ihn wieder entlocken.

ka ob man das bei dem von tribase machen muss oder nicht...
ich schätz mal ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

12.01.2005, 18:40

D3DUSAGE_WRITEONLY Das solltest du schonmal weglassen, da du ja anscheinend auch ausliest (GetVertex).

Stefan

Alter Hase

  • »Stefan« ist der Autor dieses Themas

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

6

14.01.2005, 20:33

Zitat von »"Nox"«

D3DUSAGE_WRITEONLY Das solltest du schonmal weglassen, da du ja anscheinend auch ausliest (GetVertex).


hm, hat leider nichts genützt..

@dot
Habe leider keine Funktion zum Locken entdeckte, ich denke mal das wird somit automatisch gemacht..


cya,
Stefan

Werbeanzeige