中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

簡述CCNode和Sprite的渲染過程-創新互聯

Sprite創建時,加載紋理,產生紋理id。Sprite重寫(override)Node中的draw

成都創新互聯公司是一家專業從事網站制作、網站設計、網頁設計的品牌網絡公司。如今是成都地區具影響力的網站設計公司,作為專業的成都網站建設公司,成都創新互聯公司依托強大的技術實力、以及多年的網站運營經驗,為您提供專業的成都網站建設、營銷型網站建設及網站設計開發服務!

void Sprite::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)

{

  // Don't do calculate the culling if the transform was not updated

  _insideBounds = (flags & FLAGS_TRANSFORM_DIRTY) ? renderer->checkVisibility(transform, _contentSize) : _insideBounds;

  if(_insideBounds)

  {

      _quadCommand.init(_globalZOrder, _texture->getName(), getGLProgramState(), _blendFunc, &_quad, 1, transform);

      renderer->addCommand(&_quadCommand);

#if CC_SPRITE_DEBUG_DRAW

      _debugDrawNode->clear();

      Vec2 vertices[4] = {

          Vec2( _quad.bl.vertices.x, _quad.bl.vertices.y ),

          Vec2( _quad.br.vertices.x, _quad.br.vertices.y ),

          Vec2( _quad.tr.vertices.x, _quad.tr.vertices.y ),

          Vec2( _quad.tl.vertices.x, _quad.tl.vertices.y ),

      };

      _debugDrawNode->drawPoly(vertices, 4, true, Color4F(1.0, 1.0, 1.0, 1.0));

#endif //CC_SPRITE_DEBUG_DRAW

  }

}

將對應的頂點信息,紋理id,視圖矩陣加入render隊列。

draw函數在什么時候被調用?

請看Node中的visit函數

void Node::visit(Renderer* renderer, const Mat4 &parentTransform, uint32_t parentFlags)

{

  // quick return if not visible. children won't be drawn.

  if (!_visible)

  {

      return;

  }

  uint32_t flags = processParentFlags(parentTransform, parentFlags);

  // IMPORTANT:

  // To ease the migration to v3.0, we still support the Mat4 stack,

  // but it is deprecated and your code should not rely on it

  Director* director = Director::getInstance();

  director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);

  director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, _modelViewTransform);

  bool visibleByCamera = isVisitableByVisitingCamera();

  int i = 0;

  if(!_children.empty())

  {

      sortAllChildren();

      // draw children zOrder < 0

      for( ; i < _children.size(); i++ )

      {

          auto node = _children.at(i);

          if ( node && node->_localZOrder < 0 )

              node->visit(renderer, _modelViewTransform, flags);

          else

              break;

      }

      // self draw

      if (visibleByCamera)

          this->draw(renderer, _modelViewTransform, flags);

      for(auto it=_children.cbegin()+i; it != _children.cend(); ++it)

          (*it)->visit(renderer, _modelViewTransform, flags);

  }

  else if (visibleByCamera)

  {

      this->draw(renderer, _modelViewTransform, flags);

  }

  director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);

  // FIX ME: Why need to set _orderOfArrival to 0??

  // Please refer to https://github.com/cocos2d/cocos2d-x/pull/6920

  // reset for next frame

  // _orderOfArrival = 0;

}

visit首先根據zorder排列子節點,先調用zorder小于0的子節點的draw函數,再調用自身的draw,接著再調用zorder大于0的子節點的draw函數,最后渲染時,按照render中隊列的先后順序,渲染所有節點。

void Director::drawScene()

if (_runningScene)

  {

      //clear draw stats

      _renderer->clearDrawStats();

   

      //render the scene

      _runningScene->render(_renderer);---------調用所有節點的visit和draw函數,添加節點渲染信息到渲染隊列中

   

      _eventDispatcher->dispatchEvent(_eventAfterVisit);

  }

  // draw the notifications node

  if (_notificationNode)

  {

      _notificationNode->visit(_renderer, Mat4::IDENTITY, 0);

  }

  if (_displayStats)

  {

      showStats();

  }

  _renderer->render();------------------渲染所有節點

創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。

本文名稱:簡述CCNode和Sprite的渲染過程-創新互聯
標題URL:http://www.2m8n56k.cn/article20/dghijo.html

成都網站建設公司_創新互聯,為您提供ChatGPT用戶體驗網站設計網站排名網站建設網站設計公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
主站蜘蛛池模板: 一区二区三区国模大胆 | 日韩精品一二三区 | 亚洲黄a | 久久精品视频99精品视频150 | 国产不卡精品一区二区三区 | 撸久久| 欧美久草 | 亚洲欧美视频一区二区三区 | 国产精品久久久久久爽爽爽 | 在线观看香蕉免费啪在线观看 | 91aaa免费免费国产在线观看 | 久久精品国产亚洲7777小说 | 日本免费一区二区三区看片 | 国产一区二区三区四区在线 | 高h原耽肉汁动漫视频 | 国产欧美日韩视频免费61794 | 欧美激情综合亚洲一二区 | 欧美日韩高清不卡一区二区三区 | 无遮挡一级毛片私人影院 | 亚洲精品在线看 | 91精品免费高清在线 | 欧美综合在线观看 | 精品 日韩 国产 欧美在线观看 | 一本本久综合久久爱 | 国产亚洲一区二区三区在线观看 | 中国一级特黄大片毛片 | 大学生久久香蕉国产线观看 | 日韩欧美一级a毛片欧美一级 | 亚洲综合爱久久影院 | 精品欧美小视频在线观看 | 国产精品久久在线 | 日韩美女大全视频在线 | 污全彩肉肉无遮挡彩色 | 亚洲美女免费视频 | 一区二区三区在线免费看 | 国产99视频免费精品是看6 | 成人免费手机在线看网站 | 欧美一区二区三区播放 | 午夜精品久视频在线观看 | 国产一区亚洲二区三区毛片 | 特级深夜a级毛片免费观看 特级生活片 |