MFC OpenGL DoubleBuffer效果 [英] MFC OpenGL DoubleBuffer Effect

查看:148
本文介绍了MFC OpenGL DoubleBuffer效果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我们从双缓冲区像素格式更改为单缓冲区像素格式时,我们的软件正在经历非常慢的OpenGL渲染。需要进行此更改,因为我们也使用GDI绘图。  (PFD_SUPPORT_GDI不应该与PFD_DOUBLEBUFFER一起使用。)以前用
Win7就可以了,但是有些Win10失败了,所以现在我们必须使用SINGLE缓冲区。

Our software is experiencing a very slow OpenGL rendering when we changed from Double to Single buffer pixel format. This change was needed because we use GDI drawing also.  (PFD_SUPPORT_GDI should not be used with PFD_DOUBLEBUFFER.) Used to be OK with Win7 but some Win10 fails, so now we have to use SINGLE buffer.

分析问题我创建了一个简单的MFC测试程序---我可以显示OpenGL立方体和GDI线。我还添加了GLUT Tessellation,因为我们的软件也使用曲面细分。我正在通过绘制/ tess 100,000个立方体进行压力测试,并且显示
确实减慢了,但我看不到Double和Single缓冲之间的显示速度差异......我只是添加或删除PFD_DOUBLEBUFFER。  

To analyze the problem I created a simple MFC test program --- I can display OpenGL cubes and GDI lines. I also added GLUT Tessellation since our software is using tessellation as well. I am doing a stress test by drawing/tess 100,000 cubes, and the display does slow down, but I cannot see the display speed difference between Double and Single buffering...  I am just adding or removing PFD_DOUBLEBUFFER.  

为什么我看不出差异?

谢谢。

Makoto

推荐答案

据我所知,双缓冲技术用于避免窗口闪烁。通过使用PFD_DOUBLEBUFFER,可见(GL_FRONT)和不可见(GL_BACK),您将获得两个缓冲区。当你做一些
的OpenGL动画时,我们可以使用SwapBuffer来避免闪烁。也许你可以找到一些关于这个的tutoral。

Based on my knowledge, the double buffer technology is used to avoid window flickers. You will get two buffers by using PFD_DOUBLEBUFFER, a visible (GL_FRONT) and a non-visible (GL_BACK). And we could use SwapBuffer to avoid flicker when you are doing some OpenGL animation. Maybe you could find some tutoral about this.

如果你正在做一些3D动画,我认为你应该使用PFD_DOUBLEBUFFER。

If you are doing some 3D animation, I think you should use PFD_DOUBLEBUFFER.


这篇关于MFC OpenGL DoubleBuffer效果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆