Drittelten Quader darstellen mit Indexbuffer, Problem
-
HI!
Leute, die ich mit meinen Fragen nerve ALT+F4 (v.a. TGGC ;))Verzweifel aber echt
Ich will einen Quader rendern, wollte mich mal Schritt für Schritt rantasten. Erst die Linke Seite, dann die Obere Seite . Bin jetzt bei der Oberen Seite
Das erste Dreieck der oberen Seite lässt sich noch gut rendern, jedoch das zweite zieht sich an die linke obere Ecke des Bildschirms!!!!!! Ich verstehe absolut nicht wieso, die Größenangaben sollten alle stimmen
Hier mal der Code:
TVertex v[6]; LPDIRECT3DVERTEXBUFFER8 D3D_VertexBuffer; LPDIRECT3DINDEXBUFFER8 D3D_IndexBuffer; WORD dwIndicies[12]; ZeroMemory(&v, sizeof(v)); D3D_VertexBuffer = NULL; D3D_IndexBuffer; ZeroMemory(&dwIndicies, sizeof(dwIndicies)); //Erstellen der linken Seite und der oberen Seite: v[i].position.x = -0.5; v[i].position.y = -0.5; v[i].position.z = 0.0; v[i].color = 0xFF00FF00; i++; v[i].position.x = -0.5; v[i].position.y = 0.5; v[i].position.z = 0.0; v[i].color = 0xFF00FF00; i++; v[i].position.x = -0.5; v[i].position.y = -0.5; v[i].position.z = 5.0; v[i].color = 0xFF00FF00; i++; v[i].position.x = -0.5; v[i].position.y = 0.5; v[i].position.z = 5.0; v[i].color = 0xFF00FF00; i++; v[i].position.x = 0.5; v[i].position.y = 0.5; v[i].position.z = 0.0; v[i].color = 0xFF00FF00; i++; v[i].position.x = 0.5; v[i].position.y = 0.5; v[i].position.z = 5.0; v[i].color = 0xFF00FF00; i++; Indexbuffer: dwIndicies[0] = 0; dwIndicies[1] = 1; //Links unten dwIndicies[2] = 2; dwIndicies[3] = 1; dwIndicies[4] = 2; //Links oben dwIndicies[5] = 3; dwIndicies[6] = 1; dwIndicies[7] = 3; //Oben links dwIndicies[8] = 5; dwIndicies[9] = 3; dwIndicies[10] = 5; //Oben rechts <- wird falsch dargestellt :/ dwIndicies[11] = 7; dd_obj.lpD3DDevice->CreateVertexBuffer(sizeof(v),0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &D3D_VertexBuffer); D3D_VertexBuffer->Lock(0, sizeof(v), (BYTE**)&pVertex, 0); memcpy(pVertex, v, sizeof(v)); D3D_VertexBuffer->Unlock(); dd_obj.lpD3DDevice->CreateIndexBuffer(sizeof(dwIndicies), 0, D3DFMT_INDEX16, D3DPOOL_MANAGED, &D3D_IndexBuffer); D3D_IndexBuffer->Lock(0, sizeof(dwIndicies), (BYTE**)&pIndex, 0); memcpy(pIndex, &dwIndicies[0], sizeof(dwIndicies)); D3D_IndexBuffer->Unlock(); //Rendern: dd_obj.lpD3DDevice->Clear(0, NULL, // Total löschen D3DCLEAR_TARGET , // Z-Buf neu Füllen D3DCOLOR_XRGB(50,10,10), // leichtes Dunkelrot 1.0f, 0); dd_obj.lpD3DDevice->BeginScene(); dd_obj.lpD3DDevice->SetStreamSource( 0, Terrain.D3D_VertexBuffer, sizeof(TVertex)); dd_obj.lpD3DDevice->SetVertexShader( D3DFVF_CUSTOMVERTEX ); dd_obj.lpD3DDevice->SetIndices(Terrain.D3D_IndexBuffer, 0); dd_obj.lpD3DDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 7, 0, 5); dd_obj.lpD3DDevice->EndScene(); dd_obj.lpD3DDevice->Present(0,0,0,0);
Muss man vielleicht was beim Devicecreaten oder so beachten? Ich weiß echt nich mehr weiter :((
Kevin
-
ach gott, ich bin so selten behindert - wahnsinn...wer hat mich nur bei meiner Geburt fallen gelassen (sooo jetz kann TGGC nix mehr sagen ;))
Hab auf meinem Blatt das gesamte Quader aufgemalt und andere Eckpunktbezeichnungen als in diesem Krüppelquader, sorry für den Thread - sorry Mod - darfst löschen
-
Surkevin schrieb:
ach gott, ich bin so selten behindert - wahnsinn...wer hat mich nur bei meiner Geburt fallen gelassen (sooo jetz kann TGGC nix mehr sagen ;))
Doch.
-
Surkevin schrieb:
ach gott, ich bin so selten behindert - wahnsinn...wer hat mich nur bei meiner Geburt fallen gelassen (sooo jetz kann TGGC nix mehr sagen ;))
würde mich freuen wenn du sowas lässt... danke...
-> closed