मेरे दृष्टिकोण से सबसे निचला स्तर समझ में आता है, जो प्रतिपादन में शामिल संसाधनों के बारे में बात करता है - vb / ib, रेंडर सरफेस, टेक्सचर्स, शेड्स, स्टेट ब्लॉक इत्यादि।
यहां समस्या यह है कि इनमें से कुछ को एपीआई के आधार पर अलग-अलग प्रारूपों में होना चाहिए - यही वह जगह है जहां यह थोड़ा मुश्किल हो जाता है। इसके आसपास सबसे आसान तरीका संबंधित एपीआई के लिए स्थैतिक संसाधनों को पूर्व-संसाधित करना है। गतिशील लोगों के लिए, केवल उपयोग करें उन्हें उत्पन्न करने के शेड्स का उपयोग करें - जो मूल प्रारूपों में रहने के लिए काफी सरल बनाता है।
फिर आप सभी उच्च स्तर पर संलग्न संसाधनों के साथ पाइपलाइनों को सेट करते हैं और उन्हें GPU पर सौंप देते हैं। आप पाएंगे कि सब कुछ उस तरह से अच्छी तरह से अमूर्त नहीं किया जा सकता है, खासकर यदि आप हार्डवेयर-विशिष्ट ट्रिक्स का लाभ उठाते हैं। लेकिन यह एक अच्छी शुरुआत है।
(सिडेनोट: यदि आप प्लेटफ़ॉर्म-विशिष्ट ट्रिक्स को एक विशेष प्रकार के संसाधन के रूप में मानते हैं, तो आप इस पूरी अवधारणा को काफी दूर धकेल सकते हैं।)
तो एक तरह से, आप दो चीजें बनाएंगे: एक हार्डवेयर रिसोर्स मैनेजर, और एक टूलकिट इन संसाधनों का डीएजी स्थापित करने के लिए।