I solved the camera issue, you can sync the camera and then if you delete it and make a new one with the same ID number you can set it to a new image, not sure if this affects performance.
Here is a snippet for future searchers:
void updateTexture(int tex){
dbMakeCamera(1);
dbPositionCamera(1, dbCameraPositionX(), dbCameraPositionY(), dbCameraPositionZ());
dbSyncMask(1<<1);
dbSetCameraToImage(1, tex, 32, 32);
dbFastSync();
dbSyncMask(1<<0);
dbDeleteCamera(1);
}
If you have used the image to texture an object then be sure to set the texture to image 0 before you delete the camera, otherwise it crashes(after a few times), in GDK anyway.