当前位置: 首页 > 知识库问答 >
问题:

如何像OpenGL中的glRotatef()一样旋转顶点?

漆雕育
2023-03-14

我需要优化我的渲染代码,目前我正在使用glPushMatrix()和glTranslatef()以及glRotatef()。但这比在单个顶点数组调用中渲染所有对象的成本更高。

OpenGL中是否有一些快速的内置函数可以像glRotatef()一样旋转我的顶点数据?如果没有,你会推荐使用什么库或方法?我所知道的唯一方法是使用sin/cos函数来旋转顶点,但我不确定这是否是最快的方法,或者它甚至会导致相同的结果。

我只需要在每个对象上沿一个轴旋转一次(2D渲染),所以它不需要非常复杂,也不需要完全支持glPushMatrix()系统。

编辑:我不想为此使用着色器。

Edit2:我只渲染沿零点旋转的单个四边形(在2D模式下),因此每个顶点的值从-10到10不等。我的当前代码:(quad.vert[i].x*cosval)-(quad.vert[i].y*sinval)(两次,也用于y)。

共有1个答案

艾跃
2023-03-14

我假设您使用的是OpenGL的旧版本,因为您使用的是glRotate,而真正古老/奇怪的硬件是因为您不想使用着色器。

您可以将glRotate*()调用放在显示列表中,或者自己计算旋转矩阵。OpenGL红皮书的第3章以及附录F提供了您自己构建矩阵所需的信息。有关显示列表的更多信息,请参阅第7章。

 类似资料:
  • OpenGL总是围绕(0,0,0)旋转。但是我需要绕着相机旋转。我知道在GL中,没有相机,但是如果我翻译回(0,0,-6.0),它会绕着(0,0,0)旋转,而不是绕着(0,0,-6.0)旋转 所以我的问题是:如何在opengl和c中设置旋转中心 我已经找到了这篇文章:OpenGL围绕一个点旋转相机 显示此解决方案的地方: 旋转函数通常围绕原点旋转。要围绕另一个点P旋转,必须:平移(-P)旋转平移(

  • 我试图用glRotatef旋转空间中的特定物体。我不太确定它在引擎盖下是如何工作的,所以我不确定我为对象顶点设置的法向量是否会随着顶点坐标旋转。我只需要知道它是否也旋转法线。

  • 我只需要添加一个边距顶部,这样,如果我的图像是用这个js: 我知道这可能很简单,但我是个初学者。希望有人能教我怎么做。谢谢!

  • 我正在使用GLFW在c中创建一个OpenGL应用程序。基于本教程,我成功地创建了类似FPS的摄影机(WASD移动-鼠标移动-俯仰-偏航)。 我使用的相机鼠标移动 这很好,但问题是我的应用程序窗口不是全屏的,所以如果我想旋转鼠标光标,它就会离开窗口,很难控制相机。 是否可以做与glfwSetCursorPosCallback相同的事情,但仅当按下左键时?我希望相机做与现在相同的事情,但仅当我按下左键

  • 问题内容: 我无法快速将图像旋转90度。我已经写了下面的代码,但是有一个错误并且无法编译 以下是我不确定的代码 问题答案: 这是针对 Swift 4.0 的扩展,可以仅旋转图像而无需。成功测试了图像已旋转,不仅更改了exif数据。 要执行180度旋转,您可以这样命名: 如果由于某种原因无法旋转,则将返回原始图像。

  • 我有一个相机旋转矩阵3x3,然后我用罗德里格斯函数从旋转矩阵中得到旋转矢量,但是它给出的结果像,但是OpenGL函数需要度数。我认为是归一化的,我应该把每个元素乘以360来得到度数。但是OpenCV和OpenGL之间也有坐标系的差异。我如何在OpenGL坐标系中获得度数的旋转矢量?