繁体   English   中英

glRotatef() 在 Opengl 中工作很奇怪

[英]glRotatef() works weird in Opengl

我即将在 C++ OpenGL、MFC 应用程序中制作一个旋转球体。 所以我在demo.h声明了一个具有旋转速度的demo.h

GLfloat angle;
void Init();

此外,我初始化了该变量并在demo.cpp xyz(0,0,0) 处实现了一个法线球体:

Init();
angle += 1;
glRotatef(angle, 0, 1, 0);
GLUquadricObj* a = gluNewQuadric();
gluSphere(a, 10, 100, 100);  //radius = 10

Init() 是用户定义的函数,用于初始化角度变量的值:

void Init() = {
    angle = 1.0;
}

在这种情况下,球体旋转良好。 但是如果我改变angle += 1; angle += angle; ,然后Sphere不以相同的速度旋转,最后消失了:(我不知道这两者有什么区别。将“+ =”运算符应用于GLfloat类型变量有问题吗?

angle += angle每次更新都会使旋转值加倍。 根据您的更新频率,旋转几乎会立即变得完全不稳定,并且最多在几秒钟内溢出浮点数的可能值,从而变为 INFINITY,OpenGL 最有可能出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM