OpenTK 文本始终为白色

OpenTK Text always white

我正在使用 OpenTK 在 C# 中做一个 2D 应用程序,以呈现我使用 QuickFont 库的文本。 我的问题是,当我想改变我的点标签的颜色时,它们根本没有改变,它们总是白色,我不知道为什么。

这是我的代码:

Color _labelColor = Color.Green; // For example
//... More code ...//
QFont.Begin();
_pointLabel = new QFont(new Font("Tahoma", 5f, FontStyle.Regular));
_pointLabel.Options.Colour = _labelColor; // Here is correct, it's Green
QFont.End();               

foreach (MyPoint p in _points)
{
    if (p.Visible)
    {
        // Draw labels only for visible points
        _pointLabel.Print(p.Label, new Vector2(p.X, p.Y));
    }
}

我希望我的标签的颜色随 var _labelColor 的变化而变化,但它不起作用。标签的颜色是总是白色,即使我强制是绿色或其他颜色。

我认为我的这部分代码是正确的,但我认为我需要先正确配置 OpenTK 摄像头,但我不知道该怎么做。

要添加信息,如果有帮助的话,我正在处理普通纹理和精灵纹理。

非常感谢任何帮助。

对不起我的英语。

我找到了答案,问题是我加载的纹理有误,所以我不知道为什么我不能为字体设置颜色。

我现在的加载贴图函数如下:

private int LoadTexture(Image img)
{
    Bitmap bmp = new Bitmap(img);
    int id_textura = GL.GenTexture();
    GL.BindTexture(TextureTarget.Texture2D, id_textura);

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

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

    bmp.UnlockBits(bmp_data);

    // We haven't uploaded mipmaps, so disable mipmapping (otherwise the texture will not appear).
    // On newer video cards, we can use GL.GenerateMipmaps() or GL.Ext.GenerateMipmaps() to create
    // mipmaps automatically. In that case, use TextureMinFilter.LinearMipmapLinear to enable them.
    GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
    GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

    return id_textura;
}

我在问题中写的代码是正确的。希望对大家有帮助。

对不起我的英语。

检查这个样本

 QFontRenderOptions textOpts;
 textOpts = new QFontRenderOptions()
 {
     Colour = Color.White, //Color.DarkRed, etc
     DropShadowActive = false
 };
 QFont myFont = new QFont(folder+"arial.ttf", 7, new QFontBuilderConfiguration(true));
 QFontDrawing drawing = new QFontDrawing();
 drawing.Print(myFont, "cad", position, QFontAlignment.Left, textOpts);
 drawing.RefreshBuffers();
 drawing.Draw();