查看: 1861|回复: 3

osg的swapcallBack

[复制链接]

该用户从未签到

发表于 2011-8-8 11:12:47 | 显示全部楼层 |阅读模式
我继承了osg::GraphicsContext::SwapCallBack结构体,旨在osg场景绘画完成后,绘制我自己写的opengl场景元素,如下:
               
  1. struct osg::GraphicdContext::mySwapCallBack{
  2. virtual void SwapBuffersImplementation(osg::GraphicsContext *gc)
  3. {
  4.    //////////////////////////////////////
  5.    // 矩阵切换和保存
  6.    glMatrixmode(GL_PROJECTION);
  7.    glPushMatrix();
  8.    glLoadIdentity();
  9.    glOrthro(0,width,height,0,near,far);
  10.    glMatrixMode(GL_MODEVIEW);
  11.    glPushMatrix();
  12.    glViewport(0,0,width,height);
  13.    glLoadIdentity();
  14.    ///////////////////////
  15.    // pengl 场景绘制
  16.    glPushMatrix();
  17.    glTranslatef(width-80,height-60);
  18.    glColor4f(1.0,0.0,0.0,1.0);
  19.    glBegin(GL_QUADS);
  20.    glVertex2i(4,3);
  21.    glVertex2i(72,3);
  22.    glVertex2i(72,54);
  23.    glVertex2i(4,54);
  24.    glEnd();
  25.    glColor4f(1.0,1.0,1.0,1.0);
  26.    glPopMatrix();
  27.    ////////////////////////
  28.    // 还原原矩阵
  29.    glMatrixMode(GL_MODEVIEW);
  30.    glPopMatrix();
  31.    glMatrixmode(GL_PROJECTION);
  32.    glPopMatrix();
  33.    //////////////////////////////////////
  34.    // 最后调用osg的帧交换接口。
  35.    gc->SwapBuffersImplementation();
  36. }
  37. }
复制代码

         使用opengl在屏幕上绘制一个2d红色矩形框,然后,我将osgViewer::Viewer类对象设置了上述继承结构体。
         我工作的计算机是双屏的,如果采用单窗口(跨双屏,反映在osg中也就是一个context),到目前为止还没看到什么怪现象。但是采用双窗体时,在我旋转camera时,在某些情况下可以画出来,某些情况下画不出来。如果在osg场景中在osg视口场景中添加一个2D的图像,那么怪现象就消失了。
        所以我觉得可能是osg的自动计算场景元素的远近切面造成的(不好意思我的osg经验不足,可能上述判断有问题,还望见谅)。
       请问怎么在我写的SwapCallBack结构体上解决问题(最好不要让我把结构体中的代码转换成osg场景图像,因为太多了,而且不是我写的)。
                                                                                谢谢!

该用户从未签到

发表于 2011-8-8 13:20:08 | 显示全部楼层
OGL的绘制应该放在Drawable里吧~~~
可以参考teapot的例子

该用户从未签到

 楼主| 发表于 2011-8-8 22:39:51 | 显示全部楼层
我是想在所有osg场景绘制完成后在绘制图形。不知可不可以,这里有绘制先后顺序要求。

该用户从未签到

发表于 2011-8-9 08:34:26 | 显示全部楼层
那么建议使用主相机的PostDrawCallback,或者把自定义Drawable放在PostRender的相机下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表