在C#WinForm中向OpenTk控件添加文本

在C#WinForm中向OpenTk控件添加文本,c#,winforms,opentk,C#,Winforms,Opentk,我正在开发一个应用程序,其中包括一个OpenTk glControl,在评估了我选择的使用LoadTexture方法的不同方式后,我必须添加将包含在模型中的文本。问题是,当我运行它时,只显示一个白色矩形,而不是文本。我花了好几个小时试图解决这个问题。然而,我一直未能做到这一点。我附上代码以寻求帮助 #region "Region de Textos" Bitmap bmp1 = new Bitmap(glControl1.Width, glControl1.

我正在开发一个应用程序,其中包括一个OpenTk glControl,在评估了我选择的使用
LoadTexture
方法的不同方式后,我必须添加将包含在模型中的文本。问题是,当我运行它时,只显示一个白色矩形,而不是文本。我花了好几个小时试图解决这个问题。然而,我一直未能做到这一点。我附上代码以寻求帮助

#region "Region de Textos"

        Bitmap bmp1 = new Bitmap(glControl1.Width, glControl1.Height);
        Graphics g = Graphics.FromImage(bmp1);
        g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
        g.Clear(Color.Transparent);
        TextRenderer.DrawText(g, "text", new Font("Arial", 10), new Point(0, 0), Color.Yellow);
        bitmap = bmp1; // bitmap is a Global field

        texture = LoadTexture(bitmap);
        DrawImage(texture);
#endregion "Region de textos"

public static int LoadTexture(Bitmap bitmap)
    {
        if (bitmap == null)
            throw new ArgumentException("Bitmap is null.");

        int id = GL.GenTexture();
        GL.BindTexture(TextureTarget.Texture2D, id);

        GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
        GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

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

        GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmpdata.Width, bmpdata.Height, 0,
            PixelFormat.Bgra, PixelType.UnsignedByte, bmpdata.Scan0);

        bitmap.UnlockBits(bmpdata);

        return id;
    }
private void DrawImage(int texture)
    {
        float wt = Math.Max(1, glControl1.Width);
        float ht = Math.Max(1, glControl1.Height);

        SetupViewPort(wt, ht);

        GL.Enable(EnableCap.Texture2D);
        GL.ActiveTexture(TextureUnit.Texture0);
        GL.BindTexture(TextureTarget.Texture2D, texture);

        // Primitive for text rendering
        GL.Begin(PrimitiveType.Quads);
        GL.Color3(Color.Transparent);
        GL.TexCoord2(0f, 1f); GL.Vertex2(0f, 0f);
        GL.TexCoord2(1f, 1f); GL.Vertex2(1f, 0f);
        GL.TexCoord2(1f, 0f); GL.Vertex2(1f, 1f);
        GL.TexCoord2(0f, 0f); GL.Vertex2(0f, 1f);
        GL.End();

        GL.Disable(EnableCap.Texture2D);
    }