Je sais pas comment ton truc fonctionne, donc c'est pas sur que j'aide beaucoup.
Si il y a un lien direct entre les coordonnées d'un objet et sa position dans le tableau, et que tu as moyen de connaître les coordonnées les plus à droite/gauche/haut/bas visible à l'écran, tu peux facilement afficher uniquement les objets visibles à l'écran.
Je sais pas trop comment expliquer donc je vais te donner ce que j'ai fait dans mon jeu (c'est du Java, et l'origine de ma map est au point de coordonnées 0,0):
minX = (int)((camera.position.x - camera.zoom*camera.viewportWidth/2)/getTileWidth()
);
minY = (int)((camera.position.y - camera.zoom*camera.viewportHeight/2)/getTileHeight
());
maxX = (int)((camera.position.x + camera.zoom*camera.viewportWidth/2) /getTileWidth());
maxY = (int)((GamePlay.camera.position.y + camera.zoom*camera.viewportHeight/2)/getTileHeight
());
for(int i = minX; i<maxX; i++)
{
for(int j = minY; j<maxY; j++)
{
batch.draw(AllTextures[blocs[i][j]][state[i][j]], i*16, j*16, 16, 16);
}
}
Voila, je sais pas si ça peut aider car ton truc fonctionne peut être pas du tout pareil mais au moins j'aurais essayé 