2010-01-20 7 views
13

मेरे पास विश्व निर्देशांक में परिभाषित एक वस्तु है, त्रिज्या के साथ (2,3) पर केंद्रित एक सर्कल कहें। यदि मैं चाहता हूं कि सर्कल विकृत न हो, तो व्यूपोर्ट में पूरी तरह से दिखाई दे और जैसा होgluOrtho2D और glViewport

glViewport(20, 30, 1000, 500)? 

मैं पूरी व्यूपोर्ट दुनिया स्क्रीन बनाम, आदि निर्देशांक बनाम के साथ भ्रमित कर रहा हूँ: बड़ा व्यूपोर्ट के भीतर संभव के रूप में, मैं कैसे एक gluOrtho2D आदेश तैयार कर सकते हैं कि दिए गए ऊपर उल्लिखित चश्मा के आधार पर एक दुनिया खिड़की बनाने के लिए। क्या कोई मुझे इसके माध्यम से चल सकता है? मैं वास्तव में इस के लटकना चाहता हूँ।

उत्तर

27

आपके उदाहरण में, व्यूपोर्ट 500 पिक्सल से 500 पिक्सेल ऊंचा है। तो आपको glOrtho निर्देशांक निर्दिष्ट करने की आवश्यकता है जिनके समान पहलू अनुपात (2: 1) है।

आपका सर्कल त्रिज्या में 4 इकाइयां है, इसलिए आपको 8 इकाइयों तक कम से कम 8 इकाइयों की ऊंचाई की आवश्यकता है। 2: 1 पहलू अनुपात को ध्यान में रखते हुए, आइए 16 इकाइयों को 8 इकाइयों तक बढ़ाएं।

केंद्र (2, 3) पर है। तो इन 16 x 8 केंद्रित चारों ओर है कि आप मिलना चाहिए:

glOrtho2D (2 - 8, 2 + 8, 3 - 4, 3 + 4); 

है:

glOrtho2D (-6, 10, -1, 7); 

यह प्रभावी रूप से नक्शे एक्स व्यूपोर्ट के बाएं किनारे पर -6 का समन्वय। GlViewport मैपिंग तब स्क्रीन पर वास्तविक स्थान पर नक्शा करता है। जैसे-जैसे स्क्रीन आकार बदलता है, आपको पहलू अनुपात की क्षतिपूर्ति के लिए glOrtho2D निर्देशांक समायोजित करना होगा, लेकिन जब तक व्यूपोर्ट 2: 1 है, तो इन glOrtho2D कॉल को बदलने की आवश्यकता नहीं होगी।

+0

धन्यवाद! लेकिन व्यूपोर्ट कमांड का 20,30 कैसे खेलता है? क्या ग्लोथो 2 डी क्या प्रभावित करेगा? यदि नहीं, तो क्यों नहीं? – Alex

+4

@Alex: यह वास्तव में प्रभावित नहीं करता है कि glOrtho2D क्या होने जा रहा है। हम कह रहे हैं: व्यूपोर्ट के बाएं किनारे पर मेरे मॉडल निर्देशांक में -6 के एक्स समन्वय को मानचित्र करें (जिसे पहले से ही विंडो में पिक्सेल 20 में मैप किया गया है)। – Tarydon

+1

बस एक नोट: यह glOrtho2D नहीं है, यह ** 'gluOrtho2D() '** है (देखें ** glu **): http://www.opengl.org/sdk/docs/man2/xhtml/gluOrtho2D। एक्सएमएल, या ** 'ग्लोथो() '**: http://www.opengl.org/sdk/docs/man2/xhtml/glOrtho.xml – Sk8erPeter

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