useframe導致three.webglrenderer: 上下文遺失
P粉025632437
P粉025632437 2024-03-19 22:29:33
0
1
425

我正在嘗試使用 useFrame 對 React 3 Fiber drei Box 元件的大小進行動畫處理。幾何圖形工作正常,直到我添加 useFrame 函數,這會導致瀏覽器拋出 THREE.WebGLRenderr: Context Lost 錯誤並阻止任何重新渲染。

import React, {useRef} from 'react';
import { Box } from '@react-three/drei';
import { useFrame } from '@react-three/fiber';

export default function BarGraph() {
  const purpleColor = "#5b21b6";
  const barRef1 = useRef();

  useFrame(
    (state) => {
      barRef1.current.parameters.depth = Math.sin(state.clock.elapsedTime) 3;
    }
  )

  return (
    <mesh position={[0,1,1]} scale={0.5}>
      <Box args={[1,1,3]} position={[1,3,2]} ref={barRef1}>
        <meshStandardMaterial color={purpleColor}/>
      </Box>
    </mesh>
  )

我還試著用 barRef1.current.args = [1,1,Math.sin(state.clock.elapsedTime) 3] 取代 useFrame 的內容,但它產生了相同的結果。

我知道我正在超載瀏覽器的圖形功能,但我不知道到底為什麼或如何在 useFrame 中限制它。

更新:

我能夠存取和修改 scale 屬性的元件並達到預期的結果。

useFrame(
    (state) => {
      barRef1.current.scale.y = Math.sin(state.clock.elapsedTime) 3;
    }
  )

P粉025632437
P粉025632437

全部回覆(1)
P粉841870942

我能夠存取和修改 scale 屬性的元件並達到預期的結果。

useFrame(
    (state) => {
      barRef1.current.scale.y = Math.sin(state.clock.elapsedTime) 3;
    }
  )
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板