Faça algo parecido com isto:
if (renderX >= 0 && renderY >= 0
&& renderX <= container.getWidth() && renderY <= container.getWidth()) {
//Render
}
Ele precisará ser personalizado para cada objeto, pois cada objeto tem um tamanho diferente. Eu renderizo cada grupo de componentes separadamente. Se você estiver usando o TiLeD, aqui está um bom código que eu criei:
TiledMap map = mapComp.getMap();
//Render positions as integers
int renderX = (int) renderPos.getX();
int renderY = (int) renderPos.getY();
//Render offset for map
int xRenderOffset = renderX % 32;
int yRenderOffset = renderY % 32;
//Get the first tile to be rendered
int firstTileX = (int) -renderX / 32;
int firstTileY = (int) -renderY / 32;
//Render tiles only if their indices are greater than 0
if (firstTileX < 0) {
xRenderOffset += Math.abs(firstTileX) * 32;
firstTileX = 0;
}
if (firstTileY < 0) {
yRenderOffset += Math.abs(firstTileY) * 32;
firstTileY = 0;
}
//Get the last tile to be rendered
int lastTileX = firstTileX + (client.getContainer().getWidth() / 32) + 1;
int lastTileY = firstTileY + (client.getContainer().getHeight() / 32) + 2;
//Verify that the last tile is valid
if (lastTileX > 127) {
lastTileX = 127;
}
if (lastTileY > 127) {
lastTileY = 127;
}
//Check if the map will be visible on the screen
if (lastTileX >= 0 && lastTileY >= 0) {
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 0, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 1, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 2, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 3, true);
}
32 é a largura do seu bloco e 127 é o tamanho do seu mapa - 1.