Я пытаюсь рисовать на экране попиксельно, используя XNA, но у меня проблемы с ресурсами.Я думал, что лучшим способом будет иметь 1 текстуру, которая обновляет каждый кадр, но у меня возникают проблемы при обновлении.Вот что у меня получилось, просто в качестве теста:
Texture2D canvas;
Rectangle tracedSize;
UInt32[] pixels;
protected override void Initialize()
{
tracedSize = GraphicsDevice.PresentationParameters.Bounds;
canvas = new Texture2D(GraphicsDevice, tracedSize.Width, tracedSize.Height, false, SurfaceFormat.Color);
pixels = new UInt32[tracedSize.Width * tracedSize.Height];
base.Initialize();
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
pixels[100] = 0xFF00FF00;
canvas.SetData<UInt32>(pixels, 0, tracedSize.Width * tracedSize.Height);
spriteBatch.Begin();
spriteBatch.Draw(canvas, new Rectangle(0, 0, tracedSize.Width, tracedSize.Height), Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
При повторном вызове Draw () я получаю следующую ошибку:
"Операция была прервана. Вы не можете изменять ресурс, который был установлен на устройстве, или после того, как он был использован в квадратной скобке. "
Если я пытаюсь создать новую Texture2D в Draw (), я быстро получаюОшибка нехватки памяти.Это для Windows Phone.Похоже, я пытаюсь сделать это неправильно, какие еще есть варианты, чтобы заставить его работать?