微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenTKOpenGL位图数据格式问题

如何解决OpenTKOpenGL位图数据格式问题

我正在尝试使用opentk将位图数据打印到屏幕上。

GL.TexImage2D(TextureTarget.Texture2D,PixelInternalFormat.Rgba,data.Width,data.Height,OpenTK.Graphics.OpenGL.PixelFormat.Bgra,PixelType.UnsignedByte,data.Scan0);

我得到了一个错误。我的猜测是我写的格式错误。使用Format8bppIndexed,我可以在图片框中正确查看。我收到的图像是黑白的。

传入数据;

BitmapSingleImage = new Bitmap(RSSplitWidth,RSSplitHeight,RSSplitWidth,System.Drawing.Imaging.PixelFormat.Format8bppIndexed,(IntPtr)pt);
    
videosGUI.LoadTexture(BitmapSingleImage);

接收数据的地方;

public int LoadTexture(Bitmap file)
{
    Bitmap bitmap = file;
    GL.Hint(HintTarget.PerspectiveCorrectionHint,HintMode.Nicest);

    GL.GenTextures(1,out texture);
    GL.BindTexture(TextureTarget.Texture2D,texture);

    BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0,bitmap.Width,bitmap.Height),ImageLockMode.ReadOnly,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);

    GL.TexImage2D(TextureTarget.Texture2D,data.Scan0);
    bitmap.UnlockBits(data);


    GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureMinFilter,(int)TextureMinFilter.Linear);
    GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureMagFilter,(int)TextureMagFilter.Linear);
    GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureWrapS,(int)TextureWrapMode.Repeat);
    GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureWrapT,(int)TextureWrapMode.Repeat);
    return texture;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。