我有一个操作系统上的 OpenGL 应用程序,当应用程序失去焦点时,它可以抢走 OpenGL 上下文,即使应用程序仍在内存中。当应用程序返回焦点时,当我将纹理重新加载到新的 OpenGL 上下文中时,这会导致屏幕闪烁。
我正在努力将重新加载分解为增量,以便看起来更好。但我也想知道这种可能性:
- 当程序注意到它将失去焦点时,捕获显示(或主纹理)的“平均”颜色。
- 当程序重新获得焦点时,使用步骤 1 中捕获的颜色执行非常快速的 glClearColor(r,g,b)。
- 然后,在用户看到步骤 2 中设置的颜色时,正常重新加载纹理。
我认为这将是一种视觉技巧,可以使闪烁不那么明显。有一个问题:我认为通过平均每个像素来捕获聚合颜色会花费太长时间并且不值得。
所以我想知道是否有任何 OpenGL 技巧可以让应用程序粗略估计用户在屏幕上看到的平均颜色?