glutTimerFunc问题

2024-04-14

I use Glut制作一个简单的动画。在主函数中,glutTimerFunc(TIMERMSECS, animate, 0)叫做。这两段代码生成相同的图形。

const int TIMERMSECS = 20;
float animation_time = 0;
const float  animation_step = .5;

方法一:

   void animate(int t){
        float time_elapsed = TIMERMSECS/1000.0;
        float current_step = animation_step* time_elapsed;
        glutTimerFunc(TIMERMSECS, animate, 0);
        if(current_step < animation_step*2) 
                animation_time += current_step;
        glutPostRedisplay();
}

方法二:

   void animate(int t){
        float time_elapsed = TIMERMSECS/1000.0;
        float current_step = animation_step* time_elapsed;      
        if(current_step < animation_step*2) 
                animation_time += current_step;
        glutPostRedisplay();
       glutTimerFunc(TIMERMSECS, animate, 0);
}

他们之间唯一的区别是位置glutTimerFunc. For Method 1,它看起来像一个永远不会到达末尾的递归animate()功能。但为什么这仍然有效?


glutTimerFunc将不会立即地在任何情况下都调用定时器函数。即使时间为0。它总是等待消息处理循环,即使如此,它也只会在所有其他消息处理完成后才调用请求的函数。这样,“重绘窗口”和“调整窗口大小”等重要消息仍然会得到处理。

一般来说,您不应该依赖计时器函数特别准确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

glutTimerFunc问题 的相关文章

  • 向 glutDisplayFunc 传递 1 个参数(指针)?

    我创建了一个带有基本draw 方法的虚拟类 该方法不执行任何操作 这样做的目的是其他类 形状和其他能够在 OpenGL 中绘制自身的东西将继承这个虚拟类 从而允许我创建指向许多不同类的指针数组 这背后的想法是我希望能够将指向该数组的指针传递
  • 多窗口 OpenGL/过剩

    我想知道如何打开多个 OpenGL Glut 窗口 我的意思是同时多个窗口 不是子窗口和 不更新同一个窗口 虽然我相信上面的答案是准确的 但它比需要的要复杂一些 并且当以后必须处理窗口之间的移动时 例如 在窗口中绘制时 可能会很困难 这是我
  • 将 glut 链接到 Qt

    我想将 OpenGL 与 glut 结合到 Qt 中 我正在使用 Windows 我的 Qt 版本是 4 7 4 32 位 我按照教程进行操作 http www youtube com watch v 1nzHSkY4K18 我还查了一些人
  • 灯亮了但立方体没有出现

    我正在尝试在立方体上使用照明 但我不明白哪里出了问题 我可以看到光源 但屏幕的其余部分显示为黑色 所以我不明白为什么立方体消失了 这是代码 Header Inclusions include
  • 简单的 OpenGL GUI 框架用户交互建议? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在从头开始设计一个简单的 GUI 框架作为一个项目 使用 OpenGL 没有任何其他外部东西 并且需要一些关于如何实现用户交互的建议 基本上 我有一个基类GUIItem所有元素都继承自
  • OpenGL 窗口未打开

    我有来自 OpenGLBook openglbook com 的代码 它可以编译 但无法加载 我完全不知道为什么它没有加载 代码如下 main cpp include main h Methods int main int argc cha
  • 为什么在平移和更改相机角度时我的有线球体会变成椭球体?

    我需要沿 z 轴来回平移有线球体 同时更改相机角度 每当我的球体被平移时 它就会慢慢变成椭球体 我实在不明白为什么 在这里您可以看到我认为有错误的代码片段 此外 调整窗口大小时不应更改形状 而只能更改其大小 void init glClea
  • 如何在 C++ 中使用 GLUT / OpenGL 绘制文本?

    如何使用 GLUT OpenGL 绘图函数在屏幕上绘制文本字符串 用GLUT绘制字符串有两种方法 glutStrokeString https linux die net man 3 glutstrokestring将绘制 3D 文本 so
  • 如何调整 GLUT 窗口的大小?

    from OpenGL extensions import alternate from OpenGL GL import from OpenGL GL ARB multitexture import from OpenGL GLU imp
  • 如何在OpenGL/GLUT中计算用鼠标移动相机的观察点?

    这对我来说解释起来会很混乱 所以请耐心等待 我已经在我的相机类中实现了大多数类型的移动和旋转 一切都可以通过键盘进行 现在我想实现鼠标 我像这样捕获鼠标移动 define SENSITIVITY 25 0f void main void g
  • 图形编程的 GLUT 已经死了吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 阅读 Ubuntu 论坛上有关以下内容的讨论后GLUT 与 FreeGLUT http ubuntuforums org showthread
  • 四边形上的输出纹理不正确

    我正在尝试使用 freetype 在我的应用程序中显示文本 起初我认为这个内置函数 这对于用于绘制文本的库来说是很自然的 但只有一个显示符号的功能 然后我决定将这些字符一一放入纹理中 但我再次感到失望 所有指南一个纹理都使用单个图像 可能
  • OpenGL 中的恒定游戏速度与 GLUT 中的可变 FPS 无关?

    我一直在读科恩 维特斯详细文章 http www koonsolo com news dewitters gameloop 关于不同的游戏循环解决方案 但我在使用 GLUT 实现最后一个解决方案时遇到了一些问题 这是推荐的解决方案 在阅读了
  • OpenGL 旋转

    我正在尝试在 OpenGL 中进行简单的旋转 但一定没有抓住重点 我并不是在寻找具体的修复方法 而是在寻找快速解释或更普遍地解释 OpenGL 旋转的链接 目前我有这样的代码 glPushMatrix glRotatef 90 0 0 0
  • 简单地调用 Pitch() 和 Yaw() 怎么会导致相机最终 Roll() 呢?

    我正在编写一个基本的 OpenGL 游戏 并且有一些代码可以在移动相机方面处理鼠标 我正在使用以下方法 int windowWidth 640 int windowHeight 480 int oldMouseX 1 int oldMous
  • CreateDC() 导致 glutInit() 失败?

    我编写了一段代码来创建一个窗口并在其中绘制一个形状 include
  • OpenGL,如何独立旋转对象?

    到目前为止我的代码 void display void glClear GL COLOR BUFFER BIT GL DEPTH BUFFER BIT Clear Screen And Depth Buffer glLoadIdentity
  • OpenGL中背景对象绘制在前景对象前面?

    为了测试目的 我们假设我画了 2 个茶壶glutSolidTeapot 像这样 glColor3f 1 0f 0 0f 0 0f Red teapot glutWireTeapot 1 0f glColor3f 0 0f 1 0f 0 0f
  • 使用 GLUT 简单地打印文本

    整个晚上 我一直在互联网上查找 包括 stackoverflow 和其他地方 寻找一些关于如何在 GLUT 上打印文本的内容 虽然我找到了一些地方说明了如何操作 但没有一个地方能够很好地解释它 说明函数的哪些部分是必要的 哪些部分不是 我还
  • 如何在OpenGL中像这样绘制连接的带状线

    我想用以下方式绘制一系列连接线 GL LINE STRIP 我尝试过自己编写代码 但没有得到想要的结果 所以我来到这里 帮助我找出我错在哪里 这里我只给出我的draw 函数 glBegin GL LINE STRIP glVertex2f

随机推荐

  • 根据“几个因素”斜率更改 ggplot 中的线条颜色

    更新 我有以下数据 我想根据 3 个因素 I II III 的斜率在组之间画一条线 set seed 205 dat data frame t rep c I II III each 10 pairs rep 1 10 3 value rn
  • 最快的C++序列化?

    我正在寻找一种非常快速的 C 二进制序列化技术 我只需要序列化对象中包含的数据 没有指针等 我希望它尽可能快 如果它特定于 x86 硬件 这是可以接受的 我熟悉执行此操作的 C 方法 作为测试 我对几种技术进行了基准测试 我发现 C 方法比
  • 前往 source.cloud.google.com 获取

    我有一个托管在 source cloud google com 上的项目 我希望使用go get并使用模块来管理它 当我做go get 我得到以下信息 go get source cloud google com
  • 视图隐藏在 UINavigationBar iOS 7 下面

    早些时候 我的项目使用的是 iOS 6 1 最近我已经切换到 iOS 7 对于我知道的很多更改 我更新了我的代码 但是我观察到了一个奇怪的行为 我在每个屏幕上的视图都隐藏在导航栏下方 重新定位视图解决了 iOS7 的问题 但为旧版 iOS
  • App Engine Python:AttributeError:“模块”对象没有属性“Stock”

    我只是在生产中遇到此错误 在本地主机上它运行良好 Traceback most recent call last File base python runtime python lib versions 1 google appengine
  • 在 JS/jQuery 中绑定方向键

    如何在 Javascript 和 或 jQuery 中将函数绑定到左右箭头键 我查看了 jQuery 的 js hotkey 插件 包装内置绑定函数以添加参数来识别特定键 但它似乎不支持箭头键 document onkeydown func
  • Node.js SOAP 客户端参数格式

    我在使用 Node js 的 Node soap 模块作为客户端将某个特定的 Soap 参数正确格式化为第 3 方 SOAP 服务时遇到问题 此方法的 client describe 表示此特定输入应采用以下形式 params param
  • 在 PHPExcel 中复制样式和数据

    我想将某个范围的所有数据和样式复制到其他单元格 例如我想从 A4 I15 复制 然后完全粘贴我想要从 A16 复制的内容和样式 我该怎么做 这就是我要复制的内容 我知道只复制数据而不复制样式 并使用以下代码执行此操作 cellValues
  • 从 Maven 设置 TestNG 的详细级别

    当我运行测试时 我讨厌盯着闪烁的光标而不知道正在运行什么 为了解决这个问题 我在所有测试中添加了完成消息 然而我意识到这是一个非常老套的解决方案并且增加了一些废话 假设TestNG的详细级别打印测试描述 我如何在Maven中设置详细级别 请
  • 查找出现次数最多的单词

    搜索文档中出现次数最多的单词的最佳方法 算法 是什么 查找文档中出现次数最多的单词可以通过简单的 O n 时间复杂度完成直方图 http en wikipedia org wiki Histogram 基于哈希 histogram lt n
  • 正则表达式在特定单词模式处分割字符串

    我正在尝试拆分一个可能如下所示的字符串 International Bank for Reconstruction Development NAICS 928120 SIC 6081 World Bank NAICS 928120 SIC
  • 在接到电话时将应用程序置于最前面

    当我接到电话时 我想将我的应用程序带到电话接听屏幕前面 我在接到电话后完成了所有编码部分 但该应用程序并没有出现在前面 它刚刚打开并停留在电话应答屏幕下方 我想将我的应用程序带到此屏幕前面 我做了如下的事情 Intent i new Int
  • 如何在 Swift 3 中为在 for 循环期间修改的数组编写 for 循环?

    所以 我有一个与此类似的 for 循环 for var i 0 i lt results count i 1 if results i lt 5 results removeAtIndex i i 1 这曾经有效 但是当我将其更改为首选 S
  • 什么是 CLR 类?

    我在 google 上搜索了 CLR 并从 wikipedia 找到了它是什么 但我想知道 CLR 类或更具体地说 CLR 实体类型是什么 尤其是在 ASP NET 中 CLR 不是类 公共语言运行时 CLR 是 Microsoft NET
  • Blob.generate_signed_url() 失败 AttributeError

    因此 我尝试使用以下方法为我的 Google Cloud Storage 对象生成临时的全局可读 URLgoogle cloud storagePython 库 https googlecloudplatform github io goo
  • CSS“ch”单元的意外行为

    我正在使用ch用于指定宽度的 CSS 单位div包含文本 我使用的是等宽字体 但是 如果我设置width 80ch 我第一个得到 80 个字符n行 其中n始终是 24 不确定这是否重要 但从那时起只有 79 个字符 这如下面的屏幕截图所示
  • PyCharm 和 reStructuredText (Sphinx) 文档弹出窗口

    让我们想象一下 我想看到一个简单方法的文档字符串弹出窗口PyCharm4 5 社区版 也在 5 0 中尝试过 我在两个文件中都写下了这些文档字符串epytext语法 自 2008 年起不再支持 Epydoc 生成器 并且仅适用于 Pytho
  • 无法以编程方式减小 gtk 窗口的大小

    以编程方式调整 gtk 窗口大小时 我似乎遇到了问题 问题是 一旦我将窗口的宽度和高度增加到 800x600 我似乎无法将其缩小回原来的大小 400x200 下面是示例代码 有人遇到过这样的问题吗 include
  • Selenium IDE - 导出测试脚本

    我正在尝试导出在 Selenium IDE 中创建的测试自动化 但找不到导出选项 我有一些测试场景 其中测试是相同的 但我需要复制现有测试并交换一些 ID 才能使其正常工作 我只能将其保存为 side 文件 而不能保存为 Selenium
  • glutTimerFunc问题

    I use Glut制作一个简单的动画 在主函数中 glutTimerFunc TIMERMSECS animate 0 叫做 这两段代码生成相同的图形 const int TIMERMSECS 20 float animation tim