Monogame / XNA闪烁损坏的Texture2D

时间:2014-02-06 15:11:55

标签: c# opengl xna monogame

我正在使用Monogame,我正在尝试做一些非常简单的事情,在屏幕上画一个正方形。我基本上可以做的最基本的事情。我添加到模板的唯一代码如下:

spriteBatch.Begin();

spriteBatch.Draw(
    new Texture2D(GraphicsDevice, 100, 100),
    new Vector2(100, 100),
    Color.Red
);

spriteBatch.End();

以下是我运行程序时看到的一些示例。

图像每帧都会改变,最终只会显示闪烁的静态图像。这显然不是我编写代码的问题,因此它必须是Monogame的问题,我安装Monogame的问题,或者我的视频卡/驱动程序的问题。我正在使用带有最新驱动程序的Nvidia Geforce GTX 570。

有关如何修复此问题的想法?

1 个答案:

答案 0 :(得分:2)

  

这显然不是我编写代码的问题

我不同意。这显然是一个问题:

spriteBatch.Draw(
    new Texture2D(GraphicsDevice, 100, 100),
    new Vector2(100, 100),
    Color.Red
);

您正在每个帧初始化一个全新的100x100纹理,然后不会在其中放置任何数据。不要做其中任何一件事!你无缘无故地咀嚼了大量的视频内存,而且你的纹理充满了生活在分配空间的垃圾。

创建单个纹理并使用有效数据填充它:

var nullTexture = new Texture2D(GraphicsDevice, 1, 1);
nullTexture.SetData(new [] { Color.White });