Den NullPointer habe ich gelöst. Ich habe das Modell NACH tbExit() entladen.
Ich habe es jetzt so probiert:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// Simuliert einen Shader
tbResult SimulateShader()
{
SVertex Vertex;
tbVector3 vOldPosition = tbVector3(0.0f, 0.0f, 0.0f);
float fDistance;
for (unsigned int i = 0; i < g_pModel->GetVertexBuffer()->GetMaxVertices(); i++)
{
g_pModel->GetVertexBuffer()->GetVertex(i, &Vertex);
// Entfernung zum vorherigen Vertex berechnen
fDistance = tbVector3Length(Vertex.vPosition - vOldPosition);
// Wenn die Entfernung gleich 0 ist, ist es der gleiche Vertex wie der Vorherige und die Position wird übernommen.Ansonsten wird die Position berechnet
if (fDistance = 0.0f)
{
Vertex.vPosition = vOldPosition;
}
else
{
// Alte Vertex-Position speichern
vOldPosition = Vertex.vPosition;
// Position verändern
Vertex.vPosition += tbVector3(sinf(g_f1 * fDistance + g_fTime * g_f2) * 0.1f * g_f4 * cosf(g_f1 * fDistance + g_fTime * g_f3) * g_f2,
cosf(g_f1 * fDistance + g_fTime * g_f3) * 0.08f * g_f2 * sinf(g_f1 * fDistance + g_fTime * g_f4) * g_f3,
sinf(g_f1 * fDistance + g_fTime * g_f4) * 0.1f * g_f3 * sinf(g_f1 * fDistance + g_fTime * g_f2) * g_f4);
}
g_pModel->GetVertexBuffer()->SetVertex(i, &Vertex);
// Den Vertex-Buffer aktualisieren
if (g_pModel->GetVertexBuffer()->Update()) return TB_ERROR;
}
return TB_OK;
}
|
Jedoch bewegt sich jetzt die ganze Schrift in einem.
Edit: Ich muss bei der if Abfrage natürlich fDistance == 0 schreiben, sonst ist es ja eine Zuweisung. Und das kopieren der Vertex-Position muss nach der Berechnung geschehen. Ich habe es zwar noch nicht getestet, aber es müsste funktionieren.