public void InitWithDataGL20(IntPtr data, SurfaceFormat pixelFormat, int width, int height, Size size, GL20.All filter)
{
openGLVersion = GLContextVersion.Gles2_0;
GL20.GL.GenTextures(1, ref _name);
GL20.GL.BindTexture(GL20.All.Texture2D, _name);
GL20.GL.TexParameter(GL20.All.Texture2D, GL20.All.TextureMinFilter, (int)filter);
GL20.GL.TexParameter(GL20.All.Texture2D, GL20.All.TextureMagFilter, (int)filter);
GL20.GL.TexParameter(GL20.All.Texture2D, GL20.All.TextureWrapS, (int)GL20.All.ClampToEdge);
GL20.GL.TexParameter(GL20.All.Texture2D, GL20.All.TextureWrapT, (int)GL20.All.ClampToEdge);
int sz = 0;
switch (pixelFormat)
{
case SurfaceFormat.Color /*kTexture2DPixelFormat_RGBA8888*/:
case SurfaceFormat.Dxt1:
case SurfaceFormat.Dxt3:
sz = 4;
GL20.GL.TexImage2D(GL20.All.Texture2D, 0, (int)GL20.All.Rgba, (int)width, (int)height, 0, GL20.All.Rgba, GL20.All.UnsignedByte, data);
break;
case SurfaceFormat.Bgra4444 /*kTexture2DPixelFormat_RGBA4444*/:
sz = 2;
GL20.GL.TexImage2D(GL20.All.Texture2D, 0, (int)GL20.All.Rgba, (int)width, (int)height, 0, GL20.All.Rgba, GL20.All.UnsignedShort4444, data);
break;
case SurfaceFormat.Bgra5551 /*kTexture2DPixelFormat_RGB5A1*/:
sz = 2;
GL20.GL.TexImage2D(GL20.All.Texture2D, 0, (int)GL20.All.Rgba, (int)width, (int)height, 0, GL20.All.Rgba, GL20.All.UnsignedShort5551, data);
break;
case SurfaceFormat.Alpha8 /*kTexture2DPixelFormat_A8*/:
sz = 1;
GL20.GL.TexImage2D(GL20.All.Texture2D, 0, (int)GL20.All.Alpha, (int)width, (int)height, 0, GL20.All.Alpha, GL20.All.UnsignedByte, data);
break;
default:
throw new NotSupportedException("Texture format");
}
_size = size;
_width = width;
_height = height;
_format = pixelFormat;
_maxS = size.Width / (float)width;
_maxT = size.Height / (float)height;
_pixelData = data;
}