2012-10-13 24 views
6

मैं ओपनजीएल ईएस 1.0 के साथ libgdx का उपयोग कर रहा हूं और मुझे आश्चर्य है कि स्प्राइटबैच स्टैंसिल बफर को लिख/आकर्षित कर सकता है या नहीं। मैं इसे लिखने की कोशिश कर रहा हूं और मुझे कोई परिणाम नहीं मिला है, मुझे स्टैंसिल बफर का उपयोग करने का अनुभव नहीं है, लेकिन अगर मैं कुछ भी गलत करता हूं तो मैं बहुत कुछ पढ़ रहा हूं। असल में मैं एक स्प्राइटबैच के साथ एक बनावट को स्टैंसिल बफर में खींचना चाहता हूं, इसलिए जब मैं कुछ और खींचता हूं (स्टैंसिल बफर अक्षम के साथ) यह केवल उन क्षेत्रों पर खींचा जाता है जहां स्टैंसिल बफर 1 के बराबर होता है।Libgdx करता है SpriteBatch StencilBuffer को आकर्षित करता है?

यह मेरा वांछित परिणाम: यदि मैं स्टैंसिल बफर में एक स्टार आकार के साथ बनावट खींचता हूं और फिर मैं रंग बफर में एक लाल बनावट खींचता हूं, तो मैं चाहता हूं कि लाल बनावट पिक्सल को छोड़ दें जहां स्टार स्टैंसिल बफर में है।

batch.begin(); 
    Gdx.gl10.glEnable(GL10.GL_STENCIL_TEST); 
    Gdx.gl10.glEnable(GL10.GL_ALPHA_TEST); 
    Gdx.gl10.glStencilFunc(GL10.GL_ALWAYS, 0x1, 0xffffffff); 
    Gdx.gl10.glStencilOp(GL10.GL_REPLACE, GL10.GL_REPLACE, GL10.GL_REPLACE); 
    Gdx.gl10.glColorMask(false, false, false, false); 

    batch.draw(myShape, 100, 100); //draw to the stencil buffer a shape (texture region) 

    batch.end(); 
    batch.begin(); 

    Gdx.gl10.glColorMask(true, true, true, true); 
    Gdx.gl10.glStencilOp(GL10.GL_KEEP, GL10.GL_KEEP, GL10.GL_KEEP); 

    // draw where the shape has NOT been drawn 
    Gdx.gl10.glStencilFunc(GL10.GL_NOTEQUAL, 0x1, 0xff); 

    batch.draw(BackGroundLayer, 0, 0);// draw background 

    Gdx.gl10.glDisable(GL10.GL_STENCIL_TEST); 

उत्तर

3

हाँ spriteBatch स्टेंसिल को लिखने करता बफ़र समस्या यह है कि मैं स्टेंसिल बफर कॉन्फ़िगर करने के लिए किया था:

यह मेरा कोड अब तक है।

एंड्रॉयड लांचर आप इस तरह यह करना की जरूरत के लिए:: डेस्कटॉप के लिए

AndroidApplicationConfiguration Configuration = new AndroidApplicationConfiguration(); 
Configuration.stencil = 8; //stencil buffer size 
initialize(new Game(), Configuration); //pass it as parameter 

जिस तरह से यह किया जाता है एक आवेदन configuratioin वस्तु बनाने और एक पैरामीटर के रूप में यह गुजर जब इस तरह आवेदन आरंभ कर रहा है यह

LwjglApplicationConfiguration Configuration = new LwjglApplicationConfiguration(); 
Configuration.stencil = 8; 
new LwjglApplication(new Game(), Configuration); 
जैसा है