Korzystanie z samouczka tutaj, udało mi się dostać czerwony trójkąt na moim ekranie: http://www.directxtutorial.com/Lesson.aspx?lessonid=9-4-4Rysowanie prostokąta z Direct X
CUSTOMVERTEX OurVertices[] =
{
{ 0, 0, 0, 1.0f, D3DCOLOR_XRGB(127, 0, 0) },
{ WIDTH, 0, 0, 1.0f, D3DCOLOR_XRGB(127, 0, 0) },
{ 0, 300, 0, 1.0f, D3DCOLOR_XRGB(127, 0, 0) },
{ WIDTH, 300, 0, 1.0f, D3DCOLOR_XRGB(127, 0, 0) }
};
d3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),
0,
CUSTOMFVF,
D3DPOOL_MANAGED,
&vBuffer,
NULL);
VOID* pVoid; // the void* we were talking about
vBuffer->Lock(0, 0, (void**)&pVoid, 0); // locks v_buffer, the buffer we made earlier
memcpy(pVoid, OurVertices, sizeof(OurVertices)); // copy vertices to the vertex buffer
vBuffer->Unlock(); // unlock v_buffer
d3dDevice->SetFVF(CUSTOMFVF);
d3dDevice->SetStreamSource(0, vBuffer, 0, sizeof(CUSTOMVERTEX));
d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
Ale widać, że naprawdę chcę być rysowanie prostokąta.
Zmieniłem prymityw, aby narysować 2 trójkąty i rozszerzyłem rozmiar bufora do 4 * rozmiaru mojego niestandardowego wierzchołka, ale naprawdę nie mogę powiedzieć, że rozumiem jak dostać to z mojego trójkąta do mojego prostokąta Chciałbym:
Czy istnieje lepszy sposób rysowania prostokąta zamiast używać quad rozważa chcę po prostu podwiesić jakiś tekst na wierzchu coś takiego:
Popraw mnie, jeśli się mylę, ale powinieneś mieć cztery wierzchołki i bufor indeksu zawierający właściwe wskaźniki dla dwóch trójkątów, aby utworzyć prostokąt. – chris
Więc 4 wierzchołki = 4 punkty kwadratu i indeksy to kolejność ich losowania? Oczywiście jestem całkowicie świeża w tej idei werteksów, czy mógłbym trochę poradzić sobie z tą przeszkodą? A może przykład konkretnego prostokąta? – Jimmyt1988
Tak więc w twoim buforze wierzchołków miałbyś na przykład '{(-2, 2, 0), (2, 2, 0), (2, 1, 0), (-2, 1, 0)} '(u góry po lewej, u góry po prawej, u dołu po prawej, u dołu po lewej) i twój bufor indeksu może zawierać' {(0, 1, 3), (3, 1, 2)} '(TL, TR, BL, a następnie BL, TR, BR). Bufor indeksu po prostu informuje, które wierzchołki przychodzą w jakiej kolejności. Powinieneś być świadomy tego, czy to CW czy CCW, jak również dla uboju. Musisz również dodać "SetIndexBuffer" itd. Wybaczcie mi, ponieważ minęło trochę czasu, odkąd to zrobiłem, i nigdy nie lubiłem tych tak bardzo, jak gotowych funkcji siatki. – chris