I am trying to read the depth buffer and store it into an array using openTK in C#.
This is my code so far:
//Get depth buffer
int[] depthBufferID = new int[1];
GL.GenBuffers(1, depthBufferID);
GL.BindBuffer(BufferTarget.PixelPackBuffer, depthBufferID[0]);
GL.BufferData(BufferTarget.PixelPackBuffer, glControlGLRender.Width *
glControlGLRender.Height * sizeof(Single), IntPtr.Zero, BufferUsageHint.StreamRead);
IntPtr depthBufferPTR = GL.MapBuffer(BufferTarget.PixelPackBuffer,
BufferAccess.ReadOnly);
GL.ReadPixels(0, 0, glControlGLRender.Width, glControlGLRender.Height,
PixelFormat.DepthComponent, PixelType.Float, depthBufferPTR);
float[] myPixels = new float[glControlGLRender.Width * glControlGLRender.Height];
Marshal.Copy(depthBufferPTR, myPixels, 0, glControlGLRender.Width *
glControlGLRender.Height);
this.glControlGLRender.SwapBuffers();
Well it does not produce any errors, but it is not working either. The output is an array (myPixels) where all values are 0.
So how do you read the depth buffer in openTK using the PixelPackBuffer?
Thank you