Exemplo n.º 1
0
 private void Initialize(TextureParams textureParams)
 {
     compressed = Format.IsCompressed();
     GLHelper.GetGLTextureFormat(Context, Format, out GLInternalFormat, out GLFormat, out GLPixelType);
     GLTexture = GL.GenTexture();
     GLHelper.CheckGLErrors();
     GL.ActiveTexture(TextureUnit.Texture0);
     GLHelper.CheckGLErrors();
     GL.BindTexture(TextureTarget.Texture2D, GLTexture);
     GLHelper.CheckGLErrors();
     for (var level = 0; level < LevelCount; level++)
     {
         GraphicsUtility.CalculateMipLevelSize(level, Width, Height, out var levelWidth, out var levelHeight);
         if (compressed)
         {
             var imageSize = GraphicsUtility.CalculateImageDataSize(Format, levelWidth, levelHeight);
             GL.CompressedTexImage2D(TextureTarget.Texture2D, level, (PixelInternalFormat)GLInternalFormat,
                                     levelWidth, levelHeight, 0, imageSize, IntPtr.Zero);
             GLHelper.CheckGLErrors();
         }
         else
         {
             GL.TexImage2D(TextureTarget.Texture2D, level, (PixelInternalFormat)GLInternalFormat,
                           levelWidth, levelHeight, 0, (PixelFormat)GLFormat, (PixelType)GLPixelType, IntPtr.Zero);
             GLHelper.CheckGLErrors();
         }
     }
     UpdateTextureParams(textureParams);
     Context.InvalidateTextureBinding(0);
 }
Exemplo n.º 2
0
 public void ReadPixels(Format format, int x, int y, int width, int height, IntPtr pixels)
 {
     GLHelper.GetGLTextureFormat(Context, format, out _, out var glDstFormat, out var glDstType);
     GL.BindFramebuffer(FramebufferTarget.Framebuffer, GLFramebuffer);
     GLHelper.CheckGLErrors();
     GL.ReadPixels(x, y, width, height, (PixelFormat)glDstFormat, (PixelType)glDstType, pixels);
     GLHelper.CheckGLErrors();
     Context.InvalidateRenderTargetBinding();
 }