title: How to draw 2D pixel-by-pixel in XNA?
body: <p>I'm trying to draw on the screen pixel-by-pixel using XNA, but am having problems with resources.  I thought the best way would be to have 1 texture that updates every frame, but I'm having trouble updating it.  Here's what I've got so far, just as a test:</p>
  
  <pre><code>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&lt;UInt32&gt;(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);
      }
  </code></pre>
  
  <p>When Draw() is called the second time, I get the following error:</p>
  
  <p>"The operation was aborted. You may not modify a resource that has been set on a device, or after it has been used within a tiling bracket."</p>
  
  <p>If I try to make a new Texture2D in Draw(), I quickly get an out of memory error.  This is for Windows Phone.  It seems like I'm trying to do it the wrong way, what other options do I have to make it work?</p>