繁体   English   中英

保存和还原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每帧使用glLoadIdentitypush/popMatrixloadMatrix来应用转换。 保存当前模型方向将与复制转换矩阵相同,实际上只是复制一小部分浮点数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM