Performance beim Vertexarray
Verfasst: 27.11.2010, 14:16
Hallo,
ich bräuchte mal einen Rat... Es geht um ne Optimierungsmaßnahme. Also ich zeichne einen Kreis mit meinem Grafikengine Objekt welches die Zeichenfunktionien bereithält:
Im Code sind die markanten stellen für mich die Allokation des Arrays im Speicher und das spätere freigeben des speichers. Geht man jetzt davon aus dass das jeden Tick geschieht finde ich das recht unperformant und mir ist die Idee gekommen vielleicht ein fixes Array mit der größe 64 oder 128 vom Typ cVector einfach in das Objekt zu legen. Also wie so ein Container der einfach da ist ohne die ständige Allokation. Die Frage ist halt ob mir das nen Performance schub bringt...
Ich frag halt nur weil ich jetzt auch ne Primitive Drawing Methode in die Engine einbaue wo ich jedes Vertex einzeln definieren kann und dafür dann immer neuen Speicher belegen und wieder freigeben und das jeden Tick...
Ratschläge? Meinungen? Tipps? :)
Viele Grüße
Tornby
ich bräuchte mal einen Rat... Es geht um ne Optimierungsmaßnahme. Also ich zeichne einen Kreis mit meinem Grafikengine Objekt welches die Zeichenfunktionien bereithält:
Code: Alles auswählen
int vertexCount = _steps+1;
int primCount = vertexCount-3;
cVertex* vertices = new cVertex[vertexCount];
float fullCircle = cMath<float>::Pi()*2;
float circle = 0;
for (int i = 0; i < _steps;++i)
{
vertices[i].m_x = _x+(sin(circle)*_radius);
vertices[i].m_y = _y+(cos(circle)*_radius);
vertices[i].m_z = 0.0f;
vertices[i].m_color = m_quad.GetColor(cQuad::QV_LEFT_BOTTOM); // Always take the first color, because we have more than 4 corners
circle += (fullCircle/_steps);
}
ApplyTransformation();
m_d3DDevice->SetTexture(0,NULL);
m_d3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,primCount,vertices,sizeof(cVertex));
delete[] vertices;
Ich frag halt nur weil ich jetzt auch ne Primitive Drawing Methode in die Engine einbaue wo ich jedes Vertex einzeln definieren kann und dafür dann immer neuen Speicher belegen und wieder freigeben und das jeden Tick...
Ratschläge? Meinungen? Tipps? :)
Viele Grüße
Tornby