保存和恢复OpenGL模型视图

时间:2011-03-08 23:46:59

标签: android opengl-es

我是OpenGL的新手,其中大部分仍然对我虚弱的脑子很神秘。我一直在研究NeHe演示以及红皮书。我正在编写一个Android应用程序,在屏幕中央显示地球。用户可以围绕任何轴旋转地球(非常简单的“Google Earth”)。

此代码正在运行(我基于NeHe示例)。现在我要添加一个功能;用户应该能够保存当前的模型方向,然后返回到相同的方向。例如,用户可以保存地球方向,使得观看者俯视她的家乡,并且东北方向是“向上”。

如何使用OpenGL-ES执行此操作?为了捕获并保存当前方向,我的代码可以获得当前的模型 - 视图转换矩阵 - 我想我知道如何做到这一点。但是后来如何应用保存的矩阵来恢复视图?

3 个答案:

答案 0 :(得分:0)

使用glGet(Float|Double)v保存模型视图矩阵。您使用glLoadMatrix[df]加载它。

哎呀 - 重读你的问题,你在谈论OpenGL-ES。使用OpenGL-ES,你必须提供自己的矩阵数学“东西”,而那些不起作用 - 你必须自己完成这项工作。如果不知道你现在是怎么做的话,很难具体。

答案 1 :(得分:0)

假设您使用的是ES 1.1,则需要查看glLoadMatrixf()glGetFloatv(GL_*_MATRIX)

如果您使用的是ES 2.0,则必须使用自己的系统。

答案 2 :(得分:0)

我会说你实际上构建了一个非图形模型,说明了正在发生的事情,不鼓励使用glGet*/glRead*(延迟,可移植性等)。这是你的变换(旋转)矩阵。然后,您将使用glLoadIdentity每个框架push/popMatrixloadMatrix来应用您的转换。保存当前模型方向与复制转换矩阵相同,转换矩阵实际上只是一小组浮点数的副本。