मैं एंड्रॉइड के लिए एक डाइस रोलर ऐप बना रहा हूं। कोटलिन, ओपनजीएल-ईएस और जेबलेट का उपयोग करना। मैंने पासा लागू किया है। अब मुझे दीवारें बनाने की जरूरत है, क्योंकि अन्यथा पासा स्क्रीन से बाहर हो जाएगी।ओपनजीएल निर्देशांक में स्क्रीन निर्देशांक कनवर्ट करें
क्योंकि स्क्रीन में विभिन्न पहलू अनुपात हो सकते हैं, मैं glUnProject
के साथ दीवारों की स्थिति निर्धारित करने की कोशिश कर रहा हूं, लेकिन मैं इसे समझ नहीं सकता। मुझे प्राप्त निर्देशांक सही नहीं हैं।
gl.glViewport(0,0,width,height) //Reset The Current Viewport
gl.glMatrixMode(GL10.GL_PROJECTION) //Select The Projection Matrix
gl.glLoadIdentity() //Reset The Projection Matrix
//Calculate The Aspect Ratio Of The Window
GLU.gluPerspective(gl, 35.0f, width.toFloat()/height.toFloat(), 0.1f, 100.0f)
GLU.gluLookAt(gl,
0.0f, 30.0f, 0.0f, //Pos
0.0f, 0.0f, 0.0f, //Look at
0.0f, 0.0f, 1.0f //Up
);
gl.glMatrixMode(GL10.GL_MODELVIEW) //Select The Modelview Matrix
gl.glLoadIdentity() //Reset The Modelview Matrix
// Get matrices
gl.glGetFloatv(GL11.GL_PROJECTION_MATRIX, glProjectionMatrix,0)
gl.glGetFloatv(GL11.GL_MODELVIEW_MATRIX, glModelMatrix,0)
gl.glGetIntegerv(GL11.GL_VIEWPORT, glViewPort,0)
// Allocate matrices
var modelMatrix = glModelMatrix
var projMatrix = glProjectionMatrix
var view = glViewPort
// Pre allocate wall positions
var wallDown = FloatArray(4)
// The needed point
var wallDownP = Vector3f(view[2].toFloat(), view[3].toFloat(), 0.2888888f)
GLU.gluUnProject(wallDownP.x, wallDownP.y, wallDownP.z, modelMatrix, 0, projMatrix, 0, view, 0, wallDown, 0)
आप उस 0.2888888f से कहां से प्राप्त हुए? – 246tNt
यदि आप दीवारों को चाहते हैं तो आप व्यूपोर्ट को 2 से क्यों विभाजित करते हैं? और दीवार से आप शायद अपने कैमरे के दृश्य के किनारे मतलब है? – Spidfire