本文演示使用opentk本地图片进行贴图。
1.读入图片及属性设置
Bitmap _bitmap = new Bitmap("logo.jpg");
BitmapData bitmapData = _bitmap.LockBits(
new Rectangle(0, 0, _bitmap.Width, _bitmap.Height),
ImageLockMode.ReadOnly,
SysPixelFormat.Format32bppArgb
);
_bitmap.UnlockBits(bitmapData);
2.gl设置
GL.Enable(EnableCap.Texture2D);
GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
GL.GenTextures(1, out _texture);
GL.BindTexture(TextureTarget.Texture2D, _texture);
GL.TexImage2D(
TextureTarget.Texture2D,
0,
PixelInternalFormat.Rgba,
bitmapData.Width,
bitmapData.Height,
0,
GlPixelFormat.Bgra,
PixelType.UnsignedByte,
bitmapData.Scan0
);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
3.绘制图片纹理到指定范围
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
GL.BindTexture(TextureTarget.Texture2D, _texture);
GL.Begin(BeginMode.Polygon);//.Quads);
GL.TexCoord2(0.0f, 1.0f);
GL.Vertex2(-0.6f, -0.4f);
GL.TexCoord2(1.0f, 1.0f);
GL.Vertex2(0.6f, -0.4f);
GL.TexCoord2(1.0f, 0.0f);
GL.Vertex2(0.6f, 0.4f);
GL.TexCoord2(0.0f, 0.0f);
GL.Vertex2(-0.6f, 0.4f);
GL.End();