我正在使用Monogame,我正在尝试做一些非常简单的事情,在屏幕上画一个正方形。我基本上可以做的最基本的事情。我添加到模板的唯一代码如下:
spriteBatch.Begin();
spriteBatch.Draw(
new Texture2D(GraphicsDevice, 100, 100),
new Vector2(100, 100),
Color.Red
);
spriteBatch.End();
以下是我运行程序时看到的一些示例。
图像每帧都会改变,最终只会显示闪烁的静态图像。这显然不是我编写代码的问题,因此它必须是Monogame的问题,我安装Monogame的问题,或者我的视频卡/驱动程序的问题。我正在使用带有最新驱动程序的Nvidia Geforce GTX 570。
有关如何修复此问题的想法?
答案 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 });