2014-02-06 38 views
0

我与Monogame工作,我试图做一些事情非常简单,在屏幕上绘制一个正方形。我基本上可以做的最基本的事情。我已经添加到模板中的唯一代码如下:Monogame/XNA闪烁损坏的Texture2D

spriteBatch.Begin(); 

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

spriteBatch.End(); 

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

影像学改变每一帧,并最终只显示闪烁的静态。这显然不是我编写代码的问题,所以它必须是Monogame的问题,Monogame的安装问题,还是我的视频卡/驱动程序的问题。我正在使用带有最新驱动程序的Nvidia Geforce GTX 570。

有关如何解决这个问题的任何想法?

回答

1

这显然是不如何,我写我的代码

我不同意的问题。这是很清楚的一个问题:

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 }); 
+0

啊,在我最初的代码我是在初始化函数创建空的纹理一次,但我并没有调用SetData的功能。那是我出错的地方。谢谢。 – user3280051