![](/img/trans.png)
[英]Android calculate object 2D position if having projection model-view matrix in OpenGL
[英]Saving and restoring OpenGL model-view
我是OpenGL的新手,但我的大脑却很难理解。 我一直在学习NeHe演示以及《红皮书》。 我正在编写一个在屏幕中心显示地球的Android应用程序。 用户可以绕任何轴旋转地球(很像一个非常简单的“ Google Earth”)。
这段代码有效(我基于NeHe示例)。 现在我要添加一个功能; 用户应该能够保存当前的模型方向,然后再返回该方向。 例如,用户可以保存地球方向,使得观看者向下看她的家乡,而东北是“上”。
我该如何使用OpenGL-ES? 为了捕获并保存当前方向,我的代码可以获取当前的模型视图转换矩阵-我想我知道该怎么做。 但是,以后如何应用保存的矩阵还原视图?
您可以使用
glGet(Float|Double)v
保存模型视图矩阵。
您可以使用
glLoadMatrix[df]
加载它。
糟糕-重读您的问题,您正在谈论OpenGL-ES。 使用OpenGL-ES,您必须提供自己的矩阵数学“东西”,而这些东西将不起作用-您必须自己完成这项工作。 如果不知道您现在的状况,很难做到明确。
假设您正在使用ES 1.1,则需要查看glGetFloatv(GL_*_MATRIX)
glLoadMatrixf()
和glGetFloatv(GL_*_MATRIX)
。
如果您使用的是ES 2.0,则必须安装自己的系统。
我要说的是,您实际上是在建立一个非图形模型来说明正在发生的事情,不鼓励使用glGet*/glRead*
(延迟,可移植性等)。 那就是你的变换(旋转)矩阵。 然后,您将glLoadIdentity
每帧使用glLoadIdentity
, push/popMatrix
和loadMatrix
来应用转换。 保存当前模型方向将与复制转换矩阵相同,实际上只是复制一小部分浮点数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.