Sparrow.Textures.GLTexture.GLTexture C# (CSharp) Method

GLTexture() public method

Initializes an uncompressed texture with with raw pixel data and a set of properties. Width and Height are expected pixel dimensions.
public GLTexture ( IntPtr imgData, TextureProperties properties ) : System
imgData System.IntPtr
properties TextureProperties
return System
        public GLTexture(IntPtr imgData, TextureProperties properties)
        {
            uint glTexName;
            bool compressed = properties.TextureFormat.Compressed;
            GL.GenTextures(1, out glTexName);
            GL.BindTexture(TextureTarget.Texture2D, glTexName);

#if __WINDOWS__
            GL.TexStorage2D(TextureTarget2d.Texture2D,
#elif __ANDROID__
            GL.TexStorage2D(TextureTarget2D.Texture2D,
#endif
                properties.NumMipmaps + 1, // mipmap level, min 1
                properties.TextureFormat.InternalFormat,
                properties.Width,
                properties.Height);

            if (!compressed)
            {
                if (imgData != IntPtr.Zero)
                {
                    GL.TexSubImage2D(TextureTarget.Texture2D,
                        0, // level
                        0, // xOffset
                        0, // yOffset
                        properties.Width,
                        properties.Height,
                        properties.TextureFormat.PixelFormat,
                        properties.TextureFormat.PixelType,
                        imgData);
                }
            }
            else
            {
                // TODO this is not tested!
                if (imgData != IntPtr.Zero)
                {
                    int size = Math.Max(32, properties.Width * properties.Height * properties.TextureFormat.BitsPerPixel / 8);
                    GL.CompressedTexSubImage2D(TextureTarget.Texture2D,
                        0, // level
                        0, // xOffset
                        0, // yOffset
                        properties.Width,
                        properties.Height,
                        properties.TextureFormat.PixelFormat,
                        size,
                        imgData);
                }
            }

            if (properties.NumMipmaps > 0)
            {
#if __WINDOWS__
                GL.GenerateMipmap(GenerateMipmapTarget.Texture2D);
#elif __ANDROID__
                GL.GenerateMipmap(TextureTarget.Texture2D);
#endif
            }

            bool containsMipmaps = properties.NumMipmaps > 0;

            Init(glTexName, properties.Width, properties.Height, containsMipmaps, properties.Scale, properties.PremultipliedAlpha);
        }

Same methods

GLTexture::GLTexture ( uint name, float width, float height, bool hasMipMaps, float scale, bool premultipliedAlpha ) : System