मैं एक्सएनए का उपयोग कर स्क्रीन पिक्सेल-बाय-पिक्सेल पर आकर्षित करने की कोशिश कर रहा हूं, लेकिन संसाधनों में समस्याएं हैं। मैंने सोचा कि सबसे अच्छा तरीका 1 बनावट होगा जो प्रत्येक फ्रेम को अपडेट करे, लेकिन मुझे इसे अद्यतन करने में समस्या हो रही है। यहाँ मैं सिर्फ एक परीक्षण के रूप में अब तक मिल गया है, बताया गया है:एक्सएनए में 2 डी पिक्सेल-बाय-पिक्सेल कैसे आकर्षित करें?
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);
}
जब ड्रा() दूसरी बार कहा जाता है, मैं निम्नलिखित त्रुटि मिलती है:।
"ऑपरेशन रद्द कर दिया गया है आप नहीं हो सकता किसी डिवाइस पर सेट किए गए संसाधन को संशोधित करें, या उसके बाद टाइलिंग ब्रैकेट के अंदर उपयोग किया गया है। "
यदि मैं ड्रा() में एक नया Texture2D बनाने का प्रयास करता हूं, तो मुझे जल्दी से स्मृति त्रुटि से बाहर निकलना पड़ता है। यह विंडोज फोन के लिए है। ऐसा लगता है कि मैं इसे गलत तरीके से करने की कोशिश कर रहा हूं, मुझे इसे बनाने के लिए अन्य विकल्प क्या हैं?
मुझे जवाब नहीं पता था इसलिए मैंने "xna प्रक्रियात्मक बनावट" (जिसे इस तरह की चीज कहा जाता है) गुगल किया गया। ऐसा करने के लिए एक सरल, अंतर्निहित तरीका प्रतीत नहीं होता है। कम से कम तीन आम सुझाव हैं (बफरिंग, जीपीयू बनावट कमांड, इसे एक शेडर में कर रहे हैं)। आखिरी स्पष्ट रूप से इष्टतम है, लेकिन शेडर प्रोग्रामिंग ज्ञान की आवश्यकता है। आप एक ही खोज करना और ब्राउज़ करना चाहते हैं कि वहां क्या हो रहा है। – Tergiver