工程Rendering:      首先我的程序是OpenGL下绘制的,要求左边一栏分出来做对话框用途(这部分暂时不需考虑),右边是CView类,分出四个窗口:上面为主视图,用来显示三维图像;下面一排三个窗口,显示图像在3个方向上的截面。为了节省代码,我将这四个拆分窗口绑定在同一个类也就是CRenderingView上,它们的区分是通过CRenderingView的成员变量int ViewType(分别是-1,1,2,3)完成的。CRenderingView里有增加的函数包括OnCreate、OnSize、OnDestroy、Init()、Init3DTexture()、SetupPixelFormat()、DrawScene()等。
        下面是问题了。开始的时候,没有区分ViewType,即在OnDraw()里面直接调用绘图DrawScene(),结果只能在最后一个窗口(即右下角,ViewType应该为3)显示。区分之后(if(ViewType == -1)DrawScene();)所有窗口无显示。        这下麻烦了。上网查了一阵子,发现是RC独占性的问题,但是网上的讲解只有一例,看了半天还是没搞明白。只能期待论坛上高人指点了。                                                                                                                                                                                                                                                                          鞠躬

解决方案 »

  1.   

    在绘制前加上wglMakeCurrent就行了,具体参数看MSDN。
    MSDN里说的很清楚的,每一个线程在一个时刻只能有一个RC使用,所以每个不同的VIEW在绘制时都要将自己对应的RC选为当前的绘制RC。
      

  2.   

    我也这样做了,没有效果啊。想知道是只需在OnDraw()里面的绘制函数前面添加wglMakeCurrent(wglGetCurrenDC(),wglGetCurrentContext())吗?   我在OnCreate()里面也有这一句的。
    另外,各处用到的DC都用wglGetCurrentDC()可以的吧?
    还有,不要用wgmMakeCurrent(NULL,NULL)吗?希望讲的详细点,我已经在这个问题上缠了好久了,谢谢。
      

  3.   

    哇,lz可以将你OpenGL的多视图的模板发我一下吗?我最近也在做类似的东西,
    [email protected]
    谢谢!
      

  4.   

    楼上,很遗憾我现在只是用MFC做出了界面,OpenGL在里面没有显示啊,这关我也过不了。在网上下了一个多视图实例,但是没能看懂,发给你邮箱,大家可以一起讨论下。怎么没有人帮忙啊???现在初始化成功了,背景可以显示。但是各自绘制的部分始终看不到啊
      

  5.   

    OpenGL初始化成功了么?还有,我记得,OPENGL所用的窗口的风格必须是固定的!