पर निर्देशांक करता है मैं एक एंड्रॉइड एप्लिकेशन बना रहा हूं जो ओपनजीएल ईएस 2.0 का उपयोग करता है और मैंने दीवार में भाग लिया है। मैं विश्व निर्देशांक में स्क्रीन निर्देशांक (जहां उपयोगकर्ता छूता है) को कन्वर्ट करने की कोशिश कर रहा हूं। मैंने GLU.gluUnProject के साथ पढ़ने और खेलने की कोशिश की है, लेकिन मैं या तो गलत कर रहा हूं या बस इसे समझ नहीं पा रहा हूं।एंड्रॉइड ओपनजीएल ईएस 2.0 स्क्रीन विश्व निर्देशांक
यह मेरा प्रयास है ....
public void getWorldFromScreen(float x, float y) {
int viewport[] = { 0, 0, width , height};
float startY = ((float) (height) - y);
float[] near = { 0.0f, 0.0f, 0.0f, 0.0f };
float[] far = { 0.0f, 0.0f, 0.0f, 0.0f };
float[] mv = new float[16];
Matrix.multiplyMM(mv, 0, mViewMatrix, 0, mModelMatrix, 0);
GLU.gluUnProject(x, startY, 0, mv, 0, mProjectionMatrix, 0, viewport, 0, near, 0);
GLU.gluUnProject(x, startY, 1, mv, 0, mProjectionMatrix, 0, viewport, 0, far, 0);
float nearX = near[0]/near[3];
float nearY = near[1]/near[3];
float nearZ = near[2]/near[3];
float farX = far[0]/far[3];
float farY = far[1]/far[3];
float farZ = far[2]/far[3];
}
संख्या मैं सही नहीं लग रहे हो रही है, इस लिए इस विधि का उपयोग करने के लिए सही तरीका है? क्या यह ओपनजीएल ईएस 2.0 के लिए काम करता है? क्या मुझे इन गणनाओं से पहले मॉडल मैट्रिक्स को एक पहचान मैट्रिक्स बनाना चाहिए (Matrix.setIdentityM (mModelMatix, 0))?
फॉलो अप के रूप में, यदि यह सही है, तो मैं आउटपुट जेड कैसे चुनूं? असल में, मैं हमेशा जानता हूं कि मैं किस दूरी पर विश्व समन्वय चाहता हूं, लेकिन जीएलयू.ग्लूयूप्रोजेक्ट में जेड पैरामीटर निकट और दूर के विमान के बीच कुछ प्रकार का इंटरपोलेशन प्रतीत होता है। क्या यह सिर्फ एक रैखिक इंटरपोलेशन है?
अग्रिम धन्यवाद
मेरे समाधान सी में हैं ++। बस इस जवाब पर स्कैनिंग, यह मेरे लिए सही लग रहा है। तो, मैं एक उत्तर पोस्ट नहीं करूंगा। :] – TheBuzzSaw