2012-07-05 10 views
7

में गहराई बफर/गहराई मान लिखने के लिए वर्कअराउंड मुझे एंड्रॉइड डिवाइस (ओपनजीएल ईएस 2.0) पर गहराई बफर को लिखने की आवश्यकता है। चूंकि gl_FragDepth ओजीएल ईएस 2.0 के तहत लिखने योग्य नहीं है, इसलिए मुझे एक समाधान मिलना है। मैं वास्तव में raycasting के माध्यम से गोलाकार प्रस्तुत करना चाहता हूं, इस तरह: http://www.sunsetlakesoftware.com/2011/05/08/enhancing-molecules-using-opengl-es-20। हालांकि, इस वेबसाइट पर समाधान समझाया गया है (ऑफस्क्रीन एक विशेष glBlendEquation का उपयोग करके गहराई को लिखने के लिए प्रस्तुत करता है) केवल एंड्रॉइड पर नहीं, ऐप्पल डिवाइस पर काम कर रहा है, क्योंकि GL_MIN_EXT -blending समर्थित नहीं है।OpenGL ES 2.0

मेरी Tegra3 टैबलेट पर मैं इस पद्धति को लागू करने में सक्षम था: Android GLES20.glBlendEquation not working? (btw, मैं linearized गहराई मूल्यों का उपयोग करना चाहिये, वे बेहतर परिणाम देने!) यह काफी अच्छा काम करता है, लेकिन निश्चित रूप से इस NVIDIA GPUs पर ही उपलब्ध है।

सिद्धांत रूप में, विस्तार GL_EXT_frag_depth है (Can an OpenGL ES fragment shader change the depth value of a fragment? देखें), लेकिन यह एंड्रॉइड उपकरणों पर भी उपलब्ध नहीं है।

अंत में, आप निश्चित रूप से केवल एक क्षेत्र (ऑफस्क्रीन रेंडर पास में) के लिए गहराई बफर लिख सकते हैं, फिर दूसरे क्षेत्र के लिए गहराई बफर लिखें, दूसरे रेंडर पास में और दोनों को तीसरे रेंडर पास में गठबंधन करें। ऐसा करने में, आपके पास एन गोलाकारों के लिए 2 * एन + 1 रेंडर पास होंगे - जो काफी अक्षम है!

इसलिए जब से मैं विचारों से बाहर निकल रहा हूं, तो मेरा सवाल यह है: क्या आप ओपनजीएल ईएस 2.0 एंड्रॉइड डिवाइस पर गहराई बफर लिखने के लिए एक और, सामान्य तरीका/कामकाज के बारे में सोच सकते हैं?

उत्तर

2

ठीक है, आप निश्चित रूप से यहां विकल्पों से बाहर निकल रहे हैं। मुझे किसी और कामकाज की जानकारी नहीं है क्योंकि मुझे ओपनगल ईएस बहुत अच्छी तरह से पता नहीं है।

केवल बात यह है कि मेरे दिमाग में आता है कुछ पूर्व प्रसंस्करण के साथ जानवर बल बहु-पास दृष्टिकोण के संयोजन होगा:

क्रमबद्ध समूहों जहां परमाणुओं एक दूसरे को नहीं अतिव्यापी हैं में अपने क्षेत्रों। अपने सभी क्षेत्रों को कम से कम दस समूहों में प्रोटीन से सॉर्ट करना संभव होना चाहिए। फिर एक समूह में प्रत्येक समूह के सभी क्षेत्रों को प्रस्तुत करें। कशेरुक-गहराई यहां पर्याप्त है, क्योंकि गोलाकार ओवरलैप नहीं होते हैं। फिर आप परिणामों को "गहराई से मिश्रण" कर सकते हैं।

इसके लिए कुछ प्रीप्रोकैसिंग की आवश्यकता है जो एक समस्या हो सकती है।

+0

यह एक दिलचस्प विकल्प की तरह लगता है! जैसा कि मैंने आशा की थी, उतना ही सुरुचिपूर्ण समाधान नहीं है, लेकिन ऐसा कोई दूसरा नहीं लगता है ... मैं शायद इसे आज़मा दूंगा। गहराई सॉर्टिंग अधिकांश प्रोटीन और अन्य छोटे अणुओं के लिए पर्याप्त तेज़ी से होनी चाहिए। – kroneml