//this method gets called, when Update() was called in evaluate,
 //or a graphics device asks for its texture, here you fill the texture with the actual data
 //this is called for each renderer, careful here with multiscreen setups, in that case
 //calculate the pixels in evaluate and just copy the data to the device texture here
 unsafe void UpdateTexture(FrameData info, Texture texture)
 {
     if(!info.Copied)
     {
         CopyByteArrayToTexture(info.Pixels, new Rectangle(0, 0, info.Width, info.Height), texture);
         info.Copied = true;
     }
 }
 //this method gets called, when Reinitialize() was called in evaluate,
 //or a graphics device asks for its data
 Texture CreateTexture(FrameData info, Device device)
 {
     info.Copied = false;
     return TextureUtils.CreateTexture(device, Math.Max(info.Width, 1), Math.Max(info.Height, 1));
 }