各位朋友大家好:
我最近在做有关虚拟现实的课题,遇到点棘手的难题------我用回调函数将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);
}
代码就是这样,谁看到这个博客,指点我一下吧,否则毕业都困难了,拜托了。给我留言就可以了。