में RenderTarget2D का उपयोग करते समय रंग गलत हैं I XNA का उपयोग करके 2 डी स्प्राइट आधारित विंडोज गेम बनाना शुरू कर दिया है। मैं अभी तक इसके साथ बहुत अनुभवी नहीं हूं लेकिन मैं सीख रहा हूं। मुझे यह कहने से शुरू करना है कि मैं एक्सएनए गेम स्टूडियो 3.1 का उपयोग कर रहा हूं, मैंने 4.0 (अभी तक) तक अपडेट नहीं किया है।XNA
जो मैं पूरा करने की कोशिश कर रहा हूं वह है कि मेरे सभी sprites को एक निश्चित आकार बफर में खींचने में सक्षम हो, जो कि प्रतिपादन पास के अंत में, वास्तविक बैकबफर के आकार के लिए स्केल किया गया था और फिर उस पर खींचा गया था । मुझे यकीन नहीं है कि कई संकल्प आमतौर पर कैसे समर्थित होते हैं, लेकिन यह मेरे लिए पर्याप्त समाधान की तरह लग रहा था।
मैंने अपनी सभी सामग्री को आकर्षित करने के लिए RenderTarget2D ऑब्जेक्ट का उपयोग करके इसे प्राप्त करने का प्रयास किया, फिर उस से Texture2D प्राप्त करें और उसे बैकबफर पर खींचें।
मेरे कोड इस तरह दिखता है:
private RenderTarget2D RenderTarget;
private DepthStencilBuffer DepthStencilBufferRenderTarget;
private DepthStencilBuffer DepthStencilBufferOriginal;
private SpriteBatch SpriteBatch;
protected override void Initialize()
{
base.Initialize();
RenderTarget = new RenderTarget2D(GraphicsDevice, 1920, 1080, 1, SurfaceFormat.Single);
DepthStencilBufferRenderTarget = new DepthStencilBuffer(GraphicsDevice,
1920, 1080, GraphicsDevice.DepthStencilBuffer.Format);
DepthStencilBufferOriginal = GraphicsDevice.DepthStencilBuffer;
SpriteBatch = new SpriteBatch(GraphicsDevice);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.DepthStencilBuffer = DepthStencilBufferRenderTarget;
GraphicsDevice.SetRenderTarget(0, RenderTarget);
GraphicsDevice.Clear(Color.Black);
SpriteBatch.Begin();
//drawing all stuff here
SpriteBatch.End();
GraphicsDevice.DepthStencilBuffer = DepthStencilBufferOriginal;
GraphicsDevice.SetRenderTarget(0, null);
GraphicsDevice.Clear(Color.Black);
Texture2D output = RenderTarget.GetTexture();
SpriteBatch.Begin();
Rectangle backbuffer = new Rectangle(0, 0, m_Options.DisplayWidth, m_Options.DisplayHeight);
SpriteBatch.Draw(output, backbuffer, Color.White);
SpriteBatch.End();
base.Draw(gameTime);
}
समस्या मैं का सामना है कि रंग सब गलत हैं। नीचे एक तस्वीर है जो दो स्क्रीनशॉट दिखाती है: पहला यह स्क्रीनशॉट है कि इसे कैसे देखना चाहिए (मैंने अपना खुद का स्केलिंग एल्गोरिदम लिखा था, इससे पहले कि प्रत्येक स्प्रिट को स्वयं ही स्केल किया गया हो) और दाईं ओर यह RenderTarget2D का उपयोग करते समय दिखता है।
किसी को भी मैं गलत क्या कर रहा पता है?
यह परेशान है ... एक फ़ाइल में रेंडरटेक्चर के Texture2D को सहेजने का प्रयास करें (Texture2D में सहेजने के तरीके हैं) और यह देखने के लिए कि क्या यह समस्या है जब आप लक्ष्य पर अपना गेम खींच रहे हों या नहीं, यह अभी भी नीला है या नहीं या स्क्रीन पर लक्ष्य ड्राइंग (यानी, अगर सहेजी गई छवि ठीक लगती है, तो समस्या स्क्रीन पर आ रही है)। –
नमस्ते, मैंने जो किया आपने किया और रेंडरटेक्चर की बनावट 2 डी ठीक दिखती है क्योंकि यह गलत रंगों के साथ स्क्रीनशॉट में है। तो जाहिर है कि समस्या इस प्रस्तुति के लिए चित्रण में निहित है। – Jerry