OpenGL恒定旋转角度
OpenGL constant rotation angle
我最近在做一些openGL编程,它涉及基本的矩阵变换,如平移,旋转和缩放。我在做旋转时遇到了一些问题。这是我的问题。
现在我使用一个变量rotationDegree和一个变量rotationStepSize来控制旋转。当旋转标志位于
时//inside paintGL function
if(rotationFlag is on)
rotationDegree += rotationStepSize
if(rotationDegree > 360.0f)
rotationDegree -= 360.0f
奇怪的是,由于我将rotationStepSize定义为非常小,旋转开始时非常慢,但随着时间的增加,它变得越来越快!
我对这一现象提出了两种解释:
- 360f不是glm::rotate 中度数参数的取值范围。
- 程序启动缓慢,导致paintGL被绘制到屏幕较少。然后,随着程序变得稳定(或其他参数没有改变),mainLoopEvent执行得越来越快,导致paintGL被绘制得更多。
所以有人知道如何解决枚举问题或如何绕过这个来创建一个场景,我有一个对象在恒定速度旋转?
非常感谢!
根据freeglut_state.c,定义了glutGet函数
int FGAPIENTRY glutGet( GLenum eWhat )
{
#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE
int returnValue ;
GLboolean boolValue ;
#endif
switch (eWhat)
{
case GLUT_INIT_STATE:
return fgState.Initialised;
case GLUT_ELAPSED_TIME:
return fgElapsedTime();
}
我没有使用freeglut,但是看看文档,也许你应该尝试GLUT_ELAPSED_TIME
而不是GL_TIME_ELAPSED
?
,然后像这样计算delta时间:
int preTime= 0;
while( ... )
{
int currentTime= glutGet(GLUT_ELAPSED_TIME);
int deltaTime = currentTime- preTime;
preTime = currentTime;
//... pass the deltaTime to whatever you want...
}
相关文章:
- 发布旋转矩阵(openGL/glm)
- 如何在OpenGL中正确旋转和缩放对象?
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 按时间自动旋转形状,同时在 OpenGL 中使用C++移动它们
- 如何在 openGL 中围绕全局轴旋转模型?
- 如何在 opengl 中仅旋转特定对象而不影响其他对象?
- 在OpenGL(GLM/C++)中使用四元数旋转时出现问题
- 鼠标单击 OpenGL 时无法围绕其自己的中心旋转对象
- OpenGL:在那个方向上旋转和移动
- 在 OpenGL 中旋转一个正方形
- 如何使用gluLookAt围绕OpenGL中的点旋转相机视图
- 如何在 opengl 中旋转矢量?
- 现代 OpenGL 多维数据集旋转未按预期工作
- 在使用PI上的OpenGL ES绘制之前,如何旋转纹理
- C++ OpenGL 如何从 quaterion 获取旋转 x,y,z
- Opengl 旋转不起作用
- 绕摄影机旋转opengl c++/设置旋转中心
- 使用 GLM 围绕点旋转 OpenGL
- 第一人称相机,旋转OPENGL
- 立方体旋转- OpenGL