作者asdiii (好想飞)
看板C_and_CPP
标题[问题] OpenGL 快速交换frame会掉frame 求解
时间Wed Aug 11 21:20:08 2021
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Visual Studio 2019
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
OpenGL
问题(Question):
1. 喂入两张图片 使画面配合显示器输出频率交换但不知为何约 100 frame左右
会掉 1frame,但程式依然执行想问是我哪里有问题,导致他没有办法稳定?
2. 根据我的理解对framebuffer object进行纹理依附,因为我想先把图塞到GPU
的记忆体中,我猜想这样会让两张图片交换速度更快更顺畅,而且看显示卡
记忆体有被我占用 但我还是不确定我是否是图从CPU送出还是GPU先存好才
交换 请问有方向或者方法让我进一步确认吗?
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://hackmd.io/@kkbox36930/H1ff2BZxF
补充说明(Supplement):
对这个opengl有点生手 感谢大家的帮忙
程式码放在markdown中
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.230.126.66 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1628688011.A.23E.html
1F:推 Schottky: 最近比较忙,星期日再来看 08/12 05:49
2F:→ Schottky: 你的萤幕更新频率是 60Hz 还是 120Hz? 08/12 05:50
60Hz/75Hz 都有 倍数或者减半我都试过 都会
3F:推 pponywong: 可能跟你的程式没关系 你要查一下glut跟window display 08/12 08:43
4F:→ pponywong: 不知道glut跟windows vsync怎麽配合的 08/12 08:45
5F:→ pponywong: 另外是不是用GPU还是PC记忆体 要看driver怎麽写 08/12 08:46
6F:→ pponywong: 电脑独显你用texture还是framebuffer都是用GPU memory 08/12 08:47
我想全部确认放在 GPU独立记忆体中 我怕放在GPU共用记忆体 本质上还是CPU的主记忆体
不知道会不会有影响
7F:→ Killercat: 不是很确定 但是看看是不是Triple Buffer搞的鬼 08/12 13:32
这个我也考虑过是不是三重frame buffer 我觉得比较像是每frame输出指定出去到显卡再
到萤幕真的刷新 有微妙的时间差 导致几秒後有时间不匹配的问题 苦手
※ 编辑: asdiii (36.230.126.66 台湾), 08/12/2021 23:38:40
9F:推 paintlife08: 会不会是 glutTimerFunc()那一行? 它吃unsigned int. 08/13 10:27
10F:→ paintlife08: 16.67 会变成 16. 08/13 10:29
11F:→ paintlife08: 查了一下,glutTimerFunc()好像也不保证一定会在设定 08/13 10:54
12F:→ paintlife08: 的值更新. 08/13 10:55