【问题标题】:Monogame/XNA Flickering Corrupted Texture2DMonogame/XNA 闪烁损坏的 Texture2D
【发布时间】:2014-02-19 22:55:18
【问题描述】:

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

spriteBatch.Begin();

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

spriteBatch.End();

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

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

关于如何/是否可以解决此问题的任何想法?

【问题讨论】:

    标签: c# opengl xna monogame


    【解决方案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 });
    

    【讨论】:

    • 啊,在我的初始代码中,我在 Initialize 函数中创建了一次空纹理,但我没有调用 SetData 函数。那就是我出错的地方。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多