C++ 打开GL和旋转时出现奇怪的问题。以前有人见过这个吗?

C++ 打开GL和旋转时出现奇怪的问题。以前有人见过这个吗?,c++,opengl,quaternions,C++,Opengl,Quaternions,因此,我在询问这个问题之前就已经到过这里,但到目前为止,还没有人能够回答我的问题。所以我制作了一个视频来演示这个问题 到目前为止,我已经检查了我的数学文件,我的两位大学教授也检查了我的着色器,我只是使用了一个简单的穿透着色器 我已经创建了一个视频的问题发生,我将描述我的过程一点 我已经将旋转的初始值设置为,这会将其推到问题出现的位置 rotX = 0.0f; rotY = -22.0f; rotZ = -62.0f; 这些值确保我不必在运行时旋转对象,这些值就是问题发生的地方。正如您在视频中看

因此,我在询问这个问题之前就已经到过这里,但到目前为止,还没有人能够回答我的问题。所以我制作了一个视频来演示这个问题

到目前为止,我已经检查了我的数学文件,我的两位大学教授也检查了我的着色器,我只是使用了一个简单的穿透着色器

我已经创建了一个视频的问题发生,我将描述我的过程一点

我已经将旋转的初始值设置为,这会将其推到问题出现的位置

rotX = 0.0f;
rotY = -22.0f;
rotZ = -62.0f;
这些值确保我不必在运行时旋转对象,这些值就是问题发生的地方。正如您在视频中看到的,奶牛将开始旋转,而代码中没有任何位置实际告诉它。我将旋转矩阵和旋转值输出到日志文件,它们都是正常的

所以我以前从未在任何地方见过这种情况。如果有人看到这样的事情,请告诉我。我没有发布任何代码,因为有很多可能的问题,但是我可以根据需要提供代码片段,或者提供对我的源svn的访问

我花了三周的时间调试这个问题,我至少还有10双眼睛在关注这个问题,并检查我的代码

唯一一个我无法解决的问题是内存损坏,希望你好运

编辑:

代码示例:

我使用四元数进行旋转,我用轴角度创建它们。然后我将多个旋转组合在一起,创建4x4

编辑:

我尝试了MadCoreTom提供的答案,但没有帮助,我还继续查看内存,我看不到任何问题

编辑:

因此,我已经从四元数中删除了规范化调用,现在我仅在从轴角度创建四元数时规范化轴。我还为我的四元数重写了toMatrix3,看看这是否有帮助,但没有


我还将更新旋转移动到按键内部,我打算尽快提供更多代码。

可能是
.normalize()
期间的舍入错误导致值发生轻微变化,这会一直累积到奶牛发疯为止

您可以尝试以下方法,并在更新方法中使用
rx
代替
rotationX

rx=rotationX.normalized()


而不是每次循环时修改值。

好的,所以我解决了我的问题。有一个浮点错误掩盖了实际问题

所以一旦我修复了它,就不用MadcoreTom提供的方法了。我最后做的只是规范化轴,而在旋转过程中从未规范化我的四元数

真正的问题是我在储存我的角度,并积累它,这是造成问题的原因


现在我只需输入旋转的变化,根据轴/角度的变化创建四元数,然后将其乘以四元数F。

您有什么代码可以查看吗?没有它很难指出一个问题。尽量保持简洁:)例如,您是如何执行初始旋转的?渲染循环中发生了什么?我在游戏循环的每次迭代中调用的示例代码中添加了一些示例代码is
GameObject::update
?何时(何地)更新游戏对象?每个对象的每次更新