Ich weiß zwar, das dieser Thread schon ein wenig in die Jahr gekommen ist (10 Jahre
) aber trotzdem
bin ich beim Googlen recht schnell auf diese Seite gestoßen, deswegen poste ich hier mal meine Lösung
zu dem pulsierendem Dreieck.
Dein Fehler lag daran, dass du die Position der Vertizes verändern wolltest und nicht die Farbe. Also ich hab
einfach den Rot-Grün-Blau Absolutfarben eine Sinusfunktion aufgezwungen
da aber eine Sinusfunktion mal
im Plus und mal im Minus ist und bei Minus bzw Null keine Farbe ausgeben wird, habe ich wenn zb Rot auf 0 oder
negativ ist, eine negierte Sinusfunktion auf Grün gelegt, damit wieder eine Farbe angezeigt wird.
Man kann auch die Werte die ich auf 0.0f gesetzt habe auf zb 0.5f ändern, somit wird das Dreieck nie richtig schwarz
aber di Farben sind halt nich so intensiv, aber da kann man sich ja spielen wie man will
Natürlich hab ichs auch in die Move Funktion gepackt, da die Farben ja ständig neu berechnet werden sollen...
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// ******************************************************************
// Move-Funktion
tbResult Move(float fNumSecsPassed)
{
// Farben sinusförmig verschieben ("wabbeln")
g_aTriangleVertex[0].vPosition = tbVector3(0.0f, 1.0f, 0.0f);
g_aTriangleVertex[1].vPosition = tbVector3(1.0f, -1.0f, 0.0f);
g_aTriangleVertex[2].vPosition = tbVector3(-1.0f, -1.0f, 0.0f);
g_aTriangleVertex[0].dwColor = tbColor(sinf(1.0f*g_fTime), -(sinf(1.0f*g_fTime)), 0.0f);
g_aTriangleVertex[1].dwColor = tbColor(0.0f, sinf(1.0f*g_fTime), -(sinf(1.0f*g_fTime)));
g_aTriangleVertex[2].dwColor = tbColor(-(sinf(1.0f*g_fTime)), 0.0f, sinf(1.0f*g_fTime));
// Zeitzähler erhöhen
g_fTime += fNumSecsPassed;
return TB_OK;
}
|