Hallo leute,
Ich schreib hier nun schon eine weile an einem framework welches mir ein bischen arbeit abnimmt, jedoch harpert es gerade dabei wie ich am besten die clipping koordinaten für eine einzelne kachel am besten performant berechne.
aktuell ist es so das ich eine funktion habe in der alle clipping koordinaten drin stehen und ein struct mit den entsprechenden werten zurück gebe und zwar wie folgt:
actTile ist das aktuelle tile welches aus dem source image geclippt und gerendert werden soll.
vorher (wie hier zu sehen) habe ich eine feste anzahl an tiles gehabt die durch die möglichen eingebbaren zeichen auf der tastatur festgelegt waren. Diese wurden in einem char array gespeichert,
jedoch habe ich nun so umgestellt, das ich nun ein UInt16 array benutze.
eine switch anweisung von vorne bis hinten nun mit werten befüllen ist ja übertrieben, aber wie sollte ich es am besten performant machen damit das framework auch für gp2x anwendungen nutzbar bleibt?
eine überlegung wäre den UInt16 in 2x UInt 8 per bitoperatoren aufzuteilen und dann damit dynamisch die koordinaten berechnen. das wäre so erstmal meine überlegung.
hätte dazu vllt. noch jemand nen paar tips oder hinweise?
würde mich drüber freuen
gruss psy
p.s. die 16 soll noch gegen einen dynamisch festlegbaren wert ausgetauscht werden so das die tilles grösser oder kleiner sein können.
Ich schreib hier nun schon eine weile an einem framework welches mir ein bischen arbeit abnimmt, jedoch harpert es gerade dabei wie ich am besten die clipping koordinaten für eine einzelne kachel am besten performant berechne.
aktuell ist es so das ich eine funktion habe in der alle clipping koordinaten drin stehen und ein struct mit den entsprechenden werten zurück gebe und zwar wie folgt:
Code:
void CEngineMapLayer::getSourceTilePos(SDL_Rect *p_rect, int actTile)
{
p_rect->w = 16; //TODO: change to dynamic
p_rect->h = 16; //TODO: change to dynamic
switch(this->m_Layer[actTile])
{
//row1
case 'a':
p_rect->x = 0 * 16;
p_rect->y = 0 * 16;
break;
case 'b':
p_rect->x = 1 * 16;
p_rect->y = 0 * 16;
break;
case 'c':
p_rect->x = 2 * 16;
p_rect->y = 0 * 16;
break;
case 'd':
p_rect->x = 3 * 16;
p_rect->y = 0 * 16;
break;
...
...
...
case 'á':
p_rect->x = 13 * 16;
p_rect->y = 6 * 16;
break;
case 'ó':
p_rect->x = 14 * 16;
p_rect->y = 6 * 16;
break;
}
}
vorher (wie hier zu sehen) habe ich eine feste anzahl an tiles gehabt die durch die möglichen eingebbaren zeichen auf der tastatur festgelegt waren. Diese wurden in einem char array gespeichert,
jedoch habe ich nun so umgestellt, das ich nun ein UInt16 array benutze.
eine switch anweisung von vorne bis hinten nun mit werten befüllen ist ja übertrieben, aber wie sollte ich es am besten performant machen damit das framework auch für gp2x anwendungen nutzbar bleibt?
eine überlegung wäre den UInt16 in 2x UInt 8 per bitoperatoren aufzuteilen und dann damit dynamisch die koordinaten berechnen. das wäre so erstmal meine überlegung.
hätte dazu vllt. noch jemand nen paar tips oder hinweise?
würde mich drüber freuen
gruss psy
p.s. die 16 soll noch gegen einen dynamisch festlegbaren wert ausgetauscht werden so das die tilles grösser oder kleiner sein können.