在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

談?wù)刢ocos2d-x多線程渲染

Dbwd_Imgtec ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-05-23 10:40 ? 次閱讀

可行性:

游戲循環(huán)主要包括這幾個(gè)部分:

硬件事件,主要就是指觸屏事件,按鍵事件和鼠標(biāo)事件;

游戲事件,主要指定時(shí)器事件和預(yù)定義事件,比如schedule;

游戲邏輯,對(duì)于胖腳本端來(lái)說(shuō),這個(gè)就指的腳本邏輯;

渲染數(shù)據(jù)的生成,在引擎里面就是指node的visit,這里計(jì)算生成所有即將發(fā)往OpenGL的數(shù)據(jù),包括頂點(diǎn)紋理坐標(biāo)等attribute數(shù)據(jù),變換矩陣紋理等uniform數(shù)據(jù),混合模式等渲染狀態(tài);

通過(guò)OpenGL接口把所有數(shù)據(jù)發(fā)往OpenGL。

這幾個(gè)步驟里面,只有第五個(gè)步驟需要涉及到OpenGL操作,而前面四個(gè)步驟都是為第五個(gè)步驟做準(zhǔn)備,而第五個(gè)步驟不用或者很少需要反饋數(shù)據(jù)給前面四個(gè)步驟。這是一個(gè)典型的生產(chǎn)者消費(fèi)者模式,在很低線程同步開銷的情況下課采用多線程處理。

必要性:

處理游戲邏輯(包括前四個(gè)步驟)承擔(dān)了太多cpu運(yùn)算,而發(fā)數(shù)據(jù)到OpenGL也相當(dāng)耗時(shí),尤其涉及到多次的渲染狀態(tài)切換。在多核cpu上面把二者分開可以提高并行性,進(jìn)而提高游戲幀率。

一些方案:

cocos2d-x3.0之后有一個(gè)很大的轉(zhuǎn)變就是不是在visit里面渲染,而是在visit里面生成渲染命令,并把命令發(fā)往render類緩存,等待某個(gè)時(shí)機(jī)處理這些命令,即渲染。

這是一個(gè)典型的命令模式,只要保證這些command的執(zhí)行處理的數(shù)據(jù)和主線程(游戲邏輯的執(zhí)行線程)不一樣或者通過(guò)加鎖做好和主線程的數(shù)據(jù)互斥,就可以保證線程安全。大多數(shù)數(shù)據(jù)我們都可以在visit(其實(shí)是draw)里面生成一份拷貝,而對(duì)于較少個(gè)數(shù)但是每個(gè)都包含大量頂點(diǎn)數(shù)據(jù)的對(duì)象,我們可以通過(guò)加鎖做好互斥,比如粒子系統(tǒng)。較少的線程互斥操作也不會(huì)造成太大線程通信開銷。

游戲主循環(huán)也是先執(zhí)行游戲邏輯相關(guān)的四個(gè)步驟,然后通過(guò)條件變量告知渲染線程數(shù)據(jù)已經(jīng)準(zhǔn)備好。我們也可以使用雙緩存系統(tǒng),即創(chuàng)建兩個(gè)渲染命令緩存,在渲染線程使用一個(gè)命令緩存進(jìn)行渲染的時(shí)候,主線程邏輯可以把渲染命令發(fā)往另一個(gè)緩存。

如果主線程邏輯確實(shí)需要OpenGL處理才能得到的一些數(shù)據(jù),我們也可以采用一些較為低效的折中方案。主線程通過(guò)類似于schedule的方式把命令發(fā)往渲染線程,然后等待,渲染線程維持一個(gè)這樣的命令隊(duì)列,每個(gè)周期優(yōu)先處理這個(gè)隊(duì)列,處理完成后通知主線程。這種做法不易多用。

說(shuō)個(gè)例子,同步創(chuàng)建紋理并生成sprite的操作,這個(gè)生成紋理的部分需要放到渲染線程,這個(gè)就可以采用這種方案。而事實(shí)上游戲邏輯根本不需要關(guān)心這個(gè)紋理到底長(zhǎng)什么樣,主線程可以不用等到渲染線程處理完成這個(gè)紋理再繼續(xù)運(yùn)行,渲染線程再處理完成這個(gè)紋理后,通過(guò)schedule告知主線程,主線程更新這個(gè)texture2d對(duì)象的紋理ID即可,大大提高效率。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 多線程
    +關(guān)注

    關(guān)注

    0

    文章

    278

    瀏覽量

    20076
  • 渲染
    +關(guān)注

    關(guān)注

    0

    文章

    71

    瀏覽量

    10969

原文標(biāo)題:cocos2d-x多線程渲染的一些探討

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    socket 多線程編程實(shí)現(xiàn)方法

    在現(xiàn)代網(wǎng)絡(luò)編程中,多線程技術(shù)被廣泛應(yīng)用于提高服務(wù)器的并發(fā)處理能力。Socket編程是網(wǎng)絡(luò)通信的基礎(chǔ),而將多線程技術(shù)應(yīng)用于Socket編程,可以顯著提升服務(wù)器的性能。 多線程編程的基本概念 多線
    的頭像 發(fā)表于 11-12 14:16 ?483次閱讀

    Python中多線程和多進(jìn)程的區(qū)別

    Python作為一種高級(jí)編程語(yǔ)言,提供了多種并發(fā)編程的方式,其中多線程與多進(jìn)程是最常見的兩種方式之一。在本文中,我們將探討Python中多線程與多進(jìn)程的概念、區(qū)別以及如何使用線程池與進(jìn)程池來(lái)提高并發(fā)執(zhí)行效率。
    的頭像 發(fā)表于 10-23 11:48 ?503次閱讀
    Python中<b class='flag-5'>多線程</b>和多進(jìn)程的區(qū)別

    一文掌握Python多線程

    使用線程可以把占據(jù)長(zhǎng)時(shí)間的程序中的任務(wù)放到后臺(tái)去處理。
    的頭像 發(fā)表于 08-05 15:46 ?927次閱讀

    ESP32會(huì)不會(huì)有多線程問(wèn)題,需要加鎖嗎?

    ESP32會(huì)不會(huì)有多線程問(wèn)題,需要加鎖嗎
    發(fā)表于 07-19 08:05

    多線程設(shè)計(jì)模式到對(duì) CompletableFuture 的應(yīng)用

    最近在開發(fā) 延保服務(wù) 頻道頁(yè)時(shí),為了提高查詢效率,使用到了多線程技術(shù)。為了對(duì)多線程方案設(shè)計(jì)有更加充分的了解,在業(yè)余時(shí)間讀完了《圖解 Java 多線程設(shè)計(jì)模式》這本書,覺(jué)得收獲良多。本篇文章將介紹其中
    的頭像 發(fā)表于 06-26 14:18 ?441次閱讀
    從<b class='flag-5'>多線程</b>設(shè)計(jì)模式到對(duì) CompletableFuture 的應(yīng)用

    bootloader開多線程做引導(dǎo)程序,跳app初始化后直接進(jìn)hardfualt,為什么?

    如標(biāo)題,想做一個(gè)遠(yuǎn)程升級(jí)的項(xiàng)目,bootloader引導(dǎo)區(qū)域和app都是開多線程跑的,就是自己寫了個(gè)小的任務(wù)調(diào)度器,沒(méi)什么功能主要是想讓程序快速的響應(yīng),延時(shí)不會(huì)對(duì)其他程序造成堵塞,程序測(cè)試
    發(fā)表于 04-18 06:07

    鴻蒙OS開發(fā)實(shí)例:【ArkTS類庫(kù)多線程CPU密集型任務(wù)TaskPool】

    CPU密集型任務(wù)是指需要占用系統(tǒng)資源處理大量計(jì)算能力的任務(wù),需要長(zhǎng)時(shí)間運(yùn)行,這段時(shí)間會(huì)阻塞線程其它事件的處理,不適宜放在主線程進(jìn)行。例如圖像處理、視頻編碼、數(shù)據(jù)分析等。 基于多線程并發(fā)機(jī)制處理CPU密集型任務(wù)可以提高CPU
    的頭像 發(fā)表于 04-01 22:25 ?915次閱讀
    鴻蒙OS開發(fā)實(shí)例:【ArkTS類庫(kù)<b class='flag-5'>多線程</b>CPU密集型任務(wù)TaskPool】

    鴻蒙APP開發(fā):【ArkTS類庫(kù)多線程】TaskPool和Worker的對(duì)比(2)

    創(chuàng)建Worker的線程稱為宿主線程(不一定是主線程,工作線程也支持創(chuàng)建Worker子線程),Worker自身的
    的頭像 發(fā)表于 03-27 15:44 ?593次閱讀
    鴻蒙APP開發(fā):【ArkTS類庫(kù)<b class='flag-5'>多線程</b>】TaskPool和Worker的對(duì)比(<b class='flag-5'>2</b>)

    鴻蒙APP開發(fā):【ArkTS類庫(kù)多線程】TaskPool和Worker的對(duì)比

    TaskPool(任務(wù)池)和Worker的作用是為應(yīng)用程序提供一個(gè)多線程的運(yùn)行環(huán)境,用于處理耗時(shí)的計(jì)算任務(wù)或其他密集型任務(wù)。可以有效地避免這些任務(wù)阻塞主線程,從而最大化系統(tǒng)的利用率,降低整體資源消耗,并提高系統(tǒng)的整體性能。
    的頭像 發(fā)表于 03-26 22:09 ?721次閱讀
    鴻蒙APP開發(fā):【ArkTS類庫(kù)<b class='flag-5'>多線程</b>】TaskPool和Worker的對(duì)比

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語(yǔ)言基礎(chǔ)類庫(kù)多線程TaskPool和Worker的對(duì)比(一)

    TaskPool(任務(wù)池)和Worker的作用是為應(yīng)用程序提供一個(gè)多線程的運(yùn)行環(huán)境,用于處理耗時(shí)的計(jì)算任務(wù)或其他密集型任務(wù)。可以有效地避免這些任務(wù)阻塞主線程,從而最大化系統(tǒng)的利用率,降低整體資源消耗
    發(fā)表于 03-25 14:11

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語(yǔ)言基礎(chǔ)類庫(kù)多線程I/O密集型任務(wù)開發(fā)

    filePath2 = ...; // 使用TaskPool執(zhí)行包含密集I/O的并發(fā)函數(shù) // 數(shù)組較大時(shí),I/O密集型任務(wù)任務(wù)分發(fā)也會(huì)搶占主線程,需要使用多線程能力
    發(fā)表于 03-21 14:57

    java實(shí)現(xiàn)多線程的幾種方式

    了多種實(shí)現(xiàn)多線程的方式,本文將詳細(xì)介紹以下幾種方式: 1.繼承Thread類 2.實(shí)現(xiàn)Runnable接口 3.Callable和Future 4.線程池 5.Java 8中
    的頭像 發(fā)表于 03-14 16:55 ?792次閱讀

    AT socket可以多線程調(diào)用嗎?

    請(qǐng)問(wèn)AT socket 可以多線程調(diào)用嗎? 有互鎖機(jī)制嗎,還是要自己做互鎖。
    發(fā)表于 03-01 08:22

    什么是多核多線程?多核多線程如何提高程序的運(yùn)行效率?

    線程無(wú)法充分利用多核處理器的并行計(jì)算能力。
    的頭像 發(fā)表于 02-20 10:22 ?1511次閱讀

    linux多線程編程實(shí)例

    linux線程
    的頭像 發(fā)表于 02-15 21:16 ?533次閱讀
    linux<b class='flag-5'>多線程</b>編程實(shí)例
    主站蜘蛛池模板: 性叉叉| 啪啪网站视频 | 欧美色欧美亚洲高清在线视频 | 欧美夜夜 | 国产性夜夜性夜夜爽91 | 天堂网在线资源www最新版 | 成年色黄大色黄大片 视频 成年视频xxxxx免费播放软件 | 凹凸福利视频导航 | 狠狠色噜噜狠狠狠狠98 | 最新久久免费视频 | 久久久久久久成人午夜精品福利 | 禁h粗大太大好爽好涨受不了了 | 亚洲涩综合 | 色香五月| 天天色天天干天天 | 狠狠色96视频 | 五月婷婷丁香综合 | 国产一级特黄aa级特黄裸毛片 | freesexvideo性欧美tv | 久久天天躁狠狠躁夜夜 | 午夜国产福利 | 久久99精品久久久久久久不卡 | 亚洲视频欧美视频 | 求网址你懂的手机在线观看网站 | 综合免费一区二区三区 | 色就操 | 福利观看 | 操www| 日本高清午夜色wwwσ | 丁香六月婷婷综合 | 五月开心六月伊人色婷婷 | 超级乱淫伦网站 | 午夜视频免费 | 五月婷婷亚洲综合 | 天天免费视频 | 国产嫩草影院在线观看 | 天天综合天天干 | 我被黑人巨大开嫩苞在线观看 | 亚洲a视频在线 | 日本三级a | 亚洲人免费视频 |