Dreieck einfach in der Mitte anzeigen
-
Hallo zusammen.
Ich habe es mittlerweile anhand einiger Tuts geschafft, komplexere Körper etc. anzuzeigen, aber ich schaffe es irgendwie nie, ein einfaches Dreieck mit Farbinfos für die Verts in der Mitte anzuzeigen.
Ich kann zwar Dreiecke "links oben" anzeigen, wenn ich den RHW-Wert mit dazu nehme, aber das will ich ja nicht.
Ich lese überall, dass das Koordinatensystem in der Mitte plaziert ist und dann sollte doch eigentl. mein Dreieck auch dort gerendert werden, oder?!Habt ihr eventl. erfahrungsmäßig mögliche Erklärungen dafür? Oder einfach einen kurzen Tipp, wie ich ein farbiges Dreieck in der Mitte anzeigen kann?
MfG, Schuri
Nachtrag:
Ich hab hier nochmal die entscheidenden Codepassagen zusammengestellt:
Die FVF-Deklaration
struct SingleVertex { float x, y, z; DWORD color; }; #define D3DFVF_SINGLEVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE) LPDIRECT3DVERTEXBUFFER9 g_pVB;Die Einstellung des Vertexbuffers
SingleVertex vertices[] = { { 150.0f, 50.0f, 0.5f, 0xff0000 }, // x, y, z, rhw, color { 250.0f, 250.0f, 0.5f, 0x00ff00 }, { 50.0f, 250.0f, 0.5f, 0x0000ff }, }; g_lpD3DDevice->CreateVertexBuffer( 3*sizeof(SingleVertex), 0 , D3DFVF_SINGLEVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL); void* pVertices; g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ); memcpy( pVertices, vertices, sizeof(vertices) ); g_pVB->Unlock();Die Render-Sequenz
g_lpD3DDevice->Clear(0, NULL, // Total löschen D3DCLEAR_TARGET | // RenderTarget leeren D3DCLEAR_ZBUFFER, // Z-Buffer leeren D3DCOLOR_XRGB(171, 178, 153), // RenderTarget Füllwert 1.0f, 0); // Z-,Stncl Füllwert g_lpD3DDevice->BeginScene(); g_lpD3DDevice->SetStreamSource(0, g_pVB, 0, sizeof(SingleVertex)); g_lpD3DDevice->SetFVF(D3DFVF_SINGLEVERTEX); g_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1); g_lpD3DDevice->EndScene(); g_lpD3DDevice->Present(NULL, NULL, NULL, NULL);
-
Du hast was falsch verstanden. RHW Vertices heißen so weil man sie schon Vortransformiert. Deshalb exisitert für diese Vertices kein Weltkoordinatensystem.
Kurz und gut: Sie werden direkt im Screenspace angegeben.
-
Also RHW steht erstmal nur für Reciprocal of Homogeneous W.
Bye, TGGC (Demo or Die)