Instead of a call back, which can be called at any time (which I assume will mostly be AFTER a frame is rendered and before it is cleared, thus not rendering, I used this in my render loop.
if(player.IsPlaying)
{
Bitmap bitmap = memRender.CurrentFrame;
BitmapData data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);
bitmap.UnlockBits(data);
bitmap.Dispose();
}
base.OnRenderFrame(e);it is playing the video just fine, although I am not sure how to handle multiple textures yet.
also is there a more efficient way of doing this?