如何像在OpenGL中使用glRotatef()一样旋转顶点
How to rotate vertices exactly like with glRotatef() in OpenGL?
我需要优化我的渲染代码,目前我正在使用glPushMatrix((和glTranslatef((和glRotatef((。但这比在单个顶点数组调用中呈现所有对象的成本更高。
OpenGL 中是否有一些快速内置函数可以像 glRotatef(( 那样旋转我的顶点数据?如果没有,建议您使用哪种库或方法?我知道的唯一方法是使用 sin/cos 函数来旋转顶点,但我不确定这是否是最快的方法,或者它甚至会导致相同的结果。
我只需要为每个对象沿一个轴旋转一次(2D 渲染(,因此它不需要超级复杂或支持 glPushMatrix(( 系统的全部潜力。
编辑:我不想为此使用着色器。
Edit2:我只渲染沿零点旋转的单个四边形(在 2D 模式下(,因此例如,每个顶点将从 -10 到 10 个值。我当前的代码:(quad.vert[i].x*cosval)-(quad.vert[i].y*sinval)
(两次,对于 y 也是(。
我假设您使用的是旧版本的 OpenGL,因为您使用的是 glRotate
,以及真正古老/奇怪的硬件,因为您不想使用着色器。
您可以将glRotate*()
调用放在显示列表中,也可以自己计算旋转矩阵。OpenGL红皮书的第3章和附录F包含了你自己构建矩阵所需的信息。有关显示列表的详细信息,请参阅第 7 章。
相关文章:
- 如何循环打印顶点结构
- D3D11-将混合权重和索引传递到顶点着色器
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 从返回的顶点缓冲区查询顶点结构
- Vulkan 中的动态顶点缓冲区格式设置
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 为什么在C++中对链表这样做?(像堆叠一样处理它们)
- 堆栈和队列是否像C++中的数组一样传递?
- 如何将一半传递给顶点着色器?
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 在 DirectX 11 中从 GPU 读回顶点缓冲区(并获取顶点)
- QT QOpenGLWidget:如何在不使用数据块复制的情况下修改VBO中的单个顶点值?
- 使用 OpenGL 4.5 更改所选顶点的颜色
- 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样
- 我们可以将集合的值存储在变量中吗?就像我们可以将数组的值存储在变量中一样
- 我如何在C++像在 Python 中一样实现 f 字符串?
- Direct3D 11 - HLSL - 获取顶点索引 ID
- 创建异构顶点数据数组的可移植方法
- 使用 glvertex4i 传递网格面索引时的顶点着色器错误
- 如何像在OpenGL中使用glRotatef()一样旋转顶点