Skocz do zawartości

Zablokowane [DirectX] Problem z wierzcholkami (?)...


Solmis

Rekomendowane odpowiedzi

No wiec mam nietypowy problem. :P

Cały kod się kompiluje i niby działa(http://www.nopaste.pl/ap4).

Problem pojawia się, gdy:

 

1. Ustawiam myszka 10 trójkątów w różnych miejscach ekranu

2. Potem usuwam je przy pomocy RMB.

3. [Tu pojawia się błąd] Ponownie ustawiam 10 trójkątów przy użyciu myszki (LPM).

Pierwszy trójkąt jest OK, ale gdy ustawie drugi to zmienia się pozycja pierwszego itd. :/

Odnośnik do komentarza
Udostępnij na innych stronach

sprawdź kod:

 

void update()

{

CUSTOMVERTEX g_Vertices[] =

{

{(x[1]-x[1])*cos(angle[1])-(y[1]-100.0f-y[1])*sin(angle[1])+x[1], (x[1]-x[1])*sin(angle[1])+(y[1]-100.0f-y[1])*cos(angle[1])+y[1], 0.5f, 1.0f, 0xffff0000,},

{(x[1]+100.0f-x[1])*cos(angle[1])-(y[1]+100.0f-y[1])*sin(angle[1])+x[1], (x[1]+100.0f-x[1])*sin(angle[1])+(y[1]+100-y[1])*cos(angle[1])+y[1], 0.5f, 1.0f, 0xff622020,},

{(x[1]-100.0f-x[1])*cos(angle[1])-(y[1]+100.0f-y[1])*sin(angle[1])+x[1], (x[1]-100.0f-x[1])*sin(angle[1])+(y[1]+100-y[1])*cos(angle[1])+y[1], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[2]-x[2])*cos(angle[2])-(y[2]-100.0f-y[2])*sin(angle[2])+x[2], (x[2]-x[2])*sin(angle[2])+(y[2]-100.0f-y[2])*cos(angle[2])+y[2], 0.5f, 1.0f, 0xffff0000,},

{(x[2]+100.0f-x[2])*cos(angle[2])-(y[2]+100.0f-y[2])*sin(angle[2])+x[2], (x[2]+100.0f-x[2])*sin(angle[2])+(y[2]+100-y[2])*cos(angle[2])+y[2], 0.5f, 1.0f, 0xff622020,},

{(x[2]-100.0f-x[2])*cos(angle[2])-(y[2]+100.0f-y[2])*sin(angle[2])+x[2], (x[2]-100.0f-x[2])*sin(angle[2])+(y[2]+100-y[2])*cos(angle[2])+y[2], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[3]-x[3])*cos(angle[3])-(y[3]-100.0f-y[3])*sin(angle[3])+x[3], (x[3]-x[3])*sin(angle[3])+(y[3]-100.0f-y[3])*cos(angle[3])+y[3], 0.5f, 1.0f, 0xffff0000,},

{(x[3]+100.0f-x[3])*cos(angle[3])-(y[3]+100.0f-y[3])*sin(angle[3])+x[3], (x[3]+100.0f-x[3])*sin(angle[3])+(y[3]+100-y[3])*cos(angle[3])+y[3], 0.5f, 1.0f, 0xff622020,},

{(x[3]-100.0f-x[3])*cos(angle[3])-(y[3]+100.0f-y[3])*sin(angle[3])+x[3], (x[3]-100.0f-x[3])*sin(angle[3])+(y[3]+100-y[3])*cos(angle[3])+y[3], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[4]-x[4])*cos(angle[4])-(y[4]-100.0f-y[4])*sin(angle[4])+x[4], (x[4]-x[4])*sin(angle[4])+(y[4]-100.0f-y[4])*cos(angle[4])+y[4], 0.5f, 1.0f, 0xffff0000,},

{(x[4]+100.0f-x[4])*cos(angle[4])-(y[4]+100.0f-y[4])*sin(angle[4])+x[4], (x[4]+100.0f-x[4])*sin(angle[4])+(y[4]+100-y[4])*cos(angle[4])+y[4], 0.5f, 1.0f, 0xff622020,},

{(x[4]-100.0f-x[4])*cos(angle[4])-(y[4]+100.0f-y[4])*sin(angle[4])+x[4], (x[4]-100.0f-x[4])*sin(angle[4])+(y[4]+100-y[4])*cos(angle[4])+y[4], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[5]-x[5])*cos(angle[5])-(y[5]-100.0f-y[5])*sin(angle[5])+x[5], (x[5]-x[5])*sin(angle[5])+(y[5]-100.0f-y[5])*cos(angle[5])+y[5], 0.5f, 1.0f, 0xffff0000,},

{(x[5]+100.0f-x[5])*cos(angle[5])-(y[5]+100.0f-y[5])*sin(angle[5])+x[5], (x[5]+100.0f-x[5])*sin(angle[5])+(y[5]+100-y[5])*cos(angle[5])+y[5], 0.5f, 1.0f, 0xff622020,},

{(x[5]-100.0f-x[5])*cos(angle[5])-(y[5]+100.0f-y[5])*sin(angle[5])+x[5], (x[5]-100.0f-x[5])*sin(angle[5])+(y[5]+100-y[5])*cos(angle[5])+y[5], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[6]-x[6])*cos(angle[6])-(y[6]-100.0f-y[6])*sin(angle[6])+x[6], (x[6]-x[6])*sin(angle[6])+(y[6]-100.0f-y[6])*cos(angle[6])+y[6], 0.5f, 1.0f, 0xffff0000,},

{(x[6]+100.0f-x[6])*cos(angle[6])-(y[6]+100.0f-y[6])*sin(angle[6])+x[6], (x[6]+100.0f-x[6])*sin(angle[6])+(y[6]+100-y[6])*cos(angle[6])+y[6], 0.5f, 1.0f, 0xff622020,},

{(x[6]-100.0f-x[6])*cos(angle[6])-(y[6]+100.0f-y[6])*sin(angle[6])+x[6], (x[6]-100.0f-x[6])*sin(angle[6])+(y[6]+100-y[6])*cos(angle[6])+y[6], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[7]-x[7])*cos(angle[7])-(y[7]-100.0f-y[7])*sin(angle[7])+x[7], (x[7]-x[7])*sin(angle[7])+(y[7]-100.0f-y[7])*cos(angle[7])+y[7], 0.5f, 1.0f, 0xffff0000,},

{(x[7]+100.0f-x[7])*cos(angle[7])-(y[7]+100.0f-y[7])*sin(angle[7])+x[7], (x[7]+100.0f-x[7])*sin(angle[7])+(y[7]+100-y[7])*cos(angle[7])+y[7], 0.5f, 1.0f, 0xff622020,},

{(x[7]-100.0f-x[7])*cos(angle[7])-(y[7]+100.0f-y[7])*sin(angle[7])+x[7], (x[7]-100.0f-x[7])*sin(angle[7])+(y[7]+100-y[7])*cos(angle[7])+y[7], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[8]-x[8])*cos(angle[8])-(y[8]-100.0f-y[8])*sin(angle[8])+x[8], (x[8]-x[8])*sin(angle[8])+(y[8]-100.0f-y[8])*cos(angle[8])+y[8], 0.5f, 1.0f, 0xffff0000,},

{(x[8]+100.0f-x[8])*cos(angle[8])-(y[8]+100.0f-y[8])*sin(angle[8])+x[8], (x[8]+100.0f-x[8])*sin(angle[8])+(y[8]+100-y[8])*cos(angle[8])+y[8], 0.5f, 1.0f, 0xff622020,},

{(x[8]-100.0f-x[8])*cos(angle[8])-(y[8]+100.0f-y[8])*sin(angle[8])+x[8], (x[8]-100.0f-x[8])*sin(angle[8])+(y[8]+100-y[8])*cos(angle[8])+y[8], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[9]-x[9])*cos(angle[9])-(y[9]-100.0f-y[9])*sin(angle[9])+x[9], (x[9]-x[9])*sin(angle[9])+(y[9]-100.0f-y[9])*cos(angle[9])+y[9], 0.5f, 1.0f, 0xffff0000,},

{(x[9]+100.0f-x[9])*cos(angle[9])-(y[9]+100.0f-y[9])*sin(angle[9])+x[9], (x[9]+100.0f-x[9])*sin(angle[9])+(y[9]+100-y[9])*cos(angle[9])+y[9], 0.5f, 1.0f, 0xff622020,},

{(x[9]-100.0f-x[9])*cos(angle[9])-(y[9]+100.0f-y[9])*sin(angle[9])+x[9], (x[9]-100.0f-x[9])*sin(angle[9])+(y[9]+100-y[9])*cos(angle[9])+y[9], 0.5f, 1.0f, 0xff4C0E0E,},

 

{(x[10]-x[10])*cos(angle[10])-(y[10]-100.0f-y[10])*sin(angle[10])+x[10], (x[10]-x[10])*sin(angle[10])+(y[10]-100.0f-y[10])*cos(angle[10])+y[10], 0.5f, 1.0f, 0xffff0000,},

{(x[10]+100.0f-x[10])*cos(angle[10])-(y[10]+100.0f-y[10])*sin(angle[10])+x[10], (x[10]+100.0f-x[10])*sin(angle[10])+(y[10]+100-y[10])*cos(angle[10])+y[10], 0.5f, 1.0f, 0xff622020,},

{(x[10]-100.0f-x[10])*cos(angle[10])-(y[10]+100.0f-y[10])*sin(angle[10])+x[10], (x[10]-100.0f-x[10])*sin(angle[10])+(y[10]+100-y[10])*cos(angle[10])+y[10], 0.5f, 1.0f, 0xff4C0E0E,},

};

 

Tylko 10 wierzchołków ;)

 

PS: nie doczytałem ale i tak:

 

case WM_RBUTTONDOWN:

if (triangles > 1)

triangles -= 1;

return 0;

 

tylko odejmuje ale nie "czyści" indeksu.

Odnośnik do komentarza
Udostępnij na innych stronach

Uważam, że to obliczenie jest nie potrzebne ( wynik = 0 ), bo każde obliczenie obciąża procesor.

PS: na twoim miejscu ( no głównie z lenistwa ;] ), napisałbym se funkcje które zwróciły by te wszystkie elementy.

double funkcja( int i )
{
return (x[i]-x[i])*cos(angle[i])-(y[i]-100.0f-y[i])*sin(angle[i])+x[i];
}

I łatwiej by ci było odnaleźć się w kodzie, i na bank byś rozwiązał dylemat ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...