c++ - 如何仅旋转特定对象而不影响opengl中的其他对象?
问题描述
我在 OpenGL 中制作风扇,里面有杆子和旋转的东西,当我尝试旋转它们时,所有风扇都随着杆子旋转,我应该如何修复它,我glutPostRedisplay()
也使用过在旋转中使用push和pup矩阵,它根本不旋转,它只以我写的角度旋转一次,有什么建议有帮助吗?
解决方案
在老派的 opengl 中,您将封装一对 glPushMatrix(矩阵堆栈的存储状态)和 glPopMatrix(恢复先前的变换)调用之间的转换变化。
glPushMatrix();
glRotatef(45.0f, 0, 1, 0); //< or whatever your rotation is.
drawObjectToBeRotated();
glPopMatrix();
// now any objects drawn here will not be affected by the rotation.
在现代 OpenGL 中,您将上传一个单独的 ModelViewProjection 矩阵作为顶点着色器统一,用于绘制的每个网格(并且有几种方法可以做到这一点,或者在统一变量中,统一缓冲区对象,着色器存储 -缓冲区,或一些实例化缓冲区输入)。
推荐阅读
- html - 为梯形添加阴影
- java - 如何修改spring data jpa默认查询和删除?
- django - 模型保存方法数据检查未按预期工作
- javascript - 用于组件目的的 Angular 扩展 API 模型
- dom - Kotlin WebAssembly 访问 DOM
- php - 在 laravel 模型对象中传递值
- python - 将 csv 行号划分为用逗号和空格分隔的列
- c# - 如何使用 System.Device.Location 命名空间在 C++ 应用程序中获取 Windows 笔记本电脑的当前位置
- javascript - 当模态打开时,将单击事件限制为模态内部的按钮,而不是在其外部具有相同类的按钮
- tensorflow - 迁移学习 Inception V3:如果准确性波动,是否继续训练?