Как отобразить FPS в React Three Fiber: методы и примеры

Для отображения FPS (кадров в секунду) в React Three Fiber вы можете использовать различные методы. Вот несколько подходов:

  1. Использование Stats.js: Stats.js — популярная библиотека для мониторинга производительности приложений JavaScript. Вы можете интегрировать его в свой проект React Three Fiber для отображения FPS. Сначала установите библиотеку с помощью npm или Yarn:

    npm install stats.js

    Затем импортируйте и используйте его в своем компоненте:

    import React, { useRef, useEffect } from 'react';
    import Stats from 'stats.js';
    const MyComponent = () => {
     const statsRef = useRef();
     useEffect(() => {
       const stats = new Stats();
       stats.showPanel(0); // 0: FPS panel
       statsRef.current.appendChild(stats.dom);
       const animate = () => {
         stats.begin();
         // Your rendering logic
         stats.end();
         requestAnimationFrame(animate);
       };
       animate();
       return () => {
         statsRef.current.removeChild(stats.dom);
       };
     }, []);
     return <div ref={statsRef} />;
    };

    Счетчик FPS отобразится в верхнем левом углу вашего компонента.

  2. Использование React Performance Devtool: React Performance Devtool — это расширение для браузера, которое предоставляет информацию о производительности компонентов React. После установки расширения вы можете включить его и перейти к компоненту React Three Fiber. Он будет отображать FPS и другие показатели производительности.

  3. Пользовательский счетчик FPS. Вы можете создать собственный счетчик FPS, отслеживая время между кадрами с помощью функции requestAnimationFrame. Вот пример:

    import React, { useState, useEffect } from 'react';
    const FpsCounter = () => {
     const [fps, setFps] = useState(0);
     useEffect(() => {
       let frames = 0;
       let lastTime = performance.now();
       const updateFps = () => {
         const currentTime = performance.now();
         frames += 1;
         if (currentTime > lastTime + 1000) {
           setFps(Math.round((frames * 1000) / (currentTime - lastTime)));
           frames = 0;
           lastTime = currentTime;
         }
         requestAnimationFrame(updateFps);
       };
       updateFps();
     }, []);
     return <div>{fps} FPS</div>;
    };

    Вы можете разместить компонент везде, где хотите отображать счетчик FPS в приложении React Three Fiber.