opengl与vc(mfc)开发时的注意点

1,在view中使用opengl进行绘图时,要先设置绘图环境,也就是将view的dc关联到opengl的rc上。在设置像素格式上,当允许使用双缓冲时,则ondraw的最后使用swapbuffers来提交绘制语句,显示绘图。当不允许使用双缓冲时,ondraw做好通过调用glflush来提交绘图,进行显示。


2.opengl在mfc中多视图间切换的问题(如何进行正确的视图重绘)

我们在编写程序的过程中,有时候根据应用的需要不只开一个OpenGL视图窗口,由于要在同一个程序中同时开两个或以上的可视化视图窗口,并在需要的时候进行切换,这时候就会带来一些问题,其中最常见的问题就是一些资源的冲突,特别是HGLRC。

因为在一个线程中,只申请到一个RC,两个窗口的DC会共用一个RC资源,所以如果不小心使用,就会出现两个窗口中绘制的场景完全不正确的情形,比如一个窗口的场景绘制在了另一个窗口里。而且多个不同的视图窗口,都需要单独进行初始化,将DC与RC关联起来。

解决的办法是:当向其中的某个窗口绘制的时候,也就是该窗口需要更新的时候,用语句

wglMakeCurrent(NULL, NULL);

wglMakeCurrent(GetDC(m_hWND), m_hRC);

将当前窗口的DC和RC关联起来,使RC成为当前窗口的渲染上下文,这样绘制的时候就不会出现问题,切记一定要在向窗口绘制之前使用上面两条语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值