2013-03-13 6 views
5

जब मैं लिबजीडीएक्स में मिपमैप फ़िल्टरिंग का उपयोग करने का प्रयास करता हूं, तो कोई भी छवि दिखाई नहीं देती है।libgdx बनावट फिल्टर और mipmap

मैं LibGDX के लिए नया हूं, और मेरे पास तीन घूर्णन, स्केल किए गए मंडल के साथ एक साधारण 2 डी दृश्य है। उन्हें उप-विरोधी करने के लिए, मैं रैखिक फ़िल्टरिंग का उपयोग करना चाहता था। सलाह के लिए, मैंने this article देखा, जिसमें कहा गया था कि, भारी पैमाने पर छवियों के लिए, गति या गुणवत्ता में सुधार के लिए एक मिपमैप का उपयोग किया जा सकता है।

पहली अप्रत्याशित उपस्थिति यह थी कि, मेरी सभी छवियों को घटाए जाने के बावजूद, अगर मैग्फ़िल्टर रैखिक था तो मुझे केवल एक रैखिक फ़िल्टर दिखाई देगा। दूसरे शब्दों में:

इस कोड minified छवियों के लिए एक रेखीय फिल्टर दिखाएगा:

parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear); 

whlie इस कोड नहीं करेंगे:

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.Nearest); 

जो libGDX के विपरीत लगता है समारोह:

void com.badlogic.gdx.graphics.Texture.setFilter(TextureFilter minFilter, TextureFilter magFilter) 

यह मुझे परेशान नहीं करेगा, सिवाय इसके कि यह इंगित करता है कि या तो libgdx गलत है (संभावना नहीं है), लेख गलत है (संभावना नहीं है), या मुझे बनावट फ़िल्टर नहीं समझते हैं। उत्तरार्द्ध विशेष रूप से लगता है जब मैं mipmap फिल्टर का प्रयास करें।

इस कोड को कुछ भी नहीं

parentTexture.setFilter(TextureFilter.MipMapLinearLinear, TextureFilter.Linear); 

इस कोड को प्रदर्शित करता है प्रदर्शित करने के लिए कारण बनता है, लेकिन निकटतम छानने

parentTexture.setFilter(TextureFilter.Linear, TextureFilter.MipMapLinearLinear); 

साथ जहां मैं गलत हूँ के किसी भी स्पष्टीकरण बहुत सराहना की जाएगी। मैंने कहीं और खोज की है, लेकिन libGDX में बनावट फ़िल्टर बहुत विशिष्ट है, इसलिए लेख से अलग, मुझे मदद करने के लिए बहुत कुछ नहीं मिला है।

उत्तर

0

उसी मिनीफिल्टर और अधिकतम फ़िल्टर का उपयोग करने का प्रयास करें। मुझे एक समान समस्या थी और यदि मैंने TextureFilter.Linear, TextureFilter.Linear या दोनों MipMap समस्या हल हो गई है। उम्मीद है कि यह मदद करता है।

+0

यह काम किया एक रैखिक फ़िल्टर के लिए, लेकिन जब मैंने इसे एक मिपैप फ़िल्टर के साथ किया, तो बनावट सफेद हो गई। मुझे लगता है कि ऐसा इसलिए है क्योंकि अधिकतम करने के लिए एक मिपैप फ़िल्टर मेमोरी-वार समझ में नहीं आता है। – Kenkron

1

वहाँ अपनी छवि के साथ कई मुद्दों पर हो सकता है:

  1. यह 2 की शक्ति होगा यदि आप 354X420 की तरह आकार वाली छवि का उपयोग कर रहे हैं चाहिए, यह काम नहीं करेगा। इस मामले में आप 512x512 की एक छवि या 2.

  2. आप मिपमैप छानने सक्षम करना चाहते हैं जब के किसी भी अन्य बिजली लेने की जरूरत है, तो आप बूलियन genMipMaps जो चाहे mapmaps उत्पन्न करने के लिए libgdx बताता है का उपयोग कर इसे सक्षम करने के लिए की जरूरत है।

+0

पहली बात पर, छवि दो की शक्ति है, और यदि यह नहीं थी, तो OpenGL 2.0 es का समर्थन करने वाला कुछ भी अभी भी ठीक रहेगा। – Kenkron

3

बस मितेश की तरह अपने answer मिपमैप फिल्टर में कहा काम नहीं करता है क्योंकि आप मिपमैप उत्पन्न करने के लिए Libgdx कह नहीं कर रहे हैं।

यदि आप संपत्ति प्रबंधक का उपयोग कर रहे कोड इस

TextureParameter param = new TextureParameter(); 
param.genMipMaps = true; // enabling mipmaps 

manager.load("path/to/texfile.png", Texture.class, param); 

Texture tex = manager.get("path/to/texfile.png", Texture.class); 
tex.setFilter(TextureFilter.MipMap, TextureFilter.Nearest); 
6

मैं इस एक ही समस्या थी की तरह कुछ हो जाएगा, और ठीक निकला पागलपन की हद तक सरल होने के लिए। जब आप Texture बनाते हैं, तो आपको यह निर्दिष्ट करना होगा कि यह मिपमैप्स का उपयोग करता है।

तुम सब Texture निर्माता इस तरह करने के लिए एक दूसरा पैरामीटर पारित करना है

:

Texture myTexture = new Texture(Gdx.files.internal("myImage.png"), true);

आप यहाँ एपीआई डॉक्स में सभी Texture वर्ग कंस्ट्रक्टर्स देख सकते हैं: http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Texture.html

+0

'AssetManager' का उपयोग करने वालों के लिए यह' TextureParameter.genMipMaps' को सही पर सेट करके और बनावट लोड करते समय 'AssetManager' पर बनावट पैरामीटर को पास करके हासिल किया जा सकता है: https://libgdx.badlogicgames.com/nightlies/docs/api/ कॉम/बैडलॉगिक/जीडीएक्स/एसेट्स/लोडर्स/टेक्सचर लोडर .टेक्चर पैरामीटर.html # जेनमैपमैप्स 'बनावट लोडर। मिश्रण पैरामीटर बनावट पैरामीटर = नया बनावट लोडर। स्थिरता पैरामीटर(); बनावट पैरामीटर .genMipMaps = सत्य; propertyManager.load (textureName, Texture.class, बनावट पैरामीटर); ', –