जहां तक मुझे पता है, हम ओपनजीएल ईएस 2.0 में जेड (गहराई) मान नहीं पढ़ सकते हैं। तो मैं सोच रहा हूं कि हम 2 डी स्क्रीन पर एक बिंदु से 3 डी वर्ल्ड निर्देशांक कैसे प्राप्त कर सकते हैं?ओपनजीएल एसएस 2.0 गहराई बफर
दरअसल मेरे पास कुछ यादृच्छिक विचार काम कर सकते हैं। चूंकि हम glReadPixels का उपयोग करके आरजीबीए वैल्यू पढ़ सकते हैं, हम गहराई बफर को डुप्लिकेट कैसे करते हैं और इसे रंग बफर में स्टोर करते हैं (कलरफोर्डेड कहते हैं)। बेशक वहां कुछ अच्छा सम्मेलन होना चाहिए ताकि हम गहराई बफर की कोई जानकारी न खोएं। और फिर जब हमें किसी बिंदु के विश्व निर्देशांक की आवश्यकता होती है, तो हम इस रंगीन डिप्थ रंग बफर को फ्रेमबफर पर संलग्न करते हैं और फिर इसे प्रस्तुत करते हैं। तो जब हम इस फ्रेम पर गहराई से जानकारी पढ़ने के लिए glReadPixels का उपयोग करते हैं।
हालांकि, इससे 1 फ्रेम फ्लैश होगा क्योंकि कलरबफर गहराई बफर से अनुवादित एक अजीब बफर है। मैं अभी भी सोच रहा हूं कि OpenGL es 2.0 में गहराई प्राप्त करने के लिए कुछ मानक तरीका है या नहीं?
अग्रिम में Thx! :)
टॉमी, क्या आप घटकों के बीच gl_FragCoord.z को विभाजित करने के बारे में कुछ और कह सकते हैं। पालन नहीं करते हुए। चीयर्स। – dugla
@dugla यदि गहराई 32-बिट पूर्णांक थी, तो आप आर, जी, बी और ए में से प्रत्येक में 8-बिट्स हो सकते हैं। इसलिए अभ्यास में आप क्या करेंगे वेक्टर '(1, 256 गुणा करने जैसा कुछ है , 65536, 16777216) ', फिर उस वेक्टर मोड 1.0 के प्रत्येक घटक को प्रासंगिक चैनलों में स्टोर करें। आप बाद में प्रासंगिक घटकों को विभाजित करके और एक साथ जोड़कर पुनः संयोजित कर सकते हैं। – Tommy