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

我返回的数据不会影响void函数保护的重写的内部

如何解决我返回的数据不会影响void函数保护的重写的内部

我正在将位图帧发送到下面的“加载”功能。 LoadTexture函数在GenTexture中将数据返回为“ 1”并将其设置为纹理。当我调试时,我看到纹理返回“ 1”。但这不会影响“ OnRenderFrame”函数中的数据。我必须使用带有受保护的覆盖的OnRenderFrame。

public void Load(Bitmap bitmap)
{
    texture = LoadTexture(bitmap);
}

public int LoadTexture(Bitmap file)
{
    Bitmap bitmap = file;
    int tex;

    GL.Hint(HintTarget.PerspectiveCorrectionHint,HintMode.Nicest);

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

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

    GL.TexImage2D(TextureTarget.Texture2D,PixelInternalFormat.luminance,data.Width,data.Height,OpenTK.Graphics.OpenGL.PixelFormat.luminance,PixelType.UnsignedByte,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 tex;
}


protected override void OnRenderFrame(FrameEventArgs e)
{
    Title = $"(Vsync: {VSync}) FPS: {1f / e.Time:0}";

    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

    DrawImage(texture);
    Console.WriteLine(texture);
    SwapBuffers();
}

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