diff --git a/components/elements/ContactThreeJsComponent.jsx b/components/elements/ContactThreeJsComponent.jsx index c317b00..9a07f00 100644 --- a/components/elements/ContactThreeJsComponent.jsx +++ b/components/elements/ContactThreeJsComponent.jsx @@ -9,12 +9,21 @@ import { DotScreenShader } from "three/examples/jsm/shaders/DotScreenShader.js"; const ContactThreeJsComponent = React.memo(() => { const [isMounted, setIsMounted] = useState(false); const mountRef = useRef(null); + const [webGLSupported, setWebGLSupported] = useState(true); useEffect(() => { setIsMounted(true); if (isMounted) { console.log("useEffect called"); + + if (!checkWebGLSupport()) { + // Handle browsers that do not support WebGL + console.error("WebGL not supported"); + setWebGLSupported(false); + return; + } + let camera, renderer, composer; let object; @@ -106,7 +115,29 @@ const ContactThreeJsComponent = React.memo(() => { } }, [isMounted]); - return
; + const checkWebGLSupport = () => { + try { + const canvas = document.createElement("canvas"); + return !!( + window.WebGLRenderingContext && + (canvas.getContext("webgl") || canvas.getContext("experimental-webgl")) + ); + } catch (e) { + return false; + } + }; + + return ( +