2014-02-06 42 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