Autor Wątek: Teksturowane czworokąty (Textured quads)  (Przeczytany 790 razy)

Offline 0DFh

  • Użytkownik

# Październik 17, 2010, 15:42:25
Witam,
Zastanawiałem się czy pisać moją grę (Wind's Tales - Opowieści wiatru (PL)) z grafiką ASCII czy z grafiką 2D. Z grafiką ASCII nie ma problemu, bo wystarczy użyć metody ID3DXFont::DrawText, a jako jednostkę mam jeden piksel.

Jeżeli chodzi o grafikę 2D to przeczytałem o czworokątach z teksturą (textured quads), nawet nauczyłem się je wyświetlać. Jednak przerażające wydaje się dla mnie to, że wszystko jest oparte o trójwymiarowy układ współrzędnych z jakimiś niezrozumiałymi dla mnie jednostkami. Nie wyobrażam sobie ułożenia tych czworokątów równo obok siebie, a co dopiero przemieszczania czy sprawdzania kolizji.

Np. taki przykładowy czworokąt, duży na cały ekran ma takie współrzędne:

Vertex g_quadVertices[] =
{
{-36.0f, 27.0f, 60.0f,  0.0f,0.0f }, // x, y, z, tu, tv
{ 36.0f, 27.0f, 60.0f,  1.0f,0.0f }, // x, y, z, tu, tv
{-36.0f,-27.0f, 60.0f,  0.0f,1.0f }, // x, y, z, tu, tv
{ 36.0f,-27.0f, 60.0f,  1.0f,1.0f }  // x, y, z, tu, tv
};


Jak mam rozumieć te współrzędne? W jaki sposób operować na tych jednostkach w prosty sposób? Można je jakoś przeliczyć na piksele?

Piszę w Direct3D 9.

Pozdrawiam, 0DFh

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline _OskaR

  • Użytkownik

# Październik 17, 2010, 15:50:54
x,y,z - lokalizacja wierzchołka, tu,tv - koordynaty tekstur w 2D dla danego wierzchołka - http://msdn.microsoft.com/en-us/library/bb206245%28VS.85%29.aspx

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 17, 2010, 16:01:53
Hint: użyj formatu D3DFVF_XYZRHW, to też będziesz miał w pikselach (z jedyną wadą taką, że wszystko będzie pomijało vertex shader).

Stranger

  • Gość
# Październik 17, 2010, 16:11:25
Poczytaj. Mi wiele wyjaśniło (chociaż piszę w OpenGL), a myślę, że i Tobie pomoże.

Offline 0DFh

  • Użytkownik

# Październik 17, 2010, 16:32:38
Dziękuję za odpowiedzi. Szczególnie za link do tego artykułu o własnym module grafiki 2D, wygląda to na prosto i przejrzyście wytłumaczone.

Co do projektu to zastanowię się, czy zrobić go z grafiką 2D, czy ten pierwszy zrobić w ASCII, a kolejny już z grafiką 2D.
« Ostatnia zmiana: Październik 17, 2010, 16:34:15 wysłana przez 0DFh »

Offline Karol

  • Użytkownik

# Październik 17, 2010, 17:22:03
Co do projektu to zastanowię się, czy zrobić go z grafiką 2D, czy ten pierwszy zrobić w ASCII, a kolejny już z grafiką 2D.
Ew. zamiast tłuc się i samemu kodzić mini-silnik 2D skorzystaj z jakiegoś gotowego frameworka (ten.. no... polski ebay, czy jakiś esdeel, czy syfymyly). Albo, jeżeli nie zależy Ci na alpha blendingu i sprzętowym wsparciu to rysuj w GDI za pomocą WinAPI, smaruje się bardzo prosto. IMHO rzucać się na wstępie na D3D, żeby tylko namalować coś 2D jako coś pierwszego w ogóle to może zbyt głęboka woda.

Offline Ivian

  • Użytkownik
    • Ivian's Cave

# Październik 17, 2010, 18:23:16
ID3DXSprite
i mamy pixele.