line zeichen...
-
Also irgendie hat direct3d was gegen mich....
Wie zum Teufle schaffe ich es eine einfach line in nem 3D raum zu zeichen? Alles was ich finde benötigt nur 2 koordinaten womit ich aber nichts anfangen kann da ich ne z-achse brauche.. Also könnte mir bitte eine die 3D version von DrawLine and die Stirn tackern, ich find sie net... (Sinn und zweck des ganzen ist ein 3D Raster in einen Raum zu zeichen. Fals es da schon was fertiges gibt bitte auch gleich posten:p )
big thx
-
Du nimmst einfach einen stinknormalen Vertex, wie du ihn auch für Triangles benutztz und gibtst beim Rendern statt z.B. D3DPT_TRIANGLELIST oder D3DPT_TRIANGLESTRIP D3DPT_LINELIST oder D3DPT_LINESTRIP mit.
-
naja.. ne linie gibts jetzt schon mal
Bei mehreren hängts es schon wieder..
hier mal etwas code:
GB3D_VETREX v[4]; // Vertex-Array // 1. line v[0].position = D3DXVECTOR3(0,0, 0); v[0].color = D3DCOLOR_XRGB(255,0,0); v[1].position = D3DXVECTOR3( 0, 1, 0); v[1].color = D3DCOLOR_XRGB(255,0,0); // 2. line v[2].position = D3DXVECTOR3( 0,0, 0); v[2].color = D3DCOLOR_XRGB(0,255,0); v[3].position = D3DXVECTOR3( 1,1, 0); v[3].color = D3DCOLOR_XRGB(0,255,0); if( FAILED( pd3dDevice->CreateVertexBuffer( sizeof(v), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &m_D3DVertexBuffer))) { return FALSE; } // Kopieren der Daten in den Vertexbuffer VOID* pVertex; m_D3DVertexBuffer->Lock( 0, sizeof(v), (BYTE**)&pVertex, 0 ); memcpy( pVertex, v, sizeof(v) ); m_D3DVertexBuffer->Unlock();
so erzeuge ich vetrex.
So rendere ich es:void C3DRaster::Render(LPDIRECT3DDEVICE8 pd3dDevice) { pd3dDevice->SetStreamSource( 0, m_D3DVertexBuffer, sizeof(GB3D_VETREX) ); pd3dDevice->SetVertexShader( D3DFVF_CUSTOMVERTEX ); pd3dDevice->DrawPrimitive ( D3DPT_LINELIST , 0, 1 ); }
Da seh ich nun ne schöne rote line, aber wo zum geier ist die grüne geblieben!?
Muss ich etwas für jede line nen eigenen vetrex buffen anlegen!?!?kann nicht sein, oder?
-
mist warum finde ich die fehler immer 10s. nach dem ich den Post gedrückt habe... ARGL
pd3dDevice->DrawPrimitive ( D3DPT_LINELIST , 0, 1 );
*hust* *hust*