public void createNewGlTexture()
{
Gl.glEnable(Gl.GL_TEXTURE_2D);
Gl.glGenTextures(1, out TexPointer);
if (TexPointer == 0)
throw new Exception("The OpenGL context failed to create a new texture.");
lock (this.bitmap)
{
Bitmap bmpTex = resizeIfNecessary(this.bitmap);
BitmapData bd = bmpTex.LockBits(new Rectangle(0, 0, bmpTex.Width, bmpTex.Height),
ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
Gl.glDeleteTextures(1, ref TexPointer);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, TexPointer);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_REPEAT);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_REPEAT);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_NEAREST); // THE
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_NEAREST); // PIXELS!
// Actually upload the data.
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, bmpTex.Width, bmpTex.Height,
0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, bd.Scan0);
bmpTex.UnlockBits(bd);
}
}