मैं विकसित कर रहा हूँ एक 2 डी खेल इंजन का समर्थन करेंगे कि 3 डी में भविष्य. यह वर्तमान विकास के चरण में, मैं काम कर रहा हूँ पर बैच रेंडरर. के रूप में आप में से कुछ पता हो सकता है, जब batching ग्राफिक्स के साथ, के लिए वर्दी का समर्थन रंग (आरजीबीए), बनावट निर्देशांक, बनावट आईडी (बनावट) सूचकांक, और मॉडल परिवर्तन मैट्रिक्स खिड़की से बाहर जाना है, लेकिन इसके बजाय पारित कर रहे हैं के माध्यम से शीर्ष बफर. ठीक है अब, मैं लागू किया है गुजर रहा है, मॉडल के पदों, रंग, बनावट निर्देशांक, और बनावट आईडी शीर्ष करने के लिए बफर. मेरे शीर्ष बफर प्रारूप इस तरह दिखता है ठीक है अब:
float* v0 = {x, y, r, g, b, a, u, v, textureID};
float* v1 = {x, y, r, g, b, a, u, v, textureID};
float* v2 = {x, y, r, g, b, a, u, v, textureID};
float* v3 = {x, y, r, g, b, a, u, v, textureID};
मैं हूँ के बारे में एकीकृत करने के लिए गणना की है, जहां वस्तु होना चाहिए दुनिया में अंतरिक्ष का उपयोग कर एक परिवर्तन मैट्रिक्स. यह मुझे करने के लिए सवाल पूछना:
चाहिए परिवर्तन मैट्रिक्स से गुणा किया जा मॉडल शीर्ष पदों पर CPU या GPU?
कुछ मन में रखने के लिए है कि अगर मैं इसे पारित शीर्ष करने के लिए बफर, मैं अपलोड करने के लिए होगा परिवर्तन मैट्रिक्स के प्रति एक बार शीर्ष (4 बार प्रति स्प्राइट) जो करने के लिए मुझे लगता है की बर्बादी की तरह स्मृति. दूसरे हाथ पर, गुणा मॉडल शीर्ष पदों से परिवर्तन मैट्रिक्स पर सीपीयू की तरह लगता है, यह धीमी होगी के साथ तुलना में, GPU के संगामिति क्षमताओं.
यह कैसे मेरे शीर्ष बफर प्रारूप की तरह लग रही होगी अगर मैं गणना रूपांतरण पर GPU:
float* v0 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v1 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v2 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v3 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
सवाल यह है कि ज्यादातर सैद्धांतिक रूप से संचालित । तो, एक सैद्धांतिक और तकनीकी जवाब बहुत सराहना की जाएगी. लेकिन संदर्भ के लिए, यहाँ कोड है.