openGL嵌入到Vega的有关问题(回调函数)

openGL嵌入到Vega的问题(回调函数)
各位朋友大家好:

  我最近在做有关虚拟现实的课题,遇到点棘手的难题------我用回调函数将openGL嵌入到Vega中,但是不能同时显示vega场景和openGL模型。

  程序中如果加入:

  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除缓冲区  
  glLoadIdentity();//替换当前矩阵 

  那就只能显示openGL的模型,反之,如果注释掉这两句,那就只显示vega场景,不显示openGL模型,谁能帮帮我啊。

  关于调用的关键函数和代码如下:

(1)定义回调函数

void DrawSceneGL(void);



  pfPushState();
 //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除缓冲区  
// glLoadIdentity();//替换当前矩阵  
 // 在此处添加openGL代码进行绘制: 

glPushMatrix();
 glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

 DrawPool();
 DrawMountain();
 DrawParticle();  
 DrawBubble();

 glDisable(GL_BLEND);
 glPopMatrix();
 
 glFlush(); // 等待完成所有的openGL命令

}

(2)在postConfig()中添加回调函数

void CCVegaex0901View::postConfig()
{
 vgChannel *chan;
 chan=vgGetChan(0);
 vgAddFunc(chan,VGCHAN_POSTDRAW,DrawSceneGL,this);
}

代码就是这样,谁看到这个博客,指点我一下吧,否则毕业都困难了,拜托了。给我留言就可以了。


本文来自****博客,转载请标明出处:http://blog.****.net/wzn0535/archive/2009/11/14/4809779.aspx

------解决方案--------------------
pfPushState();
pfPushMatrix();
pfBasicState();
glPushMatrix();
DrawPool(); 
DrawMountain(); 
DrawParticle();
DrawBubble(); 
glEnd();
glPopMatrix();
pfPopMatrix();
pfPopState();

这样试试