में गहराई बफर/गहराई मान लिखने के लिए वर्कअराउंड मुझे एंड्रॉइड डिवाइस (ओपनजीएल ईएस 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 एंड्रॉइड डिवाइस पर गहराई बफर लिखने के लिए एक और, सामान्य तरीका/कामकाज के बारे में सोच सकते हैं?
यह एक दिलचस्प विकल्प की तरह लगता है! जैसा कि मैंने आशा की थी, उतना ही सुरुचिपूर्ण समाधान नहीं है, लेकिन ऐसा कोई दूसरा नहीं लगता है ... मैं शायद इसे आज़मा दूंगा। गहराई सॉर्टिंग अधिकांश प्रोटीन और अन्य छोटे अणुओं के लिए पर्याप्त तेज़ी से होनी चाहिए। – kroneml