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问题 的相关文章

  • 在linux下安装glut包

    转自 xff1a http blog csdn net delacroix xu article details 5478429 在linux下opengl编程 xff0c 首先需要安装glut包 1 安装glut xff08 1 xff0
  • 使用 GLUT 在 3D OpenGL 世界中显示固定位置 2D 文本

    我有一个OpenGL项目使用GLUT 不是 freeglut 其中我想在视口上的固定位置显示 2D 文本 我的其余对象位于 3D 世界坐标中 这个答案一个相关的老问题说 GLUT 附带的位图字体是简单的 2D 字体 不适合在 3D 环境中显
  • 'glCreateShader' 未在此范围内声明?

    为什么我会收到这些错误 error GL VERTEX SHADER was not declared in this scope error glCreateShader was not declared in this scope Co
  • OpenGL 离屏渲染

    我有一个应用程序 可以创建 3D 模型并从中导出图像 我用这个例子来做到这一点 include
  • 灯亮了但立方体没有出现

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

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

    我正在编写一个简单的过剩应用程序 我的老师希望我创建一个顶部菜单栏 就像在任何 Windows 应用程序中一样 你知道 文件 编辑等 窗口顶部的标尺 我查看了过剩的文档并用谷歌搜索 我所能找到的只是一个用鼠标右键打开的弹出菜单 不是定义的内
  • 为什么在平移和更改相机角度时我的有线球体会变成椭球体?

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

    我想编译一个 GLUT 程序 include
  • 为什么过剩如此严重?

    尽管 openFrameworks 使用了 GLUT 但我看到了很多关于 GLUT 的不好的评论 Cinder 开发人员表示 他们希望尽可能远离 GLUT 那么它有什么不好呢 你永远不应该使用actual过剩 自 2001 年左右以来 它就
  • PyOpenGL glutInit NullFunctionError

    我在 Win7 x64 机器上运行 Anaconda Python 2 7 并使用 pip install PyOpenGL PyOpenGL accelerate 在 Anaconda 命令行安装 PyOpenGL 我有一些使用 glut
  • 如何在OpenGL/GLUT中计算用鼠标移动相机的观察点?

    这对我来说解释起来会很混乱 所以请耐心等待 我已经在我的相机类中实现了大多数类型的移动和旋转 一切都可以通过键盘进行 现在我想实现鼠标 我像这样捕获鼠标移动 define SENSITIVITY 25 0f void main void g
  • GLFW 打开 OpenGL 3.2 上下文,但 Freeglut 不能 - 为什么?

    我正在 Mac 上工作 我已经编译并安装了 FreeGlut 但我似乎无法使用它获取 OpenGL 3 2 上下文 不过 我在使用 GLFW 时可以毫无问题地获取它 所以在 GLFW 中 这段代码工作得很好 glfwOpenWindowHi
  • glutCloseFunc 不终止应用程序 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我创建了一个窗口glutCreateWindow并使用开始循环glutMainLoop 我想结束该循环并关闭窗口 所以我
  • 使用shared_ptr和glutInit会导致分段错误

    经询问this https stackoverflow com questions 33855611 defining shared ptr causes segfault cmake在我尝试了很多东西并发现问题与 glutInit 有关之
  • 有效的 OpenGL 上下文

    我的代码中如何以及在什么阶段创建有效的 OpenGL 上下文 即使是简单的 OpenGL 代码我也会遇到错误 从帖子上comp graphics api opengl 似乎大多数新手都在他们的第一个 OpenGL 程序上烧伤了双手 在大多数
  • 鼠标按钮按下过多

    我想只要按住鼠标右键即可放大某个对象 现在的问题是我每次想要缩放时都必须单击它 有没有办法可以修改我的代码 以便在按住按钮而不是单击按钮时它会缩放 void mouse int button int state int x int y Sa
  • Haskell 程序中的 GLUT 错误

    我正在使用 OpenGL 和 Haskell 我尝试了一个示例程序 它使用 ghc 编译器成功编译 但是当我运行它时 出现此错误 用户错误 未知的 GLUT 条目 glutInit 我搜索了这个问题 但大多数答案都与 mac OS X 和
  • OpenGL 中着色器的问题

    我正在尝试在 C 中使用像 glShaderSource 这样的东西 Visual Studio 表示像 glCompileShader 或 glCreateProgram 这样的函数不存在 我使用 FreeGLUT 来包含 OpenGL
  • glBufferData() 的分段错误

    我不明白为什么这段代码会出现段错误 AxesMarker AxesMarker float size size size vbo vertices 0 vbo elements 0 Vertex vertices 6 Vertex Colo

随机推荐

  • 根据“几个因素”斜率更改 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