WebGL

2012-11-16 9 views
7

मैं WebGL में बड़े निर्देशित अचक्रीय रेखांकन ड्राइंग gwt-g3d पुस्तकालय का उपयोग करने पर काम कर रहा हूँ में एक 3 डी वृक्ष संरचना ड्राइंग तकनीक के अनुसार यहाँ दिखाया गया है: http://www-graphics.stanford.edu/papers/h3/WebGL

इस बिंदु पर, मैं एक साधारण दो स्तर है ग्राफ प्रतिपादन:

enter image description here

प्रदर्शन भयानक है - यह 1.5-2 के बारे में सेकंड लेता है इस बात रेंडर करने के लिए। मैं ओपनजीएल विशेषज्ञ नहीं हूं, इसलिए यहां सामान्य दृष्टिकोण है जो मैं ले रहा हूं। हो सकता है कि कोई ऐसे ऑप्टिमाइज़ेशन को इंगित कर सके जो इस प्रतिपादन को तेज कर देगा।

enter image description here

मैं चकित कितनी देर तक यह ग्राफिक्स कार्ड के लिए MODELVIEW मैट्रिक्स और बफ़र्स पुश करने के लिए ले जाता है कर रहा हूँ। यही वह जगह है जहां शेर का समय बर्बाद हो गया है। क्या मुझे वर्टेक्स शेडर में मॉडेलव्यू ट्रांसफॉर्मेशन करना चाहिए?

यह मैं विश्वास है कि MODELVIEW मैट्रिक्स जोड़ तोड़ और प्रत्येक नोड के लिए एक बार यह धक्का एक बुरा व्यवहार नहीं होना चाहिए, लेकिन समय झूठ मत बोलो:

https://gamedev.stackexchange.com/questions/27042/translate-the-modelview-matrix-or-change-vertex-coordinates

+0

आपने इसे कैसे समय दिया? समय झूठ बोलते हैं। कुछ ब्राउज़र समानांतर होते हैं इसलिए समय कठिन होता है। किसी भी मामले में, आप कह रहे हैं कि प्रति फ्रेम 1.5 से 2 सेकंड लगते हैं? मुझे समझ में नहीं आता कि आप क्या कर रहे हैं लेकिन कुछ दृश्यों के लिए 24 घंटों के साथ सरल दृश्य ग्राफ 60hz पर ठीक चलना चाहिए। क्या आप (1) एक बार शेडर्स को संकलित करते हैं, आपके रेंडर लूप में नहीं (2) आपके रेंडर लूप में किसी भी ग्लैगेट फ़ंक्शन को कॉल नहीं करते? (3) अपने वर्टेक्स डेटा को केवल एक बार अपलोड करना, आपके रेंडर लूप में नहीं? उम्मीद है कि वे गूंगा सवाल नहीं हैं लेकिन आप एक उचित गति पर ~ 1000 क्यूब्स आकर्षित करने में सक्षम होना चाहिए। – gman

उत्तर

2

समूह नोड्स बड़ा में उन्हें अलग से प्रस्तुत करने के बजाय भाग। लागू परिवर्तनों के साथ सभी ज्यामिति की पृष्ठभूमि कैशिंग करें जो अधिकतर संभवतः संशोधित नहीं होंगे और इसे एक बफर में स्टोर करें और एक कॉल में प्रस्तुत करें।

एक और समाधान: एक बफर में स्टोर नोड्स (बॉक्स + लाइन) (आप वर्तमान समय में आपको अधिक से अधिक स्टोर कर सकते हैं) और बनावट में उनके परिवर्तन। नोड इंडेक्स (बनावट निर्देशांक) के आधार पर वर्टेक्स शेडर में परिवर्तन लागू करें। यह तेजी से तेज़ी से तेज होना चाहिए।

समर्थन उपयोग this site का परीक्षण करने के लिए। मेरे पास MAX_VERTEX_TEXTURE_IMAGE_UNITS | 4

सर्वश्रेष्ठ समाधान Geometry Instancing होगा लेकिन वर्तमान में यह वेबजीएल में समर्थित नहीं है।

+0

क्या कोई lib नहीं है, जो समूहों में नोड्स को प्रस्तुत करके मदद कर सकता है? अफैक डी 3 कैनवास द्वारा भी उपयोग किया जाता है (न केवल एसवीजी द्वारा), क्या यह इस उद्देश्य के लिए अच्छा है? – inf3rno

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