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
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
float *Vertex; WORD *Index; _3DOT_Vector2 buffer; if(MainCl->pD3DDev->CreateVertexBuffer(128,0,D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1,D3DPOOL_MANAGED,&VertexBuffer,NULL)!=D3D_OK) { _3DOT_LogWr("Particle Vertexbuffer Fehler !",1); VertexBuffer=NULL; } if(MainCl->pD3DDev->CreateIndexBuffer(12,0,D3DFMT_INDEX16,D3DPOOL_MANAGED,&IndexBuffer,NULL)!=D3D_OK) { _3DOT_LogWr("Particle Index Fehler !",1); IndexBuffer=NULL; } _3DOT_LogWr("Vertex u. Index-buffer erstellt !",1); if(ParticleSizeMax.entry1 || ParticleSizeMax.entry2) { buffer.entry1=(float)_3DOT_Random((int)(ParticleSizeMin.entry1*1000),(int)(ParticleSizeMax.entry1*1000))/1000; buffer.entry2=buffer.entry1; } else { buffer.entry1=ParticleSizeMin.entry1; buffer.entry2=buffer.entry1; } _3DOT_LogWr("Particlegrösse erstellt !",1); VertexBuffer->Lock(0,0,(void**)&Vertex,D3DLOCK_NOSYSLOCK); IndexBuffer->Lock(0,0,(void**)&Index,D3DLOCK_NOSYSLOCK); Vertex[0]=Pointer->Pos.x-buffer.entry1/2; // Position Vertex[1]=Pointer->Pos.y+buffer.entry2/2; Vertex[2]=Pointer->Pos.z; Vertex[3]=0.0f; // Normale Vertex[4]=0.0f; Vertex[5]=1.0f; Vertex[6]=0.0f; // uv Vertex[7]=0.0f; _3DOT_LogWr("Erster Vertex gefüllt !",1); Vertex[8]=Pointer->Pos.x+buffer.entry1/2; Vertex[9]=Pointer->Pos.y+buffer.entry2/2; Vertex[10]=Pointer->Pos.z; Vertex[11]=0.0f; Vertex[12]=0.0f; Vertex[13]=1.0f; Vertex[14]=uvTexturRD.entry1; Vertex[15]=0.0f; _3DOT_LogWr("Zweiter Vertex gefüllt !",1); Vertex[16]=Pointer->Pos.x+buffer.entry1/2; Vertex[17]=Pointer->Pos.y-buffer.entry2/2; Vertex[18]=Pointer->Pos.z; Vertex[19]=0.0f; Vertex[20]=0.0f; Vertex[21]=1.0f; Vertex[22]=uvTexturRD.entry1; Vertex[23]=uvTexturRD.entry2; _3DOT_LogWr("...",1); Vertex[24]=Pointer->Pos.x-buffer.entry1/2; Vertex[25]=Pointer->Pos.y-buffer.entry2/2; Vertex[26]=Pointer->Pos.z; Vertex[27]=0.0f; Vertex[28]=0.0f; Vertex[29]=1.0f; Vertex[30]=0.0f; Vertex[31]=uvTexturRD.entry2; _3DOT_LogWr("Vertexbuffer gefullt !",1); Index[0]=1; Index[1]=2; Index[2]=3; Index[3]=3; Index[4]=4; Index[5]=1; _3DOT_LogWr("Indexbuffer gefüllt !",1); VertexBuffer->Unlock(); IndexBuffer->Unlock(); _3DOT_LogWr("Vertex u. Indexbuffer Initialisiert !",1); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Vertex 1, index 0 Vertex[0]=Pointer->Pos.x-buffer.entry1/2; // Position Vertex[0]=Pointer->Pos.y+buffer.entry2/2; Vertex[0]=Pointer->Pos.z; Vertex[0]=0.0f; // Normale Vertex[0]=0.0f; Vertex[0]=1.0f; Vertex[0]=0.0f; // uv Vertex[0]=0.0f; // Vertex 2, index 1 Vertex[1]=Pointer->Pos.x-buffer.entry1/2; // Position Vertex[1]=Pointer->Pos.y+buffer.entry2/2; Vertex[1]=Pointer->Pos.z; Vertex[1]=0.0f; // Normale Vertex[1]=0.0f; Vertex[1]=1.0f; Vertex[1]=0.0f; // uv Vertex[1]=0.0f; // usw. |
Zitat von »"drz"«
@ TrikkieMikkie, ich glaub bei deiner Füll-Variante würdest du immer wieder des erste Element der Vertexstruktur im VB überschreiben.
Zitat von »"drz"«
Wäre ich Bart Simpson, müsste ich jetzt wohl 100x "Ich muss die Beiträge richtig lesen." an die Tafel schreiben. <:
Werbeanzeige