openGL和MFC的纠结

事情是这样的,我用MFC向导建立了一个应用程序,用openGL在屏幕上画了坐标系,是多文档的哈,但是问题随即就来了,我的窗口上放了俩按钮,一个缩小,一个放大,这些都没问题... 事情是这样的,我用MFC向导建立了一个应用程序,用openGL在屏幕上画了坐标系,是多文档的哈,但是问题随即就来了,我的窗口上放了俩按钮,一个缩小,一个放大,这些都没问题,关键是我建立新文档的时候,坐标系都消失了,而我一按放大或者缩小按钮又出现了,我甚至重载了所有关于新建的响应函数,强制进行绘图,但是建立新文档时结果一样,默认的第一幅文档正常显示的,而且,如果我画二维图形,也就是包含在glBegin()和glEnd()之间,那么一切正常,可是,一旦化成三维的,就出问题了,各位大大,怎么办啊,求解答,我是新手,分数不多
glPopMatrix();

//X轴******************************************
glPushMatrix();
SetColor(RGB(0, 255, 0));
glRotatef(90, 1, 0, 0);
glRotatef(-45, 0,1,0);

DrawCylinder(yPt, 15, CVector3D(0, 0, h));
glPopMatrix();
展开
 我来答
百度网友1c6e06f
2014-03-18 · TA获得超过2894个赞
知道小有建树答主
回答量:695
采纳率:66%
帮助的人:656万
展开全部
我的怀疑是,可能问题出在GL引擎和当前DC、RC绑定不正确。
OpenGL有一个限制,就是一个进程只能有一个渲染引擎,但可以有多个RC(一个文档你在初始化的时候,一定用wglCreateContext根据文档的DC创建了一个渲染上下文RC),如果是单文档就不用操心这些。
但如果一个进程里有多个窗口要显示的话,你就必须在每个窗口OnDraw的开始首先将GL引擎绑定到当前窗口的DC和RC(wglMakeCurrent( hdc, hrc )),然后OnDraw结束时再解绑定(wglMakeCurrent( NULL, NULL ))。
可以这么说,就是很多个窗口在争抢一个OpenGL引擎,每个窗口如果想用gl接口,就必须先把gl引擎抢到自己手里,所以每个窗口,凡是用到opengl接口的地方(比如OnSize里,你一定要设置投影和模型矩阵)都要首先绑定,再解绑定。

因为我以前也因为多窗口遇到了类似问题,所以我怀疑是这样的,不知对不对。
追问
我中午按照你的思路试试,一看您的分析我就明白您的造诣,感觉很可能是这样,谢谢,稍后我可能还要提问,请您不吝赐教
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式