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();
我正在使用 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();