OpenGL 多边形旋转

3
我正在尝试在OpenGl和C++中实现一个移动和旋转的多边形。
移动和旋转沿着XZ平面进行(仅限2D变换)。
多边形由中心点和一组顶点定义,这些顶点的坐标存储为相对于中心点的偏移量。
根据用户按键移动多边形,可以通过将移动距离简单地添加到中心点并通过将偏移值添加到中心坐标来更新顶点来完成X或Z方向的移动。
使用glRotatef()函数实现关于中心点的旋转。
但是我需要知道顶点坐标以进行碰撞检测计算。是否有可能只检索变换后多边形的顶点坐标而不执行矩阵操作?
2个回答

2
有没有可能只获取转换后多边形的顶点坐标,而不需要自己执行矩阵操作?
OpenGL不是数学库,它只用于绘图。此外,固定功能OpenGL的矩阵操作函数已经过时,并已从OpenGL-3核心和更高版本中删除。
事实上,这是推荐的方法。请记住:OpenGL只是您的绘图工具,而不是3D渲染器、游戏模拟引擎、数学几何工具包。

2

glRotatef函数创建一个矩阵,该矩阵与堆栈上存在的当前矩阵相乘,以获得屏幕旋转。即使您可以获取该矩阵,您仍然必须将其乘以您的向量以获得所需的值,这就是如果您自己完成数学运算需要做的事情。就像datenwolf所说的那样,最好您自己编写数学库,以执行在二维或三维世界中操作对象所需的所有必要功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接