Direct3D FARBIGE Linie zeichnen
-
Hi,
folgender Quellcode:struct VertexLine2D { FLOAT x, y, z; D3DCOLOR color; }; VertexLine2D vertex_line_2d[] = { {0.0f, 0.1f, 0.0f, D3DCOLOR_XRGB(255, 0, 255)}, {0.0f, -0.1f, 0.0f, D3DCOLOR_XRGB(255, 0, 255)}, }; int const point_count = sizeof(vertex_line_2d) / sizeof(vertex_line_2d[0]); #define D3DFVF_CUSTOMLINE (D3DFVF_XYZ | D3DFVF_DIFFUSE) LPDIRECT3DVERTEXBUFFER9 pbuffer = NULL; d3ddev->CreateVertexBuffer(sizeof(vertex_line_2d), D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMLINE, D3DPOOL_DEFAULT, &pbuffer, NULL); VOID* pVoid; pbuffer->Lock(0, 0, &pVoid, 0); memcpy(pVoid, &vertex_line_2d[0], sizeof(vertex_line_2d)); pbuffer->Unlock(); d3ddev->SetFVF(D3DFVF_CUSTOMLINE); d3ddev->SetStreamSource(0, pbuffer, 0, sizeof(VertexLine2D)); d3ddev->DrawPrimitive(D3DPT_LINELIST, 0, point_count / 2); pbuffer->Release();Dargestellt wird eine schwarze Linie. Mir ist unklar, warum sie nicht anders gefaerbt ist (->D3DCOLOR_XRGB(255, 0, 255)).
Ich kenne mich sonst nicht weiter mit Direct3D und Konsorten aus, wollte nur eben eine farbige Linie zeichnen lassen. Fehlt noch irgendein Funktionsaufruf?
Forensuche/google habe ich schon bemueht, die gefundenen Beitraege waren irgendwie alle vom Grundlegenden Aufbau identisch (allerdings < Direct3D 9).
Ich habe noch Aufrufe von d3ddev->SetVertexShader gesehen, allerdings scheint sich da die API ein wenig geaendert zu haben, und es nimmt jetzt einen Pointer auf ein Interface entgegen, welches ich offensichtlich nicht habe.Oftmals sieht man auch noch die Nutzung von D3DFVF_XYZRHW und einen weiteren Floatwert in der Struktur fuer den Tiefenpuffer, dann wird aber garnichts mehr angezeigt

Hat jemand eine Idee, wo das Problem liegt?
Gruss,
DeSoVoDaMu
-
Licht?
-
Hmmmm, eine D3DPT_TRIANGLELIST kann ich doch auch ohne eingeschaltetes Licht farbig rendern. Naja ich schau mal was ich finden kann. Danke erstmal fuer den Hinweise.
Flott wie immer hier
EDIT: das wars in der Tat. Ein Aufruf von d3ddev->SetRenderState(D3DRS_LIGHTING, FALSE); und die Linie ist farbig. Da kann ich lange nach einem Fehler in dem Code suchen...

Gruss,
DeSoVoDaMu
-