gpt4 book ai didi

c++ - 在 AMD CCC 中启用 OpenGL 三重缓冲 + vsync 会破坏我们的应用程序

转载 作者:可可西里 更新时间:2023-11-01 11:20:14 28 4
gpt4 key购买 nike

我们有一个用 C++ 编写的桌面 Windows 应用程序,它使用 OpenGL 渲染 View 。

在某些 AMD 卡上,如果您打开 Catalyst Control Center 并强制启用三重缓冲和垂直同步,它会破坏我们的应用程序:根本没有任何渲染,它只是一个灰色屏幕(在其他一些驱动程序版本上,它会在创建时崩溃而不是上下文)。关闭三重缓冲 V-sync 将其恢复正常。

我们使用 wglSwapIntervalEXT 在我们的应用程序中启用垂直同步。认为它可能会冲突,我删除了它的代码;没有变化。

这绝对是一个驱动程序错误,还是我们必须做一些不同的事情来处理三重缓冲?

最佳答案

我在我自己的应用程序中遇到了同样的问题,并且一直在追查。以下是我可以根据为重现问题而构建的最小应用程序测试设置提供的其他信息:

1) 您设置像素格式和创建 GL RC 的所有调用都会成功。但是,GLDebugger 将显示 RC 实际上并未获取静态缓冲区。

2) 当您尝试使 RC 成为当前的时,它将返回 false,并且 GetLastError() 表示存在无效句柄。

3) 我只能在 MFC 中复制这个问题。那是你正在使用的吗?当我直接使用 Win32 API 构建测试平台应用程序时,它运行良好。这里必须有一个模糊的交互作用..

4) 如果我将 RC 创建延迟到 OnCreate 之后,那么一切都会正常进行。

恐怕我的回答倾向于“驱动程序错误”,但第 4 点显示了一种解决方法——与其在 OnCreate 中创建 GL 窗口,不如尝试在 OnInitialUpdate 中一次性创建——这样far 正在为我做测试!

更新:我已经就此问题联系了 AMD,事实证明这是 MFC 最初创建宽度/高度为零的窗口,然后调整大小的结果。如果在您的 PreCreate 函数中分配非零维度,则一切正常。

希望这对每个试图弄清楚这是怎么回事的人来说都是一个很好的资源!

关于c++ - 在 AMD CCC 中启用 OpenGL 三重缓冲 + vsync 会破坏我们的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14589323/

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