最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小游戲中three.js離屏畫布的示例代碼

 更新時間:2020年10月12日 10:54:23   作者:火星牛  
這篇文章主要介紹了微信小游戲中three.js離屏畫布的示例代碼,主要是用three.js結合cannon.js寫個3D小游戲,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

國慶8天長假,重慶之行因故未成,偶得閑,用three.js結合cannon.js寫個3D小游戲耍耍。

在微信小游戲中,把three.js的3D內容在離屏畫布處理,然后復制到在屏畫布,方法是:

let c_toolbarHeight=140;
 
let sysInfo=wx.getSystemInfoSync();
require('./js/libs/weapp-adapter.js');
var canvas_webGL=window.canvas;
canvas_webGL.width = sysInfo.screenWidth * sysInfo.pixelRatio;
canvas_webGL.height = (sysInfo.screenHeight-c_toolbarHeight) * sysInfo.pixelRatio;
var ctx_webGL=canvas_webGL.getContext('webgl');
 
let options={context: ctx_webGL}
let renderer = new THREE.WebGLRenderer(options);
renderer.setSize(sysInfo.screenWidth, sysInfo.screenHeight-c_toolbarHeight);
renderer.setPixelRatio(sysInfo.pixelRatio);
 
function render(){
  //清除canvas_bkg的3D區(qū)域
  wx.tmGlobal.eraseZone(0,
    c_toolbarHeight,
    sysInfo.screenWidth,
    sysInfo.screenHeight);
  renderer.render(scene, camera);
  wx.tmGlobal.ctx_bkg.drawImage(canvas_webGL,
    0,c_toolbarHeight*sysInfo.pixelRatio);
  //畫一條橫的紅線
  wx.tmGlobal.ctx_bkg.strokeStyle = '#FF8C00';
  wx.tmGlobal.ctx_bkg.lineWidth = 2;
  wx.tmGlobal.ctx_bkg.beginPath();
  wx.tmGlobal.ctx_bkg.moveTo(0,
    (c_toolbarHeight)*sysInfo.pixelRatio);
  wx.tmGlobal.ctx_bkg.lineTo(
    sysInfo.screenWidth*sysInfo.pixelRatio,
    (c_toolbarHeight)*sysInfo.pixelRatio);
  //畫游戲結束臨界線
  wx.tmGlobal.ctx_bkg.moveTo(0,
    (c_toolbarHeight+c_yugaoHeight)*sysInfo.pixelRatio);
  wx.tmGlobal.ctx_bkg.lineTo(
    sysInfo.screenWidth*sysInfo.pixelRatio,
    (c_toolbarHeight+c_yugaoHeight)*sysInfo.pixelRatio);
  wx.tmGlobal.ctx_bkg.stroke();
  //把canvas_bkg畫到在屏畫布
  wx.tmGlobal.ctx_main.clearRect(0,0,
    wx.tmGlobal.canvas_main.width,wx.tmGlobal.canvas_main.height);
    wx.tmGlobal.ctx_main.drawImage(wx.tmGlobal.canvas_bkg,0,0);
}

在vivo和iphone手機都表現正常,但是,華為手機顯示不出來:

https://developers.weixin.qq.com/community/develop/doc/00026c3c1c8eb010de384a82d51000?jumpto=

其它用戶也提了好久了,騰訊或華為都沒有解決,試來試去,終于找到了另一種寫法:

renderer = new THREE.WebGLRenderer();
let target = new THREE.WebGLRenderTarget(
  sysInfo.screenWidth*sysInfo.pixelRatio, 
  (sysInfo.screenHeight-c_toolbarHeight)*sysInfo.pixelRatio);
renderer.setRenderTarget(target);
gl=renderer.getContext();
​
var canvas_huawei=wx.createCanvas();
canvas_huawei.width=sysInfo.screenWidth*sysInfo.pixelRatio;
canvas_huawei.height=(sysInfo.screenHeight-c_toolbarHeight)*sysInfo.pixelRatio;
var ctx_huawei=canvas_huawei.getContext('2d');
​
var canvas_huawei2=wx.createCanvas();
canvas_huawei2.width=sysInfo.screenWidth*sysInfo.pixelRatio;
canvas_huawei2.height=(sysInfo.screenHeight-c_toolbarHeight)*sysInfo.pixelRatio;
var ctx_huawei2=canvas_huawei2.getContext('2d');
​
var imageData = ctx_huawei.createImageData(
  sysInfo.screenWidth*sysInfo.pixelRatio,
  (sysInfo.screenHeight-c_toolbarHeight)*sysInfo.pixelRatio);
var pixels = new Uint8Array(imageData.data.length);
​
function render(){
  //擦除背景畫布的webGL區(qū)域(因為webGL是用的透明繪制)
  wx.tmGlobal.eraseZone(0,
    c_toolbarHeight,
    sysInfo.screenWidth,
    sysInfo.screenHeight);
  renderer.render(scene, camera);
  gl.readPixels(
      0,
      0,
      gl.drawingBufferWidth,
      gl.drawingBufferHeight,
      gl.RGBA,gl.UNSIGNED_BYTE,pixels);
  imageData.data.set(pixels);
  ctx_huawei.putImageData(imageData,0,0);
  //清除   
  ctx_huawei2.clearRect(0,0,canvas_huawei2.width,canvas_huawei2.height);
  //上下鏡像翻轉
  ctx_huawei2.translate(0,canvas_huawei2.height);
  ctx_huawei2.scale(1, -1);
  ctx_huawei2.drawImage(canvas_huawei,0,0);
  //恢復
  ctx_huawei2.translate(0,canvas_huawei2.height);
  ctx_huawei2.scale(1, -1);
  wx.tmGlobal.ctx_bkg.drawImage(canvas_huawei2,
      0,c_toolbarHeight*sysInfo.pixelRatio);
  ......
}

到此這篇關于微信小游戲中three.js離屏畫布的示例代碼的文章就介紹到這了,更多相關微信小游戲three.js離屏畫布內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JS攜帶參數實現頁面跳轉功能

    JS攜帶參數實現頁面跳轉功能

    這篇文章主要介紹了js攜帶參數實現頁面跳轉,實現方法也很簡單,方式一是跳轉路徑攜帶參數,第二種方法是通過sessionStorage傳遞,需要的朋友可以參考下
    2022-11-11
  • 很全面的JavaScript常用功能匯總集合

    很全面的JavaScript常用功能匯總集合

    這篇文章主要為大家分享了一份很全面的JavaScript常用功能匯總集合,一些常用的額JS 對象、基本數據結構、功能函數等,感興趣的小伙伴們可以參考一下
    2016-01-01
  • ion content 滾動到底部會遮住一部分視圖的快速解決方法

    ion content 滾動到底部會遮住一部分視圖的快速解決方法

    本文給大家?guī)砹薸on content 滾動到底部會遮住一部分視圖的快速解決方法,其實解決方法超簡單的,只要在你的controller里面預先注入$ionicScrollDelegate就可以了,感興趣的朋友通過本文一起學習吧
    2016-09-09
  • javascript下4個跨瀏覽器必備的函數

    javascript下4個跨瀏覽器必備的函數

    如果你的項目要用到 JavaScript,而你不使用任何 JavaScript 框架,那么對于那些常用且各個瀏覽器明顯不同的地方就需要用函數來封裝起來。
    2010-03-03
  • 基于JavaScript實現根據手機定位獲取當前具體位置(X省X市X縣X街道X號)

    基于JavaScript實現根據手機定位獲取當前具體位置(X省X市X縣X街道X號)

    這篇文章主要介紹了基于JavaScript實現根據手機定位獲取當前具體位置(X省X市X縣X街道X號)的相關資料,需要的朋友可以參考下
    2015-12-12
  • webpack 3.X學習之多頁面打包的方法

    webpack 3.X學習之多頁面打包的方法

    這篇文章主要介紹了webpack 3.X學習之多頁面打包的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • js扁平數組和樹結構相互轉換處理方法

    js扁平數組和樹結構相互轉換處理方法

    這篇文章主要給大家介紹了關于js扁平數組和樹結構相互轉換處理方法的相關資料,之前面試有遇到過這個問題,面試官問如何把一個數組數據扁平,然后轉化為Tree結構數據,工作中剛好也用到了,所以總結下,需要的朋友可以參考下
    2023-07-07
  • JavaScript基本數據類型及值類型和引用類型

    JavaScript基本數據類型及值類型和引用類型

    大家經??梢砸姷絡avascript中的一些數據類型,比如“undefined”、“boolean”、“string”等等,這篇文章就和大家一起來學習JavaScript基本數據類型及值類型和引用類型,有需要的童鞋參考下,本文寫的不好地方,還望大家提出,共同學習進步
    2015-08-08
  • 使用JS畫圖之點、線、面

    使用JS畫圖之點、線、面

    這篇文章主要介紹了使用js繪制幾何圖形的基礎,繪制點、線、面,需要的朋友可以參考下
    2015-01-01
  • JavaScript高級程序設計 DOM學習筆記

    JavaScript高級程序設計 DOM學習筆記

    DOM是針對XML和HTML文檔的一個API:即規(guī)定了實現文本節(jié)點操控的屬性、方法,具體實現由各自瀏覽器實現。
    2011-09-09

最新評論

汨罗市| 新余市| 永川市| 海伦市| 泸西县| 勃利县| 榆社县| 德江县| 鹤壁市| 衡水市| 勃利县| 东乡县| 海原县| 广丰县| 资阳市| 伊春市| 娄底市| 蒲城县| 哈尔滨市| 仁布县| 色达县| 阜平县| 汉寿县| 利津县| 桂阳县| 张家界市| 桑日县| 花莲市| 礼泉县| 綦江县| 安远县| 淮安市| 响水县| 澎湖县| 嘉祥县| 盱眙县| 钦州市| 湘潭市| 崇信县| 苍山县| 康乐县|