【问题标题】:Getting the current rotation and location coordinates获取当前旋转和位置坐标
【发布时间】:2012-05-11 01:55:22
【问题描述】:

我有一个简单的 OpenGL 程序,它允许您“生成”三角形和四边形,然后使用鼠标和一些键盘控件移动它们来制作复杂的对象,有点像 3D 模型编辑器。

我要做的是获取顶点坐标的当前“位置”以及它们的旋转,因此我可以将它们写入文件以进行保存和加载。目标是制作一个 3D 模型编辑器,将模型保存到文件中,然后将文件加载到我编写的另一个 OpenGL 程序中。

【问题讨论】:

  • 生成它们。有什么可以得到的?你已经知道你想要的一切。
  • 如何绘制三角形?如果您知道如何绘制三角形,那么您就知道三角形在哪里。
  • 你是说你有一个别人编译的 OpenGL 程序(即你只有二进制可执行文件)? ...并且您想以某种方式阅读 2D 屏幕截图以找出三角形等在哪里?

标签: c++ opengl coordinates glut


【解决方案1】:

这是错误的方法。您应该将数据发送给 OpenGL 之前保存数据。先把数据交给OpenGL,然后再问回来是不对的。

【讨论】:

  • 我要做的就是制作一个 3D 模型编辑器并保存“模型”。三角形不是用代码绘制的,你只需在屏幕上拍一个三角形并移动它。我只是想获取当前屏幕上的三角形坐标。可以这样想:您在坐标 (0,0,0) 处有一个三角形,当您用鼠标移动三角形时,它会将坐标更改为例如 (1,7,3)。跨度>
  • @UserBLAHBLAHNumbers:您使用的是库还是纯 C++ + OpenGL?因为正在绘制三角形,不是用户。您只需将用户输入用作输入。
【解决方案2】:

您像许多其他 OpenGL 新手一样陷入了误解:您将 OpenGL 误认为是场景图,但事实并非如此。 OpenGL 是一个绘图 API。 glTranslate、glRotate、glScale,它们不会“定位”对象,它们会改变它们的绘制方式。

作为 OpenGL API 的用户,您有责任跟踪构成要绘制的场景的所有数据。最好将 OpenGL 视为一种单向机器:数据输入,但不会输出(当然有一些值得注意的例外,但我建议您暂时忽略它们)。

【讨论】:

  • 没错。您首先告诉 OpenGL 如何绘制下一个对象(旋转、缩放等),然后绘制它。 BAM - 绘制,数据消失。
  • 谢天谢地,现在所有这些都被删除了。我们只需要将新手引导至核心配置文件。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 2019-01-08
相关资源
最近更新 更多