簡體   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