react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
39 lines (37 loc) • 1.04 kB
JavaScript
import { useMemo } from 'react';
import { useFilamentContext } from './useFilamentContext';
import { FilamentProxy } from '../native/FilamentProxy';
import { useDisposableResource } from './useDisposableResource';
import { useWorkletEffect } from './useWorkletEffect';
import { Logger } from '../utilities/logger/Logger';
export function useRecorder({
width,
height,
fps,
bitRate
}) {
const {
engine,
workletContext
} = useFilamentContext();
const recorder = useMemo(() => {
Logger.debug('Creating recorder JS');
return FilamentProxy.createRecorder(width, height, fps, bitRate);
}, [bitRate, fps, height, width]);
const swapChain = useDisposableResource(workletContext.createRunAsync(() => {
'worklet';
return engine.createSwapChainForRecorder(recorder);
}), [engine, recorder]);
useWorkletEffect(() => {
'worklet';
if (swapChain == null) {
return;
}
engine.setSwapChain(swapChain);
});
return {
recorder,
swapChain
};
}
//# sourceMappingURL=useRecorder.js.map