android opengl坐标转换 源码,android – 将屏幕坐标转换为OpenGL坐标

我正在为

Android创建一个Dice Roller应用程序.使用Kotlin,OpenGL-ES和jBullet.

我已经实现了骰子.

现在我需要创建墙,因为否则骰子将从屏幕滚出.

因为屏幕可以有不同的宽高比,我试图用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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值