2010-11-20 15 views
7

चूंकि OpenGL में एक ज्यामिति शेडर के साथ स्तरित प्रतिपादन कुछ ड्राइवर/हार्डवेयर पर थोड़ा सा लगता है, इसलिए मैं अपने स्वयं के समाधान के साथ कार्यक्षमता को प्रतिस्थापित करना चाहता हूं। यह रेंडरटेक्चर के रूप में एक बड़े बनावट का उपयोग करके, उदाहरण के लिए 300 वर्ग का एक संकल्प। फिर बनावट में 100 वर्ग भागों को प्रतिपादित करके स्तरित प्रतिपादन अनुकरण करना। कि संकल्प के साथ यह 9 टाइल्स/परतों में परिणाम के रूप में नीचे mockup में दिखाया जाएगा:बनावट के हिस्से को प्रस्तुत करें

Tiles

सवाल है, OpenGL के साथ यह कैसे करें? माना जाता है कि एक ज्यामिति शेडर की सहायता से जो दृश्य को एक पास में अलग-अलग टाइल्स में प्रस्तुत करता है।

उत्तर

2

ऐसा करने का कोई आसान तरीका नहीं है। आप इसे एक साथ हैक करने के लिए ज्यामिति शेडर का उपयोग कर सकते हैं लेकिन यह शायद धीमा हो जाएगा, क्योंकि आपको बहुत सारी ज्यामिति इंस्टेंसिंग करना है और उसके बाद वर्टेक्स शेडिंग के लिए ज्यामिति शेडर का उपयोग करना है क्योंकि वर्टेक्स शेडर गेम से बाहर है।

समस्या का मूल दृष्टिकोण:

  • छोड़ दो शीर्ष शेडर खाली और बस कोने अपरिवर्तित
  • ज्यामिति शेडर में हर त्रिकोण के 8 नए उदाहरणों (एक साथ आप 9 त्रिकोण होगा)
  • में से प्रत्येक पर बनाने वापसी त्रिकोण एक समारोह चलाते हैं जो त्रिभुज को प्रोजेक्ट करेगा। आपके स्क्रीनशॉट के अनुसार, आपको ज्यामिति शेडर को भेजे जाने के लिए 9 अलग-अलग दृश्य मैट्रिस की आवश्यकता होगी।
  • अब त्रिभुजों की व्यवस्था करें ताकि प्रत्येक छवि के एक अलग भाग पर प्रस्तुत हो। ध्यान दें कि प्रक्षेपण के बाद, निर्देशांक सीमा में हैं [-1; 1] इसलिए आपको प्रत्येक त्रिभुज के निर्देशांक को 3 से विभाजित करने की आवश्यकता है और फिर 1/3 के गुणा करके संबंधित त्रिकोण को स्थानांतरित करने की आवश्यकता है।
  • यदि आप प्रति पिक्सेल फोंग छायांकन की गणना करते हैं, तो आपको प्रत्येक वर्टेक्स के साथ टुकड़ा शेडर में कैमरा स्थिति भेजनी होगी क्योंकि खंड के शेडर को स्क्रीन के विभाजन के बारे में कोई जानकारी नहीं है और आपके पास 9 अलग-अलग कैमरा स्थिति हैं।
  • +0

    एक अच्छे उत्तर के लिए धन्यवाद। शायद मुझे जीपीयू निर्माता को अपने ड्राइवर को एक साथ प्राप्त करने की प्रतीक्षा करनी चाहिए (एटीआई)। इसलिए वे प्रतिपादन परतों को 'texture2Darray' के बजाय समर्थन देते हैं। –

    +0

    हां, निश्चित रूप से। सवाल यह है कि, अगर एटीआई कभी भी अपने ड्राइवरों को सही तरीके से काम कर लेगा ... –

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