[英]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.