Ejemplo 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);
 }
Ejemplo n.º 2
0
 public static void SetData(this IPlatformTexture2D texture, int level, IntPtr data)
 {
     GraphicsUtility.CalculateMipLevelSize(level, texture.Width, texture.Height, out var levelWidth, out var levelHeight);
     texture.SetData(level, 0, 0, levelWidth, levelHeight, data);
 }
Ejemplo n.º 3
0
 public static void SetData <T>(
     this IPlatformTexture2D texture, int level, T[] data, int startIndex) where T : unmanaged
 {
     GraphicsUtility.CalculateMipLevelSize(level, texture.Width, texture.Height, out var levelWidth, out var levelHeight);
     SetData(texture, level, 0, 0, levelWidth, levelHeight, data, startIndex);
 }