gpt4 book ai didi

c - 为什么 GLfloat 需要全局作用域?

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:46 26 4
gpt4 key购买 nike

当声明为局部变量时,不会发生旋转 GLfloat 对象。当它被声明为全局时,它会相应地轮换,它背后要求全局的原因是什么? OpenGL 程序的 display() 函数是否调用其他东西?

最佳答案

我的想法是,您可能正在尝试做这样的事情(函数中的 rot 不是全局的):

GLfloat rot = 0.1;
glRotatef(rot, 0.0f, 1.0f, 0.0f);

不会旋转之后绘制的对象。

这是因为 glRotatef 使用绝对旋转。您正在对绘制的每个图像应用 0.1 的恒定旋转,因此它们不会移动。

你不必全局存储rot,你可以将它与你旋转的对象的模型一起存储,像这样:

glRotatef(myObj->rotation, 0.0f, 1.0f, 0.0f);
... draw myObj->triangles ...
myObj->rotation += speed; // speed can be e.g. 0.1

请注意:请记住,如果您在渲染函数中执行 myObj->rotation += speed;,您的旋转速度将与您的渲染速度成正比(更快计算机),这通常是不需要的。为避免这种情况,您可以检查耗时,并且仅在该时间超过 50 毫秒时才对其进行评估。

关于c - 为什么 GLfloat 需要全局作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5256700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com