工程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独占性的问题,但是网上的讲解只有一例,看了半天还是没搞明白。只能期待论坛上高人指点了。 鞠躬
下面是问题了。开始的时候,没有区分ViewType,即在OnDraw()里面直接调用绘图DrawScene(),结果只能在最后一个窗口(即右下角,ViewType应该为3)显示。区分之后(if(ViewType == -1)DrawScene();)所有窗口无显示。 这下麻烦了。上网查了一阵子,发现是RC独占性的问题,但是网上的讲解只有一例,看了半天还是没搞明白。只能期待论坛上高人指点了。 鞠躬
MSDN里说的很清楚的,每一个线程在一个时刻只能有一个RC使用,所以每个不同的VIEW在绘制时都要将自己对应的RC选为当前的绘制RC。
另外,各处用到的DC都用wglGetCurrentDC()可以的吧?
还有,不要用wgmMakeCurrent(NULL,NULL)吗?希望讲的详细点,我已经在这个问题上缠了好久了,谢谢。
[email protected]
谢谢!