[英]TypeError in React Native using Three.js while trying to make a 3d cube
我正在按照本教程制作一個顯示 3d 立方體的簡單應用程序。 這是我的代碼:
import React from 'react'
import {View} from 'react-native'
import Expo from 'expo'
import {Scene, Mesh, MeshBasicMaterial, PerspectiveCamera, BufferGeometry} from 'three'
import ExpoTHREE, {Renderer} from 'expo-three'
import { ExpoWebGLRenderingContext, GLView } from 'expo-gl'
const App = () => {
const onContextCreate = async (gl) => {
// all THREE.js code
const scene = new Scene()
const camera = new PerspectiveCamera(75,
gl.drawingBufferWidth/gl.drawingBufferHeight,
0.1,
1000)
gl.canvas = {width: gl.drawingBufferWidth, height: gl.drawingBufferHeight}
const renderer = new Renderer({gl})
renderer.setSize(gl.drawingBufferWidth, gl.drawingBufferHeight)
const geometry = new BoxBufferGeometry(1, 1, 1)
const material = new MeshBasicMaterial({color: 'blue'})
const cube = new Mesh(geometry, material)
scene.add(cube)
const render = () => {
requestAnimationFrame(render)
renderer.render(scene, camera)
gl.endFrameEXP()
}
render()
}
return (
<View>
<GLView style={{flex: 1}}
onContextCreate = {onContextCreate} />
</View>
)
}
export default App
似乎此時應用程序應該顯示一個多維數據集,但我什么也沒看到並收到錯誤消息:
未處理的拒絕(TypeError):無法設置只有一個 getter 的 #<"WebGL2RenderingContext"> 的屬性畫布
這是引起錯誤的行:
gl.canvas = {width: gl.drawingBufferWidth, height: gl.drawingBufferHeight}
你能幫我正確啟動我的應用程序並擺脫這個錯誤嗎? 提前致謝。
很難說本教程的作者用那句話表達了什么意思。 您可以嘗試刪除它,因為它無論如何都不起作用。
您也可以遵循官方文檔,以這種方式獲得工作示例可能更容易。
expo-three docs 提到了這段代碼,我想知道本教程是否打算這樣做:
const { drawingBufferWidth: width, drawingBufferHeight: height } = gl;
// Create a WebGLRenderer without a DOM element
const renderer = new Renderer({ gl });
renderer.setSize(width, height);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.