读书人

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

发布时间: 2012-07-18 12:05:38 作者: rapoo

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);
}

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


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

[解决办法]
pfPushState();
pfPushMatrix();
pfBasicState();
glPushMatrix();
DrawPool();
DrawMountain();
DrawParticle();
DrawBubble();
glEnd();
glPopMatrix();
pfPopMatrix();
pfPopState();

这样试试

读书人网 >VC/MFC

热点推荐