2013-02-07 20 views
5

में स्टैंसिलिंग बनावट मैं Libgdx प्रोजेक्ट में कुछ स्टैंसिलिंग करने की कोशिश कर रहा हूं। अब तक, मैं केवल चित्रण के बाद बहुभुज (कोड) को स्टेंसिल करने में सक्षम हूं।ओपनजीएल ईएस 2.0

प्रश्न: ओपनजीएल ईएस 2.0 में गैर-पॉलीगोनल आकृतियों को कैसे स्टैंसिल करना चाहिए? (यानी मैं नहीं चाहता कि पारदर्शी पिक्सल को स्टैंसिल बफर पर खींचा जाए)

मुझे GL_ALPHA_TEST का उपयोग किए बिना इसे कैसे प्राप्त किया जाना चाहिए (क्योंकि ओपनजीएल ES 2.0 इसे अनुमति नहीं देता है)?

किसी भी मदद या पॉइंटर्स की बहुत सराहना की जाती है और अग्रिम धन्यवाद।

संपादित करें: यदि आप मुझे समझने के लिए थोड़ा सा नमूना प्रदान कर सकते हैं तो यह बहुत उपयोगी होगा।

कृपया पर विचार नीचे दिए गए उदाहरण:

enter image description here

यह प्रतिपादन कोड है:

@Override 
public void render(float delta) { 
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_STENCIL_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 


    stage.act(); 
    stage.draw(); 

    Gdx.gl20.glColorMask(false, false, false, true); 
    Gdx.gl20.glDepthMask(false); 

    Gdx.gl20.glClearStencil(0x0); 

    Gdx.gl20.glEnable(GL20.GL_STENCIL_TEST); 

    Gdx.gl20.glStencilFunc(GL20.GL_ALWAYS, 0x1, 0x1); 
    Gdx.gl20.glStencilOp(GL20.GL_KEEP, GL20.GL_KEEP, GL20.GL_REPLACE);  

    batch.begin(); 
    batch.draw(heart, 0, i+50); 
    batch.end(); 

    Gdx.gl20.glColorMask(true, true, true, true); 
    Gdx.gl20.glDepthMask(true); 

    Gdx.gl20.glStencilFunc(GL20.GL_NOTEQUAL, 0x1, 0x1); 
    Gdx.gl20.glStencilOp(GL20.GL_KEEP, GL20.GL_KEEP, GL20.GL_KEEP); 

    batch.begin(); 
    batch.draw(heart, 0, i); 
    batch.end(); 

    Gdx.gl20.glDisable(GL20.GL_STENCIL_TEST); 
} 

उत्तर

0

मैं libgdx के साथ अनुभव नहीं है, लेकिन आम मामले में आप अल्फा परीक्षण का अनुकरण कर सकते हैं खंड टुकड़े में:

if (pixelColor.a <= ALPHA_THRESHOLD) // threshold should be 0 for good visual results 
     discard; 
+0

मुझे आश्चर्य है कि ली में ऐसा कैसे करें बीजीडीएक्स ?? – Rafay

संबंधित मुद्दे