当前位置: 首页 > news >正文

网站建设 网赚源码程序|任务网程序|开心兼职广告任务网源码seo托管服务

网站建设 网赚源码程序|任务网程序|开心兼职广告任务网源码,seo托管服务,心理咨询类微网站怎么做,会网站开发学UIosg::Drawable类可以通过该类的setDrawCallback函数设置回调函数类对象。被设置的回调类对象必须从osg::Drawable::DrawCallback类派生,并重写drawImplementation函数,以实现自己特定的需求。这个回调函数在每次帧事件中都会被调用(如:在帧的…

       osg::Drawable类可以通过该类的setDrawCallback函数设置回调函数类对象。被设置的回调类对象必须从osg::Drawable::DrawCallback类派生,并重写drawImplementation函数,以实现自己特定的需求。这个回调函数在每次帧事件中都会被调用(如:在帧的更新遍历事件), 可以在该类的drawImplementation函数对可绘制对象进行属性的更改,这样可绘制对象就好像时刻在变化一样,osgViewer::StatsHandler类实时帧率统计就是这么实现的。osg::Drawable::DrawCallback类定义如下:

struct DrawCallback : public virtual osg::Object
{DrawCallback() {}DrawCallback(const DrawCallback& org,const CopyOp& copyop):Object(org, copyop) {}META_Object(osg,DrawCallback);/** do customized draw code.*/virtual void drawImplementation(osg::RenderInfo& /*renderInfo*/,const osg::Drawable* /*drawable*/) const {}
};

        这个类中最重要的就是虚函数drawImplementation,该函数参数说明如下:

  1. 第1个参数是类型为osg::RenderInfo的引用。osg::RenderInfo是渲染信息类。这个类负责保存和管理与场景绘制息相关的几个重要数据:当前场景的视景器当前场景对应的所有摄像机、以及当前osg::State对象。这些数据将在场景筛选和渲染时为 OSG 系统后台的工作提供重要依据,并从中取出跟踪此图形上下文的当前OpenGL状态的State对象。可以说,需要涉及绘制有关的视景器、场景类、状态类、摄像机类都可以从渲染信息类对象获取到。
  2. 第2个参数就是指向被绘制对象的指针

     下面举例说明,如下代码:

#include<osgViewer/Viewer>
#include<osg/ArgumentParser>
#include<osg/ShapeDrawable>
#include<osgText/Text3D>
#include<osg/Timer>
class CUpdateTextValue : public osg::Drawable::DrawCallback
{
public:CUpdateTextValue(){_lastTimer_t = osg::Timer::instance()->tick();}virtual void drawImplementation(osg::RenderInfo& renderInfo, const osg::Drawable* drawable) const{auto pText3D = (osgText::Text3D*)(drawable);osg::Timer_t tCurTick = osg::Timer::instance()->tick();double delta = osg::Timer::instance()->delta_m(_lastTimer_t, tCurTick);char szValue[10]{0};itoa(_value, szValue, 10);if (delta > 20){++_value;}else{--_value;}// 防止越界、溢出if (_value >= INT_MAX){_value = INT_MAX;}if (_value <= INT_MIN){_value = INT_MIN;}pText3D->setText(szValue);pText3D->drawImplementation(renderInfo);_lastTimer_t = tCurTick;}
private:// 注意用mutable修饰符,因为函数是const函数,否则不能对该值修改,下同。mutable  osg::Timer_t _lastTimer_t{ 0 };mutable  int _value{0};  
};int main(int argc, char *argv[])
{osg::ArgumentParser arg(&argc, argv);osgViewer::Viewer viewer(arg);auto spRoot = new osg::Group;auto pGeode = new osg::Geode;auto pText3D = new osgText::Text3D;  pGeode->addDrawable(pText3D);pText3D->setFont("Verdana\\verdana.ttf");pText3D->setText(" 0");pText3D->setDrawCallback(new CUpdateTextValue);spRoot->addChild(pGeode);viewer.setSceneData(spRoot);return viewer.run();
}

上面的例子,绘制一个三维字符串,最开始时候,字符串是“0”,然后调用三维字符对象的setDrawCallback方法,安装一个CUpdateTextValue绘制回调类对象,在回调类中的drawImplementation函数,根据两帧之间的时间间隔是否大于20ms,从而绘制不同值,效果如下:

 说明:

      本例因为较简单,第1个参数即渲染信息对象没用上,现实中的业务比较复杂,会涉及到场景、视景器、相机等对象,这些都可以通过第1个参数表示的渲染信息对象获取到。本例用到字体,需要编译freetype到osg,作为osg的插件,否则字符串不会显示。请从

                                    FreeType Downloads

下载freetype。关于如何编译字体作为osg的插件,请参照

osg第三方插件的编译方法(以jpeg插件来讲解)      博文。

http://www.bjxfkj.com.cn/article/101806.html

相关文章:

  • 公司网站内容更新该怎么做seo千享科技
  • 哈尔滨网站设计网络营销专业可以干什么工作
  • 西安网站建设公司排接广告推广
  • 武汉市网站开发公司360广告联盟平台
  • 龙岗成交型网站建设网络推广员是什么
  • 网站运营外包协议深圳网络营销全网推广
  • dw做网站小技巧网络营销的培训课程
  • wordpress 编辑 插件下载比优化更好的词是
  • 优秀购物网站网络营销推广的方式有哪些
  • 怎么做网站收录的关键词seo网站推广主要目的不包括
  • 怎么做网站安全性测试公司企业网站模板
  • 进不了wordpress网站关键词优化代理
  • 顺德网站制作案例平台百度惠生活怎么优化排名
  • 摄影网站开发专业技能培训机构
  • 什么是网站模板国外搜索引擎有哪些
  • 做科研交流常用的网站关键词优化seo公司
  • 域名怎么解析到服务器上中国seo第一人
  • 青海营销网站建设多少钱营销策划运营培训机构
  • 做美容网站公司seo排名点击器
  • 创业公司做网站全案网络推广公司
  • 自己动手建立个人网站网络推广渠道公司
  • 使用门户网站网络推广方法十大跨界营销案例
  • 做网站类型深圳市推广网站的公司
  • 微信网站如何做巩义网络推广
  • 想把自己做的网站放到网上上海关键词排名手机优化软件
  • 怎么在自己的网站上做链接百度网盘怎么用
  • 网站系统免费百度怎样发布作品
  • 葫芦岛公司做网站网络运营课程培训班
  • 企业网站建设的原则包括百度seo排名在线点击器
  • 一亩地开发多少钱晋城网站seo